À»Ý.1.ÿlocal-storeÿ_local/sglXb3MFmOfPL53d8dzLhQ==ð{"session_id":"3f1f785a-b36d-42b6-bc3c-932af29d2215","_id":"_local/sglXb3MFmOfPL53d8dzLhQ==","history":[{"last_seq":3411,"session_id":"3f1f785a-b36d-42b6-bc3c-932af29d2215"}],"replicator":"pouchdb","version":1,"last_seq":3411,"_rev":"0-16"}|]»íÄ~2’ÿmeta-storeÿ_local_doc_count3400$ÿmeta-storeÿ_local_last_update_seq3400ÿdocument-storeÿzeerty-api{"id":"zeerty-api","rev":"1-62ffa40c759d04ee1629854e02f0445a","rev_tree":[{"pos":1,"ids":["62ffa40c759d04ee1629854e02f0445a",{"status":"available"},[]]}],"rev_map":{"1-62ffa40c759d04ee1629854e02f0445a":3400},"winningRev":"1-62ffa40c759d04ee1629854e02f0445a","deleted":false,"seq":3400}ÿby-sequenceÿ0000000000003400{"name":"zeerty-api","description":"A library to interact with ZeertyCloud","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.1":{"name":"zeerty-api","description":"A library to interact with Zeerty","version":"0.2.1","homepage":"http://zeertycloud.com/","repository":{"type":"git","url":"git://github.com/zeerty/zeerty-api.git"},"author":{"name":"zeerty","email":"admin@zeerty.com"},"main":"./lib/zeerty.js","dependencies":{"request":"*"},"devDependencies":{"coffee-script":"*"},"engines":{"node":"*"},"readme":"zeerty-api is a library to interact with Zeerty Cloud Platform through NodeJS\n","_id":"zeerty-api@0.2.1","dist":{"shasum":"d3a3719bb852478ee6e05816c3b423895389b2c9","tarball":"http://registry.npmjs.org/zeerty-api/-/zeerty-api-0.2.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"zeerty","email":"admin@zeerty.com"},"maintainers":[{"name":"zeerty","email":"admin@zeerty.com"}],"directories":{}},"0.2.0":{"name":"zeerty-api","description":"A library to interact with Zeerty","version":"0.2.0","homepage":"http://zeertycloud.com/","repository":{"type":"git","url":"git://github.com/zeerty/zeerty-api.git"},"author":{"name":"zeerty","email":"admin@zeerty.com"},"main":"./lib/zeerty.js","dependencies":{"request":"*"},"devDependencies":{"coffee-script":"*"},"engines":{"node":"*"},"readme":"zeerty-api is a library to interact with Zeerty Cloud Platform through NodeJS\n","_id":"zeerty-api@0.2.0","dist":{"shasum":"d9425bba71dab137b8b3ecfe3930b4fd22f012a5","tarball":"http://registry.npmjs.org/zeerty-api/-/zeerty-api-0.2.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"zeerty","email":"admin@zeerty.com"},"maintainers":[{"name":"zeerty","email":"admin@zeerty.com"}]},"0.3.0":{"name":"zeerty-api","description":"A library to interact with ZeertyCloud","version":"0.3.0","homepage":"http://zeerty.com/","repository":{"type":"git","url":"git://github.com/zeerty/zeerty-api.git"},"author":{"name":"zeerty","email":"admin@zeerty.com"},"main":"./lib/zeerty.js","dependencies":{"request":"*"},"devDependencies":{"coffee-script":"*"},"engines":{"node":"*"},"readme":"zeerty-api is a library to interact with Zeerty Cloud Platform through NodeJS\n","_id":"zeerty-api@0.3.0","dist":{"shasum":"e0875fcfb9a4622bb5aba0ca955e0e9915b00f65","tarball":"http://registry.npmjs.org/zeerty-api/-/zeerty-api-0.3.0.tgz"},"maintainers":[{"name":"zeerty","email":"admin@zeerty.com"}]},"0.3.1":{"name":"zeerty-api","description":"A library to interact with ZeertyCloud","version":"0.3.1","homepage":"http://zeerty.com/","repository":{"type":"git","url":"git://github.com/zeerty/zeerty-api.git"},"author":{"name":"zeerty","email":"admin@zeerty.com"},"main":"./lib/zeertycloud.js","dependencies":{"request":"*"},"devDependencies":{"coffee-script":"*"},"engines":{"node":"*"},"_npmUser":{"name":"zeerty","email":"admin@zeerty.com"},"_id":"zeerty-api@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1ad75a3c3453972d9478b320f40f57adff0e1cbd","tarball":"http://registry.npmjs.org/zeerty-api/-/zeerty-api-0.3.1.tgz"},"maintainers":[{"name":"zeerty","email":"admin@zeerty.com"}]}},"readme":"zeerty-api is a library to interact with Zeerty Cloud Platform through NodeJS\n","maintainers":[{"name":"zeerty","email":"admin@zeerty.com"}],"time":{"modified":"2012-08-22T13:26:22.788Z","created":"2012-08-21T19:07:04.996Z","0.2.0":"2012-08-21T21:16:39.198Z","0.2.1":"2012-08-21T20:07:44.950Z","0.3.0":"2012-08-21T23:32:26.105Z","0.3.1":"2012-08-22T13:26:22.788Z"},"author":{"name":"zeerty","email":"admin@zeerty.com"},"repository":{"type":"git","url":"git://github.com/zeerty/zeerty-api.git"},"_id":"zeerty-api","_rev":"1-62ffa40c759d04ee1629854e02f0445a"}ÿdocument-storeÿxsl2yate›{"id":"xsl2yate","rev":"1-85e95a602d6dbdfee946508f433a4506","rev_tree":[{"pos":1,"ids":["85e95a602d6dbdfee946508f433a4506",{"status":"available"},[]]}],"rev_map":{"1-85e95a602d6dbdfee946508f433a4506":3399},"winningRev":"1-85e95a602d6dbdfee946508f433a4506","deleted":false,"seq":3399}ÿby-sequenceÿ0000000000003399ø{"name":"xsl2yate","description":"converts xsl templates to yate","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"xsl2yate","version":"0.0.1","description":"converts xsl templates to yate","keywords":["xsl","xslt","yate","helper","template"],"author":{"name":"Artur Burtsev","email":"artjock@gmail.com"},"repository":{"type":"git","url":"git://github.com/artjock/xslt2yate.git"},"main":"./index","bin":{"xsl2yate":"./bin/xsl2yate"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"make test"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"artjock","email":"artjock@gmail.com"},"_id":"xsl2yate@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"191ec79e8b24a7af6af9f9e7bb7bdc67581e4ded","tarball":"http://registry.npmjs.org/xsl2yate/-/xsl2yate-0.0.1.tgz"},"readme":"","maintainers":[{"name":"artjock","email":"artjock@gmail.com"}]},"0.0.2":{"name":"xsl2yate","version":"0.0.2","description":"converts xsl templates to yate","keywords":["xsl","xslt","yate","helper","template"],"author":{"name":"Artur Burtsev","email":"artjock@gmail.com"},"repository":{"type":"git","url":"git://github.com/artjock/xslt2yate.git"},"main":"./index","bin":{"xsl2yate":"./bin/xsl2yate"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"make test"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"artjock","email":"artjock@gmail.com"},"_id":"xsl2yate@0.0.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c2301b59d3851159760721e49ec5b5ebb9250db5","tarball":"http://registry.npmjs.org/xsl2yate/-/xsl2yate-0.0.2.tgz"},"readme":"","maintainers":[{"name":"artjock","email":"artjock@gmail.com"}]},"0.0.3":{"name":"xsl2yate","version":"0.0.3","description":"converts xsl templates to yate","keywords":["xsl","xslt","yate","helper","template"],"author":{"name":"Artur Burtsev","email":"artjock@gmail.com"},"repository":{"type":"git","url":"git://github.com/artjock/xslt2yate.git"},"main":"./index","bin":{"xsl2yate":"./bin/xsl2yate"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"make test"},"devDependencies":{"mocha":"*","should":"*"},"readme":"","_id":"xsl2yate@0.0.3","dist":{"shasum":"29de5cf4cf8a64316bc92e110615e0aeb436ba33","tarball":"http://registry.npmjs.org/xsl2yate/-/xsl2yate-0.0.3.tgz"},"maintainers":[{"name":"artjock","email":"artjock@gmail.com"}]},"0.0.4":{"name":"xsl2yate","version":"0.0.4","description":"converts xsl templates to yate","keywords":["xsl","xslt","yate","helper","template"],"author":{"name":"Artur Burtsev","email":"artjock@gmail.com"},"repository":{"type":"git","url":"git://github.com/artjock/xslt2yate.git"},"main":"./index","bin":{"xsl2yate":"./bin/xsl2yate"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"make test"},"devDependencies":{"mocha":"*","should":"*"},"readme":"","_id":"xsl2yate@0.0.4","dist":{"shasum":"359598b74abdd808140ea7f1cbdc1257d710a998","tarball":"http://registry.npmjs.org/xsl2yate/-/xsl2yate-0.0.4.tgz"},"maintainers":[{"name":"artjock","email":"artjock@gmail.com"}]}},"readme":"","maintainers":[{"name":"artjock","email":"artjock@gmail.com"}],"time":{"modified":"2012-08-02T13:44:31.134Z","created":"2012-07-02T11:12:58.398Z","0.0.1":"2012-07-02T11:13:01.148Z","0.0.2":"2012-07-02T16:52:57.383Z","0.0.3":"2012-07-24T16:09:40.953Z","0.0.4":"2012-07-24T16:22:47.387Z"},"author":{"name":"Artur Burtsev","email":"artjock@gmail.com"},"repository":{"type":"git","url":"git://github.com/artjock/xslt2yate.git"},"users":{"fgribreau":true},"_id":"xsl2yate","_rev":"1-85e95a602d6dbdfee946508f433a4506"}ÿdocument-storeÿwxnode™{"id":"wxnode","rev":"1-b836603c938ffcce3c8f0d940077aad3","rev_tree":[{"pos":1,"ids":["b836603c938ffcce3c8f0d940077aad3",{"status":"available"},[]]}],"rev_map":{"1-b836603c938ffcce3c8f0d940077aad3":3398},"winningRev":"1-b836603c938ffcce3c8f0d940077aad3","deleted":false,"seq":3398}ÿby-sequenceÿ0000000000003398±#{"name":"wxnode","description":"node.js wrapper for wxWidgets.","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"wxnode","description":"node.js wrapper for wxWidgets.","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"keywords":["wxwidgets","bridge","native"],"homepage":"https://github.com/joeferner/wxNode","version":"0.0.1","engines":{"node":">=0.6.0"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"bugs":{"url":"https://github.com/joeferner/wxNode/issues"},"licenses":[{"type":"MIT"}],"repositories":{"type":"git","url":"https://github.com/joeferner/wxNode.git"},"dependencies":{"mnm":"~0.0.2"},"devDependencies":{"nodeunit":"~0.6.4","mustache":"git://github.com/janl/mustache.js.git","JSONPath":"~0.8.5","xml2js":"~0.1.13"},"scripts":{"test":"nodeunit test","install":"node mnm.js build"},"main":"./index.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"wxnode@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"7609c4c869817e388e70ec083d911f7badb12972","tarball":"http://registry.npmjs.org/wxnode/-/wxnode-0.0.1.tgz"}},"0.0.2":{"name":"wxnode","description":"node.js wrapper for wxWidgets.","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"keywords":["wxwidgets","bridge","native"],"homepage":"https://github.com/joeferner/wxNode","version":"0.0.2","engines":{"node":">=0.6.0"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"bugs":{"url":"https://github.com/joeferner/wxNode/issues"},"licenses":[{"type":"MIT"}],"repositories":{"type":"git","url":"https://github.com/joeferner/wxNode.git"},"dependencies":{"mnm":"~0.0.2"},"devDependencies":{"nodeunit":"~0.6.4","mustache":"git://github.com/janl/mustache.js.git","JSONPath":"~0.8.5","xml2js":"~0.1.13","crc32":"~0.2.2","async":"~0.1.15"},"scripts":{"test":"nodeunit test","install":"node mnm.js build"},"main":"./index.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"wxnode@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"064d5024bcd514def952e312cb8e9f9209ac511f","tarball":"http://registry.npmjs.org/wxnode/-/wxnode-0.0.2.tgz"}},"0.1.0":{"name":"wxnode","description":"node.js wrapper for wxWidgets.","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"keywords":["wxwidgets","bridge","native"],"version":"0.1.0","engines":{"node":">=0.6.0"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"contributors":[{"name":"Brandon Benvie"}],"bugs":{"url":"https://github.com/joeferner/wxNode/issues"},"license":"MIT","repository":{"type":"git","url":"git://github.com/joeferner/wxNode.git"},"dependencies":{"mnm":"0.0.3"},"devDependencies":{"nodeunit":"~0.6.4","mustache":"git://github.com/janl/mustache.js.git","JSONPath":"~0.8.5","xml2js":"~0.1.13","crc32":"~0.2.2","async":"~0.1.15"},"scripts":{"test":"nodeunit test","install":"node mnm.js build"},"main":"./index.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"wxnode@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"7f6973718d4817b297f663c021f9bfbd68f15f9d","tarball":"http://registry.npmjs.org/wxnode/-/wxnode-0.1.0.tgz"}}},"readme":"# wxNode\n\nnode.js wrapper for wxWidgets.\n\n## Quick Examples\n\n```javascript\nvar wxNode = require(\"wxnode\");\n\nvar MyApp = wxNode.wxApp.extend({\n onInit: function() {\n var location = new wxNode.wxPoint(50, 50);\n var size = new wxNode.wxSize(450, 340);\n var frame = new MyFrame(\"Hello World\", location, size);\n frame.show(true);\n this.setTopWindow(frame);\n return true;\n }\n});\n\nvar MyFrame = wxNode.wxFrame.extend({\n init: function(title, pos, size) {\n this._super(null, -1, title, pos, size);\n\n this.EVT_CLOSE(this.onClose);\n },\n\n onClose: function(event) {\n process.exit();\n }\n});\n\nvar app = new MyApp();\napp.run();\n```\n","maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"time":{"modified":"2012-04-20T16:08:33.346Z","created":"2012-02-07T22:41:33.606Z","0.0.1":"2012-02-07T22:41:37.166Z","0.0.2":"2012-02-08T15:35:49.384Z","0.1.0":"2012-04-20T16:08:33.346Z"},"author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"repository":{"type":"git","url":"git://github.com/joeferner/wxNode.git"},"_id":"wxnode","_rev":"1-b836603c938ffcce3c8f0d940077aad3"} ÿdocument-storeÿws-multi-proxy¡{"id":"ws-multi-proxy","rev":"1-438ab756f2cf41d999b8b33170c3615a","rev_tree":[{"pos":1,"ids":["438ab756f2cf41d999b8b33170c3615a",{"status":"available"},[]]}],"rev_map":{"1-438ab756f2cf41d999b8b33170c3615a":3397},"winningRev":"1-438ab756f2cf41d999b8b33170c3615a","deleted":false,"seq":3397}ÿby-sequenceÿ0000000000003397¾!{"name":"ws-multi-proxy","description":"Many to many WebSocket proxy server with pluggable routing logic. e.g. Take a bunch of existing WebSocket servers that only accept a single client connection and allow it to be used with multiple clients at once.","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"ws-multi-proxy","version":"0.2.0","description":"Many to many WebSocket proxy server with pluggable routing logic. e.g. Take a bunch of existing WebSocket servers that only accept a single client connection and allow it to be used with multiple clients at once.","author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com","url":"http://subtlegradient.com/"},"keywords":["websocket","proxy","multiplex","socket"],"repository":{"type":"git","url":"git://github.com/subtleGradient/node-ws-multi-proxy.git"},"bugs":{"name":"https://github.com/subtleGradient/node-ws-multi-proxy/issues"},"dependencies":{"ws":"~0.4"},"devDependencies":{"request":"*"},"license":"MIT","copyright":"Copyright © 2012 Facebook","_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"ws-multi-proxy@0.2.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"519fced28035c3cf798afa169f9289d44c490412","tarball":"http://registry.npmjs.org/ws-multi-proxy/-/ws-multi-proxy-0.2.0.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}]}},"readme":"# ws-multi-proxy\n## Many to many WebSocket proxy server\n\nThere are some WebSocket servers that only support a single connected client at a time. \nYou may want to connect multiple clients to that same server. \nThis lets you do that.\n\n## Usage\n\n1. Setup a proxy server `var proxy = new WebSocketProxy({ debug:true, webSocketServer:{ port:1234 } })`\n3. Open `http://www.websocket.org/echo.html` in your browser\n4. Try it out using `ws://localhost:1234/proxy/ws://echo.websocket.org`\n\n## Advanced Usage\n\nws-multi-proxy is pretty simple wrapper around the `ws` module's `WebSocketServer`.\n\nWebSocket connections are just http GET requests sent with some special headers. So, in order to accept WebSocket connections, we need an http server. The `WebSocketServer` can create one for you or use an existing http server instance if you have one.\n\n### Create a new http server\nOr using an existing server instance you have lying around\n\n var httpServer = require('http').createServer().listen(1234)\n\n### Create a `WebSocketServer` config\nTell it which server to use\n\n var wssConfig = { server:httpServer }\n\n### Create a `WebSocketProxy`\nTell it which WebSocketServer config to use\n\n var proxy = new WebSocketProxy({ webSocketServer:wssConfig })\n\n### Customize the routing logic\nBy default the `mutateDataFrom*` methods handle multiple clients by namespacing the message id. You can modify this logic to do whatever you want.\n\n proxy.mutateDataFromServer =\n proxy.mutateDataFromClient = function(data, sender, receiver){\n \n // perform some sort of custom message validation\n if (data.myCustomToken != receiver.myCustomToken)\n return false // don't sent message\n \n // or maybe augment the message before it is received\n data.value += \" lol, augmented value\"\n \n return data\n }\n\nOr keep the existing functionality by monkeypatching.\n\n var oldMutateDataFromClient = proxy.mutateDataFromClient\n proxy.mutateDataFromClient = function(data, sender, receiver){\n \n // some sort of custom message validation\n if (data.myCustomToken != receiver.myCustomToken)\n return false // don't sent message\n \n return oldMutateDataFromClient.call(this, data, sender, receiver)\n }\n","maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"time":{"modified":"2012-05-09T06:47:55.439Z","created":"2012-05-09T06:47:54.032Z","0.2.0":"2012-05-09T06:47:55.439Z"},"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com","url":"http://subtlegradient.com/"},"repository":{"type":"git","url":"git://github.com/subtleGradient/node-ws-multi-proxy.git"},"_id":"ws-multi-proxy","_rev":"1-438ab756f2cf41d999b8b33170c3615a"}#ÿdocument-storeÿwinston-skywriter¤{"id":"winston-skywriter","rev":"1-bbd3deda7912daeacae2abf4fe7e6297","rev_tree":[{"pos":1,"ids":["bbd3deda7912daeacae2abf4fe7e6297",{"status":"available"},[]]}],"rev_map":{"1-bbd3deda7912daeacae2abf4fe7e6297":3396},"winningRev":"1-bbd3deda7912daeacae2abf4fe7e6297","deleted":false,"seq":3396}ÿby-sequenceÿ0000000000003396ç/{"name":"winston-skywriter","description":"A Windows Azure table storage transport for winston","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"winston-skywriter","description":"A Windows Azure table storage transport for winston","version":"0.1.0","author":{"name":"Paul O'Fallon","email":"paul@ofallonfamily.com"},"repository":{"type":"git","url":"git://github.com/pofallon/winston-skywriter.git"},"keywords":["logging","sysadmin","tools","winston","azure"],"dependencies":{"bluesky":"0.5.x"},"devDependencies":{"winston":"0.5.x","mocha":"1.0.x","should":"0.6.x"},"main":"./lib/winston-skywriter","scripts":{"test":"mocha test/test.js"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"pofallon","email":"paul@ofallonfamily.com"},"_id":"winston-skywriter@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"2d4b3034f7dfcfaa55dedc569a129405069be897","tarball":"http://registry.npmjs.org/winston-skywriter/-/winston-skywriter-0.1.0.tgz"},"maintainers":[{"name":"pofallon","email":"paul@ofallonfamily.com"}]},"0.1.1":{"name":"winston-skywriter","description":"A Windows Azure table storage transport for winston","version":"0.1.1","author":{"name":"Paul O'Fallon","email":"paul@ofallonfamily.com"},"repository":{"type":"git","url":"git://github.com/pofallon/winston-skywriter.git"},"keywords":["logging","sysadmin","tools","winston","azure"],"dependencies":{"bluesky":"0.5.x"},"devDependencies":{"winston":"0.5.x","mocha":"1.0.x","should":"0.6.x"},"main":"./lib/winston-skywriter","scripts":{"test":"mocha test/test.js"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"pofallon","email":"paul@ofallonfamily.com"},"_id":"winston-skywriter@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8afcf18c2425f39c701d98c7e3e8aec9c04703d1","tarball":"http://registry.npmjs.org/winston-skywriter/-/winston-skywriter-0.1.1.tgz"},"maintainers":[{"name":"pofallon","email":"paul@ofallonfamily.com"}]},"0.1.2":{"name":"winston-skywriter","description":"A Windows Azure table storage transport for winston","version":"0.1.2","author":{"name":"Paul O'Fallon","email":"paul@ofallonfamily.com"},"repository":{"type":"git","url":"git://github.com/pofallon/winston-skywriter.git"},"keywords":["logging","sysadmin","tools","winston","azure"],"dependencies":{"bluesky":">= 0.5.2"},"devDependencies":{"winston":"0.5.x","mocha":"1.0.x","should":"0.6.x"},"main":"./lib/winston-skywriter","scripts":{"test":"mocha test/test.js"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"pofallon","email":"paul@ofallonfamily.com"},"_id":"winston-skywriter@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fa96e1d6ce25ce5321ba01dfb037f09a16020060","tarball":"http://registry.npmjs.org/winston-skywriter/-/winston-skywriter-0.1.2.tgz"},"maintainers":[{"name":"pofallon","email":"paul@ofallonfamily.com"}]},"0.1.3":{"name":"winston-skywriter","description":"A Windows Azure table storage transport for winston","version":"0.1.3","author":{"name":"Paul O'Fallon","email":"paul@ofallonfamily.com"},"repository":{"type":"git","url":"git://github.com/pofallon/winston-skywriter.git"},"keywords":["logging","sysadmin","tools","winston","azure"],"dependencies":{"bluesky":">= 0.5.2"},"devDependencies":{"winston":"0.5.x","mocha":"1.0.x","should":"0.6.x"},"main":"./lib/winston-skywriter","scripts":{"test":"mocha test/test.js"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"pofallon","email":"paul@ofallonfamily.com"},"_id":"winston-skywriter@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"2ea1957506720184e9e69af27e3e6928d3922c2a","tarball":"http://registry.npmjs.org/winston-skywriter/-/winston-skywriter-0.1.3.tgz"},"maintainers":[{"name":"pofallon","email":"paul@ofallonfamily.com"}]}},"readme":"# winston-skywriter\n\nA [Windows Azure][0] table storage transport for [winston][1], utilizing the [bluesky][2] API for Windows Azure.\n\n## Installation\n\n``` bash\n $ npm install winston\n $ npm install winston-skywriter\n```\n\n## Usage\n``` js\n var winston = require('winston');\n \n //\n // Requiring `winston-skywriter` will expose \n // `winston.transports.Skywriter`\n //\n require('winston-skywriter').Skywriter;\n \n winston.add(winston.transports.Skywriter, options);\n```\n\nThe Skywriter transport accepts the following options:\n\n* __level:__ Level of messages that this transport should log (defaults to `info`).\n* __account:__ The name of the Windows Azure storage account to use\n* __key:__ The access key used to authenticate into this storage account\n* __partition:__ The value to use for the PartitionKey in each row (defaults to 'log'). The RowKey is an auto-generated GUID.\n* __columns:__ If `true`, the transport will store the metadata key/value pairs in individual columns (this can be helpful when querying table storage for log entries with specific metadata values). The default is to store the entire `meta` value as a single JSON string in a 'meta' column.\n\n### Helpful hint\n\nWhen running multiple node instances across multiple hosts, a good value for 'partition' is: \n``` js\npartition: require('os').hostname() + ':' + process.pid\n```\n\n[0]: http://www.windowsazure.com/en-us/develop/nodejs/\n[1]: https://github.com/flatiron/winston\n[2]: https://github.com/pofallon/node-bluesky\n","maintainers":[{"name":"pofallon","email":"paul@ofallonfamily.com"}],"time":{"modified":"2012-07-15T20:38:09.515Z","created":"2012-05-05T00:27:00.963Z","0.1.0":"2012-05-05T00:27:01.757Z","0.1.1":"2012-05-05T15:24:03.205Z","0.1.2":"2012-07-13T12:02:17.982Z","0.1.3":"2012-07-15T20:38:09.515Z"},"author":{"name":"Paul O'Fallon","email":"paul@ofallonfamily.com"},"repository":{"type":"git","url":"git://github.com/pofallon/winston-skywriter.git"},"_id":"winston-skywriter","_rev":"1-bbd3deda7912daeacae2abf4fe7e6297"}ÿdocument-storeÿwhitespacesž{"id":"whitespaces","rev":"1-5cec936fe1ca91f818143c1547721eb4","rev_tree":[{"pos":1,"ids":["5cec936fe1ca91f818143c1547721eb4",{"status":"available"},[]]}],"rev_map":{"1-5cec936fe1ca91f818143c1547721eb4":3395},"winningRev":"1-5cec936fe1ca91f818143c1547721eb4","deleted":false,"seq":3395}ÿby-sequenceÿ0000000000003395º({"name":"whitespaces","description":"Fix all the whitespaces","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"whitespaces","version":"0.1.0","author":{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com","url":"http://pksunkara.github.com"},"description":"Fix all the whitespaces","bin":{"whitespaces":"./whitespaces"},"repository":{"type":"git","url":"git://github.com/pksunkara/whitespaces.git"},"keywords":["whitespaces","fix"],"homepage":"http://pksunkara.github.com/whitespaces","scripts":{"test":"./node_modules/.bin/vows --spec $(find test -name '*.js')"},"contributors":[{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com"}],"dependencies":{},"devDependencies":{"vows":"0.6.x"},"engines":{"node":">0.4.11"},"bugs":{"url":"https://github.com/pksunkara/whitespaces/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pksunkara/whitespaces/raw/master/LICENSE"}],"_npmUser":{"name":"pksunkara","email":"pavan.sss1991@gmail.com"},"_id":"whitespaces@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"98159fe9fbe6a24c2d28d2ec09a0a28c34ef05e9","tarball":"http://registry.npmjs.org/whitespaces/-/whitespaces-0.1.0.tgz"},"maintainers":[{"name":"pksunkara","email":"pavan.sss1991@gmail.com"}],"directories":{}},"0.1.1":{"name":"whitespaces","version":"0.1.1","author":{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com","url":"http://pksunkara.github.com"},"description":"Fix all the whitespaces","bin":{"whitespaces":"./whitespaces"},"repository":{"type":"git","url":"git://github.com/pksunkara/whitespaces.git"},"keywords":["whitespaces","fix"],"homepage":"http://pksunkara.github.com/whitespaces","scripts":{"test":"./node_modules/.bin/vows --spec $(find test -name '*.js')"},"contributors":[{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com"}],"dependencies":{},"devDependencies":{"vows":"0.6.x"},"engines":{"node":">0.4.11"},"bugs":{"url":"https://github.com/pksunkara/whitespaces/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pksunkara/whitespaces/raw/master/LICENSE"}],"_npmUser":{"name":"pksunkara","email":"pavan.sss1991@gmail.com"},"_id":"whitespaces@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a2710035ed149a52ec37cd776dca13cf03b30e2f","tarball":"http://registry.npmjs.org/whitespaces/-/whitespaces-0.1.1.tgz"},"maintainers":[{"name":"pksunkara","email":"pavan.sss1991@gmail.com"}],"directories":{}},"0.1.2":{"name":"whitespaces","version":"0.1.2","author":{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com","url":"http://pksunkara.github.com"},"description":"Fix all the whitespaces","bin":{"whitespaces":"./whitespaces"},"repository":{"type":"git","url":"git://github.com/pksunkara/whitespaces.git"},"keywords":["whitespaces","fix"],"homepage":"http://pksunkara.github.com/whitespaces","scripts":{"test":"./node_modules/.bin/vows --spec $(find test -name '*.js')"},"contributors":[{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com"}],"dependencies":{},"devDependencies":{"vows":"0.6.x"},"engines":{"node":">0.4.11"},"bugs":{"url":"https://github.com/pksunkara/whitespaces/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pksunkara/whitespaces/raw/master/LICENSE"}],"_npmUser":{"name":"pksunkara","email":"pavan.sss1991@gmail.com"},"_id":"whitespaces@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"ebb66d4cc1211db355a07ad1692837a3b160d02d","tarball":"http://registry.npmjs.org/whitespaces/-/whitespaces-0.1.2.tgz"},"maintainers":[{"name":"pksunkara","email":"pavan.sss1991@gmail.com"}]}},"readme":"# whitespaces\n\n**Fix all the whitespaces!!**\n\n## Installation\n```\nnpm install whitespaces -g\n```\n\n## Usage\n\n```\nwhitespaces [FILES]\n```\n\n* Fixes trailing whitespaces\n* Fixes whitespaces in blank lines\n\nIf you like this project, please watch this and follow me.\n\n## Testing\n```\nnpm test\n```\n\n## Contributors\nHere is a list of [Contributors](http://github.com/pksunkara/whitespaces/contributors)\n\n### TODO\n\n- Some more cases\n\n__I accept pull requests and guarantee a reply back within a day__\n\n## License\nMIT/X11\n\n## Bug Reports\nReport [here](http://github.com/pksunkara/whitespaces/issues). __Guaranteed reply within a day__.\n\n## Contact\nPavan Kumar Sunkara (pavan.sss1991@gmail.com)\n\nFollow me on [github](https://github.com/users/follow?target=pksunkara), [twitter](http://twitter.com/pksunkara)\n","maintainers":[{"name":"pksunkara","email":"pavan.sss1991@gmail.com"}],"time":{"modified":"2012-06-24T13:00:59.357Z","created":"2012-04-08T17:50:07.775Z","0.1.0":"2012-04-08T17:50:12.949Z","0.1.1":"2012-04-14T18:18:40.606Z","0.1.2":"2012-06-24T13:00:59.357Z"},"author":{"name":"Pavan Kumar Sunkara","email":"pavan.sss1991@gmail.com","url":"http://pksunkara.github.com"},"repository":{"type":"git","url":"git://github.com/pksunkara/whitespaces.git"},"_id":"whitespaces","_rev":"1-5cec936fe1ca91f818143c1547721eb4"}ÿdocument-storeÿwhet.observer {"id":"whet.observer","rev":"1-fd5f79add50c5d7a69afd308884ad3d3","rev_tree":[{"pos":1,"ids":["fd5f79add50c5d7a69afd308884ad3d3",{"status":"available"},[]]}],"rev_map":{"1-fd5f79add50c5d7a69afd308884ad3d3":3394},"winningRev":"1-fd5f79add50c5d7a69afd308884ad3d3","deleted":false,"seq":3394}ÿby-sequenceÿ0000000000003394ék{"name":"whet.observer","description":"A standalone Observer that actually works on node.js and browser","dist-tags":{"latest":"0.4.1"},"versions":{"0.2.1":{"name":"whet.observer","version":"0.2.1","description":"A standalone Observer that actually works on node.js","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"git://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.4.0"},"license":"MIT","_npmUser":{"name":"meettya","email":"meettya@gmail.com"},"_id":"whet.observer@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"c34ec20b1fd17698aea1aaf744258296af0dc349","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.2.1.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}],"directories":{}},"0.2.5":{"name":"whet.observer","version":"0.2.5","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"git://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.4.0"},"license":"MIT","_npmUser":{"name":"meettya","email":"meettya@gmail.com"},"_id":"whet.observer@0.2.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7e74445f9f953a25eeda7de33681db5041e4cf61","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.2.5.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}],"directories":{}},"0.2.7":{"name":"whet.observer","version":"0.2.7","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meetÊñøùùtya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"git://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.4.0"},"license":"MIT","_npmUser":{"name":"meettya","email":"meettya@gmail.com"},"_id":"whet.observer@0.2.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"f10b2c93349c46d98178f6cbbe547123c277b634","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.2.7.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}],"directories":{}},"0.2.3":{"name":"whet.observer","version":"0.2.3","description":"A standalone Observer that actually works on node.js","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"git://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.4.0"},"license":"MIT","_npmUser":{"name":"meettya","email":"meettya@gmail.com"},"_id":"whet.observer@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"9335bbd456e2da599d1093bd7d2474f7aa2060be","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.2.3.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]},"0.2.9":{"name":"whet.observer","version":"0.2.9","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"git://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.6.0"},"license":"MIT","_npmUser":{"name":"meettya","email":"meettya@gmail.com"},"_id":"whet.observer@0.2.9","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"7cc3abf91c1a295a083579b68bf23abf289d26ab","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.2.9.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]},"0.3.3":{"name":"whet.observer","version":"0.3.3","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"https://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.6.0"},"license":"MIT","_id":"whet.observer@0.3.3","dist":{"shasum":"266e5cd1147e05c59cbc8f2f70f41e8d6820d16b","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.3.3.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]},"0.3.5":{"name":"whet.observer","version":"0.3.5","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"https://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.6.0"},"license":"MIT","_id":"whet.observer@0.3.5","dist":{"shasum":"97bcd54619e0847f847307e8605772e9e4a96531","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.3.5.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]},"0.3.7":{"name":"whet.observer","version":"0.3.7","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"https://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.6.0"},"license":"MIT","_id":"whet.observer@0.3.7","dist":{"shasum":"0ea25c97b8e919baba88fa37a75e19eed0e974f0","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.3.7.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]},"0.4.1":{"name":"whet.observer","version":"0.4.1","description":"A standalone Observer that actually works on node.js and browser","keywords":["observer","publish","subscribe","task","async"],"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"dependencies":{"underscore":">=1.3.3"},"devDependencies":{"coffee-script":">=1.3.3","chai":"latest","mocha":"latest","jade":"latest","stitch":"latest"},"scripts":{"test":"cake test"},"repository":{"type":"git","url":"https://github.com/Meettya/whet.observer.git"},"main":"index.js","engines":{"node":">=0.6.0"},"license":"MIT","_id":"whet.observer@0.4.1","dist":{"shasum":"e09614465a5cc1bfb1c2ac810bea65849c35b524","tarball":"http://registry.npmjs.org/whet.observer/-/whet.observer-0.4.1.tgz"},"maintainers":[{"name":"meettya","email":"meettya@gmail.com"}]}},"readme":"[![Build Status](https://secure.travis-ci.org/Meettya/whet.observer.png)](http://travis-ci.org/Meettya/whet.observer)\n\n# whet.observer\n\nA standalone Observer that actually works on node.js, adapted from Publish/Subscribe plugin for jQuery\n\n\n## Description:\n\nThis script implement Observer pattern in Object Oriented-manner.\n\nI find this mush more predictable than one huge global observer.\n\nAlso its allow you to operate to multiple topics just by separating the topic names with a space, as [JZ-Publish-Subscribe-jQuery-Plugin](https://github.com/joezimjs/JZ-Publish-Subscribe-jQuery-Plugin) do it.\n\nSee the examples below or test files.\n\n\n## Usage:\n\nAll examples use CoffeeScript, you may use plain JS instead (but why?).\n\n\nAt first you must create Observer object to interact with it\n \n Observer = require 'whet.observer'\n observer_obj = new Observer\n \n### Subscribing:\n\nSubscribe to a single topic called 'foo'\n\nThe callback function receives two arguments:\n\n- data: any data that the publisher sent\n- topic: the topic that was published to that called the function\n \nNote: #subscribe() returns a 'handle' that can be used to unsubscribe easily\n \n handle = observer_obj.subscribe(\"foo\", (topic, data) -> console.log data, topic )\n\nSubscribe to multiple topics at once\n'foo', 'bar', and 'baz' are three different topics\n \n handle = observer_obj.subscribe(\"foo bar baz\", (topic, data) -> console.log data, topic )\n\nSubscribe with a context\nCallback now has its this variable assigned to the specified object\n \n obj = \n internal_data: 0\n func: (topic, data) -> console.log data, topic, @internal_data\n\n handle = observer_obj.subscribe(\"foo\", obj.func, obj)\n\n\n### Unsubscribing:\n\nUnsubscribe using the handle gained from calling #subscribe().\nThe callback that was sent into the #subscribe() call that you retrieved the\nhandle from will be unsubscribed from all of the topics subscribed to\n \n observer_obj.unsubscribe(handle)\n\nUnsubscribe by specifying the topics, callback, and context (if one was\nwhen subscribed).\nNote: if you use an anonymous in the #subscribe() call, you can retrieve a\nreference to the callback from the handle's 'callback' property\n\n observer_obj.unsubscribe(\"foo bar\", callback_reference, obj)\n # or\n observer_obj.unsubscribe(\"foo bar\", handle.callback);\n\nUsing the second syntax is useful if you used an anonymous function and got\nthe handle, but don't want to unsubscribe from all of the topics.\n\nUnsubscribe all callbacks from 1+ topics\nIf you skip giving a callback as a parameter, it'll unsubscribe all functions\nfrom the topic(s) given\n \n observer_obj.unsubscribe(\"foo bar\")\n\n\n### Publishing:\n\nPublish to a topic (or topics)\nWhen you publish, you may send data to the subscribers, or you can leave the\nparameter empty if you have no particular data to send. The data does not have\na particular format that it must be in, giving you the flexibility to use it\nin whatever way is appropriate for your application\n \n observer_obj.publish(\"foo bar\", \"This is some data\")\n\n\n## General Notes\n\n### Topics:\n\nTopics can use any name that can also be used as a property name. Since the\ntopic is always retrieved using the bracket notation (e.g. object[\"prop\"]), as\nopposed to the dot notation (e.g. object.prop), you are allowed to use a large\nnumbers of characters that aren't legal for variable names, such as slashes (\"/\")\nor periods (\".\"). You cannot, however, use a space (\" \") because this is the \ncharacter that separates multiple topics.\nAll three functions (subscribe, unsubscribe, and publish) are able to take one\nor multiple topics (separated by a space).\n\n### Callback Context:\nWhen a callback function is invoked, it is called in the context of blank object.\nThis means that this === {} inside of your function.\nYou may use you own object instead, passed it as context object.\n\n### Handle:\nThe handle that is returned from the #subscribe() function is simply an object\nwith three properties, named \"topics\", \"callback\", and \"context\" that correspond\nto the three parameters that you sent in (or context will be a blank object if\nno context was provided):\n\n handle =\n topics : \"the topics you sent in\"\n callback : (topic, data)-> \n // this is the callback function you sent in\n context : contextObjYouSentIn || {}\n\n### Callback Topic Argument:\nThe first argument that the callback receives is the topic in which the\nfunction was subscribed and invoked from. This will always be a string\ncontaining only one topic, even if the #publish() function is called with\nmultiple topics because the callback will be run once for each individual\ntopic that is published.\n\n","maintainers":[{"name":"meettya","email":"meettya@gmail.com"}],"time":{"modified":"2012-08-07T10:07:24.513Z","created":"2012-06-04T11:12:37.713Z","0.2.1":"2012-06-04T11:12:39.763Z","0.2.3":"2012-06-30T13:59:26.356Z","0.2.5":"2012-06-23T20:52:27.118Z","0.2.7":"2012-06-24T13:36:52.834Z","0.2.9":"2012-06-30T14:17:46.060Z","0.3.3":"2012-07-05T05:37:13.755Z","0.3.5":"2012-07-05T09:42:59.089Z","0.3.7":"2012-07-07T10:20:47.670Z","0.4.1":"2012-08-07T10:07:24.513Z"},"author":{"name":"Dmitrii Karpich","email":"meettya@gmail.com"},"repository":{"type":"git","url":"https://github.com/Meettya/whet.observer.git"},"_id":"whet.observer","_rev":"1-fd5f79add50c5d7a69afd308884ad3d3"}ÿdocument-storeÿwebc—{"id":"webc","rev":"1-eb95d84968cb40ac167b614e6778c7df","rev_tree":[{"pos":1,"ids":["eb95d84968cb40ac167b614e6778c7df",{"status":"available"},[]]}],"rev_map":{"1-eb95d84968cb40ac167b614e6778c7df":3393},"winningRev":"1-eb95d84968cb40ac167b614e6778c7df","deleted":false,"seq":3393}ÿby-sequenceÿ0000000000003393ó#{"name":"webc","description":"compile and test your jade/coffeescript/less webapps","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"webc","preferGlobal":"true","version":"0.1.0","author":{"name":"Patrick Boos","email":"mail@pboos.ch"},"description":"compile and test your jade/coffeescript/less webapps","contributors":[],"bin":{"webc":"./bin/webc"},"scripts":{"test":"make tests"},"main":"./lib/webc","repository":{"type":"git","url":"git://github.com/pboos/webc.git"},"keywords":["jade","coffeescript","less","aws","s3","webapp","compile"],"dependencies":{"coffee-script":"1.3.1","jade":"0.25.0","recess":"1.0.3","async":"0.1.18","underscore":"1.3.3","connect":"2.1.3","commander":"0.6.0"},"devDependencies":{"mocha":"1.0.1","should":"0.6.1"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"pboos","email":"mail@pboos.ch"},"_id":"webc@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"744b78a95ef3d5bd56cf1666da961ee26a88c27e","tarball":"http://registry.npmjs.org/webc/-/webc-0.1.0.tgz"},"readme":"","maintainers":[{"name":"pboos","email":"mail@pboos.ch"}]},"0.1.1":{"name":"webc","preferGlobal":"true","version":"0.1.1","author":{"name":"Patrick Boos","email":"mail@pboos.ch"},"description":"compile and test your jade/coffeescript/less webapps","contributors":[],"bin":{"webc":"./bin/webc"},"scripts":{"test":"make tests"},"main":"./lib/webc","repository":{"type":"git","url":"git://github.com/pboos/webc.git"},"keywords":["jade","coffeescript","less","aws","s3","webapp","compile"],"dependencies":{"coffee-script":"1.3.1","jade":"0.25.0","recess":"1.0.3","async":"0.1.18","underscore":"1.3.3","connect":"2.1.3","commander":"0.6.0"},"devDependencies":{"mocha":"1.0.1","should":"0.6.1"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"pboos","email":"patrickboos85@gmail.com"},"_id":"webc@0.1.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8bc8b634cdb3653fd7e5f8af39a4d4fbf081099e","tarball":"http://registry.npmjs.org/webc/-/webc-0.1.1.tgz"},"readme":"# webc - website compiler\n\nWebC makes it easy to compile your jade/coffee-script/less files and test them locally in the browser. It can watch the files for changes and even serve them through a static web server locally for testing.\n\n## Installation\n\nvia npm:\n\n```bash\n$ npm install webc\n$ webc --help\n```\n\n## Usage\n\n```bash\n$ webc compile\n```\nCompiles your files to _output. Use --out to specify diferent output directory.\n\n```bash\n$ webc watch\n```\nSame as compile, but compiles if changes happen.\n\n\n```bash\n$ webc serve\n```\nSame as watch but as well serves the files through http://localhost:3000. Use --port to change the port.","maintainers":[{"name":"pboos","email":"mail@pboos.ch"}]},"0.1.2":{"name":"webc","preferGlobal":"true","version":"0.1.2","author":{"name":"Patrick Boos","email":"mail@pboos.ch"},"description":"compile and test your jade/coffeescript/less webapps","contributors":[],"bin":{"webc":"./bin/webc"},"scripts":{"test":"make tests"},"main":"./lib/webc","repository":{"type":"git","url":"git://github.com/pboos/webc.git"},"keywords":["jade","coffeescript","less","aws","s3","webapp","compile"],"dependencies":{"coffee-script":"1.3.1","jade":"0.25.0","recess":"1.0.3","async":"0.1.18","underscore":"1.3.3","connect":"2.1.3","commander":"0.6.0"},"devDependencies":{"mocha":"1.0.1","should":"0.6.1"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"pboos","email":"mail@pboos.ch"},"_id":"webc@0.1.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"58686abd3db7a562638abe1ef7f3e1077e8dc49b","tarball":"http://registry.npmjs.org/webc/-/webc-0.1.2.tgz"},"readme":"","maintainers":[{"name":"pboos","email":"mail@pboos.ch"}]}},"readme":"","maintainers":[{"name":"pboos","email":"mail@pboos.ch"}],"time":{"modified":"2012-05-10T22:24:28.679Z","created":"2012-04-22T22:19:14.642Z","0.1.0":"2012-04-22T22:19:19.001Z","0.1.1":"2012-04-26T01:31:46.544Z","0.1.2":"2012-05-10T22:24:28.679Z"},"author":{"name":"Patrick Boos","email":"mail@pboos.ch"},"repository":{"type":"git","url":"git://github.com/pboos/webc.git"},"_id":"webc","_rev":"1-eb95d84968cb40ac167b614e6778c7df"}ÿdocument-storeÿvsiteparserž{"id":"vsiteparser","rev":"1-4ed6f7902b10dba3a5f5fdf2f8a4fde2","rev_tree":[{"pos":1,"ids":["4ed6f7902b10dba3a5f5fdf2f8a4fde2",{"status":"available"},[]]}],"rev_map":{"1-4ed6f7902b10dba3a5f5fdf2f8a4fde2":3392},"winningRev":"1-4ed6f7902b10dba3a5f5fdf2f8a4fde2","deleted":false,"seq":3392}ÿby-sequenceÿ0000000000003392æ,{"name":"vsiteparser","description":"An on-line video URL parser","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"author":{"name":"Randy","email":"randypriv@gmail.com","url":"http://djyde.github.com"},"name":"vsiteparser","description":"An on-line video URL parser","version":"0.1.0","homepage":"https://github.com/djyde/VSiteParser","repository":{"type":"git","url":"git://github.com/djyde/VSiteParser.git"},"main":"vsparser","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"djyde520","email":"randypriv@gmail.com"},"_id":"vsiteparser@0.1.0","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e1fe939fefb95f36703208f867726b370092a1e5","tarball":"http://registry.npmjs.org/vsiteparser/-/vsiteparser-0.1.0.tgz"},"readme":"","maintainers":[{"name":"djyde520","email":"randypriv@gmail.com"}]},"0.1.1":{"author":{"name":"Randy","email":"randypriv@gmail.com"},"name":"vsiteparser","description":"A video website URL parser","version":"0.1.1","repository":{"type":"git","url":"git://github.com/djyde/VSiteParser.git"},"main":"vsparser","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"djyde520","email":"randypriv@gmail.com"},"_id":"vsiteparser@0.1.1","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"63ce2a30bc9deada08bad6518428721cb13e6faa","tarball":"http://registry.npmjs.org/vsiteparser/-/vsiteparser-0.1.1.tgz"},"readme":"##Description##\r\n\r\n###VSiteParser is a Chinese native video website URL parser.###\r\n\r\nWith it,you can parse a video URL of some Chinese native video website such as Youku,Tudou,56,etc.\r\n\r\n##概述##\r\n\r\n###VSiteParser是一个中国本土化视频地å€è§£æžå·¥å…·.###\r\n\r\nä½ å¯ä»¥åˆ©ç”¨å®ƒè§£æžå¦‚优酷,土豆,56等在线视频地å€.\r\n\r\n##Support##\r\n\r\nThe web that VSiteParser has supported:\r\n\r\n* [Youku](http://www.youku.com)\r\n\r\n* [Tudou](http://www.tudou.com)\r\n\r\n* [56](http://www.56.com)\r\n\r\n* [ku6](http://www.ku6.com)\r\n\r\n* [ifeng](http://www.ifeng.com)\r\n\r\n* [bilibili](http://www.bilibili.tv)\r\n\r\n##支æŒ##\r\n\r\nVSiteParserå·²ç»æ”¯æŒçš„æœ‰:\r\n\r\n* [优酷](http://www.youku.com)\r\n\r\n* [土豆](http://www.tudou.com)\r\n\r\n* [56](http://www.56.com)\r\n\r\n* [é…·6](http://www.ku6.com)\r\n\r\n* [凤凰网](http://www.ifeng.com)\r\n\r\n* [bilibili](http://www.bilibili.tv)\r\n\r\n##Make it work##\r\n\r\n` `\r\n\r\n##使用##\r\n\r\n` `\r\n\r\n##Now, code describes everything##\r\n\r\n**You just need to do a few as follow:**\r\n\r\n```\r\nvar url = vsparser(\"http://v.youku.com/v_show/id_XMjc3ODU4OTMy.html\");\r\n```\r\n\r\n**And now you can try to output the varible \"url\"** ( to use ` document.write(url) `)**. All you will see is:**\r\n\r\n` http://player.youku.com/player.php/sid/XMjc3ODU4OTMy/v.swf `\r\n\r\n##现在,è®©ä»£ç æ¥è¯ é‡Šä¸€åˆ‡##\r\n\r\n**你需è¦åšçš„åªæ˜¯åƒä¸‹é¢ä¸€æ ·:**\r\n\r\n```\r\nvar url = vsparser(\"http://v.youku.com/v_show/id_XMjc3ODU4OTMy.html\");\r\n```\r\n\r\n**现在你å¯ä»¥å°è¯•输出\"url\"这个å˜é‡** ( 用 ` document.write(url) `)**. 你会看到的是:**\r\n\r\n` http://player.youku.com/player.php/sid/XMjc3ODU4OTMy/v.swf `\r\n\r\n##Direction##\r\n\r\nAfter the description above,you may already know,there is a function named \"vsparser\" that return the flash URL of the video URL you given as an argument.**This is the core of VSiteParser** because depending on your own ideas,you can make many awesome stuff with this SWF site,such as embed the video on the webpage.I have already made it in the [\"examples\" file](https://github.com/djyde/VSiteParser/tree/master/examples).\r\n\r\n##有何用处?##\r\n\r\n通过以上的概述,你也许已ç»çŸ¥é“,VSiteParser通过一个åå«vsparser的函数,利用你所给的URL傿•°è¿”回一个flash URL。**这就是VSiteParser的核心部分**,因为åªè¦ä½ èƒ½æƒ³åˆ°ï¼Œä½ å°±èƒ½åˆ©ç”¨è¿™ä¸ªswf地å€åšä¸€äº›éžå¸¸æœ‰è¶£çš„事情,比如把在线视频嵌入到你的页é¢ä¹‹ä¸­ã€‚我已ç»åšå¥½äº†ä¸€ä¸ªä¾‹å­åœ¨ [\"examples\" file](https://github.com/djyde/VSiteParser/tree/master/examples) 里æä¾›å¤§å®¶å‚考。","maintainers":[{"name":"djyde520","email":"randypriv@gmail.com"}]},"0.1.6":{"author":{"name":"Randy","email":"randypriv@gmail.com","url":"http://djyde.github.com"},"name":"vsiteparser","description":"An on-line video URL parser","version":"0.1.6","homepage":"https://github.com/djyde/VSiteParser","repository":{"type":"git","url":"git://github.com/djyde/VSiteParser.git"},"main":"vsparser","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"djyde520","email":"randypriv@gmail.com"},"_id":"vsiteparser@0.1.6","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"37c138e4f901354aea85051cc82844a0c7512e48","tarball":"http://registry.npmjs.org/vsiteparser/-/vsiteparser-0.1.6.tgz"},"readme":"","maintainers":[{"name":"djyde520","email":"randypriv@gmail.com"}]}},"readme":"","maintainers":[{"name":"djyde520","email":"randypriv@gmail.com"}],"time":{"modified":"2012-06-24T01:50:17.570Z","created":"2012-06-22T10:38:49.866Z","0.1.0":"2012-06-22T10:38:56.658Z","0.1.1":"2012-06-23T01:55:32.456Z","0.1.6":"2012-06-24T01:50:17.570Z"},"author":{"name":"Randy","email":"randypriv@gmail.com","url":"http://djyde.github.com"},"repository":{"type":"git","url":"git://github.com/djyde/VSiteParser.git"},"_id":"vsiteparser","_rev":"1-4ed6f7902b10dba3a5f5fdf2f8a4fde2"}(ÿdocument-storeÿvisionmedia-jscoverage©{"id":"visionmedia-jscoverage","rev":"1-95ad9cc0838fa25b4e4d9896ebad19ba","rev_tree":[{"pos":1,"ids":["95ad9cc0838fa25b4e4d9896ebad19ba",{"status":"available"},[]]}],"rev_map":{"1-95ad9cc0838fa25b4e4d9896ebad19ba":3391},"winningRev":"1-95ad9cc0838fa25b4e4d9896ebad19ba","deleted":false,"seq":3391}ÿby-sequenceÿ0000000000003391Ð {"name":"visionmedia-jscoverage","description":"JSCoverage for node","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"visionmedia-jscoverage","version":"1.0.0","author":{"name":"visionmedia"},"contributors":[],"homepage":"https://github.com/visionmedia/node-jscoverage","description":"JSCoverage for node","keywords":["jscoverage"],"dependencies":{},"engines":{"node":">=0.6.9"},"devDependencies":{},"scripts":{"install":"./configure && make"},"_npmUser":{"name":"aleafs","email":"zhangxc83@gmail.com"},"_id":"visionmedia-jscoverage@1.0.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9f78524094cf4d249c90668805be86f3bd2bf75e","tarball":"http://registry.npmjs.org/visionmedia-jscoverage/-/visionmedia-jscoverage-1.0.0.tgz"},"maintainers":[{"name":"aleafs","email":"zhangxc83@gmail.com"}]}},"readme":"# node-jscoverage\n\n [JScoverage](http://siliconforks.com/jscoverage/) for node.\n\n## Installation\n\n $ ./configure && make install\n\n or\n\n $ npm install -g jscoverage","maintainers":[{"name":"aleafs","email":"zhangxc83@gmail.com"}],"time":{"modified":"2012-04-20T06:22:02.519Z","created":"2012-04-20T06:21:57.433Z","1.0.0":"2012-04-20T06:22:02.519Z"},"author":{"name":"visionmedia"},"_id":"visionmedia-jscoverage","_rev":"1-95ad9cc0838fa25b4e4d9896ebad19ba"}ÿdocument-storeÿvector™{"id":"vector","rev":"1-079f83587374cf5cd49de093b8b91c4e","rev_tree":[{"pos":1,"ids":["079f83587374cf5cd49de093b8b91c4e",{"status":"available"},[]]}],"rev_map":{"1-079f83587374cf5cd49de093b8b91c4e":3390},"winningRev":"1-079f83587374cf5cd49de093b8b91c4e","deleted":false,"seq":3390}ÿby-sequenceÿ0000000000003390Å{"name":"vector","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"vector","url":"http://github.com/reu/vector.js","keywords":["physics","math","vectors","2D"],"version":"0.0.1","main":"./lib/vector","author":{"name":"Rodrigo Navarro","email":"rnavarro1@gmail.com"},"scripts":{"test":"cake test"},"directories":{"lib":"./lib"},"devDependencies":{"coffee-script":"1.2.x","mocha":">= 1.1.0","should":">= 0.6.3"},"_npmUser":{"name":"reu","email":"rnavarro1@gmail.com"},"_id":"vector@0.0.1","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"f2eba4b9206a7f738b814c683d8f86dab2281213","tarball":"http://registry.npmjs.org/vector/-/vector-0.0.1.tgz"},"maintainers":[{"name":"reu","email":"rnavarro1@gmail.com"}]},"0.0.2":{"name":"vector","url":"http://github.com/reu/vector.js","keywords":["physics","math","vectors","2D"],"version":"0.0.2","main":"./lib/vector","author":{"name":"Rodrigo Navarro","email":"rnavarro1@gmail.com"},"scripts":{"test":"cake test"},"directories":{"lib":"./lib"},"devDependencies":{"coffee-script":"1.2.x","mocha":">= 1.1.0","should":">= 0.6.3"},"_npmUser":{"name":"reu","email":"rnavarro1@gmail.com"},"_id":"vector@0.0.2","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"9ebe705216641632f95b523c62556c0aebfee2ac","tarball":"http://registry.npmjs.org/vector/-/vector-0.0.2.tgz"},"maintainers":[{"name":"reu","email":"rnavarro1@gmail.com"}]},"0.0.3":{"name":"vector","url":"http://github.com/reu/vector.js","keywords":["physics","math","vectors","2D"],"version":"0.0.3","main":"./lib/vector","author":{"name":"Rodrigo Navarro","email":"rnavarro1@gmail.com"},"scripts":{"test":"cake test"},"directories":{"lib":"./lib"},"devDependencies":{"coffee-script":"1.2.x","mocha":">= 1.1.0","should":">= 0.6.3"},"_npmUser":{"name":"reu","email":"rnavarro1@gmail.com"},"_id":"vector@0.0.3","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"f3d56772b765a29098441cd0ca3fa3a0010cfc8e","tarball":"http://registry.npmjs.org/vector/-/vector-0.0.3.tgz"},"maintainers":[{"name":"reu","email":"rnavarro1@gmail.com"}]},"0.0.4":{"name":"vector","url":"http://github.com/reu/vector.js","keywords":["physics","math","vectors","2D"],"version":"0.0.4","main":"./lib/vector","author":{"name":"Rodrigo Navarro","email":"rnavarro1@gmail.com"},"scripts":{"test":"cake test"},"directories":{"lib":"./lib"},"devDependencies":{"coffee-script":"1.2.x","mocha":">= 1.1.0","should":">= 0.6.3"},"_npmUser":{"name":"reu","email":"rnavarro1@gmail.com"},"_id":"vector@0.0.4","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"4ccb9a0b75f625020ae15a8465a9636764ad3652","tarball":"http://registry.npmjs.org/vector/-/vector-0.0.4.tgz"},"maintainers":[{"name":"reu","email":"rnavarro1@gmail.com"}]}},"readme":null,"maintainers":[{"name":"reu","email":"rnavarro1@gmail.com"}],"time":{"modified":"2012-06-23T22:32:10.118Z","created":"2012-06-08T05:10:13.110Z","0.0.1":"2012-06-08T05:10:16.117Z","0.0.2":"2012-06-08T20:25:50.826Z","0.0.3":"2012-06-09T01:06:00.193Z","0.0.4":"2012-06-23T22:32:10.118Z"},"author":{"name":"Rodrigo Navarro","email":"rnavarro1@gmail.com"},"_id":"vector","_rev":"1-079f83587374cf5cd49de093b8b91c4e"}"ÿdocument-storeÿuseragent-parser£{"id":"useragent-parser","rev":"1-6f9243de732e7dc1b76a5ba96db2013a","rev_tree":[{"pos":1,"ids":["6f9243de732e7dc1b76a5ba96db2013a",{"status":"available"},[]]}],"rev_map":{"1-6f9243de732e7dc1b76a5ba96db2013a":3389},"winningRev":"1-6f9243de732e7dc1b76a5ba96db2013a","deleted":false,"seq":3389}ÿby-sequenceÿ0000000000003389ë{"name":"useragent-parser","description":"A NodeJS User Agent Parser.","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"useragent-parser","description":"A NodeJS User Agent Parser.","version":"0.0.1","repository":{"type":"git","url":"http://github.com/koenpunt/node-useragent-parser.git"},"dependencies":{"js-yaml":"~0.3"},"devDependencies":{"mocha":"~1.3","should":"~1.0"},"licenses":[{"type":"MIT","url":"https://raw.github.com/koenpunt/node-useragent-parser/master/LICENSE"}],"_id":"useragent-parser@0.0.1","dist":{"shasum":"3e2ca36caf9fd98bf4b0cee93f4a03f2efad9c99","tarball":"http://registry.npmjs.org/useragent-parser/-/useragent-parser-0.0.1.tgz"},"readme":"","maintainers":[{"name":"koenpunt","email":"me@koen.pt"}]},"0.1.0":{"name":"useragent-parser","description":"A NodeJS User Agent Parser.","version":"0.1.0","repository":{"type":"git","url":"http://github.com/koenpunt/node-useragent-parser.git"},"dependencies":{"js-yaml":"~0.3"},"devDependencies":{"mocha":"~1.3","should":"~1.0"},"licenses":[{"type":"MIT","url":"https://raw.github.com/koenpunt/node-useragent-parser/master/LICENSE"}],"_id":"useragent-parser@0.1.0","dist":{"shasum":"7f5d56f0438fdc7a91c9e683e35def59aec2eff8","tarball":"http://registry.npmjs.org/useragent-parser/-/useragent-parser-0.1.0.tgz"},"readme":"","maintainers":[{"name":"koenpunt","email":"me@koen.pt"}]},"0.1.1":{"name":"useragent-parser","description":"A NodeJS User Agent Parser.","version":"0.1.1","repository":{"type":"git","url":"http://github.com/koenpunt/node-useragent-parser.git"},"devDependencies":{"mocha":"~1.3","should":"~1.0"},"licenses":[{"type":"MIT","url":"https://raw.github.com/koenpunt/node-useragent-parser/master/LICENSE"}],"readme":"# NodeJS User Agent Parser\n\nDirect port from https://github.com/tobie/ua-parser/blob/master/py/ua_parser/user_agent_parser.py. Initially by Google?","_id":"useragent-parser@0.1.1","dist":{"shasum":"8a842cd118db22719c9d0a97768776b41f6633a1","tarball":"http://registry.npmjs.org/useragent-parser/-/useragent-parser-0.1.1.tgz"},"maintainers":[{"name":"koenpunt","email":"me@koen.pt"}]}},"readme":"","maintainers":[{"name":"koenpunt","email":"me@koen.pt"}],"time":{"modified":"2012-08-02T13:44:30.928Z","created":"2012-07-24T18:05:42.035Z","0.0.1":"2012-07-24T18:05:43.726Z","0.1.0":"2012-07-24T18:11:27.564Z","0.1.1":"2012-07-24T18:15:20.434Z"},"repository":{"type":"git","url":"http://github.com/koenpunt/node-useragent-parser.git"},"users":{"fgribreau":true},"_id":"useragent-parser","_rev":"1-6f9243de732e7dc1b76a5ba96db2013a"}ÿdocument-storeÿusain˜{"id":"usain","rev":"1-dc7a48095b31c87b6035b5c2f30fa8a1","rev_tree":[{"pos":1,"ids":["dc7a48095b31c87b6035b5c2f30fa8a1",{"status":"available"},[]]}],"rev_map":{"1-dc7a48095b31c87b6035b5c2f30fa8a1":3388},"winningRev":"1-dc7a48095b31c87b6035b5c2f30fa8a1","deleted":false,"seq":3388}ÿby-sequenceÿ0000000000003388¬{"name":"usain","description":"A simple task runner tool. Named after the best runner in the world, Usain Bolt.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"usain","description":"A simple task runner tool","version":"0.0.1","author":{"name":"Henry Lawson","email":"hen3rz@gmail.com"},"dependencies":{"q":"0.x"},"devDependencies":{"jasmine-node":"1.x"},"keywords":["usain","runner","nant","ant","build"],"repository":{"type":"git","url":"git://github.com/henrylawson/usain.git"},"main":"index","engines":{"node":"*"},"_id":"usain@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"_from":"usain@0.0","_npmUser":{"name":"henrylawson","email":"hen3rz@gmail.com"},"dist":{"shasum":"8000b4c80811e3b776dffce45171135d3b56c4ad","tarball":"http://registry.npmjs.org/usain/-/usain-0.0.1.tgz"},"readme":"","maintainers":[{"name":"henrylawson","email":"hen3rz@gmail.com"}],"directories":{}},"0.0.2":{"name":"usain","description":"A simple task runner tool. Named after the best runner in the world, Usain Bolt.","version":"0.0.2","author":{"name":"Henry Lawson","email":"hen3rz@gmail.com"},"dependencies":{"q":"0.x"},"devDependencies":{"jasmine-node":"1.x"},"keywords":["usain","runner","nant","ant","build"],"repository":{"type":"git","url":"git://github.com/henrylawson/usain.git"},"main":"index","engines":{"node":"*"},"_id":"usain@0.0.2",¬©ÞÅù"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"_from":"usain@0.0","_npmUser":{"name":"henrylawson","email":"hen3rz@gmail.com"},"dist":{"shasum":"09525e7886a800312a279e2a3f7dabc38c8da42b","tarball":"http://registry.npmjs.org/usain/-/usain-0.0.2.tgz"},"readme":"# Introduction\r\nA simple task runner tool. Named after the best runner in the world, Usain Bolt.\r\n\r\n# Getting started\r\nUsing usain is super easy, just follow the steps below.\r\n## Install usain\r\n```Bash\r\nnpm install usain\r\n```\r\n\r\n## Create your tasks module\r\nThis is where you define your tasks. This can live in `./build/tasks.js`\r\n```JavaScript\r\nvar spawn = require('child_process').spawn;\r\nvar path = require('path');\r\nvar bolt = require(\"../lib/usain\");\r\n\r\nthis.tests = function() {\r\n\tvar jasmineScript = path.join(\"node_modules\", \"jasmine-node\", \"bin\", \"jasmine-node\");\r\n\tvar specsFolder = path.join(\"specs\");\r\n\treturn bolt.captureOutput(\"Tests\", spawn(\"node\", [jasmineScript, specsFolder]));\r\n};\r\nthis.default = function() { // <== Executed when no arguments provided to runner\r\n\treturn this.tests();\r\n};\r\n```\r\n\r\n## Create your runner\r\nThis is where you create your runner. This guy can live in `./usain`\r\n```JavaScript\r\nvar bolt = require(\"./lib/usain\");\r\nbolt.tasks = require(\"./build/tasks\"); // <== This is the module with your tasks\r\n\r\nbolt.execute(process.argv);\r\n```\r\n\r\n## Call on usain to run your tasks\r\nOnce configured, you can run usain.\r\n```Bash\r\nnode usain\r\n```\r\nOr you can specify the tasks you want to run.\r\n```Bash\r\nnode usain tests\r\n```\r\n","maintainers":[{"name":"henrylawson","email":"hen3rz@gmail.com"}]}},"readme":"","maintainers":[{"name":"henrylawson","email":"hen3rz@gmail.com"}],"time":{"modified":"2012-07-22T08:20:15.894Z","created":"2012-07-22T07:12:47.244Z","0.0.1":"2012-07-22T07:12:52.194Z","0.0.2":"2012-07-22T08:20:15.894Z"},"author":{"name":"Henry Lawson","email":"hen3rz@gmail.com"},"repository":{"type":"git","url":"git://github.com/henrylawson/usain.git"},"_id":"usain","_rev":"1-dc7a48095b31c87b6035b5c2f30fa8a1"}ÿdocument-storeÿurlparse.jsž{"id":"urlparse.js","rev":"1-bde4de90bb4e0d38a1baadf7f27b5448","rev_tree":[{"pos":1,"ids":["bde4de90bb4e0d38a1baadf7f27b5448",{"status":"available"},[]]}],"rev_map":{"1-bde4de90bb4e0d38a1baadf7f27b5448":3387},"winningRev":"1-bde4de90bb4e0d38a1baadf7f27b5448","deleted":false,"seq":3387}ÿby-sequenceÿ0000000000003387Ž?{"name":"urlparse.js","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"urlparse.js","version":"0.0.1","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e05b1c5afe2633a36c77a9f9fa38b62d37a926d2","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.1.tgz"},"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.2":{"name":"urlparse.js","version":"0.0.2","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"060a2eeda71d352c6e1da8b611f1902fc0eb58f1","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.2.tgz"},"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.3":{"name":"urlparse.js","version":"0.0.3","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a25c64b0e43686f44f0421c4f846492295816c1e","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.3.tgz"},"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.4":{"name":"urlparse.js","version":"0.0.4","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"6880d89faebc0e681cd794a553bdf2bb53f4d16f","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.4.tgz"},"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.5":{"name":"urlparse.js","version":"0.0.5","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"1e313fdd49b5e6c09ad7c4d67db976815120cd33","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.5.tgz"},"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.6":{"name":"urlparse.js","version":"0.0.6","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.6","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"21c9e81e0942b82c922685359411f31202b2bbb3","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.6.tgz"},"readme":"","maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]},"0.0.7":{"name":"urlparse.js","version":"0.0.7","description":"Flexible node.js url.parse replacement. Parsed URLs like a browser would and fills in the missing pieces","homepage":"https://github.com/dokipen/urlparse.js","keywords":["url","parse"],"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"bugs":{"url":"http://github.com/dokipen/parseurl.js/issues/"},"directories":{"lib":"./lib"},"dependencies":{"hashish":">= 0.0.4"},"main":"./lib/urlparse.js","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"doki_pen","email":"rcorsaro@gmail.com"},"_id":"urlparse.js@0.0.7","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a6ad61b6360cc500f23570ba6ecf6e67240d2269","tarball":"http://registry.npmjs.org/urlparse.js/-/urlparse.js-0.0.7.tgz"},"readme":"","maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}]}},"readme":null,"maintainers":[{"name":"doki_pen","email":"rcorsaro@gmail.com"}],"time":{"modified":"2012-08-02T13:44:31.629Z","created":"2011-11-21T21:15:30.270Z","0.0.1":"2011-11-21T21:15:30.862Z","0.0.2":"2011-11-21T21:19:52.043Z","0.0.3":"2011-12-09T13:12:08.884Z","0.0.4":"2011-12-09T13:59:06.834Z","0.0.5":"2011-12-09T17:38:33.876Z","0.0.6":"2012-07-24T15:40:46.099Z","0.0.7":"2012-07-24T15:43:54.673Z"},"author":{"name":"Bob Corsaro","email":"rcorsaro@gmail.com","url":"http://www.google.com/profiles/rcorsaro"},"repository":{"type":"git","url":"git://github.com/dokipen/parseurl.js.git"},"users":{"fgribreau":true},"_id":"urlparse.js","_rev":"1-bde4de90bb4e0d38a1baadf7f27b5448"}ÿdocument-storeÿupdoc˜{"id":"updoc","rev":"1-7b188b0b24776d0920971bcd5f59a65c","rev_tree":[{"pos":1,"ids":["7b188b0b24776d0920971bcd5f59a65c",{"status":"available"},[]]}],"rev_map":{"1-7b188b0b24776d0920971bcd5f59a65c":3386},"winningRev":"1-7b188b0b24776d0920971bcd5f59a65c","deleted":false,"seq":3386}ÿby-sequenceÿ0000000000003386‹={"name":"updoc","description":"the flexible javascript documentation generator","dist-tags":{"latest":"0.2.6"},"versions":{"0.0.1":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.0.1","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"~0.5.8 || 0.5.8-pre"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.0.1","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"8f53298f879bf66f0b93f2f3057af244d1e01619","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.0.1.tgz"},"maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}],"directories":{}},"0.1.0":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.1.0","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"~0.5.8 || 0.5.8-pre"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.1.0","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"a532e042399a6efeade89fedcbd2b6c95c8d8a2c","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.1.0.tgz"},"maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}],"directories":{}},"0.2.0":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.0","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"~0.5.8 || 0.5.8-pre"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.0","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"5988dca3c322431899ac115fb615090000c1910c","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.0.tgz"},"maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}],"directories":{}},"0.2.1":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.1","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"~0.5.8 || 0.5.8-pre"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.1","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"a1efe02e4a126fc957955245b6b9163e75fd2156","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.1.tgz"},"maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]},"0.2.2":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.2","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"*"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"8bda630e8769d8a1fb5ba9998465284cd1bc4bc2","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.2.tgz"},"readme":"","maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]},"0.2.3":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.3","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"*"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"d9f4aeb77f7ce508ef96ebb136627fc8b042dec5","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.3.tgz"},"readme":"","maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]},"0.2.4":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.4","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"*"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"f51478a4d4ae30e8b8bc691ff8336377ad245895","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.4.tgz"},"readme":"","maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]},"0.2.5":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.5","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"*"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"60783ccc370063f405097ed04bcbe2151bb63d40","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.5.tgz"},"readme":"","maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]},"0.2.6":{"author":{"name":"Greg Smith","url":"http://incompl.com"},"name":"updoc","description":"the flexible javascript documentation generator","homepage":"http://incompl.github.com/updoc/","version":"0.2.6","repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"engines":{"node":"*"},"dependencies":{"underscore":"*"},"bin":{"updoc":"./bin/updoc"},"devDependencies":{},"_npmUser":{"name":"gsmith","email":"gsmith@incompl.com"},"_id":"updoc@0.2.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2638c4612b9f78d5264a9cc648243fb6bd5a9f89","tarball":"http://registry.npmjs.org/updoc/-/updoc-0.2.6.tgz"},"readme":"","maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}]}},"maintainers":[{"name":"gsmith","email":"gsmith@incompl.com"}],"time":{"modified":"2012-05-09T20:12:48.615Z","created":"2011-11-28T21:07:53.993Z","0.0.1":"2011-11-28T21:07:54.536Z","0.1.0":"2011-11-28T21:45:09.754Z","0.2.0":"2011-12-28T21:39:49.156Z","0.2.1":"2012-01-12T22:28:17.622Z","0.2.2":"2012-03-01T17:54:09.278Z","0.2.3":"2012-05-09T15:02:50.555Z","0.2.4":"2012-05-09T17:07:57.378Z","0.2.5":"2012-05-09T17:27:12.603Z","0.2.6":"2012-05-09T20:12:48.615Z"},"author":{"name":"Greg Smith","url":"http://incompl.com"},"repository":{"type":"git","url":"git@github.com:incompl/updoc.git"},"_id":"updoc","_rev":"1-7b188b0b24776d0920971bcd5f59a65c"}'ÿdocument-storeÿupdate-exchange-rates¨{"id":"update-exchange-rates","rev":"1-98289f9db6adcc60ae18d345e1930947","rev_tree":[{"pos":1,"ids":["98289f9db6adcc60ae18d345e1930947",{"status":"available"},[]]}],"rev_map":{"1-98289f9db6adcc60ae18d345e1930947":3385},"winningRev":"1-98289f9db6adcc60ae18d345e1930947","deleted":false,"seq":3385}ÿby-sequenceÿ0000000000003385’{"name":"update-exchange-rates","description":"Update exchange rates ","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"update-exchange-rates","preferGlobal":"true","description":"Update exchange rates ","version":"0.0.1","author":{"name":"Patrick Paul-Hus","email":"hydrozen@gmail.com"},"contributors":[{"name":"Patrick Paul-Hus","email":"hydrozen@gmail.com"}],"keywords":["cli","exchange rates"],"dependencies":{"money":"0.1.3","exchange-rates":"0.1.1","commander":"0.5.2","coffee-script":""},"devDependencies":{"vows":"0.6.2","underscore":"1.3.1","assert":"0.4.9"},"engines":{"node":">=0.6.0"},"scripts":{"test":"./node_modules/vows/bin/vows test/*"},"_npmUser":{"name":"perropicante","email":"perropicante@hotmail.com"},"_id":"update-exchange-rates@0.0.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"44d112a54f05db206eaffcfea701d8d5a97d4379","tarball":"http://registry.npmjs.org/update-exchange-rates/-/update-exchange-rates-0.0.1.tgz"},"maintainers":[{"name":"perropicante","email":"perropicante@hotmail.com"}]}},"readme":"This is a little tool to update the currency exchange rates using the open source\nexchange rates service found at http://josscrowcroft.github.com/open-exchange-rates/.\n\n#Usage\n```\nnpm install\nchmod +x bin/update_rates\nbin/update_rates rates.json\n```\n\nThis will drop the conversion rates into `rates.json`\n\n\n#Specifying currency codes\n\n##Via the cmd line\nTo specify the currencies to convert from the cmd line, use the -c parameter\n\n```\nbin/update_rates -c USD,CAD,EUR rates.json\n```\n\n##Via a file\nTo specify the currencies to convert from a file, use the -f parameter\n\n```\nbin/update_rates -f currencies.json rates.json\n```\n\nwhere currencies.json is either an array of currency codes\n```javascript\n[\"USD\", \"CAD\", \"EUR\"]\n```\n\nor an object with currency codes as keys\n```javascript\n{\"USD\": \"$\", \"CAD\": \"$\", \"EUR\": \"€\"}\n```","maintainers":[{"name":"perropicante","email":"perropicante@hotmail.com"}],"time":{"modified":"2012-06-18T07:42:23.295Z","created":"2012-06-18T07:42:22.128Z","0.0.1":"2012-06-18T07:42:23.295Z"},"author":{"name":"Patrick Paul-Hus","email":"hydrozen@gmail.com"},"_id":"update-exchange-rates","_rev":"1-98289f9db6adcc60ae18d345e1930947"}ÿdocument-storeÿtwitface›{"id":"twitface","rev":"1-972dca3b6fa5bcc5f967eafdd2f99ef6","rev_tree":[{"pos":1,"ids":["972dca3b6fa5bcc5f967eafdd2f99ef6",{"status":"available"},[]]}],"rev_map":{"1-972dca3b6fa5bcc5f967eafdd2f99ef6":3384},"winningRev":"1-972dca3b6fa5bcc5f967eafdd2f99ef6","deleted":false,"seq":3384}ÿby-sequenceÿ0000000000003384Ö{"name":"twitface","description":"Twitter avatar API client","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"twitface","description":"Twitter avatar API client","version":"0.1.0","homepage":"https://github.com/markdalgleish/twitface","author":{"name":"Mark Dalgleish","url":"http://markdalgleish.com"},"repository":{"type":"git","url":"git://github.com/markdalgleish/twitface.git"},"bugs":{"url":"https://github.com/markdalgleish/twitface/issues"},"licenses":[{"type":"MIT","url":"http://markdalgleish.mit-license.org"}],"main":"lib/twitface","engines":{"node":"~0.8.2"},"scripts":{"test":"grunt lint && grunt test"},"dependencies":{"request":"~2.9.203","q":"~0.8.5"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["twitter","avatar","profile"],"_id":"twitface@0.1.0","dist":{"shasum":"89e2d739eb07395ffca481daf7daebd3869cdc2d","tarball":"http://registry.npmjs.org/twitface/-/twitface-0.1.0.tgz"},"readme":"","maintainers":[{"name":"markdalgleish","email":"mark.john.dalgleish@gmail.com"}]},"0.1.1":{"name":"twitface","description":"Twitter avatar API client","version":"0.1.1","homepage":"https://github.com/markdalgleish/twitface","author":{"name":"Mark Dalgleish","url":"http://markdalgleish.com"},"repository":{"type":"git","url":"git://github.com/markdalgleish/twitface.git"},"bugs":{"url":"https://github.com/markdalgleish/twitface/issues"},"licenses":[{"type":"MIT","url":"http://markdalgleish.mit-license.org"}],"main":"lib/twitface","engines":{"node":"~0.8.2"},"scripts":{"test":"grunt lint && grunt test"},"dependencies":{"request":"~2.9.203","q":"~0.8.5"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["twitter","avatar","profile"],"_id":"twitface@0.1.1","dist":{"shasum":"559db66b5465643539b38faafd44147dd1a0c97a","tarball":"http://registry.npmjs.org/twitface/-/twitface-0.1.1.tgz"},"readme":"","maintainers":[{"name":"markdalgleish","email":"mark.john.dalgleish@gmail.com"}]}},"readme":"","maintainers":[{"name":"markdalgleish","email":"mark.john.dalgleish@gmail.com"}],"time":{"modified":"2012-08-02T13:44:32.833Z","created":"2012-07-23T12:01:38.525Z","0.1.0":"2012-07-23T12:01:43.631Z","0.1.1":"2012-07-24T10:06:59.477Z"},"author":{"name":"Mark Dalgleish","url":"http://markdalgleish.com"},"repository":{"type":"git","url":"git://github.com/markdalgleish/twitface.git"},"users":{"fgribreau":true},"_id":"twitface","_rev":"1-972dca3b6fa5bcc5f967eafdd2f99ef6"}ÿdocument-storeÿtw•{"id":"tw","rev":"1-d7c2f0ff803eb377b12c99e6df2f12b0","rev_tree":[{"pos":1,"ids":["d7c2f0ff803eb377b12c99e6df2f12b0",{"status":"available"},[]]}],"rev_map":{"1-d7c2f0ff803eb377b12c99e6df2f12b0":3383},"winningRev":"1-d7c2f0ff803eb377b12c99e6df2f12b0","deleted":false,"seq":3383}ÿby-sequenceÿ0000000000003383°{"name":"tw","description":"Twitter helper","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"author":{"name":"Arnaud Berthomier","email":"oz@cyprio.net"},"name":"tw","description":"Twitter helper","keywords":["twitter","client"],"version":"0.1.0","repository":{"type":"git","url":"git://github.com/oz/tw.git"},"engines":{"node":"~0.6"},"bin":{"tw":"./tw.js"},"dependencies":{"optimist":"~0.3"},"devDependencies":{"coffee-script":"~1.2"},"optionalDependencies":{},"_npmUser":{"name":"oz","email":"oz@cyprio.net"},"_id":"tw@0.1.0","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ab22200eb240b27aa38c57d1a122286ab06b91f9","tarball":"http://registry.npmjs.org/tw/-/tw-0.1.0.tgz"},"maintainers":[{"name":"oz","email":"oz@cyprio.net"}],"directories":{}},"0.1.1":{"author":{"name":"Arnaud Berthomier","email":"oz@cyprio.net"},"name":"tw","description":"Twitter helper","keywords":["twitter","client"],"version":"0.1.1","repository":{"type":"git","url":"git://github.com/oz/tw.git"},"engines":{"node":"~0.6"},"bin":{"tw":"./tw.js"},"dependencies":{"optimist":"~0.3"},"devDependencies":{"coffee-script":"~1.2"},"optionalDependencies":{},"_npmUser":{"name":"oz","email":"oz@cyprio.net"},"_id":"tw@0.1.1","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"fb9e4470256c7ca803506b66d4fb19429ca8076c","tarball":"http://registry.npmjs.org/tw/-/tw-0.1.1.tgz"},"maintainers":[{"name":"oz","email":"oz@cyprio.net"}],"directories":{}},"0.1.2":{"author":{"name":"Arnaud Berthomier","email":"oz@cyprio.net"},"name":"tw","description":"Twitter helper","keywords":["twitter","client"],"version":"0.1.2","repository":{"type":"git","url":"http://github.com/oz/tw.git"},"engines":{"node":"0.6 || 0.8"},"bin":{"tw":"./tw.js"},"dependencies":{"optimist":"~0.3"},"devDependencies":{"coffee-script":"~1.3"},"optionalDependencies":{},"readme":"tw\n==\n\ntw is a tiny node script that I often use to avoid switching to a\nbrowser when a Twitter status link is mentioned. It was written a long\ntime ago, is ugly, but does the job.\n\nWhat does it do?\n\n $ tw -h\n Usage: tw \n -h show help\n -u user's tweets\n -s search tweets\n -i show status\n\nReally, that's it.\n\n $ tw 'https://twitter.com/#!/CodeWisdom/status/170178134015094784'\n CodeWisdom (16/1/2012 16:10:3 UTC): \"Larry Wall is right. Laziness should be a\n virtue. So that's why I prefer automation.\" - Brendan Eich (creator of\n JavaScript)\n\n","_id":"tw@0.1.2","dist":{"shasum":"523c11455d778ff73165cca2c33291809bc65d40","tarball":"http://registry.npmjs.org/tw/-/tw-0.1.2.tgz"},"maintainers":[{"name":"oz","email":"oz@cyprio.net"}]}},"readme":"tw\n==\n\ntw is a tiny node script that I often use to avoid switching to a\nbrowser when a Twitter status link is mentioned. It was written a long\ntime ago, is ugly, but does the job.\n\nWhat does it do?\n\n $ tw -h\n Usage: tw \n -h show help\n -u user's tweets\n -s search tweets\n -i show status\n\nReally, that's it.\n\n $ tw 'https://twitter.com/#!/CodeWisdom/status/170178134015094784'\n CodeWisdom (16/1/2012 16:10:3 UTC): \"Larry Wall is right. Laziness should be a\n virtue. So that's why I prefer automation.\" - Brendan Eich (creator of\n JavaScript)\n\n","maintainers":[{"name":"oz","email":"oz@cyprio.net"}],"time":{"modified":"2012-07-09T20:03:50.306Z","created":"2012-02-27T20:49:09.711Z","0.1.0":"2012-02-27T20:49:12.096Z","0.1.1":"2012-02-27T20:53:42.034Z","0.1.2":"2012-07-09T20:03:50.306Z"},"author":{"name":"Arnaud Berthomier","email":"oz@cyprio.net"},"repository":{"type":"git","url":"http://github.com/oz/tw.git"},"_id":"tw","_rev":"1-d7c2f0ff803eb377b12c99e6df2f12b0"}ÿdocument-storeÿtreasure.jsž{"id":"treasure.js","rev":"1-bf3b7f91bd9ad1d2d8b2a4f1c47222d3","rev_tree":[{"pos":1,"ids":["bf3b7f91bd9ad1d2d8b2a4f1c47222d3",{"status":"available"},[]]}],"rev_map":{"1-bf3b7f91bd9ad1d2d8b2a4f1c47222d3":3382},"winningRev":"1-bf3b7f91bd9ad1d2d8b2a4f1c47222d3","deleted":false,"seq":3382}ÿby-sequenceÿ0000000000003382³{"name":"treasure.js","description":"configurable data management for node.js","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"treasure.js","version":"0.1.0","description":"configurable data management for node.js","author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/caryhaynie/treasure.js.git"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test/test_treasure.js"},"dependencies":{"flowtools.js":"latest","mkdirp":"latest"},"devDependencies":{"expect.js":"latest","mocha":"latest"},"engine":{"node":">=0.6"},"readme":"# treasure.js\n\n### store your valuable data -- your way\n\ntreasure.js is a flexible data management system for node.js appications. It\nprovides a simple API for accessing objects stored in a myraid of data stores,\nas well as higher level framework for describing and managing how data should\nflow between your application and the various storage locations.\n","_id":"treasure.js@0.1.0","dist":{"shasum":"593393d0cc628514d2690c77bb79544312764311","tarball":"http://registry.npmjs.org/treasure.js/-/treasure.js-0.1.0.tgz"},"maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}]},"0.1.1":{"name":"treasure.js","version":"0.1.1","description":"configurable data management for node.js","author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/caryhaynie/treasure.js.git"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test/test_treasure.js"},"dependencies":{"flowtools.js":"latest","mkdirp":"latest"},"devDependencies":{"expect.js":"latest","mocha":"latest"},"engine":{"node":">=0.8"},"readme":"# treasure.js\n\n### store your valuable data -- your way\n\ntreasure.js is a flexible data management system for node.js appications. It\nprovides a simple API for accessing objects stored in a myraid of data stores,\nas well as higher level framework for describing and managing how data should\nflow between your application and the various storage locations.\n","_id":"treasure.js@0.1.1","dist":{"shasum":"8f8fefe6ec723741a7d3f056a40cf22be7a537c3","tarball":"http://registry.npmjs.org/treasure.js/-/treasure.js-0.1.1.tgz"},"maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}]}},"readme":"# treasure.js\n\n### store your valuable data -- your way\n\ntreasure.js is a flexible data management system for node.js appications. It\nprovides a simple API for accessing objects stored in a myraid of data stores,\nas well as higher level framework for describing and managing how data should\nflow between your application and the various storage locations.\n","maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}],"time":{"modified":"2012-07-10T00:48:57.219Z","created":"2012-07-10T00:41:57.579Z","0.1.0":"2012-07-10T00:41:58.124Z","0.1.1":"2012-07-10T00:48:57.219Z"},"author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"repository":{"type":"git","url":"https://github.com/caryhaynie/treasure.js.git"},"_id":"treasure.js","_rev":"1-bf3b7f91bd9ad1d2d8b2a4f1c47222d3"}ÿdocument-storeÿtintjs™{"id":"tintjs","rev":"1-c76827b2831eadb24550008a46f98bb0","rev_tree":[{"pos":1,"ids":["c76827b2831eadb24550008a46f98bb0",{"status":"available"},[]]}],"rev_map":{"1-c76827b2831eadb24550008a46f98bb0":3381},"winningRev":"1-c76827b2831eadb24550008a46f98bb0","deleted":false,"seq":3381}ÿby-sequenceÿ0000000000003381ª&{"name":"tintjs","description":"Creates objects with interfaces spec-ed in templates to build output","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"tintjs","description":"Creates objects with interfaces spec-ed in templates to build output","homepage":"http://github.com/pfraze/tintjs","keywords":["templates","server","client","browser"],"aut4` ùhor":{"name":"Paul Frazee","email":"pfrazee@gmail.com"},"repository":{"type":"git","url":"git://github.com/pfraze/tintjs.git"},"main":"tint.js","version":"0.0.1","_npmUser":{"name":"pfraze","email":"pfrazee@gmail.com"},"_id":"tintjs@0.0.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"92b7803197b2c1b48f14bb5e3bcfcfa395869b61","tarball":"http://registry.npmjs.org/tintjs/-/tintjs-0.0.1.tgz"},"maintainers":[{"name":"pfraze","email":"pfrazee@gmail.com"}]}},"readme":"TintJS\n======\n\nTint uses templates which specify an interface of variables, namespaces, and functions. That interface is used to compile a prototype for objects which build the output.\n\nThe template:\n\n```HTML\n
\n
\n $nav{\n
    \n $item() {\n $header(label){
  • $label;
  • }header;\n $link(label, uri){
  • $label;
  • }link;\n }item;\n
\n }nav;\n
\n
\n

$title;

\n \n $message(uri, author, title, date) {\n \n \n \n \n \n }message;\n
$author;$title;$date;
\n
\n
\n```\n\nThe javascript:\n\n```javascript\n// Compile the prototype\n// `templateString` contains the above template\nvar Tmpl = Tint.compile(templateString);\n\n// ...\n\n// Instantiate the builder object\nvar tmpl = new Tmpl();\n\n// nav\ntmpl.nav.item().header('Inbox');\ntmpl.nav.item().link('Inbox', '/');\ntmpl.nav.item().link('Settings', '/settings');\ntmpl.nav.item().header('Services');\ntmpl.nav.item().link('MyService', '/myservice');\n\n// content\ntmpl.title = \"Your Inbox\";\nfor (var i=0; i < messages.length; i++) {\n var message = messages[i];\n tmpl.message(message.uri, message.author, message.summary, message.date);\n}\n\n// Generate output\nvar html = tmpl.toString();\n```\n\nYou can also extend the prototype, if you like:\n\n```javascript\n// Add a custom constructor\nvar Tmpl = new Tint.compile(templateString, function(services) {\n this.nav.item().header('Inbox');\n this.nav.item().link('Inbox', '');\n this.nav.item().link('Settings', '/settings');\n this.nav.item().header('Services');\n for (var i=0; i < services.length; i++) {\n this.nav.item().link(services[i].name, services[i].uri);\n }\n});\nTmpl.prototype.addMessage = function(message) {\n this.message(message.uri, message.author, message.summary, message.date);\n};\n\n// ...\n\n// Instantiate the builder object\nvar tmpl = new Tmpl(my_services);\ntmpl.title = \"Your Inbox\";\nfor (var i=0; i < messages.length; i++) {\n tmpl.addMessage(messages[i]);\n}\nvar html = tmpl.toString();\n```\n\n## How it works\n\nTint's templates use 3 different constructs:\n\n - Blocks\n - Variables\n - Functions\n\n**Blocks** are just namespaces for parts of the template. They don't change the output.\n\n`$block_name{ whatever }block_name;`\n\n**Variables** are direct substitutions. They're replaced with whatever value they're assigned.\n\n`$variable_name;`\n\n**Functions** are blocks which can be added multiple times, and which take parameter lists.\n\n`$func_name(param1, param2) { whatever $param1; whatever $param2; }func_name;`\n\nThat's it; those building blocks are enough to generate your output. Any logic you need (like conditionals, escaping, or lists with commas on all but the last item) is added to the prototype, by you, using a language that's designed for it (Javascript).\n\n## A few additional notes\n\nFunction calls generate blocks which are stored in an array with a prefix added to the name. That is, if my template has a `$profile(username)` function, then I can access the blocks it creates at `_profile[]`. Function parameters are stored as variables with the same name as the parameter itself: `_profile[0].username`.","maintainers":[{"name":"pfraze","email":"pfrazee@gmail.com"}],"time":{"modified":"2012-05-09T21:23:22.552Z","created":"2012-05-09T21:23:21.490Z","0.0.1":"2012-05-09T21:23:22.552Z"},"author":{"name":"Paul Frazee","email":"pfrazee@gmail.com"},"repository":{"type":"git","url":"git://github.com/pfraze/tintjs.git"},"_id":"tintjs","_rev":"1-c76827b2831eadb24550008a46f98bb0"}"ÿdocument-storeÿthrottled-stream£{"id":"throttled-stream","rev":"1-95f2911c398b56c9628b4fca64ca4ce5","rev_tree":[{"pos":1,"ids":["95f2911c398b56c9628b4fca64ca4ce5",{"status":"available"},[]]}],"rev_map":{"1-95f2911c398b56c9628b4fca64ca4ce5":3380},"winningRev":"1-95f2911c398b56c9628b4fca64ca4ce5","deleted":false,"seq":3380}ÿby-sequenceÿ0000000000003380Ú{"name":"throttled-stream","description":"Stream implementation that throttles its output to a maximum number of bytes per second.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Travis Collins","email":"travis@tec27.com","url":"http://tec27.com/"},"name":"throttled-stream","description":"Stream implementation that throttles its output to a maximum number of bytes per second.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/tec27/node-throttled-stream.git"},"keywords":["streams","throttling"],"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tec27","email":"travis@tec27.com"},"_id":"throttled-stream@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"512250b90f1f99de97fb0cdb2ec93f82a4721827","tarball":"http://registry.npmjs.org/throttled-stream/-/throttled-stream-0.0.1.tgz"},"maintainers":[{"name":"tec27","email":"travis@tec27.com"}]}},"readme":"#throttled-stream\r\nStream implementation with support for throttling data to a specified number of bytes per second. Inspired by [node-throttle](https://github.com/TooTallNate/node-throttle), but implemented as a full-on stream interface so that we can have more granular control over when and how data gets sent.\r\n\r\n##Usage\r\n```javascript\r\nvar throttle = require('throttled-stream')\r\n\r\n// open a normal stream\r\nvar stream = require('fs').createReadStream('./myFile')\r\n\r\n// get a throttled stream that runs at 64 KB/s or slower\r\nvar slowStream = throttle(stream, 64*1024)\r\n\r\nslowStream.on('data', function(chunk) {\r\n\t// ...\r\n})\r\n```\r\n\r\n##Methods\r\n###throttled-stream(stream, bytesPerSecond, [maxWaitTimeMs = 100])\r\nPipes the specified stream into a new throttled stream, allowing at most `bytesPerSecond` bytes per second through. `maxWaitTimeMs` allows you to specify the maximum amount of time, in milliseconds, that the stream will wait before trying to emit another `data` event if it receives more data than it can allow through at once.\r\n\r\n##Installation\r\n```\r\nnpm install throttled-stream\r\n```\r\n\r\n##License\r\nWTFPL\r\n","maintainers":[{"name":"tec27","email":"travis@tec27.com"}],"time":{"modified":"2012-06-18T02:57:05.970Z","created":"2012-06-18T02:57:04.848Z","0.0.1":"2012-06-18T02:57:05.970Z"},"author":{"name":"Travis Collins","email":"travis@tec27.com","url":"http://tec27.com/"},"repository":{"type":"git","url":"git://github.com/tec27/node-throttled-stream.git"},"_id":"throttled-stream","_rev":"1-95f2911c398b56c9628b4fca64ca4ce5"}ÿdocument-storeÿtaskmaster{"id":"taskmaster","rev":"1-46d292ed56a16cef0cea64228adb81fe","rev_tree":[{"pos":1,"ids":["46d292ed56a16cef0cea64228adb81fe",{"status":"available"},[]]}],"rev_map":{"1-46d292ed56a16cef0cea64228adb81fe":3379},"winningRev":"1-46d292ed56a16cef0cea64228adb81fe","deleted":false,"seq":3379}ÿby-sequenceÿ0000000000003379„"{"name":"taskmaster","description":"Taskmaster is a simple project task runner.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Christopher Joel","email":"chris@scriptolo.gy","url":"http://scriptolo.gy"},"name":"taskmaster","description":"Taskmaster is a simple project task runner.","version":"0.0.1","repository":{"url":""},"main":"index.js","bin":{"task":"./bin/task"},"engines":{"node":"~0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"cdata","email":"chris@cloudflare.com"},"_id":"taskmaster@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"4cf204323b4636a3c6ee73fb09014400b588ea51","tarball":"http://registry.npmjs.org/taskmaster/-/taskmaster-0.0.1.tgz"},"maintainers":[{"name":"cdata","email":"chris@cloudflare.com"}],"directories":{}},"0.0.2":{"author":{"name":"Christopher Joel","email":"chris@scriptolo.gy","url":"http://scriptolo.gy"},"name":"taskmaster","description":"Taskmaster is a simple project task runner.","version":"0.0.2","repository":{"url":""},"main":"index.js","bin":{"task":"./bin/task"},"engines":{"node":"~0.6.6"},"dependencies":{"colors":"~0.6.0","optimist":"~0.3.1","q":"~0.8.0"},"devDependencies":{},"_npmUser":{"name":"cdata","email":"chris@cloudflare.com"},"_id":"taskmaster@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"2747efdf5b648970e0a6ebaff748fe2c623ed7bc","tarball":"http://registry.npmjs.org/taskmaster/-/taskmaster-0.0.2.tgz"},"maintainers":[{"name":"cdata","email":"chris@cloudflare.com"}],"directories":{}},"0.0.3":{"author":{"name":"Christopher Joel","email":"chris@scriptolo.gy","url":"http://scriptolo.gy"},"name":"taskmaster","description":"Taskmaster is a simple project task runner.","version":"0.0.3","repository":{"url":""},"main":"index.js","bin":{"task":"./bin/task"},"engines":{"node":">=0.6.0"},"dependencies":{"colors":"~0.6.0","optimist":"~0.3.1","q":"~0.8.0"},"devDependencies":{},"_npmUser":{"name":"cdata","email":"chris@scriptolo.gy"},"_id":"taskmaster@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"b8ffd13e33f586518f42db82f406d0157f5b52ba","tarball":"http://registry.npmjs.org/taskmaster/-/taskmaster-0.0.3.tgz"},"maintainers":[{"name":"cdata","email":"chris@cloudflare.com"}]}},"readme":"# Taskmaster\n\nTaskmaster is a simple tool to enable sane, simple and asynchronous build / deploy tasks in NodeJS-heavy projects.\n\n## Installing\n\n npm install -g taskmaster\n\n## How does it work\n\nTasks are NodeJS modules that export a simple interface. Example:\n\n exports.usage = \"task greet \";\n\n exports.run = function(argv, result) {\n\n if(argv._[1]) {\n\n console.log(\"Hello, \" + argv._[1]);\n result.resolve();\n } else\n result.reject(\"Give me your name, task-master, and I shall give you mine.\");\n \n };\n\nTasks are located inside a \"tasks/\" directory within your project. When a user types the command \"task\" in your project directory, Taskmaster takes care of the boilerplate busy work related to informing the user about the universe of options:\n\n $ cd ./some/cool/project\n $ task\n task error You must specify a task to run.\n task log Available tasks:\n task log greeter\n task log To view usage for a task:\n task log task help \n\nA user can ask for usage related to a specific task:\n\n $ task help greeter\n task log greeter Usage:\n task log greeter task greet \n\n## Moving forward\n\nThis project is still young and naive, and there is much potential robustness to be explored in the exported interface of tasks. Please don't hesitate contact me with any requests or suggestions :)\n","maintainers":[{"name":"cdata","email":"chris@cloudflare.com"}],"time":{"modified":"2012-07-09T22:09:22.563Z","created":"2012-01-06T02:03:24.449Z","0.0.1":"2012-01-06T02:03:26.533Z","0.0.2":"2012-01-06T02:07:40.247Z","0.0.3":"2012-07-09T22:09:22.563Z"},"author":{"name":"Christopher Joel","email":"chris@scriptolo.gy","url":"http://scriptolo.gy"},"repository":{"url":""},"_id":"taskmaster","_rev":"1-46d292ed56a16cef0cea64228adb81fe"}$ÿdocument-storeÿtako-session-token¥{"id":"tako-session-token","rev":"1-a9d727b1334af16a04b1974fdc883ab3","rev_tree":[{"pos":1,"ids":["a9d727b1334af16a04b1974fdc883ab3",{"status":"available"},[]]}],"rev_map":{"1-a9d727b1334af16a04b1974fdc883ab3":3378},"winningRev":"1-a9d727b1334af16a04b1974fdc883ab3","deleted":false,"seq":3378}ÿby-sequenceÿ0000000000003378˜{"name":"tako-session-token","description":"session tokens for tako","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"tako-session-token","description":"session tokens for tako","version":"0.0.1","repository":{"type":"git","url":"git://github.com/isaacs/tako-session-token.git"},"main":"token.js","peerDependencies":{"tako":"~0.2.5","tako-cookies":"*"},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"tako-session-token@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.9-pre","_defaultsLoaded":true,"dist":{"shasum":"adbcd80167d79a636f47fc13b0613086d55482ea","tarball":"http://registry.npmjs.org/tako-session-token/-/tako-session-token-0.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}]},"0.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"tako-session-token","description":"session tokens for tako","version":"0.0.2","repository":{"type":"git","url":"git://github.com/isaacs/tako-session-token.git"},"main":"token.js","peerDependencies":{"tako":"~0.2.5","tako-cookies":"*"},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"tako-session-token@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.9-pre","_defaultsLoaded":true,"dist":{"shasum":"5e09064a3e784566b51b6e51acee64a80d43f6d8","tarball":"http://registry.npmjs.org/tako-session-token/-/tako-session-token-0.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}]}},"readme":"# tako-session-token\n\nJust a session token middleware for Tako. Works great with\n`tako-cookies`.\n\n## Usage\n\n```javascript\n// various tako stuff...\n\nvar SessionToken = require(\"tako-session-token\")\napp.middle(new SessionToken(\"my-happy-app\"))\n\n// later...\napp.route(\"/foo\", function (req, res) {\n console.log(req.session) // some random string.\n\n // the idea is that then that random string will\n // be a key in some sort of persistent session\n // store such as redis, or something.\n})\n```\n\n","maintainers":[{"name":"isaacs","email":"i@izs.me"}],"time":{"modified":"2012-04-20T19:47:35.990Z","created":"2012-04-20T18:11:35.847Z","0.0.1":"2012-04-20T18:11:37.169Z","0.0.2":"2012-04-20T19:47:35.990Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"type":"git","url":"git://github.com/isaacs/tako-session-token.git"},"_id":"tako-session-token","_rev":"1-a9d727b1334af16a04b1974fdc883ab3"}ÿdocument-storeÿsuki—{"id":"suki","rev":"1-ba0228cc3a48f822112d8c97bb60aaf3","rev_tree":[{"pos":1,"ids":["ba0228cc3a48f822112d8c97bb60aaf3",{"status":"available"},[]]}],"rev_map":{"1-ba0228cc3a48f822112d8c97bb60aaf3":3377},"winningRev":"1-ba0228cc3a48f822112d8c97bb60aaf3","deleted":false,"seq":3377}ÿby-sequenceÿ0000000000003377å {"name":"suki","description":"app developer's approach to MVC in a Javascript world","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"suki","preferGlobal":"true","version":"0.0.1","author":{"name":"Marc Fuehnen","email":"marc.fuehnen@gmail.com"},"description":"app developer's approach to MVC in a Javascript world","contributors":[{"name":"Marc Fuehnen","email":"marc.fuehnen@gmail.com"}],"bin":{"suki":"./src/sukicli"},"main":"./src/suki","repository":{"type":"git","url":"git://github.com/ezmilhouse/suki.js.git"},"keywords":["mvc","client","node","jquery"],"dependencies":{"ejs":"0.7.x","signals":"0.7.x","request":"2.9.x"},"noAnalyze":true,"devDependencies":{"chai":"1.1.x","request":"2.1.x"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"ezmilhouse","email":"marc.fuehnen@gmail.com"},"_id":"suki@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"21c108cfef849052f32dcf5f6751927a880f8473","tarball":"http://registry.npmjs.org/suki/-/suki-0.0.1.tgz"},"maintainers":[{"name":"ezmilhouse","email":"marc.fuehnen@gmail.com"}]}},"readme":"# suki.js\n","maintainers":[{"name":"ezmilhouse","email":"marc.fuehnen@gmail.com"}],"time":{"modified":"2012-08-02T13:44:32.779Z","created":"2012-07-24T10:56:17.000Z","0.0.1":"2012-07-24T10:56:18.852Z"},"author":{"name":"Marc Fuehnen","email":"marc.fuehnen@gmail.com"},"repository":{"type":"git","url":"git://github.com/ezmilhouse/suki.js.git"},"users":{"fgribreau":true},"_id":"suki","_rev":"1-ba0228cc3a48f822112d8c97bb60aaf3"}ÿdocument-storeÿstatelet›{"id":"statelet","rev":"1-ed559509efae92ac1c08b1483191a95f","rev_tree":[{"pos":1,"ids":["ed559509efae92ac1c08b1483191a95f",{"status":"available"},[]]}],"rev_map":{"1-ed559509efae92ac1c08b1483191a95f":3376},"winningRev":"1-ed559509efae92ac1c08b1483191a95f","deleted":false,"seq":3376}ÿby-sequenceÿ0000000000003376ž{"name":"statelet","description":"Little state objects","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"statelet","version":"0.3.0","author":{"name":"Josh Johnston","url":"@joshwnj"},"description":"Little state objects","contributors":[{"name":"Weston Ruter","url":"@westonruter"}],"repository":{"type":"git","url":"git://github.com/joshwnj/statelet.git"},"scripts":{"test":"node tests"},"_npmUser":{"name":"joshwnj","email":"josh@x-team.com"},"_id":"statelet@0.3.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0aa59e406826ca97a41cdb43456a15a0bebe186b","tarball":"http://registry.npmjs.org/statelet/-/statelet-0.3.0.tgz"},"maintainers":[{"name":"joshwnj","email":"josh@x-team.com"}]}},"readme":"# Statelet\n\n[![Build Status](https://secure.travis-ci.org/joshwnj/statelet.png)](http://travis-ci.org/joshwnj/statelet)\n\nSometimes we have a pattern like:\n\n```js\nif (is_ready) {\n // do the thing\n}\nelse {\n // put into a queue and execute when is_ready=true\n}\n```\n\nEvents make it better:\n\n```js\nemitter.on('ready', function () {\n // do the thing\n});\n```\n\nBut what if you start listening too late and you miss the event? You'll be waiting forever...\n\n`statelet` takes a different approach where instead of listening for events we're watching for changes in state:\n\n```js\nis_ready.when(true, function () {\n // do the thing\n});\n```\n\n## Combining States\n\nSometimes you want to know when multiple states align in a certain way.\n\n```js\nvar State = require('statelet');\n\nvar is_happy = new State();\nvar knows_it = new State();\nvar action = new State();\n\nfunction onChange () {\n var youre_happy = is_happy.get();\n var you_know_it = knows_it.get();\n \n if (youre_happy && you_know_it) {\n action.set('clap your hands');\n }\n}\nis_happy.watch(onChange);\nknows_it.watch(onChange);\n```\n\n## Where can I use it?\n\nWorks in both node.js and browser.\n\n## Install\n\n```\nnpm install statelet\n```\n\n## To do\n\n * make sure examples have decent cross-browser support\n * more examples\n\n## License\n\nMIT\n","maintainers":[{"name":"joshwnj","email":"josh@x-team.com"}],"time":{"modified":"2012-08-22T10:17:35.491Z","created":"2012-08-22T10:17:31.804Z","0.3.0":"2012-08-22T10:17:35.491Z"},"author":{"name":"Josh Johnston","url":"@joshwnj"},"repository":{"type":"git","url":"git://github.com/joshwnj/statelet.git"},"_id":"statelet","_rev":"1-ed559509efae92ac1c08b1483191a95f"}ÿdocument-storeÿstaque™{"id":"staque","rev":"1-f8ae1c05f5f15a6b479411e4c6355c5a","rev_tree":[{"pos":1,"ids":["f8ae1c05f5f15a6b479411e4c6355c5a",{"status":"available"},[]]}],"rev_map":{"1-f8ae1c05f5f15a6b479411e4c6355c5a":3375},"winningRev":"1-f8ae1c05f5f15a6b479411e4c6355c5a","deleted":false,"seq":3375}ÿby-sequenceÿ0000000000003375„({"name":"staque","description":"build multiple, on-the-fly synchronous job queues","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Kevin O'Hara","email":"kevinohara80@gmail.com","url":"http://kevinmohara.com"},"name":"staque","description":"build multiple, on-the-fly synchronous job queues","keywords":["queue","sync","job","queueing","async"],"version":"0.0.1","repository":{"type":"git","url":"git://github.com/kevinohara80/staque.git"},"main":"index.js","dependencies":{"async":"~0.1.22"},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"tap ./tests"},"license":{"type":"MIT","url":"https://raw.github.com/kevinohara80/staque/master/LICENSE"},"bugs":{"url":"http://github.com/kevinohara80/staque/issues"},"_npmUser":{"name":"kevinohara80","email":"kevinohara80@gmail.com"},"_id":"staque@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b851cb127465c24f1f6af3be4ad2500cc770e1aa","tarball":"http://registry.npmjs.org/staque/-/staque-0.0.1.tgz"},"maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Kevin O'Hara","email":"kevinohara80@gmail.com","url":"http://kevinmohara.com"},"name":"staque","description":"build multiple, on-the-fly synchronous job queues","keywords":["queue","sync","job","queueing","async"],"version":"0.0.2","repository":{"type":"git","url":"git://github.com/kevinohara80/staque.git"},"main":"index.js","dependencies":{"async":"~0.1.22"},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"tap ./tests"},"license":{"type":"MIT","url":"https://raw.github.com/kevinohara80/staque/master/LICENSE"},"bugs":{"url":"http://github.com/kevinohara80/staque/issues"},"_npmUser":{"name":"kevinohara80","email":"kevinohara80@gmail.com"},"_id":"staque@0.0.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0846dd11d8bdbec4984d58362fcdffb2ecf192e0","tarball":"http://registry.npmjs.org/staque/-/staque-0.0.2.tgz"},"maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}]},"0.0.3":{"author":{"name":"Kevin O'Hara","email":"kevinohara80@gmail.com","url":"http://kevinmohara.com"},"name":"staque","description":"build multiple, on-the-fly synchronous job queues","keywords":["queue","sync","job","queueing","async"],"version":"0.0.3","repository":{"type":"git","url":"git://github.com/kevinohara80/staque.git"},"main":"index.js","dependencies":{"async":"~0.1.22"},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"tap ./tests"},"license":{"type":"MIT","url":"https://raw.github.com/kevinohara80/staque/master/LICENSE"},"bugs":{"url":"http://github.com/kevinohara80/staque/issues"},"_npmUser":{"name":"kevinohara80","email":"kevinohara80@gmail.com"},"_id":"staque@0.0.3","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c0dc7013d46994ea417a0b20b37bb873d51ca4f3","tarball":"http://registry.npmjs.org/staque/-/staque-0.0.3.tgz"},"maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}]}},"readme":"staque\n======\n\nbuild multiple, on-the-fly synchronous job queues\n\n## Usage\n\n```bash\n$ npm install staque\n```\n\nCreate a new job queue and load a job.\n\n```js\nvar queue = staque.create({\n job: function(task, cb) { // <- required, the job to run\n console.log(task);\n cb(); \n }, \n delay: 100, // <- optional, sets a delay between sub-queue job execution\n concurrency: 0 // <- optional, number of concurrent jobs in each sub-queue\n});\n\nqueue.load('blah', function(err) {\n if(!err) console.log('queued a job');\n});\n\n```\n\n***staque*** also provides sub-queuing. This is useful if you are doing something like queueing jobs by client. Each sub-queue acts independently. To load a job into a sub-queue, just provide a sub-queue key.\n\nNote: Not providing a sub-queue just puts your job in a queue called `_default`.\n\n```js\nqueue.load('client1', 'foo', function(err) {\n if(!err) console.log('queued a job in a sub-queue');\n});\n\nqueue.load('bar', function(err) {\n if(!err) console.log('queued a job in the _default queue');\n});\n```\n\nYou can request the status of your queues with the `stat()` call. The call will return an array of the queues, current jobs, and other data.\n\n```js\nqueue.stat(function(err,stat) {\n if(!err) console.log(stat);\n});\n```\n\n\n\n","maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}],"time":{"modified":"2012-06-05T00:01:03.158Z","created":"2012-06-04T13:50:19.630Z","0.0.1":"2012-06-04T13:50:20.444Z","0.0.2":"2012-06-04T14:44:45.479Z","0.0.3":"2012-06-05T00:01:03.158Z"},"author":{"name":"Kevin O'Hara","email":"kevinohara80@gmail.com","url":"http://kevinmohara.com"},"repository":{"type":"git","url":"git://github.com/kevinohara80/staque.git"},"users":{"kevinohara80":true},"_id":"staque","_rev":"1-f8ae1c05f5f15a6b479411e4c6355c5a"}ÿdocument-storeÿstack-parserŸ{"id":"stack-parser","rev":"1-ad93cf236c40529d511e2cce9914187d","rev_tree":[{"pos":1,"ids":["ad93cf236c40529d511e2cce9914187d",{"status":"available"},[]]}],"rev_map":{"1-ad93cf236c40529d511e2cce9914187d":3374},"winningRev":"1-ad93cf236c40529d511e2cce9914187d","deleted":false,"seq":3374}ÿby-sequenceÿ0000000000003374‘{"name":"stack-parser","description":"Error stack parser.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"stack-parser","description":"Error stack parser.","keywords":[],"version":"0.0.1","author":{"name":"Ivan Zhidkov","email":"scaryzet@gmail.com"},"repository":{"type":"git","url":"git://github.com/scaryzet/node-stack-parser.git"},"main":"index.js","scripts":{"test":"node index.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"license":{"type":"MIT","url":"https://raw.github.com/scaryzet/node-stack-parser/master/LICENSE"},"_npmUser":{"name":"scaryzet","email":"scaryzet@gmail.com"},"_id":"stack-parser@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7d3b63a17887e9e2c2bf55dbd3318fe34a39d1e7","tarball":"http://registry.npmjs.org/stack-parser/-/stack-parser-0.0.1.tgz"},"maintainers":[{"name":"scaryzet","email":"scaryzet@gmail.com"}]}},"readme":"Error stack parser for node.js.\r\n\r\nInstallation\r\n------------\r\n\r\n```\r\nnpm install stack-parser\r\n```\r\n\r\nExample\r\n-------\r\n\r\n```javascript\r\nvar stackParser = require('stack-parser');\r\n\r\nvar items = stackParser.parse((new Error).stack);\r\n\r\nitems.forEach(function(item) {\r\n\tconsole.log(item.format());\r\n});\r\n\r\n// Use custom formatting.\r\n\r\nitems.forEach(function(item) {\r\n\tconsole.log(item.format('%what (%file, line: %line, column: %column)'));\r\n});\r\n\r\n// Use custom short formatting.\r\n\r\nitems.forEach(function(item) {\r\n\tconsole.log(item.format('%w (%f, line: %l, column: %c)'));\r\n});\r\n\r\n// Get a \"current stack\", synonym for \"stackParser.parse((new Error).stack);\".\r\n\r\nitems = stackParser.here();\r\n```\r\n\r\nLicense\r\n-------\r\nMIT\r\n","maintainers":[{"name":"scaryzet","email":"scaryzet@gmail.com"}],"time":{"modified":"2012-05-09T16:21:49.165Z","created":"2012-05-09T16:21:45.192Z","0.0.1":"2012-05-09T16:21:49.165Z"},"author":{"name":"Ivan Zhidkov","email":"scaryzet@gmail.com"},"repository":{"type":"git","url":"git://github.com/scaryzet/node-stack-parser.git"},"_id":"stack-parser","_rev":"1-ad93cf236c40529d511e2cce9914187d"}ÿdocument-storeÿssasyncš{"id":"ssasync","rev":"1-488cd18c4217c5d3484c8f6665b0fc2e","rev_tree":[{"pos":1,"ids":["488cd18c4217c5d3484c8f6665b0fc2e",{"status":"available"},[]]}],"rev_map":{"1-488cd18c4217c5d3484c8f6665b0fc2e":3373},"winningRev":"1-488cd18c4217c5d3484c8f6665b0fc2e","deleted":false,"seq":3373}ÿby-sequenceÿ0000000000003373‹{"name":"ssasync","description":"Asynchronous helpers for node.js","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"ssasync","version":"0.1.0","main":"async.js","directories":{"test":"test"},"repository":{"type":"git","url":"https://github.com/sydneystockholm/ssasync"},"keywords":["async","asynchronous","synchronous","parallel","sequential","throttle","memoize"],"devDependencies":{"redback":"*","mocha":"*"},"author":{"name":"Sydney Stockholm","email":"opensource@sydneystockholm.com"},"license":"MIT","description":"Asynchronous helpers for node.js","readme":"### ssasync\n\n```bash\n$ npm install ssasync\n```\n\n### Usage\n\nSee `async.js` for more information.\n\n### License (MIT)\n\nCopyright (c) 2012 Sydney Stockholm \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ssasync@0.1.0","dist":{"shasum":"76c1037555d98332bc51ead4132cbbd7aad0ddd5","tarball":"http://registry.npmjs.org/ssasync/-/ssasync-0.1.0.tgz"},"maintainers":[{"name":"cohara87","email":"cohara87@gmail.com"}]}},"readme":"### ssasync\n\n```bash\n$ npm install ssasync\n```\n\n### Usage\n\nSee `async.js` for more information.\n\n### License (MIT)\n\nCopyright (c) 2012 Sydney Stockholm \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"cohara87","email":"cohara87@gmail.com"}],"time":{"modified":"2012-08-02T13:44:34.489Z","created":"2012-07-24T04:36:13.321Z","0.1.0":"2012-07-24T04:36:16.967Z"},"author":{"name":"Sydney Stockholm","email":"opensource@sydneystockholm.com"},"repository":{"type":"git","url":"https://github.com/sydneystockholm/ssasync"},"users":{"fgribreau":true},"_id":"ssasync","_rev":"1-488cd18c4217c5d3484c8f6665b0fc2e"}ÿdocument-storeÿsqraperš{"id":"sqraper","rev":"1-221c8050420d273098b6dea6dbf877bd","rev_tree":[{"pos":1,"ids":["221c8050420d273098b6dea6dbf877bd",{"status":"available"},[]]}],"rev_map":{"1-221c8050420d273098b6dea6dbf877bd":3372},"winningRev":"1-221c8050420d273098b6dea6dbf877bd","deleted":false,"seq":3372}ÿby-sequenceÿ0000000000003372ÐB{"name":"sqraper","description":"Scraping web pages with jQueryü—·ù.","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping webpages with jQuery.","version":"0.0.1","homepage":"https://github.com/meso/sqraper","repository":{"url":"https://github.com/meso/sqraper.git"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.1","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"f109c841d34cd4d5d071bde35af451cf642ca5d8","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.1.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","version":"0.0.2","homepage":"https://github.com/meso/sqraper","repository":{"url":"https://github.com/meso/sqraper.git"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.1","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"aa9d873fb486ae6156043491b93e5aa6c2be242e","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.2.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}],"directories":{}},"0.0.3":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","version":"0.0.3","homepage":"https://github.com/meso/sqraper","repository":{"url":"https://github.com/meso/sqraper.git"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.1","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.3","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"834925db512aa350131107dbe346363afdb450af","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.3.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}]},"0.0.4":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","version":"0.0.4","homepage":"https://github.com/meso/sqraper","repository":{"url":"https://github.com/meso/sqraper.git"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.10","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.4","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"95e2d8e7019525eced5ef00e23610f0a3936e8d1","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.4.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}]},"0.0.5":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","keywords":["scraping","jQuery","jsdom","iconv","Shift_JIS","EUC-JP","ISO-2022-JP"],"version":"0.0.5","homepage":"https://github.com/meso/sqraper","repository":{"type":"git","url":"git://github.com/meso/sqraper.git"},"bugs":{"url":"https://github.com/meso/jqraper/issues"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.10","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{"mocha":"*","chai":"*","should":"*"},"scripts":{"test":"./node_modules/.bin/mocha -t 5000"},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b1139790fbc2abaa7d0f54c7b8498ce282397ce2","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.5.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}]},"0.0.6":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","keywords":["scraping","jQuery","jsdom","iconv","Shift_JIS","EUC-JP","ISO-2022-JP"],"version":"0.0.6","homepage":"https://github.com/meso/sqraper","repository":{"type":"git","url":"git://github.com/meso/sqraper.git"},"bugs":{"url":"https://github.com/meso/jqraper/issues"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.10","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{"mocha":"*","chai":"*"},"scripts":{"test":"./node_modules/.bin/mocha -t 5000"},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0118a6557a08d581d863b617ea25b36ff8bd9d04","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.6.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}]},"0.0.7":{"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"name":"sqraper","description":"Scraping web pages with jQuery.","keywords":["scraping","jQuery","jsdom","iconv","Shift_JIS","EUC-JP","ISO-2022-JP"],"version":"0.0.7","homepage":"https://github.com/meso/sqraper","repository":{"type":"git","url":"git://github.com/meso/sqraper.git"},"bugs":{"url":"https://github.com/meso/jqraper/issues"},"main":"./lib/sqraper","engines":{"node":">=0.4.x"},"dependencies":{"jsdom":"0.2.10","iconv":"1.1.3","buffertools":"1.0.7"},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"./node_modules/.bin/mocha"},"_npmUser":{"name":"meso","email":"shimizu.toshihiro@gmail.com"},"_id":"sqraper@0.0.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"291d567e8558fb2429cd647e5cbd567c869c21c8","tarball":"http://registry.npmjs.org/sqraper/-/sqraper-0.0.7.tgz"},"maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}]}},"readme":"# Sqraper\n\nScraping web pages with jQuery.\nSupported encodings are UTF-8, Shift_JIS, EUC-JP and ISO-2022-JP.\n\n# Installation\n\n $ npm install sqraper\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 Toshihiro Shimizu <shimizu.toshihiro@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"meso","email":"shimizu.toshihiro@gmail.com"}],"time":{"modified":"2012-03-21T11:18:43.795Z","created":"2012-02-22T09:34:29.568Z","0.0.1":"2012-02-22T09:34:32.584Z","0.0.2":"2012-02-22T13:57:29.971Z","0.0.3":"2012-02-22T14:17:10.921Z","0.0.4":"2012-02-23T05:47:05.174Z","0.0.5":"2012-02-23T10:59:02.248Z","0.0.6":"2012-03-08T02:33:33.756Z","0.0.7":"2012-03-21T11:18:43.795Z"},"author":{"name":"Toshihiro Shimizu","email":"shimizu.toshihiro@gmail.com"},"repository":{"type":"git","url":"git://github.com/meso/sqraper.git"},"_id":"sqraper","_rev":"1-221c8050420d273098b6dea6dbf877bd"}#ÿdocument-storeÿsourcemint-pm-npm¤{"id":"sourcemint-pm-npm","rev":"1-500189888cddb79321a090c5029df9a6","rev_tree":[{"pos":1,"ids":["500189888cddb79321a090c5029df9a6",{"status":"available"},[]]}],"rev_map":{"1-500189888cddb79321a090c5029df9a6":3371},"winningRev":"1-500189888cddb79321a090c5029df9a6","deleted":false,"seq":3371}ÿby-sequenceÿ0000000000003371Ôj{"name":"sourcemint-pm-npm","dist-tags":{"latest":"0.1.19"},"versions":{"0.1.1":{"name":"sourcemint-pm-npm","version":"0.1.1","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"d64fbcf1dd9eb580b5b6ab57de2684a5bd771548","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.1.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.2":{"name":"sourcemint-pm-npm","version":"0.1.2","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b378236db36bf392cdb1f264f965bb4bce41442a","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.2.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.3":{"name":"sourcemint-pm-npm","version":"0.1.3","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"bc4725f43a3654e14d39673e81948ba1a228e11c","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.3.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.4":{"name":"sourcemint-pm-npm","version":"0.1.4","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a686dc0e656a9d70b38bd9c39048fbeca7b125b5","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.4.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.5":{"name":"sourcemint-pm-npm","version":"0.1.5","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3d731d7ebfb42583bfcfa1762f91235ce158e68e","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.5.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.6":{"name":"sourcemint-pm-npm","version":"0.1.6","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"e963fc49525795d41ccc4da06b6d2f383513fffd","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.6.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.7":{"name":"sourcemint-pm-npm","version":"0.1.7","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.7","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9915f84b7a919b02cd8775d783e4461204fab5ff","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.7.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.8":{"name":"sourcemint-pm-npm","version":"0.1.8","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c7f5d972f199a58da8f765643adc4577266bc91b","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.8.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.9":{"name":"sourcemint-pm-npm","version":"0.1.9","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"084199e5a76734c5b7eb33d49155852f9a33ce86","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.9.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.10":{"name":"sourcemint-pm-npm","version":"0.1.10","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.10","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9d6adf5967c6094adc6e66595d3c6365b4f93921","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.10.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.11":{"name":"sourcemint-pm-npm","version":"0.1.11","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.11","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a84ea6ee4925a9b8c1a6d34905c9033d14717d33","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.11.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.12":{"name":"sourcemint-pm-npm","version":"0.1.12","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.12","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9add16522a429c0c91a5b833f110a29c95b2c2e4","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.12.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.13":{"name":"sourcemint-pm-npm","version":"0.1.13","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.13","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"bd1db9911b15ac4324edb390689128e26cbe8997","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.13.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.14":{"name":"sourcemint-pm-npm","version":"0.1.14","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.14","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"678e72b75dd5298d227f8c1f006191d005bbd238","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.14.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.15":{"name":"sourcemint-pm-npm","version":"0.1.15","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.15","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7dfb72f985531b7abe996ed275701ab982e6a9f2","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.15.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.16":{"name":"sourcemint-pm-npm","version":"0.1.16","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.16","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"eec246e03d69539913d4146b6a93898a138420c2","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.16.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.17":{"name":"sourcemint-pm-npm","version":"0.1.17","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.17","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"01a0830f61d09cce0158e275b988cb1ddf8d8143","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.17.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.18":{"name":"sourcemint-pm-npm","version":"0.1.18","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.18","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"ee10e029e4401dd4ef58c59e7b44aa7e5bb7686e","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.18.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.19":{"name":"sourcemint-pm-npm","version":"0.1.19","pm":"npm","dependencies":{"sourcemint-pm-sm":"0.1.x","sourcemint-pm-git":"0.1.x","semver":"1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-npm@0.1.19","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"073adec677b3caff73ed77bc19d1f96f11303fda","tarball":"http://registry.npmjs.org/sourcemint-pm-npm/-/sourcemint-pm-npm-0.1.19.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]}},"readme":"Sourcemint Package Manager plugin for NPM Packages\n==================================================\n\n*Status: ALPHA*\n\n * Copyright: 2012 [Christoph Dorn](http://www.christophdorn.com/)\n * Code License: [MIT License](http://www.opensource.org/licenses/mit-license.php)\n * Docs License: [Creative Commons Attribution-NonCommercial-ShareAlike 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/)\n * Sponsor: [Sourcemint](http://sourcemint.com/)\n * Mailing list: [groups.google.com/group/sourcemint](http://groups.google.com/group/sourcemint)\n\n\nTODO\n====\n\n * 'postprograminstall' script - https://github.com/isaacs/npm/issues/2354\n","maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}],"time":{"modified":"2012-08-22T00:01:16.345Z","created":"2012-04-26T01:56:23.263Z","0.1.1":"2012-04-26T01:56:24.767Z","0.1.2":"2012-04-26T02:43:23.173Z","0.1.3":"2012-04-26T02:45:29.258Z","0.1.4":"2012-04-26T05:06:32.640Z","0.1.5":"2012-04-26T07:13:15.670Z","0.1.6":"2012-04-27T05:37:01.299Z","0.1.7":"2012-04-27T06:00:02.260Z","0.1.8":"2012-04-27T19:27:35.566Z","0.1.9":"2012-04-27T21:30:52.792Z","0.1.10":"2012-04-28T04:57:00.811Z","0.1.11":"2012-04-29T03:26:32.991Z","0.1.12":"2012-04-29T08:18:45.428Z","0.1.13":"2012-04-30T08:19:36.893Z","0.1.14":"2012-04-30T20:12:47.155Z","0.1.15":"2012-05-02T02:02:24.157Z","0.1.16":"2012-05-08T05:37:51.206Z","0.1.17":"2012-08-15T22:44:47.443Z","0.1.18":"2012-08-18T04:41:56.462Z","0.1.19":"2012-08-22T00:01:16.345Z"},"_id":"sourcemint-pm-npm","_rev":"1-500189888cddb79321a090c5029df9a6"}#ÿdocument-storeÿsourcemint-pm-git¤{"id":"sourcemint-pm-git","rev":"1-f908cc06f0e85b5ed49740c76a2f7ce3","rev_tree":[{"pos":1,"ids":["f908cc06f0e85b5ed49740c76a2f7ce3",{"status":"available"},[]]}],"rev_map":{"1-f908cc06f0e85b5ed49740c76a2f7ce3":3370},"winningRev":"1-f908cc06f0e85b5ed49740c76a2f7ce3","deleted":false,"seq":3370}ÿby-sequenceÿ0000000000003370©x{"name":"sourcemint-pm-git","dist-tags":{"latest":"0.1.22"},"versions":{"0.1.1":{"name":"sourcemint-pm-git","version":"0.1.1","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0771a7c65bdf0fc719ad188bc7b0e0cf22fa1e57","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.1.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.2":{"name":"sourcemint-pm-git","version":"0.1.2","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8f61a63e2e831a152cec197eefa17a6271659192","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.2.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.3":{"name":"sourcemint-pm-git","version":"0.1.3","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"aaa16bd13728239ea185d275a435d2ef3508cfc7","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.3.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.4":{"name":"sourcemint-pm-git","version":"0.1.4","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"11a75975b08006b7b7cccb0ceb0704a8c133d044","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.4.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.5":{"name":"sourcemint-pm-git","version":"0.1.5","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"668ef66636bf94a7b958b486b83164acd887093a","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.5.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.6":{"name":"sourcemint-pm-git","version":"0.1.6","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f5402f38bc5298d28a89e3232a7e19f99c6b77a2","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.6.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.7":{"name":"sourcemint-pm-git","version":"0.1.7","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.7","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9336fd18f2594f419236a247dc809b42a13bc011","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.7.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.8":{"name":"sourcemint-pm-git","version":"0.1.8","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"73578669f4cb082bee2e3a0e18a41af9825a0b66","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.8.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.9":{"name":"sourcemint-pm-git","version":"0.1.9","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ca5717068a73e6d5340b3824af17aaac7ca6163e","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.9.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.10":{"name":"sourcemint-pm-git","version":"0.1.10","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.10","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"30d0038b724ee0b23b3652403cf8c08b2be31fdb","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.10.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.11":{"name":"sourcemint-pm-git","version":"0.1.11","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.11","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"bc26496cda25136ca8411fffb4e887183f5e1ce9","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.11.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.12":{"name":"sourcemint-pm-git","version":"0.1.12","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.12","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5b7c093b774779140e437be3b76be79c16ec6e43","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.12.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.13":{"name":"sourcemint-pm-git","version":"0.1.13","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.13","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"90c1e12d1595c3323ae73f3a5a40148661840e12","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.13.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.14":{"name":"sourcemint-pm-git","version":"0.1.14","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.14","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6ea625685147ba56ca30c2cc59d0c3c98a7e8fb5","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.14.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.15":{"name":"sourcemint-pm-git","version":"0.1.15","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.15","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0a0ee128566ff9e4c7cd8618c0cf36141bcb8803","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.15.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.16":{"name":"sourcemint-pm-git","version":"0.1.16","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.16","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"879fa7fd6db65e987db15802538608b42577137b","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-ªÇ‚ù0.1.16.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.17":{"name":"sourcemint-pm-git","version":"0.1.17","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.17","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"80be539d2b54cfb9595aff3233d5480c203fc1fe","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.17.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.18":{"name":"sourcemint-pm-git","version":"0.1.18","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.18","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"adbdf742ee8de03df1e767eabaac1d4debe9cdea","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.18.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.19":{"name":"sourcemint-pm-git","version":"0.1.19","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.19","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"adb5ea794c548db2b886e760dad5c7a793addc3d","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.19.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.20":{"name":"sourcemint-pm-git","version":"0.1.20","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.20","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"77cf5449259d5fc69fc6fbd30002e967fa39d8c0","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.20.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.21":{"name":"sourcemint-pm-git","version":"0.1.21","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x","sourcemint-pinf-js":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.21","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"27fdf0df2249b375ae284ba8ae2280429557ebba","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.21.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.22":{"name":"sourcemint-pm-git","version":"0.1.22","pm":"npm","dependencies":{"sourcemint-util-js":"0.1.x","sourcemint-pm-sm":"0.1.x","sourcemint-pinf-js":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-pm-git@0.1.22","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"5ad1aaae9ef195994bdc8740b88f12cd8e5a2e00","tarball":"http://registry.npmjs.org/sourcemint-pm-git/-/sourcemint-pm-git-0.1.22.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]}},"readme":"Sourcemint Package Manager plugin for GIT Repositories\n======================================================\n\n*Status: ALPHA*\n\n * Copyright: 2012 [Christoph Dorn](http://www.christophdorn.com/)\n * Code License: [MIT License](http://www.opensource.org/licenses/mit-license.php)\n * Docs License: [Creative Commons Attribution-NonCommercial-ShareAlike 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/)\n * Sponsor: [Sourcemint](http://sourcemint.com/)\n * Mailing list: [groups.google.com/group/sourcemint](http://groups.google.com/group/sourcemint)\n","maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}],"time":{"modified":"2012-08-21T23:23:00.210Z","created":"2012-04-26T01:58:23.986Z","0.1.1":"2012-04-26T01:58:26.460Z","0.1.2":"2012-04-26T07:12:32.041Z","0.1.3":"2012-04-27T05:35:51.512Z","0.1.4":"2012-04-27T05:36:12.126Z","0.1.5":"2012-04-27T05:46:46.376Z","0.1.6":"2012-04-27T06:24:08.790Z","0.1.7":"2012-04-27T06:29:26.585Z","0.1.8":"2012-04-27T06:33:27.266Z","0.1.9":"2012-04-27T19:27:30.636Z","0.1.10":"2012-04-27T21:30:46.820Z","0.1.11":"2012-04-29T03:26:24.988Z","0.1.12":"2012-04-29T08:18:37.877Z","0.1.13":"2012-04-29T17:59:19.204Z","0.1.14":"2012-04-30T02:59:04.913Z","0.1.15":"2012-04-30T06:11:13.069Z","0.1.16":"2012-04-30T20:12:57.062Z","0.1.17":"2012-04-30T20:54:50.099Z","0.1.18":"2012-05-02T02:02:34.881Z","0.1.19":"2012-05-08T05:37:59.452Z","0.1.20":"2012-05-09T23:00:08.396Z","0.1.21":"2012-08-15T22:44:25.429Z","0.1.22":"2012-08-21T23:23:00.210Z"},"_id":"sourcemint-pm-git","_rev":"1-f908cc06f0e85b5ed49740c76a2f7ce3"}ÿdocument-storeÿsmite˜{"id":"smite","rev":"1-05219bf4d4c41f412fe22dbdd1d67941","rev_tree":[{"pos":1,"ids":["05219bf4d4c41f412fe22dbdd1d67941",{"status":"available"},[]]}],"rev_map":{"1-05219bf4d4c41f412fe22dbdd1d67941":3369},"winningRev":"1-05219bf4d4c41f412fe22dbdd1d67941","deleted":false,"seq":3369}ÿby-sequenceÿ0000000000003369ð{"name":"smite","description":"Web development with a hammer.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"smite","description":"Web development with a hammer.","homepage":"http://github.com/evanmoran/smite/","keywords":["web","framework","express","connect-assets","backbone","coffee","server"],"author":{"name":"Evan Moran","email":"evan@evanmoran.com"},"dependencies":{"coffee-script":"1.3.1","underscore":"1.3.3","backbone":"0.9.2","browserify":"1.10.16","express":"2.5.8","coffeecup":"0.3.5-3","stylus":"0.27.0","nib":"0.4.1","socket.io":"0.9.6"},"repository":{"type":"git","url":"git://github.com/evanmoran/smite.git"},"main":"src/smite.coffee","version":"0.0.1","_npmUser":{"name":"evanmoran","email":"evan@evanmoran.com"},"_id":"smite@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"c054afdedb64fd197f9ce9d4222940a87cf2a7d3","tarball":"http://registry.npmjs.org/smite/-/smite-0.0.1.tgz"},"maintainers":[{"name":"evanmoran","email":"evan@evanmoran.com"}]},"0.0.2":{"name":"smite","version":"0.0.2","main":"src/smite.coffee","description":"Web development with a hammer.","homepage":"http://github.com/evanmoran/smite/","keywords":["web","framework","express","connect-assets","backbone","coffee","server"],"author":{"name":"Evan Moran","email":"evan@evanmoran.com"},"dependencies":{"coffee-script":"1.3.1","underscore":"1.3.3","backbone":"0.9.2","browserify":"1.10.16","express":"2.5.8","connect":"~2.3.0","coffeecup":"0.3.5-3","stylus":"0.27.0","nib":"0.4.1","socket.io":"0.9.6"},"repository":{"type":"git","url":"git://github.com/evanmoran/smite.git"},"_npmUser":{"name":"evanmoran","email":"evan@evanmoran.com"},"_id":"smite@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3abae68234c62dd6c0dc0cb313f618a6700052ce","tarball":"http://registry.npmjs.org/smite/-/smite-0.0.2.tgz"},"maintainers":[{"name":"evanmoran","email":"evan@evanmoran.com"}]}},"readme":" _______ _______ _______ _______ _______\n | __| | |_ _|_ _| ___|\n |__ | |_| |_ | | | ___|\n |_______|__|_|__|_______| |___| |_______|\n\nWeb development with a hammer.\n","maintainers":[{"name":"evanmoran","email":"evan@evanmoran.com"}],"time":{"modified":"2012-06-04T19:41:29.636Z","created":"2012-06-04T18:59:49.201Z","0.0.1":"2012-06-04T18:59:50.440Z","0.0.2":"2012-06-04T19:41:29.636Z"},"author":{"name":"Evan Moran","email":"evan@evanmoran.com"},"repository":{"type":"git","url":"git://github.com/evanmoran/smite.git"},"_id":"smite","_rev":"1-05219bf4d4c41f412fe22dbdd1d67941"}ÿdocument-storeÿsloth˜{"id":"sloth","rev":"1-a74ec97fc58b79e0df4db53b023eece1","rev_tree":[{"pos":1,"ids":["a74ec97fc58b79e0df4db53b023eece1",{"status":"available"},[]]}],"rev_map":{"1-a74ec97fc58b79e0df4db53b023eece1":3368},"winningRev":"1-a74ec97fc58b79e0df4db53b023eece1","deleted":false,"seq":3368}ÿby-sequenceÿ0000000000003368÷À{"name":"sloth","description":"A lazy iterator framework for JavaScript.","dist-tags":{"latest":"0.5.1"},"versions":{"0.0.1":{"name":"sloth","version":"0.0.1","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n","_id":"sloth@0.0.1","dist":{"shasum":"0b73231784286213a57da6459000d01b4000fff3","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.0.1.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.2.0":{"name":"sloth","version":"0.2.0","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n## Example\n\nAssume we want to find the average price of all vegetables in the following\narray:\n\n > var foods = [\n { name: \"cucumber\", type: \"vegetable\", price: 2.40 },\n { name: \"apple\", type: \"fruit\", price: 1.00 },\n { name: \"potato\", type: \"vegetable\", price: 3.40 },\n { name: \"chocolate\",type: \"delicious\", price: 5.00 },\n ];\n\n > var stats = sloth.ify(foods).\n ... filter(function(x) { return x.type === \"vegetable\"; }).\n ... map(function(x) { return x.price; }).\n ... foldl(function(acc, x) {\n ... return {\n ... total: acc.total + x,\n ... count: acc.count + 1\n ... };\n ... }, {\n ... total: 0,\n ... count: 0\n ... });\n\n > stats.total / stats.count\n 2.9\n\nAnd presto, done!\n\n## Performance\n\nDespite its name, `sloth.js` isn't (usually) that slow! On most common\nbrowsers, it performs on par with Underscore.js for most functions.\n\nBelow are some of the benchmarks on a variety of browsers.\n\n![Chrome 20.0.1132.43 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Chrome%2020.0.1132.43%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:17359,18862,19144,17389,19472,10060,301,96,98,24,77,25,2759,5230,15218,10334,6353,9904&chds=0,19472&chxt=x&chxl=0:|0|19.5K&chsp=0,1&chm=tunderscore.each%28%29%2817.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%2818.9K%29,000000,0,1,10|tunderscore.reduce%28%29%2819.1K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2817.4K%29,000000,0,3,10|tunderscore.reduceRight%28%29%2819.5K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%2810.1K%29,000000,0,5,10|tunderscore.uniq%28%29%28301%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2896%29,000000,0,7,10|tunderscore.intersection%28%29%2898%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2824%29,000000,0,9,10|tunderscore.union%28%29%2877%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2825%29,000000,0,11,10|tunderscore.zip%28%29%282.8K%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%285.2K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%2815.2K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%2810.3K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%286.4K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%289.9K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Firefox 13.0.1 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Firefox%2013.0.1%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:5947,5858,6306,10668,6353,6169,163,73,53,18,42,18,739,3804,4785,6615,1880,6259&chds=0,10668&chxt=x&chxl=0:|0|10.7K&chsp=0,1&chm=tunderscore.each%28%29%285.9K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%285.9K%29,000000,0,1,10|tunderscore.reduce%28%29%286.3K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2810.7K%29,000000,0,3,10|tunderscore.reduceRight%28%29%286.4K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%286.2K%29,000000,0,5,10|tunderscore.uniq%28%29%28163%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2853%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2842%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28739%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%283.8K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.8K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%286.6K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.9K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%286.3K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Opera 9.80 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Opera%209.80%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:6366,2407,5751,2541,5637,1427,84,73,28,18,21,18,723,1994,4641,2170,1819,2687&chds=0,6366&chxt=x&chxl=0:|0|6.4K&chsp=0,1&chm=tunderscore.each%28%29%286.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%282.4K%29,000000,0,1,10|tunderscore.reduce%28%29%285.8K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%282.5K%29,000000,0,3,10|tunderscore.reduceRight%28%29%285.6K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%281.4K%29,000000,0,5,10|tunderscore.uniq%28%29%2884%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2828%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2821%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28723%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%282K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.6K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%282.2K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.8K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%282.7K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![MSIE 8.0 on Windows NT](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28MSIE%208.0%20on%20Windows%20NT%29&chts=000000,10&cht=bhg&chd=t:467,483,380,489,367,266,1,3,0,1,0,1,60,144,373,270,130,263&chds=0,489&chxt=x&chxl=0:|0|489&chsp=0,1&chm=tunderscore.each%28%29%28467%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%28483%29,000000,0,1,10|tunderscore.reduce%28%29%28380%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%28489%29,000000,0,3,10|tunderscore.reduceRight%28%29%28367%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%28266%29,000000,0,5,10|tunderscore.uniq%28%29%281%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%283%29,000000,0,7,10|tunderscore.intersection%28%29%280%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%281%29,000000,0,9,10|tunderscore.union%28%29%280%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%281%29,000000,0,11,10|tunderscore.zip%28%29%2860%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%28144%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%28373%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%28270%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%28130%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%28263%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n\n","_id":"sloth@0.2.0","dist":{"shasum":"73dfd0f9a0055285401673fd628b112f5a56985e","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.2.0.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.3.0":{"name":"sloth","version":"0.3.0","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n## Example\n\nAssume we want to find the average price of all vegetables in the following\narray:\n\n > var foods = [\n { name: \"cucumber\", type: \"vegetable\", price: 2.40 },\n { name: \"apple\", type: \"fruit\", price: 1.00 },\n { name: \"potato\", type: \"vegetable\", price: 3.40 },\n { name: \"chocolate\",type: \"delicious\", price: 5.00 },\n ];\n\n > var stats = sloth.ify(foods).\n ... filter(function(x) { return x.type === \"vegetable\"; }).\n ... map(function(x) { return x.price; }).\n ... foldl(function(acc, x) {\n ... return {\n ... total: acc.total + x,\n ... count: acc.count + 1\n ... };\n ... }, {\n ... total: 0,\n ... count: 0\n ... });\n\n > stats.total / stats.count\n 2.9\n\nAnd presto, done!\n\n## Performance\n\nDespite its name, `sloth.js` isn't (usually) that slow! On most common\nbrowsers, it performs on par with Underscore.js for most functions.\n\nBelow are some of the benchmarks on a variety of browsers.\n\n![Chrome 20.0.1132.43 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Chrome%2020.0.1132.43%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:17359,18862,19144,17389,19472,10060,301,96,98,24,77,25,2759,5230,15218,10334,6353,9904&chds=0,19472&chxt=x&chxl=0:|0|19.5K&chsp=0,1&chm=tunderscore.each%28%29%2817.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%2818.9K%29,000000,0,1,10|tunderscore.reduce%28%29%2819.1K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2817.4K%29,000000,0,3,10|tunderscore.reduceRight%28%29%2819.5K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%2810.1K%29,000000,0,5,10|tunderscore.uniq%28%29%28301%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2896%29,000000,0,7,10|tunderscore.intersection%28%29%2898%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2824%29,000000,0,9,10|tunderscore.union%28%29%2877%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2825%29,000000,0,11,10|tunderscore.zip%28%29%282.8K%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%285.2K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%2815.2K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%2810.3K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%286.4K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%289.9K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Firefox 13.0.1 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Firefox%2013.0.1%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:5947,5858,6306,10668,6353,6169,163,73,53,18,42,18,739,3804,4785,6615,1880,6259&chds=0,10668&chxt=x&chxl=0:|0|10.7K&chsp=0,1&chm=tunderscore.each%28%29%285.9K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%285.9K%29,000000,0,1,10|tunderscore.reduce%28%29%286.3K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2810.7K%29,000000,0,3,10|tunderscore.reduceRight%28%29%286.4K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%286.2K%29,000000,0,5,10|tunderscore.uniq%28%29%28163%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2853%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2842%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28739%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%283.8K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.8K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%286.6K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.9K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%286.3K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Opera 9.80 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Opera%209.80%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:6366,2407,5751,2541,5637,1427,84,73,28,18,21,18,723,1994,4641,2170,1819,2687&chds=0,6366&chxt=x&chxl=0:|0|6.4K&chsp=0,1&chm=tunderscore.each%28%29%286.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%282.4K%29,000000,0,1,10|tunderscore.reduce%28%29%285.8K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%282.5K%29,000000,0,3,10|tunderscore.reduceRight%28%29%285.6K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%281.4K%29,000000,0,5,10|tunderscore.uniq%28%29%2884%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2828%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2821%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28723%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%282K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.6K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%282.2K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.8K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%282.7K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![MSIE 8.0 on Windows NT](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28MSIE%208.0%20on%20Windows%20NT%29&chts=000000,10&cht=bhg&chd=t:467,483,380,489,367,266,1,3,0,1,0,1,60,144,373,270,130,263&chds=0,489&chxt=x&chxl=0:|0|489&chsp=0,1&chm=tunderscore.each%28%29%28467%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%28483%29,000000,0,1,10|tunderscore.reduce%28%29%28380%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%28489%29,000000,0,3,10|tunderscore.reduceRight%28%29%28367%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%28266%29,000000,0,5,10|tunderscore.uniq%28%29%281%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%283%29,000000,0,7,10|tunderscore.intersection%28%29%280%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%281%29,000000,0,9,10|tunderscore.union%28%29%280%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%281%29,000000,0,11,10|tunderscore.zip%28%29%2860%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%28144%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%28373%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%28270%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%28130%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%28263%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n\n","_id":"sloth@0.3.0","dist":{"shasum":"f1fb8024be75a052ffc5b8ff9296a6c1af5dadd5","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.3.0.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.4.0":{"name":"sloth","version":"0.4.0","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n## Example\n\nAssume we want to find the average price of all vegetables in the following\narray:\n\n > var foods = [\n { name: \"cucumber\", type: \"vegetable\", price: 2.40 },\n { name: \"apple\", type: \"fruit\", price: 1.00 },\n { name: \"potato\", type: \"vegetable\", price: 3.40 },\n { name: \"chocolate\",type: \"delicious\", price: 5.00 },\n ];\n\n > var stats = sloth.ify(foods).\n ... filter(function(x) { return x.type === \"vegetable\"; }).\n ... map(function(x) { return x.price; }).\n ... foldl(function(acc, x) {\n ... return {\n ... total: acc.total + x,\n ... count: acc.count + 1\n ... };\n ... }, {\n ... total: 0,\n ... count: 0\n ... });\n\n > stats.total / stats.count\n 2.9\n\nAnd presto, done!\n\n## Performance\n\nDespite its name, `sloth.js` isn't (usually) that slow! On most common\nbrowsers, it performs on par with Underscore.js for most functions.\n\nBelow are some of the benchmarks on a variety of browsers.\n\n![Chrome 20.0.1132.43 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Chrome%2020.0.1132.43%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:17359,18862,19144,17389,19472,10060,301,96,98,24,77,25,2759,5230,15218,10334,6353,9904&chds=0,19472&chxt=x&chxl=0:|0|19.5K&chsp=0,1&chm=tunderscore.each%28%29%2817.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%2818.9K%29,000000,0,1,10|tunderscore.reduce%28%29%2819.1K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2817.4K%29,000000,0,3,10|tunderscore.reduceRight%28%29%2819.5K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%2810.1K%29,000000,0,5,10|tunderscore.uniq%28%29%28301%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2896%29,000000,0,7,10|tunderscore.intersection%28%29%2898%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2824%29,000000,0,9,10|tunderscore.union%28%29%2877%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2825%29,000000,0,11,10|tunderscore.zip%28%29%282.8K%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%285.2K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%2815.2K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%2810.3K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%286.4K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%289.9K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Firefox 13.0.1 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Firefox%2013.0.1%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:5947,5858,6306,10668,6353,6169,163,73,53,18,42,18,739,3804,4785,6615,1880,6259&chds=0,10668&chxt=x&chxl=0:|0|10.7K&chsp=0,1&chm=tunderscore.each%28%29%285.9K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%285.9K%29,000000,0,1,10|tunderscore.reduce%28%29%286.3K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2810.7K%29,000000,0,3,10|tunderscore.reduceRight%28%29%286.4K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%286.2K%29,000000,0,5,10|tunderscore.uniq%28%29%28163%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2853%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2842%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28739%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%283.8K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.8K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%286.6K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.9K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%286.3K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Opera 9.80 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Opera%209.80%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:6366,2407,5751,2541,5637,1427,84,73,28,18,21,18,723,1994,4641,2170,1819,2687&chds=0,6366&chxt=x&chxl=0:|0|6.4K&chsp=0,1&chm=tunderscore.each%28%29%286.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%282.4K%29,000000,0,1,10|tunderscore.reduce%28%29%285.8K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%282.5K%29,000000,0,3,10|tunderscore.reduceRight%28%29%285.6K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%281.4K%29,000000,0,5,10|tunderscore.uniq%28%29%2884%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2828%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2821%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28723%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%282K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.6K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%282.2K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.8K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%282.7K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![MSIE 8.0 on Windows NT](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28MSIE%208.0%20on%20Windows%20NT%29&chts=000000,10&cht=bhg&chd=t:467,483,380,489,367,266,1,3,0,1,0,1,60,144,373,270,130,263&chds=0,489&chxt=x&chxl=0:|0|489&chsp=0,1&chm=tunderscore.each%28%29%28467%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%28483%29,000000,0,1,10|tunderscore.reduce%28%29%28380%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%28489%29,000000,0,3,10|tunderscore.reduceRight%28%29%28367%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%28266%29,000000,0,5,10|tunderscore.uniq%28%29%281%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%283%29,000000,0,7,10|tunderscore.intersection%28%29%280%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%281%29,000000,0,9,10|tunderscore.union%28%29%280%29,000000,0,10,10|tsloth.ify%28%29.un8 Æåùion%28%29%281%29,000000,0,11,10|tunderscore.zip%28%29%2860%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%28144%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%28373%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%28270%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%28130%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%28263%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n\n","_id":"sloth@0.4.0","dist":{"shasum":"9dc4d49cec6830eec906d7d004bb53af84d1ef44","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.4.0.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.5.0":{"name":"sloth","version":"0.5.0","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n## Example\n\nAssume we want to find the average price of all vegetables in the following\narray:\n\n > var foods = [\n { name: \"cucumber\", type: \"vegetable\", price: 2.40 },\n { name: \"apple\", type: \"fruit\", price: 1.00 },\n { name: \"potato\", type: \"vegetable\", price: 3.40 },\n { name: \"chocolate\",type: \"delicious\", price: 5.00 },\n ];\n\n > var stats = sloth.ify(foods).\n ... filter(function(x) { return x.type === \"vegetable\"; }).\n ... map(function(x) { return x.price; }).\n ... foldl(function(acc, x) {\n ... return {\n ... total: acc.total + x,\n ... count: acc.count + 1\n ... };\n ... }, {\n ... total: 0,\n ... count: 0\n ... });\n\n > stats.total / stats.count\n 2.9\n\nAnd presto, done!\n\n## Performance\n\nDespite its name, `sloth.js` isn't (usually) that slow! On most common\nbrowsers, it performs on par with Underscore.js for most functions.\n\nBelow are some of the benchmarks on a variety of browsers.\n\n![Chrome 20.0.1132.43 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Chrome%2020.0.1132.43%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:17359,18862,19144,17389,19472,10060,301,96,98,24,77,25,2759,5230,15218,10334,6353,9904&chds=0,19472&chxt=x&chxl=0:|0|19.5K&chsp=0,1&chm=tunderscore.each%28%29%2817.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%2818.9K%29,000000,0,1,10|tunderscore.reduce%28%29%2819.1K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2817.4K%29,000000,0,3,10|tunderscore.reduceRight%28%29%2819.5K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%2810.1K%29,000000,0,5,10|tunderscore.uniq%28%29%28301%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2896%29,000000,0,7,10|tunderscore.intersection%28%29%2898%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2824%29,000000,0,9,10|tunderscore.union%28%29%2877%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2825%29,000000,0,11,10|tunderscore.zip%28%29%282.8K%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%285.2K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%2815.2K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%2810.3K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%286.4K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%289.9K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Firefox 13.0.1 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Firefox%2013.0.1%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:5947,5858,6306,10668,6353,6169,163,73,53,18,42,18,739,3804,4785,6615,1880,6259&chds=0,10668&chxt=x&chxl=0:|0|10.7K&chsp=0,1&chm=tunderscore.each%28%29%285.9K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%285.9K%29,000000,0,1,10|tunderscore.reduce%28%29%286.3K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2810.7K%29,000000,0,3,10|tunderscore.reduceRight%28%29%286.4K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%286.2K%29,000000,0,5,10|tunderscore.uniq%28%29%28163%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2853%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2842%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28739%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%283.8K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.8K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%286.6K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.9K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%286.3K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Opera 9.80 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Opera%209.80%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:6366,2407,5751,2541,5637,1427,84,73,28,18,21,18,723,1994,4641,2170,1819,2687&chds=0,6366&chxt=x&chxl=0:|0|6.4K&chsp=0,1&chm=tunderscore.each%28%29%286.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%282.4K%29,000000,0,1,10|tunderscore.reduce%28%29%285.8K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%282.5K%29,000000,0,3,10|tunderscore.reduceRight%28%29%285.6K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%281.4K%29,000000,0,5,10|tunderscore.uniq%28%29%2884%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2828%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2821%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28723%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%282K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.6K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%282.2K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.8K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%282.7K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![MSIE 8.0 on Windows NT](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28MSIE%208.0%20on%20Windows%20NT%29&chts=000000,10&cht=bhg&chd=t:467,483,380,489,367,266,1,3,0,1,0,1,60,144,373,270,130,263&chds=0,489&chxt=x&chxl=0:|0|489&chsp=0,1&chm=tunderscore.each%28%29%28467%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%28483%29,000000,0,1,10|tunderscore.reduce%28%29%28380%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%28489%29,000000,0,3,10|tunderscore.reduceRight%28%29%28367%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%28266%29,000000,0,5,10|tunderscore.uniq%28%29%281%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%283%29,000000,0,7,10|tunderscore.intersection%28%29%280%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%281%29,000000,0,9,10|tunderscore.union%28%29%280%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%281%29,000000,0,11,10|tunderscore.zip%28%29%2860%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%28144%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%28373%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%28270%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%28130%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%28263%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n\n","_id":"sloth@0.5.0","dist":{"shasum":"16a8fde3ccb038a7c72777b2627c45e0e7853c4e","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.5.0.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.5.1":{"name":"sloth","version":"0.5.1","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A lazy iterator framework for JavaScript.","main":"./sloth","repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"devDependencies":{"nodeunit":"0.7.x","docco":"x.x.x"},"license":"MIT","readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n## Example\n\nAssume we want to find the average price of all vegetables in the following\narray:\n\n > var foods = [\n { name: \"cucumber\", type: \"vegetable\", price: 2.40 },\n { name: \"apple\", type: \"fruit\", price: 1.00 },\n { name: \"potato\", type: \"vegetable\", price: 3.40 },\n { name: \"chocolate\",type: \"delicious\", price: 5.00 },\n ];\n\n > var stats = sloth.ify(foods).\n ... filter(function(x) { return x.type === \"vegetable\"; }).\n ... map(function(x) { return x.price; }).\n ... foldl(function(acc, x) {\n ... return {\n ... total: acc.total + x,\n ... count: acc.count + 1\n ... };\n ... }, {\n ... total: 0,\n ... count: 0\n ... });\n\n > stats.total / stats.count\n 2.9\n\nAnd presto, done!\n\n## Performance\n\nDespite its name, `sloth.js` isn't (usually) that slow! On most common\nbrowsers, it performs on par with Underscore.js for most functions.\n\nBelow are some of the benchmarks on a variety of browsers.\n\n![Chrome 20.0.1132.43 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Chrome%2020.0.1132.43%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:17359,18862,19144,17389,19472,10060,301,96,98,24,77,25,2759,5230,15218,10334,6353,9904&chds=0,19472&chxt=x&chxl=0:|0|19.5K&chsp=0,1&chm=tunderscore.each%28%29%2817.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%2818.9K%29,000000,0,1,10|tunderscore.reduce%28%29%2819.1K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2817.4K%29,000000,0,3,10|tunderscore.reduceRight%28%29%2819.5K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%2810.1K%29,000000,0,5,10|tunderscore.uniq%28%29%28301%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2896%29,000000,0,7,10|tunderscore.intersection%28%29%2898%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2824%29,000000,0,9,10|tunderscore.union%28%29%2877%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2825%29,000000,0,11,10|tunderscore.zip%28%29%282.8K%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%285.2K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%2815.2K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%2810.3K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%286.4K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%289.9K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Firefox 13.0.1 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Firefox%2013.0.1%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:5947,5858,6306,10668,6353,6169,163,73,53,18,42,18,739,3804,4785,6615,1880,6259&chds=0,10668&chxt=x&chxl=0:|0|10.7K&chsp=0,1&chm=tunderscore.each%28%29%285.9K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%285.9K%29,000000,0,1,10|tunderscore.reduce%28%29%286.3K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%2810.7K%29,000000,0,3,10|tunderscore.reduceRight%28%29%286.4K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%286.2K%29,000000,0,5,10|tunderscore.uniq%28%29%28163%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2853%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2842%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28739%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%283.8K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.8K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%286.6K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.9K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%286.3K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![Opera 9.80 on Linux x86_64](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28Opera%209.80%20on%20Linux%20x86_64%29&chts=000000,10&cht=bhg&chd=t:6366,2407,5751,2541,5637,1427,84,73,28,18,21,18,723,1994,4641,2170,1819,2687&chds=0,6366&chxt=x&chxl=0:|0|6.4K&chsp=0,1&chm=tunderscore.each%28%29%286.4K%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%282.4K%29,000000,0,1,10|tunderscore.reduce%28%29%285.8K%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%282.5K%29,000000,0,3,10|tunderscore.reduceRight%28%29%285.6K%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%281.4K%29,000000,0,5,10|tunderscore.uniq%28%29%2884%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%2873%29,000000,0,7,10|tunderscore.intersection%28%29%2828%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%2818%29,000000,0,9,10|tunderscore.union%28%29%2821%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%2818%29,000000,0,11,10|tunderscore.zip%28%29%28723%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%282K%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%284.6K%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%282.2K%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%281.8K%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%282.7K%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n![MSIE 8.0 on Windows NT](http://chart.apis.google.com/chart?chtt=sloth.js%20Test%20Suite%7COps/sec%20%28MSIE%208.0%20on%20Windows%20NT%29&chts=000000,10&cht=bhg&chd=t:467,483,380,489,367,266,1,3,0,1,0,1,60,144,373,270,130,263&chds=0,489&chxt=x&chxl=0:|0|489&chsp=0,1&chm=tunderscore.each%28%29%28467%29,000000,0,0,10|tsloth.ify%28%29.each%28%29%28483%29,000000,0,1,10|tunderscore.reduce%28%29%28380%29,000000,0,2,10|tsloth.ify%28%29.foldl%28%29%28489%29,000000,0,3,10|tunderscore.reduceRight%28%29%28367%29,000000,0,4,10|tsloth.ify%28%29.foldr%28%29%28266%29,000000,0,5,10|tunderscore.uniq%28%29%281%29,000000,0,6,10|tsloth.ify%28%29.nub%28%29%283%29,000000,0,7,10|tunderscore.intersection%28%29%280%29,000000,0,8,10|tsloth.ify%28%29.intersect%28%29%281%29,000000,0,9,10|tunderscore.union%28%29%280%29,000000,0,10,10|tsloth.ify%28%29.union%28%29%281%29,000000,0,11,10|tunderscore.zip%28%29%2860%29,000000,0,12,10|tsloth.ify%28%29.zip%28%29%28144%29,000000,0,13,10|tunderscore.map%28%29.max%28%29%28373%29,000000,0,14,10|tsloth.ify%28%29.map%28%29.max%28%29%28270%29,000000,0,15,10|tunderscore.map%28%29.filter%28%29.reduce%28%29%28130%29,000000,0,16,10|tsloth.ify%28%29.map%28%29.filter%28%29.foldl%28%29%28263%29,000000,0,17,10&chbh=15,0,5&chs=250x430)\n\n","_id":"sloth@0.5.1","dist":{"shasum":"45bad0159e8ee66eb9606a1a40df72040a4e030e","tarball":"http://registry.npmjs.org/sloth/-/sloth-0.5.1.tgz"},"maintainers":[{"name":"rfw","email":"tony@rfw.name"}]}},"readme":"# `sloth.js`\n\n `\"\"==,,__ \n `\"==..__\"=..__ _ _..-==\"\"_\n .-,`\"=/ /\\ \\\"\"/_)==\"\"``\n ( ( | | | \\/ |\n \\ '. | \\; \\ /\n | \\ | | ||\n ,-._.' |_| | ||\n .\\_/\\ -' ; Y\n | ` | / |-.\n '. __/_ _.-' /'\n jgs `'-.._____.-'\n\n`sloth.js` is a lazy iterator library for JavaScript that simplifies operations\nfor querying JavaScript collections by supplying simple, composable functions\nfor them (á la Underscore.js).\n\nIt borrows heavily from functional programming concepts (especially Haskell)\nand, with its lazy properties, `sloth.js` provides highly efficient composed\noperations for collections via a simple iterator protocol.\n\n","maintainers":[{"name":"rfw","email":"tony@rfw.name"}],"time":{"modified":"2012-07-16T06:56:41.664Z","created":"2012-07-11T06:18:44.173Z","0.0.1":"2012-07-11T06:18:47.342Z","0.2.0":"2012-07-12T01:43:19.164Z","0.3.0":"2012-07-14T12:10:02.108Z","0.4.0":"2012-07-14T14:53:01.455Z","0.5.0":"2012-07-15T22:21:22.336Z","0.5.1":"2012-07-16T06:56:41.664Z"},"author":{"name":"Tony Young","email":"tony@rfw.name"},"repository":{"type":"git","url":"https://github.com/rfw/sloth.js.git"},"_id":"sloth","_rev":"1-a74ec97fc58b79e0df4db53b023eece1"}ÿdocument-storeÿslarty™{"id":"slarty","rev":"1-b1a82a4bd52477a1ff1a5f714b777a8a","rev_tree":[{"pos":1,"ids":["b1a82a4bd52477a1ff1a5f714b777a8a",{"status":"available"},[]]}],"rev_map":{"1-b1a82a4bd52477a1ff1a5f714b777a8a":3367},"winningRev":"1-b1a82a4bd52477a1ff1a5f714b777a8a","deleted":false,"seq":3367}ÿby-sequenceÿ0000000000003367{"name":"slarty","description":"Node.js+MongoDB based blog engine.","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"slarty","version":"0.1.0","author":{"name":"Bence Danyi","email":"madbence@gmail.com"},"description":"Node.js+MongoDB based blog engine.","main":"./Application.js","keywords":["http","server","blog","mongo"],"dependencies":{"mongodb":"1.1.x"},"license":"MIT","engine":{"node":">=0.8.7"},"_npmUser":{"name":"lennon","email":"madbence@gmail.com"},"_id":"slarty@0.1.0","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.7","_defaultsLoaded":true,"dist":{"shasum":"87d4117dfc84fadb993253edd7a8db08c0384e98","tarball":"http://registry.npmjs.org/slarty/-/slarty-0.1.0.tgz"},"readme":"","maintainers":[{"name":"lennon","email":"madbence@gmail.com"}]},"0.1.1":{"name":"slarty","version":"0.1.1","author":{"name":"Bence Danyi","email":"madbence@gmail.com"},"description":"Node.js+MongoDB based blog engine.","main":"./Application.js","keywords":["http","server","blog","mongo"],"dependencies":{"mongodb":"1.1.x"},"license":"MIT","engine":{"node":">=0.8.7"},"repository":{"type":"git","url":"git://github.com/madbence/slarty.git"},"_npmUser":{"name":"lennon","email":"madbence@gmail.com"},"_id":"slarty@0.1.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.7","_defaultsLoaded":true,"dist":{"shasum":"4bd8fd041b3f378f368cd9688243309176a1f082","tarball":"http://registry.npmjs.org/slarty/-/slarty-0.1.1.tgz"},"readme":"","maintainers":[{"name":"lennon","email":"madbence@gmail.com"}]}},"readme":"","maintainers":[{"name":"lennon","email":"madbence@gmail.com"}],"time":{"modified":"2012-08-22T13:38:13.033Z","created":"2012-08-22T12:27:46.341Z","0.1.0":"2012-08-22T12:27:49.268Z","0.1.1":"2012-08-22T13:38:13.033Z"},"author":{"name":"Bence Danyi","email":"madbence@gmail.com"},"repository":{"type":"git","url":"git://github.com/madbence/slarty.git"},"_id":"slarty","_rev":"1-b1a82a4bd52477a1ff1a5f714b777a8a"}ÿdocument-storeÿsiq-vendor-js {"id":"siq-vendor-js","rev":"1-0e10a96c8f69a2f2d77a822ac82c63a6","rev_tree":[{"pos":1,"ids":["0e10a96c8f69a2f2d77a822ac82c63a6",{"status":"available"},[]]}],"rev_map":{"1-0e10a96c8f69a2f2d77a822ac82c63a6":3366},"winningRev":"1-0e10a96c8f69a2f2d77a822ac82c63a6","deleted":false,"seq":3366}ÿby-sequenceÿ0000000000003366Á${"name":"siq-vendor-js","description":"vendor libraries for siq development stack","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"siq-vendor-js","description":"vendor libraries for siq development stack","author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"version":"0.0.1","main":"main.js","scripts":{"test":"make test"},"dependencies":{"csi":"0.0.x"},"component":{"name":"vendor"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-vendor-js@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"b09a3ded7225f297db1c3f943206c609a532e966","tarball":"http://registry.npmjs.org/siq-vendor-js/-/siq-vendor-js-0.0.1.tgz"},"maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.2":{"name":"siq-vendor-js","description":"vendor libraries for siq development stack","author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"version":"0.0.2","main":"main.js","scripts":{"test":"make test"},"dependencies":{"csi":"0.0.x"},"component":{"name":"vendor"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-vendor-js@0.0.2","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"46d309e9d7b9b2ecb7ee07c8e9b7f3a68c062c5d","tarball":"http://registry.npmjs.org/siq-vendor-js/-/siq-vendor-js-0.0.2.tgz"},"maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.3":{"name":"siq-vendor-js","description":"vendor libraries for siq development stack","author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"version":"0.0.3","main":"main.js","scripts":{"test":"make test"},"dependencies":{"csi":"0.0.x"},"component":{"name":"vendor"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"ralphsmith80","email":"ralphsmith80@gmail.com"},"_id":"siq-vendor-js@0.0.3","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3bf30c9a6628d110d94c407c3b0e9a6e3af95df2","tarball":"http://registry.npmjs.org/siq-vendor-js/-/siq-vendor-js-0.0.3.tgz"},"maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},{"name":"ralphsmith80","email":"ralphsmith80@gmail.com"}]},"0.0.4":{"name":"siq-vendor-js","description":"vendor libraries for siq development stack","author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"version":"0.0.4","main":"main.js","scripts":{"test":"make test"},"dependencies":{"csi":"0.0.x"},"component":{"name":"vendor"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-vendor-js@0.0.4","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e2b5ea90b27cc6b0236c8a3130b36b12669abfa7","tarball":"http://registry.npmjs.org/siq-vendor-js/-/siq-vendor-js-0.0.4.tgz"},"maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},{"name":"ralphsmith80","email":"ralphsmith80@gmail.com"}]},"0.0.5":{"name":"siq-vendor-js","description":"vendor libraries for siq development stack","author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"version":"0.0.5","main":"main.js","scripts":{"test":"make test"},"dependencies":{"csi":"0.0.x"},"component":{"name":"vendor"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-vendor-js@0.0.5","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"071a73d012d940ab6fe4d114f0114eefa8f56833","tarball":"http://registry.npmjs.org/siq-vendor-js/-/siq-vendor-js-0.0.5.tgz"},"maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},{"name":"ralphsmith80","email":"ralphsmith80@gmail.com"}]}},"readme":"This is a (sub)set of 3rd-party Javascript libraries we use,\nbundled up as a component.\n","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},{"name":"ralphsmith80","email":"ralphsmith80@gmail.com"}],"time":{"modified":"2012-06-18T14:37:29.528Z","created":"2012-05-14T06:06:26.336Z","0.0.1":"2012-05-14T06:06:27.090Z","0.0.2":"2012-06-04T13:02:52.792Z","0.0.3":"2012-06-07T15:00:01.579Z","0.0.4":"2012-06-07T18:52:01.315Z","0.0.5":"2012-06-18T14:37:29.528Z"},"author":{"name":"Aaron Stacy","email":"astacy@storediq.com"},"_id":"siq-vendor-js","_rev":"1-0e10a96c8f69a2f2d77a822ac82c63a6"}ÿdocument-storeÿsimplestorež{"id":"simplestore","rev":"1-1ca6fecedcc8356e5587688ba9b0b491","rev_tree":[{"pos":1,"ids":["1ca6fecedcc8356e5587688ba9b0b491",{"status":"available"},[]]}],"rev_map":{"1-1ca6fecedcc8356e5587688ba9b0b491":3365},"winningRev":"1-1ca6fecedcc8356e5587688ba9b0b491","deleted":false,"seq":3365}ÿby-sequenceÿ0000000000003365Ë{"name":"simplestore","description":"Simple Key Value Store in memory, a la Redis. Work in Progress.","dist-tags":{"latest":"0.0.1-alfa"},"versions":{"0.0.1-alfa":{"name":"simplestore","description":"Simple Key Value Store in memory, a la Redis. Work in Progress.","keywords":["store","keyvalue","nodejs","javascript"],"version":"0.0.1-alfa","author":{"name":"Angel 'Java' Lopez","email":"webmaster@ajlopez.com","url":"http://www.ajlopez.com"},"repository":{"type":"git","url":"git://github.com/ajlopez/SimpleStore.git"},"main":"./lib/simplestore.js","engines":{"node":">= 0.6.0 && < 0.9.0"},"scripts":{"test":"node ./test.js"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"ajlopez","email":"webmaster@ajlopez.com"},"_id":"simplestore@0.0.1-alfa","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"2d956f03b5667596fb2a46e16d4effa252560658","tarball":"http://registry.npmjs.org/simplestore/-/simplestore-0.0.1-alfa.tgz"},"maintainers":[{"name":"ajlopez","email":"webmaster@ajlopez.com"}]}},"readme":"# SimpleStore\r\n\r\nSimple Key Value Store in memory, a la Redis. Work in Progress.\r\n\r\n## Installation\r\n\r\nVia npm on Node:\r\n\r\n```\r\nnpm install simplestore\r\n```\r\n\r\nReference in your program:\r\n\r\n```js\r\nvar simplestore = require('simplestore');\r\n```\r\n\r\n## Usage\r\n\r\nTBD\r\n\r\n## Development\r\n\r\n```\r\ngit clone git://github.com/ajlopez/SimpleStore.git\r\ncd SimpleStore\r\nnpm install\r\nnpm test\r\n```\r\n\r\n## Samples\r\n\r\nTBD\r\n\r\n## Contribution\r\n\r\nFeel free to [file issues](https://github.com/ajlopez/SimpleStore) and submit\r\n[pull requests](https://github.com/ajlopez/SimpleStore/pulls) � contributions are\r\nwelcome.\r\n\r\nIf you submit a pull request, please be sure to add or update corresponding\r\ntest cases, and ensure that `npm test` continues to pass.\r\n\r\n(Thanks to [JSON5](https://github.com/aseemk/json5) by [aseemk](https://github.com/aseemk). \r\nThis file is based on that project README.md).","maintainers":[{"name":"ajlopez","email":"webmaster@ajlopez.com"}],"time":{"modified":"2012-06-04T13:39:52.662Z","created":"2012-06-04T13:39:48.882Z","0.0.1-alfa":"2012-06-04T13:39:52.662Z"},"author":{"name":"Angel 'Java' Lopez","email":"webmaster@ajlopez.com","url":"http://www.ajlopez.com"},"repository":{"type":"git","url":"git://github.com/ajlopez/SimpleStore.git"},"_id":"simplestore","_rev":"1-1ca6fecedcc8356e5587688ba9b0b491"}ÿdocument-storeÿsimple-tableŸ{"id":"simple-table","rev":"1-936fd635e81f14d3cce209d224a59a26","rev_tree":[{"pos":1,"ids":["936fd635e81f14d3cce209d224a59a26",{"status":"available"},[]]}],"rev_map":{"1-936fd635e81f14d3cce209d224a59a26":3364},"winningRev":"1-936fd635e81f14d3cce209d224a59a26","deleted":false,"seq":3364}ÿby-sequenceÿ0000000000003364÷{"name":"simple-table","description":"SimpleTable","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.2":{"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"name":"simple-table","description":"SimpleTable","version":"0.1.2","repository":{"url":""},"main":"./index.js","_npmUser":{"name":"yuitest","email":"yuitest@cjhat.net"},"_id":"simple-table@0.1.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"68696802bd91bd725b260e7f190c6ce507d2ec8e","tarball":"http://registry.npmjs.org/simple-table/-/simple-table-0.1.2.tgz"},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}]}},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}],"time":{"modified":"2012-03-21T15:20:50.201Z","created":"2012-03-21T15:20:47.419Z","0.1.2":"2012-03-21T15:20:50.201Z"},"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"repository":{"url":""},"_id":"simple-table","_rev":"1-936fd635e81f14d3cce209d224a59a26"}ÿdocument-storeÿsharepoint{"id":"sharepoint","rev":"1-4205be42a2312cd001e6ba7052f7e40a","rev_tree":[{"pos":1,"ids":["4205be42a2312cd001e6ba7052f7e40a",{"status":"available"},[]]}],"rev_map":{"1-4205be42a2312cd001e6ba7052f7e40a":3363},"winningRev":"1-4205be42a2312cd001e6ba7052f7e40a","deleted":false,"seq":3363}ÿby-sequenceÿ0000000000003363£+{"name":"sharepoint","description":"SharePoint client for Node.js","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"Connect Node to SharePoint","version":"0.0.0","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":"~0.6.5"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"5d7ea13f831b97f58e92eeb1a16614641ab7d00f","tarball":"http://registry.npmjs.org/sharepoint/-/sharepoint-0.0.0.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]},"0.0.1":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"SharePoint client for Node.js","version":"0.0.1","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":"~0.6.5"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"fab39f22e281832d500abd9b3871d55f4a1c9a3f","tarball":"http://registry.npmjs.org/sharepoint/-/sharepoint-0.0.1.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]},"0.0.2":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"SharePoint client for Node.js","version":"0.0.2","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":"~0.6.5"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"57d69f054fa2e94eed9a4f7bf699a74582584c07","tarball":"http://registry.npmjs.org/sharepoint/-/sharepoint-0.0.2.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]},"0.0.3":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"SharePoint client for Node.js","version":"0.0.3","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.3","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"62e580e8bd4679994fcb7f0306f9aa0a06012318","tarball":"http://registry.npmjs.org/sharepoint^0„…ù/-/sharepoint-0.0.3.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]},"0.0.4":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"SharePoint client for Node.js","version":"0.0.4","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.4","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"eb552000f333e025e8e98bc8a5ba92d56b841b82","tarball":"http://registry.npmjs.org/sharepoint/-/sharepoint-0.0.4.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]},"0.0.5":{"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"name":"sharepoint","description":"SharePoint client for Node.js","version":"0.0.5","homepage":"https://github.com/lstak/node-sharepoint","repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"main":"sharepoint.js","engines":{"node":">=0.6"},"dependencies":{"xml2js":">= 0.0.1"},"devDependencies":{},"_npmUser":{"name":"lstak","email":"l.stakenborg@oxida.com"},"_id":"sharepoint@0.0.5","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"e614e201b9db58ed81081cf400ebf16394533aca","tarball":"http://registry.npmjs.org/sharepoint/-/sharepoint-0.0.5.tgz"},"maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}]}},"readme":"Under construction","maintainers":[{"name":"lstak","email":"l.stakenborg@oxida.com"}],"time":{"modified":"2012-05-09T09:05:40.216Z","created":"2012-03-22T14:35:47.197Z","0.0.0":"2012-03-22T14:35:50.048Z","0.0.1":"2012-03-27T14:23:22.549Z","0.0.2":"2012-03-29T14:31:20.079Z","0.0.3":"2012-04-11T21:26:10.826Z","0.0.4":"2012-04-16T06:40:11.252Z","0.0.5":"2012-05-09T09:05:40.216Z"},"author":{"name":"Luc Stakenborg","email":"l.stakenborg@oxida.com","url":"http://www.oxida.com"},"repository":{"type":"git","url":"git@github.com:lstak/node-sharepoint.git"},"_id":"sharepoint","_rev":"1-4205be42a2312cd001e6ba7052f7e40a"}ÿdocument-storeÿshallotš{"id":"shallot","rev":"1-1a26e9c3cf49936065705f314c918938","rev_tree":[{"pos":1,"ids":["1a26e9c3cf49936065705f314c918938",{"status":"available"},[]]}],"rev_map":{"1-1a26e9c3cf49936065705f314c918938":3362},"winningRev":"1-1a26e9c3cf49936065705f314c918938","deleted":false,"seq":3362}ÿby-sequenceÿ0000000000003362‰{"name":"shallot","dist-tags":{"latest":"0.2.1-1"},"versions":{"0.1.0":{"name":"shallot","version":"0.1.0","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"bin":{"shallot":"./lib/bin/shallot.js"},"_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"shallot@0.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"6a9c3c1ace855e952b386fbab69108d94092c593","tarball":"http://registry.npmjs.org/shallot/-/shallot-0.1.0.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.0":{"name":"shallot","description":"HTTP DSL in CoffeeScript","version":"0.2.0","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"dependencies":{"copperhead":"0.1.x","connect":"2.1.x"},"_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"shallot@0.2.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e7fc79ea195382bc68836a3f497ab114e7b3b91f","tarball":"http://registry.npmjs.org/shallot/-/shallot-0.2.0.tgz"},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.1-1":{"name":"shallot","description":"HTTP DSL in CoffeeScript","version":"0.2.1-1","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"dependencies":{"copperhead":"0.1.x","connect":"2.1.x"},"readme":"# Shallot\nShallot is a HTTP DSL based on coffeescript. It is very similar to\n[zappa](https://github.com/mauricemach/zappa)\nbut tries to be more lightweight.\n\n## Installation\n\n```plaintext\nnpm install shallot\n```\n\n## Usage\n\nProbably the shortest example possible\n\n```coffeescript\nrequire('shallot') -> @get -> 'Hello World!'\n```\n\n### No seriously\nShallot does not depend on express. It rather is up to you which kind\nof middlewares you want to use and what kind of rendering engine you require.\nIt uses\n[copperhead](https://github.com/niclashoyer/copperhead)\nas router.\n\n```coffeescript\nconnect = require 'connect'\n\nrequire('shallot') ->\n\n\t@use connect.static 'public'\n\n\t@get ->\n\t\t'Hello World!'\n\n\t@get '/:name', ->\n\t\t\"Hello #{@name}!\"\n```\n\n## More\nMore features may be added in the future. The main goal is to achieve the most\npowerful HTTP server functionality with minimal lines of code.\n\n","_id":"shallot@0.2.1-1","dist":{"shasum":"0bc26c732e5fc04d40ee436e535d7aa247f3c0d3","tarball":"http://registry.npmjs.org/shallot/-/shallot-0.2.1-1.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]}},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}],"time":{"modified":"2012-08-17T19:35:15.867Z","created":"2011-09-25T10:20:26.364Z","0.1.0":"2011-09-25T10:20:27.971Z","0.2.0":"2012-04-09T09:59:36.772Z","0.2.1-1":"2012-08-17T19:35:15.867Z"},"author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"description":"HTTP DSL in CoffeeScript","_id":"shallot","_rev":"1-1a26e9c3cf49936065705f314c918938"}#ÿdocument-storeÿserver_side_dijit¤{"id":"server_side_dijit","rev":"1-291639d2106567c8b187a51a99f4cbd7","rev_tree":[{"pos":1,"ids":["291639d2106567c8b187a51a99f4cbd7",{"status":"available"},[]]}],"rev_map":{"1-291639d2106567c8b187a51a99f4cbd7":3361},"winningRev":"1-291639d2106567c8b187a51a99f4cbd7","deleted":false,"seq":3361}ÿby-sequenceÿ00000000000033613{"name":"server_side_dijit","description":"Middleware plugin for Connect that renders dijit widget templates, which are normally rendered client-side, on the server. Returned pages are modified to include the generated server-side templates inline, with a client-side JavaScript plugin to hook up the templates to the widget.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"server_side_dijit","version":"0.0.1","author":{"name":"James Thomas","email":"james@jamesthom.as"},"description":"Middleware plugin for Connect that renders dijit widget templates, which are normally rendered client-side, on the server. Returned pages are modified to include the generated server-side templates inline, with a client-side JavaScript plugin to hook up the templates to the widget.","scripts":{"start":"node test/app.js"},"main":"./lib/server_side","repository":{"type":"git","url":"https://github.com/jthomas/server_side_dijit.git"},"keywords":["dojo","dijit","connect"],"dependencies":{"connect":"2.3.4","jsdom":"0.2.14"},"license":"MIT","engine":{"node":"0.6.X"},"readme":"# Server Side Dijit\n\nMiddleware plugin for Connect that renders dijit widget templates, which are normally rendered client-side, on the server. \nReturned pages are modified to include the generated server-side templates inline, with a client-side JavaScript plugin \nto hook up the templates to the widget.\n\n## Running the demo\n\nRun the following command line to start a test application, demonstrating a variety of widgets rendered\non the server side. \n\n $ export DOJO_SOURCE=/path/to/dojo-release-1.8.0-src\n $ npm start \n\nOnce the server has started, visit...\nhttp://localhost:3000\n\n## How to use\n\nUsing this middleware plugin in your own application requires the use of the middleware plugin\nalongside a custom client-side JavaScript mixin.\n\nThe Connect plugin takes a single configuration parameter, *dojo*, which denotes the location of top level\ndirectory containing the The Dojo Toolkit source (version 1.8).\n\n### Configure middleware and use with Connect server\n var connect = require('connect'),\n server_side = require('server_side_dijit');\n\n var app = connect()\n .use(server_side({dojo: './path_to_dojo_1.8'}))\n .use(connect.static('./my_html_files'))\n .listen(3000);\n\nEvery requested HTML page will be scanned for declaratively defined widgets, *data-dojo-type*, \nthat also include the declarative mixin command, *data-dojo-mixin*, for the custom JavaScript library, *server_side/_TemplatedWidget*. \n\n### Configure AMD loader with client-side library path\n var dojoConfig = {\n paths: {\n server_side: \"/public/js/server_side\"\n },\n async: true\n };\n\nCustom JavaScript library to assist server-side rendering is provided under *public/js/server_side* in the module source directory.\n\n### Use client-side mixin to denote widgets for server rendering\n
\n\nThese widgets are instantiated in the server side environment and their rendered template injected into the returned \npage. On the client-side, the mixin modifies widget construct to stop templated widgets from trying to \ndo the client-side rendering and simply hooking up the template node that are already present.\n\n## Requirements\n\n* The Dojo Toolkit (version 1.8) source distribution available locally.\n","_id":"server_side_dijit@0.0.1","dist":{"shasum":"6da709a5ad6d9154ab4ea3663fd2413d7ee57742","tarball":"http://registry.npmjs.org/server_side_dijit/-/server_side_dijit-0.0.1.tgz"},"maintainers":[{"name":"jthomas","email":"james@jamesthom.as"}]}},"readme":"# Server Side Dijit\n\nMiddleware plugin for Connect that renders dijit widget templates, which are normally rendered client-side, on the server. \nReturned pages are modified to include the generated server-side templates inline, with a client-side JavaScript plugin \nto hook up the templates to the widget.\n\n## Running the demo\n\nRun the following command line to start a test application, demonstrating a variety of widgets rendered\non the server side. \n\n $ export DOJO_SOURCE=/path/to/dojo-release-1.8.0-src\n $ npm start \n\nOnce the server has started, visit...\nhttp://localhost:3000\n\n## How to use\n\nUsing this middleware plugin in your own application requires the use of the middleware plugin\nalongside a custom client-side JavaScript mixin.\n\nThe Connect plugin takes a single configuration parameter, *dojo*, which denotes the location of top level\ndirectory containing the The Dojo Toolkit source (version 1.8).\n\n### Configure middleware and use with Connect server\n var connect = require('connect'),\n server_side = require('server_side_dijit');\n\n var app = connect()\n .use(server_side({dojo: './path_to_dojo_1.8'}))\n .use(connect.static('./my_html_files'))\n .listen(3000);\n\nEvery requested HTML page will be scanned for declaratively defined widgets, *data-dojo-type*, \nthat also include the declarative mixin command, *data-dojo-mixin*, for the custom JavaScript library, *server_side/_TemplatedWidget*. \n\n### Configure AMD loader with client-side library path\n var dojoConfig = {\n paths: {\n server_side: \"/public/js/server_side\"\n },\n async: true\n };\n\nCustom JavaScript library to assist server-side rendering is provided under *public/js/server_side* in the module source directory.\n\n### Use client-side mixin to denote widgets for server rendering\n
\n\nThese widgets are instantiated in the server side environment and their rendered template injected into the returned \npage. On the client-side, the mixin modifies widget construct to stop templated widgets from trying to \ndo the client-side rendering and simply hooking up the template node that are already present.\n\n## Requirements\n\n* The Dojo Toolkit (version 1.8) source distribution available locally.\n","maintainers":[{"name":"jthomas","email":"james@jamesthom.as"}],"time":{"modified":"2012-08-22T14:54:59.059Z","created":"2012-08-22T14:54:37.029Z","0.0.1":"2012-08-22T14:54:59.059Z"},"author":{"name":"James Thomas","email":"james@jamesthom.as"},"repository":{"type":"git","url":"https://github.com/jthomas/server_side_dijit.git"},"_id":"server_side_dijit","_rev":"1-291639d2106567c8b187a51a99f4cbd7"} ÿdocument-storeÿserve-filirom1¡{"id":"serve-filirom1","rev":"1-70eac20c0b42e542698e529536ac1077","rev_tree":[{"pos":1,"ids":["70eac20c0b42e542698e529536ac1077",{"status":"available"},[]]}],"rev_map":{"1-70eac20c0b42e542698e529536ac1077":3360},"winningRev":"1-70eac20c0b42e542698e529536ac1077","deleted":false,"seq":3360}ÿby-sequenceÿ0000000000003360‰{"name":"serve-filirom1","description":"Simple command-line file / directory server built with connect","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.4":{"name":"serve-filirom1","version":"1.0.4","description":"Simple command-line file / directory server built with connect","keywords":["static","server","connect"],"author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"dependencies":{"connect":"1.8.x","commander":"0.4.1","underscore":"~1.3.1","socket.io":"~0.9.0","colors":"~0.6.0-1","watchr":"~1.0.0","coffee-script":"~1.2.0","mustache":"~0.4.0","connect-less":"~0.3.0"},"bin":{"serve":"./bin/serve"},"engines":{"node":">= 0.4.x < 0.7.0"},"_npmUser":{"name":"Filirom1","email":"filirom1@gmail.com"},"_id":"serve-filirom1@1.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"393a8519e7449b0eff1c5903b478b1e5f9be73ca","tarball":"http://registry.npmjs.org/serve-filirom1/-/serve-filirom1-1.0.4.tgz"},"readme":"","maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"}]},"1.0.5":{"name":"serve-filirom1","version":"1.0.5","description":"Simple command-line file / directory server built with connect","keywords":["static","server","connect"],"author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"dependencies":{"connect":"1.8.x","commander":"0.4.1","underscore":"~1.3.1","socket.io":"~0.9.0","colors":"~0.6.0-1","watch":"~0.5.1","mustache":"~0.4.0","connect-less":"~0.3.0"},"bin":{"serve":"./bin/serve"},"engines":{"node":">= 0.4.x < 0.7.0"},"_npmUser":{"name":"Filirom1","email":"filirom1@gmail.com"},"_id":"serve-filirom1@1.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"741131d4308c76b5667cb93b1d9046eda8446e63","tarball":"http://registry.npmjs.org/serve-filirom1/-/serve-filirom1-1.0.5.tgz"},"readme":"","maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"}]},"1.0.6":{"name":"serve-filirom1","version":"1.0.6","description":"Simple command-line file / directory server built with connect","keywords":["static","server","connect"],"author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"dependencies":{"connect":"1.8.6","commander":"0.4.1","underscore":"~1.3.1","socket.io":"~0.9.0","colors":"~0.6.0-1","watch":"~0.5.1","mustache":"~0.4.0","connect-less":"~0.3.0","watch-connect":"~0.1.0"},"bin":{"serve":"./bin/serve"},"_id":"serve-filirom1@1.0.6","dist":{"shasum":"b2ea625318c0765fb18a14503d0ae48d3866ffd5","tarball":"http://registry.npmjs.org/serve-filirom1/-/serve-filirom1-1.0.6.tgz"},"readme":"","maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"}]}},"readme":"","maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"},{"name":"filirom1","email":"filirom1@gmail.com"}],"time":{"modified":"2012-07-16T07:00:41.540Z","created":"2012-05-23T09:46:50.243Z","1.0.4":"2012-05-23T09:46:50.977Z","1.0.5":"2012-05-31T08:16:45.313Z","1.0.6":"2012-07-16T07:00:19.311Z"},"author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"_id":"serve-filirom1","_rev":"1-70eac20c0b42e542698e529536ac1077"}ÿdocument-storeÿselectronœ{"id":"selectron","rev":"1-3827586cd5aafe39c791990e5072bb23","rev_tree":[{"pos":1,"ids":["3827586cd5aafe39c791990e5072bb23",{"status":"available"},[]]}],"rev_map":{"1-3827586cd5aafe39c791990e5072bb23":3359},"winningRev":"1-3827586cd5aafe39c791990e5072bb23","deleted":false,"seq":3359}ÿby-sequenceÿ0000000000003359Ñ{"name":"selectron","description":"Keep track of the currently selected thing","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"selectron","version":"0.0.1","description":"Keep track of the currently selected thing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/selectron.git"},"main":"index","homepage":"https://github.com/Raynos/selectron","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/selectron/issues","email":"raynos2@gmail.com"},"dependencies":{"ap":"~0.1.0","xtend":"~1.0.3"},"devDependencies":{"browserify-server":"~1.0.2"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/selectron/raw/master/LICENSE"}],"scripts":{},"readme":"# selectron\n\nKeep track of the currently selected thing\n\n## Example\n\n``` js\nvar selectron = require(\"selectron\")\n\nvar sel = selectron()\n , ul = document.getElementById(\"list\")\n\nul.addEventListener(\"click\", function (evt) {\n if (evt.target.tagName === \"LI\") {\n sel.select(evt.target)\n }\n})\n\nsel.on(\"select\", function (li) {\n li.classList.add(\"selected\")\n})\n\nsel.on(\"unselect\", function (li) {\n li.classList.remove(\"selected\")\n})\n```\n\n## Installation\n\n`npm install selectron`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced","_id":"selectron@0.0.1","dist":{"shasum":"33efb869c12261199bfa494c48253d3a1312f58d","tarball":"http://registry.npmjs.org/selectron/-/selectron-0.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# selectron\n\nKeep track of the currently selected thing\n\n## Example\n\n``` js\nvar selectron = require(\"selectron\")\n\nvar sel = selectron()\n , ul = document.getElementById(\"list\")\n\nul.addEventListener(\"click\", function (evt) {\n if (evt.target.tagName === \"LI\") {\n sel.select(evt.target)\n }\n})\n\nsel.on(\"select\", function (li) {\n li.classList.add(\"selected\")\n})\n\nsel.on(\"unselect\", function (li) {\n li.classList.remove(\"selected\")\n})\n```\n\n## Installation\n\n`npm install selectron`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-08-22T06:57:20.203Z","created":"2012-08-22T06:57:16.803Z","0.0.1":"2012-08-22T06:57:20.203Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/selectron.git"},"_id":"selectron","_rev":"1-3827586cd5aafe39c791990e5072bb23"}ÿdocument-storeÿsee-no-evilž{"id":"see-no-evil","rev":"1-d6e72f19387e8320d2afb6fb7a4a841b","rev_tree":[{"pos":1,"ids":["d6e72f19387e8320d2afb6fb7a4a841b",{"status":"available"},[]]}],"rev_map":{"1-d6e72f19387e8320d2afb6fb7a4a841b":3358},"winningRev":"1-d6e72f19387e8320d2afb6fb7a4a841b","deleted":false,"seq":3358}ÿby-sequenceÿ0000000000003358Ž({"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","version":"0.1.0","author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"main":"./index.js","dependencies":{},"devDependencies":{},"engines":{"node":">= 0.6"},"_npmUser":{"name":"puerkitobio","email":"martin.n.angers@gmail.com"},"_id":"see-no-evil@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"d08a56f58e0a83c1f5274387b86d985dcbdfe554","tarball":"http://registry.npmjs.org/see-no-evil/-/see-no-evil-0.1.0.tgz"},"maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}]},"0.1.1":{"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","version":"0.1.1","author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"main":"./index.js","dependencies":{},"devDependencies":{"expect.js":"0.1.x","mocha":"0.x","sinon":"1.x"},"engines":{"node":">= 0.6"},"_npmUser":{"name":"puerkitobio","email":"martin.n.angers@gmail.com"},"_id":"see-no-evil@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"eebdcb42afcba00a0797d6d88ab4ee4d186f70f8","tarball":"http://registry.npmjs.org/see-no-evil/-/see-no-evil-0.1.1.tgz"},"maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}]},"0.2.0":{"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","version":"0.2.0","author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"main":"./index.js","dependencies":{},"devDependencies":{"expect.js":"0.1.x","mocha":"0.x","sinon":"1.x"},"engines":{"node":">= 0.6"},"_npmUser":{"name":"puerkitobio","email":"martin.n.angers@gmail.com"},"_id":"see-no-evil@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"cde7c12444d3078fba4dd9c1fdb7ce56b9bb922d","tarball":"http://registry.npmjs.org/see-no-evil/-/see-no-evil-0.2.0.tgz"},"maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}]},"0.3.0":{"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","version":"0.3.0","author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"main":"./index.js","dependencies":{},"devDependencies":{"expect.js":"0.1.x","mocha":"0.x","sinon":"1.x"},"engines":{"node":">= 0.6"},"_npmUser":{"name":"puerkitobio","email":"martin.n.angers@gmail.com"},"_id":"see-no-evil@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"2f988f2cca5ef52932f33de90bfca1114ea9cb11","tarball":"http://registry.npmjs.org/see-no-evil/-/see-no-evil-0.3.0.tgz"},"maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}]},"0.3.1":{"name":"see-no-evil","description":"Tiny callback cleaner library for node.js, so that error management gets out of the way.","version":"0.3.1","author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"main":"./index.js","dependencies":{},"devDependencies":{"expect.js":"0.1.x","mocha":"0.x","sinon":"1.x"},"engines":{"node":">= 0.6"},"homepage":"https://github.com/PuerkitoBio/see-no-evil","repository":{"type":"git","url":"git://github.com/PuerkitoBio/see-no-evil.git"},"scripts":{"test":"make test"},"_npmUser":{"name":"puerkitobio","email":"martin.n.angers@gmail.com"},"_id":"see-no-evil@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"9f04c95224a028b1f6824c067c8d1491874e62ef","tarball":"http://registry.npmjs.org/see-no-evil/-/see-no-evil-0.3.1.tgz"},"maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}]}},"readme":"see-no-evil\n===========\n\nTiny callback cleaner library for node.js, so that error management gets out of the way.","maintainers":[{"name":"puerkitobio","email":"martin.n.angers@gmail.com"}],"time":{"modified":"2012-05-17T01:08:22.700Z","created":"2012-05-16T00:21:31.548Z","0.1.0":"2012-05-16T00:21:32.274Z","0.1.1":"2012-05-16T00:52:31.896Z","0.2.0":"2012-05-16T01:00:04.685Z","0.3.0":"2012-05-16T01:24:27.449Z","0.3.1":"2012-05-17T01:08:22.700Z"},"author":{"name":"Martin Angers","email":"martin.n.angers@gmail.com","url":"http://hypermegatop.github.com/"},"repository":{"type":"git","url":"git://github.com/PuerkitoBio/see-no-evil.git"},"_id":"see-no-evil","_rev":"1-d6e72f19387e8320d2afb6fb7a4a841b"}ÿdocument-storeÿsamplerš{"id":"sampler","rev":"1-962821d826512ad8ae70343a22ccf14b","rev_tree":[{"pos":1,"ids":["962821d826512ad8ae70343a22ccf14b",{"status":"available"},[]]}],"rev_map":{"1-962821d826512ad8ae70343a22ccf14b":3357},"winningRev":"1-962821d826512ad8ae70343a22ccf14b","deleted":false,"seq":3357}ÿby-sequenceÿ0000000000003357þR{"name":"sampler","description":"Record things, play them back","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"name":"sampler","description":"Record things, play them back","version":"0.0.0","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"directories":{"lib":"./lib","examples":"./examples","test":"./test"},"main":"./lib/sampler","scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"engines":{"node":"0.6.x || 0.7.x"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","underscore":"1.3.1"},"devDependencies":{"mocha":"1.1.x","should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.7-pre","_defaultsLoaded":true,"dist":{"shasum":"5a2c89d33cca56ca7b41d643e36d3a0a62b03c3b","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.0.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]},"0.0.1":{"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"name":"sampler","description":"Record things, play them back","version":"0.0.1","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"directories":{"lib":"./lib","examples":"./examples","test":"./test"},"main":"./lib/sampler","scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"engines":{"node":"0.6.x || 0.7.x"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","underscore":"1.3.1"},"devDependencies":{"mocha":"1.1.x","should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.7-pre","_defaultsLoaded":true,"dist":{"shasum":"a2b680a829a05d7102b843cc2762d32f80a0c370","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.1.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]},"0.0.2":{"name":"sampler","description":"Record things, play them back","version":"0.0.2","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"engines":{"node":"0.6.x || 0.7.x"},"main":"./lib/sampler","directories":{"lib":"./lib","examples":"./examples","test":"./test"},"scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","underscore":"1.3.1"},"devDependencies":{"mocha":"1.1.x","should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.7-pre","_defaultsLoaded":true,"dist":{"shasum":"e78eefffbdf1b68f96ca1bb2dc6b615322f4c99f","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.2.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]},"0.0.3":{"name":"sampler","description":"Record things, play them back","version":"0.0.3","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"engines":{"node":"0.6.x || 0.7.x"},"main":"./lib/sampler","directories":{"lib":"./lib","examples":"./examples","test":"./test"},"scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","snappy":"1.2.0","yaml":"0.1.1"},"devDependencies":{"mocha":"1.1.x","should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.7-pre","_defaultsLoaded":true,"dist":{"shasum":"c19cf408b37716eb67d514d5e3c24c42f8986ebb","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.3.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]},"0.0.4":{"name":"sampler","description":"Record things, play them back","version":"0.0.4","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"engines":{"node":"0.6.x || 0.7.x"},"main":"./lib/sampler","directories":{"lib":"./lib","examples":"./examples","test":"./test"},"scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","snappy":"1.2.0","libyaml":"0.1.1"},"devDependencies":{"should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"752f4b659fd6ebe91bee73b0909d0720a0612961","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.4.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]},"0.0.5":{"name":"sampler","description":"Record things, play them back","version":"0.0.5","repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"license":"BSD","author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"engines":{"node":"0.6.x || 0.7.x"},"main":"./lib/sampler","directories":{"lib":"./lib","examples":"./examples","test":"./test"},"scripts":{"build":"coffee --compile --output lib/ src/","watch":"coffee --watch --compile --output lib/ src/","test":"mocha","html":"mocha --reporter doc"},"dependencies":{"pkginfo":"0.2.x","moment":"1.6.x","snappy":"1.2.0","libyaml":"0.1.1"},"devDependencies":{"should":"0.6.x","coffee-script":"1.3.x"},"_npmUser":{"name":"jbilcke","email":"julian.bilcke@gmail.com"},"_id":"sampler@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e96b823611a9e9126460938df54d8e5a17e0bcf4","tarball":"http://registry.npmjs.org/sampler/-/sampler-0.0.5.tgz"},"maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}]}},"readme":"# node-sampler\n\n A library which record things and play them back\n\n## Overview\n\n Record byte streams/events (eg. twitter, music, IRC, Apache logs..) and play them back (eg. to test or debug an app, reproduce errors, simulate events)\n\n One the of main features is that you can ]S Ãùcontrol the rate speed, \n very useful to train machine learning algorithms on historic data (eg. Twitter streams)\n\n### Current status\n\n This library is still in development so expect heavy refactoring and sparse documentation until I have more time to settle everything.\n\n### TODO / Wishlist\n\n * real support of stream/buffer API\n * insertion of event at arbitrary timesteps (eg. when working with incomplete time-series)\n * reverse playback!\n\n### License\n\n BSD\n\n## Installation\n\n### For users\n\n#### Install it as a dependency for your project\n\n $ npm install sampler\n\n#### Install it globally in your system\n\n $ npm install sampler -g\n\n#### Run the tests\n\n $ npm run-script test\n\n### For developers\n\n To install node-sampler in a development setup:\n\n $ git clone http://github.com/daizoru/node-sampler.git\n $ cd node-sampler\n $ npm link\n $ # optional:\n $ # npm run-script test \n\n To build the coffee-script:\n\n $ npm run-script build\n\n\n## Documentation\n\n### Example\n\n``` coffeescript\n# myapp.coffee\nSampler = require 'sampler'\n\nsample = new Sampler()\nsample.on 'event', (event) -> log \"#{event.timestamp}: #{event.data}\"\n\n# coffee-style timeouts\ndelay = (t,f) -> setTimeout f, t\n\n# sample some dummy events\nlog \"sampling events..\"\ndelay 100, -> sample.rec companyhelpdesk: \"hi how can I help you\"\ndelay 500, -> sample.rec facebook: \"wow! this was a big earthquake\"\ndelay 1000, -> sample.rec twitter: \"just saw my dead neighbor walking in my street. It's weird. wait I'm gonna check it out\"\ndelay 1500, -> sample.rec twitter: \"ZOMBIE APOCALYPSE!!1!!\"\n\ndelay 2000, -> \n log \"playing events back..\"\n sample.play()\n\ndelay 5000, -> \n log \"playing events back. and faster.\"\n sample.play 5.0 # 2.0x\n\n```\n\n which should output something like:\n\n```\n\n10 Jun 14:57:49 - sampling events..\n10 Jun 14:57:51 - playing events back..\n10 Jun 14:57:51 - 1339333069383: { companyhelpdesk: 'hi how can I help you' }\n10 Jun 14:57:51 - 1339333069783: { facebook: 'wow! this was a big earthquake' }\n10 Jun 14:57:52 - 1339333070284: { twitter: 'just saw my dead neighbor walking in my street. It\\'s weird. wait I\\'m gonna check it out' }\n10 Jun 14:57:52 - 1339333070784: { twitter: 'ZOMBIE APOCALYPSE!!1!!' }\n10 Jun 14:57:54 - playing events back. and faster.\n10 Jun 14:57:54 - 1339333069383: { companyhelpdesk: 'hi how can I help you' }\n10 Jun 14:57:54 - 1339333069783: { facebook: 'wow! this was a big earthquake' }\n10 Jun 14:57:54 - 1339333070284: { twitter: 'just saw my dead neighbor walking in my street. It\\'s weird. wait I\\'m gonna check it out' }\n10 Jun 14:57:54 - 1339333070784: { twitter: 'ZOMBIE APOCALYPSE!!1!!' }\n\n```\n\n You can see it here but the second batch is two times faster\n\n","maintainers":[{"name":"jbilcke","email":"julian.bilcke@gmail.com"}],"time":{"modified":"2012-06-18T11:23:12.390Z","created":"2012-06-10T13:22:22.943Z","0.0.0":"2012-06-10T13:22:44.605Z","0.0.1":"2012-06-11T10:10:33.988Z","0.0.2":"2012-06-13T22:23:14.826Z","0.0.3":"2012-06-17T08:08:27.697Z","0.0.4":"2012-06-18T08:56:01.814Z","0.0.5":"2012-06-18T11:23:12.390Z"},"author":{"name":"Julian Bilcke","email":"julian.bilcke@daizoru.com","url":"http://github.com/daizoru"},"repository":{"type":"git","url":"git://github.com/daizoru/node-sampler.git"},"_id":"sampler","_rev":"1-962821d826512ad8ae70343a22ccf14b"}ÿdocument-storeÿsafedirš{"id":"safedir","rev":"1-820874f7636d883d2cb54aa5c82fc4bc","rev_tree":[{"pos":1,"ids":["820874f7636d883d2cb54aa5c82fc4bc",{"status":"available"},[]]}],"rev_map":{"1-820874f7636d883d2cb54aa5c82fc4bc":3356},"winningRev":"1-820874f7636d883d2cb54aa5c82fc4bc","deleted":false,"seq":3356}ÿby-sequenceÿ0000000000003356—9{"name":"safedir","description":"Find directory files, and return an array","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"safedir","description":"Find directory files, and return an array","version":"0.2.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./safedir.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/safedir.git"},"keywords":["dirread","absolute","filepath","content"],"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.8","npm":"1"},"readme":"#safedir\n\n## Installation\n\n```sheel\nnpm install safedir\n```\n\n## API documentation\n\nThe safedir module do only return one function `var safedir = require('safedir');`.\n\n### safedir(path, [showHidden=false], callback)\n\nThe function takes 3 arguments, `showHidden` is optional and is by default `false`.\n\n* `path`: the filepath\n* `showHidden`: if true files there start with a `.` will be included too.\n* `callback`: called with an `error` and a `list` argument.\n\nIt is improtant to note that the filepaths given in `list`, are relative to `path`\nbut start with a `/`.\n\n##License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"safedir@0.2.0","dist":{"shasum":"39c0bdafbd03507905db8b43f9faf766392eafe1","tarball":"http://registry.npmjs.org/safedir/-/safedir-0.2.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.3.0":{"name":"safedir","description":"Find directory files, and return an array","version":"0.3.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./safedir.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/safedir.git"},"keywords":["dirread","absolute","filepath","content"],"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.8","npm":"1"},"readme":"#safedir\n\n## Installation\n\n```sheel\nnpm install safedir\n```\n\n## API documentation\n\nThe safedir module do only return one function `var safedir = require('safedir');`.\n\n### safedir(path, [options], callback)\n\nThe function takes 3 arguments, but `options` is optional.\n\n* `path`: the filepath\n* `options`: an settings object, the following properties can be set\n * `safe` (default: ture): if true, all filepath are relative to `path` but start with a `/`.\n * `hidden` (default: false): if true, hidden file will be included in the result `list`.\n* `callback`: called with an `error` and a `list` argument.\n\n##License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"safedir@0.3.0","dist":{"shasum":"5ca6beaaacc44f5d04e4c50af2a5b91f5e2aaeb5","tarball":"http://registry.npmjs.org/safedir/-/safedir-0.3.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]}},"readme":"#safedir\n\n## Installation\n\n```sheel\nnpm install safedir\n```\n\n## API documentation\n\nThe safedir module do only return one function `var safedir = require('safedir');`.\n\n### safedir(path, [showHidden=false], callback)\n\nThe function takes 3 arguments, `showHidden` is optional and is by default `false`.\n\n* `path`: the filepath\n* `showHidden`: if true files there start with a `.` will be included too.\n* `callback`: called with an `error` and a `list` argument.\n\nIt is improtant to note that the filepaths given in `list`, are relative to `path`\nbut start with a `/`.\n\n##License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}],"time":{"modified":"2012-08-02T13:44:32.033Z","created":"2012-07-24T12:04:02.646Z","0.2.0":"2012-07-24T12:04:24.832Z","0.3.0":"2012-07-24T15:07:02.466Z"},"author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"repository":{"type":"git","url":"git://github.com/AndreasMadsen/safedir.git"},"users":{"fgribreau":true},"_id":"safedir","_rev":"1-820874f7636d883d2cb54aa5c82fc4bc"}!ÿdocument-storeÿroutil-encoding¢{"id":"routil-encoding","rev":"1-ecd3b7db3fefb9d23927b2e7fd10e343","rev_tree":[{"pos":1,"ids":["ecd3b7db3fefb9d23927b2e7fd10e343",{"status":"available"},[]]}],"rev_map":{"1-ecd3b7db3fefb9d23927b2e7fd10e343":3355},"winningRev":"1-ecd3b7db3fefb9d23927b2e7fd10e343","deleted":false,"seq":3355}ÿby-sequenceÿ0000000000003355â{"name":"routil-encoding","description":"handle multiple encodings","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"routil-encoding","version":"0.0.1","description":"handle multiple encodings","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-encoding.git"},"main":"index","homepage":"https://github.com/Raynos/routil-encoding","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/routil-encoding/issues","email":"raynos2@gmail.com"},"dependencies":{"negotiator":"~0.2.4"},"devDependencies":{"tap":"0.2.5","test-server":"0.0.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/routil-encoding/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# routil-encoding [![build status][1]][2]\n\nhandle multiple encodings\n\n## Example\n\n var http = require(\"http\")\n , encoding = require(\"routil-encoding\")\n , data = someData\n\n http.createServer(function (req, res) {\n encoding(req, {\n \"gzip\": returnGzipped\n , default: returnNormal\n })(req, res)\n }).listen(8080)\n\n function returnGzipped(req, res) {\n // some gzip function\n gzip(data, function (gzipped) {\n res.end(gzipped)\n })\n }\n\n function returnNormal(req, res) {\n res.end(data)\n }\n\n## Installation\n\n`npm install routil-encoding`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-encoding.png\n [2]: http://travis-ci.org/Raynos/routil-encoding","_id":"routil-encoding@0.0.1","dist":{"shasum":"725242e645213597bbfe6a87a99ba0704f355bfe","tarball":"http://registry.npmjs.org/routil-encoding/-/routil-encoding-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# routil-encoding [![build status][1]][2]\n\nhandle multiple encodings\n\n## Example\n\n var http = require(\"http\")\n , encoding = require(\"routil-encoding\")\n , data = someData\n\n http.createServer(function (req, res) {\n encoding(req, {\n \"gzip\": returnGzipped\n , default: returnNormal\n })(req, res)\n }).listen(8080)\n\n function returnGzipped(req, res) {\n // some gzip function\n gzip(data, function (gzipped) {\n res.end(gzipped)\n })\n }\n\n function returnNormal(req, res) {\n res.end(data)\n }\n\n## Installation\n\n`npm install routil-encoding`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-encoding.png\n [2]: http://travis-ci.org/Raynos/routil-encoding","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-07-16T06:13:26.773Z","created":"2012-07-16T06:13:22.608Z","0.0.1":"2012-07-16T06:13:26.773Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-encoding.git"},"_id":"routil-encoding","_rev":"1-ecd3b7db3fefb9d23927b2e7fd10e343"}ÿdocument-storeÿrocketscience {"id":"rocketscience","rev":"1-6d25da88f149ac733a14abfae130da0b","rev_tree":[{"pos":1,"ids":["6d25da88f149ac733a14abfae130da0b",{"status":"available"},[]]}],"rev_map":{"1-6d25da88f149ac733a14abfae130da0b":3354},"winningRev":"1-6d25da88f149ac733a14abfae130da0b","deleted":false,"seq":3354}ÿby-sequenceÿ0000000000003354…u{"name":"rocketscience","description":"Asynchronous JavaScript testing framework.","dist-tags":{"latest":"12.7.22"},"versions":{"12.4.0":{"name":"rocketscience","main":"RocketScience.js","description":"Asynchronous JavaScript testing framework.","author":{"name":"Jonathan Steinbeck","email":"jonathan@steinbeck.in"},"version":"12.4.0","_npmUser":{"name":"jsteinbeck","email":"jonathan@steinbeck.in"},"_id":"rocketscience@12.4.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"d69481c2da136c28016275f080a7314126f1d882","tarball":"http://registry.npmjs.org/rocketscience/-/rocketscience-12.4.0.tgz"},"maintainers":[{"name":"jsteinbeck","email":"jonathan@steinbeck.in"}]},"12.4.1":{"name":"rocketscience","main":"RocketScience.js","description":"Asynchronous JavaScript testing framework.","author":{"name":"Jonathan Steinbeck","email":"jonathan@steinbeck.in"},"version":"12.4.1","_npmUser":{"name":"jsteinbeck","email":"jonathan@steinbeck.in"},"_id":"rocketscience@12.4.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6ec80f8aae7f4a60fbfcf26ff6c0fde7b6104a97","tarball":"http://registry.npmjs.org/rocketscience/-/rocketscience-12.4.1.tgz"},"maintainers":[{"name":"jsteinbeck","email":"jonathan@steinbeck.in"}]},"12.7.22":{"name":"rocketscience","main":"RocketScience.js","description":"Asynchronous JavaScript testing framework.","author":{"name":"Jonathan Steinbeck","email":"jonathan@steinbeck.in"},"version":"12.7.22","_npmUser":{"name":"jsteinbeck","email":"jonathan@steinbeck.in"},"_id":"rocketscience@12.7.22","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0ca2b2c6c22f38a949c7aa67d5034264abaa3c6f","tarball":"http://registry.npmjs.org/rocketscience/-/rocketscience-12.7.22.tgz"},"maintainers":[{"name":"jsteinbeck","email":"jonathan@steinbeck.in"}]}},"readme":"# RocketScience.js #\n\nRocketScience is an event-driven, asynchronous testing framework for JavaScript.\nIt works in both browser environments and on the server (node.js).\n\n![RocketScience.js in the browser](http://img.steinbeck.in/rocketscience.js-in-the-browser.jpg)\n\n\n## Concepts ##\n\n * __TestCase__: A TestCase in RocketScience is one single test that can use\n any number of assertions to test some code. A TestCase consists of a name,\n at least one method to run some code and optionally a check method to \n test asynchronous stuff. A TestCase can also have an initialization method\n and you can define an offset time for when the check method should be run\n after the main test method has been called.\n\n * __TestSuite__: A TestSuite consists of a bunch of similar TestCases.\n\n * __TestLab__: A TestLab can be used to bundle TestSuites and exercise them.\n\n * __Monitor__: A monitor is used to listen for ongoing tests and their results\n and displays them in one way or another. RocketScience comes with two\n monitors by default, namely the HTML monitor to be used in browser environments\n and the Console monitor which uses either the web console or node's console\n to display results. Also, writing your own monitors is really easy.\n\n\n## Installation ##\n\nGrab the latest version from the download section on GitHub:\n[RocketScience.js on GitHub](https://github.com/jsteinbeck/RocketScience.js/downloads \"Download RocketScience.js here.\")\n\nExtract the archive in a directory of your choice. If you only want to use RocketScience in\nthe browser, that's it for the installation.\n\n\n### On Node.js ###\n\nFor node you can install the \"rocketscience\" package globally by changing to the directory\nwhere you extracted the archive and running:\n\n sudo npm install -g\n\nThen in node files, you can do:\n\n```javascript\nvar ROCKET = require(\"rocketscience\");\n```\n\nOr you can skip the install and use it like this:\n\n```javascript\nvar ROCKET = require(\"./path/to/RocketScience.js/RocketScience.js\");\n```\n\n\n### Test the install ###\n\nRocketScience includes a test file for Squiddle.js which you can use on both\nthe browser and node.\n\nTo test it in the browser, just open the file \"tests/Squiddle.js.test.html\" or\ndrag it onto the browser window.\n\nTo test in node, open up a console and type:\n\n cd path/to/RocketScience.js/tests/\n node Squiddle.js.test.node.js\n\n\n## Usage ##\n\nA simple test case could look like this:\n\n```javascript\nvar test = new ROCKET.TestCase(\n \"My first test case.\",\n function( params ) // The main testing function.\n {\n params.value = false;\n },\n function( params ) // The checker function.\n {\n this.assertEquals( params.value, true, \"Hey, params.value should be true!\" );\n },\n {\n init: function() { return { value: true }; }, // Reset/Create the params object\n wait: 20 // Wait 20 milliseconds before performing the check\n }\n);\n```\n\nNow that we have a test, we need to add it to a suite:\n\n```javascript\nvar suite = new ROCKET.TestSuite( \"My first test suite.\" );\nsuite.addTestCase( test );\n```\n\nAnd then we create a new test lab to add the suite to:\n\n```javascript\nvar lab = new ROCKET.TestLab( \"My first test lab.\" );\nlab.addTestSuite( suite );\n```\n\nWe could now exercise our test by running the lab. But it wouldn't show the results.\nWhat we need is to create a monitor and switch it on. For this example, we are\ngoing to use the Console monitor, as it works on both browsers and on node:\n\n```javascript\nvar monitor = new ROCKET.monitors.Console();\nmonitor.switchOn();\n```\n\nThat's it, we are now prepared to run our tests. To do that, we simply need to\ncall the run method on our lab:\n\n```javascript\nlab.run();\n```\n\n__Best practice__: Write your test files in a way so that they can be run on both \nserver-side and client-side environments. To do that, you should only prepare\nyour cases, suites and labs in the test file and have another file for each\nof the environments. In case of the browser this would be an HTML file\nin which you set up the HTML monitor and run the lab. You can just copy one\nof the existing tests and modify it:\n\n```html\n\n\n \n RocketScience.js\n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n```\n\nFor node, you would import your test file as a module, create a Console monitor\nand then run the lab, e.g. like:\n\n```javascript\nvar ROCKET, test, monitor;\n\nROCKET = require(\"../RocketScience.js\"); // Load RocketScience\ntest = require(\"./Squiddle.js.test.js\"); // Load the test\n\n// Set up the Console monitor:\nmonitor = new ROCKET.monitors.Console();\nmonitor.switchOn();\n\ntest.lab.run(); // Run the exported lab.\n```\n\n\nNote: For both examples we assumed that you put your tests inside the \"tests\" directory\nof RocketScience. If you put your tests in another directory, you need to change the paths\naccordingly.\n\nAnd finally, this is what a test looks like that works on both node and the browser:\n\n```javascript\nvar test = ( function( exports )\n{\n // Define the vars for your lab, suites and cases:\n var lab, suite, case;\n\n exports = exports || {}; // If not on node, just mock the exports object.\n\n // ... Create your test case(s), suite(s) and lab here.\n\n // Add your cases to their suites and your suites to the lab:\n suite.addTestCase( case );\n lab.addTestSuite( suite );\n \n exports.lab = lab; // Export your lab for node.\n \n return lab; // Return the lab (for browsers).\n\n}(\n (typeof exports === \"undefined\") ? false : exports\n));\n```\n\n\n## Documentation ##\n\n\n![RocketScience.js in the browser](http://img.steinbeck.in/rocketscience.js-structure.jpg \"RocketScience.js structure\")\n\n![RocketScience.js events](http://img.steinbeck.in/rocketscience.js-events.jpg \"RocketScience.js events\")\n\n\n### [Constructor] ROCKET.TestCase ###\n\n ROCKET.TestCase( [String] name, [Function] fn, [Function] checker+, [Object] args+ );\n\nConstructs a new TestCase.\n\n * `[String] name`: A name to identify the test case.\n\n * `[Function] fn( [Object] params )`: The main testing function. Can be used to \n both exercise some stuff and assert results.\n\n * `[Function] checker( [Object] params )`: A function to assert results of asynchronous code. \n It will be called after the time specified in the `wait` property of `args` (default: 0 milliseconds).\n The `params` parameter is the same object shared with the `fn` function. Note: If you don't\n test asynchronous code in the test case, you can ommit the checker function and use\n your assertions directly in `fn`.\n\n * `[Object] args`: Optional arguments for the test case.\n - `[Number] wait`: Wait this number of milliseconds before calling the checker function. Default: 0.\n - `[Function] init()`: A function to construct the `params` object to be used in both the main testing\n function and the checker function. The default function just returns a new empty object literal.\n\n\n### [Function] ROCKET.TestCase.prototype.assert ###\n\n ROCKET.TestCase.prototype.assert( [Mixed] value, [String] message+ );\n\nAsserts that `value` is `true`. Throws a ROCKET.AssertionError if it's not.\n\n * `[Mixed] value`: The value to be tested. It is expected to be `=== true`.\n\n * `[String] message`: Optional message to describe what was expected.\n\n\n### [Function] ROCKET.TestCase.prototype.assertTruthy ###\n\n ROCKET.TestCase.prototype.assertTruthy( [Mixed] value, [String] message+ );\n\nAsserts that `value` is truthy. Throws a ROCKET.AssertionError if it's not.\n\n * `[Mixed] value`: The value to be tested. It is expected to be `== true`.\n\n * `[String] message`: Optional message to describe what was expected.\n\n\n### [Function] ROCKET.TestCase.prototype.assertEquals ###\n\n ROCKET.TestCase.prototype.assertEquals( [Mixed] value, [Mixed] expect, [String] message+ );\n\nAsserts that `value` is === `expect`. Throws a ROCKET.AssertionError if that's not the case.\n\n * `[Mixed] value`: The actual value.\n\n * `[Mixed] expect`: The expected value.\n\n * `[String] message`: Optional message to describe what was expected.\n\n\n### [Constructor] ROCKET.AssertionError ###\n\n ROCKET.AssertionError( [String] message+ );\n\nConstructs a new throwable assertion error. When an assertion fails, this error\nis thrown.\n\n * `[String] message`: A message describing the error.\n\n\n### [Constructor] ROCKET.TestSuite ###\n\n ROCKET.TestSuite( [String] name );\n\nConstructs a new TestSuite.\n\n * `[String] name`: The name of the test suite.\n\n\n### [Function] ROCKET.TestSuite.prototype.add ###\n\n ROCKET.TestSuite.prototype.addTestCase( [ROCKET.TestCase] testCase );\n\nAdds a test case to the suite.\n\n\n### [Constructor] ROCKET.TestLab ###\n\n ROCKET.TestLab( [String] name );\n\nConstructs a new TestLab.\n\n * `[String] name`: The name of the test lab.\n\n\n### [Function] ROCKET.TestLab.prototype.addTestSuite ###\n\n ROCKET.TestLab.prototype.addTestSuite( [ROCKET.TestSuite] suite );\n\nAdds a test suite to the test lab.\n\n\n### [Function] ROCKET.TestLab.prototype.run ###\n\n ROCKET.TestLab.prototype.run();\n\nRuns all the test suites added to the lab.\n\n\n### [Constructor] ROCKET.monitors.(HTML|Console) ###\n\n ROCKET.monitors.HTML();\n ROCKET.monitors.Console();\n\nConstructs a new monitor.\n\n\n### [Function] ROCKET.monitors.(HTML|Console).switchOn ###\n\n ROCKET.monitors.HTML.prototype.switchOn();\n ROCKET.monitors.Console.prototype.switchOn();\n\nSwitches the monitor on so that it actively listens for ongoing tests.\n\n\n\n## License Agreement ##\n\nLicense: BSD 3-Clause License.\n\n Copyright (c) 2012 Jonathan Steinbeck\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n \n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n * Neither the name RocketScience.js nor the names of its contributors \n may be used to endorse or promote products derived from this software \n without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n","maintainers":[{"name":"jsteinbeck","email":"jonathan@steinbeck.in"}],"time":{"modified":"2012-07-22T10:00:11.269Z","created":"2012-04-22T15:44:29.691Z","12.4.0":"2012-04-22T15:44:32.050Z","12.4.1":"2012-04-22T18:16:51.811Z","12.7.22":"2012-07-22T10:00:11.269Z"},"author":{"name":"Jonathan Steinbeck","email":"jonathan@steinbeck.in"},"_id":"rocketscience","_rev":"1-6d25da88f149ac733a14abfae130da0b"}ÿdocument-storeÿrmdirrfš{"id":"rmdirrf","rev":"1-2bee76780c703acdebdc5e31ea9e9385","rev_tree":[{"pos":1,"ids":["2bee76780c703acdebdc5e31ea9e9385",{"status":"available"},[]]}],"rev_map":{"1-2bee76780c703acdebdc5e31ea9e9385":3353},"winningRev":"1-2bee76780c703acdebdc5e31ea9e9385","deleted":false,"seq":3353}ÿby-sequenceÿ0000000000003353ß {"name":"rmdirrf","description":"Recursively remove all files and directories like rmdir -rf, but in node.js.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"rmdirrf","version":"0.1.0","description":"Recursively remove all files and directories like rmdir -rf, but in node.js.","main":"index.js","dependencies":{"stepup":"~0.0.11"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/Schoonology/node-rmdirrf.git"},"author":{"name":"Michael Schoonmaker","email":"michael.r.schoonmaker@gmail.com"},"license":"MIT","readme":"node-rmdirrf\n============\n\nRecursively remove all files and directories like rmdir -rf, but in node.js.","_id":"rmdirrf@0.1.0","dist":{"shasum":"e5a0eec0307100ecf3e1737ac15cf850fdca17f2","tarball":"http://registry.npmjs.org/rmdirrf/-/rmdirrf-0.1.0.tgz"},"maintainers":[{"name":"schoonology","email":"michael.r.schoonmaker@gmail.com"}]}},"readme":"node-rmdirrf\n============\n\nRecursively remove all files and directories like rmdir -rf, but in node.js.","maintainers":[{"name":"schoonology","email":"michael.r.schoonmaker@gmail.com"}],"time":{"modified":"2012-08-18T02:47:14.675Z","created":"2012-08-18T02:47:12.823Z","0.1.0":"2012-08-18T02:47:14.675Z"},"author":{"name":"Michael Schoonmaker","email":"michael.r.schoonmaker@gmail.com"},"repository":{"type":"git","url":"git://github.com/Schoonology/node-rmdirrf.git"},"_id":"rmdirrf","_rev":"1-2bee76780c703acdebdc5e31ea9e9385"}ÿdocument-storeÿrewriter›{"id":"rewriter","rev":"1-9380335c5b4dbe3467eb79ede55d011e","rev_tree":[{"pos":1,"ids":["9380335c5b4dbe3467eb79ede55d011e",{"status":"available"},[]]}],"rev_map":{"1-9380335c5b4dbe3467eb79ede55d011e":3352},"winningRev":"1-9380335c5b4dbe3467eb79ede55d011e","deleted":false,"seq":3352}ÿby-sequenceÿ0000000000003352ÑQ{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","dist-tags":{"latest":"0.0.11"},"versions":{"0.0.1":{"name":"rewriter","description":"CouchApp emulator for node.","tags":["couch","couchdb"],"version":"0.0.1","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.1","dependencies":{},"devDy@n^ùependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"7cdf4fcf00e4d27db881886752a341583af6ada0","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.1.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.2":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.2","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.2","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"640f1b9d4908da4e429666047f695f99ecc22694","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.2.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.3":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.3","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.3","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"50f616fd2bf094fd9d41bd613cd0c49e0e2eb7bf","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.3.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.4":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.4","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.4","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"52e22075eb8615d2fd6eb3eaa8d69c512ae7d142","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.4.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.5":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.5","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.5","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"e1511045165bfd47f385251e95f11cfc6e8dc6db","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.5.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.6":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.6","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.6","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"fe9adec6235aa09b36109bc9999d71cfcb1079e9","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.6.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.7":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.7","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.7","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"63f3c42a951061878efa05715f66013decae8b30","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.7.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.8":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.8","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.8","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"7629acaea4eec37a2fcfdff3eafd5c37cc676192","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.8.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.9":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.9","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.9","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"86a6ca77cc9f77514e22dc0d2fb25bc58c5b2dd3","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.9.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.10":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.10","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","dependencies":{"request":"2.9.3","filed":"0.0.6","underscore":"1.2.1","morestreams":"0.0.2"},"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.10","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"d38547154877b52c3c63729f3d2f6cd27404ebe4","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.10.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.11":{"name":"rewriter","description":"streaming http + file routing proxy. serve apps easily!","tags":["framework","server","static","couch","couchdb","nodepointjavascript"],"version":"0.0.11","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"bugs":{"url":"http://github.com/maxogden/rewriter/issues"},"engines":["node >= 0.3.6"],"main":"./main","dependencies":{"request":"2.9.3","filed":"0.0.6","underscore":"1.2.1","morestreams":"0.0.2"},"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"rewriter@0.0.11","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"e7737163b369451bee519fa759b6638f183f376c","tarball":"http://registry.npmjs.org/rewriter/-/rewriter-0.0.11.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]}},"readme":"serve couchapps with node. work in progress\n\nMIT License","maintainers":[{"name":"maxogden","email":"max@maxogden.com"}],"time":{"modified":"2012-07-21T22:25:41.828Z","created":"2012-01-23T04:39:10.399Z","0.0.1":"2012-01-23T04:39:11.797Z","0.0.2":"2012-01-26T03:17:47.967Z","0.0.3":"2012-01-27T05:18:13.467Z","0.0.4":"2012-02-03T03:07:36.298Z","0.0.5":"2012-03-13T02:21:33.958Z","0.0.6":"2012-03-13T02:24:23.894Z","0.0.7":"2012-03-16T23:47:34.040Z","0.0.8":"2012-03-22T20:38:01.187Z","0.0.9":"2012-03-22T20:52:01.720Z","0.0.10":"2012-03-26T19:00:34.676Z","0.0.11":"2012-07-21T22:25:41.828Z"},"author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/rewriter.git"},"_id":"rewriter","_rev":"1-9380335c5b4dbe3467eb79ede55d011e"}#ÿdocument-storeÿresponse-redirect¤{"id":"response-redirect","rev":"1-73eccebaebf0fb36d0d3a1f96360ecc5","rev_tree":[{"pos":1,"ids":["73eccebaebf0fb36d0d3a1f96360ecc5",{"status":"available"},[]]}],"rev_map":{"1-73eccebaebf0fb36d0d3a1f96360ecc5":3351},"winningRev":"1-73eccebaebf0fb36d0d3a1f96360ecc5","deleted":false,"seq":3351}ÿby-sequenceÿ0000000000003351§ {"name":"response-redirect","description":"response.redirect() prototype method","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"response-redirect","version":"0.0.1","description":"response.redirect() prototype method","keywords":["http","connect","express"],"repository":{"type":"git","url":"git://github.com/jaredhanson/node-response-redirect.git"},"bugs":{"url":"http://github.com/jaredhanson/node-response-redirect/issues"},"author":{"name":"Jared Hanson","email":"jaredhanson@gmail.com","url":"http://www.jaredhanson.net/"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"main":"index","dependencies":{},"devDependencies":{"vows":"0.6.x"},"scripts":{"test":"NODE_PATH=lib node_modules/.bin/vows test/*-test.js"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"jaredhanson","email":"jaredhanson@gmail.com"},"_id":"response-redirect@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"4a394c307efc384566897685ecc9bce82e4023c6","tarball":"http://registry.npmjs.org/response-redirect/-/response-redirect-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jaredhanson","email":"jaredhanson@gmail.com"}]}},"readme":"","maintainers":[{"name":"jaredhanson","email":"jaredhanson@gmail.com"}],"time":{"modified":"2012-07-15T19:56:31.567Z","created":"2012-07-15T19:56:30.069Z","0.0.1":"2012-07-15T19:56:31.567Z"},"author":{"name":"Jared Hanson","email":"jaredhanson@gmail.com","url":"http://www.jaredhanson.net/"},"repository":{"type":"git","url":"git://github.com/jaredhanson/node-response-redirect.git"},"_id":"response-redirect","_rev":"1-73eccebaebf0fb36d0d3a1f96360ecc5"} ÿdocument-storeÿreload-browser¡{"id":"reload-browser","rev":"1-06231a1e893254d476fc83fde9b8ffaf","rev_tree":[{"pos":1,"ids":["06231a1e893254d476fc83fde9b8ffaf",{"status":"available"},[]]}],"rev_map":{"1-06231a1e893254d476fc83fde9b8ffaf":3350},"winningRev":"1-06231a1e893254d476fc83fde9b8ffaf","deleted":false,"seq":3350}ÿby-sequenceÿ0000000000003350ú@{"name":"reload-browser","description":"Reload the browser from the command line","dist-tags":{"latest":"0.5.3"},"versions":{"0.1.0":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"dependencies":{"message-ports":"0.4.x"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.1.0","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.1.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"88b2a2c97a2fd0afcdc06c7a3f3a4cbc9d26f32f","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.1.0.tgz"},"maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.2.0-dev":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"dependencies":{"message-ports":"0.4.x"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.2.0-dev","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.2.0-dev","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.13","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"9dc658a6927ef186d8ab9d17c4abf52210320866","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.2.0-dev.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.4.0":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"dependencies":{"message-ports":"0.4.x"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.4.0","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.13","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3d212e7808e15e0e77c2989bc88067b017967811","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.4.0.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.4.1":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/send-reload.js","engines":{"node":">=0.6"},"dependencies":{"message-ports":"0.4.x"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.4.1","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.4.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.13","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"d883c8da43c43e2ed33480969454cfdd78b347a7","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.4.1.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.5.0":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"dependencies":{"message-ports":"0.4.x"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.5.0","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.5.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"741f6ad65773eb4a084c3a7a80fc83d2dff93c6f","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.5.0.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.5.1":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.5.1","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.5.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"b1d5d40b9236290a18f23a5a59549d5c55b4b765","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.5.1.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.5.2":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"devDependencies":{"coffee-script":"1.2.x"},"version":"0.5.2","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.5.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.13","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"68c5b1e155b8a1b9b4ba0ada5d4e1071950419a9","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.5.2.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]},"0.5.3":{"name":"reload-browser","description":"Reload the browser from the command line","bin":{"reload-browser":"./bin/reload-browser"},"main":"./lib/reload-browser.js","engines":{"node":">=0.6"},"devDependencies":{"coffee-script":"1.2.x"},"dependencies":{"ws":"0.4.14"},"version":"0.5.3","licenses":[{"type":"MIT","url":"https://github.com/quackingduck/reload-browser/raw/master/LICENSE"}],"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_npmUser":{"name":"quackingduck","email":"myles@myles.id.au"},"_id":"reload-browser@0.5.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.6","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"99005573e2483c2a713f8ca401a9e91b7db7059b","tarball":"http://registry.npmjs.org/reload-browser/-/reload-browser-0.5.3.tgz"},"readme":"","maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}]}},"readme":null,"maintainers":[{"name":"quackingduck","email":"myles@myles.id.au"}],"time":{"modified":"2012-05-16T16:43:28.551Z","created":"2012-02-11T19:11:21.477Z","0.1.0":"2012-02-11T19:11:22.112Z","0.2.0-dev":"2012-05-04T21:29:36.152Z","0.4.0":"2012-05-04T21:32:25.678Z","0.4.1":"2012-05-04T21:41:10.702Z","0.5.0":"2012-05-10T17:42:32.718Z","0.5.1":"2012-05-10T17:46:17.049Z","0.5.2":"2012-05-12T20:32:12.497Z","0.5.3":"2012-05-16T16:43:28.551Z"},"author":{"name":"Myles Byrne"},"repository":{"type":"git","url":"git://github.com/quackingduck/reload-browser.git"},"_id":"reload-browser","_rev":"1-06231a1e893254d476fc83fde9b8ffaf"}ÿdocument-storeÿrelease-utils {"id":"release-utils","rev":"1-58280167cb13a40e4f46ce1011c5f1d1","rev_tree":[{"pos":1,"ids":["58280167cb13a40e4f46ce1011c5f1d1",{"status":"available"},[]]}],"rev_map":{"1-58280167cb13a40e4f46ce1011c5f1d1":3349},"winningRev":"1-58280167cb13a40e4f46ce1011c5f1d1","deleted":false,"seq":3349}ÿby-sequenceÿ0000000000003349Ú${"name":"release-utils","description":"Tools for incrementing versions and tagging projects in Git. Also contains a script for packaging npm modules and uploading them to S3 which is useful for deploying closed-source npm modules.","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"release-utils","version":"0.0.1","description":"Tools for incrementing versions and tagging projects in Git. Also contains a script for packaging npm modules and uploading them to S3 which is useful for deploying closed-source npm modules.","author":{"name":"Charles Care","email":"c.p.care@gmail.com"},"contributors":[{"name":"Charles Care","email":"c.p.care@gmail.com"}],"repository":{"type":"git","url":"git://github.com/ccare/s3-release.git"},"dependencies":{"knox":">= 0.0.9"},"engines":{"node":">= 0.4.0"},"scripts":{"tag-release":"node npm-release.js"},"_npmUser":{"name":"ccare","email":"c.p.care@gmail.com"},"_id":"release-utils@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"6cca488074122b0b1926b9cf5ef290418c9b553a","tarball":"http://registry.npmjs.org/release-utils/-/release-utils-0.0.1.tgz"},"maintainers":[{"name":"ccare","email":"c.p.care@gmail.com"}]},"0.0.2":{"name":"release-utils","version":"0.0.2","description":"Tools for incrementing versions and tagging projects in Git. Also contains a script for packaging npm modules and uploading them to S3 which is useful for deploying closed-source npm modules.","author":{"name":"Charles Care","email":"c.p.care@gmail.com"},"contributors":[{"name":"Charles Care","email":"c.p.care@gmail.com"}],"repository":{"type":"git","url":"git://github.com/ccare/s3-release.git"},"dependencies":{"knox":">= 0.0.9"},"engines":{"node":">= 0.4.0"},"scripts":{"release":"node npm-release.js"},"_npmUser":{"name":"ccare","email":"c.p.care@gmail.com"},"_id":"release-utils@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"39d6b2cce5e09a2faa4a3292d28faba99e45aa65","tarball":"http://registry.npmjs.org/release-utils/-/release-utils-0.0.2.tgz"},"maintainers":[{"name":"ccare","email":"c.p.care@gmail.com"}]},"0.0.3":{"name":"release-utils","version":"0.0.3","description":"Tools for incrementing versions and tagging projects in Git. Also contains a script for packaging npm modules and uploading them to S3 which is useful for deploying closed-source npm modules.","author":{"name":"Charles Care","email":"c.p.care@gmail.com"},"contributors":[{"name":"Charles Care","email":"c.p.care@gmail.com"}],"repository":{"type":"git","url":"git://github.com/ccare/s3-release.git"},"dependencies":{"knox":">= 0.0.9"},"engines":{"node":">= 0.4.0"},"scripts":{"build-release":"node npm-release.js"},"_npmUser":{"name":"ccare","email":"c.p.care@gmail.com"},"_id":"release-utils@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"67aa172b543c9660e3dc6d840c1622ad00ffa19f","tarball":"http://registry.npmjs.org/release-utils/-/release-utils-0.0.3.tgz"},"maintainers":[{"name":"ccare","email":"c.p.care@gmail.com"}]},"0.0.4":{"name":"release-utils","version":"0.0.4","description":"Tools for incrementing versions and tagging projects in Git. Also contains a script for packaging npm modules and uploading them to S3 which is useful for deploying closed-source npm modules.","author":{"name":"Charles Care","email":"c.p.care@gmail.com"},"contributors":[{"name":"Charles Care","email":"c.p.care@gmail.com"}],"repository":{"type":"git","url":"git://github.com/ccare/s3-release.git"},"dependencies":{"knox":">= 0.0.9"},"engines":{"node":">= 0.4.0"},"scripts":{"build-release":"node npm-release.js"},"_npmUser":{"name":"ccare","email":"c.p.care@gmail.com"},"_id":"release-utils@0.0.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"ec6af1dc5199b6f34150cbe768317b938489835b","tarball":"http://registry.npmjs.org/release-utils/-/release-utils-0.0.4.tgz"},"maintainers":[{"name":"ccare","email":"c.p.care@gmail.com"}]}},"readme":null,"maintainers":[{"name":"ccare","email":"c.p.care@gmail.com"}],"time":{"modified":"2012-03-21T13:56:03.326Z","created":"2012-03-01T14:18:25.810Z","0.0.1":"2012-03-01T14:18:27.646Z","0.0.2":"2012-03-01T14:18:33.450Z","0.0.3":"2012-03-21T13:43:24.177Z","0.0.4":"2012-03-21T13:56:03.326Z"},"author":{"name":"Charles Care","email":"c.p.care@gmail.com"},"repository":{"type":"git","url":"git://github.com/ccare/s3-release.git"},"_id":"release-utils","_rev":"1-58280167cb13a40e4f46ce1011c5f1d1"}ÿdocument-storeÿredriakš{"id":"redriak","rev":"1-9c3667d7cc0adc61d757166d6fcea69f","rev_tree":[{"pos":1,"ids":["9c3667d7cc0adc61d757166d6fcea69f",{"status":"available"},[]]}],"rev_map":{"1-9c3667d7cc0adc61d757166d6fcea69f":3348},"winningRev":"1-9c3667d7cc0adc61d757166d6fcea69f","deleted":false,"seq":3348}ÿby-sequenceÿ0000000000003348ñ {"name":"redriak","description":"A client that stores data in both Riak and Redis. A port of Mikeal's redcouch (http://github.com/mikeal/redcouch)","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"David Björklund","email":"david.bjorklund@gmail.com","url":"http://www.davidbjorklund.se"},"name":"redriak","description":"A client that stores data in both Riak and Redis. A port of Mikeal's redcouch (http://github.com/mikeal/redcouch)","version":"0.0.1","repository":{"type":"git","url":"git://github.com/kesla/redriak.git"},"main":"index.js","dependencies":{"riak-js":"*","redis":"*","underscore":"*","async":"*"},"devDependencies":{},"contributors":[{"name":"Mikeal Rogers","email":"mikeal.rogers@gmail.com","url":"http://www.mikealrogers.com"}],"_npmUser":{"name":"kesla","email":"david.bjorklund@gmail.com"},"_id":"redriak@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"3abc2caaae5e699a26d2d15bb3f27ae391dea9d2","tarball":"http://registry.npmjs.org/redriak/-/redriak-0.0.1.tgz"},"readme":"","maintainers":[{"name":"kesla","email":"david.bjorklund@gmail.com"}]}},"readme":"","maintainers":[{"name":"kesla","email":"david.bjorklund@gmail.com"}],"time":{"modified":"2012-03-21T15:43:33.498Z","created":"2012-03-21T15:43:31.663Z","0.0.1":"2012-03-21T15:43:33.498Z"},"author":{"name":"David Björklund","email":"david.bjorklund@gmail.com","url":"http://www.davidbjorklund.se"},"repository":{"type":"git","url":"git://github.com/kesla/redriak.git"},"_id":"redriak","_rev":"1-9c3667d7cc0adc61d757166d6fcea69f"}!ÿdocument-storeÿredis-multi-set¢{"id":"redis-multi-set","rev":"1-13b2854ffb7e5451587851a4cf362de4","rev_tree":[{"pos":1,"ids":["13b2854ffb7e5451587851a4cf362de4",{"status":"available"},[]]}],"rev_map":{"1-13b2854ffb7e5451587851a4cf362de4":3347},"winningRev":"1-13b2854ffb7e5451587851a4cf362de4","deleted":false,"seq":3347}ÿby-sequenceÿ0000000000003347ë {"name":"redis-multi-set","description":"multi dimensional redis sets","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"redis-multi-set","version":"0.1.0","description":"multi dimensional redis sets","main":"index.js","bin":{},"directories":{"test":"test"},"dependencies":{},"devDependencies":{"tap":"~0.2.5","redis":"~0.7.2"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/tblobaum/redis-multi-set.git"},"homepage":"https://github.com/tblobaum/redis-multi-set","keywords":["redis","multi","dimensional","sets","arrays"],"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"license":"MIT","_id":"redis-multi-set@0.1.0","dist":{"shasum":"2d538ac19a7d8579ddf349b148e92116532e80e3","tarball":"http://registry.npmjs.org/redis-multi-set/-/redis-multi-set-0.1.0.tgz"},"readme":"","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]}},"readme":"","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"time":{"modified":"2012-08-07T12:07:57.901Z","created":"2012-08-07T12:07:57.102Z","0.1.0":"2012-08-07T12:07:57.901Z"},"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"repository":{"type":"git","url":"git://github.com/tblobaum/redis-multi-set.git"},"_id":"redis-multi-set","_rev":"1-13b2854ffb7e5451587851a4cf362de4"}ÿdocument-storeÿrecuestš{"id":"recuest","rev":"1-8e8944fe1157d0c1d41b5b5d1560ab6e","rev_tree":[{"pos":1,"ids":["8e8944fe1157d0c1d41b5b5d1560ab6e",{"status":"available"},[]]}],"rev_map":{"1-8e8944fe1157d0c1d41b5b5d1560ab6e":3346},"winningRev":"1-8e8944fe1157d0c1d41b5b5d1560ab6e","deleted":false,"seq":3346}ÿby-sequenceÿ0000000000003346Ñ({"name":"recuest","description":"API testing proxy","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Craig Condon","email":"craig.j.condon@gmail.com"},"name":"recuest","description":"API testing proxy","version":"0.0.1","repository":{"type":"git","url":"git://github.com/crcn/recuest.git"},"main":"./lib/index.js","bin":{"recuest":"./bin/cli.js"},"dependencies":{"crc32":"0.2.x","request":"2.9.x","sprintf":"0.1.x","underscore":"1.2.x","structr":"0.2.x","step":"0.0.x","express":"*","optimist":"0.3.x","connect":"1.8.x","outcome":"0.0.x","fiddle":"0.0.x","winston":"0.5.x","mongodblite":"0.0.x","sift":"0.0.x","celeri":"0.2.x","colors":"0.6.x.-1","deep-extend":"0.2.x"},"devDependencies":{},"readme":"Rec-uest helps you better debug API's by allowing you to record, and twiddle http requests on the fly.\n\n### Purpose\n\n- Faster debugging since testing is done locally\n- Automated testing made easier\n- Easier to debug any outlying issues with API responses\n- Simulate server states \n\t- server outages\n\n### Requirements\n\n- [node.js](http://nodejs.org/)\n\n### Installation\n\n```\nnpm install recuest -g\n```\n\n### Terminal Usage\n\n```\nUsage: --env=[env] [config paths]\n\nOptions:\n --env [default: \"default\"]\n```\n\n### Example:\n\nHere's an example where the proxy might simulate a 500 internal server error:\n\n```\nrecuest --env=default,500 /path/to/config.json\n```\n\nAnd here's `/path/to/config.json`:\n\n```javascript\n{\n \"default\": {\n \"port\": 8080,\n \"profile\": \"default\",\n \"db\": {\n \"driver\": \"Mongo\",\n \"port\": 27017,\n \"host\": \"127.0.0.1\",\n \"database\": \"recuest\"\n }\n },\n \"500\": {\n \t\"profile\": \"500\",\n \t\"twiddle\": {\n \t\t\"response\": [\n \t\t\t{\n \t\t\t\t\"fiddle\": {\n \t\t\t\t\t\"$set\": {\n \t\t\t\t\t\t\"statusCode\": 500,\n \t\t\t\t\t\t\"body\": \"A 500 internal server error has occurred.\"\n \t\t\t\t\t}\n \t\t\t\t}\t\n \t\t\t}\t\n \t\t]\n \t}\n }\n}\n \n}\n```\n\nIn your node.js app, make sure to use this chunk of code:\n\n```javascript\n\n//monkey-patches the http module so all requests redirect through the proxy\nrequire(\"recuest\").injectProxy({\n\thost: \"http://localhost:8080\"\n});\n\nvar request = require(\"request\");\n\n//redirects through the proxy\nrequest.get(\"http://google.com\", function(err, response, body) {\n\tconsole.log(body);\n});\n```\n\nFinally, call `node ./my/app.js`, and you should see `A 500 internal server error has occurred`.\n\n","_id":"recuest@0.0.1","dist":{"shasum":"3cfb6f40466259588ee5650fe58cfe53fcd0a0cd","tarball":"http://registry.npmjs.org/recuest/-/recuest-0.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]}},"readme":"Rec-uest helps you better debug API's by allowing you to record, and twiddle http req!$tùuests on the fly.\n\n### Purpose\n\n- Faster debugging since testing is done locally\n- Automated testing made easier\n- Easier to debug any outlying issues with API responses\n- Simulate server states \n\t- server outages\n\n### Requirements\n\n- [node.js](http://nodejs.org/)\n\n### Installation\n\n```\nnpm install recuest -g\n```\n\n### Terminal Usage\n\n```\nUsage: --env=[env] [config paths]\n\nOptions:\n --env [default: \"default\"]\n```\n\n### Example:\n\nHere's an example where the proxy might simulate a 500 internal server error:\n\n```\nrecuest --env=default,500 /path/to/config.json\n```\n\nAnd here's `/path/to/config.json`:\n\n```javascript\n{\n \"default\": {\n \"port\": 8080,\n \"profile\": \"default\",\n \"db\": {\n \"driver\": \"Mongo\",\n \"port\": 27017,\n \"host\": \"127.0.0.1\",\n \"database\": \"recuest\"\n }\n },\n \"500\": {\n \t\"profile\": \"500\",\n \t\"twiddle\": {\n \t\t\"response\": [\n \t\t\t{\n \t\t\t\t\"fiddle\": {\n \t\t\t\t\t\"$set\": {\n \t\t\t\t\t\t\"statusCode\": 500,\n \t\t\t\t\t\t\"body\": \"A 500 internal server error has occurred.\"\n \t\t\t\t\t}\n \t\t\t\t}\t\n \t\t\t}\t\n \t\t]\n \t}\n }\n}\n \n}\n```\n\nIn your node.js app, make sure to use this chunk of code:\n\n```javascript\n\n//monkey-patches the http module so all requests redirect through the proxy\nrequire(\"recuest\").injectProxy({\n\thost: \"http://localhost:8080\"\n});\n\nvar request = require(\"request\");\n\n//redirects through the proxy\nrequest.get(\"http://google.com\", function(err, response, body) {\n\tconsole.log(body);\n});\n```\n\nFinally, call `node ./my/app.js`, and you should see `A 500 internal server error has occurred`.\n\n","maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}],"time":{"modified":"2012-08-22T13:36:46.148Z","created":"2012-08-22T13:36:39.147Z","0.0.1":"2012-08-22T13:36:46.148Z"},"author":{"name":"Craig Condon","email":"craig.j.condon@gmail.com"},"repository":{"type":"git","url":"git://github.com/crcn/recuest.git"},"_id":"recuest","_rev":"1-8e8944fe1157d0c1d41b5b5d1560ab6e"}ÿdocument-storeÿrealtime›{"id":"realtime","rev":"1-bfc536e29be0413b681d1456db12dc97","rev_tree":[{"pos":1,"ids":["bfc536e29be0413b681d1456db12dc97",{"status":"available"},[]]}],"rev_map":{"1-bfc536e29be0413b681d1456db12dc97":3345},"winningRev":"1-bfc536e29be0413b681d1456db12dc97","deleted":false,"seq":3345}ÿby-sequenceÿ0000000000003345• {"name":"realtime","description":"A simple socket.io app server","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Richard Hoffman"},"name":"realtime","description":"A simple socket.io app server","version":"0.0.1","bin":{"realtime":"bin/realtime"},"dependencies":{"socket.io":"~0.9.6","express":"~3.0.0alpha1","redis":"~0.7.1"},"main":"lib/realtime","devDependencies":{},"optionalDependencies":{"express":"~3.0.0alpha1","redis":"~0.7.1"},"engines":{"node":"*"},"_npmUser":{"name":"coverslide","email":"coverslide@gmail.com"},"_id":"realtime@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9bc0d422bf25901eb32602cc1cb08d0bc7e7325c","tarball":"http://registry.npmjs.org/realtime/-/realtime-0.0.1.tgz"},"readme":"","maintainers":[{"name":"coverslide","email":"coverslide@gmail.com"}]}},"readme":"","maintainers":[{"name":"coverslide","email":"coverslide@gmail.com"}],"time":{"modified":"2012-04-20T15:32:55.429Z","created":"2012-04-20T15:32:53.944Z","0.0.1":"2012-04-20T15:32:55.429Z"},"author":{"name":"Richard Hoffman"},"_id":"realtime","_rev":"1-bfc536e29be0413b681d1456db12dc97"}ÿdocument-storeÿravenapp›{"id":"ravenapp","rev":"1-bc5c11d76c8f900ee715f7c5608372e0","rev_tree":[{"pos":1,"ids":["bc5c11d76c8f900ee715f7c5608372e0",{"status":"available"},[]]}],"rev_map":{"1-bc5c11d76c8f900ee715f7c5608372e0":3344},"winningRev":"1-bc5c11d76c8f900ee715f7c5608372e0","deleted":false,"seq":3344}ÿby-sequenceÿ0000000000003344Ú{"name":"ravenapp","description":"A RavenApp bundler","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.3":{"name":"ravenapp","preferGlobal":"true","version":"0.0.3","author":{"name":"Tony Heupel","email":"tonyheupel@gmail.com"},"description":"A RavenApp bundler","contributors":[{}],"bin":{"ravenapp":"./ravenapp.js"},"scripts":{"start":"ravenapp"},"main":"./lib/ravenapp.js","repository":{"type":"git","url":"git://github.com/tchype/ravenapp.git"},"keywords":["ravendb","ravenapp"],"dependencies":{"ravendb":">=0.0.14","argparse":">=0.1.1"},"noAnalyze":true,"devDependencies":{"coffee-script":">=1.3.3"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"tchype","email":"tonyheupel@gmail.com"},"_id":"ravenapp@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fb198816d4bfc766a3889d4e59281f24b07f5828","tarball":"http://registry.npmjs.org/ravenapp/-/ravenapp-0.0.3.tgz"},"maintainers":[{"name":"tchype","email":"tonyheupel@gmail.com"}]},"0.0.4":{"name":"ravenapp","preferGlobal":"true","version":"0.0.4","author":{"name":"Tony Heupel","email":"tonyheupel@gmail.com"},"description":"A RavenApp bundler","contributors":[{}],"bin":{"ravenapp":"./ravenapp.js"},"scripts":{"start":"ravenapp"},"main":"./lib/ravenapp.js","repository":{"type":"git","url":"git://github.com/tchype/ravenapp.git"},"keywords":["ravendb","ravenapp"],"dependencies":{"ravendb":">=0.0.14","argparse":">=0.1.1"},"noAnalyze":true,"devDependencies":{"coffee-script":">=1.3.3"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"tchype","email":"tonyheupel@gmail.com"},"_id":"ravenapp@0.0.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b71ea66b1dabbad0e2d872100f59b6fd7d160d30","tarball":"http://registry.npmjs.org/ravenapp/-/ravenapp-0.0.4.tgz"},"maintainers":[{"name":"tchype","email":"tonyheupel@gmail.com"}]}},"readme":"RavenApp\n========\nA way to build HTML5 data-driven applications hosted entirely in RavenDB.\n\n(An idea similar idea to CouchApps)\n","maintainers":[{"name":"tchype","email":"tonyheupel@gmail.com"}],"time":{"modified":"2012-07-21T20:03:51.968Z","created":"2012-07-21T20:00:42.654Z","0.0.3":"2012-07-21T20:00:43.847Z","0.0.4":"2012-07-21T20:03:51.968Z"},"author":{"name":"Tony Heupel","email":"tonyheupel@gmail.com"},"repository":{"type":"git","url":"git://github.com/tchype/ravenapp.git"},"_id":"ravenapp","_rev":"1-bc5c11d76c8f900ee715f7c5608372e0"}ÿdocument-storeÿqueue-service {"id":"queue-service","rev":"1-8a279b20a88594a88424572a26fb782c","rev_tree":[{"pos":1,"ids":["8a279b20a88594a88424572a26fb782c",{"status":"available"},[]]}],"rev_map":{"1-8a279b20a88594a88424572a26fb782c":3343},"winningRev":"1-8a279b20a88594a88424572a26fb782c","deleted":false,"seq":3343}ÿby-sequenceÿ0000000000003343Ÿ {"name":"queue-service","description":"provide queue service easily","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"name":"queue-service","description":"provide queue service easily","version":"0.0.2","repository":{"url":""},"main":"./index.js","dependencies":{},"_npmUser":{"name":"yuitest","email":"yuitest@cjhat.net"},"_id":"queue-service@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"25f09125eaae65835c1a100473ae5cb5a6fe62ee","tarball":"http://registry.npmjs.org/queue-service/-/queue-service-0.0.2.tgz"},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}]}},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}],"time":{"modified":"2012-03-21T15:20:31.573Z","created":"2012-03-21T15:20:27.001Z","0.0.2":"2012-03-21T15:20:31.573Z"},"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"repository":{"url":""},"_id":"queue-service","_rev":"1-8a279b20a88594a88424572a26fb782c"}ÿdocument-storeÿq-smsified{"id":"q-smsified","rev":"1-ed5a8f7ca22e66f98dea2b96d83863a0","rev_tree":[{"pos":1,"ids":["ed5a8f7ca22e66f98dea2b96d83863a0",{"status":"available"},[]]}],"rev_map":{"1-ed5a8f7ca22e66f98dea2b96d83863a0":3342},"winningRev":"1-ed5a8f7ca22e66f98dea2b96d83863a0","deleted":false,"seq":3342}ÿby-sequenceÿ0000000000003342¸{"name":"q-smsified","description":"Q API for SMSified.com REST service","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"q-smsified","version":"0.1.0","description":"Q API for SMSified.com REST service","dependencies":{"q":"0.8.2"},"_npmUser":{"name":"kixxauth","email":"kris@kixx.name"},"_id":"q-smsified@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"3c0bef6b49d012fb78d5177d160e30d00d43e7e2","tarball":"http://registry.npmjs.org/q-smsified/-/q-smsified-0.1.0.tgz"},"readme":"","maintainers":[{"name":"kixxauth","email":"kris@kixx.name"}]}},"readme":"","maintainers":[{"name":"kixxauth","email":"kris@kixx.name"}],"time":{"modified":"2012-05-16T19:45:15.223Z","created":"2012-05-16T19:45:14.459Z","0.1.0":"2012-05-16T19:45:15.223Z"},"_id":"q-smsified","_rev":"1-ed5a8f7ca22e66f98dea2b96d83863a0"}!ÿdocument-storeÿproto-list-deep¢{"id":"proto-list-deep","rev":"1-ba00bb64dacbc52d584f90b9382c0faa","rev_tree":[{"pos":1,"ids":["ba00bb64dacbc52d584f90b9382c0faa",{"status":"available"},[]]}],"rev_map":{"1-ba00bb64dacbc52d584f90b9382c0faa":3341},"winningRev":"1-ba00bb64dacbc52d584f90b9382c0faa","deleted":false,"seq":3341}ÿby-sequenceÿ0000000000003341ù{"name":"proto-list-deep","description":"Extends proto-list with a 'deepSnapshot'","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"proto-list-deep","version":"0.0.1","description":"Extends proto-list with a 'deepSnapshot'","main":"proto-list-deep.js","scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/cpsubrian/proto-list-deep.git"},"author":{"name":"Brian Link"},"license":"MIT","dependencies":{"proto-list":"~1.2.2","inherits":"~1.0.0"},"devDependencies":{"tap":"*"},"readme":"proto-list-deep\n===============\n\nAn extension of isaacs' proto-list that exposes a `deepSnapshot`. This returns\na different result than `snapshot`. Whereas `snapshot` is implicitly merging\nall keys at the top level due to the prototype chain, `deepSnapshot` first\nflattens each 'level' of the proto-list, grabs all the values, then unflattens\nthe result back to its original depth.\n\nProto-list-deep does not disturb any of proto-list's functionality (and passes\nall of proto-list's tests), so you can use it in place of proto-list if you\nwish.\n\n### Important Caveat\nProto-list-deep flattens the objects by concatenating keys together with a\ndelimeter. By default it uses ` : `. So, your object keys CANNOT contain this\ndelimeter, else the unflattening will fail. You can change this delimeter\nin the `ProtoListDeep()` constructor.\n\nExample\n-------\n```js\nvar ProtoListDeep = require('proto-list-deep');\nvar p = new ProtoListDeep();\n\np.push({\n fruit: { green: 'apple' }\n});\np.push({\n fruit: { green: 'lime', yellow: 'lemon' }\n});\n\nconsole.log(p.snapshot);\n// { fruit: { green: 'apple' } }\n\nconsole.log(p.deepSnapshot);\n// { fruit: { green: 'apple', yellow: 'lemon' } }\n\n```\n","_id":"proto-list-deep@0.0.1","dist":{"shasum":"9279fb6f0d111b148a12a2fcf5c27eacbe5478a3","tarball":"http://registry.npmjs.org/proto-list-deep/-/proto-list-deep-0.0.1.tgz"},"maintainers":[{"name":"cpsubrian","email":"cpsubrian@gmail.com"}]}},"readme":"proto-list-deep\n===============\n\nAn extension of isaacs' proto-list that exposes a `deepSnapshot`. This returns\na different result than `snapshot`. Whereas `snapshot` is implicitly merging\nall keys at the top level due to the prototype chain, `deepSnapshot` first\nflattens each 'level' of the proto-list, grabs all the values, then unflattens\nthe result back to its original depth.\n\nProto-list-deep does not disturb any of proto-list's functionality (and passes\nall of proto-list's tests), so you can use it in place of proto-list if you\nwish.\n\n### Important Caveat\nProto-list-deep flattens the objects by concatenating keys together with a\ndelimeter. By default it uses ` : `. So, your object keys CANNOT contain this\ndelimeter, else the unflattening will fail. You can change this delimeter\nin the `ProtoListDeep()` constructor.\n\nExample\n-------\n```js\nvar ProtoListDeep = require('proto-list-deep');\nvar p = new ProtoListDeep();\n\np.push({\n fruit: { green: 'apple' }\n});\np.push({\n fruit: { green: 'lime', yellow: 'lemon' }\n});\n\nconsole.log(p.snapshot);\n// { fruit: { green: 'apple' } }\n\nconsole.log(p.deepSnapshot);\n// { fruit: { green: 'apple', yellow: 'lemon' } }\n\n```\n","maintainers":[{"name":"cpsubrian","email":"cpsubrian@gmail.com"}],"time":{"modified":"2012-08-22T02:06:26.932Z","created":"2012-08-22T02:06:25.636Z","0.0.1":"2012-08-22T02:06:26.932Z"},"author":{"name":"Brian Link"},"repository":{"type":"git","url":"git://github.com/cpsubrian/proto-list-deep.git"},"_id":"proto-list-deep","_rev":"1-ba00bb64dacbc52d584f90b9382c0faa"}ÿdocument-storeÿpr0kbotš{"id":"pr0kbot","rev":"1-665ed0b8d5976ba0acf591602263c7f6","rev_tree":[{"pos":1,"ids":["665ed0b8d5976ba0acf591602263c7f6",{"status":"available"},[]]}],"rev_map":{"1-665ed0b8d5976ba0acf591602263c7f6":3340},"winningRev":"1-665ed0b8d5976ba0acf591602263c7f6","deleted":false,"seq":3340}ÿby-sequenceÿ0000000000003340ŸP{"name":"pr0kbot","description":"IRC bot for #pr0k","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"pr0kbot","version":"0.0.1","description":"IRC bot for #pr0k","repository":{"type":"git","url":"git://github.com/Ond/pr0kbot.git"},"author":{"name":"Ond"},"readme":"# pr0kbot\n\nAn IRC bot for #pr0k, written in node, using Redis.\n\n## Installation requirements\n\n+ **Node** [Link](http://nodejs.org/download/)\n+ **Redis** [Link](http://redis.io/download)\n\n## Running bot\n\n1. Clone this repository:\n```code\ngit clone https://github.com/Ond/pr0kbot\n```\n2. Modify `config.json` to your desire. \n3. Run server:\n```code\nnode run\n```\n\nPass an argument to `run` for separate configuration file.\n\n## Configuration options\n\nModify configuration in `config.json`\n\n+ `network` Desired network, e.g. `irc.synirc.net`\n+ `port` Port, e.g. `6667`\n+ `nick_name` Desired nick, e.g. `blazerboy420`\n+ `user_name` Desired username, e.g. `blazer`\n+ `real_name` Desired real name, e.g. `Chauncey Biggums`\n+ `autojoin` List of channels to autojoin, e.g. `[ '#mychannel' ]`\n+ `log` Whether or not to log input / output. Option may be boolean `true / false` or a string `in / out`.\n\n## Commands\n\n+ `write` Writes raw commands to the server\n+ `msg` Sends PRIVMSG to channel or user\n+ `notice` Sends NOTICE to channel or user\n+ `join` Joins channel\n\n## Events\n\nYou may listen for any of these events. Also support for arbitrary modes, defined +mode -mode e.g. `+v`\n\n+ `connect`\n+ `notice`\n+ `server notice`\n+ `channel notice`\n+ `join`\n+ `part`\n+ `quit`\n+ `msg`\n+ `server msg`\n+ `channel msg`\n+ `mode`\n+ `channel mode`\n+ `user mode`\n+ `mute`\n+ `unmute`\n+ `inviteonly`\n+ `deinviteonly`\n+ `voice`\n+ `devoice`\n+ `halfop`\n+ `dehalfop`\n+ `op`\n+ `deop`\n+ `ban`\n+ `unban`\n\n## Modules\n\npr0kbot automatically loads modules from the `/modules` directory. There are two very simple module formats. For an example, see the default `ping` module.\n\n```js\nmodule.exports = {\n event1:function() {\n /* handle event */\n },\n event2:function() {\n /* handle event */\n }\n};\n```\n\nAnd the more liberal:\n\n```js\nmodule.exports = function(con) {\n this.on('event1', function() {\n /* handle event */\n })\n\n this.on('event2', function() {\n /* handle event */\n })\n}\n```\n\n","_id":"pr0kbot@0.0.1","dist":{"shasum":"ae6b7105c3f018cd5251e9d42731f3a1f959764a","tarball":"http://registry.npmjs.org/pr0kbot/-/pr0kbot-0.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"ond","email":"no@no.com"},"maintainers":[{"name":"ond","email":"no@no.com"}]},"0.0.2":{"name":"pr0kbot","version":"0.0.2","description":"IRC bot for #pr0k","repository":{"type":"git","url":"git://github.com/Ond/pr0kbot.git"},"author":{"name":"Ond"},"dependencies":{"redis":"latest"},"readme":"# pr0kbot\n\nAn IRC bot for #pr0k, written in node, using Redis.\n\n## Installation requirements\n\n+ **Node** [Link](http://nodejs.org/download/)\n+ **Redis** [Link](http://redis.io/download)\n\n## Running bot\n\n1. Clone this repository:\n```code\ngit clone https://github.com/Ond/pr0kbot\n```\n2. Modify `config.json` to your desire. \n3. Run server:\n```code\nnode run\n```\n\nPass an argument to `run` for separate configuration file.\n\n## Configuration options\n\nModify configuration in `config.json`\n\n+ `network` Desired network, e.g. `irc.synirc.net`\n+ `port` Port, e.g. `6667`\n+ `nick_name` Desired nick, e.g. `blazerboy420`\n+ `user_name` Desired username, e.g. `blazer`\n+ `real_name` Desired real name, e.g. `Chauncey Biggums`\n+ `autojoin` List of channels to autojoin, e.g. `[ '#mychannel' ]`\n+ `log` Whether or not to log input / output. Option may be boolean `true / false` or a string `in / out`.\n\n## Commands\n\n+ `write` Writes raw commands to the server\n+ `msg` Sends PRIVMSG to channel or user\n+ `notice` Sends NOTICE to channel or user\n+ `join` Joins channel\n\n## Events\n\nYou may listen for any of these events. Also support for arbitrary modes, defined +mode -mode e.g. `+v`\n\n+ `connect`\n+ `notice`\n+ `server notice`\n+ `channel notice`\n+ `join`\n+ `part`\n+ `quit`\n+ `msg`\n+ `server msg`\n+ `channel msg`\n+ `mode`\n+ `channel mode`\n+ `user mode`\n+ `mute`\n+ `unmute`\n+ `inviteonly`\n+ `deinviteonly`\n+ `voice`\n+ `devoice`\n+ `halfop`\n+ `dehalfop`\n+ `op`\n+ `deop`\n+ `ban`\n+ `unban`\n\n## Modules\n\npr0kbot automatically loads modules from the `/modules` directory. There are two very simple module formats. For an example, see the default `ping` module.\n\n```js\nmodule.exports = {\n event1:function() {\n /* handle event */\n },\n event2:function() {\n /* handle event */\n }\n};\n```\n\nAnd the more liberal:\n\n```js\nmodule.exports = function(con) {\n this.on('event1', function() {\n /* handle event */\n })\n\n this.on('event2', function() {\n /* handle event */\n })\n}\n```\n\n","_id":"pr0kbot@0.0.2","dist":{"shasum":"faff6c9dbc03630a6f4eebe85c199eaf20da49fc","tarball":"http://registry.npmjs.org/pr0kbot/-/pr0kbot-0.0.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"ond","email":"no@no.com"},"maintainers":[{"name":"ond","email":"no@no.com"}]},"0.0.3":{"name":"pr0kbot","version":"0.0.3","description":"IRC bot for #pr0k","repository":{"url":"git://github.com/Ond/pr0kbot.git"},"author":{"name":"Ond"},"main":"pr0kbot.js","dependencies":{"redis":"latest"},"readme":"# pr0kbot\n\nAn IRC bot for #pr0k, written in node, using Redis.\n\n## Installation requirements\n\n+ **Node** [Link](http://nodejs.org/download/)\n+ **Redis** [Link](http://redis.io/download)\n\n## Running bot\n\n1. npm install:\n```code\nnpm install pr0kbot\n```\n2. Modify `config.json` to your desire. \n3. Run server:\n```code\nnode run\n```\n\nPass an argument to `run` for separate configuration file.\n\n## Configuration options\n\nModify configuration in `config.json`\n\n+ `network` Desired network, e.g. `irc.synirc.net`\n+ `port` Port, e.g. `6667`\n+ `nick_name` Desired nick, e.g. `blazerboy420`\n+ `user_name` Desired username, e.g. `blazer`\n+ `real_name` Desired real name, e.g. `Chauncey Biggums`\n+ `autojoin` List of channels to autojoin, e.g. `[ '#mychannel' ]`\n+ `log` Whether or not to log input / output. Option may be boolean `true / false` or a string `in / out`.\n\n## Commands\n\n+ `write` Writes raw commands to the server\n+ `msg` Sends PRIVMSG to channel or user\n+ `notice` Sends NOTICE to channel or user\n+ `join` Joins channel\n\n## Events\n\nYou may listen for any of these events. Also support for arbitrary modes, defined +mode -mode e.g. `+v`\n\n+ `connect`\n+ `notice`\n+ `server notice`\n+ `channel notice`\n+ `join`\n+ `part`\n+ `quit`\n+ `msg`\n+ `server msg`\n+ `channel msg`\n+ `mode`\n+ `channel mode`\n+ `user mode`\n+ `mute`\n+ `unmute`\n+ `inviteonly`\n+ `deinviteonly`\n+ `voice`\n+ `devoice`\n+ `halfop`\n+ `dehalfop`\n+ `op`\n+ `deop`\n+ `ban`\n+ `unban`\n\n## Modules\n\npr0kbot automatically loads modules from the `/modules` directory. There are two very simple module formats. For an example, see the default `ping` module.\n\n```js\nmodule.exports = {\n event1:function() {\n /* handle event */\n },\n event2:function() {\n /* handle event */\n }\n};\n```\n\nAnd the more liberal:\n\n```js\nmodule.exports = function(con) {\n this.on('event1', function() {\n /* handle event */\n })\n\n this.on('event2', function() {\n /* handle event */\n })\n}\n```\n\n","_id":"pr0kbot@0.0.3","dist":{"shasum":"f21f117187542218565f0dc5267d03d07718ddc5","tarball":"http://registry.npmjs.org/pr0kbot/-/pr0kbot-0.0.3.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"ond","email":"no@no.com"},"maintainers":[{"name":"ond","email":"no@no.com"}]}},"readme":"# pr0kbot\n\nAn IRC bot for #pr0k, written in node, using Redis.\n\n## Installation requirements\n\n+ **Node** [Link](http://nodejs.org/download/)\n+ **Redis** [Link](http://redis.io/download)\n\n## Running bot\n\n1. Clone this repository:\n```code\ngit clone https://github.com/Ond/pr0kbot\n```\n2. Modify `config.json` to your desire. \n3. Run server:\n```code\nnode run\n```\n\nPass an argument to `run` for separate configuration file.\n\n## Configuration options\n\nModify configuration in `config.json`\n\n+ `network` Desired network, e.g. `irc.synirc.net`\n+ `port` Port, e.g. `6667`\n+ `nick_name` Desired nick, e.g. `blazerboy420`\n+ `user_name` Desired username, e.g. `blazer`\n+ `real_name` Desired real name, e.g. `Chauncey Biggums`\n+ `autojoin` List of channels to autojoin, e.g. `[ '#mychannel' ]`\n+ `log` Whether or not to log input / output. Option may be boolean `true / false` or a string `in / out`.\n\n## Commands\n\n+ `write` Writes raw commands to the server\n+ `msg` Sends PRIVMSG to channel or user\n+ `notice` Sends NOTICE to channel or user\n+ `join` Joins channel\n\n## Events\n\nYou may listen for any of these events. Also support for arbitrary modes, defined +mode -mode e.g. `+v`\n\n+ `connect`\n+ `notice`\n+ `server notice`\n+ `channel notice`\n+ `join`\n+ `part`\n+ `quit`\n+ `msg`\n+ `server msg`\n+ `channel msg`\n+ `mode`\n+ `channel mode`\n+ `user mode`\n+ `mute`\n+ `unmute`\n+ `inviteonly`\n+ `deinviteonly`\n+ `voice`\n+ `devoice`\n+ `halfop`\n+ `dehalfop`\n+ `op`\n+ `deop`\n+ `ban`\n+ `unban`\n\n## Modules\n\npr0kbot automatically loads modules from the `/modules` directory. There are two very simple module formats. For an example, see the default `ping` module.\n\n```js\nmodule.exports = {\n event1:function() {\n /* handle event */\n },\n event2:function() {\n /* handle event */\n }\n};\n```\n\nAnd the more liberal:\n\n```js\nmodule.exports = function(con) {\n this.on('event1', function() {\n /* handle event */\n })\n\n this.on('event2', function() {\n /* handle event */\n })\n}\n```\n\n","maintainers":[{"name":"ond","email":"no@no.com"}],"time":{"modified":"2012-08-18T01:08:11.824Z","created":"2012-08-18T01:00:04.592Z","0.0.1":"2012-08-18T01:00:17.452Z","0.0.2":"2012-08-18T01:02:38.199Z","0.0.3":"2012-08-18T01:08:11.824Z"},"author":{"name":"Ond"},"repository":{"url":"git://github.com/Ond/pr0kbot.git"},"_id":"pr0kbot","_rev":"1-665ed0b8d5976ba0acf591602263c7f6"}ÿdocument-storeÿpiescore›{"id":"piescore","rev":"1-fd481106be04ccf079f1dad7ae2db4d8","rev_tree":[{"pos":1,"ids":["fd481106be04ccf079f1dad7ae2db4d8",{"status":"available"},[]]}],"rev_map":{"1-fd481106be04ccf079f1dad7ae2db4d8":3339},"winningRev":"1-fd481106be04ccf079f1dad7ae2db4d8","deleted":false,"seq":3339}ÿby-sequenceÿ0000000000003339—P{"name":"piescore","description":"Utility functions","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.1.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1f8a3c7254477a28d1d8990f3f5d5b30a978b494","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.1.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.1":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.1.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.1.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"29f292f9e7f443d773fcb3a9cbc0f5530be8f38a","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.1.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.2":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.1.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.1.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"80d978f78a1919970e8645ec83b737c6a5cece8c","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.1.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.3":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.1.3","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.1.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"3e93d352a3f5555e5ab62053d8a2c05d6a1e173d","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.1.3.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.0":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.2.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.2.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"08377f0246a64ea617a03f26e678ba5c543ad5f4","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.2.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.1":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.2.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1f0a7ec7fbb320cd5b9eebbfa10835911ac22f67","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.2.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.2":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.2.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"4228bc85ffa5b3870e3c1f3d8ea5f4595e84e4c8","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.2.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.3.0":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.3.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"underscore.string":"2.1.1","async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"edca3fb0726d8012cd2ca71a530628ed31df4a24","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.3.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.3.1":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.3.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"underscore.string":"2.1.1","async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"105d69eb69e421d4310badd0772a540a030364bf","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.3.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.3.2":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.3.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"underscore":"1.3.x","underscore.string":"2.1.1","async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_Ý^ÉùdefaultsLoaded":true,"dist":{"shasum":"dbf48f2354501af312a1a0ab01a626605f915bf7","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.3.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.4.0":{"name":"piescore","description":"Utility functions","main":"./lib/piescore.js","version":"0.4.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"engines":{"node":">=0.6.0"},"dependencies":{"underscore":"1.3.x","underscore.string":"2.1.1","underscore.plus":"0.1.x","async":"0.1.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"piescore@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e94eabbf314e1a93c258cc1179f91f6f71a8d8df","tarball":"http://registry.npmjs.org/piescore/-/piescore-0.4.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]}},"readme":"piescore\n========\n\nUtility methods","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}],"time":{"modified":"2012-07-22T10:21:05.255Z","created":"2012-06-29T21:44:38.895Z","0.1.0":"2012-06-29T21:44:40.504Z","0.1.1":"2012-06-29T21:55:08.733Z","0.1.2":"2012-06-29T21:56:40.376Z","0.1.3":"2012-06-29T21:59:07.730Z","0.2.0":"2012-06-30T11:03:32.889Z","0.2.1":"2012-06-30T11:19:07.043Z","0.2.2":"2012-06-30T11:20:29.052Z","0.3.0":"2012-06-30T11:27:36.423Z","0.3.1":"2012-06-30T14:56:41.699Z","0.3.2":"2012-07-16T16:31:18.995Z","0.4.0":"2012-07-22T10:21:05.255Z"},"author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/piescore.git"},"_id":"piescore","_rev":"1-fd481106be04ccf079f1dad7ae2db4d8"}ÿdocument-storeÿpiccološ{"id":"piccolo","rev":"1-409ca3b813e5d1f02cb5d7758281a3f6","rev_tree":[{"pos":1,"ids":["409ca3b813e5d1f02cb5d7758281a3f6",{"status":"available"},[]]}],"rev_map":{"1-409ca3b813e5d1f02cb5d7758281a3f6":3338},"winningRev":"1-409ca3b813e5d1f02cb5d7758281a3f6","deleted":false,"seq":3338}ÿby-sequenceÿ0000000000003338·ë{"name":"piccolo","description":"Isomorphic projection framework","dist-tags":{"latest":"0.6.1"},"versions":{"0.0.1":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.0.1","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"connect":"2.0.3"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.7","npm":"1"},"_npmUser":{"name":"andreasmadsen","email":"amwebdk@gmail.com"},"_id":"piccolo@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.6-pre","_defaultsLoaded":true,"dist":{"shasum":"dd492bb42992241a8dd79f3550e7bf7c23a42c08","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.0.1.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.1.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.1.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"connect":"2.0.3"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.7","npm":"1"},"_npmUser":{"name":"andreasmadsen","email":"amwebdk@gmail.com"},"_id":"piccolo@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.15-pre","_defaultsLoaded":true,"dist":{"shasum":"921507ad45264842ca08de25cc9ddd32ba56bc71","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.1.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.2.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.2.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"connect":"2.0.3"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.7","npm":"1"},"_npmUser":{"name":"andreasmadsen","email":"amwebdk@gmail.com"},"_id":"piccolo@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"b03744d6b99d591f13ec5ca6a6639f93288dc7c1","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.2.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.3.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.3.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"leaflet":"0.2.x","flower":"0.4.x","async":"0.1.x","mime":"1.2.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.6 || 0.7","npm":"1"},"_npmUser":{"name":"andreasmadsen","email":"amwebdk@gmail.com"},"_id":"piccolo@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"1c1ee092d3abf2217a73885a8501acdf8b0a032d","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.3.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.4.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.4.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.7 || 0.8","npm":"1"},"_npmUser":{"name":"andreasmadsen","email":"amwebdk@gmail.com"},"_id":"piccolo@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.1-pre","_defaultsLoaded":true,"dist":{"shasum":"3df5579aabc981b08931db4a766a4571f37f2158","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.4.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.5.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.5.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.6.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.5.0","dist":{"shasum":"87cd35f2422a29a8677a7d78034977f729c3939b","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.5.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.5.1":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.5.1","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"safedir":"0.3.x","domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","graceful-fs":"1.1.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.6.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.5.1","dist":{"shasum":"49516ab33a8c5d23008d4ff1173b6331d1e1b07b","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.5.1.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.5.2":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.5.2","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"safedir":"0.3.x","domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","graceful-fs":"1.1.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.6.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.5.2","dist":{"shasum":"ed08040e3b0faff247eab602ae2dcd41cd78d070","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.5.2.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.5.3":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.5.3","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"safedir":"0.3.x","domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","graceful-fs":"1.1.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.6.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.5.3","dist":{"shasum":"4f3a460abfcfe2bc61b02e23e8da2632704d038f","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.5.3.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.6.0":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.6.0","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"safedir":"0.3.x","domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","graceful-fs":"1.1.x","uglify-js":"1.3.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.7.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.6.0","dist":{"shasum":"8eec325da4cf99de057638dbac2a64fbe06b5871","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.6.0.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]},"0.6.1":{"name":"piccolo","description":"Isomorphic projection framework","version":"0.6.1","author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"scripts":{"test":"vows test/simple/* --spec --isolate"},"main":"./lib/piccolo.js","repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"keywords":["isomorphic","Isomorphism","projection","framework"],"dependencies":{"safedir":"0.3.x","domstream":"0.4.x","domstream-client":"0.2.x","leaflet":"0.3.x","flower":"0.5.x","async":"0.1.x","mime":"1.2.x","graceful-fs":"1.1.x","uglify-js":"1.3.x","colors":"0.6.x"},"devDependencies":{"vows":"0.6.x"},"license":"MIT","engines":{"node":"0.8","npm":"1"},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both\n> the client and the server side. Since node.js this has been accomplished in\n> a small scale, but never in a big scale. Many have tried and usually they\n> succeed in a limited way. However issues with SEO and clients without\n> JavaScript seams to constantly show up. For half a year I have tried to come\n> up with a new design for isomorphism. This is my attempt to reinvent\n> isomorphism and the thought itself. The issues we are facing are because we\n> forget the isomorphism, in our eager to just develop something. I hope this\n> project will result in something significant different.\n>\n> _Note when I speak about other people; I'm just as much speaking about myself!_\n\n### Example\n\nA primitive but very enlightning example can be found at:\n[/AndreasMadsen/piccolo-example](https://github.com/AndreasMadsen/piccolo-example).\n\n### The future\n\nPiccolo is highly experimental but is a working framework since\n[f666964fce](/AndreasMadsen/piccolo/commit/f666964fcee2c604ebbec0ab8574e1d32a26f9a3).\nHowever there is a long way to go before it becomes mainstrem for most developers\nand useful in a production environment.\n\nThe plan is that piccolo 0.7.0 will be an useful framework with a understandable API,\ndocumentation, examples and works across all used browser and 1.0.0 will be a\nproction ready platform with a well defined API.\n\nThe todo list exists as a collection of issues, but you are welcome to open your own\nrequests issues. Any discussion about isomorphism itself should be on `#piccolo`\n(freenodes) or some other channel.\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n>\n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n>\n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n>\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","_id":"piccolo@0.6.1","dist":{"shasum":"4f9697466848aad9214a5ea4ef9bc1a00fa66248","tarball":"http://registry.npmjs.org/piccolo/-/piccolo-0.6.1.tgz"},"maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}]}},"readme":"#piccolo\n\n**isomorphic projection framework**\n\n> Isomorphism is commonly known as the thought of using the same code on both the\n> client and the server side. Since node.js this has been accomplished in a small\n> scale, but never in a big scale. Many have tried and ussually they succeed in a\n> limmited way. However issues with SEO and clients without JavaScript seams to\n> constantly show up. For half a year I have tried to come up with a new dessign\n> for isomorphism. This is my atempt fo reinvent the isomorphism and the thought\n> itself. The issues we are faceing are because the we forget the isomorphism, in\n> our eager to just develop something. I hope this project will result in something\n> significant diffrent.\n\n_Note when I speek about other people I'm just as much speaking about myself!_\n\n## License\n\n**The software is license under \"MIT\"**\n\n> Copyright (c) 2012 Andreas Madsen\n> \n> Permission is hereby granted, free of charge, to any person obtaining a copy\n> of this software and associated documentation files (the \"Software\"), to deal\n> in the Software without restriction, including without limitation the rights\n> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n> copies of the Software, and to permit persons to whom the Software is\n> furnished to do so, subject to the following conditions:\n> \n> The above copyright notice and this permission notice shall be included in\n> all copies or substantial portions of the Software.\n> \n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n> THE SOFTWARE.\n","maintainers":[{"name":"andreasmadsen","email":"amwebdk@gmail.com"}],"time":{"modified":"2012-08-07T11:05:37.722Z","created":"2012-04-02T16:33:10.786Z","0.0.1":"2012-04-02T16:33:32.828Z","0.1.0":"2012-04-12T06:49:16.606Z","0.2.0":"2012-05-11T18:33:10.229Z","0.3.0":"2012-06-13T20:52:13.182Z","0.4.0":"2012-07-01T17:14:38.101Z","0.5.0":"2012-07-23T19:38:53.146Z","0.5.1":"2012-07-25T13:06:59.353Z","0.5.2":"2012-08-01T16:12:48.303Z","0.5.3":"2012-08-03T16:41:25.195Z","0.6.0":"2012-08-04T16:00:52.453Z","0.6.1":"2012-08-07T11:05:37.722Z"},"author":{"name":"Andreas Madsen","email":"amwebdk@gmail.com"},"repository":{"type":"git","url":"git://github.com/AndreasMadsen/piccolo.git"},"users":{"fgribreau":true},"_id":"piccolo","_rev":"1-409ca3b813e5d1f02cb5d7758281a3f6"}ÿdocument-storeÿpaypalxo›{"id":"paypalxo","rev":"1-b98635cc5d89097b0dbae784ba36ff11","rev_tree":[{"pos":1,"ids":["b98635cc5d89097b0dbae784ba36ff11",{"status":"available"},[]]}],"rev_map":{"1-b98635cc5d89097b0dbae784ba36ff11":3337},"winningRev":"1-b98635cc5d89097b0dbae784ba36ff11","deleted":false,"seq":3337}ÿby-secÀ2Yùquenceÿ0000000000003337­C{"name":"paypalxo","description":"API wrapper for PayPal's checkout flows","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"author":{"name":"Jeff Harrell","email":"jeff@juxtadesign.com"},"name":"paypalxo","description":"API wrapper for PayPal's checkout flows","version":"0.1.0","homepage":"https://github.com/jeffharrell/node-paypalxo","repository":{"type":"git","url":"git@github.com:jeffharrell/node-paypalxo.git"},"engines":{"node":">= v0.6.0"},"main":"lib/paypalxo.js","dependencies":{},"devDependencies":{},"readme":"node-paypalxo\n=============\n\nIntegrate with [PayPal's Express Checkout](https://paypal.com/checkout) payment flow. \n\n\n\nInstallation\n------------\n`git clone git://github.com/jeffharrell/node-paypalxo.git`\n\n\n\nUsage\n-----\nSee PayPal's [Express Checkout integration guide](https://cms.paypal.com/us/cgi-bin/webscr?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted) for each APIs required parameters.\n\n\n\tvar paypalxo = require('node-paypalxo');\n\t\n\t// Your PayPal API credentials\n\tpaypalxo.user = USER;\n\tpaypalxo.pwd = PWD;\n\tpaypalxo.signature = SIGNATURE;\n\tpaypalxo.version = VERSION;\n\t\n\t\n\tvar params = {\n\t\tamt: '1.00',\n\t\treturnurl: 'http://example.com/success',\n\t\tcancelurl: 'http://example.com/cancel'\n\t};\n\n\t// STEP 1: Get an Express Checkout token from PayPal\n\tpaypalxo.ec.setExpressCheckout(params, function (err, data) {\n\t\tif (!err) {\n\t\t\tvar token = data.TOKEN;\n\t\t\n\t\t\t// STEP 2: Send the user to the following URL to checkout on PayPal\n\t\t\tconsole.log(paypalxo.ec.getLoginURL(token));\n\t\t}\n\t});\n\n\t\n\t// STEP 3: Complete the transaction\n\tpaypalxo.ec.doExpressCheckoutPayment(params, function (err, data) {\n\t\tif (!err) {\n\t\t\t// This will output the transaction's details\n\t\t\tconsole.log(data);\n\t\t}\n\t});\n\n\n\nAPI\n---\n\n- `paypalxo.useSandbox`\n- `paypalxo.ec.setExpressCheckout(params, callback)`\n- `paypalxo.ec.getExpressCheckoutDetails(params, callback)`\n- `paypalxo.ec.doExpressCheckoutPayment(params, callback)`\n- `paypalxo.ec.getLoginURL(token)`\n","_id":"paypalxo@0.1.0","dist":{"shasum":"3bf5faf4ef4572d87068db63bb5bf1e9940e7578","tarball":"http://registry.npmjs.org/paypalxo/-/paypalxo-0.1.0.tgz"},"maintainers":[{"name":"jeffharrell","email":"jeff@juxtadesign.com"}]},"0.2.0":{"author":{"name":"Jeff Harrell","email":"jeff@juxtadesign.com"},"name":"paypalxo","description":"API wrapper for PayPal's checkout flows","version":"0.2.0","homepage":"https://github.com/jeffharrell/node-paypalxo","repository":{"type":"git","url":"git@github.com:jeffharrell/node-paypalxo.git"},"engines":{"node":">= v0.6.0"},"main":"lib/paypalxo.js","dependencies":{},"devDependencies":{},"readme":"node-paypalxo\n=============\n\nIntegrate with [PayPal's Express Checkout](https://paypal.com/checkout) payment flow. \n\n\n\nInstallation\n------------\n`npm install paypalxo`\n\n\n\nUsage\n-----\nSee PayPal's [Express Checkout integration guide](https://cms.paypal.com/us/cgi-bin/webscr?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted) for each APIs required parameters.\n\n```js\nvar paypalxo = require('node-paypalxo');\n\n// Your PayPal API credentials\npaypalxo.user = USER;\npaypalxo.pwd = PWD;\npaypalxo.signature = SIGNATURE;\npaypalxo.version = VERSION;\n\n\nvar params = {\n\tamt: '1.00',\n\treturnurl: 'http://example.com/success',\n\tcancelurl: 'http://example.com/cancel'\n};\n\n// STEP 1: Get an Express Checkout token from PayPal\npaypalxo.ec.setExpressCheckout(params, function (err, data) {\n\tif (!err) {\n\t\tvar token = data.TOKEN;\n\t\n\t\t// STEP 2: Send the user to the following URL to checkout on PayPal\n\t\tconsole.log(paypalxo.ec.getLoginURL(token));\n\t}\n});\n\n\n// STEP 3: Complete the transaction\npaypalxo.ec.doExpressCheckoutPayment(params, function (err, data) {\n\tif (!err) {\n\t\t// This will output the transaction's details\n\t\tconsole.log(data);\n\t}\n});\n```\n\nAPI\n---\n\n- `paypalxo.useSandbox`\n- `paypalxo.ec.setExpressCheckout(params, callback)`\n- `paypalxo.ec.getExpressCheckoutDetails(params, callback)`\n- `paypalxo.ec.doExpressCheckoutPayment(params, callback)`\n- `paypalxo.ec.getLoginURL(token)`\n","_id":"paypalxo@0.2.0","dist":{"shasum":"b3b04dcc1d90d09b07e875e44b6525a70ebce839","tarball":"http://registry.npmjs.org/paypalxo/-/paypalxo-0.2.0.tgz"},"maintainers":[{"name":"jeffharrell","email":"jeff@juxtadesign.com"}]},"0.2.1":{"author":{"name":"Jeff Harrell","email":"jeff@juxtadesign.com"},"name":"paypalxo","description":"API wrapper for PayPal's checkout flows","version":"0.2.1","homepage":"https://github.com/jeffharrell/node-paypalxo","repository":{"type":"git","url":"git@github.com:jeffharrell/node-paypalxo.git"},"engines":{"node":">= v0.6.0"},"main":"lib/paypalxo.js","dependencies":{},"devDependencies":{},"readme":"node-paypalxo\n=============\n\nIntegrate with [PayPal's Express Checkout](https://paypal.com/checkout) payment flow. \n\n\n\nInstallation\n------------\n`npm install paypalxo`\n\n\n\nUsage\n-----\nSee PayPal's [Express Checkout integration guide](https://cms.paypal.com/us/cgi-bin/webscr?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted) for each APIs required parameters.\n\n```js\nvar paypalxo = require('node-paypalxo');\n\n// Your PayPal API credentials\npaypalxo.user = USER;\npaypalxo.pwd = PWD;\npaypalxo.signature = SIGNATURE;\npaypalxo.version = VERSION;\n\n\nvar params = {\n\tamt: '1.00',\n\treturnurl: 'http://example.com/success',\n\tcancelurl: 'http://example.com/cancel'\n};\n\n// STEP 1: Get an Express Checkout token from PayPal\npaypalxo.ec.setExpressCheckout(params, function (err, data) {\n\tif (!err) {\n\t\tvar token = data.TOKEN;\n\t\n\t\t// STEP 2: Send the user to the following URL to checkout on PayPal\n\t\tconsole.log(paypalxo.ec.getLoginURL(token));\n\t}\n});\n\n\n// STEP 3: Complete the transaction\npaypalxo.ec.doExpressCheckoutPayment(params, function (err, data) {\n\tif (!err) {\n\t\t// This will output the transaction's details\n\t\tconsole.log(data);\n\t}\n});\n```\n\nAPI\n---\n\n- `paypalxo.useSandbox`\n- `paypalxo.ec.setExpressCheckout(params, callback)`\n- `paypalxo.ec.getExpressCheckoutDetails(params, callback)`\n- `paypalxo.ec.doExpressCheckoutPayment(params, callback)`\n- `paypalxo.ec.getLoginURL(token)`\n","_id":"paypalxo@0.2.1","dist":{"shasum":"58ec07be856f2e0ff80f1c21415c5d169c1dffce","tarball":"http://registry.npmjs.org/paypalxo/-/paypalxo-0.2.1.tgz"},"maintainers":[{"name":"jeffharrell","email":"jeff@juxtadesign.com"}]}},"readme":"node-paypalxo\n=============\n\nIntegrate with [PayPal's Express Checkout](https://paypal.com/checkout) payment flow. \n\n\n\nInstallation\n------------\n`git clone git://github.com/jeffharrell/node-paypalxo.git`\n\n\n\nUsage\n-----\nSee PayPal's [Express Checkout integration guide](https://cms.paypal.com/us/cgi-bin/webscr?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted) for each APIs required parameters.\n\n\n\tvar paypalxo = require('node-paypalxo');\n\t\n\t// Your PayPal API credentials\n\tpaypalxo.user = USER;\n\tpaypalxo.pwd = PWD;\n\tpaypalxo.signature = SIGNATURE;\n\tpaypalxo.version = VERSION;\n\t\n\t\n\tvar params = {\n\t\tamt: '1.00',\n\t\treturnurl: 'http://example.com/success',\n\t\tcancelurl: 'http://example.com/cancel'\n\t};\n\n\t// STEP 1: Get an Express Checkout token from PayPal\n\tpaypalxo.ec.setExpressCheckout(params, function (err, data) {\n\t\tif (!err) {\n\t\t\tvar token = data.TOKEN;\n\t\t\n\t\t\t// STEP 2: Send the user to the following URL to checkout on PayPal\n\t\t\tconsole.log(paypalxo.ec.getLoginURL(token));\n\t\t}\n\t});\n\n\t\n\t// STEP 3: Complete the transaction\n\tpaypalxo.ec.doExpressCheckoutPayment(params, function (err, data) {\n\t\tif (!err) {\n\t\t\t// This will output the transaction's details\n\t\t\tconsole.log(data);\n\t\t}\n\t});\n\n\n\nAPI\n---\n\n- `paypalxo.useSandbox`\n- `paypalxo.ec.setExpressCheckout(params, callback)`\n- `paypalxo.ec.getExpressCheckoutDetails(params, callback)`\n- `paypalxo.ec.doExpressCheckoutPayment(params, callback)`\n- `paypalxo.ec.getLoginURL(token)`\n","maintainers":[{"name":"jeffharrell","email":"jeff@juxtadesign.com"}],"time":{"modified":"2012-08-22T03:15:38.326Z","created":"2012-07-24T21:52:11.894Z","0.1.0":"2012-07-24T21:52:13.745Z","0.2.0":"2012-08-21T06:58:40.293Z","0.2.1":"2012-08-22T03:15:38.326Z"},"author":{"name":"Jeff Harrell","email":"jeff@juxtadesign.com"},"repository":{"type":"git","url":"git@github.com:jeffharrell/node-paypalxo.git"},"users":{"fgribreau":true},"_id":"paypalxo","_rev":"1-b98635cc5d89097b0dbae784ba36ff11"}ÿdocument-storeÿpath-exš{"id":"path-ex","rev":"1-294ceabd4c54fa0c01b9448f7e5572fd","rev_tree":[{"pos":1,"ids":["294ceabd4c54fa0c01b9448f7e5572fd",{"status":"available"},[]]}],"rev_map":{"1-294ceabd4c54fa0c01b9448f7e5572fd":3336},"winningRev":"1-294ceabd4c54fa0c01b9448f7e5572fd","deleted":false,"seq":3336}ÿby-sequenceÿ0000000000003336ö{"name":"path-ex","description":"extended path library","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"vol4ok","email":"hello@vol4ok.net"},"name":"path-ex","description":"extended path library","version":"0.0.1","main":"path-ex.js","repository":{"url":"git://github.com/vol4ok/path-ex.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"vol4ok","email":"admin@vol4ok.net"},"_id":"path-ex@0.0.1","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b8080c385c9522687943953d348eab90b57c883f","tarball":"http://registry.npmjs.org/path-ex/-/path-ex-0.0.1.tgz"},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]}},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}],"time":{"modified":"2012-05-10T07:57:36.959Z","created":"2012-05-10T07:57:34.865Z","0.0.1":"2012-05-10T07:57:36.959Z"},"author":{"name":"vol4ok","email":"hello@vol4ok.net"},"repository":{"url":"git://github.com/vol4ok/path-ex.git"},"_id":"path-ex","_rev":"1-294ceabd4c54fa0c01b9448f7e5572fd"}ÿdocument-storeÿnpmboilerœ{"id":"npmboiler","rev":"1-9a05ffa8996ec11fbe4eeb224cfa8a5c","rev_tree":[{"pos":1,"ids":["9a05ffa8996ec11fbe4eeb224cfa8a5c",{"status":"available"},[]]}],"rev_map":{"1-9a05ffa8996ec11fbe4eeb224cfa8a5c":3335},"winningRev":"1-9a05ffa8996ec11fbe4eeb224cfa8a5c","deleted":false,"seq":3335}ÿby-sequenceÿ0000000000003335Ì,{"name":"npmboiler","description":"An NPM module boilerplate","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"npmboiler","version":"0.0.1","description":"An NPM module boilerplate","keywords":["boilerplate"],"author":{"name":"JQuarry","email":"dig@jquarry.com"},"repository":{"type":"git","url":"https://github.com/binocarlos/npmboiler.git"},"main":"./index","bin":{"npmboiler":"./bin/npmboiler"},"engines":{"node":">= 0.6.x"},"scripts":{"test":"make test"},"dependencies":{"async":"0.1.22","underscore":"1.3.3"},"devDependencies":{"mocha":"*","should":"*"},"readme":"# NPMBoiler\r\n\r\n[![NPM Module Boilerplate](https://www.dropbox.com/s/o17pxjjsd61ejko/npmboiler.jpg?dl=1)](http://binocarlos.github.com/npmboiler/)\r\n\r\nA boilerplate for an NPM module.\r\n\r\n[![Build Status](https://secure.travis-ci.org/binocarlos/npmboiler.png)](http://travis-ci.org/binocarlos/npmboiler)\r\n\r\n1. First you must fork this repository and then rename it to what you want your new module to be called.\r\n\r\n2. Then change each file to include the details for your project (that includes this README!)\r\n\r\n## Usage\r\n\r\n```js\r\n\r\n// your usage example here\r\n\r\n```\r\n\r\n## Installation\r\n\r\n $ npm install PROJECTNAME\r\n\r\n## Instructions\r\nHave sections about actual usage here. \r\n\r\n## Features\r\n\r\n * List your features\r\n\r\n## Philosophy\r\n\r\nTalk about why you wrote this module\r\n\r\n## Running Tests\r\n\r\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\r\n\r\n $ npm install\r\n\r\nthen run the tests:\r\n\r\n $ make test\r\n\r\n## License \r\n\r\n(The MIT License)\r\n\r\nCopyright (c) 2006-2012 jQuarry <wtf@jquarry.com>\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","_id":"npmboiler@0.0.1","dist":{"shasum":"770f80d620568af49f652f63ca1eaff2e778f0d4","tarball":"http://registry.npmjs.org/npmboiler/-/npmboiler-0.0.1.tgz"},"maintainers":[{"name":"binocarlos","email":"bino.carlos@gmail.com"}]}},"readme":"# NPMBoiler\r\n\r\n[![NPM Module Boilerplate](https://www.dropbox.com/s/o17pxjjsd61ejko/npmboiler.jpg?dl=1)](http://binocarlos.github.com/npmboiler/)\r\n\r\nA boilerplate for an NPM module.\r\n\r\n[![Build Status](https://secure.travis-ci.org/binocarlos/npmboiler.png)](http://travis-ci.org/binocarlos/npmboiler)\r\n\r\n1. First you must fork this repository and then rename it to what you want your new module to be called.\r\n\r\n2. Then change each file to include the details for your project (that includes this README!)\r\n\r\n## Usage\r\n\r\n```js\r\n\r\n// your usage example here\r\n\r\n```\r\n\r\n## Installation\r\n\r\n $ npm install PROJECTNAME\r\n\r\n## Instructions\r\nHave sections about actual usage here. \r\n\r\n## Features\r\n\r\n * List your features\r\n\r\n## Philosophy\r\n\r\nTalk about why you wrote this module\r\n\r\n## Running Tests\r\n\r\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\r\n\r\n $ npm install\r\n\r\nthen run the tests:\r\n\r\n $ make test\r\n\r\n## License \r\n\r\n(The MIT License)\r\n\r\nCopyright (c) 2006-2012 jQuarry <wtf@jquarry.com>\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n'Software'), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"binocarlos","email":"bino.carlos@gmail.com"}],"time":{"modified":"2012-07-21T15:08:23.347Z","created":"2012-07-21T15:08:11.159Z","0.0.1":"2012-07-21T15:08:23.347Z"},"author":{"name":"JQuarry","email":"dig@jquarry.com"},"repository":{"type":"git","url":"https://github.com/binocarlos/npmboiler.git"},"_id":"npmboiler","_rev":"1-9a05ffa8996ec11fbe4eeb224cfa8a5c"}ÿdocument-storeÿnotarize›{"id":"notarize","rev":"1-c88109bb04f0dedea805ee06d64b4e8a","rev_tree":[{"pos":1,"ids":["c88109bb04f0dedea805ee06d64b4e8a",{"status":"available"},[]]}],"rev_map":{"1-c88109bb04f0dedea805ee06d64b4e8a":3334},"winningRev":"1-c88109bb04f0dedea805ee06d64b4e8a","deleted":false,"seq":3334}ÿby-sequenceÿ0000000000003334÷{"name":"notarize","description":"Verified Citizen Media","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"notarize","description":"Verified Citizen Media","author":{"name":"Rich Jones","email":"rich@gun.io"},"version":"0.0.1","dependencies":{"cradle":"x.x.x","config":"0.4.9","express":"x.x.x","yaml":"x.x.x","commonjs-utils":"x.x.x","jqtpl":"1.1.x"},"engine":"node >= 0.6.0","_npmUser":{"name":"Miserlou","email":"rich@gun.io"},"_id":"notarize@0.0.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ddfb94b88fc212f1c4afb36ce1081364ebfd9efe","tarball":"http://registry.npmjs.org/notarize/-/notarize-0.0.1.tgz"},"maintainers":[{"name":"Miserlou","email":"rich@gun.io"}]}},"readme":"# Citizen Media Notary\n![diagram](http://i.imgur.com/2fwoc.png)\n\nWorking on this. Don't use in production yet.\n\n## Description\n\nA system which enables 3rd party data observers who maintain a record of the authenticity of citizen media as it is recorded.\n\nCheck the slideshow: http://openwatch.net/static/evidence.key.pdf\n\n## Goals:\n\n* Secure-by-default.\n* Publically queriable (but perhaps not publicaly browsable.)\n* Easy to deploy.\n* Come up with a spec\n* Federated servers? PubSub, maybe?\n\n## TODO:\n\n* Review schema\n* Crypto (Verification of signatures)\n* Duplication\n* Frontend\n\n## Language Choice\n\nI think I'm going to do this one in Node because Django doesn't play super nicely with non relational databases.\n\nThe drawback is that Node is kind of a pain in the ass to deploy, especially with SSL.\n\n## Database\n\nFor now, it's gonna use CouchDB. Opinions welcome.\n\n## Install\n\nMake sure you have latest node, npm and CouchDB installed.\n\n> npm install\n\n### Set up cryptographic keys\n\n* See ./crypto/CRYPTO.md for instructions.\n\n### Run Server\n\n> node server.js\n\n### Run with Supervisor\nIf you're developing, it's easier to use Supervisior, which will automatically reload the app when it detects changes.\nSupervisor requires that it be installed globally.\n\n> npm install -g supervisor\n\n> supervisor server.js\n\nMore details soon..\n","maintainers":[{"name":"Miserlou","email":"rich@gun.io"}],"time":{"modified":"2012-06-11T08:20:25.891Z","created":"2012-06-11T08:20:22.944Z","0.0.1":"2012-06-11T08:20:25.891Z"},"author":{"name":"Rich Jones","email":"rich@gun.io"},"_id":"notarize","_rev":"1-c88109bb04f0dedea805ee06d64b4e8a"}ÿdocument-storeÿnotarise›{"id":"notarise","rev":"1-924d89a6a412cb3abb41ba0849bfafdb","rev_tree":[{"pos":1,"ids":["924d89a6a412cb3abb41ba0849bfafdb",{"status":"available"},[]]}],"rev_map":{"1-924d89a6a412cb3abb41ba0849bfafdb":3333},"winningRev":"1-924d89a6a412cb3abb41ba0849bfafdb","deleted":false,"seq":3333}ÿby-sequenceÿ0000000000003333™{"name":"notarise","description":"notarize.js - British spelling edition.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"notarise","description":"notarize.js - British spelling edition.","author":{"name":"Rich Jones","email":"rich@gun.io"},"version":"0.0.1","dependencies":{"cradle":"x.x.x","config":"0.4.9","express":"x.x.x","yaml":"x.x.x","commonjs-utils":"x.x.x","jqtpl":"1.1.x"},"engine":"node >= 0.6.0","_npmUser":{"name":"Miserlou","email":"rich@gun.io"},"_id":"notarise@0.0.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c08c6526bcbc467bfa1895a6828691263d103902","tarball":"http://registry.npmjs.org/notarise/-/notarise-0.0.1.tgz"},"maintainers":[{"name":"Miserlou","email":"rich@gun.io"}]}},"readme":"# Citizen Media Notary\n![diagram](http://i.imgur.com/2fwoc.png)\n\nWorking on this. Don't use in production yet.\n\n## Description\n\nA system which enables 3rd party data observers who maintain a record of the authenticity of citizen media as it is recorded.\n\nCheck the slideshow: http://openwatch.net/static/evidence.key.pdf\n\n## Goals:\n\n* Secure-by-default.\n* Publically queriable (but perhaps not publicaly browsable.)\n* Easy to deploy.\n* Come up with a spec\n* Federated servers? PubSub, maybe?\n\n## TODO:\n\n* Review schema\n* Crypto (Verification of signatures)\n* Duplication\n* Frontend\n\n## Language Choice\n\nI think I'm going to do this one in Node because Django doesn't play super nicely with non relational databases.\n\nThe drawback is that Node is kind of a pain in the ass to deploy, especially with SSL.\n\n## Database\n\nFor now, it's gonna use CouchDB. Opinions welcome.\n\n## Install\n\nMake sure you have latest node, npm and CouchDB installed.\n\n> npm install\n\n### Set up cryptographic keys\n\n* See ./crypto/CRYPTO.md for instructions.\n\n### Run Server\n\n> node server.js\n\n### Run with Supervisor\nIf you're developing, it's easier to use Supervisior, which will automatically reload the app when it detects changes.\nSupervisor requires that it be installed globally.\n\n> npm install -g supervisor\n\n> supervisor server.js\n\nMore details soon..\n","maintainers":[{"name":"Miserlou","email":"rich@gun.io"}],"time":{"modified":"2012-06-11T08:21:50.480Z","created":"2012-06-11T08:21:48.840Z","0.0.1":"2012-06-11T08:21:50.480Z"},"author":{"name":"Rich Jones","email":"rich@gun.io"},"_id":"notarise","_rev":"1-924d89a6a412cb3abb41ba0849bfafdb"}ÿdocument-storeÿnokiaplacesž{"id":"nokiaplaces","rev":"1-c46ae648398b07bc389cf00aa9306999","rev_tree":[{"pos":1,"ids":["c46ae648398b07bc389cf00aa9306999",{"status":"available"},[]]}],"rev_map":{"1-c46ae648398b07bc389cf00aa9306999":3332},"winningRev":"1-c46ae648398b07bc389cf00aa9306999","deleted":false,"seq":3332}ÿby-sequenceÿ0000000000003332Ø{"name":"nokiaplaces","dist-tags":{"latest":"0.5.3"},"versions":{"0.5.3":{"name":"nokiaplaces","version":"0.5.3","main":"jsPlacesNodeDataAPI.js","keywords":["nokia","places","headless","api","maps"],"_npmUser":{"name":"nokiajsplaces","email":"radoslaw.adamczyk@nokia.com"},"_id":"nokiaplaces@0.5.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7e8c89cc35c243cd90a34f67b991b12d69080ea6","tarball":"http://registry.npmjs.org/nokiaplaces/-/nokiaplaces-0.5.3.tgz"},"readme":"","maintainers":[{"name":"nokiajsplaces","email":"radoslaw.adamczyk@nokia.com"}]}},"readme":"","maintainers":[{"name":"nokiajsplaces","email":"radoslaw.adamczyk@nokia.com"}],"time":{"modified":"2012-05-09T07:01:27.742Z","created":"2012-05-09T07:01:24.166Z","0.5.3":"2012-05-09T07:01:27.742Z"},"_id":"nokiaplaces","_rev":"1-c46ae648398b07bc389cf00aa9306999"}ÿdocument-storeÿnode-vertxbus {"id":"node-vertxbus","rev":"1-8b7784e50f7fd56b648756e41d6da9e6","rev_tree":[{"pos":1,"ids":["8b7784e50f7fd56b648756e41d6da9e6",{"status":"available"},[]]}],"rev_map":{"1-8b7784e50f7fd56b648756e41d6da9e6":3331},"winningRev":"1-8b7784e50f7fd56b648756e41d6da9e6","deleted":false,"seq":3331}ÿby-sequenceÿ0000000000003331¹ {"name":"node-vertxbus","description":"VertXBus for node","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"node-vertxbus","author":{"name":"Surat Teerapittayanon"},"version":"0.1.0","keywords":["websockets","websocket","sockjs"],"repository":{"type":"git","url":"git://github.com/steerapi/vertx-eventbus-node.git"},"main":"index","description":"VertXBus for node","dependencies":{"sockjs-client-ws":"*"},"readme":"vertx-eventbus-node\n===================\n\nConnect to Vert.x EventBus via node","_id":"node-vertxbus@0.1.0","dist":{"shasum":"0023e5182adb8a64c747e612bc22974d1631aa06","tarball":"http://registry.npmjs.org/node-vertxbus/-/node-vertxbus-0.1.0.tgz"},"maintainers":[{"name":"steerapi","email":"steerapi@gmail.com"}]}},"readme":"vertx-eventbus-node\n===================\n\nConnect to Vert.x EventBus via node","maintainers":[{"name":"steerapi","email":"steerapi@gmail.com"}],"time":{"modified":"2012-08-18T05:39:41.255Z","created":"2012-08-18T05:39:40.673Z","0.1.0":"2012-08-18T05:39:41.255Z"},"author":{"name":"Surat Teerapittayanon"},"repository":{"type":"git","url":"git://github.com/steerapi/vertx-eventbus-node.git"},"_id":"node-vertxbus","_rev":"1-8b7784e50f7fd56b648756e41d6da9e6"}ÿdocument-storeÿnode-spamd{"id":"node-spamd","rev":"1-74a3a62da7196fce6dc46e02c590eb69","rev_tree":[{"pos":1,"ids":["74a3a62da7196fce6dc46e02c590eb69",{"status":"available"},[]]}],"rev_map":{"1-74a3a62da7196fce6dc46e02c590eb69":3330},"winningRev":"1-74a3a62da7196fce6dc46e02c590eb69","deleted":false,"seq":3330}ÿby-sequenceÿ0000000000003330¾#{"name":"node-spamd","description":"SpamAssassin message evaluator for node.js","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"name":"node-spamd","version":"0.0.2","engines":["node >=0.4.0"],"description":"SpamAssassin message evaluator for node.js","author":{"name":"Humantech Gestao do Conhecimento","email":"admin@humantech.com.br","url":"http://www.humantech.com.br/"},"contributors":[{"name":"Guilherme Henrique de Oliveira","email":"guilherme@humantech.com.br"},{"name":"Thomas Alexander Ewald","email":"thomas@humantech.com.br"}],"license":{"type":"MIT"},"keywords":["spam","evaluation","spamassassin","score"],"repository":{"type":"git","url":"git://github.com/humantech/node-spamd.git"},"scripts":{"test":"vows --spec"},"directories":{"examples":"examples"},"main":"./lib/spamd.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"humantech","email":"admin@humantech.com.br"},"_id":"node-spamd@0.0.2","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"a553353fd7519993cd83f07339bd8a5e58d5a5b2","tarball":"http://registry.npmjs.org/node-spamd/-/node-spamd-0.0.2.tgz"},"maintainers":[{"name":"humantech","email":"admin@humantech.com.br"}]},"0.0.4":{"name":"node-spamd","version":"0.0.4","engines":["node >=0.4.0"],"description":"SpamAssassin message evaluator for node.js","author":{"name":"Humantech Gestao do Conhecimento","email":"admin@humantech.com.br","url":"http://www.humantech.com.br/"},"contributors":[{"name":"Guilherme Henrique de Oliveira","email":"guilherme@humantech.com.br"},{"name":"Thomas Alexander Ewald","email":"thomas@humantech.com.br"}],"license":{"type":"MIT"},"keywords":["spam","evaluation","spamassassin","score"],"repository":{"type":"git","url":"git://github.com/humantech/node-spamd.git"},"scripts":{"test":"vows --spec"},"directories":{"examples":"examples"},"main":"./lib/spamd.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"humantech","email":"admin@humantech.com.br"},"_id":"node-spamd@0.0.4","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e27670dfee08efcd2ee2b6eba60e3b6d2b0a5369","tarball":"http://registry.npmjs.org/node-spamd/-/node-spamd-0.0.4.tgz"},"maintainers":[{"name":"humantech","email":"admin@humantech.com.br"}]}},"readme":"# Spamd (SpamAssassin) client for node.js\n\nThis library use sockets to send a message to SpamAssassin daemon for evaluation.\n\nBased on the SpamAssassin plugin from [Haraka](http://haraka.github.com/).\n\n## Usage\n\n\tvar Spamd = require(\"node-spamd\");\n\tvar spamd = new Spamd(sender, receiver, host, port);\n\n\tspamd.evaluate(subject, message, function(res, err){\n\n\t\tif(err) {\n\t\t\tconsole.log(err);\n\t\t} else {\n\t\t\tif(res.spam) {\n\t\t\t\tconsole.log('The message is Spam, is evaluated with ' + res.evaluation + \" points in a maximun of \" + res.allowed);\n\t\t\t}else{\n\t\t\t\tconsole.log('The message is not Spam, is evaluated with ' + res.evaluation + \" points in a maximun of \" + res.allowed);\n\t\t\t}\n\t\t}\n\t});\n\n**sender**: Sender e-mail address/user. Default value: *root*\n
**receiver**: Receiver e-mail address/user. Default value: *root*\n
**host**: Spamd address. Default value: *localhost*\n
**port**: Spamd port. Default value: *783*\n
**subject**: String containing the message subject.\n
**message**: String containing the message body.\n\n### Return value\n\nThe method returns an object, with the following attributes:\n\n**spam** = **true** or **false**. Indicates the result of SpamAssassing analysis.\n
**evaluation** = Number or points or hits, that the message has obtained.\n
**allowed** = Configured minimal required points for SpamAssassin mark the message as SPAM. This is a spamd setting.\n\n## TODO\n\n* document source code;\n* real documentation;\n* jsHint standards.\n\n## License\n\nCopyright (C) 2012 Humantech\n\nDistributed under the MIT License, the same as Node.js.\n","maintainers":[{"name":"humantech","email":"admin@humantech.com.br"}],"time":{"modified":"2012-05-09T14:59:13.522Z","created":"2012-03-13T20:15:57.544Z","0.0.2":"2012-03-13T20:15:59.944Z","0.0.4":"2012-05-09T14:59:13.522Z"},"author":{"name":"Humantech Gestao do Conhecimento","email":"admin@humantech.com.br","url":"http://www.humantech.com.br/"},"repository":{"type":"git","url":"git://github.com/humantech/node-spamd.git"},"_id":"node-spamd","_rev":"1-74a3a62da7196fce6dc46e02c590eb69"}ÿdocument-storeÿnode-shark{"id":"node-shark","rev":"1-8fd29c73ea4e58ee3a13f5c63c06daca","rev_tree":[{"pos":1,"ids":["8fd29c73ea4e58ee3a13f5c63c06daca",{"status":"available"},[]]}],"rev_map":{"1-8fd29c73ea4e58ee3a13f5c63c06daca":3329},"winningRev":"1-8fd29c73ea4e58ee3a13f5c63c06daca","deleted":false,"seq":3329}ÿby-sequenceÿ0000000000003329Õ {"name":"node-shark","description":"A new develop framework for Node.js","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"node-shark","version":"0.2.0","author":{"name":"Aleafs Zhang","url":"zhangxc83@gmail.com"},"contributors":[],"homepage":"git@github.com:aleafs/node-shark.git","description":"A new develop framework for Node.js","keywords":["shark","Node.js","framework"],"dependencies":{},"engines":{"node":">=0.6.9"},"devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"test":"make test"},"_npmUser":{"name":"aleafs","email":"zhangxc83@gmail.com"},"_id":"node-shark@0.2.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9d480589749910b805d5fa225ed561874e710706","tarball":"http://registry.npmjs.org/node-shark/-/node-shark-0.2.0.tgz"},"maintainers":[{"name":"aleafs","email":"zhangxc83@gmail.com"}]}},"readme":"\n[![Build Status](https://secure.travis-ci.org/aleafs/node-shark.png)](http://travis-ci.org/aleafs/node-shark)\n\n# About #\n\n# Usage #\n","maintainers":[{"name":"aleafs","email":"zhangxc83@gmail.com"}],"time":{"modified":"2012-04-20T03:53:24.781Z","created":"2012-04-20T03:53:20.870Z","0.2.0":"2012-04-20T03:53:24.781Z"},"author":{"name":"Aleafs Zhang","url":"zhangxc83@gmail.com"},"_id":"node-shark","_rev":"1-8fd29c73ea4e58ee3a13f5c63c06daca"}ÿdocument-storeÿnode-osx›{"id":"node-osx","rev":"1-ac857fb624756539bbcffb261d4f0713","rev_tree":[{"pos":1,"ids":["ac857fb624756539bbcffb261d4f0713",{"status":"available"},[]]}],"rev_map":{"1-ac857fb624756539bbcffb261d4f0713":3328},"winningRev":"1-ac857fb624756539bbcffb261d4f0713","deleted":false,"seq":3328}ÿby-sequenceÿ0000000000003328¹{"name":"node-osx","description":"ia32 node for osx","dist-tags":{"latest":"0.8.2"},"versions":{"0.8.2":{"author":{"name":"Elijah Insua","email":"tmpvar@gmail.com","url":"http://tmpvar.com"},"name":"node-osx","description":"ia32 node for osx","version":"0.8.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"os":["darwin"],"_npmUser":{"name":"tmpvar","email":"tmpvar@gmail.com"},"_id":"node-osx@0.8.2","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"320f99520c975dd7a54d4b698c368413125bf786","tarball":"http://registry.npmjs.org/node-osx/-/node-osx-0.8.2.tgz"},"readme":"","maintainers":[{"name":"tmpvar","email":"tmpvar@gmail.com"}]}},"readme":"","maintainers":[{"name":"tmpvar","email":"tmpvar@gmail.com"}],"time":{"modified":"2012-07-22T03:29:38.002Z","created":"Õ ¨ù2012-07-22T03:29:36.867Z","0.8.2":"2012-07-22T03:29:38.002Z"},"author":{"name":"Elijah Insua","email":"tmpvar@gmail.com","url":"http://tmpvar.com"},"_id":"node-osx","_rev":"1-ac857fb624756539bbcffb261d4f0713"}!ÿdocument-storeÿnode-hampelmann¢{"id":"node-hampelmann","rev":"1-f46a137673aa28b09e9066709fe85bf3","rev_tree":[{"pos":1,"ids":["f46a137673aa28b09e9066709fe85bf3",{"status":"available"},[]]}],"rev_map":{"1-f46a137673aa28b09e9066709fe85bf3":3327},"winningRev":"1-f46a137673aa28b09e9066709fe85bf3","deleted":false,"seq":3327}ÿby-sequenceÿ0000000000003327ë5{"name":"node-hampelmann","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"node-hampelmann","version":"0.0.0","private":false,"dependencies":{"express":"< 3.0.0","mongodb":">= 1.0.2","heinzelmann":"0.0.1"},"_npmUser":{"name":"knurtsysteme","email":"info@knurt.de"},"_id":"node-hampelmann@0.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.8-pre","_defaultsLoaded":true,"dist":{"shasum":"8284dfd6681a4dd0679938e7e552b462049455ca","tarball":"http://registry.npmjs.org/node-hampelmann/-/node-hampelmann-0.0.0.tgz"},"maintainers":[{"name":"knurtsysteme","email":"info@knurt.de"}]}},"readme":"node-Hampelmann\n---------------\n \n## First of all\n \nThis is an experimental program and a playground for KNURT Systeme. Feel\nfree to play with us, but do not use it in production environments yet!\n \nMany features described below are a combination of already implemented code,\nbrainstorming results and future issues.\n \n \n## What it is\n \nThe node-Hampelmann (German for [jumping jack](http://en.wikipedia.org/wiki/Jumping_jack_(toy)) \nis a program and a framework that we bashfully also refer to as \"Code Without Borders\".\n \nIn our opinion a huge data collection has the ability to do even more then selling Ads or \nconnecting people! It is able to do *everything*.\n \n \n### Make some coffee!\n \nTo be honest: We only have a computer as well. But what is it then?\n \nThe difference (or better the idea) is a code with no specific purposes on the one hand - \njust like a framework. On the other hand it is an application that is ready to use.\n \nSo most likely this is a restful database just like [Apache CouchDB](http://couchdb.apache.org) or \n[mongodb-rest](https://github.com/tdegrunt/mongodb-rest) but featureless. \nThe strong points of the software is the possibility to compare different stored documents and visualize \nit in a table. And that can be done by everyone just using some HTML.\n \nLet's have a look.\n \n \n## Example 1: Fighting against epidemics\n \nIf people describe symptoms of their diseases, what they ate and where they\ngot it, it might become possible to locate the source of the pathogen then.\n \nAll you need is a HTML-Form for data capturing:\n```html\n[...]\n
\n
\n Your symptoms\n

\n \n

\n

\n \n

\n

\n \n

\n
\n
\n Location\n

\n \n

\n
\n

\n \n

\n
\n[...]\n```\n \nTODO ↘ not implemented yet\n \nIt is also possible to send a JSON-Object directly with content type \n`text/json; charset=UTF-8`.\n \nAnd another HTML page with some JavaScript to get a table showing which symptoms appear at what location.\n \n```html\n[...]\n\n[...]\n\n\n\n
\n\n[...]\n```\n \nThe example put the data into a table.\n \n\n \nThis ideas has many problems. First of all, if you have huge data,\nyou have a huge table. So what you need is a filter (e.g. \"only show\nmaximum matches\"). (not implemented yet)\n \nThen you have synonyms like \"location\" can be the geographical location or\nthe part of the body the symptoms are located.\n \nBut of course there is a possibility for private use - e.g. A doctor uses\nhis own database. \n \n \n## Technical specifications\n \nThe entire application is realized over a webservice answering with JSON.\n \n \n### Store something into the database\n \nSend whatever key values to it via POST. You have to specify the action\n```insert``` and the doctype:\n \n```html\n
.json\" method=\"POST\">\n \" />\n [...]\n
\n```\n \nOn sending this form you get an JSON-Answer:\n```js\nTODO\n```\n \n### List of doctypes and keys\n \nIt is very important to store same things under the same doctype. It makes\nnot much sense to store things under many synonyms. Also it might have\ndifferent meanings depending on the html form input label (TODO not stored\nyet!).\n \nHere is how you get all existing doctypes:\n \n```\n$ curl localhost:3000/doctypes.json\n[\"disease\",\"road_accident\",\"forest_decline\"]\n```\n \nAnd this is how to get the existing keys of a doctype:\n```\n$ curl localhost:3000//keys.json\n```\n \nE.g:\n```\n$ curl localhost:3000/disease/keys.json\n[\n {\n key: \"food\",\n occurrences: 31\n },\n {\n key: \"location\",\n occurrences: 153\n },\n {\n key: \"symptoms\",\n occurrences: 153\n }\n]\n```\n \n \n\n### License\n\nCopyright (C) 2012 KNURT Systeme\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"knurtsysteme","email":"info@knurt.de"}],"time":{"modified":"2012-08-07T11:11:04.061Z","created":"2012-08-07T11:11:00.288Z","0.0.0":"2012-08-07T11:11:04.060Z"},"_id":"node-hampelmann","_rev":"1-f46a137673aa28b09e9066709fe85bf3"}ÿdocument-storeÿnode-builderŸ{"id":"node-builder","rev":"1-035eab576a20aed0830da132a44ce5af","rev_tree":[{"pos":1,"ids":["035eab576a20aed0830da132a44ce5af",{"status":"available"},[]]}],"rev_map":{"1-035eab576a20aed0830da132a44ce5af":3326},"winningRev":"1-035eab576a20aed0830da132a44ce5af","deleted":false,"seq":3326}ÿby-sequenceÿ0000000000003326ø{"name":"node-builder","description":"A JS/CSS Build Utility","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"James Brumond","email":"james@jbrumond.me","url":"http://jbrumond.me"},"name":"node-builder","description":"A JS/CSS Build Utility","version":"0.0.1","preferGlobal":true,"repository":{"type":"git","url":"git://github.com/kbjr/node-builder.git"},"bin":{"builder":"./bin/builder.js"},"main":"builder.js","engines":{"node":"~0.6.0"},"dependencies":{"async":"latest","cssmin":"latest","uglify-js":"latest"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"node-builder@0.0.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"44f082c964d328c79459efa028c4de78f257aebe","tarball":"http://registry.npmjs.org/node-builder/-/node-builder-0.0.1.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]},"0.0.2":{"author":{"name":"James Brumond","email":"james@jbrumond.me","url":"http://jbrumond.me"},"name":"node-builder","description":"A JS/CSS Build Utility","version":"0.0.2","preferGlobal":true,"repository":{"type":"git","url":"git://github.com/kbjr/node-builder.git"},"bin":{"builder":"./bin/builder.js"},"main":"builder.js","engines":{"node":"~0.6.0"},"dependencies":{"async":"latest","css-compressor":"latest","uglify-js":"latest"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"node-builder@0.0.2","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"757950060e7a30a5e5e03e5c733568f81cdb1222","tarball":"http://registry.npmjs.org/node-builder/-/node-builder-0.0.2.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]},"0.0.3":{"author":{"name":"James Brumond","email":"james@jbrumond.me","url":"http://jbrumond.me"},"name":"node-builder","description":"A JS/CSS Build Utility","version":"0.0.3","preferGlobal":true,"repository":{"type":"git","url":"git://github.com/kbjr/node-builder.git"},"bin":{"builder":"./bin/builder.js"},"main":"builder.js","engines":{"node":"~0.6.0"},"dependencies":{"async":"latest","css-compressor":"latest","uglify-js":"latest"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"node-builder@0.0.3","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"709bd4e15e48d733a7c7ca1b1de87e7fee7fbc97","tarball":"http://registry.npmjs.org/node-builder/-/node-builder-0.0.3.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]}},"readme":null,"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"time":{"modified":"2012-04-20T22:27:59.529Z","created":"2012-04-19T00:58:55.460Z","0.0.1":"2012-04-19T00:58:57.651Z","0.0.2":"2012-04-20T22:25:27.891Z","0.0.3":"2012-04-20T22:27:59.529Z"},"author":{"name":"James Brumond","email":"james@jbrumond.me","url":"http://jbrumond.me"},"repository":{"type":"git","url":"git://github.com/kbjr/node-builder.git"},"_id":"node-builder","_rev":"1-035eab576a20aed0830da132a44ce5af"}ÿdocument-storeÿnlink˜{"id":"nlink","rev":"1-92a701cc09f5d2adc2128297ef9435ae","rev_tree":[{"pos":1,"ids":["92a701cc09f5d2adc2128297ef9435ae",{"status":"available"},[]]}],"rev_map":{"1-92a701cc09f5d2adc2128297ef9435ae":3325},"winningRev":"1-92a701cc09f5d2adc2128297ef9435ae","deleted":false,"seq":3325}ÿby-sequenceÿ0000000000003325Ä{"name":"nlink","description":"JavaScript Linker","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"author":{"name":"vol4ok"},"name":"nlink","description":"JavaScript Linker","version":"0.0.2","bin":{"nlink":"./bin/nlink"},"main":"./lib/nlink.js","repository":{"type":"git","url":"git://github.com/vol4ok/nlink.git"},"dependencies":{"coffee-script":">=1.2.0","optimist":">=0.3.1","uglify-js":"~1.2.6","fs.walker":">=0.0.6","colors":">=0.6.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"vol4ok","email":"admin@vol4ok.net"},"_id":"nlink@0.0.2","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"d4e1da2f44805866b2e3735b19e92624edf86b58","tarball":"http://registry.npmjs.org/nlink/-/nlink-0.0.2.tgz"},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]},"0.0.3":{"author":{"name":"vol4ok"},"name":"nlink","description":"JavaScript Linker","version":"0.0.3","bin":{"nlink":"./bin/nlink"},"main":"./lib/nlink.js","repository":{"type":"git","url":"git://github.com/vol4ok/nlink.git"},"dependencies":{"coffee-script":">=1.2.0","optimist":">=0.3.1","uglify-js":"~1.2.6","fs.walker":">=0.0.6","colors":">=0.6.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"vol4ok","email":"admin@vol4ok.net"},"_id":"nlink@0.0.3","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"38b762c03210260251e99df1353022ed4e8a5da6","tarball":"http://registry.npmjs.org/nlink/-/nlink-0.0.3.tgz"},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]},"0.0.4":{"author":{"name":"vol4ok"},"name":"nlink","description":"JavaScript Linker","version":"0.0.4","bin":{"nlink":"./bin/nlink"},"main":"./lib/nlink.js","repository":{"type":"git","url":"git://github.com/vol4ok/nlink.git"},"dependencies":{"coffee-script":">=1.2.0","optimist":">=0.3.1","uglify-js":"~1.2.6","fs.walker":">=0.0.6","colors":">=0.6.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"vol4ok","email":"admin@vol4ok.net"},"_id":"nlink@0.0.4","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b329b456c7ce7848c612fa647edf2079a73bf269","tarball":"http://registry.npmjs.org/nlink/-/nlink-0.0.4.tgz"},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]}},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}],"time":{"modified":"2012-05-10T12:53:11.368Z","created":"2012-05-10T04:13:34.988Z","0.0.2":"2012-05-10T04:13:36.997Z","0.0.3":"2012-05-10T12:29:03.570Z","0.0.4":"2012-05-10T12:53:11.368Z"},"author":{"name":"vol4ok"},"repository":{"type":"git","url":"git://github.com/vol4ok/nlink.git"},"_id":"nlink","_rev":"1-92a701cc09f5d2adc2128297ef9435ae"}ÿdocument-storeÿnhttpd™{"id":"nhttpd","rev":"1-a094fc86ecbd615658fd2eb635a33571","rev_tree":[{"pos":1,"ids":["a094fc86ecbd615658fd2eb635a33571",{"status":"available"},[]]}],"rev_map":{"1-a094fc86ecbd615658fd2eb635a33571":3324},"winningRev":"1-a094fc86ecbd615658fd2eb635a33571","deleted":false,"seq":3324}ÿby-sequenceÿ0000000000003324‰;{"name":"nhttpd","description":"HTTP server","dist-tags":{"latest":"0.0.10"},"versions":{"0.0.7pre-20110310":{"name":"nhttpd","description":"Node HTTP server","version":"0.0.7pre-20110310","repository":"http://boshi.inimino.org/3box/nhttpd/","homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"modules":{"staticFile":"src/staticFile.js","handlers":"src/handlers.js","rfc_util":"src/rfc_util.js"},"_id":"nhttpd@0.0.7pre-20110310","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.4.2","dist":{"shasum":"d334462a0ac71e4d44263899ec94e6799b7bcaa9","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.7pre-20110310.tgz"}},"0.0.8":{"name":"nhttpd","description":"HTTP server","version":"0.0.8","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"git","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":["MIT"],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d5316ae9febd83a97e3ec40a41de70a4c2980276","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.8.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]},"0.0.9pre":{"name":"nhttpd","description":"HTTP server","version":"0.0.9pre","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"git","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":[{"type":"MIT","url":"http://boshi.inimino.org/3box/nhttpd/LICENCE"}],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.9pre","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3878fc97a6660aa7f66a97d5b1fb25dae4c275d6","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.9pre.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]},"0.0.9pre-b":{"name":"nhttpd","description":"HTTP server","version":"0.0.9pre-b","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"git","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":[{"type":"MIT","url":"http://boshi.inimino.org/3box/nhttpd/LICENCE"}],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.9pre-b","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"f347e9a66c2c6def5265453e9e527df4e783e55e","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.9pre-b.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]},"0.0.9pre-c":{"name":"nhttpd","description":"HTTP server","version":"0.0.9pre-c","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"git","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":[{"type":"MIT","url":"http://boshi.inimino.org/3box/nhttpd/LICENCE"}],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.9pre-c","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0e033eb489c022fa670ff1badf7ee590a6823d98","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.9pre-c.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]},"0.0.9":{"name":"nhttpd","description":"HTTP server","version":"0.0.9","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"git","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":[{"type":"MIT","url":"http://boshi.inimino.org/3box/nhttpd/LICENCE"}],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"a4e5957f66909933f466dc04bad780a2aa24e7e6","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.9.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]},"0.0.10":{"name":"nhttpd","description":"HTTP server","version":"0.0.10","preferGlobal":true,"keywords":["HTTP","httpd","Web server","experimental"],"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"repository":{"type":"revstore","url":"http://boshi.inimino.org/3box/nhttpd/"},"homepage":"http://boshi.inimino.org/3box/nhttpd/","dependencies":{"opts":"*"},"bin":{"nhttpd-start":"etc/start.sh","nhttpd-stop":"etc/stop.sh","nhttpd":"src/httpd.js"},"licenses":[{"type":"MIT","url":"http://boshi.inimino.org/3box/nhttpd/LICENCE"}],"_npmUser":{"name":"inimino","email":"inimino@inimino.org"},"_id":"nhttpd@0.0.10","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6bcb99e31718ab0d80eec456a92bc9dff7e39cba","tarball":"http://registry.npmjs.org/nhttpd/-/nhttpd-0.0.10.tgz"},"readme":"","maintainers":[{"name":"inimino","email":"inimino@inimino.org"}]}},"maintainers":[{"name":"inimino","email":"inimino@inimino.org"}],"time":{"modified":"2012-06-11T09:58:55.104Z","created":"2011-03-11T07:44:27.287Z","0.0.7pre-20110310":"2011-03-11T07:44:27.457Z","0.0.8":"2012-02-04T16:28:59.872Z","0.0.9pre":"2012-02-05T02:28:08.170Z","0.0.9pre-b":"2012-02-05T02:55:00.762Z","0.0.9pre-c":"2012-02-05T09:38:13.710Z","0.0.9":"2012-02-05T15:47:16.467Z","0.0.10":"2012-06-11T09:58:55.104Z"},"repository":{"type":"revstore","url":"http://boshi.inimino.org/3box/nhttpd/"},"author":{"name":"inimino","email":"inimino@inimino.org","url":"http://inimino.org/~inimino/blog/"},"_id":"nhttpd","_rev":"1-a094fc86ecbd615658fd2eb635a33571"}ÿdocument-storeÿnagiohdear{"id":"nagiohdear","rev":"1-b7e318897d03d49f08a4cfb9ef9a37ea","rev_tree":[{"pos":1,"ids":["b7e318897d03d49f08a4cfb9ef9a37ea",{"status":"available"},[]]}],"rev_map":{"1-b7e318897d03d49f08a4cfb9ef9a37ea":3323},"winningRev":"1-b7e318897d03d49f08a4cfb9ef9a37ea","deleted":false,"seq":3323}ÿby-sequenceÿ0000000000003323©#{"name":"nagiohdear","description":"Nagios config file parser and generator","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"nagiohdear","description":"Nagios config file parser and generator","version":"0.0.1","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/nagiohdear","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/nagiohdear.git"},"keywords":["nagiohdear","nagios","config","parser","generator"],"main":"./index.js","engines":{"node":">=0.4.1"},"dependencies":{},"devDependencies":{"pegjs":"0.7.x","vows":"","docco":">=0.3.0"},"scripts":{"pegjs":"./node_modules/pegjs/bin/pegjs src/parser.peg lib/parser.js","test":"./node_modules/vows/bin/vows --spec","docs":"./node_modules/docco/bin/docco index.js lib/generator.js"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"nagiohdear@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8f3309ff56c439eb53c1fb2fa29eea3413e5a08f","tarball":"http://registry.npmjs.org/nagiohdear/-/nagiohdear-0.0.1.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]},"0.0.2":{"name":"nagiohdear","description":"Nagios config file parser and generator","version":"0.0.2","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/nagiohdear","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/nagiohdear.git"},"keywords":["nagiohdear","nagios","config","parser","generator"],"main":"./index.js","engines":{"node":">=0.4.1"},"dependencies":{},"devDependencies":{"pegjs":"0.7.x","vows":"","docco":">=0.3.0"},"scripts":{"pegjs":"./node_modules/pegjs/bin/pegjs src/parser.peg lib/parser.js","test":"./node_modules/vows/bin/vows --spec","docs":"./node_modules/docco/bin/docco index.js lib/generator.js"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"nagiohdear@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8cd31da3a85f2002b6387b74fbf6b49405261f25","tarball":"http://registry.npmjs.org/nagiohdear/-/nagiohdear-0.0.2.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]}},"readme":"Nagiohdear\n==========\n\nRudimentary config parser/generator for Nagios.\n\nBuild Status: \nmaster: [![Build Status](https://secure.travis-ci.org/deoxxa/nagiohdear.png?branch=master)](http://travis-ci.org/deoxxa/nagiohdear) \ndevelop: [![Build Status](https://secure.travis-ci.org/deoxxa/nagiohdear.png?branch=develop)](http://travis-ci.org/deoxxa/nagiohdear) \n\nOverview\n--------\n\nNagiohdear is a very naiive config parser and generator for Nagios config files.\nIt handles only string types and doesn't know how to handle malformed or weird\nfiles.\n\nDocumentation\n-------------\n\nTake a look at [docs/](docs/). There's some HTML lumps in there generated with\n[docco](http://jashkenas.github.com/docco/). These lumps are also hosted\n[on github](http://deoxxa.github.com/nagiohdear).\n\nTesting\n-------\n\nI'm using [vows](http://vowsjs.org/) for testing. The tests are in the \"test\"\ndirectory.\n\nExample Usage\n-------------\n\nThis code is also in [example.js](example.js).\n\n```javascript\n #!/usr/bin/env node\n\n var fs = require(\"fs\"),\n nagiohdear = require(\"./index\");\n\n fs.readFile(\"./config.cfg\", function(err, data) {\n var config_original = data.toString();\n console.log(config_original);\n\n var config_parsed = nagiohdear.parse(config_original);\n console.log(JSON.stringify(config_parsed, null, 2));\n\n var config_generated = nagiohdear.generate(config_parsed);\n console.log(config_generated);\n });\n```\n\nLicense\n------- \n\n3-clause BSD. A copy is included with the source.\n\nContact\n-------\n\n* GitHub (http://github.com/deoxxa)\n* Twitter (http://twitter.com/deoxxa)\n* Email (deoxxa@fknsrs.biz)\n","maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}],"time":{"modified":"2012-05-10T03:56:11.750Z","created":"2012-05-07T12:43:58.312Z","0.0.1":"2012-05-07T12:44:01.280Z","0.0.2":"2012-05-10T03:56:11.750Z"},"author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"repository":{"type":"git","url":"git://github.com/deoxxa/nagiohdear.git"},"_id":"nagiohdear","_rev":"1-b7e318897d03d49f08a4cfb9ef9a37ea"}ÿdocument-storeÿmyweb˜{"id":"myweb","rev":"1-336629f6700ec9154e4bc356382e496a","rev_tree":[{"pos":1,"ids":["336629f6700ec9154e4bc356382e496a",{"status":"available"},[]]}],"rev_map":{"1-336629f6700ec9154e4bc356382e496a":3322},"winningRev":"1-336629f6700ec9154e4bc356382e496a","deleted":false,"seq":3322}ÿby-sequenceÿ0000000000003322˜{"name":"myweb","description":"Node.js framwork","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"myweb","version":"0.0.1","description":"Node.js framwork","preferGlobal":"true","main":"index.js","bin":{"myweb":"index.js"},"author":{"name":"danhuang"},"keywords":["myweb","nodejs","nodejs framwork"],"repository":{"type":"git","url":"https://tnodejs@github.com/tnodejs/myweb-nodejs.git"},"dependencies":{"commander":"0.5.2"},"engines":{"node":"*"},"readme":"","_id":"myweb@0.0.1","dist":{"shasum":"f93f396c19f926b62c7e62583b3ce133d6528abc","tarball":"http://registry.npmjs.org/myweb/-/myweb-0.0.1.tgz"},"maintainers":[{"name":"danhuang","email":"492383469@qq.com"}]}},"readme":"","maintainers":[{"name":"danhuang","email":"492383469@qq.com"}],"time":{"modified":"2012-08-07T13:06:56.812Z","created":"2012-08-07T13:06:50.304Z","0.0.1":"2012-08-07T13:06:56.812Z"},"author":{"name":"danhuang"},"repository":{"type":"git","url":"https://tnodejs@github.com/tnodejs/myweb-nodejs.git"},"_id":"myweb","_rev":"1-336629f6700ec9154e4bc356382e496a"}ÿdocument-storeÿmynah˜{"id":"mynah","rev":"1-9da038ba0936b052753d184b32646e27","rev_tree":[{"pos":1,"ids":["9da038ba0936b052753d184b32646e27",{"status":"available"},[]]}],"rev_map":{"1-9da038ba0936b052753d184b32646e27":3321},"winningRev":"1-9da038ba0936b052753d184b32646e27","deleted":false,"seq":3321}ÿby-sequenceÿ0000000000003321Û {"name":"mynah","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"mynah","version":"0.0.0","main":"./app.js","dependencies":{"express":"2.5.1","jade":"0.25.0","mongoskin":"0.3.5","pinyin":"0.0.1"},"devDependencies":{"nae":"0.1.11"},"customHost":["www.mynah.org"],"_npmUser":{"name":"lamb","email":"lamb52gao@gmail.com"},"_id":"mynah@0.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a2c8dd66ede10e78494e1c3ace0da30b7f729109","tarball":"http://registry.npmjs.org/mynah/-/mynah-0.0.0.tgz"},"maintainers":[{"name":"lamb","email":"lamb52gao@gmail.com"}]}},"readme":"## mynah黑鸟\n\n黑鸟:我æ¥äº†ï¼\n\n人类:别人对你有å„ç§æœŸæœ›ï¼Œä½ ä¼šä¸ä¼šæœ‰åŽ‹åŠ› ?\n\n黑鸟:我很庆幸我过的日å­, 是我自己想过的日å­, è€Œä¸æ˜¯åˆ«äººæƒ³è¦æˆ‘过的日å­ã€‚ 别人想过什么样的日å­, 他们自己去过就好了,轮ä¸åˆ°æˆ‘æ¥æ›¿ä»–们过... \n","maintainers":[{"name":"lamb","email":"lamb52gao@gmail.com"}],"time":{"modified":"2012-05-09T12:46:56.223Z","created":"2012-05-09T12:46:49.765Z","0.0.0":"2012-05-09T12:46:56.223Z"},"_id":"mynah","_rev":"1-9da038ba0936b052753d184b32646e27"}ÿdocument-storeÿmxmlc˜{"id":"mxmlc","rev":"1-165823e649455ffe2071aae3c22fd469","rev_tree":[{"pos":1,"ids":["165823e649455ffe2071aae3c22fd469",{"status":"available"},[]]}],"rev_map":{"1-165823e649455ffe2071aae3c22fd469":3320},"winningRev":"1-165823e649455ffe2071aae3c22fd469","deleted":false,"seq":3320}ÿby-sequenceÿ0000000000003320—6{"name":"mxmlc","description":"Node.js module to build ActionScript","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.2":{"name":"mxmlc","version":"0.0.2","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3565f024cce29487324de2b1dd514a5fa3192edc","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.2.tgz"},"maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}]},"0.0.3":{"name":"mxmlc","version":"0.0.3","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6761b33fae2ca5f0d7d111fc194c98e89e9b3f6e","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.3.tgz"},"maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}]},"0.0.4":{"name":"mxmlc","version":"0.0.4","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2","nconf":"0.5.1","prompt":"0.1.12"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"bb5b9df1a1fd23d74d16b609c99fe9d9924363d5","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.4.tgz"},"maintainers":Û0%ù[{"name":"meekgeek","email":"joel@meekgeek.net"}]},"0.0.5":{"name":"mxmlc","version":"0.0.5","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2","nconf":"0.5.1","prompt":"0.1.12"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"5ead17103c5d54f5c64ff64552d93323904e8c2f","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.5.tgz"},"maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}]},"0.0.6":{"name":"mxmlc","version":"0.0.6","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2","nconf":"0.5.1","prompt":"0.1.12"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6563e650a51627a5f6a5a8caf6dddd1d31b585cc","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.6.tgz"},"maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}]},"0.0.7":{"name":"mxmlc","version":"0.0.7","description":"Node.js module to build ActionScript","preferGlobal":"true","main":"index.js","bin":{"mxmlc":"index.js"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"keywords":["as3","actionscript","mxmlc","flex"],"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"dependencies":{"commander":"0.5.2","nconf":"0.5.1","prompt":"0.1.12"},"engines":{"node":"0.6.10"},"_npmUser":{"name":"meekgeek","email":"joel@meekgeek.net"},"_id":"mxmlc@0.0.7","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"fcc5bc947f3eb97c5a7fdd5a144a65a13700395d","tarball":"http://registry.npmjs.org/mxmlc/-/mxmlc-0.0.7.tgz"},"maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}]}},"readme":"# mxmlc\n\nWhile being a functional FLV to MP3 converter, flv2mp3 is not intended to be used as an actual converter. The sole purpose of this module is to show what else Node.js can be used for, apart from developing websites.\n\n**Note**: The current version of flv2mp3 is not tested under Windows, and will mostly liked not work. The code is intentionally left minimal, with no comments and minimal error checking, to make it non-distracting for beginners. \n\n## Installation\n\n### Install ffmpeg first\n\nflv2mp3 uses ffmpeg for the conversion process, so make sure you install it first.\n\nOn Ubuntu\n\n $ apt-get install ffmpeg\n\nOn Mac\n\n $ brew install ffmpeg\n\nOn CentOS\n\n $ yum install ffmpeg\n\n### Install mxmlc\n\nIt is recommended to install flv2mp3 as a global module, so that you can call it from any path on your computer.\n\n $ [sudo] npm install mxmlc -g\n\n## Uage\n\nSpecify the input FLV file and the optional output directory.\n\n Usage: mxmlc [options]\n\n Options:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --file FLV file path\n -o, --out [path] Output directory\n\n","maintainers":[{"name":"meekgeek","email":"joel@meekgeek.net"}],"time":{"modified":"2012-04-19T23:56:07.211Z","created":"2012-04-13T00:45:53.544Z","0.0.2":"2012-04-13T00:45:54.652Z","0.0.3":"2012-04-13T17:33:13.944Z","0.0.4":"2012-04-19T16:35:26.334Z","0.0.5":"2012-04-19T17:14:27.923Z","0.0.6":"2012-04-19T17:26:55.677Z","0.0.7":"2012-04-19T23:56:07.211Z"},"author":{"name":"Joel Caballero","email":"joel@meekgeek.net"},"repository":{"type":"git","url":"git://github.com/meekgeek/mxmlc.git"},"_id":"mxmlc","_rev":"1-165823e649455ffe2071aae3c22fd469"}ÿdocument-storeÿmws-js™{"id":"mws-js","rev":"1-c57a9cd1d5101ac633174b8c61ddc12a","rev_tree":[{"pos":1,"ids":["c57a9cd1d5101ac633174b8c61ddc12a",{"status":"available"},[]]}],"rev_map":{"1-c57a9cd1d5101ac633174b8c61ddc12a":3319},"winningRev":"1-c57a9cd1d5101ac633174b8c61ddc12a","deleted":false,"seq":3319}ÿby-sequenceÿ0000000000003319þ{"name":"mws-js","description":"Amazon Marketplace Web Services client with support for all api calls.","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"mws-js","description":"Amazon Marketplace Web Services client with support for all api calls.","keywords":["mws","amazon","marketplace"],"homepage":"_","version":"0.1.1","author":{"name":"Eibbor Srenduas"},"contributors":[],"main":"./lib/mws","directories":{"lib":"./lib"},"repository":{"type":"git","url":"git://github.com/eibbors/mws-js.git"},"dependencies":{"xml2js":">=0.1.13"},"_npmUser":{"name":"eibbors","email":"eibbors@gmail.com"},"_id":"mws-js@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"cd1c2a67fee264e7a73a6e87dcf98f9c581a82f9","tarball":"http://registry.npmjs.org/mws-js/-/mws-js-0.1.1.tgz"},"maintainers":[{"name":"eibbors","email":"eibbors@gmail.com"}]}},"readme":"mws-js\n======\n\nI find Node.js an absolute pleasure to work with and made this rough\nMarketplace web services client as one of my first projects. I still find it\nbeats the snot out of PHP, Java, or C# packages Amazon publishes. \nI use it for real-time integration and/or dashboards for e-commerce clients.\nNote: there may be tons of bugs since I updated the formatting to be a lot\nmore user-friendly, but almost all of the documented functions and objects\nshould work fine and dandy like cotton candy.\n\nUsage\n=====\n\nSuper simple example\n--------------------\n\nI will be creating some sample projects illustrating how to take advantage\nof complex/enum params and other more useful features of this library, but\nthe most basic usage I could come up with goes something like:\n\n```javascript\nvar mws = require('mws'),\n client = new AmazonMwsClient('accessKeyId', 'secretAccessKey', 'merchantId', {});\n\n// Get the service status of Sellers API endpoint and print it\nclient.invoke(new mws.sellers.requests.GetServiceStatus(), console.log);\n\nvar listOrders = new mws.orders.requests.ListOrders();\nlistOrders.set('MarketplaceId', 'marketplaceId')\n .set('CreatedAfter', new Date(2,14,2012));\nclient.invoke(listOrders, function(result) {\n console.log(result);\n // Do something fun with the results...\n});\n```","maintainers":[{"name":"eibbors","email":"eibbors@gmail.com"}],"time":{"modified":"2012-04-20T11:33:49.205Z","created":"2012-04-20T11:33:47.044Z","0.1.1":"2012-04-20T11:33:49.205Z"},"author":{"name":"Eibbor Srenduas"},"repository":{"type":"git","url":"git://github.com/eibbors/mws-js.git"},"_id":"mws-js","_rev":"1-c57a9cd1d5101ac633174b8c61ddc12a"}"ÿdocument-storeÿmux-demux-logger£{"id":"mux-demux-logger","rev":"1-9c43c60788b2f18ea6e9f350119c76ac","rev_tree":[{"pos":1,"ids":["9c43c60788b2f18ea6e9f350119c76ac",{"status":"available"},[]]}],"rev_map":{"1-9c43c60788b2f18ea6e9f350119c76ac":3318},"winningRev":"1-9c43c60788b2f18ea6e9f350119c76ac","deleted":false,"seq":3318}ÿby-sequenceÿ0000000000003318“{"name":"mux-demux-logger","description":"Intercept mdm streams and log them","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"mux-demux-logger","version":"0.0.1","description":"Intercept mdm streams and log them","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/mux-demux-logger.git"},"main":"index","homepage":"https://github.com/Raynos/mux-demux-logger","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/mux-demux-logger/issues","email":"raynos2@gmail.com"},"dependencies":{"mux-demux-net":"0.0.2"},"devDependencies":{},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/mux-demux-logger/raw/master/LICENSE"}],"scripts":{},"readme":"# mux-demux-logger [![build status][1]][2]\n\nIntercept mdm streams and log them\n\n## Example\n\n## Installation\n\n`npm install mux-demux-logger`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/mux-demux-logger.png\n [2]: http://travis-ci.org/Raynos/mux-demux-logger","_id":"mux-demux-logger@0.0.1","dist":{"shasum":"b41adb92a2a96d323e5562a9d978f87b63a3b619","tarball":"http://registry.npmjs.org/mux-demux-logger/-/mux-demux-logger-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.1.0":{"name":"mux-demux-logger","version":"0.1.0","description":"Intercept mdm streams and log them","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/mux-demux-logger.git"},"main":"index","homepage":"https://github.com/Raynos/mux-demux-logger","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/mux-demux-logger/issues","email":"raynos2@gmail.com"},"dependencies":{"mux-demux-net":"0.0.2"},"devDependencies":{},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/mux-demux-logger/raw/master/LICENSE"}],"scripts":{},"readme":"# mux-demux-logger\n\nIntercept mdm streams and log them\n\n## Example\n\nIntercept mux-demux data and log it to `console.log`\n\n``` js\nvar MuxDemux = require(\"mux-demux-net\")\n , logger = require(\"..\")\n\nMuxDemux(logger(function (stream) {\n stream.on(\"data\", function (data) {\n stream.write(\"echo\" + data)\n })\n}), 8642)\n```\n\n## Installation\n\n`npm install mux-demux-logger`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced","_id":"mux-demux-logger@0.1.0","dist":{"shasum":"5fb20e4ede43090eadca2d59837b76d3689c3786","tarball":"http://registry.npmjs.org/mux-demux-logger/-/mux-demux-logger-0.1.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# mux-demux-logger [![build status][1]][2]\n\nIntercept mdm streams and log them\n\n## Example\n\n## Installation\n\n`npm install mux-demux-logger`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/mux-demux-logger.png\n [2]: http://travis-ci.org/Raynos/mux-demux-logger","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-08-18T04:39:10.450Z","created":"2012-08-17T02:37:13.620Z","0.0.1":"2012-08-17T02:37:15.034Z","0.1.0":"2012-08-18T04:39:10.450Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/mux-demux-logger.git"},"_id":"mux-demux-logger","_rev":"1-9c43c60788b2f18ea6e9f350119c76ac"}ÿdocument-storeÿmrpc—{"id":"mrpc","rev":"1-5abc08d6b99be72d0841580bf78fd05e","rev_tree":[{"pos":1,"ids":["5abc08d6b99be72d0841580bf78fd05e",{"status":"available"},[]]}],"rev_map":{"1-5abc08d6b99be72d0841580bf78fd05e":3317},"winningRev":"1-5abc08d6b99be72d0841580bf78fd05e","deleted":false,"seq":3317}ÿby-sequenceÿ0000000000003317£0{"name":"mrpc","description":"Simple, fast and efficient RPC.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"author":{"name":"Siddharth Mahendraker","email":"siddharth_mahen@me.com"},"name":"mrpc","description":"Simple, fast and efficient RPC.","keywords":["efficient","fast","rpc"],"version":"0.0.2","main":"index.js","bugs":{"url":"https://github.com/siddMahen/node-mrpc/issues","email":"siddharth_mahen@me.com"},"repository":{"type":"git","url":"git@github.com:siddMahen/node-mrpc.git"},"scripts":{"test":"tap ./test"},"directories":{"test":"test","lib":"lib"},"dependencies":{"msgpack3":"~0.1.1","eventemitter2":"~0.4.9","traverse":"~0.6.3","hashify":"0.0.3","weak":"~0.2.1"},"devDependencies":{"tap":"~0.2.5"},"license":"MIT","engines":{"node":">=0.7.11"},"readme":"# mrpc [![Build Status](https://secure.travis-ci.org/siddMahen/node-mrpc.png?branch=master)](http://travis-ci.org/siddMahen/node-mrpc)\n\n`mrpc` is an asynchronous RPC system designed with performance in mind. It is\nfast, efficient and dead easy to understand and use.\n\nFor a complete overview of what `mrpc` does under the hood, see the\n[`SPEC.md`](https://github.com/siddMahen/node-mrpc/blob/master/SPEC.md).\n\n## Examples\n\nFor example, starting the following server:\n\n```js\nvar mrpc = require(\"mrpc\");\n\nvar server = mrpc({\n transform: function(s, cb){\n cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase());\n }\n});\n\nserver.listen(5004);\n```\n\nAnd the following client:\n\n```js\nvar mrpc = require(\"mrpc\");\n\nvar m = mrpc.connect(5004, function(remote){\n remote.transform(\"beep\", function(s){\n console.log(\"beep => \" + s);\n m.end();\n });\n});\n```\n\nOutputs:\n\n```\n$ node beep-server.js &\n[1] 12163\n$ node beep-client.js\nbeep => BOOP\n```\n\n## Installation\n\nUsing `npm`, do:\n\n```\n$ npm install mrpc\n```\n\n## Documentation\n\nSee the inline documentation as well as the examples in the\n[`examples`](https://github.com/siddMahen/node-mrpc/blob/master/examples)\nfolder.\n\n## License\n\n(The MIT License)\n\nCopyright (C) 2012 by Siddharth Mahendraker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"mrpc@0.0.2","dist":{"shasum":"da9b513228344776e8c57fc1bff08ea6c4bddfd4","tarball":"http://registry.npmjs.org/mrpc/-/mrpc-0.0.2.tgz"},"maintainers":[{"name":"siddmahen","email":"siddharth_mahen@me.com"}]}},"readme":"# mrpc [![Build Status](https://secure.travis-ci.org/siddMahen/node-mrpc.png?branch=master)](http://travis-ci.org/siddMahen/node-mrpc)\n\n`mrpc` is an asynchronous RPC system designed with performance in mind. It is\nfast, efficient and dead easy to understand and use.\n\nFor a complete overview of what `mrpc` does under the hood, see the\n[`SPEC.md`](https://github.com/siddMahen/node-mrpc/blob/master/SPEC.md).\n\n## Examples\n\nFor example, starting the following server:\n\n```js\nvar mrpc = require(\"mrpc\");\n\nvar server = mrpc({\n transform: function(s, cb){\n cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase());\n }\n});\n\nserver.listen(5004);\n```\n\nAnd the following client:\n\n```js\nvar mrpc = require(\"mrpc\");\n\nvar m = mrpc.connect(5004, function(remote){\n remote.transform(\"beep\", function(s){\n console.log(\"beep => \" + s);\n m.end();\n });\n});\n```\n\nOutputs:\n\n```\n$ node beep-server.js &\n[1] 12163\n$ node beep-client.js\nbeep => BOOP\n```\n\n## Installation\n\nUsing `npm`, do:\n\n```\n$ npm install mrpc\n```\n\n## Documentation\n\nSee the inline documentation as well as the examples in the\n[`examples`](https://github.com/siddMahen/node-mrpc/blob/master/examples)\nfolder.\n\n## License\n\n(The MIT License)\n\nCopyright (C) 2012 by Siddharth Mahendraker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"siddmahen","email":"siddharth_mahen@me.com"}],"time":{"modified":"2012-08-02T13:44:30.865Z","created":"2012-07-24T18:32:34.547Z","0.0.2":"2012-07-24T18:32:36.675Z"},"author":{"name":"Siddharth Mahendraker","email":"siddharth_mahen@me.com"},"repository":{"type":"git","url":"git@github.com:siddMahen/node-mrpc.git"},"users":{"fgribreau":true},"_id":"mrpc","_rev":"1-5abc08d6b99be72d0841580bf78fd05e"}ÿdocument-storeÿmoldjs™{"id":"moldjs","rev":"1-063a25fba3ab50ca68f2acb1fc4319da","rev_tree":[{"pos":1,"ids":["063a25fba3ab50ca68f2acb1fc4319da",{"status":"available"},[]]}],"rev_map":{"1-063a25fba3ab50ca68f2acb1fc4319da":3316},"winningRev":"1-063a25fba3ab50ca68f2acb1fc4319da","deleted":false,"seq":3316}ÿby-sequenceÿ0000000000003316‰*{"name":"moldjs","description":"a new kind of templating","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"moldjs","author":{"name":"Rob Middleton","email":"rob@i.tv"},"contributors":[{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"}],"description":"a new kind of templating","version":"0.0.1","homepage":"https://github.com/idottv/Mold","repository":{"type":"git","url":"git://github.com/idottv/Mold.git"},"scripts":{"test":"mocha test/main"},"dependencies":{},"devDependencies":{"jsdom":"0.2.14"},"engines":{"node":"*"},"main":"mold.js","keywords":["template","browser","dom"],"readme":"### Mold\n\nThis is a new kind of templating, it's still in development though so don't complain if it sucks.\n\nContains SimpleHtmlParser Copyright 2004 Erik Arvidsson. (although we would like to remove that dependency)\n","_id":"moldjs@0.0.1","dist":{"shasum":"5e332120873f47ee882257cd2711f87f31c71873","tarball":"http://registry.npmjs.org/moldjs/-/moldjs-0.0.1.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.0.2":{"name":"moldjs","author":{"name":"Rob Middleton","email":"rob@i.tv"},"contributors":[{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"}],"description":"a new kind of templating","version":"0.0.2","homepage":"https://github.com/idottv/Mold","repository":{"type":"git","url":"git://github.com/idottv/Mold.git"},"scripts":{"test":"mocha test/main"},"dependencies":{},"devDependencies":{"jsdom":"0.2.14","mocha":"1.3.2"},"engines":{"node":"*"},"main":"mold.js","keywords":["template","browser","dom"],"readme":"# moldjs\n\nmoldjs is a templating library that updates elements in place instead of replacing\nthem. It treats templating as creating and modifying trees of DOM elements.\nThis means updating your template in response to data changes doesn't remove\nand recreate DOM elements. It is smart enough to only re-render things that\nhave changed.\n\nmoldjs is great for rendering nested views, since updates to the parent view don't\nhave to touch DOM elements create by the child views. We have used it\nsuccessfully for this in Backbone projects.\n\nIt uses a Handlebars-like syntax for template variables.\n\n## Get moldjs\n\nYou can get moldjs with npm:\n\n```bash\nnpm install moldjs\n```\n\nYou can also download the standalone file right\n[here](https://raw.github.com/idottv/Mold/master/mold.js)\n\n## Require moldjs\n\nmoldjs supports CommonJS, AMD, and old-school browser global syntax, so it should\nwork with whatever build system you are using.\n\n## Use moldjs\n\nA simple demo of using moldjs in an app.\n\nHTML:\n\n\n```html\n\n\n\n\n\n\n\n\n\n```\n\nmain.js:\n\n```JavaScript\n$(function () {\n var templateString = '

Hello {{name}}

',\n template = new Mold(templateString),\n data = { name: 'Frobo Daggins' },\n $root = $('body'),\n $template\n\n // .create returns the DOM tree for the template\n // put it in a jquery element for easy manipulation\n $template = $(template.create())\n $root.append($template)\n\n // fill in our template with our data\n template.update(data)\n\n // Now our template is in the dom with data. Let's pretend our data has updated.\n data.name = 'Grandalf The Beige'\n // Let's update the template. This actually modifies the DOM elements in place\n // instead of recreating them.\n template.update(data)\n});\n```\n\n## API\n\n### `new Mold(str)`\nTakes in `str`, an HTML string, and returns a new moldjs template object.\n\n### `.create()`\nReturns the DOM tree for the template.\n\n### `.update(obj)`\nTakes the template, and replaces variables within {{}} with the matching\nproperties in `obj`. Currently doesn't support nested properties or functions.\n\n## Develop moldjs\n\nRun the tests with\n\n```bash\nnpm install\nnpm test\n```\n\nPull requests for bug fixes or new features welcome. If you are adding or\nchanging functionality, please provide test cases. Feel free to add stuff\nthat is bothering you to the issue queue as well.\n\nAn [i.tv](http://i.tv) thang.\n\nContains SimpleHtmlParser Copyright 2004 Erik Arvidsson. (although we would like to remove that dependency)\n","_id":"moldjs@0.0.2","dist":{"shasum":"27735d0df52bd6bc24998dc9294349e725748457","tarball":"http://registry.npmjs.org/moldjs/-/moldjs-0.0.2.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"},{"name":"themiddleman","email":"dsmlover@gmail.com"}]}},"readme":"### Mold\n\nThis is a new kind of templating, it's still in development though so don't complain if it sucks.\n\nContains SimpleHtmlParser Copyright 2004 Erik Arvidsson. (although we would like to remove that dependency)\n","maintainers":[{"name":"jergason","email":"jergason@gmail.com"},{"name":"themiddleman","email":"dsmlover@gmail.com"}],"time":{"modified":"2012-08-07T13:48:16.629Z","created":"2012-08-01T23:23:39.806Z","0.0.1":"2012-08-01T23:23:41.032Z","0.0.2":"2012-08-07T13:48:16.629Z"},"author":{"name":"Rob Middleton","email":"rob@i.tv"},"repository":{"type":"git","url":"git://github.com/idottv/Mold.git"},"users":{"fgribreau":true},"_id":"moldjs","_rev":"1-063a25fba3ab50ca68f2acb1fc4319da"}ÿdocument-storeÿmock-udp›{"id":"mock-udp","rev":"1-6411fb1f8d4d673e6110cb51cb14e672","rev_tree":[{"pos":1,"ids":["6411fb1f8d4d673e6110cb51cb14e672",{"status":"available"},[]]}],"rev_map":{"1-6411fb1f8d4d673e6110cb51cb14e672":3315},"winningRev":"1-6411fb1f8d4d673e6110cb51cb14e672","deleted":false,"seq":3315}ÿby-sequenceÿ0000000000003315þ5{"name":"mock-udp","description":"**Node v0.8 compatible**","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"mock-udp","version":"0.1.0","description":"**Node v0.8 compatible**","main":"lib/mock-udp","repository":{"type":"git","url":"git://github.com/mattrobenolt/nock-udp.git"},"scripts":{"test":"make test"},"keywords":["udp","testing","mock","mocking"],"author":{"name":"Matt Robenolt","email":"matt@ydekproductions.com"},"license":"BSD","engines":{"node":">= 0.6.0"},"devDependencies":{"mocha":"*","should":"*"},"readme":"# Mock UDP\n**Node v0.8 compatible**\n\nMock requests and write tests for sending data to a UDP server.\n\n## Installation\n```\n$ npm install mock-udp\n```\n\n## Basic Usage\n```javascript\nvar mockudp = require('mock-udp'); // When imported, Socket gets patched immediately\n\n// Create scope to capture UDP requests\nvar scope = mockudp('localhost:1234');\n\nvar client = require('dgram').createSocket('udp4');\nvar message = new Buffer('hello world');\nclient.send(message, 0, message.length, 1234, 'localhost', function(err, bytes) {\n scope.buffer; // scope.buffer is the buffer which would have been sent\n scope.done(); // Will throw an Error *if* the scope wasn't used\n});\n```\n## Create a Mocked scope\nIntercept all requests going to localhost, port 1234, and redirect sent data into the scope returned. All other requests without a scope attached will throw an Error.\n```javascript\nvar scope = mockudp('localhost:1234');\n```\nAfter sending a request to `localhost:1234`, the buffer which was sent is available on the scope object:\n```javascript\nscope.buffer\n```\nThe scope can also be verified that it was even used.\n```javascript\nscope.done();\n```\n`scope.done()` returns `true` if it has been used, but throws an exception if not, so it makes for easy testing.\n\n## Patching `Socket.send`\nBy default, `Socket.send` gets patched when imported. To override this behavior, you can revert it:\n```javascript\nvar mockudp = require('mock-udp');\nmockudp.revert();\n```\nAfter `revert` is called, `Socket.send` is in it's original state. This can be again reversed manually by calling `intercept`:\n```javascript\nmockudp.intercept();\n```\n","_id":"mock-udp@0.1.0","dist":{"shasum":"f27dd0cbcc6f0ca04e339ba10fa25cc3e29a45e0","tarball":"http://registry.npmjs.org/mock-udp/-/mock-udp-0.1.0.tgz"},"maintainers":[{"name":"mattrobenolt","email":"matt@ydekproductions.com"}]},"0.1.1":{"name":"mock-udp","version":"0.1.1","description":"**Node v0.8 compatible**","main":"lib/mock-udp","repository":{"type":"git","url":"git://github.com/mattrobenolt/nock-udp.git"},"scripts":{"test":"make test"},"keywords":["udp","testing","mock","mocking"],"author":{"name":"Matt Robenolt","email":"matt@ydekproductions.com"},"license":"BSD","engines":{"node":">= 0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","should":"*"},"readme":"# Mock UDP\n**Node v0.8 compatible**\n\nMock requests and write tests for sending data to a UDP server.\n\n## Installation\n```\n$ npm install mock-udp\n```\n\n## Basic Usage\n```javascript\nvar mockudp = require('mock-udp'); // When imported, Socket gets patched immediately\n\n// Create scope to capture UDP requests\nvar scope = mockudp('localhost:1234');\n\nvar client = require('dgram').createSocket('udp4');\nvar message = new Buffer('hello world');\nclient.send(message, 0, message.length, 1234, 'localhost', function(err, bytes) {\n scope.buffer; // scope.buffer is the buffer which would have been sent\n scope.done(); // Will throw an Error *if* the scope wasn't used\n});\n```\n## Create a Mocked scope\nIntercept all requests going to localhost, port 1234, and redirect sent data into the scope returned. All other requests without a scope attached will throw an Error.\n```javascript\nvar scope = mockudp('localhost:1234');\n```\nAfter sending a request to `localhost:1234`, the buffer which was sent is available on the scope object:\n```javascript\nscope.buffer\n```\nThe scope can also be verified that it was even used.\n```javascript\nscope.done();\n```\n`scope.done()` returns `true` if it has been used, but throws an exception if not, so it makes for easy testing.\n\n## Patching `Socket.send`\nBy default, `Socket.send` gets patched when imported. To override this behavior, you can revert it:\n```javascript\nvar mockudp = require('mock-udp');\nmockudp.revert();\n```\nAfter `revert` is called, `Socket.send` is in it's original state. This can be again reversed manually by calling `intercept`:\n```javascript\nmockudp.intercept();\n```\n","_id":"mock-udp@0.1.1","dist":{"shasum":"24b5e47707635c34a8b3f0afcefd140b7eb284b5","tarball":"http://registry.npmjs.org/mock-udp/-/mock-udp-0.1.1.tgz"},"maintainers":[{"name":"mattrobenolt","email":"matt@ydekproductions.com"}]}},"readme":"# Mock UDP\n**Node v0.8 compatible**\n\nMock requests and write tests for sending data to a UDP server.\n\n## Installation\n```\n$ npm install mock-udp\n```\n\n## Basic Usage\n```javascript\nvar mockudp = require('mock-udp'); // When imported, Socket gets patched immediately\n\n// Create scope to capture UDP requests\nvar scope = mockudp('localhost:1234');\n\nvar client = require('dgram').createSocket('udp4');\nvar message = new Buffer('hello world');\nclient.send(message, 0, message.length, 1234, 'localhost', function(err, bytes) {\n scope.buffer; // scope.buffer is the buffer which would have been sent\n scope.done(); // Will throw an Error *if* the scope wasn't used\n});\n```\n## Create a Mocked scope\nIntercept all requests going to localhost, port 1234, and redirect sent data into the scope returned. All other requests without a scope attached will throw an Error.\n```javascript\nvar scope = mockudp('localhost:1234');\n```\nAfter sending a request to `localhost:1234`, the buffer which was sent is available on the scope object:\n```javascript\nscope.buffer\n```\nThe scope can also be verified that it was even used.\n```javascript\nscope.done();\n```\n`scope.done()` returns `true` if it has been used, but throws an exception if not, so it makes for easy testing.\n\n## Patching `Socket.send`\nBy default, `Socket.send` gets patched when imported. To override this behavior, you can revert it:\n```javascript\nvar mockudp = require('mock-udp');\nmockudp.revert();\n```\nAfter `revert` is called, `Socket.send` is in it's original state. This can be again reversed manually by calling `intercept`:\n```javascript\nmockudp.intercept();\n```\n","maintainers":[{"name":"mattrobenolt","email":"matt@ydekproductions.com"}],"time":{"modified":"2012-06-24T04:39:58.197Z","created":"2012-06-24T04:28:04.136Z","0.1.0":"2012-06-24T04:28:05.488Z","0.1.1":"2012-06-24T04:39:58.197Z"},"author":{"name":"Matt Robenolt","email":"matt@ydekproductions.com"},"repository":{"type":"git","url":"git://github.com/mattrobenolt/nock-udp.git"},"_id":"mock-udp","_rev":"1-6411fb1f8d4d673e6110cb51cb14e672"}ÿdocument-storeÿmixinstancež{"id":"mixinstance","rev":"1-1d40d3ac25358b4466d09bcdc05a0789","rev_tree":[{"pos":1,"ids":["1d40d3ac25358b4466d09bcdc05a0789",{"status":"available"},[]]}],"rev_map":{"1-1d40d3ac25358b4466d09bcdc05a0789":3314},"winningRev":"1-1d40d3ac25358b4466d09bcdc05a0789","deleted":false,"seq":3314}ÿby-sequenceÿ0000000000003314ã {"name":"mixinstance","description":"Mix things into an instance's prototype chain","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mixinstance","description":"Mix things into an instance's prototype chain","version":"0.0.1","author":{"name":"Jonathan Buchanan","email":"jonathan.buchanan@gmail.com","url":"https://github.com/insin"},"tags":["instance","mixins"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"http://github.com/insin/mixinstance.git"},"devDependencies":{"tap":"0.2.x"},"scripts":{"test":"tap test/*.js"},"readme":"","_id":"mixinstance@0.0.1","dist":{"shasum":"ed9cdc30bd554fbff1a6798c84bc3d7f030c2551","tarball":"http://registry.npmjs.org/mixinstance/-/mixinstance-0.0.1.tgz"},"maintainers":[{"name":"insin","email":"jonathan.buchanan@gmail.com"}]}},"readme":"","maintainers":[{"name":"insin","email":"jonathan.buchanan@gmail.com"}],"time":{"modified":"2012-07-09T23:00:32.390Z","created":"2012-07-09T23:00:30.137Z","0.0.1":"2012-07-09T23:00:32.390Z"},"author":{"name":"Jonathan Buchanan","email":"jonathan.buchanan@gmail.com","url":"https://github.com/insin"},"repository":{"type":"git","url":"http://github.com/insin/mixinstance.git"},"_id":"mixinstance","_rev":"1-1d40d3ac25358b4466d09bcdc05a0789"}ÿdocument-storeÿmint—{"id":"mint","rev":"1-b3716779a9c3e35db2aa40c03d53268a","rev_tree":[{"pos":1,"ids":["b3716779a9c3e35db2aa40c03d53268a",{"status":"available"},[]]}],"rev_map":{"1-b3716779a9c3e35db2aa40c03d53268a":3313},"winningRev":"1-b3716779a9c3e35db2aa40c03d53268a","deleted":false,"seq":3313}ÿby-sequenceÿ0000000000003313†T{"name":"mint","description":"Template abstraction framework","d§€pâùist-tags":{"latest":"0.3.5"},"versions":{"0.3.0":{"name":"mint","version":"0.3.0","description":"Template abstraction framework","homepage":"http://github.com/viatropos/mint.js","main":"mint.js","author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"keywords":["framework","compression","node"],"licenses":[{"type":"MIT","url":"http://mths.be/mit"}],"bugs":{"url":"https://github.com/viatropos/mint.js/issues"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"engines":{"node":">= 0.4.0"},"dependencies":{},"scripts":{"test":"mocha"},"_npmUser":{"name":"viatropos","email":"lancejpollard@gmail.com"},"_id":"mint@0.3.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"e34c09b7d2d550d84003b3f51031a9d8ace98d92","tarball":"http://registry.npmjs.org/mint/-/mint-0.3.0.tgz"},"maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}]},"0.3.1":{"name":"mint","version":"0.3.1","description":"Template abstraction framework","homepage":"http://github.com/viatropos/mint.js","main":"mint.js","author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"keywords":["framework","compression","node"],"licenses":[{"type":"MIT","url":"http://mths.be/mit"}],"bugs":{"url":"https://github.com/viatropos/mint.js/issues"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":">= 1.2.0","uglify-js":">= 1.1.1","mocha":">= 0.8.1","should":">= 0.3.x","chai":">= 0.3.3","sinon":">= 1.3.1","stylus":">= 0.17.0","less":">= 1.2.x","ejs":">= 0.6.1","coffeekup":">= 0.3.1","jade":">= 0.20.x","haml":">= 0.4.x","hamljs":">= 0.6.x","mustache":">= 0.4.x"},"scripts":{"test":"mocha $(find test -name \"*Test.coffee\") -r coffee-script $@"},"_npmUser":{"name":"viatropos","email":"lancejpollard@gmail.com"},"_id":"mint@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"13e1422063637a576bf68b8bb566134e82d70a78","tarball":"http://registry.npmjs.org/mint/-/mint-0.3.1.tgz"},"maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}]},"0.3.3":{"name":"mint","version":"0.3.3","description":"Template abstraction framework","homepage":"http://github.com/viatropos/mint.js","main":"mint.js","author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"keywords":["framework","compression","node"],"licenses":[{"type":"MIT","url":"http://mths.be/mit"}],"bugs":{"url":"https://github.com/viatropos/mint.js/issues"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":">= 1.2.0","uglify-js":">= 1.1.1","mocha":">= 0.8.1","should":">= 0.3.x","chai":">= 0.3.3","sinon":">= 1.3.1","stylus":">= 0.17.0","less":">= 1.2.x","ejs":">= 0.6.1","coffeekup":">= 0.3.1","jade":">= 0.20.x","haml":">= 0.4.x","hamljs":">= 0.6.x","mustache":">= 0.4.x","handlebars":"*","eco":"*"},"scripts":{"test":"mocha $(find test -name \"*Test.coffee\") -r coffee-script $@"},"_npmUser":{"name":"viatropos","email":"lancejpollard@gmail.com"},"_id":"mint@0.3.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"f0ec0142321821d1c24ee03b761266d34be4dced","tarball":"http://registry.npmjs.org/mint/-/mint-0.3.3.tgz"},"maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}]},"0.3.4":{"name":"mint","version":"0.3.4","description":"Template abstraction framework","homepage":"http://github.com/viatropos/mint.js","main":"mint.js","author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"keywords":["framework","compression","node"],"licenses":[{"type":"MIT","url":"http://mths.be/mit"}],"bugs":{"url":"https://github.com/viatropos/mint.js/issues"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":">= 1.3.1","uglify-js":">= 1.1.1","clean-css":">= 0.3.2","mocha":">= 0.8.1","should":">= 0.3.x","chai":">= 0.3.3","sinon":">= 1.3.1","stylus":">= 0.17.0","less":">= 1.2.x","ejs":">= 0.6.1","coffeekup":">= 0.3.1","jade":">= 0.20.x","haml":">= 0.4.x","hamljs":">= 0.6.x","haml-coffee":">= 0.5.0","mustache":">= 0.4.x","handlebars":"*","eco":"*"},"scripts":{"test":"node_modules/mocha/bin/mocha $(find test -name \"*Test.coffee\")"},"_npmUser":{"name":"viatropos","email":"lancejpollard@gmail.com"},"_id":"mint@0.3.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"b7a66b8574f2b18db11eb7d81eb6beba77de4101","tarball":"http://registry.npmjs.org/mint/-/mint-0.3.4.tgz"},"maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}]},"0.3.5":{"name":"mint","version":"0.3.5","description":"Template abstraction framework","homepage":"http://github.com/viatropos/mint.js","main":"mint.js","author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"keywords":["framework","compression","node"],"licenses":[{"type":"MIT","url":"http://mths.be/mit"}],"bugs":{"url":"https://github.com/viatropos/mint.js/issues"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":">= 1.3.1","uglify-js":">= 1.1.1","clean-css":">= 0.3.2","mocha":">= 0.8.1","should":">= 0.3.x","chai":">= 0.3.3","sinon":">= 1.3.1","stylus":">= 0.17.0","less":">= 1.2.x","ejs":">= 0.6.1","coffeekup":">= 0.3.1","jade":">= 0.20.x","haml":">= 0.4.x","hamljs":">= 0.6.x","haml-coffee":">= 0.5.0","mustache":">= 0.4.x","handlebars":"*","eco":"*"},"scripts":{"test":"node_modules/mocha/bin/mocha $(find test -name \"*Test.coffee\")"},"_npmUser":{"name":"viatropos","email":"lancejpollard@gmail.com"},"_id":"mint@0.3.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"112b8432f12ab152edf0aa21bce1ed34760ea4e4","tarball":"http://registry.npmjs.org/mint/-/mint-0.3.5.tgz"},"maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}]}},"readme":"# Shift.js\n\n> Standard Interface to the Node.js Template Engines.\n\n## Install\n\n``` bash\nnpm install shift\n```\n\n## Engines\n\n``` coffeescript\nshift = require(\"shift\")\nshift.coffee\nshift.coffeekup\nshift.eco\nshift.ejs\nshift.haml\nshift.jade\nshift.less\nshift.stylus\nshift.markdown\nshift.mustache\nshift.uglifyjs\nshift.yui\n```\n\n## Example\n\n``` coffeescript\nshift = require('shift')\nshift.mustache \"{title}!\", locals: title: \"Hello World\", (string) -> console.log(string) #=> \"Hello World!\"\n```\n\nor more formally:\n\n``` coffeescript\ninput = fs.readFileSync(\"./test/fixtures/views/jade.jade\", \"utf-8\")\noutput = fs.readFileSync(\"./test/fixtures/views/jade.html\", \"utf-8\")\nshift.jade input, {}, (error, result) ->\n assert.equal result, output\n```\n\n## API\n\n``` coffeescript\nshift[engine](string, options, callback)\n```\n\n## Preprocessing\n\nSometimes you might need to hack in a feature to the language. Like right now, stylus doesn't support multiline values for css attributes, so you might add it like this:\n\n``` coffeescript\ninput = '''\ndiv\n box-shadow: 0 -2px 2px hsl(220, 20%, 40%),\n 0 -10px 10px hsl(220, 20%, 20%),\n 0 0 15px black,\n\n inset 0 5px 1px hsla(220, 80%, 10%, 0.4), \n inset 0 0 5px hsla(220, 80%, 10%, 0.1),\n inset 0 20px 15px hsla(220, 80%, 100%, 1),\n\n inset 0 1px 0 hsl(219, 20%, 0%), \n\n inset 0 -50px 50px -40px hsla(220, 80%, 10%, .3), /* gradient to inset */\n\n inset 0 -1px 0px hsl(220, 20%, 20%),\n inset 0 -2px 0px hsl(220, 20%, 40%),\n inset 0 -2px 1px hsl(220, 20%, 65%) \n'''\n\noutput = '''\ndiv {\n box-shadow: 0 -2px 2px #525f7a, 0 -10px 10px #29303d, 0 0 15px #000, inset 0 5px 1px rgba(5,19,46,0.40), inset 0 0 5px rgba(5,19,46,0.10), inset 0 20px 15px #fff, inset 0 1px 0 #000, inset 0 -50px 50px -40px rgba(5,19,46,0.30), inset 0 -1px 0px #29303d, inset 0 -2px 0px #525f7a, inset 0 -2px 1px #94a0b8;\n}\n\n'''\n# locally\noptions =\n preprocessor: (content) ->\n content.replace /(\\s+)(.*),\\s+(?:\\/\\*.*\\*\\/)?\\s*/mg, (_, indent, attribute) ->\n \"#{indent}#{attribute.replace(/\\s+/g, \" \")}, \"\n\nshift.stylus input, options, (error, result) ->\n expect(result).toEqual output\n\n# globally\nshift.stylus.preprocessor = (content) ->\n content.replace /(\\s+)(.*),\\s+(?:\\/\\*.*\\*\\/)?\\s*/mg, (_, indent, attribute) ->\n \"#{indent}#{attribute.replace(/\\s+/g, \" \")}, \"\n\nshift.stylus input, {}, (error, result) ->\n expect(result).toEqual output\n```\n\n## Test\n\n``` bash\nmocha\n```\n\n## License\n\n(The MIT License)\n\nCopyright © 2011 [Lance Pollard](http://twitter.com/viatropos) <lancejpollard@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"viatropos","email":"lancejpollard@gmail.com"}],"time":{"modified":"2012-05-17T03:31:58.460Z","created":"2012-02-21T10:42:01.958Z","0.3.0":"2012-02-21T10:42:03.727Z","0.3.1":"2012-03-09T18:32:59.974Z","0.3.3":"2012-03-21T20:05:54.844Z","0.3.4":"2012-04-15T23:17:31.059Z","0.3.5":"2012-05-17T03:31:58.460Z"},"author":{"name":"Lance Pollard","email":"lancejpollard@gmail.com"},"repository":{"type":"git","url":"git://github.com/viatropos/mint.js.git"},"_id":"mint","_rev":"1-b3716779a9c3e35db2aa40c03d53268a"}ÿdocument-storeÿminni˜{"id":"minni","rev":"1-9f1d1399da464ed71e7db184d02114f1","rev_tree":[{"pos":1,"ids":["9f1d1399da464ed71e7db184d02114f1",{"status":"available"},[]]}],"rev_map":{"1-9f1d1399da464ed71e7db184d02114f1":3312},"winningRev":"1-9f1d1399da464ed71e7db184d02114f1","deleted":false,"seq":3312}ÿby-sequenceÿ0000000000003312É{"name":"minni","description":"Minimalistic Command Line Todo list","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"minni","description":"Minimalistic Command Line Todo list","keywords":["todo","list","todo-list","command-line"],"author":{"name":"Benoit Charbonnier","email":"benoit.charbonnier@gmail.com"},"version":"0.0.1","homepage":"http://github.com/bcharbonnier/minni","bugs":{"name":"https://github.com/bcharbonnier/minni/issues"},"engines":{"node":"~0.6.7"},"bin":{"minni":"./bin/minni"},"repository":{"type":"git","url":"git://github.com/bcharbonnier/minni.git"},"dependencies":{"colors":"","coffee-script":"","dateformat":""},"_npmUser":{"name":"bcharbonnier","email":"benoit.charbonnier@gmail.com"},"_id":"minni@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"47ec835a5843292883c31d5cfaf22d77e91bac77","tarball":"http://registry.npmjs.org/minni/-/minni-0.0.1.tgz"},"maintainers":[{"name":"bcharbonnier","email":"benoit.charbonnier@gmail.com"}]},"0.1.0":{"name":"minni","description":"Minimalistic Command Line Todo list","keywords":["todo","list","todo-list","command-line"],"author":{"name":"Benoit Charbonnier","email":"benoit.charbonnier@gmail.com"},"version":"0.1.0","homepage":"http://bcharbonnier.github.com/minni","bugs":{"name":"https://github.com/bcharbonnier/minni/issues"},"engines":{"node":"~0.6.7"},"bin":{"minni":"./bin/minni"},"repository":{"type":"git","url":"git://github.com/bcharbonnier/minni.git"},"dependencies":{"colors":"","coffee-script":"","dateformat":""},"_npmUser":{"name":"bcharbonnier","email":"benoit.charbonnier@gmail.com"},"_id":"minni@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6f379a04d26ce73539b312ea9dc17d09fc042497","tarball":"http://registry.npmjs.org/minni/-/minni-0.1.0.tgz"},"maintainers":[{"name":"bcharbonnier","email":"benoit.charbonnier@gmail.com"}]}},"readme":"minni\r\n=====\r\n\r\nMinimalistic command line todo list\r\n\r\nWhy *Minni* ? Not because of minimalistic ! *Minni* means *memory* in icelandic.\r\n\r\n\r\nVersions\r\n--------\r\n\r\n* \t`0.0.1` First release, crappy but usable\r\n\t\r\n\tBe sure to have `.minni` file in the folder in which you execute *Minni*, otherwise it is going to crash with weird message\r\n","maintainers":[{"name":"bcharbonnier","email":"benoit.charbonnier@gmail.com"}],"time":{"modified":"2012-06-04T21:20:48.953Z","created":"2012-06-04T17:38:54.500Z","0.0.1":"2012-06-04T17:38:56.833Z","0.1.0":"2012-06-04T21:20:48.953Z"},"author":{"name":"Benoit Charbonnier","email":"benoit.charbonnier@gmail.com"},"repository":{"type":"git","url":"git://github.com/bcharbonnier/minni.git"},"_id":"minni","_rev":"1-9f1d1399da464ed71e7db184d02114f1"}ÿdocument-storeÿminimal-queue {"id":"minimal-queue","rev":"1-bc7447389bc357fff2ff1f6b21e6210b","rev_tree":[{"pos":1,"ids":["bc7447389bc357fff2ff1f6b21e6210b",{"status":"available"},[]]}],"rev_map":{"1-bc7447389bc357fff2ff1f6b21e6210b":3311},"winningRev":"1-bc7447389bc357fff2ff1f6b21e6210b","deleted":false,"seq":3311}ÿby-sequenceÿ0000000000003311Ê{"name":"minimal-queue","description":"Minimal FIFO queue implementation to be used for simple concurrency limiting scenarios.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"thorstenlorenz.wordpress.com"},"name":"minimal-queue","description":"Minimal FIFO queue implementation to be used for simple concurrency limiting scenarios.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/thlorenz/minimal-queue.git"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"main":"./minimal-queue","keywords:":["fifo","queue","tools"],"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"thlorenz","email":"thlorenz@gmx.de"},"_id":"minimal-queue@0.0.1","_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"ff786a33a4b0017d9d0881ce0a55b9c29f1b6323","tarball":"http://registry.npmjs.org/minimal-queue/-/minimal-queue-0.0.1.tgz"},"maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}]}},"readme":"# minimal-queue\n\nMinimal FIFO queue implementation to be used for simple concurrency limiting scenarios.\n\n# Installation\n\n`npm install minimal-queue`\n\n# Usage\n\nCreate a queue by passing a worker function that will be processed each time some arguments are enqueued.\nOptionally limit concurrency (default is 50) in order to limit number of jobs allowed to run at the same time.\n\n## Example\n\n```javascript\n\nvar queue = require('minimal-queue')\n , myQueue = queue.up (function (job) {\n var that = this;\n console.log('Starting ', job);\n setTimeout(function () {\n console.log('Processed %s. Calling done now to allow more jobs to run.', job); \n that.done();\n }, 200);\n })\n ;\n\nmyQueue.concurrency = 2;\nmyQueue.allDone = function () { console.log('Yay, we are now out of jobs!'); };\n\nmyQueue.enqueue('first job');\nmyQueue.enqueue('second job');\nmyQueue.enqueue('third job');\n\n```\nRunning the above produces the following output:\n\n Starting first job\n Starting second job\n Processed first job. Calling done now to allow more jobs to run.\n Starting third job\n Processed second job. Calling done now to allow more jobs to run.\n Processed third job. Calling done now to allow more jobs to run.\n Yay, we are now out of jobs!\n","maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}],"time":{"modified":"2012-06-24T04:07:12.951Z","created":"2012-06-24T04:07:12.564Z","0.0.1":"2012-06-24T04:07:12.951Z"},"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"thorstenlorenz.wordpress.com"},"repository":{"type":"git","url":"git://github.com/thlorenz/minimal-queue.git"},"_id":"minimal-queue","_rev":"1-bc7447389bc357fff2ff1f6b21e6210b"}ÿdocument-storeÿmeme—{"id":"meme","rev":"1-d184ba869c98f48d10b6234312c066e3","rev_tree":[{"pos":1,"ids":["d184ba869c98f48d10b6234312c066e3",{"status":"available"},[]]}],"rev_map":{"1-d184ba869c98f48d10b6234312c066e3":3310},"winningRev":"1-d184ba869c98f48d10b6234312c066e3","deleted":false,"seq":3310}ÿby-sequenceÿ0000000000003310Ç{"name":"meme","description":"a CLI utility to generate memes using memegenerator.net","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"meme","description":"a CLI utility to generate memes using memegenerator.net","keywords":["meme","cli"],"version":"0.1.0","homepage":"http://github.com/floby/node-meme","repository":{"type":"git","url":"git://github.com/Floby/node-meme.git"},"author":{"name":"Florent Jaby","email":"florent.jaby@gmail.com"},"main":"lib/warning.js","bin":{"meme":"bin/app.js"},"directories":{"lib":"lib/","bin":"./bin"},"engines":{"node":">=0.4.0"},"_id":"meme@0.1.0","_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.3","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"ac58de27a7a5962dade09e4814e3bb93db2b6961","tarball":"http://registry.npmjs.org/meme/-/meme-0.1.0.tgz"}},"0.1.1":{"name":"meme","description":"a CLI utility to generate memes using memegenerator.net","keywords":["meme","cli"],"version":"0.1.1","homepage":"http://github.com/floby/node-meme","repository":{"type":"git","url":"git://github.com/Floby/node-meme.git"},"author":{"name":"Florent Jaby","email":"florent.jaby@gmail.com"},"main":"lib/warning.js","bin":{"meme":"bin/app.js"},"directories":{"lib":"lib/","bin":"./bin"},"engines":{"node":">=0.4.0"},"_id":"meme@0.1.1","_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.3","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"7c67494b9a7438ab73caefe6b8575b2dbe7777be","tarball":"http://registry.npmjs.org/meme/-/meme-0.1.1.tgz"}},"0.1.2":{"name":"meme","description":"a CLI utility to generate memes using memegenerator.net","keywords":["meme","cli"],"version":"0.1.2","homepage":"http://github.com/floby/node-meme","repository":{"type":"git","url":"git://github.com/Floby/node-meme.git"},"author":{"name":"Florent Jaby","email":"florent.jaby@gmail.com"},"main":"lib/warning.js","bin":{"meme":"bin/app.js"},"directories":{"lib":"lib/","bin":"./bin"},"engines":{"node":">=0.4.0"},"dependencies":{"sprintf":"0.1"},"_id":"meme@0.1.2","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"53bd2a49303465c5cff36124500c9e6f9ecabe88","tarball":"http://registry.npmjs.org/meme/-/meme-0.1.2.tgz"}}},"maintainers":[{"name":"floby","email":"florent.jaby@gmail.com"},{"name":"geetarista","email":"geetarista@gmail.com"}],"time":{"modified":"2012-03-21T12:17:10.144Z","created":"2011-03-22T20:39:41.767Z","0.1.0":"2011-03-22T20:39:43.252Z","0.1.1":"2011-03-22T22:30:04.561Z","0.1.2":"2011-04-09T12:29:11.634Z"},"author":{"name":"Florent Jaby","email":"florent.jaby@gmail.com"},"repository":{"type":"git","url":"git://github.com/Floby/node-meme.git"},"_id":"meme","_rev":"1-d184ba869c98f48d10b6234312c066e3"}ÿdocument-storeÿmembership{"id":"membership","rev":"1-a76378837524535accd04c24e5b5be9e","rev_tree":[{"pos":1,"ids":["a76378837524535accd04c24e5b5be9e",{"status":"available"},[]]}],"rev_map":{"1-a76378837524535accd04c24e5b5be9e":3309},"winningRev":"1-a76378837524535accd04c24e5b5be9e","deleted":false,"seq":3309}ÿby-sequenceÿ0000000000003309 {"name":"membership","description":"membership for authentication","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"membership","version":"0.0.1","description":"membership for authentication","author":{"name":"Wang Ling","email":"wangling@healskare.com"},"repository":{"type":"git","url":"git@github.com:wang-ling/membership.git"},"dependencies":{"express":"2.5.2","connect-mongodb":"1.1.2","mongodb":">=0.8.0","underscore":"1.2.3"},"main":"index.js","engines":{"node":"node >= 0.4.x"},"_npmUser":{"name":"wangling","email":"wangling@healskare.com"},"_id":"membership@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"bc9fa4177f53d30705d1db2c3c183a358c1b28e5","tarball":"http://registry.npmjs.org/membership/-/membership-0.0.1.tgz"},"readme":"","maintainers":[{"name":"wangling","email":"wangling@healskare.com"}]}},"readme":"","maintainers":[{"name":"wangling","email":"wangling@healskare.com"}],"time":{"modified":"2012-06-11T10:31:29.300Z","created":"2012-06-11T10:31:20.719Z","0.0.1":"2012-06-11T10:31:29.300Z"},"author":{"name":"Wang Ling","email":"wangling@healskare.com"},"repository":{"type":"git","url":"git@github.com:wang-ling/membership.git"},"_id":"membership","_rev":"1-a76378837524535accd04c24e5b5be9e"}ÿdocument-storeÿmbt–{"id":"mbt","rev":"1-f8b1eb2a5700062b8006c7b393b52efd","rev_tree":[{"pos":1,"ids":["f8b1eb2a5700062b8006c7b393b52efd",{"status":"available"},[]]}],"rev_map":{"1-f8b1eb2a5700062b8006c7b393b52efd":3308},"winningRev":"1-f8b1eb2a5700062b8006c7b393b52efd","deleted":false,"seq":3308}ÿby-sequenceÿ0000000000003308ñ5{"name":"mbt","description":"Mobile Build Tool","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"mbt","description":"Mobile Build Tool","version":"0.0.1","homepage":"https://github.com/incandescent/mbt","author":{"name":"Michal Kuklis","email":"michal@incsw.com","url":"@mkuklis"},"repository":{"type":"git","url":"git://github.com/incandescent/mbt.git"},"bugs":{"url":"https://github.com/incandescent/mbt/issues"},"dependencies":{"grunt":"0.3.9","clean-css":"0.3.2"},"devDependencies":{"grunt":"~0.3.0"},"keywords":[],"engines":{"node":"~0.6"},"main":"grunt.js","bin":{"mbt":"bin/mbt"},"scripts":{},"_npmUser":{"name":"mkuklis","email":"michal.kuklis@gmail.com"},"_id":"mbt@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"0f3ec22992fdd35e13b5c0f2f9441e272ae841f4","tarball":"http://registry.npmjs.org/mbt/-/mbt-0.0.1.tgz"},"maintainers":[{"name":"mkuklis","email":"michal.kuklis@gmail.com"}]},"0.1.1":{"name":"mbt","description":"Mobile Build Tool","version":"0.1.1","homepage":"https://github.com/incandescent/mbt","author":{"name":"Michal Kuklis","email":"michal@incsw.com","url":"@mkuklis"},"repository":{"type":"git","url":"git://github.com/incandescent/mbt.git"},"bugs":{"url":"https://github.com/incandescent/mbt/issues"},"dependencies":{"grunt":"0.3.9","clean-css":"0.3.2"},"devDependencies":{"grunt":"~0.3.0"},"keywords":[],"engines":{"node":"~0.6"},"main":"grunt.js","bin":{"mbt":"bin/mbt"},"scripts":{},"_npmUser":{"name":"mkuklis","email":"michal.kuklis@gmail.com"},"_id":"mbt@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"a3190b959592ea8ab59309c44d2f114028fd7e4a","tarball":"http://registry.npmjs.org/mbt/-/mbt-0.1.1.tgz"},"maintainers":[{"name":"mkuklis","email":"michal.kuklis@gmail.com"}]}},"readme":"mbt\n===\n\n# Mobile Build Tool\n\nThe tool is a set of libraries and tasks to help you install, configure, build, and maintain your mobile project based on Backbone.js and jQuery Mobile.\nThis project is based on wonderful library called [Grunt](https://github.com/cowboy/grunt).\n\nThe tool is [opinionated](http://tomdale.net/2012/01/amd-is-not-the-answer/). \nAMD is popular these days but we decided to keep it 'simple' and use [$script.js](http://dustindiaz.com/scriptjs) for \nloading resources in development. During release everything is minified and bundled into one file ready for production.\n\nBy default MBT currently includes:\n\n* [Underscore.js v1.3.3](http://underscorejs.org/) we are also reviewing [Lo-Dash](http://lodash.com/)\n* [Backbone.js v0.9.2](http://backbonejs.org/) \n* [jQuery v1.7.2](http://jquery.com/)\n* [jQuery Mobile v1.1.0](http://jquerymobile.com/)\n* [jquerymobile-router v0.9](https://github.com/azicchetti/jquerymobile-router)\n\n##Install:\n\n npm install -g mbt\n\n##Generate new js project:\n\n mkdir PROJECT_FOLDER\n cd PROJECT_FOLDER\n mbt init:project\n npm install ./\n\n##Generate new coffee project\n\nFor people who prefer CoffeeScript\n\n mkdir PROJECT_FOLDER\n cd PROJECT_FOLDER\n mbt init:project:coffee\n npm install ./\n\n## Generated project's folder structure\n\n* assets - compressed css and JavaScript files\n* css\n* images\n* js\n * collections - backbone collections\n * config - app config, namespace, environments\n * helpers - app helpers\n * models - backbone models\n * vendor - vendor dependecies\n * views - backbone views\n * app.js - starting point for the app\n * files.js - array of paths to app source files\n * init.js - loads dependecies and initializes JQM, PhoneGap\n * router.js - [jQM router](https://github.com/azicchetti/jquerymobile-router)\n * templates.js - compiled templates from `templates` folder\n* coffee - similar structure to js folder if coffee is your cup of tea...\n* templates - project templates compiled into `js/templates.js`\n* views - jQuery Mobile pages appended into body element in `index.html`\n* index.html\n\n\n##Watch for changes in templates, views and styles:\n\n grunt watch\n\nTemplates will be compiled into one JavaScript file called `templates.js`.\n\nViews will be minified and appended to body element in `index.html`.\n\nCSS files will be minified and compiled into one file called `assets/app.css`.\n\nCoffeeScript files will be compiled into corresponding files under `js` folder.\n\n\n##Run specs:\n\n grunt jasmine\n\n\n##Release for PhoneGap\n\n grunt release\n\nRelease task lints, minifies and packages all JavaScript files listed in `files.js` file into one file:\n`assets/app.js`.\n\nIt prepends `cordova.js` (the PhoneGap source file) to files list before minifaction. \nAfter minifications `app.css`, `app.js` and images are copied into `phonegap/iphone/www/` and `phonegap/android/assets/www` folders and are ready for PhoneGap.\n\n## TODO\n\n* command line generator for models, collections, views\n* better release task to allow for releasing into different envs (dev, test, prod)\n* add support for different templating systems\n\n## Contributors\n\n##Contributors\n\n* [@mkuklis](https://github.com/mkuklis) (Michal Kuklis)\n* [@ahamid](https://github.com/ahamid) (Aaron Hamid)\n* [@parkr](https://github.com/parkr) (Parker Moore)\n\n##License:\n
\n(The MIT License)\n\nCopyright (c) 2012 Incandescent Software\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n","maintainers":[{"name":"mkuklis","email":"michal.kuklis@gmail.com"}],"time":{"modified":"2012-06-23T23:13:33.849Z","created":"2012-06-15T19:21:18.770Z","0.0.1":"2012-06-15T19:21:19.741Z","0.1.1":"2012-06-23T23:13:33.849Z"},"author":{"name":"Michal Kuklis","email":"michal@incsw.com","url":"@mkuklis"},"repository":{"type":"git","url":"git://github.com/incandescent/mbt.git"},"_id":"mbt","_rev":"1-f8b1eb2a5700062b8006c7b393b52efd"}ÿdocument-storeÿmain.jsš{"id":"main.js","rev":"1-cc14757fd894a240db63cd96395e86df","rev_tree":[{"pos":1,"ids":["cc14757fd894a240db63cd96395e86df",{"status":"available"},[]]}],"rev_map":{"1-cc14757fd894a240db63cd96395e86df":3307},"winningRev":"1-cc14757fd894a240db63cd96395e86df","deleted":false,"seq":3307}ÿby-sequenceÿ0000000000003307à {"name":"main.js","description":"A unified webapp framework","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Invariable LHP","email":"invariable.lhp@gmail.com","url":"http://luhp.me"},"name":"main.js","description":"A unified webapp framework","version":"0.0.1","repository":{"type":"git","url":"git://github.com/invariable/main.js.git"},"main":"main.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"invariable","email":"invariable.lhp@gmail.com"},"_id":"main.js@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"072b47016a336d42e22d2fb8f6c4d5dc77f0b904","tarball":"http://registry.npmjs.org/main.js/-/main.js-0.0.1.tgz"},"maintainers":[{"name":"invariable","email":"invariable.lhp@gmail.com"}]}},"readme":"main.js\n=======\n\nUnified webapp framework. Base on node.js. ","maintainers":[{"name":"invariable","email":"invariable.lhp@gmail.com"}],"time":{"modified":"2012-08-02T13:44:34.508Z","created":"2012-07-24T04:34:22.603Z","0.0.1":"2012-07-24T04:34:27.760Z"},"author":{"name":"Invariable LHP","email":"invariable.lhp@gmail.com","url":"http://luhp.me"},"repository":{"type":"git","url":"git://github.com/invariable/main.js.git"},"users":{"fgribreau":true},"_id":"main.js","_rev":"1-cc14757fd894a240db63cd96395e86df"}ÿdocument-storeÿlogtofileœ{"id":"logtofile","rev":"1-5472b3af7cf39a7232543cd1421ec408","rev_tree":[{"pos":1,"ids":["5472b3af7cf39a7232543cd1421ec408",{"status":"available"},[]]}],"rev_map":{"1-5472b3af7cf39a7232543cd1421ec408":3306},"winningRev":"1-5472b3af7cf39a7232543cd1421ec408","deleted":false,"seq":3306}ÿby-sequenceÿ0000000000003306ÎM{"name":"logtofile","description":"A simple log writer. Rotation and compression (gzip) are supported.","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.3":{"name":"logtofile","description":"A simple log writer. Rotation and compression (gzip) are supported.","version":"0.1.3","author":{"name":"Sebastien Dolard","email":"sdolard@gmail.com"},"email":"sdolard@gmail.com","keywords":["log","writter","rotation"],"repository":{"type":"git","url":"git://github.com/sdolard/node-logtofile.git"},"main":"lib/logtofile","license":"MIT","scripts":{"test":"node test/run_test.js"},"engines":{"node":">= 0.6.0"},"bugs":{"url":"https://github.com/sdolard/node-logtofile/issues"},"licenses":[{"type":"MIT","url":"https://raw.github.com/sdolard/node-logtofile/master/LICENSE"}],"dependencies":{},"devDependencies":{},"homepage":"http://github.com/sdolard/node-logtofile","_npmUser":{"name":"sdolard","email":"sdolard@gmail.com"},"_id":"logtofile@0.1.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"4bde5e62108617e30f2f3097b2bc18c4ae0373a1","tarball":"http://registry.npmjs.org/logtofile/-/logtofile-0.1.3.tgz"},"maintainers":[{"name":"sdolard","email":"sdolard@gmail.com"}]},"0.1.4":{"name":"logtofile","description":"A simple log writer. Rotation and compression (gzip) are supported.","version":"0.1.4","author":{"name":"Sebastien Dolard","email":"sdolard@gmail.com"},"email":"sdolard@gmail.com","keywords":["log","writter","ro)LWüùtation"],"repository":{"type":"git","url":"git://github.com/sdolard/node-logtofile.git"},"main":"lib/logtofile","license":"MIT","scripts":{"test":"vows test/vows*.js --spec"},"engines":{"node":">= 0.6.0"},"bugs":{"url":"https://github.com/sdolard/node-logtofile/issues"},"licenses":[{"type":"MIT","url":"https://raw.github.com/sdolard/node-logtofile/master/LICENSE"}],"dependencies":{"vows":">= 0.6.2"},"devDependencies":{},"homepage":"http://github.com/sdolard/node-logtofile","_npmUser":{"name":"sdolard","email":"sdolard@gmail.com"},"_id":"logtofile@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"83a256d82f10da2cfc4ac993f34eeb0ce330044b","tarball":"http://registry.npmjs.org/logtofile/-/logtofile-0.1.4.tgz"},"maintainers":[{"name":"sdolard","email":"sdolard@gmail.com"}]}},"readme":"# node-logtofile\nA simple log writer for node js. \nRotation and compression (gzip) are supported.\n\n\n* http://nodejs.org\n\n## Installation with npm \n### Installing npm (node package manager: http://npmjs.org/)\n\n```\ncurl http://npmjs.org/install.sh || sh\t\n```\n\n### Installing logtofile\n\n```\n[sudo] npm install [-g] logtofile\n```\n\n\n## Usage\n### Basic \n```javascript\nvar logToFile = require('logtofile');\n\nlog = logToFile.create({\n\t\tdirectory: __dirname,\n\t\tfileName: 'log.txt'\n});\n\nlog.on('error', function(err){\n\t\tconsole.log(\"Error: \", err);\n});\n\nlog.on('writting', function(){\n\t\t// starting to write buffered data\n});\n\nlog.on('write', function(){\n\t\t// something was juste written\n});\n\nlog.on('written', function(filePath){\n\t\t// every buffered data have been written\t\t\n});\n\nlog.on('backuped', function (filePath, newFilePath) {\n\t\t// filePath was renamed to newFilePath\n});\n\nlog.on('gzipping', function (filePath, newFilePath) {\n\t\t// starting to gzip filePath to gzippedFilePath\n});\n\nlog.on('gzipped', function (filePath, newFilePath) {\n\t\t// filePath was gzipped to gzippedFilePath\n});\n\nlog.write(\"hello world\");\n\n```\n\n\n```\n### Generated files\nlogtofile will create log files following this naming convention:\n\toriginal: fileName [+ '.' + fileExt]\n\trotation: filename [+ '.' + fileExt] + '.' + fileIndex \n\tcompression: filename [+ '.' + fileExt] + '.' + fileIndex + '.gz'\n\nOlder files have got bigger index:\n-rw-r--r-- 1 sebastiend staff 1769472 14 nov 15:38 benchtest.txt\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:39 benchtest.txt.0\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:40 benchtest.txt.1\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:41 benchtest.txt.2\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:42 benchtest.txt.3\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:43 benchtest.txt.4\n\nOlder files have got bigger index, with gzip enabled\n-rw-r--r-- 1 sebastiend staff 5242880 14 nov 15:40 benchtest.txt\n-rw-r--r-- 1 sebastiend staff 5129 14 nov 15:41 benchtest.txt.0.gz\n-rw-r--r-- 1 sebastiend staff 5129 14 nov 15:42 benchtest.txt.1.gz\n-rw-r--r-- 1 sebastiend staff 5129 14 nov 15:43 benchtest.txt.2.gz\n-rw-r--r-- 1 sebastiend staff 5129 14 nov 15:44 benchtest.txt.3.gz\n-rw-r--r-- 1 sebastiend staff 5129 14 nov 15:45 benchtest.txt.4.gz\n\n```\n\n## Exports \n### 'create'\nReturns a LogToFile instance.\n\n```\n/**\n* @public\n* @class LogToFile\n*\n* @params {string} config.fileName\n* @params {string} config.directory\n* @params {number} [config.writeDelay] Buffer flushed timming (default 200ms)\n* @params {number} [config.bufferSize] Buffer blocks size (default 65536o) \n* @params {number} [config.fileMaxSize] Max file size in octet (default 5MB) \n* @params {number} [config.maxBackupFileNumber] Max backup file number (default 10) \n* @params {boolean} [config.gzipBackupFile] gzip backup files (default false) \n* @params {number} [config.compressionLevel] [1-9] 1: BEST_SPEED, 9: BEST_COMPRESSION, default to 1\n* @params {boolean} [config.verbose] enable verbose mode, default to false\n*\n* @event error({object} exception): when an async exception occured\n* @event writting({string} filePath): when starting to write buffered data\n* @event write(): when something was juste write\n* @event written({string} filePath): when every buffered data have been written\n* @event backuped({string} filePath, {string} newFilePath): when filePath was renamed to newFilePath\n* @event gzipping({string} filePath, {string} gzippedFilePath): when starting to gzip filePath to gzippedFilePath\n* @event gzipped({string} filePath, {string} gzippedFilePath): when filePath was gzipped to gzippedFilePath\n*\n* @throws EEMPTYFILENAME: when config.filename is not set\n* @throws EEMPTYDIRECTORY: when config.directory is not set\n* @throws EDIRNOTFOUND: when config.directory does not exist\n*/\n\n```\n\n\n## Known issues\n\n\n## Test\nJust run test/run_test.js\n\n## Bench\nJust run test/logtofile-bench.js\n\n```\nBench on my MacBook Pro OS X 10.6.8, 2.53GHz Intel Core 2 Duo (P8700), 7200 HDD with node 0.6.5:\nRunning bench 0. fileMaxSize: 5.00MB, maxBackupFileNumber: 0, gzipBackupFile: 0(-)\n................Total:1.00GB in 21158ms: 48.40MB/s\nRunning bench 1. fileMaxSize: 5.00MB, maxBackupFileNumber: 1, gzipBackupFile: 0(-)\n................Total:1.00GB in 20471ms: 50.02MB/s\nRunning bench 2. fileMaxSize: 5.00MB, maxBackupFileNumber: 1, gzipBackupFile: 1(1)\n................Total:1.00GB in 26901ms: 38.07MB/s\nRunning bench 3. fileMaxSize: 5.00MB, maxBackupFileNumber: 1, gzipBackupFile: 1(9)\n................Total:1.00GB in 33083ms: 30.95MB/s\nRunning bench 4. fileMaxSize: 5.00MB, maxBackupFileNumber: 5, gzipBackupFile: 0(-)\n................Total:1.00GB in 19655ms: 52.10MB/s\nRunning bench 5. fileMaxSize: 5.00MB, maxBackupFileNumber: 5, gzipBackupFile: 1(1)\n................Total:1.00GB in 26803ms: 38.20MB/s\nRunning bench 6. fileMaxSize: 5.00MB, maxBackupFileNumber: 5, gzipBackupFile: 1(9)\n................Total:1.00GB in 33553ms: 30.52MB/s\nRunning bench 7. fileMaxSize: 5.00MB, maxBackupFileNumber: 10, gzipBackupFile: 0(-)\n................Total:1.00GB in 19194ms: 53.35MB/s\nRunning bench 8. fileMaxSize: 5.00MB, maxBackupFileNumber: 10, gzipBackupFile: 1(1)\n................Total:1.00GB in 31797ms: 32.20MB/s\nRunning bench 9. fileMaxSize: 10.00MB, maxBackupFileNumber: 10, gzipBackupFile: 0(-)\n................Total:1.00GB in 19811ms: 51.69MB/s\nRunning bench 10. fileMaxSize: 10.00MB, maxBackupFileNumber: 10, gzipBackupFile: 1(1)\n................Total:1.00GB in 33831ms: 30.27MB/s\nRunning bench 11. fileMaxSize: 10.00MB, maxBackupFileNumber: 10, gzipBackupFile: 1(9)\n................Total:1.00GB in 43417ms: 23.59MB/s\n\nAll done\n\n```\n\n```\nBench on my Ubuntu 11.10 desktop, 3GHz Intel Core 2 Duo CPU (E8400), 7200 HDD with node 0.6.1:\nRunning bench 0. fileMaxSize: 5.00MB, maxBackupFileNumber: 0, gzipBackupFile: 0\n................Total:1.00GB in 2447ms: 418.47MB/s\nRunning bench 1. fileMaxSize: 5.00MB, maxBackupFileNumber: 0, gzipBackupFile: 1\n................Total:1.00GB in 2453ms: 417.45MB/s\nRunning bench 2. fileMaxSize: 5.00MB, maxBackupFileNumber: 5, gzipBackupFile: 0\n................Total:1.00GB in 2578ms: 397.21MB/s\nRunning bench 3. fileMaxSize: 5.00MB, maxBackupFileNumber: 5, gzipBackupFile: 1\n................Total:1.00GB in 9936ms: 103.06MB/s\nRunning bench 4. fileMaxSize: 5.00MB, maxBackupFileNumber: 10, gzipBackupFile: 0\n................Total:1.00GB in 13173ms: 77.73MB/s\nRunning bench 5. fileMaxSize: 5.00MB, maxBackupFileNumber: 10, gzipBackupFile: 1\n................Total:1.00GB in 9564ms: 107.07MB/s\nRunning bench 6. fileMaxSize: 10.00MB, maxBackupFileNumber: 10, gzipBackupFile: 0\n................Total:1.00GB in 13550ms: 75.57MB/s\nRunning bench 7. fileMaxSize: 10.00MB, maxBackupFileNumber: 10, gzipBackupFile: 1\n................Total:1.00GB in 9151ms: 111.90MB/s\nAll done\n\n```\n\n\n## License\nnode-logtofile is licensed under the MIT license.","maintainers":[{"name":"sdolard","email":"sdolard@gmail.com"}],"time":{"modified":"2012-03-21T16:27:49.135Z","created":"2011-12-24T08:20:59.465Z","0.1.3":"2011-12-24T08:21:00.893Z","0.1.4":"2012-03-21T16:27:49.135Z"},"author":{"name":"Sebastien Dolard","email":"sdolard@gmail.com"},"repository":{"type":"git","url":"git://github.com/sdolard/node-logtofile.git"},"_id":"logtofile","_rev":"1-5472b3af7cf39a7232543cd1421ec408"}ÿdocument-storeÿlogrum™{"id":"logrum","rev":"1-1ddb5f5c71380ba5f7ab148b141c2d3c","rev_tree":[{"pos":1,"ids":["1ddb5f5c71380ba5f7ab148b141c2d3c",{"status":"available"},[]]}],"rev_map":{"1-1ddb5f5c71380ba5f7ab148b141c2d3c":3305},"winningRev":"1-1ddb5f5c71380ba5f7ab148b141c2d3c","deleted":false,"seq":3305}ÿby-sequenceÿ0000000000003305ì!{"name":"logrum","description":"A web application for real-time log viewing","dist-tags":{"latest":"0.2.2"},"versions":{"0.2.1-2":{"name":"logrum","description":"A web application for real-time log viewing","author":{"name":"David Abdemoulaie","email":"dave@hobodave.com","url":"http://hobodave.com"},"version":"0.2.1-2","dependencies":{"socket.io":"~0.9.2","js-yaml":"~0.3.7","glob":"~3.1.7","jade":"~0.21.0","express":"~2.5.8"},"scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"~0.6.13"},"homepage":"https://github.com/hobodave/logrum","repository":{"type":"git","url":"git://github.com/hobodave/logrum.git"},"_npmUser":{"name":"hobodave","email":"dave@hobodave.com"},"_id":"logrum@0.2.1-2","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"1c7deb3dc112496e4b5bfa1da35981fce34fbe54","tarball":"http://registry.npmjs.org/logrum/-/logrum-0.2.1-2.tgz"},"maintainers":[{"name":"hobodave","email":"dave@hobodave.com"}]},"0.2.2":{"name":"logrum","description":"A web application for real-time log viewing","author":{"name":"David Abdemoulaie","email":"dave@hobodave.com","url":"http://hobodave.com"},"version":"0.2.2","dependencies":{"socket.io":"~0.9.2","js-yaml":"~0.3.7","glob":"~3.1.7","jade":"~0.21.0","express":"~2.5.8"},"scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"~0.6.13"},"homepage":"https://github.com/hobodave/logrum","repository":{"type":"git","url":"git://github.com/hobodave/logrum.git"},"_npmUser":{"name":"hobodave","email":"dave@hobodave.com"},"_id":"logrum@0.2.2","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"43b6b6ef49d18511452e2e315c4b7c2dc4206b68","tarball":"http://registry.npmjs.org/logrum/-/logrum-0.2.2.tgz"},"maintainers":[{"name":"hobodave","email":"dave@hobodave.com"}]}},"readme":"# LogRum #\n\nLogRum is a simple web-based log tailer inspired by [clarity][1] and a \ndesire to satisfy my curiosity in node.js.\n\n# Installation #\n\n## Dependencies ##\n\nSee [package.json][3]\n\n## Steps ##\n\n1. npm install\n2. edit config/config.yml (see config.yml.example)\n3. NODE\\_ENV=production npm start\n\n\n# Caveats #\n\n* client doesn't purge old lines unless you switch log files\n\n# TODO #\n\n* SSL\n* Multi user auth\n\n# Attributions & License #\n\nLogRum is released under a BSD License. See [LICENSE][2].\n\n
\n\nPortions of the HTML & CSS are copied verbatim from [clarity][1] and are\nsubject to the following MIT license:\n\n
\nCopyright © 2009 Tobias Lütke\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the ‘Software’), to \ndeal in the Software without restriction, including without limitation the \nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or \nsell copies of the Software, and to permit persons to whom the Software is \nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL \nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING \nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n
\n\n\n [1]: https://github.com/tobi/clarity\n [2]: https://github.com/hobodave/logrum/blob/master/LICENSE\n [3]: https://github.com/hobodave/logrum/blob/master/package.json\n","maintainers":[{"name":"hobodave","email":"dave@hobodave.com"}],"time":{"modified":"2012-03-21T22:05:09.710Z","created":"2012-03-21T20:14:17.982Z","0.2.1-2":"2012-03-21T20:14:18.599Z","0.2.2":"2012-03-21T22:05:09.710Z"},"author":{"name":"David Abdemoulaie","email":"dave@hobodave.com","url":"http://hobodave.com"},"repository":{"type":"git","url":"git://github.com/hobodave/logrum.git"},"_id":"logrum","_rev":"1-1ddb5f5c71380ba5f7ab148b141c2d3c"}ÿdocument-storeÿloadifyš{"id":"loadify","rev":"1-bce889decb3e80722b76fedc7b9f31db","rev_tree":[{"pos":1,"ids":["bce889decb3e80722b76fedc7b9f31db",{"status":"available"},[]]}],"rev_map":{"1-bce889decb3e80722b76fedc7b9f31db":3304},"winningRev":"1-bce889decb3e80722b76fedc7b9f31db","deleted":false,"seq":3304}ÿby-sequenceÿ0000000000003304ì5{"name":"loadify","description":"Make browserify bundles loadable via different methods.","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"loadify","description":"Make browserify bundles loadable via different methods.","version":"0.1.0","homepage":"https://github.com/chrisjaure/loadify","author":{"name":"Chris Jaure","email":"chrisjaure@gmail.com","url":"http://cleverchris.com"},"repository":{"type":"git","url":"git://github.com/chrisjaure/loadify.git"},"bugs":{"url":"https://github.com/chrisjaure/loadify/issues"},"licenses":[{"type":"MIT","url":"https://github.com/chrisjaure/loadify/blob/master/LICENSE-MIT"}],"main":"lib/loadify","scripts":{"test":"node ./test/fixture/compile.js"},"devDependencies":{"mocha":"*","chai":"*","browserify":"~1.13.5"},"keywords":["browserify","amd","script","commonjs"],"readme":"# Loadify\n\nMiddleware for browserify to make bundles loadable via AMD or script tag.\n\n\n## Getting Started\n\nInstall the module with: `npm install loadify`\n\n\n## Documentation\n\nLoadify accepts an object with a couple keys:\n\n- `module` - The requireable module name.\n- `name` - (optional) If you're generating a script and it's included via a script tag, this will be the global variable under which your script exports will be available.\n\n\n## Examples\n\nPackage up a module.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\trequire: 'my_module'\n});\n\nbundle.use(loadify({\n\tmodule: 'my_module'\n}));\n\n// write your bundle to a file\n```\n\nPackage up a script that uses other modules.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\tentry: './my_script.js'\n});\n\nbundle.use(loadify({\n\tname: 'myModule', // global that will be available if loaded via script tag\n\tmodule: './my_script.js'\n}));\n\n// write your bundle to a file\n```\n\n## Tests\n\nTo run tests in the browser, browse to `./test/index.html`. If you make changes, run `node ./test/fixture/compile.js` to recomplile the client javascript.\n\n\n## TODO\n\n- Automatically detect module name.\n- Add tests for loading via CommonJS loader.\n\n## License\n\nCopyright (c) 2012 Chris Jaure \nLicensed under the MIT license.\n","_id":"loadify@0.1.0","dist":{"shasum":"cf7555be8f929fc163f0ebad1eaf0306edfad642","tarball":"http://registry.npmjs.org/loadify/-/loadify-0.1.0.tgz"},"maintainers":[{"name":"chrisjaure","email":"chrisjaure@gmail.com"}]},"0.1.1":{"name":"loadify","description":"Make browserify bundles loadable via different methods.","version":"0.1.1","homepage":"https://github.com/chrisjaure/loadify","author":{"name":"Chris Jaure","email":"chrisjaure@gmail.com","url":"http://cleverchris.com"},"repository":{"type":"git","url":"git://github.com/chrisjaure/loadify.git"},"bugs":{"url":"https://github.com/chrisjaure/loadify/issues"},"licenses":[{"type":"MIT","url":"https://github.com/chrisjaure/loadify/blob/master/LICENSE-MIT"}],"main":"lib/loadify","scripts":{"test":"node ./test/fixture/compile.js"},"devDependencies":{"mocha":"*","chai":"*","browserify":"~1.13.5","traverse":"~0.6.3"},"keywords":["browserify","amd","script","commonjs"],"readme":"# Loadify\n\nMiddleware for browserify to make bundles loadable via AMD or script tag.\n\n\n## Getting Started\n\nInstall the module with: `npm install loadify`\n\n\n## Documentation\n\nLoadify accepts an object with a couple keys:\n\n- `module` - The requireable module name.\n- `name` - (optional) If you're generating a script and it's included via a script tag, this will be the global variable under which your script exports will be available.\n\n\n## Examples\n\nPackage up a module.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\trequire: 'my_module'\n});\n\nbundle.use(loadify({\n\tmodule: 'my_module'\n}));\n\n// write your bundle to a file\n```\n\nPackage up a script that uses other modules.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\tentry: './my_script.js'\n});\n\nbundle.use(loadify({\n\tname: 'myModule', // global that will be available if loaded via script tag\n\tmodule: './my_script.js'\n}));\n\n// write your bundle to a file\n```\n\n## Tests\n\nTo run tests in the browser, make sure you've got the devDependencies installed and browse to `./test/index.html`. If you make changes, run `node ./test/fixture/compile.js` to recomplile the client javascript.\n\n\n## TODO\n\n- Automatically detect module name.\n- Add tests for loading via CommonJS loader.\n\n## License\n\nCopyright (c) 2012 Chris Jaure \nLicensed under the MIT license.\n","_id":"loadify@0.1.1","dist":{"shasum":"222a408e3fbb1a08053bacf22fb5a8b3c2307581","tarball":"http://registry.npmjs.org/loadify/-/loadify-0.1.1.tgz"},"maintainers":[{"name":"chrisjaure","email":"chrisjaure@gmail.com"}]}},"readme":"# Loadify\n\nMiddleware for browserify to make bundles loadable via AMD or script tag.\n\n\n## Getting Started\n\nInstall the module with: `npm install loadify`\n\n\n## Documentation\n\nLoadify accepts an object with a couple keys:\n\n- `module` - The requireable module name.\n- `name` - (optional) If you're generating a script and it's included via a script tag, this will be the global variable under which your script exports will be available.\n\n\n## Examples\n\nPackage up a module.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\trequire: 'my_module'\n});\n\nbundle.use(loadify({\n\tmodule: 'my_module'\n}));\n\n// write your bundle to a file\n```\n\nPackage up a script that uses other modules.\n\n```javascript\nvar loadify = require('loadify');\nvar browserify = require('browserify');\nvar bundle = browserify({\n\tentry: './my_script.js'\n});\n\nbundle.use(loadify({\n\tname: 'myModule', // global that will be available if loaded via script tag\n\tmodule: './my_script.js'\n}));\n\n// write your bundle to a file\n```\n\n## Tests\n\nTo run tests in the browser, browse to `./test/index.html`. If you make changes, run `node ./test/fixture/compile.js` to recomplile the client javascript.\n\n\n## TODO\n\n- Automatically detect module name.\n- Add tests for loading via CommonJS loader.\n\n## License\n\nCopyright (c) 2012 Chris Jaure \nLicensed under the MIT license.\n","maintainers":[{"name":"chrisjaure","email":"chrisjaure@gmail.com"}],"time":{"modified":"2012-07-14T23:08:15.363Z","created":"2012-07-14T22:46:29.899Z","0.1.0":"2012-07-14T22:46:31.151Z","0.1.1":"2012-07-14T23:08:15.363Z"},"author":{"name":"Chris Jaure","email":"chrisjaure@gmail.com","url":"http://cleverchris.com"},"repository":{"type":"git","url":"git://github.com/chrisjaure/loadify.git"},"_id":"loadify","_rev":"1-bce889decb3e80722b76fedc7b9f31db"}ÿdocument-storeÿlistenrangež{"id":"listenrange","rev":"1-8be63a8596d88678fe1b2df7a97e42ca","rev_tree":[{"pos":1,"ids":["8be63a8596d88678fe1b2df7a97e42ca",{"status":"available"},[]]}],"rev_map":{"1-8be63a8596d88678fe1b2df7a97e42ca":3303},"winningRev":"1-8be63a8596d88678fe1b2df7a97e42ca","deleted":false,"seq":3303}ÿby-sequenceÿ0000000000003303–{"name":"listenrange","description":"Simple tool to listen on lots of ports.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"listenrange","version":"0.1.0","description":"Simple tool to listen on lots of ports.","keywords":["tcp","socket","ports","listen","range","scan"],"homepage":"https://github.com/cbas/listenrange","bugs":{"url":"http://github.com/cbas/listenrange/issues"},"author":"","bin":{"listenrange":"./listenrange.js"},"repository":{"type":"git","url":"git://github.com/cbas/listenrange.git"},"dependencies":{},"_id":"listenrange@0.1.0","dist":{"shasum":"6823e6c1da931bf6ccd9f25fced1040f1a4d6fdf","tarball":"http://registry.npmjs.org/listenrange/-/listenrange-0.1.0.tgz"},"maintainers":[{"name":"seb","email":"sebdeckers83@gmail.com"}]},"0.2.0":{"name":"listenrange","version":"0.2.0","description":"Simple tool to listen on lots of ports.","keywords":["tcp","socket","ports","listen","range","scan"],"homepage":"https://github.com/cbas/listenrange","bugs":{"url":"http://github.com/cbas/listenrange/issues"},"author":"","main":"./listenrange.js","engines":{"node":"*"},"bin":{"listenrange":"./listenrange.js"},"repository":{"type":"git","url":"git://github.com/cbas/listenrange.git"},"dependencies":{},"_id":"listenrange@0.2.0","dist":{"shasum":"e22736a6b8dfb211656baf19c69a4d69d88bdee0","tarball":"http://registry.npmjs.org/listenrange/-/listenrange-0.2.0.tgz"},"maintainers":[{"name":"seb","email":"sebdeckers83@gmail.com"}]}},"readme":"listenrange\r\n==\r\n\r\nSimple tool to listen on lots of ports. Couldn't find a command to do this so I rolled my own.\r\n\r\n## Installation\r\n\r\nGrab it off NPM.\r\n\r\n``` bash\r\nnpm install -g listenrange\r\n```\r\n\r\n## Usage\r\n\r\n``` bash\r\nlistenrange 21 80 500-700 1000-2000\r\n```\r\nor\r\n``` bash\r\nnode listenrange.js 21 80 500-700 1000-2000\r\n```\r\n","maintainers":[{"name":"seb","email":"sebdeckers83@gmail.com"}],"time":{"modified":"2012-07-16T06:38:30.908Z","created":"2012-07-16T05:16:24.698Z","0.1.0":"2012-07-16T05:16:38.681Z","0.2.0":"2012-07-16T06:38:30.908Z"},"repository":{"type":"git","url":"git://github.com/cbas/listenrange.git"},"_id":"listenrange","_rev":"1-8be63a8596d88678fe1b2df7a97e42ca"}ÿdocument-storeÿjus-i18n›{"id":"jus-i18n","rev":"1-62bbd77509caaf885def77a3941d8909","rev_tree":[{"pos":1,"ids":["62bbd77509caaf885def77a3941d8909",{"status":"available"},[]]}],"rev_map":{"1-62bbd77509caaf885def77a3941d8909":3302},"winningRev":"1-62bbd77509caaf885def77a3941d8909","deleted":false,"seq":3302}ÿby-sequenceÿ0000000000003302ƒ‚{"name":"jus-i18n","description":"Real I18N implementation, with a true support for plural forms, and many storage engines. Works best with Express or Jus Framework","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"author":{"name":"Nicolas Chambrier","email":"naholyr@gmail.com","url":"http://naholyr.fr"},"name":"jus-i18n","description":"Real I18N implementation, with a true support for plural forms, and many storage engines. Works best with Express or Jus Framework","version":"0.1.1","homepage":"https://github.com/naholyr/node-i18n","repository":{"type":"git","url":"git://github.com/naholyr/node-i18n.git"},"main":"index.js","scripts":{"test":"node test"},"engines":{"node":"*"},"dependencies":{"gettext":"*"},"devDependencies":{},"_id":"jus-i18n@0.1.1","_engineSupported":true,"_npmVersion":"1.0.1","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"53c67cd62fe9df0059dd7efe890c0fd4f380e429","tarball":"http://registry.npmjs.org/jus-i18n/-/jus-i18n-0.1.1.tgz"}},"0.1.2":{"author":{"name":"Nicolas Chambrier","email":"naholyr@gmail.com","url":"http://naholyr.fr"},"name":"jus-i18n","description":"Real I18N implementation, with a true support for plural forms, and many storage engines. Works best with Express or Jus Framework","version":"0.1.2","homepage":"https://github.com/naholyr/node-i18n","repository":{"type":"git","url":"git://github.com/naholyr/node-i18n.git"},"main":"index.js","scripts":{"test":"node test"},"engines":{"node":"*"},"dependencies":{"gettext":"*"},"devDependencies":{},"_npmUser":{"name":"naholyr","email":"naholyr@gmail.com"},"_id":"jus-i18n@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.19-pre","_defaultsLoaded":true,"dist":{"shasum":"02f8891a711b0a327d80d2af68487a717dd7f3bc","tarball":"http://registry.npmjs.org/jus-i18n/-/jus-i18n-0.1.2.tgz"},"readme":"[![Build Status](https://secure.travis-ci.org/naholyr/node-jus-i18n.png)](http://travis-ci.org/naholyr/node-jus-i18n)\n\nUsage\n=====\n\nDefault usage\n-------------\n\n```javascript\n// Load module:\nvar i18n = require('/path/to/i18n');\n// Optional: set default locale\ni18n.defaultLocale = 'fr';\n// Optional: add prefix and suffix around untranslated strings (default = '[T]' and '[/T]'\ni18n.debug();\n// Mandatory: load translation data\ni18n.load(\n catalogue, // Catalogue to load, undefined if you want to load default catalogue\n locales, // array of locales to load, undefined if want to load all available locales\n function(errors, loadedLocales, store) { // Callback\n // errors = hash of exceptions thrown by each erroneous locale, or undefined if no error\n // any global error will be stored in errors.ALL\n // loadedLocales = array of successfully loaded locales\n // store = store module\n }\n);\n// Go translate :)\nconsole.log(i18n.translate('Chicken')); // \"Poulet\"\nconsole.log(i18n.translate('Chicken', 'it')); // \"Pollo\"\nconsole.log(i18n.translate('Chicken {name}', {name: \"KFC\"})); // \"Poulet KFC\"\nconsole.log(i18n.translate('Chicken {name}', {name: \"KFC\"}, 'it')); // \"Pollo KFC\"\n```\n\nIntegration with Express.js\n---------------------------\n\n```javascript\n// ... app initialized ...\n// Load module:\nvar i18n = require('/path/to/i18n');\n// Optional: configure default locale, debug mode, etc.\n// Then configure application:\napp.configure(function() {\n i18n.enableForApp(app, { // options (all are optional, you can pass {} or undefined\n \"locale\": \"en\", // default locale\n \"catalogue\": \"messages\", // catalogue to load\n \"locales\": undefined, // locales to load\n }, function(err) { // called when i18n has loaded messages\n ...\n });\n});\n// Your \"req\" object is augmented:\nreq.i18n.translate(...)\nreq.locales() // returns the list of user's accept-language, ordered by preference\nreq.locale() // returns current user's chosen locale, stored in session if available\n// Your templates gain new helpers:\n...<%= _('Hello, {name}', {name: userName}) %>...\n...<%= plural('You have {n} messages', nbMessages) %>...\n```\n\nStore your messages\n===================\n\nThere are multiple message stores currently supported, details for which are provided below.\n\nStore: module\n-------------\n\nA whole catalogue in a single file:\n\n```javascript\n// Module name: \"./i18n-data/%catalogue%\"\n// ./i18n-data/messages.js\nmodule.exports = {\n \"fr\": { \"Chicken\": \"Poulet\", \"Chicken {name}\": \"Poulet {name}\" },\n \"it\": { \"Chicken\": \"Pollo\", \"Chicken {name}\": \"Pollo {name}\" },\n};\n// will be loaded with i18n.load('messages');\n```\n\nOr split by locale:\n\n```javascript\n// Module name: \"./i18n-data/%catalogue%/%locale%\"\n// ./i18n-data/messages/fr.js\nmodule.exports = { \"Chicken\": \"Poulet\", \"Chicken %name%\": \"Poulet %name%\" };\n// ./i18n-data/messages/it.js\nmodule.exports = { \"Chicken\": \"Pollo\", \"Chicken %name%\": \"Pollo %name%\" };\n// will be loaded with i18n.load('messages', ['fr', 'it']);\n```\n\nNote that you can customize the path to i18n-data modules:\n\n```javascript\ni18n.i18nDataModuleName.__default__ = process.cwd() + \"/i18n-data\";\n```\n\nThis method is the most flexible, faster than other file storage, and therefore ideal to embed your translations in your application.\nNevertheless, there is an important drawback using module storage: not the same file will be loaded, depending on the way you call \"i18n.load(...)\".\nThe best way to store your messages using module storage, to keep full compatibility with any \"load(...)\" parameters, is to declare your catalogue, that will include all locales:\n\n```javascript\n// ./i18n-data/messages/index.js\nmodule.exports = {\n \"fr\": require('./fr'),\n \"it\": require('./it')\n};\n// ./i18n-data/messages/fr.js\nmodule.exports = { \"Chicken\": \"Poulet\", \"Chicken %name%\": \"Poulet %name%\" };\n// ./i18n-data/messages/it.js\nmodule.exports = { \"Chicken\": \"Pollo\", \"Chicken %name%\": \"Pollo %name%\" };\ni18n.load('messages') and i18n.load('messages', ['fr', 'it']) will both work\n```\n\nIn this storage engine, methods to list available locales will not respond.\n\n### Formats, contexts and plural forms\n\nDefault format:\n\n \"sentence\": \"Translated sentence\",\n\nContext embedded in the message:\n\n \"sentence\": \"Translated sentence for default context or no context\",\n \"context1:sentence\": \"Translation for context1\",\n \"context2:sentence\": \"Translation for context2\",\n ...\n\nUsing callback:\n\n \"sentence\": function(context) {\n switch (context) {\n ...\n default:\n return \"Default translation\";\n }\n }\n\nUsing hash:\n\n \"sentence\": {\n \"\": \"Default translation\",\n \"context1\": \"Translation for context1\",\n \"context2\": \"Translation for context2\",\n ...\n }\n\nOf course, a \"translation\" can be a simple string as any representation of a plural form (string, array, hash).\n\nMixing plural forms and contexts can be confusing, the best practice is not to use numbers as context. \n\nStore: file\n-----------\n\nFilename: i18n-data/messages.{lang}[.txt]\n\nYou can specify several folders, translations will then be merged, in the same order the folders have been declared (last one overrides previous).\n\nFormat:\n\n sentence = translation\n\n* Surrounding quotes (single or double) can be used, they'll be stripped out.\n\n sentence = \"translation\"\n sentence = 'translation'\n\n* Escape using backslash.\n\n sentence = \"my \\\"translation\\\"\"\n\n* Same rules apply to keys, if you need to use a \"=\" in a key, quote it or escape the sign\n\n \"my \\= sentence\" = \"my = translation\"\n\n### Plural forms\n\nDefault format:\n\n You have {n} messages = [0]Vous n'avez aucun message|[1]Vous avez un message|[2-+Inf]Vous avez {n} messages\n\nMultiline format (use a single pipe, then one plural form per line, indented by one or more spaces/tabs):\n\n You have {n} messages = |\n \t[0]Vous n'avez aucun message\n \t[1]Vous avez un message\n \t[2-+Inf]Vous avez {n} messages\n\n### Contexts\n\nDefault format:\n\n Hello, {name} = Bonjour, {name}\n female:Hello, {name} = Bonjour, mademoiselle {name}\n male:Hello, {name} = Bonjour, monsieur {name}\n\nMultiline format (define default translation, then one translation per context, using colon):\n\n Hello, {name} = Bonjour, {name}\n \tfemale: Bonjour, mademoiselle {name}\n \tmale: Bonjour, monsieur {name}\n\nIf you need to use a single pipe as default translation, this will trigger plural forms (and then a syntax error) unless you quote it or escape it. \n\nStore: gettext\n--------------\n\nThe hierarchy is fully similar with the file storage, except that files are expected to end with \".po\".\n\nThis store uses Javascript implementation of Gettext, and interprets directly \".po\" files. No need to compile.\n\nThe PO format won't be described here, use it as expected :) Some notes though:\n\n* Generic plural forms handler implemented by jus-i18n is not used here, we directly use gettext's one.\n* Plural forms API in jus-i18n expects only one parameter \"msg\". If your `msgid` and `msgid_plural` values are not the same in your PO file, then you'll simply have to provide an array `[msgid, msgid_plural]`.\n* Contexts are supported by gettext, but jus-i18n context handling will still be used. This is expected to change.\n\nStKî„üùore: db\n---------\n\nSoon available (redis, mongodb, mysql...).\n\nPlural forms\n============\n\nTODO documentation.\n\nThis is the most important feature to come. Still in development though.\n\nPlanned API (WiP)\n-----------------\n\nThe base function will expect only the \"plural form\", and the associated number:\n\n plural(msg, number)\n\nA \"plural form\" could be a simple string, or a complex structure.\nHere are some valid formats we could imagine:\n\n // Simple string\n \"[0]No message|[1]One message|[2,+Inf)%count% messages\"\n\n // Complex structure\n [\n [ function(count){return count == 0;}, \"No message\" ],\n [ function(count){return count == 1;}, \"One message\" ],\n [ function(count){return count >= 2;}, \"%count% messages\" ],\n ]\n\nSupporting both type of structures could ease support for complex rules like polish plurals (where we need to use euclidian divides). Eval() is an option too...\n\nAbout translating message passer to `plural()`, following behavior has to be discussed:\n\n> \"plural()\" is able to automatically translate the message, BUT ONLY IF YOU EXPECT IT TO:\n> \n> * plural(msg, number) → will not translate msg\n> * plural(msg, number, params, locale, catalogue) → will translate msg\n> \n> If you want \"plural()\" to translate the message, but using default locale and no replacement, then call `plural(msg, number, {})`\n> \n> Other option: always translate.\n\nExample in a template:\n\n <%= plural(\"You have %n% messages\", 3, {}) %>\n // _(\"You have %n% messages\") returns \"[0]No message|[1]One message|[2,+Inf)%n% messages\"\n // plural(\"[0]No message|[1]One message|[2,+Inf)%n% messages\", 3) returns \"3 messages\"\n\nContextual translations\n=======================\n\nYou may sometimes need to translate a sentence differently depending on a unpredictible context. Usual case is the gender (male/female).\nThis is handled using a special parameter named \"context\", and a special translation \"context:message\".\n\nFor example, supposing you want to say \"hello, {name}\" differently depending on civility (\"mr\", \"mrs\", \"miss\"), you will provide these translations in the store:\n\n {\n \"hello, {name}\": \"hello, {name}\", // default translation, no context\n \"mr:hello, {name}\": \"hello, Mister {name}\", // translation for civility \"mr\"\n \"mrs:hello, {name}\": \"hello, Mrs. {name}\", // translation for civility \"mrs\"\n \"miss:hello, {name}\": \"hello, Miss {name}\" // translation for civility \"miss\"\n }\n\nYou will then be able to translate \"hello, {name}\" differently depending on provided context:\n\n i18n.translate(\"hello, {name}\", {name: \"Jones\", context: \"mr\"}); // hello, Mister Jones\n i18n.translate(\"hello, {name}\", {name: \"Jones\", context: \"mrs\"}); // hello, Mrs. Jones\n\nConfiguration\n=============\n\n* Customize the session key to store user's locale:\n \n i18n.localeSessKey = 'locale';\n\n* Customize the messages store:\n \n // Embedded store\n i18n.setStore('module', options, function(err, i18n) {\n ...\n });\n // You custom store module\n i18n.setStore(require('/path/to/my/store'), options, function(err, i18n) {\n ...\n });\n \n Beware you must call \"i18n.load(...)\" again if you had already loaded another store.\n You can use only one store at a time.\n\n* Customize default locale:\n \n i18n.defaultLocale = 'en';\n\n* Default catalogue to load and search translations from:\n \n i18n.defaultCatalogue = 'messages';\n\n* Change format of replaced parameters in your messages:\n \n i18n.replaceFormat = '{...}';\n // i18n.replaceFormat = ':...';\n // and i18n.translate('hello, :name', {name: 'John'}) will work as expected\n\n* In plural forms, the parameter 'n' is replaced by the number, you can change this name:\n \n i18n.defaultPluralReplace = 'n';\n\nWrite your own store\n--------------------\n\nYou must write a module that will expose at least two self-explanatory methods:\n\n* load(catalogue, locales, i18n, callback)\n * catalogue and i18n will always be provided by i18n module.\n * if no locale is provided, you're expected to enable all available locales.\n * callback expects following parameters: (errors, loadedLocales, this)\n* get(key, locale, catalogue, i18n)\n * all parameters will always be provided by i18n module.\n * if no translation is found, you MUST return undefined.\n * this function HAS TO BE synchronous.\n* locales(prefix, callback)\n * callback expects following parameters: (err, array of locales starting with prefix, this)\n* catalogues(callback)\n * callback expects following parameters: (err, array of available catalogues, this)\n* configure(options, callback)\n * configure the store, options depend on your store\n * callback expects following parameters: (err, this)\n\nThe i18n module is passed to these methods whenever you would need it in your store.\n\nStupid example (will always translate \"js\", and only this one, into \"rox\"):\n\n var data = {};\n exports.load = function(catalogue, locale, i18n, callback) {\n catalogue = catalogue || i18n.defaultCatalogue;\n locale = locale || i18n.defaultLocale;\n if (!data[catalogue]) {\n data[catalogue] = {locale: {\"js\": \"rox\"}};\n } else {\n if (!data[catalogue][locale]) {\n data[catalogue][locale] = {\"js\": \"rox\"};\n } else {\n data[catalogue][locale][\"js\"] = \"rox\";\n }\n }\n // Make it asynchronous\n setTimeout(function() { callback(undefined, i18n, exports); }, 1);\n }\n exports.get = function(key, locale, catalogue) {\n return data[catalogue][locale][key];\n }\n exports.configure = function(options, callback) {\n // This time, it's synchronous, your implementation, your choice\n callback(undefined, i18n, this);\n }\n\nTODO\n====\n\n* Fix the data loading when we specify the list of loaded locales.\n* Provide more stores (at least Redis).\n* Better documentation.\n* If provided a \"file\" store: Ability to merge data from more than one folder.\n* Ability to use more than one store at same time.\n* Better support for locales \"lang_COUNTRY\" (loads messages for locales \"lang\" and \"lang-country\").\n* All these things I didn't think about yet.\n\n---\n\n* Done: Plural forms, including ranges and expressions recognition.\n* Done: Context like gender (original idea from dialect).\n","maintainers":[{"name":"naholyr","email":"naholyr@gmail.com"}]}},"maintainers":[{"name":"naholyr","email":"naholyr@gmail.com"}],"time":{"modified":"2012-06-18T09:13:56.321Z","created":"2011-05-16T20:58:58.381Z","0.1.1":"2011-05-16T20:58:59.812Z","0.1.2":"2012-06-18T09:13:56.321Z"},"author":{"name":"Nicolas Chambrier","email":"naholyr@gmail.com","url":"http://naholyr.fr"},"repository":{"type":"git","url":"git://github.com/naholyr/node-i18n.git"},"users":{"naholyr":true},"_id":"jus-i18n","_rev":"1-62bbd77509caaf885def77a3941d8909"}!ÿdocument-storeÿjson-compressor¢{"id":"json-compressor","rev":"1-880a05c9832b4e3e4e99cd43b3fbbb83","rev_tree":[{"pos":1,"ids":["880a05c9832b4e3e4e99cd43b3fbbb83",{"status":"available"},[]]}],"rev_map":{"1-880a05c9832b4e3e4e99cd43b3fbbb83":3301},"winningRev":"1-880a05c9832b4e3e4e99cd43b3fbbb83","deleted":false,"seq":3301}ÿby-sequenceÿ0000000000003301ï{"name":"json-compressor","description":"Removes whitespace and JavaScript-style comments from a JSON string.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Kit Cambridge","url":"http://kitcambridge.github.com"},"name":"json-compressor","description":"Removes whitespace and JavaScript-style comments from a JSON string.","version":"0.0.1","repository":{"url":"git://github.com/kitcambridge/json-compressor"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"kitcambridge","email":"kitcambridge@me.com"},"_id":"json-compressor@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"33c8622a5229120394d2a70217f38969adc111ca","tarball":"http://registry.npmjs.org/json-compressor/-/json-compressor-0.0.1.tgz"},"maintainers":[{"name":"kitcambridge","email":"kitcambridge@me.com"}]}},"readme":"# `json-compressor`\n\n`json-compressor` is a simple Node module that removes whitespace and JavaScript-style comments from a JSON string.\n\n $ npm install json-compressor\n\n## Example\n\n var fs = require(\"fs\"), compress = require(\"../\"), source = fs.readFileSync(\"example.json\", \"utf8\");\n console.log(JSON.parse(compress(source)));\n => { \"name\": \"Kit\", \"age\": 19, \"hobbies\": [\"programming\", \"running\"], \"source\": \"123\\\\n// Line comment.\\\\n/* Block comment. */\\\\n456\" }\n\n## License\n\nPublic domain.","maintainers":[{"name":"kitcambridge","email":"kitcambridge@me.com"}],"time":{"modified":"2012-06-04T22:02:02.997Z","created":"2012-06-04T22:02:01.952Z","0.0.1":"2012-06-04T22:02:02.997Z"},"author":{"name":"Kit Cambridge","url":"http://kitcambridge.github.com"},"repository":{"url":"git://github.com/kitcambridge/json-compressor"},"_id":"json-compressor","_rev":"1-880a05c9832b4e3e4e99cd43b3fbbb83"}ÿdocument-storeÿjsentropyœ{"id":"jsentropy","rev":"1-6d31395329d05de4c144c49c3d1a7558","rev_tree":[{"pos":1,"ids":["6d31395329d05de4c144c49c3d1a7558",{"status":"available"},[]]}],"rev_map":{"1-6d31395329d05de4c144c49c3d1a7558":3300},"winningRev":"1-6d31395329d05de4c144c49c3d1a7558","deleted":false,"seq":3300}ÿby-sequenceÿ0000000000003300æ{"name":"jsentropy","description":"Javascript Entropy(Random) Library","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"jsentropy","version":"0.0.1","description":"Javascript Entropy(Random) Library","keywords":["util"],"url":"https://github.com/whoatemydomain/jsentropy","author":{"name":"Johan Jordaan","email":"johan@whoatemydomain.co.za"},"contributors":[],"private":false,"dependencies":{"chai":"*","mocha":"*"},"lib":"lib","_npmUser":{"name":"whoatemydomain","email":"johan@whoatemydomain.co.za"},"_id":"jsentropy@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"333f773d14d453bd50e94b5822e5748eadb5a543","tarball":"http://registry.npmjs.org/jsentropy/-/jsentropy-0.0.1.tgz"},"maintainers":[{"name":"whoatemydomain","email":"johan@whoatemydomain.co.za"}]},"0.0.2":{"name":"jsentropy","version":"0.0.2","description":"Javascript Entropy(Random) Library","keywords":["util"],"url":"https://github.com/whoatemydomain/jsentropy","author":{"name":"Johan Jordaan","email":"johan@whoatemydomain.co.za"},"contributors":[],"private":false,"dependencies":{"chai":"*","mocha":"*"},"lib":"lib","_npmUser":{"name":"whoatemydomain","email":"johan@whoatemydomain.co.za"},"_id":"jsentropy@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f22edff0d70aa1b11553efc9bc80158970720634","tarball":"http://registry.npmjs.org/jsentropy/-/jsentropy-0.0.2.tgz"},"maintainers":[{"name":"whoatemydomain","email":"johan@whoatemydomain.co.za"}]}},"readme":"jsentropy\n=========\nThis is a set of PRNG's (Pseudo Random Number Generator) for javascript, specifically for node.\n\nImplimented PRNGs:\n * Linear Congruential Generator\n\nInstalling\n----------\nnpm install jsentropy (I have not released this to the npm repor yet, It will be done soon).\n\nUsage\n-----\n\n","maintainers":[{"name":"whoatemydomain","email":"johan@whoatemydomain.co.za"}],"time":{"modified":"2012-06-11T18:01:29.482Z","created":"2012-06-11T11:47:32.750Z","0.0.1":"2012-06-11T11:47:37.110Z","0.0.2":"2012-06-11T18:01:29.482Z"},"author":{"name":"Johan Jordaan","email":"johan@whoatemydomain.co.za"},"_id":"jsentropy","_rev":"1-6d31395329d05de4c144c49c3d1a7558"}ÿdocument-storeÿjsbundle-s3ž{"id":"jsbundle-s3","rev":"1-67f67336e30d116b5dde16faa9ba2b16","rev_tree":[{"pos":1,"ids":["67f67336e30d116b5dde16faa9ba2b16",{"status":"available"},[]]}],"rev_map":{"1-67f67336e30d116b5dde16faa9ba2b16":3299},"winningRev":"1-67f67336e30d116b5dde16faa9ba2b16","deleted":false,"seq":3299}ÿby-sequenceÿ0000000000003299½|{"name":"jsbundle-s3","dist-tags":{"latest":"0.3.4"},"versions":{"0.0.1":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.0.1","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.0","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"5edbf466d1dfadfef9b362f09a4a4b82d60ce365","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.0.1.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.0.2":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.0.2","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.0","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"80b7089884070802382d59b7b3df946e304374bb","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.0.2.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.0.3":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.0.3","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.0","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"99aad5825d72bb3c00491ad196ed6ad0a5df6e40","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.0.3.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.1.0":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.1.0","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.1","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"448b09d34ff0c9221607539d750ee8d7d03e9a33","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.1.0.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.1.1":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.1.1","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.1","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"28ab3839f7bb5d60ab3bee30be166c36a1029dba","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.1.1.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.1.2":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.1.2","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.8.1","optimist":"0.3.4","gzip":"0.1.0"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"09fd36baa8886c11c416e607dd0bcab4c0644527","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.1.2.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.2.0":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.2.0","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"git://github.com/mishoo/UglifyJS.git#ef4d776aedee6cbc8959a8e76403b82523615d3a","jsbundle":"0.10.0","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.2.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7861b4a77e7054929dbe4abcb34aa9d9f87f2dd8","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.2.0.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.2.1":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.2.1","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.2","jsbundle":"0.10.0","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.2.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"06d2e9ee38af6623a6430d754d4ea0d5747a05ec","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.2.1.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.3.0":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.3.0","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.2","jsbundle":"0.10.2","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.3.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"5a5579569ae93c1eb0d006a1b247ffdbc0434d66","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.3.0.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.3.1":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.3.1","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.2","jsbundle":"0.10.4","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":"0.6.x-0.8.x"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.3.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d0b10993b3d3006e8598bb535a8a83b965fd1e73","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.3.1.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.3.2":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.3.2","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.2","jsbundle":"0.11","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":">=0.6.0"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.3.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"78c91de4b24e987ae50ba6ea1e313b247dc708b4","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.3.2.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.3.3":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.3.3","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.3","jsbundle":"0.13","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":">=0.6.0"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.3.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e40f82a59d769b9085799d8d07b0db6a23387c59","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.3.3.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"},"0.3.4":{"author":{"name":"ProxV, Inc."},"name":"jsbundle-s3","version":"0.3.4","decription":"Bundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).","keywords":["bundle module package minify uglify s3 aws"],"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"dependencies":{"awssum":"0.5.1","uglify-js":"1.3.3","jsbundle":"0.13.4","optimist":"0.3.4","gzip":"0.1.0","q":"0.8.5"},"bin":{"jsbundle-s3":"bin/jsbundle-s3"},"engines":{"node":">=0.6.0"},"preferGlobal":true,"_npmUser":{"name":"paulbaumgart","email":"paul@proxv.com"},"_id":"jsbundle-s3@0.3.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d000aff7987fed160b9b3d3d2c636a9f359f2cc1","tarball":"http://registry.npmjs.org/jsbundle-s3/-/jsbundle-s3-0.3.4.tgz"},"maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"directories":{},"deprecated":"jsbundle-s3 is now part of the jsbundle package"}},"readme":"# jsbundle-s3\n\nBundle, minify, and upload your JS code to Amazon's Simple Storage Service (S3).\n\n## Usage:\n\n [JSBUNDLE_ENV=env] jsbundle-s3 [--bundle-version=version]\n\nThe options are basically identical to the [jsbundle options](https://github.com/proxv/jsbundle/blob/master/README.md).\n\nThere are two major differences:\n\n 1. the --bundle-version option, which lets you specify a version string for the uploaded bundle. It defaults to a millisecond timestamp.\n 2. the \"s3\" key in jsbundle.json, which is as follows:\n\n
\"s3\": {\n      \"accessKeyId\": \"my_key_id\",\n      \"secretAccessKey\": \"my_secret_access_key\",\n      \"bucketName\": \"my_bucket_name\",\n      \"afterUpload\": \"redis-cli -p 6379 hmset jsbundle.urls $NAME $URL\"\n    }
\n\n afterUpload is optional, and runs a shell command with 3 variables set after S3 upload succeeds:\n\n * $NAME — the file name (taken from the bundled package's package.json), e.g.: mypackage.js\n * $VERSION — the version string, e.g.: 1337644600297\n * $URL — the url, without a protocol, of the uploaded file, e.g.: //s3.amazonaws.com/mybucket/1337644600297/mypackage.js\n\n","maintainers":[{"name":"paulbaumgart","email":"paul@proxv.com"}],"time":{"modified":"2012-08-22T01:23:28.035Z","created":"2012-05-22T00:18:21.213Z","0.0.1":"2012-05-22T00:18:23.598Z","0.0.2":"2012-05-22T06:01:30.586Z","0.0.3":"2012-05-22T07:55:30.787Z","0.1.0":"2012-05-22T08:46:08.626Z","0.1.1":"2012-05-22T08:54:56.998Z","0.1.2":"2012-05-22T23:23:45.017Z","0.2.0":"2012-05-24T05:17:53.035Z","0.2.1":"2012-06-30T07:36:38.373Z","0.3.0":"2012-07-03T00:38:40.401Z","0.3.1":"2012-07-16T05:28:24.929Z","0.3.2":"2012-08-11T00:40:46.790Z","0.3.3":"2012-08-14T21:34:21.046Z","0.3.4":"2012-08-15T00:57:00.442Z"},"author":{"name":"ProxV, Inc."},"repository":{"type":"git","url":"git://github.com/proxv/jsbundle-s3.git"},"_id":"jsbundle-s3","_rev":"1-67f67336e30d116b5dde16faa9ba2b16"}ÿdocument-storeÿjs-yaml.binž{"id":"js-yaml.bin","rev":"1-80da5503025d1cfc632db05ce26602ab","rev_tree":[{"pos":1,"ids":["80da5503025d1cfc632db05ce26602ab",{"status":"available"},[]]}],"rev_map":{"1-80da5503025d1cfc632db05ce26602ab":3298},"winningRev":"1-80da5503025d1cfc632db05ce26602ab","deleted":false,"seq":3298}ÿby-sequenceÿ0000000000003298²/{"name":"js-yaml.bin","description":"YAML 1.1 Parser (CLI tool)","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"js-yaml.bin","version":"0.1.0","description":"YAML 1.1 Parser (CLI tool)","keywords":["yaml","parser","pyyaml","cli"],"homepage":"https://github.com/nodeca/js-yaml","author":{"name":"Aleksey V Zapparov","email":"ixti@member.fsf.org","url":"http://www.ixti.net/"},"contributors":[{"name":"Martin Grenfell","email":"martin.grenfell@gmail.com","url":"http://got-ravings.blogspot.com"}],"bugs":{"url":"https://github.com/nodeca/js-yaml.bin/issues"},"license":{"type":"MIT","url":"https://github.com/nodeca/js-yaml.bin/blob/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/nodeca/js-yaml.bin.git"},"bin":{"jsyaml":"bin/js-yaml.js"},"main":"./index.js","dependencies":{"js-yaml":">= 0.3.3 < 1.0.0","nomnom":"~ 1.5.1"},"engines":{"node":"> 0.4.11"},"_npmUser":{"name":"vitaly","email":"vitaly@rcdesign.ru"},"_id":"js-yaml.bin@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"8d33faeb188874c47b9137b2d93a009ff94bf937","tarball":"http://registry.npmjs.org/js-yaml.bin/-/js-yaml.bin-0.1.0.tgz"},"scripts":{},"maintainers":[{"name":"vitaly","email":"vitaly@rcdesign.ru"}]},"0.2.0":{"name":"js-yaml.bin","version":"0.2.0","description":"YAML 1.1 Parser (CLI tool)","keywords":["yaml","parser","pyyaml","cli"],"homepage":"https://github.com/nodeca/js-yaml.bin","author":{"name":"Aleksey V Zapparov","email":"ixti@member.fsf.org","url":"http://www.ixti.net/"},"contributors":[{"name":"Martin Grenfell","email":"martin.grenfell@gmail.com","url":"http://got-ravings.blogspot.com"}],"bugs":{"url":"https://github.com/nodeca/js-yaml.bin/issues"},"license":{"type":"MIT","url":"https://github.com/nodeca/js-yaml.bin/blob/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/nodeca/js-yaml.bin.git"},"bin":{"js-yaml":"bin/js-yaml.js"},"main":"./index.js","dependencies":{"js-yaml":">= 0.3.4 < 1.0.0","nomnom":"~ 1.5.1"},"engines":{"node":"> 0.4.11"},"_npmUser":{"name":"vitaly","email":"vitaly@rcdesign.ru"},"_id":"js-yaml.bin@0.2.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"505fd25bcaeb6ffe83dcd00b608146611642e119","tarball":"http://registry.npmjs.org/js-yaml.bin/-/js-yaml.bin-0.2.0.tgz"},"scripts":{},"maintainers":[{"name":"vitaly","email":"vitaly@rcdesign.ru"}]},"0.2.1":{"name":"js-yaml.bin","version":"0.2.1","description":"YAML 1.1 Parser (CLI tool)","keywords":["yaml","parser","pyyaml","cli"],"homepage":"https://github.com/nodeca/js-yaml.bin","author":{"name":"Aleksey V Zapparov","email":"ixti@member.fsf.org","url":"http://www.ixti.net/"},"contributors":[{"name":"Martin Grenfell","email":"martin.grenfell@gmail.com","url":"http://got-ravings.blogspot.com"}],"bugs":{"url":"https://github.com/nodeca/js-yaml.bin/issues"},"license":{"type":"MIT","url":"https://github.com/nodeca/js-yaml.bin/blob/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/nodeca/js-yaml.bin.git"},"bin":{"js-yaml":"bin/js-yaml.js"},"main":"./index.js","dependencies":{"js-yaml":">= 0.3.4 < 1.0.0","commander":">= 0.5.1"},"engines":{"node":"> 0.4.11"},"_npmUser":{"name":"vitaly","email":"vitaly@rcdesign.ru"},"_id":"js-yaml.bin@0.2.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"5e7ac46f596f83bd3ac6c7f082d6456d9b65c1dc","tarball":"http://registry.npmjs.org/js-yaml.bin/-/js-yaml.bin-0.2.1.tgz"},"scripts":{},"maintainers":[{"name":"vitaly","email":"vitaly@rcdesign.ru"}]},"0.2.2":{"name":"js-yaml.bin","version":"0.2.2","description":"YAML 1.1 Parser (CLI tool)","keywords":["yaml","parser","pyyaml","cli"],"homepage":"https://github.com/nodeca/js-yaml.bin","author":{"name":"Aleksey V Zapparov","email":"iøùßgùxti@member.fsf.org","url":"http://www.ixti.net/"},"contributors":[{"name":"Martin Grenfell","email":"martin.grenfell@gmail.com","url":"http://got-ravings.blogspot.com"}],"bugs":{"url":"https://github.com/nodeca/js-yaml.bin/issues"},"license":{"type":"MIT","url":"https://github.com/nodeca/js-yaml.bin/blob/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/nodeca/js-yaml.bin.git"},"bin":{"js-yaml":"bin/js-yaml.js"},"main":"./index.js","dependencies":{"js-yaml":">= 0.3.4 < 1.0.0","commander":">= 0.5.1"},"engines":{"node":"> 0.4.11"},"_npmUser":{"name":"vitaly","email":"vitaly@rcdesign.ru"},"_id":"js-yaml.bin@0.2.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"92903413acffdf47a8c1c808ee26407a7fb723ef","tarball":"http://registry.npmjs.org/js-yaml.bin/-/js-yaml.bin-0.2.2.tgz"},"maintainers":[{"name":"vitaly","email":"vitaly@rcdesign.ru"}]}},"readme":"JS-YAML Executable\n==================\n\nThis module contains CLI tool for inspecting YAML files from CLI.\nIn order to use it, you need to install it globally:\n\n```\n$ npm install -g js-yaml.bin\n```\n\nThen you can parse and inspect your YAML files from console:\n\n```\n$ jsyaml /home/ixti/example.yml \n---------------------------------------------------------------------------\n{ jsyaml: 'rocks!' }\n...........................................................................\n```\n\n## License\n\nView the [LICENSE](https://github.com/nodeca/js-yaml.bin/blob/master/LICENSE) file (MIT).\n","maintainers":[{"name":"vitaly","email":"vitaly@rcdesign.ru"}],"time":{"modified":"2012-05-10T21:48:11.962Z","created":"2011-12-20T00:34:01.859Z","0.1.0":"2011-12-20T00:34:04.625Z","0.2.0":"2011-12-24T12:13:56.264Z","0.2.1":"2012-04-08T20:24:12.884Z","0.2.2":"2012-05-10T21:48:11.962Z"},"author":{"name":"Aleksey V Zapparov","email":"ixti@member.fsf.org","url":"http://www.ixti.net/"},"repository":{"type":"git","url":"git://github.com/nodeca/js-yaml.bin.git"},"_id":"js-yaml.bin","_rev":"1-80da5503025d1cfc632db05ce26602ab"}!ÿdocument-storeÿjquery.skeleton¢{"id":"jquery.skeleton","rev":"1-465e82f57a970a6817a7f68fe729e8e0","rev_tree":[{"pos":1,"ids":["465e82f57a970a6817a7f68fe729e8e0",{"status":"available"},[]]}],"rev_map":{"1-465e82f57a970a6817a7f68fe729e8e0":3297},"winningRev":"1-465e82f57a970a6817a7f68fe729e8e0","deleted":false,"seq":3297}ÿby-sequenceÿ0000000000003297žÄ{"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6f2e2aeccb7a4d9fdd2a10000192825047d87331","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.1.1":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.1","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3c026990135d442850e37685930dcbb5d689d865","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.1.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.1.2":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.2","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ba167c24cc2901e0aa0fb97d9dae41fe32a354af","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.2.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.1.3":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.3","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.3","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f33f3cea3b132ca4351aa856d644a3e77c5dd148","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.3.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.1.4":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.4","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.4","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6e6c843bc858cf41f7227aaa9469cfbc98da741c","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.4.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.1.5":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.1.5","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.1.5","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c3eba452b328a4f680a8fa2b9e8934683c8623a6","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.1.5.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.2.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.2.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.2.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3c15b74d702f1caeb60709ca8aa0ddfa39837d7a","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.2.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.2.1":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.2.1","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.2.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"88a2412dfea715e181bf5d305ccc32e9354abb1c","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.2.1.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.3.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.3.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.3.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a4ab9a3ff122485d7e05f945799f29153fbd7266","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.3.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"directories":{}},"0.3.1":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.3.1","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.3.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"134d71e1512ee0a56f9fc2a7cb0632ac708552dd","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.3.1.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.3.2":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.3.2","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"java -jar dist/compiler.jar src/*.js --js_output_file=dist/jquery.`pwd|sed -e 's/.*jquery\\.//'`.min.js && node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.3.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a2125a00f7c785c9b01831c005a179b9ab571e4d","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.3.2.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.4.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.4.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.4.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ca8e34e7204076c5251bd3ea2e3725d0e3c8714b","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.4.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.5.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.5.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9","adm-zip":"~0.1.4"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.5.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"77c080157cbfb78b8af528174215e4f18f7615c7","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.5.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.5.1":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.5.1","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.5.0","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9","adm-zip":"~0.1.4"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.5.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f456e71c984491ad2d1575d76c071024f588df22","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.5.1.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.6.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.6.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.6.2","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"readme":"jquery.skeleton\n===============\n\nA skeleton builder for jquery plugins. Included is BusterJS for testing and Google Closure Compiler for minification.\n\n## Getting started\n\nSo first of all you need to create a repository on Github and clone it. Respectively create a new folder.\n\n```console\n# clone the repo ...\ngit clone git://github.com/yourname/jquery.plugin-name.git\n\n# ... or download the folder\nmkdir jquery.plugin-name\n\n# ... and finally go into the folder\ncd jquery.plugin-name\n```\n\nAfterwards do this:\n\n```console\n# Initialize npm in that new folder and answer the questions.\nnpm init\n\n# Add jquery.skeleton to your package.json.\nnpm install jquery.skeleton --save\n\n# Execute the init process and let the magic happen.\nnode_modules/.bin/jquery.skeleton init\n\n# Start coding!\n```\n\n## Test driven development\nThe major goal of the skeleton is actually to program in a test driven way. So once you ran all of the previous\ncommands, you will get access to [BusterJS](http://busterjs.org/). Here is how to go on coding:\n\n```console\n# Run the BusterJS server.\nnode_modules/.bin/buster-server\n\n# Open a new bash.\n\n# Point your server to http://localhost:1111 and capture your browser.\n# Choose one of the following commands or do it just manually.\nopen http://localhost:1111/capture\nfirefox http://localhost:1111/capture\n\n# Minify the code in the src folder and run the tests:\nnpm test\n```\n\n## Update current project\nUpdate your `jquery.skeleton` to the latest version of jquery.skeleton.\n\n```console\n# Update your project:\nnode_modules/.bin/jquery.skeleton update\n```\n\n## Adding the MIT license to the project\n```console\nnode_modules/.bin/jquery.skeleton license\n```\n\n## Overview of available commands\n```console\nnode_modules/.bin/jquery.skeleton --help\n```\n\n## License\n\nHereby placed under MIT license.\n\n","_id":"jquery.skeleton@0.6.0","dist":{"shasum":"7c52dfb836c240931c033a3104289f64f6e334d1","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.6.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.7.0":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.7.0","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.6.2","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"readme":"jquery.skeleton\n===============\n\nA skeleton builder for jquery plugins. Included is BusterJS for testing and Google Closure Compiler for minification.\n\n## Getting started\n\nSo first of all you need to create a repository on Github and clone it. Respectively create a new folder.\n\n```console\n# clone the repo ...\ngit clone git://github.com/yourname/jquery.plugin-name.git\n\n# ... or download the folder\nmkdir jquery.plugin-name\n\n# ... and finally go into the folder\ncd jquery.plugin-name\n```\n\nAfterwards do this:\n\n```console\n# Initialize npm in that new folder and answer the questions.\nnpm init\n\n# Add jquery.skeleton to your package.json.\nnpm install jquery.skeleton --save\n\n# Execute the init process and let the magic happen.\nnode_modules/.bin/jquery.skeleton init\n\n# Start coding!\n```\n\n## Test driven development\nThe major goal of the skeleton is actually to program in a test driven way. So once you ran all of the previous\ncommands, you will get access to [BusterJS](http://busterjs.org/). Here is how to go on coding:\n\n```console\n# Run the BusterJS server.\nnode_modules/.bin/buster-server\n\n# Open a new bash.\n\n# Point your server to http://localhost:1111 and capture your browser.\n# Choose one of the following commands or do it just manually.\nopen http://localhost:1111/capture\nfirefox http://localhost:1111/capture\n\n# Minify the code in the src folder and run the tests:\nnpm test\n```\n\n## Update current project\nUpdate your `jquery.skeleton` to the latest version of jquery.skeleton.\n\n```console\n# Update your project:\nnode_modules/.bin/jquery.skeleton update\n```\n\n## Adding the MIT license to the project\n```console\nnode_modules/.bin/jquery.skeleton license\n```\n\n## Overview of available commands\n```console\nnode_modules/.bin/jquery.skeleton --help\n```\n\n## License\n\nHereby placed under MIT license.\n\n","_id":"jquery.skeleton@0.7.0","dist":{"shasum":"9830a95fa6588eef6b8702295fdf9044a395bd4f","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.7.0.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]},"0.7.1":{"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"name":"jquery.skeleton","description":"A skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.","version":"0.7.1","homepage":"https://github.com/dawanda/jquery.skeleton","repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"scripts":{"test":"node_modules/.bin/buster-test"},"dependencies":{"buster":"~0.6.2","commander":"~0.6.0","fs.extra":"~1.0.1","underscore":"~1.3.3","underscore.string":"~2.2.0","wrench":"~1.3.9"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"jquery.skeleton":"bin/jquery.skeleton"},"_npmUser":{"name":"sdepold","email":"sascha@depold.com"},"_id":"jquery.skeleton@0.7.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a22d53c6fb5b903aa17d8c3ef5f84f719c0714bb","tarball":"http://registry.npmjs.org/jquery.skeleton/-/jquery.skeleton-0.7.1.tgz"},"maintainers":[{"name":"sdepold","email":"sascha@depold.com"}]}},"readme":"jquery.skeleton\n===============\n\nA skeleton for a jquery plugin with BusterJS for testing and Google Closure Compiler for minification.\n\n## Getting started\n\n- Download or fork and clone the repository.\n- In case of a fork, you would probably like to rename the project on Github.\n- Make sure your project matches the naming convention of jQuery: jquery.your-project-name.\n- Adjust the package.json according to your needs.\n- `npm install`\n- `node_modules/.bin/buster-server`\n- Point your server to http://localhost:1111 and capture your browser.\n- `npm test`\n- Start coding :)\n\n## License\n\nHereby place under MIT license.\n","maintainers":[{"name":"sdepold","email":"sascha@depold.com"}],"time":{"modified":"2012-07-22T08:19:31.627Z","created":"2012-05-11T08:46:05.768Z","0.1.0":"2012-05-11T08:46:07.466Z","0.1.1":"2012-05-11T09:30:19.525Z","0.1.2":"2012-05-11T09:51:59.561Z","0.1.3":"2012-05-11T09:59:31.648Z","0.1.4":"2012-05-11T10:06:44.250Z","0.1.5":"2012-05-11T13:36:17.130Z","0.2.0":"2012-05-22T05:16:42.012Z","0.2.1":"2012-05-22T05:37:35.938Z","0.3.0":"2012-05-24T07:55:42.637Z","0.3.1":"2012-05-24T08:04:56.224Z","0.3.2":"2012-05-24T08:12:12.143Z","0.4.0":"2012-05-30T09:03:43.253Z","0.5.0":"2012-06-01T19:05:44.312Z","0.5.1":"2012-06-12T14:19:38.612Z","0.6.0":"2012-07-10T12:38:02.594Z","0.7.0":"2012-07-22T08:13:16.456Z","0.7.1":"2012-07-22T08:19:31.626Z"},"author":{"name":"Sascha Depold","email":"sascha@dawanda.com","url":"http://depold.com"},"repository":{"type":"git","url":"git://github.com/dawanda/jquery.skeleton.git"},"_id":"jquery.skeleton","_rev":"1-465e82f57a970a6817a7f68fe729e8e0"}ÿdocument-storeÿjni–{"id":"jni","rev":"1-1f896d2a32786cc1e2db5ce33bf36604","rev_tree":[{"pos":1,"ids":["1f896d2a32786cc1e2db5ce33bf36604",{"status":"available"},[]]}],"rev_map":{"1-1f896d2a32786cc1e2db5ce33bf36604":3296},"winningRev":"1-1f896d2a32786cc1e2db5ce33bf36604","deleted":false,"seq":3296}ÿby-sequenceÿ0000000000003296ú {"name":"jni","description":"the jni bridge for node to use java class","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"sunfang","email":"kate.sf@taobao.com"},"name":"jni","description":"the jni bridge for node to use java class","version":"0.0.1","homepage":"https://github.com/sunfang1cn/node-jni","repository":{"type":"git","url":"git://github.com/sunfang1cn/node-jni.git"},"main":"index.js","engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"sunfang1cn","email":"kate.sf@taobao.com"},"_id":"jni@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a7e087b494db02433c2795ff9558b8b91b7e2ab5","tarball":"http://registry.npmjs.org/jni/-/jni-0.0.1.tgz"},"readme":"","maintainers":[{"name":"sunfang1cn","email":"kate.sf@taobao.com"}]}},"readme":"","maintainers":[{"name":"sunfang1cn","email":"kate.sf@taobao.com"}],"time":{"modified":"2012-07-10T03:06:22.563Z","created":"2012-07-10T03:06:16.168Z","0.0.1":"2012-07-10T03:06:22.563Z"},"author":{"name":"sunfang","email":"kate.sf@taobao.com"},"repository":{"type":"git","url":"git://github.com/sunfang1cn/node-jni.git"},"_id":"jni","_rev":"1-1f896d2a32786cc1e2db5ce33bf36604"}ÿdocument-storeÿis-helpers{"id":"is-helpers","rev":"1-c032672c8c1138df322e420006cc3df0","rev_tree":[{"pos":1,"ids":["c032672c8c1138df322e420006cc3df0",{"status":"available"},[]]}],"rev_map":{"1-c032672c8c1138df322e420006cc3df0":3295},"winningRev":"1-c032672c8c1138df322e420006cc3df0","deleted":false,"seq":3295}ÿby-sequenceÿ0000000000003295‚3{"name":"is-helpers","description":"'Is' is a very small module that smoothes over some of the gotchas in JavaScript type checking. It behaves the way you (or rather, I) would expect type checking to work -- e.g., is.object() only works on objects that are neither arrays nor regular expressions. It also makes indexOf() easier to use, and provides search functions. Works in Node; should work in browser as well, exporting a variable 'is' into the global namespace.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Paul d'Aoust","email":"paul@heliosstudio.ca","url":"http://heliosstudio.ca/"},"name":"is-helpers","description":"'Is' is a very small module that smoothes over some of the gotchas in JavaScript type checking. It behaves the way you (or rather, I) would expect type checking to work -- e.g., is.object() only works on objects that are neither arrays nor regular expressions. It also makes indexOf() easier to use.","version":"0.0.0","main":"is.js","scripts":{"test":"jasmine-node tests/is.spec.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"pdaoust","email":"paul@heliosstudio.ca"},"_id":"is-helpers@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e96824db56579cc34bf64fefd813d27720c97f85","tarball":"http://registry.npmjs.org/is-helpers/-/is-helpers-0.0.0.tgz"},"readme":"","maintainers":[{"name":"pdaoust","email":"paul@heliosstudio.ca"}]},"0.0.1":{"author":{"name":"Paul d'Aoust","email":"paul@heliosstudio.ca","url":"http://heliosstudio.ca/"},"name":"is-helpers","description":"'Is' is a very small module that smoothes over some of the gotchas in JavaScript type checking. It behaves the way you (or rather, I) would expect type checking to work -- e.g., is.object() only works on objects that are neither arrays nor regular expressions. It also makes indexOf() easier to use, and provides search functions. Works in Node; should work in browser as well, exporting a variable 'is' into the global namespace.","version":"0.0.1","main":"is.js","scripts":{"test":"jasmine-node tests/is.spec.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"pdaoust","email":"paul@heliosstudio.ca"},"_id":"is-helpers@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7d03a74e953de2e4ffa60cc3c8bdbff922480f18","tarball":"http://registry.npmjs.org/is-helpers/-/is-helpers-0.0.1.tgz"},"readme":"# is-helpers\n`is-helpers` is a very small CommonJS module that smoothes over some of the gotchas in JavaScript type checking. It behaves the way you (or rather, I) would expect type checking to work -- e.g., `is.object()` only works on objects that are neither arrays nor regular expressions. It also makes `indexOf()` easier to use, and provides search functions. Works in Node; should work in browser as well, exporting a variable `is` into the global namespace.\n\nNone of these techniques are earth-shattering; most people will use these in their daily work. I just didn't want to have to remember all of these tW¬Ëùricks.\n\nTest coverage is as thorough as my imagination allows. I used Jasmine for unit testing.\n\n## API\n\n### Type checking\n\nAll checking is strict, unless otherwise noted. Each function returns either true or false.\n\n* `is.undefined( value )`\n* `is.null( value )`\n* `is.empty( value )` - checks for null or undefined\n* `is.empty.array( value )` or `is.emptyArray( value )` - must be an array-like object and have no items\n* `is.empty.arguments( value )` or `is.emptyArguments( value )` - identical to above\n* `is.empty.object( value )` - must be an object and have no properties of its own; objects with properties in their prototype chains will also fail\n* `is.null( value )`\n* `is.boolean( value )`\n* `is.nan( value )` - really not necessary, since it merely calls `isNan()`. But I just included it to be thorough.\n* `is.infinite( value )` - opposite of `isFinite()`. I didn't include an `isFinite()` function because `is.number()` performs this check.\n* `is.number( value )` - includes all the sensible numbers (e.g., not `NaN` or `Infinity`).\n* `is.integer( value )` - we all know JavaScript doesn't have integers or floats, so this fills half that gap.\n* `is.float( value )` - and this fills the other half of the gap.\n* `is.string( value )`\n* `is.object( value )` - anything considered to be an object, except `null`, regular expressions, arrays, or array-like objects. Functions are considered objects, of course.\n* `is.array( value )` - any good old honest 'true' array.\n* `is.arrayLike( value )` - arrays and array-like objects.\n* `is.arguments( value )` - the `arguments` array-like object.\n* `is.function( value )`\n* `is.regexp( value )`\n* `is.in( needle [, haystack] )` - takes a needle and performs a strict search on the haystack. If the haystack is not supplied, `this` is assumed as the haystack. The haystack can be an object, array-like object, or string. In case of objects, only the self-owned, direct descendants are searched.\n* `is.in.array( needle [, haystack] )` or `is.inArray( needle [, haystack] )` - works on array-like objects only.\n* `is.in.object( needle [, haystack] )` or `is.inObject( needle [, haystack] )` - works only on haystacks that pass the `is.object()` test.\n* `is.in.string( needle [, haystack] )` or `is.inString( needle [, haystack] )` - string search; converts non-strings to strings.\n* `is.ownProperty( property [, object] )` - calls `Object.prototype.hasOwnProperty()` on the object. If the object is not supplied, `this` is assumed.\n\n## The other `is`\n\nNote: This is not the same as the `is` by Enrico Marino, which is another interesting JavaScript type checking library. He uses some neat techniques, and also adds functions for comparison (e.g., `is.gt()`, `is.odd()`, `is.divisibleBy()`) which I had no interest in. You can find his library at https://github.com/onirame/is\n","maintainers":[{"name":"pdaoust","email":"paul@heliosstudio.ca"}]}},"readme":"","maintainers":[{"name":"pdaoust","email":"paul@heliosstudio.ca"}],"time":{"modified":"2012-06-05T00:03:36.782Z","created":"2012-06-04T23:23:06.333Z","0.0.0":"2012-06-04T23:23:07.891Z","0.0.1":"2012-06-05T00:03:36.782Z"},"author":{"name":"Paul d'Aoust","email":"paul@heliosstudio.ca","url":"http://heliosstudio.ca/"},"_id":"is-helpers","_rev":"1-c032672c8c1138df322e420006cc3df0"}ÿdocument-storeÿipevents›{"id":"ipevents","rev":"1-6839dc5497796c3cbb0a1ff86f578d06","rev_tree":[{"pos":1,"ids":["6839dc5497796c3cbb0a1ff86f578d06",{"status":"available"},[]]}],"rev_map":{"1-6839dc5497796c3cbb0a1ff86f578d06":3294},"winningRev":"1-6839dc5497796c3cbb0a1ff86f578d06","deleted":false,"seq":3294}ÿby-sequenceÿ0000000000003294Ó:{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.0":{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","version":"0.0.0","author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"contributors":[],"main":"./ipevents.js","directories":{},"engines":{"node":">= 0.6.0"},"dependencies":{"lazy":"1.0.x"},"devDependencies":{},"scripts":{},"_npmUser":{"name":"pureppl","email":"pureppl@gmail.com"},"_id":"ipevents@0.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f65f8e22f45a0af9467b820459235acad80f61d9","tarball":"http://registry.npmjs.org/ipevents/-/ipevents-0.0.0.tgz"},"maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}]},"0.1.0":{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","version":"0.1.0","author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"keywords":["ipc","events","process"],"main":"./ipevents.js","engines":{"node":">= 0.6.0"},"dependencies":{"lazy":"1.0.x"},"_npmUser":{"name":"pureppl","email":"pureppl@gmail.com"},"_id":"ipevents@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"872ca66e71257417b1f1958d2b2238d1f01cd993","tarball":"http://registry.npmjs.org/ipevents/-/ipevents-0.1.0.tgz"},"maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}]},"0.1.1":{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","version":"0.1.1","author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"keywords":["ipc","events","process"],"main":"./ipevents.js","engines":{"node":">= 0.6.0"},"dependencies":{"lazy":"1.0.x"},"_npmUser":{"name":"pureppl","email":"pureppl@gmail.com"},"_id":"ipevents@0.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"da7459529873859548db09ee7ae27869cf9a4f05","tarball":"http://registry.npmjs.org/ipevents/-/ipevents-0.1.1.tgz"},"maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}]},"0.1.2":{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","version":"0.1.2","author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"keywords":["ipc","events","process"],"main":"./ipevents.js","engines":{"node":">= 0.6.0"},"dependencies":{"lazy":"1.0.x"},"_npmUser":{"name":"pureppl","email":"pureppl@gmail.com"},"_id":"ipevents@0.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a9546123add494a75a7b4fc1e5ea04deede9fb82","tarball":"http://registry.npmjs.org/ipevents/-/ipevents-0.1.2.tgz"},"maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}]},"0.1.3":{"name":"ipevents","description":"Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets","version":"0.1.3","author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"keywords":["ipc","events","process"],"main":"./ipevents.js","engines":{"node":">= 0.6.0"},"dependencies":{"lazy":"1.0.x"},"_npmUser":{"name":"pureppl","email":"pureppl@gmail.com"},"_id":"ipevents@0.1.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"1786e31b1fcc196686848e985635634ec9aa64a8","tarball":"http://registry.npmjs.org/ipevents/-/ipevents-0.1.3.tgz"},"maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}]}},"readme":"\nInter-process EventEmitter\n==========================\n\n### Inter-process EventEmitter over process.send and TCP/IP or UNIX Domain Sockets for node.js\n\nAnatomy of a message\n--------------------\n\n```js\n{\n pid: Number,String // The origin (pid) of the message.\n pids: Array // An array of each pid the message passed.\n to: Number,String // Target of the message. (.push())\n route: Array // An array of process-pids representing\n // the route the message should take. (.push())\n type: Number // Type of the message (eg event, push, broadcast).\n}\n```\n\nClass: IpEventEmitter\n---------------------\n\nInherits from ``events.EventEmitter``\n\n### Events\n\n``ready`` \nEmitted when the instance of IpEventEmitter is ready.\nThis event is exclusive to the process.\n\n``online`` \nEmitted to signal other processes that a new process connected.\n\n### Properties\n\n``.pid`` \nThe identifier of a process.\n\n``.isMaster`` \n\n\n``.isWorker`` \n\n``.childsOnline`` \n\n``.childs`` \n\n### Methods\n\n``.emit(eventName, arg1, arg2, ...)`` \nEmits an event and sends it up to the parent-process.\n\n``.push(pids, eventName, arg1, arg2, ...)`` \nPushes an event down to a specific child-process.\nOnce reached there, .push() emits the event.\n\n``.broadcast(eventName, arg1, arg2, ...)`` \nSends an event to all child-processes listening to the event\n\n``.fork(path, arguments)`` \nForks a new node child-process.\n\n``.worker()`` \nForks a new child-process via the core cluster-module.\n\nMIT License\n-----------\n\nCopyright (c) 2012 Oliver Leics \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"pureppl","email":"pureppl@gmail.com"}],"time":{"modified":"2012-05-09T11:21:40.832Z","created":"2012-05-03T11:10:04.958Z","0.0.0":"2012-05-03T11:10:06.458Z","0.1.0":"2012-05-06T19:37:54.061Z","0.1.1":"2012-05-07T19:47:50.541Z","0.1.2":"2012-05-09T10:29:31.769Z","0.1.3":"2012-05-09T11:21:40.832Z"},"author":{"name":"Oliver Leics","email":"oliver.leics@gmail.com"},"repository":{"type":"git","url":"git://github.com/oleics/node-ipevents.git"},"_id":"ipevents","_rev":"1-6839dc5497796c3cbb0a1ff86f578d06"}!ÿdocument-storeÿinceptionscript¢{"id":"inceptionscript","rev":"1-d4bee05098762cc391db46bda2f782fa","rev_tree":[{"pos":1,"ids":["d4bee05098762cc391db46bda2f782fa",{"status":"available"},[]]}],"rev_map":{"1-d4bee05098762cc391db46bda2f782fa":3293},"winningRev":"1-d4bee05098762cc391db46bda2f782fa","deleted":false,"seq":3293}ÿby-sequenceÿ0000000000003293Ú{"name":"inceptionscript","description":"JS macros written with JS","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"name":"inceptionscript","version":"0.0.0","description":"JS macros written with JS","main":"lib","directories":{"example":"examples"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"incept":"bin/incept"},"repository":{"type":"git","url":"git://github.com/jussi-kalliokoski/inceptionscript"},"keywords":["macros","build","tools"],"author":{"name":"Jussi Kalliokoski"},"license":"MIT","_id":"inceptionscript@0.0.0","dist":{"shasum":"622ec56ae5719bcbd314acf44071abedac8c7022","tarball":"http://registry.npmjs.org/inceptionscript/-/inceptionscript-0.0.0.tgz"},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}]},"0.0.1":{"name":"inceptionscript","version":"0.0.1","description":"JS macros written with JS","main":"lib","directories":{"example":"examples"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"incept":"bin/incept"},"repository":{"type":"git","url":"git://github.com/jussi-kalliokoski/inceptionscript"},"keywords":["macros","build","tools"],"author":{"name":"Jussi Kalliokoski"},"license":"MIT","_id":"inceptionscript@0.0.1","dist":{"shasum":"907b83b8ef2be794745eaa3d60b71a057a25d75c","tarball":"http://registry.npmjs.org/inceptionscript/-/inceptionscript-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}]},"0.0.2":{"name":"inceptionscript","version":"0.0.2","description":"JS macros written with JS","main":"lib","directories":{"example":"examples"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"incept":"bin/incept"},"repository":{"type":"git","url":"git://github.com/jussi-kalliokoski/inceptionscript"},"keywords":["macros","build","tools"],"author":{"name":"Jussi Kalliokoski"},"license":"MIT","_id":"inceptionscript@0.0.2","dist":{"shasum":"533e338851ebd7530c7ac879d7543558c3bd181f","tarball":"http://registry.npmjs.org/inceptionscript/-/inceptionscript-0.0.2.tgz"},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}]}},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}],"time":{"modified":"2012-08-22T09:59:42.398Z","created":"2012-07-19T10:20:15.112Z","0.0.0":"2012-07-19T10:20:16.986Z","0.0.1":"2012-08-03T22:36:48.869Z","0.0.2":"2012-08-22T09:59:42.398Z"},"author":{"name":"Jussi Kalliokoski"},"repository":{"type":"git","url":"git://github.com/jussi-kalliokoski/inceptionscript"},"_id":"inceptionscript","_rev":"1-d4bee05098762cc391db46bda2f782fa"}%ÿdocument-storeÿimageviewurlreplace¦{"id":"imageviewurlreplace","rev":"1-30f56ae8c1819dd193ed8fb3d127ac13","rev_tree":[{"pos":1,"ids":["30f56ae8c1819dd193ed8fb3d127ac13",{"status":"available"},[]]}],"rev_map":{"1-30f56ae8c1819dd193ed8fb3d127ac13":3292},"winningRev":"1-30f56ae8c1819dd193ed8fb3d127ac13","deleted":false,"seq":3292}ÿby-sequenceÿ0000000000003292é{"name":"imageviewurlreplace","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"},"name":"imageviewurlreplace","version":"0.0.1","repository":{"type":"git","url":"git://github.com/superbrothers/node-imageviewurlreplace.git"},"scripts":{"test":"nodeunit test"},"dependencies":{"request":">=2.9.153"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"main":"ImageViewURLReplace","_npmUser":{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"},"_id":"imageviewurlreplace@0.0.1","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"4d8de6e4b5f61cd2323c5ed7f7b7fa37e201d8d8","tarball":"http://registry.npmjs.org/imageviewurlreplace/-/imageviewurlreplace-0.0.1.tgz"},"maintainers":[{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"}]},"0.0.2":{"author":{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"},"name":"imageviewurlreplace","version":"0.0.2","repository":{"type":"git","url":"git://github.com/superbrothers/node-imageviewurlreplace.git"},"scripts":{"test":"nodeunit test"},"dependencies":{"request":">=2.9.153"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"main":"index","_npmUser":{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"},"_id":"imageviewurlreplace@0.0.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0bb43b1f9f54d2eb99d202b16a70646b6e1e90b4","tarball":"http://registry.npmjs.org/imageviewurlreplace/-/imageviewurlreplace-0.0.2.tgz"},"maintainers":[{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"}]}},"readme":"# node-imageviewurlreplace\n\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Kazuki Suda <kazuki.suda@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"}],"time":{"modified":"2012-06-04T14:19:55.664Z","created":"2012-05-17T13:29:29.089Z","0.0.1":"2012-05-17T13:29:31.535Z","0.0.2":"2012-06-04T14:19:55.664Z"},"author":{"name":"Kazuki Suda","email":"kazuki.suda@gmail.com"},"repository":{"type":"git","url":"git://github.com/superbrothers/node-imageviewurlreplace.git"},"_id":"imageviewurlreplace","_rev":"1-30f56ae8c1819dd193ed8fb3d127ac13"}ÿdocument-storeÿimagesnapœ{"id":"imagesnap","rev":"1-416abe6215854d2c21ef452d687ec59f","rev_tree":[{"pos":1,"ids":["416abe6215854d2c21ef452d687ec59f",{"status":"available"},[]]}],"rev_map":{"1-416abe6215854d2c21ef452d687ec59f":3291},"winningRev":"1-416abe6215854d2c21ef452d687ec59f","deleted":false,"seq":3291}ÿby-sequenceÿ0000000000003291“ {"name":"imagesnap","description":"Capture Images from webcam with nodejs","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Julian Gautier","email":"julian.gautier@alumni.neumont.edu"},"name":"imagesnap","description":"Capture Images from webcam with nodejs","version":"0.0.0","repository":{"type":"git","url":"git://github.com/jgautier/imagesnap.js.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jgautier","email":"julian.gautier@alumni.neumont.edu"},"_id":"imagesnap@0.0.0","_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fc039cf3c5d09a6fa46782fcafb68e5a4a75bc5c","tarball":"http://registry.npmjs.org/imagesnap/-/imagesnap-0.0.0.tgz"},"maintainers":[{"name":"jgautier","email":"julian.gautier@alumni.neumont.edu"}]}},"readme":"# image snap\nCaptures Image from iSight camera using nodejs.\n# example\n\tvar imagesnap = require('imagesnap');\n\tvar fs = require('fs');\n\tvar imageStream = fs.createWriteStream('capture.jpg');\n\timagesnap().pipe(imageStream);\n","maintainers":[{"name":"jgautier","email":"julian.gautier@alumni.neumont.edu"}],"time":{"modified":"2012-06-04T23:04:10.049Z","created":"2012-06-04T23:04:08.298Z","0.0.0":"2012-06-04T23:04:10.049Z"},"author":{"name":"Julian Gautier","email":"julian.gautier@alumni.neumont.edu"},"repository":{"type":"git","url":"git://github.com/jgautier/imagesnap.js.git"},"_id":"imagesnap","_rev":"1-416abe6215854d2c21ef452d687ec59f"}#ÿdocument-storeÿimagemagick-cache¤{"id":"imagemagick-cache","rev":"1-1c66029adfdd6a1b0eb9b742204fa66b","rev_tree":[{"pos":1,"ids":["1c66029adfdd6a1b0eb9b742204fa66b",{"status":"available"},[]]}],"rev_map":{"1-1c66029adfdd6a1b0eb9b742204fa66b":3290},"winningRev":"1-1c66029adfdd6a1b0eb9b742204fa66b","deleted":false,"seq":3290}ÿby-sequenceÿ0000000000003290ú {"name":"imagemagick-cache","description":"ImageMagick Convert Server and Cache the files.","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.6":{"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"name":"imagemagick-cache","description":"ImageMagick Convert Server and Cache the files.","version":"0.0.6","repository":{"url":"https://github.com/yuitest/node-imagemagick-cache.git"},"main":"./index.js","dependencies":{"imagemagick":">= 0.1.2","queue-service":">= 0.0.2"},"_npmUser":{"name":"yuitest","email":"yuitest@cjhat.net"},"_id":"imagemagick-cache@0.0.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1f8787eef5c79631d0ee9de08248064f9a28b21b","tarball":"http://registry.npmjs.org/imagemagick-cache/-/imagemagick-cache-0.0.6.tgz"},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}]}},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}],"time":{"modified":"2012-03-21T15:20:09.967Z","created":"2012-03-21T15:20:07.000Z","0.0.6":"2012-03-21T15:20:09.967Z"},"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"repository":{"url":"https://github.com/yuitest/node-imagemagick-cache.git"},"_id":"imagemagick-cache","_rev":"1-1c66029adfdd6a1b0eb9b742204fa66b"}ÿdocument-storeÿhulu-nodeœ{"id":"hulu-node","rev":"1-7c9625d50432a75505264179f02d6468","rev_tree":[{"pos":1,"ids":["7c9625d50432a75505264179f02d6468",{"status":"available"},[]]}],"rev_map":{"1-7c9625d50432a75505264179f02d6468":3289},"winningRev":"1-7c9625d50432a75505264179f02d6468","deleted":false,"seq":3289}ÿby-sequenceÿ0000000000003289û{"name":"hulu-node","description":"A wrapper to query the hulu search API","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"author":{"name":"Connor Montgomery","email":"c@cnnr.me","url":"http://cnnr.me"},"name":"hulu-node","description":"A wrapper to query the hulu search API","version":"0.1.0","dependencies":{"request":"*","xml2json":"*"},"devDependencies":{},"optionalDependencies":{},"main":"lib/hulu","engines":{"node":"*"},"_npmUser":{"name":"connor","email":"c@cnnr.me"},"_id":"hulu-node@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"dc0d24ee8945c66d69be35854dc5f77750739361","tarball":"http://registry.npmjs.org/hulu-node/-/hulu-node-0.1.0.tgz"},"readme":"","maintainers":[{"name":"connor","email":"c@cnnr.me"}],"directories":{}},"1.0.0":{"author":{"name":"Connor Montgomery","email":"c@cnnr.me","url":"http://cnnr.me"},"name":"hulu-node","description":"A wrapper to query the hulu search API","version":"1.0.0","keywords":["hulu","movies"],"repository":{"type":"git","url":"git://github.com/connor/hulu-node.git"},"dependencies":{"request":"*","xml2json":"*"},"devDependencies":{},"optionalDependencies":{},"main":"lib/hulu","engines":{"node":"*"},"_npmUser":{"name":"connor","email":"c@cnnr.me"},"_id":"hulu-node@1.0.0","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"5d394f5dd1b42368ebec93adde174aed003e5e85","tarball":"http://registry.npmjs.org/hulu-node/-/hulu-node-1.0.0.tgz"},"readme":"hulu-node\n=========\n\nA node.js wrapper for the Hulu search API\n\n## How to use it\n\n```js\n\nvar hulu = require(\"hulu-node\");\n\nhulu.search(\"Saturday Night Live\", function(response) {\n\n // do whatever you want with the response.\n // the response is in JSON\n\n});\n\n```\n","maintainers":[{"name":"connor","email":"c@cnnr.me"}],"directories":{}},"1.0.1":{"author":{"name":"Connor Montgomery","email":"c@cnnr.me","url":"http://cnnr.me"},"name":"hulu-node","description":"A wrapper to query the hulu search API","version":"1.0.1","keywords":["hulu","movies"],"repository":{"type":"git","url":"git://github.com/connor/hulu-node.git"},"dependencies":{"request":"*","xml2json":"*"},"devDependencies":{},"optionalDependencies":{},"main":"lib/hulu","engines":{"node":"*"},"_npmUser":{"name":"connor","email":"c@cnnr.me"},"_id":"hulu-node@1.0.1","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"fb4dcd48bd1f67f920363fb0fa2171c428ea791d","tarball":"http://registry.npmjs.org/hulu-node/-/hulu-node-1.0.1.tgz"},"readme":"hulu-node\n=========\n\nA node.js wrapper for the Hulu search API\n\n## How to use it\n\n```js\n\nvar hulu = require(\"hulu-node\");\n\nhulu.search(\"Saturday Night Live\", function(response) {\n\n // do whatever you want with the response.\n // the response is in JSON\n\n});\n\n```\n","maintainers":[{"name":"connor","email":"c@cnnr.me"}]}},"readme":"","maintainers":[{"name":"connor","email":"c@cnnr.me"}],"time":{"modified":"2012-06-23T20:38:11.699Z","created":"2012-05-06T17:23:29.346Z","0.1.0":"2012-05-06T17:23:30.583Z","1.0.0":"2012-06-23T18:28:37.718Z","1.0.1":"2012-06-23T20:38:11.699Z"},"author":{"name":"Connor Montgomery","email":"c@cnnr.me","url":"http://cnnr.me"},"repository":{"type":"git","url":"git://github.com/connor/hulu-node.git"},"_id":"hulu-node","_rev":"1-7c9625d50432a75505264179f02d6468"}!ÿdocument-storeÿhubot-twilio-nc¢{"id":"hubot-twilio-nc","rev":"1-17e4245238c72849b217d20cb07537fe","rev_tree":[{"pos":1,"ids":["17e4245238c72849b217d20cb07537fe",{"status":"available"},[]]}],"rev_map":{"1-17e4245238c72849b217d20cb07537fe":3288},"winningRev":"1-17e4245238c72849b217d20cb07537fe","deleted":false,"seq":3288}ÿby-sequenceÿ0000000000003288ªZ{"name":"hubot-twilio-nc","description":"A fork of the original Twilio adapter for hubot","dist-tags":{"latest":"2.1.0"},"versions":{"2.0.1":{"name":"hubot-twilio-nc","version":"2.0.1","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.1","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"89c7d82fa84b7d4a018b69402b7a7286e950597d","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.1.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.2":{"name":"hubot-twilio-nc","version":"2.0.2","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.2","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"8ec53aff91152218b8df4bef8db5ff00de12ac92","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.2.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.3":{"name":"hubot-twilio-nc","version":"2.0.3","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.3","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"17560b7b90ddff7ae04224c0807e11f6d7509586","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.3.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.4":{"name":"hubot-twilio-nc","version":"2.0.4","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.4","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"0c43f2fa4c8dfcda37f34fe750e4356539a41736","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.4.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.5":{"name":"hubot-twilio-nc","version":"2.0.5","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.5","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"02b22143583098b957c97e3b03c391297012e00f","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.5.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.6":{"name":"hubot-twilio-nc","version":"2.0.6","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.6","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"0ca8a157f89ab884e3f28c82dbcabc6ac0d01886","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.6.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.7":{"name":"hubot-twilio-nc","version":"2.0.7","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.7","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"58c91cb68f1b8817e7d2407492e28e9e420369dd","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.7.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.8":{"name":"hubot-twilio-nc","version":"2.0.8","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.8","dependencies":{},"engines":{9ññ‘ù"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"1bc7068017469ecdc6f2a979e05d463f869fe940","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.8.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.0.9":{"name":"hubot-twilio-nc","version":"2.0.9","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.0.9","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"0d4dd2602deb307d86195d71d19c3ac2436b6f9e","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.0.9.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]},"2.1.0":{"name":"hubot-twilio-nc","version":"2.1.0","author":{"name":"Neil Cauldwell"},"keywords":["github hubot twilio forked adapter"],"description":"A fork of the original Twilio adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/neilcauldwell/hubot-twilio/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/twilio","_npmUser":{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"},"_id":"hubot-twilio-nc@2.1.0","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"81d61d24b8cb685d2481beb276dc62dafbfd6bb7","tarball":"http://registry.npmjs.org/hubot-twilio-nc/-/hubot-twilio-nc-2.1.0.tgz"},"maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}]}},"readme":"# Hubot Twilio Adapter\n\n## Description\n\nThis is the [Twilio](http://twilio.com) adapter for hubot that allows you to\nsend an SMS to your Hubot and he will send an SMS back with the response.\n\n## Installation\n\n* Add `hubot-twilio` as a dependency in your hubot's `package.json`\n* Install dependencies with `npm install`\n* Run hubot with `bin/hubot -a twilio`\n\n### Note if running on Heroku\n\nYou will need to change the process type from `app` to `web` in the `Procfile`.\n\n## Usage\n\nYou will need to set some environment variables to use this adapter.\n\n### Heroku\n\n % heroku config:add HUBOT_SMS_FROM=\"+14156662671\"\n\n % heroku config:add HUBOT_SMS_SID=\"AC5d10e5624da757326d12f8d31c08c20b\"\n\n % heroku config:add HUBOT_SMS_TOKEN=\"4ada63e18146a204e468fb6289030231\"\n\n### Non-Heroku environment variables\n\n % export HUBOT_SMS_FROM=\"+14156662671\"\n\n % export HUBOT_SMS_SID=\"AC5d10e5624da757326d12f8d31c08c20b\"\n\n % export HUBOT_SMS_TOKEN=\"4ada63e18146a204e468fb6289030231\"\n\nThen you will need to set the HTTP endpoint on Twilio to point to your server\nand make sure the request type is set to `GET`.\n\n## Contribute\n\nHere's the most direct way to get your work merged into the project.\n\n1. Fork the project\n2. Clone down your fork\n3. Create a feature branch\n4. Hack away and add tests, not necessarily in that order\n5. Make sure everything still passes by running tests\n6. If necessary, rebase your commits into logical chunks without errors\n7. Push the branch up to your fork\n8. Send a pull request for your branch\n\n## Copyright\n\nCopyright © Tom Bell. See LICENSE for details.\n\n","maintainers":[{"name":"neilcauldwell","email":"neilcauldwell@gmail.com"}],"time":{"modified":"2012-03-21T15:52:52.659Z","created":"2012-01-13T16:23:30.674Z","2.0.1":"2012-01-13T16:23:32.389Z","2.0.2":"2012-02-02T17:09:22.068Z","2.0.3":"2012-02-02T17:19:07.761Z","2.0.4":"2012-02-02T17:23:24.567Z","2.0.5":"2012-02-02T17:28:14.241Z","2.0.6":"2012-02-02T17:54:24.535Z","2.0.7":"2012-03-21T15:00:24.892Z","2.0.8":"2012-03-21T15:13:32.742Z","2.0.9":"2012-03-21T15:37:17.672Z","2.1.0":"2012-03-21T15:52:52.659Z"},"author":{"name":"Neil Cauldwell"},"repository":{"type":"git","url":"git://github.com/neilcauldwell/hubot-twilio.git"},"_id":"hubot-twilio-nc","_rev":"1-17e4245238c72849b217d20cb07537fe"} ÿdocument-storeÿhubot-protonet¡{"id":"hubot-protonet","rev":"1-9af635a2a14620269bde093b5bd87179","rev_tree":[{"pos":1,"ids":["9af635a2a14620269bde093b5bd87179",{"status":"available"},[]]}],"rev_map":{"1-9af635a2a14620269bde093b5bd87179":3287},"winningRev":"1-9af635a2a14620269bde093b5bd87179","deleted":false,"seq":3287}ÿby-sequenceÿ0000000000003287½W{"name":"hubot-protonet","description":"protonet adapter for hubot","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.0.1","dependencies":{"hubot":">=2.0.5","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a5919ba19383b5debf77ef6d747249a351be33f8","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.0.1.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.0":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.0","dependencies":{"hubot":">=2.0.5","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"9abc2608eb7c61cca6f44c08fa31939d5c57cb14","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.0.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.1":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.1","dependencies":{"hubot":">=2.0.5","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"3e72b8edc4fdbd787599b48e8173138487ec3e57","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.1.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.2":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.2","dependencies":{"hubot":">=2.2.2","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0c1ff31e87b2d825626687f79482dbeaee0350a1","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.2.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.3":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.3","dependencies":{"hubot":">=2.2.2","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.3","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"d49aeb699dcb2eb1cdd2bff8a0c61e57400b6e0b","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.3.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.4":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.4","dependencies":{"hubot":">=2.0.2","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.4","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"dcc3a3ec59c0d73674f1931a512366a83bd3877f","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.4.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.5":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.5","dependencies":{"hubot":">=2.2.2","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.5","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"68f782310c05c05572c9d8465683ac65f9e7f8f3","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.5.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.6":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.6","dependencies":{"hubot":">=2.2.1","qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.6","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"40c29a27a7ae8821257d02129f42232fbc63b670","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.6.tgz"},"_from":"node_modules/hubot-protonet/","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.7":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.7","dependencies":{"qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.7","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a342b9b0e5414579af5f9b396e470996a78b7146","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.7.tgz"},"_from":"hubot-protonet","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.8":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.8","dependencies":{"qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.8","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"887ab34aa121a7db82ac2b5e2c8cdd475a183e14","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.8.tgz"},"_from":"hubot-protonet@>=0.9.7","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"0.9.9":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"0.9.9","dependencies":{"qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@0.9.9","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6cafdcdf79aeb3e5a324019f8a64eea537cbd638","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-0.9.9.tgz"},"_from":"hubot-protonet@>=0.9.7","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"1.0.0":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"1.0.0","dependencies":{"qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@1.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"1e961771021281bff98ea3e19fa606c232d067f9","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-1.0.0.tgz"},"_from":"hubot-protonet@>=0.9.7","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]},"1.0.1":{"name":"hubot-protonet","author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"description":"protonet adapter for hubot","version":"1.0.1","dependencies":{"qs":">=0.5.0"},"devDependencies":{"coffee-script":"1.1.3"},"optionalDependencies":{},"main":"./src/protonet","engines":{"node":"*"},"_id":"hubot-protonet@1.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"54429cd2917bc380347361e782d7619ef69a2d53","tarball":"http://registry.npmjs.org/hubot-protonet/-/hubot-protonet-1.0.1.tgz"},"_from":"hubot-protonet@>=0.9.7","_npmUser":{"name":"DarkSwoop","email":"benny@digitalbehr.de"},"maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}]}},"readme":"Getting Started\n===============\nYou will also need to edit the package.json for your hubot and add the hubot-protonet adapter dependency.\n\n\"dependencies\": {\n \"hubot-protonet\": \">= 0.9.0\",\n \"hubot\": \">= 2.0.0\",\n ...\n}\nThen save the file, and commit the changes to your hubot's git repository.\n\nConfiguring the Adapter\n=======================\nThe Protonet adapter requires only the following environment variables.\n\nHUBOT_PROTONET_HOST\nHUBOT_PROTONET_USER\nHUBOT_PROTONET_PASSWORD\nHUBOT_PROTONET_PORT\nHUBOT_PROTONET_VERSION\n\n","maintainers":[{"name":"DarkSwoop","email":"benny@digitalbehr.de"}],"time":{"modified":"2012-06-18T05:19:55.509Z","created":"2012-06-16T19:09:03.486Z","0.0.1":"2012-06-16T19:09:05.085Z","0.9.0":"2012-06-16T19:10:12.461Z","0.9.1":"2012-06-16T19:15:39.750Z","0.9.2":"2012-06-16T19:34:59.680Z","0.9.3":"2012-06-16T19:38:50.256Z","0.9.4":"2012-06-16T19:49:35.699Z","0.9.5":"2012-06-16T20:23:57.515Z","0.9.6":"2012-06-16T20:25:44.241Z","0.9.7":"2012-06-17T09:14:51.191Z","0.9.8":"2012-06-17T09:27:41.261Z","0.9.9":"2012-06-17T10:30:50.837Z","1.0.0":"2012-06-17T10:57:19.898Z","1.0.1":"2012-06-18T05:19:55.509Z"},"author":{"name":"Benjamin Behr","email":"benny@digitalbehr.de"},"_id":"hubot-protonet","_rev":"1-9af635a2a14620269bde093b5bd87179"}%ÿdocument-storeÿhubot-kandan-heroku¦{"id":"hubot-kandan-heroku","rev":"1-c9bf6f3bbbeba288732e0aebfed9c773","rev_tree":[{"pos":1,"ids":["c9bf6f3bbbeba288732e0aebfed9c773",{"status":"available"},[]]}],"rev_map":{"1-c9bf6f3bbbeba288732e0aebfed9c773":3286},"winningRev":"1-c9bf6f3bbbeba288732e0aebfed9c773","deleted":false,"seq":3286}ÿby-sequenceÿ0000000000003286´{"name":"hubot-kandan-heroku","description":"A small deployable package for running a Kandan-specific Hubot on Heroku","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.9":{"name":"hubot-kandan-heroku","version":"0.0.9","author":{"name":"Sean Grove"},"keywords":["github hubot campfire bot kandan cloudfuji heroku"],"description":"A small deployable package for running a Kandan-specific Hubot on Heroku","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan-heroku/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan-heroku.git"},"dependencies":{"hubot":"2.2.0","hubot-kandan":"0.9.5"},"_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan-heroku@0.0.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4a35c2e812c8d35c08ae4b803f6b36e3d8063070","tarball":"http://registry.npmjs.org/hubot-kandan-heroku/-/hubot-kandan-heroku-0.0.9.tgz"},"readme":"","maintainers":[{"name":"sgrove","email":"s@bushi.do"}]},"0.1.0":{"name":"hubot-kandan-heroku","version":"0.1.0","author":{"name":"Sean Grove"},"keywords":["github hubot campfire bot kandan cloudfuji heroku"],"description":"A small deployable package for running a Kandan-specific Hubot on Heroku","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan-heroku/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan-heroku.git"},"dependencies":{"hubot":"2.2.0","hubot-kandan":"0.9.6"},"_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan-heroku@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"8ea2c6af64f236a9e094bc7cb88cd555edc75bd3","tarball":"http://registry.npmjs.org/hubot-kandan-heroku/-/hubot-kandan-heroku-0.1.0.tgz"},"readme":"","maintainers":[{"name":"sgrove","email":"s@bushi.do"}]}},"readme":"","maintainers":[{"name":"sgrove","email":"s@bushi.do"}],"time":{"modified":"2012-05-09T06:56:45.543Z","created":"2012-05-09T06:50:22.441Z","0.0.9":"2012-05-09T06:50:23.739Z","0.1.0":"2012-05-09T06:56:45.543Z"},"author":{"name":"Sean Grove"},"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan-heroku.git"},"_id":"hubot-kandan-heroku","_rev":"1-c9bf6f3bbbeba288732e0aebfed9c773"}ÿdocument-storeÿhubot-kandanŸ{"id":"hubot-kandan","rev":"1-38610d973742554454e46cd0a70875a8","rev_tree":[{"pos":1,"ids":["38610d973742554454e46cd0a70875a8",{"status":"available"},[]]}],"rev_map":{"1-38610d973742554454e46cd0a70875a8":3285},"winningRev":"1-38610d973742554454e46cd0a70875a8","deleted":false,"seq":3285}ÿby-sequenceÿ0000000000003285™6{"name":"hubot-kandan","description":"A Kandan adapter for hubot","dist-tags":{"latest":"0.9.6"},"versions":{"0.9.0":{"name":"hubot-kandan","version":"0.9.0","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"64f03686eb5474a7be73e20746cb4fb69b082444","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.0.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"}]},"0.9.1":{"name":"hubot-kandan","version":"0.9.1","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1988e0c2f4679f79dfa2e142dfe0111d02fd69dc","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.1.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"}]},"0.9.2":{"name":"hubot-kandan","version":"0.9.2","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ad6244738e74a95eff9a8532fd6f2c98a715ebc8","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.2.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"}]},"0.9.3":{"name":"hubot-kandan","version":"0.9.3","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"a5efccaef77327aa605f083302e5c661ae0a42ee","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.3.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"}]},"0.9.4":{"name":"hubot-kandan","version":"0.9.4","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan.coffee","_npmUser":{"name":"kevzettler","email":"kevzettler@gmail.com"},"_id":"hubot-kandan@0.9.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"5836ad3af6962855378576f3b23d48787ff2a96e","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.4.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"},{"name":"kevzettler","email":"kevzettler@gmail.com"}]},"0.9.5":{"name":"hubot-kandan","version":"0.9.5","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan.coffee","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.5","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"7248c49379f6a56c48084d479f2852f78def67eb","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.5.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"},{"name":"kevzettler","email":"kevzettler@gmail.com"}]},"0.9.6":{"name":"hubot-kandan","version":"0.9.6","author":{"name":"kandan"},"keywords":["github hubot kandan adapter"],"description":"A Kandan adapter for hubot","licenses":[{"type":"MIT","url":"http://github.com/cloudfuji/hubot-kandan/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"dependencies":{"faye":"0.8.2"},"devDependencies":{"coffee-script":"1.1.3"},"main":"./src/kandan.coffee","_npmUser":{"name":"sgrove","email":"s@bushi.do"},"_id":"hubot-kandan@0.9.6","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ce5c187b2b48e7c6f16c0c6aaffc838cfda058c9","tarball":"http://registry.npmjs.org/hubot-kandan/-/hubot-kandan-0.9.6.tgz"},"maintainers":[{"name":"sgrove","email":"s@bushi.do"},{"name":"kevzettler","email":"kevzettler@gmail.com"}]}},"readme":"hubot-cloudfuji\n===============\n\nKandan adapter for the kindly Hubot vonGitbhub","maintainers":[{"name":"sgrove","email":"s@bushi.do"},{"name":"kevzettler","email":"kevzettler@gmail.com"}],"time":{"modified":"2012-05-09T06:56:19.346Z","created":"2012-05-06T20:30:38.554Z","0.9.0":"2012-05-06T20:30:39.890Z","0.9.1":"2012-05-06T21:45:49.381Z","0.9.2":"2012-05-06T21:58:19.003Z","0.9.3":"2012-05-06T22:13:43.112Z","0.9.4":"2012-05-09T04:17:56.971Z","0.9.5":"2012-05-09T04:30:06.591Z","0.9.6":"2012-05-09T06:56:19.346Z"},"author":{"name":"kandan"},"repository":{"type":"git","url":"git://github.com/cloudfuji/hubot-kandan.git"},"_id":"hubot-kandan","_rev":"1-38610d973742554454e46cd0a70875a8"}ÿdocument-storeÿhtml5-form{"id":"html5-form","rev":"1-1e13c1b77188e00f1dd96770c51e76b4","rev_tree":[{"pos":1,"ids":["1e13c1b77188e00f1dd96770c51e76b4",{"status":"available"},[]]}],"rev_map":{"1-1e13c1b77188e00f1dd96770c51e76b4":3284},"winningRev":"1-1e13c1b77188e00f1dd96770c51e76b4","deleted":false,"seq":3284}ÿby-sequenceÿ0000000000003284ó {"name":"html5-form","description":"basic validations for html forms","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Andrea Longhi","email":"andrea@spaghetticode.it","url":"http://spaghetticode.it"},"name":"html5-form","description":"basic validations for html forms","version":"0.0.0","repository":{"type":"git","url":"git://github.com/spaghetticode/form-valid.git"},"main":"form-valid","scripts":{"test":"jasmine-node spec --coffee"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"spaghetticode","email":"me@spaghetticode.it"},"_id":"html5-form@0.0.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e8bd26e71e205507ec81f52a5c75646496df059f","tarball":"http://registry.npmjs.org/html5-form/-/html5-form-0.0.0.tgz"},"maintainers":[{"name":"spaghetticode","email":"me@spaghetticode.it"}]}},"readme":"# html5 form\n\nThis library aims to be a simple way to add some kind of client-side\nvalidations to form elements.\n\nDocs coming soon\n","maintainers":[{"name":"spaghetticode","email":"me@spaghetticode.it"}],"time":{"modified":"2012-06-04T10:59:16.893Z","created":"2012-06-04T10:59:14.406Z","0.0.0":"2012-06-04T10:59:16.893Z"},"author":{"name":"Andrea Longhi","email":"andrea@spaghetticode.it","url":"http://spaghetticode.it"},"repository":{"type":"git","url":"git://github.com/spaghetticode/form-valid.git"},"_id":"html5-form","_rev":"1-1e13c1b77188e00f1dd96770c51e76b4"}ÿdocument-storeÿhtml-expandž{"id":"html-expand","rev":"1-4a0650b8e21a300ca5a0297d2fff52bd","rev_tree":[{"pos":1,"ids":["4a0650b8e21a300ca5a0297d2fff52bd",{"status":"available"},[]]}],"rev_map":{"1-4a0650b8e21a300ca5a0297d2fff52bd":3283},"winningRev":"1-4a0650b8e21a300ca5a0297d2fff52bd","deleted":false,"seq":3283}ÿby-sequenceÿ0000000000003283š {"name":"html-expand","description":"DOM expanding.","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.5":{"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"name":"html-expand","description":"DOM expanding.","version":"0.0.5","repository":{"url":""},"main":"./index.js","dependencies":{"jsdom":">= 0.2.3","ejs":">= 0.4.3"},"_npmUser":{"name":"yuitest","email":"yuitest@cjhat.net"},"_id":"html-expand@0.0.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"3e96cff107c88e6ed417a218b943f3279c3f2e5d","tarball":"http://registry.npmjs.org/html-expand/-/html-expand-0.0.5.tgz"},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}]}},"readme":"","maintainers":[{"name":"yuitest","email":"yuitest@cjhat.net"}],"time":{"modified":"2012-03-21T15:19:47.696Z","created":"2012-03-21T15:19:44.932Z","0.0.5":"2012-03-21T15:19:47.696Z"},"author":{"name":"yuitest","email":"yuitest@cjhat.net","url":"http://cjhat.net/"},"repository":{"url":""},"_id":"html-expand","_rev":"1-4a0650b8e21a300ca5a0297d2fff52bd"}ÿdocument-storeÿhello-manshou {"id":"hello-manshou","rev":"1-432586c3f3eb95c532f69ea59e8f5080","rev_tree":[{"pos":1,"ids":["432586c3f3eb95c532f69ea59e8f5080",{"status":"available"},[]]}],"rev_map":{"1-432586c3f3eb95c532f69ea59e8f5080":3282},"winningRev":"1-432586c3f3eb95c532f69ea59e8f5080","deleted":false,"seq":3282}ÿby-sequenceÿ0000000000003282Å{"name":"hello-manshou","description":"a hello world module from manshou.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"hello-manshou","version":"0.0.1","description":"a hello world module from manshou.","main":"helloworld.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["hello","world","manshou"],"author":{"name":"Manshou You"},"license":"BSD","_id":"hello-manshou@0.0.1","dist":{"shasum":"167000fa6e19d3741e8e9cba4c7150b293e6ddcc","tarball":"http://registry.npmjs.org/hello-manshou/-/hello-manshou-0.0.1.tgz"},"readme":"","maintainers":[{"name":"manshou","email":"you.manshou@gmail.com"}]}},"readme":"","maintainers":[{"name":"manshou","email":"you.manshou@gmail.com"}],"time":{"modified":"2012-08-02T13:44:33.883Z","created":"2012-07-24T06:10:17.125Z","0.0.1":"2012-07-24T06:10:20.849Z"},"author":{"name":"Manshou You"},"users":{"fgribreau":true},"_id":"hello-manshou","_rev":"1-432586c3f3eb95c532f69ea59e8f5080"}ÿdocument-storeÿhaibu-control {"id":"haibu-control","rev":"1-46c4ab880a0df5d03b50cea9a748dd81","rev_tree":[{"pos":1,"ids":["46c4ab880a0df5d03b50cea9a748dd81",{"status":"available"},[]]}],"rev_map":{"1-46c4ab880a0df5d03b50cea9a748dd81":3281},"winningRev":"1-46c4ab880a0df5d03b50cea9a748dd81","deleted":false,"seq":3281}ÿby-sequenceÿ0000000000003281µ¬{"name":"haibu-control","description":"A simple Haibu deployer","dist-tags":{"latest":"0.1.6"},"versions":{"0.0.2":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.2","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deployer.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n {\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t }\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -k`\n\nYou can completely remove›ÿïù your application from the haibu server with the following comand:\n\n`haibu-control -d`\n","_id":"haibu-control@0.0.2","dist":{"shasum":"4ad18781680053494e6ee33c37cb6c1eeaae9f70","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.2.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.3":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.3","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control -d`\n","_id":"haibu-control@0.0.3","dist":{"shasum":"83e0a42bd7b739d3b2b14dd42041327eb8fe5826","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.3.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.4":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.4","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control -d`\n","_id":"haibu-control@0.0.4","dist":{"shasum":"eb0c39d2829b7195737db07662bd7731caf283ac","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.4.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.5":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.5","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -h=127.0.0.1 -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -d`\n","_id":"haibu-control@0.0.5","dist":{"shasum":"4c2f757198a4478daefe8af4a51b54839a8c8da6","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.5.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.6":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.6","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -h=127.0.0.1 -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control -h=127.0.0.1 -d`\n","_id":"haibu-control@0.0.6","dist":{"shasum":"acd0f867aaa24e206344be06306b27abdc00d3f5","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.6.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.7":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.7","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.0.7","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e754a68c6878541a08486fa181cace706fa1e093","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.7.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.8":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.8","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.0.8","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"73c054ddd8e24600d0ff8e1406697306176fb216","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.8.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.0.9":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.0.9","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.0.9","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"81e029db4e1ed9a4ae56bce8812b7e67dc800197","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.0.9.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.0":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.0","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.1.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"c692be9915e77b684082929e8ec0821076f0e4ea","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.0.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.1":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.1","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.1.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"76968ce4ae21b527b592a9b5ae1963fa298a6633","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.1.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.2":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.2","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.1.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d2e68e741b94af099c94205ff933ffb650f7d3c6","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.2.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.3":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.3","dependencies":{"haibu":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"git://github.com/joshholt/haibu-control.git"},"engines":{"node":"*"},"_npmUser":{"name":"joshholt","email":"holt.josh@gamil.com"},"_id":"haibu-control@0.1.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"4c1ed18679181082458521069550a34ce00b0757","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.3.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.4":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.4","dependencies":{"haibu-api":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control --host=127.0.0.1 -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -d`\n\n\n###Example\n\nThere is an example application that you can use to test out haibu-control [here][examplelink]\n\n[examplelink]:https://github.com/joshholt/haibu-control-example\n","_id":"haibu-control@0.1.4","dist":{"shasum":"dafe063fd91ab51a0bca5a1f692ab3761388ffde","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.4.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.5":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.5","dependencies":{"haibu-api":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control --host=127.0.0.1 -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -d`\n\n\n###Example\n\nThere is an example application that you can use to test out haibu-control [here][examplelink]\n\n[examplelink]:https://github.com/joshholt/haibu-control-example\n","_id":"haibu-control@0.1.5","dist":{"shasum":"0d3b069b740cb0356720102a59707d186780b4b7","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.5.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]},"0.1.6":{"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"name":"haibu-control","description":"A simple Haibu deployer","version":"0.1.6","dependencies":{"haibu-api":"*","eyes":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"bin":{"haibu-control":"./deploy.js"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"engines":{"node":"*"},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n\t\t{\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t\t}\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control --host=127.0.0.1 -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control --host=127.0.0.1 -d`\n\n\n###Example\n\nThere is an example application that you can use to test out haibu-control [here][examplelink]\n\n[examplelink]:https://github.com/joshholt/haibu-control-example\n","_id":"haibu-control@0.1.6","dist":{"shasum":"94c55aea964e9a10d599cac6542723479cd4cd45","tarball":"http://registry.npmjs.org/haibu-control/-/haibu-control-0.1.6.tgz"},"maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}]}},"readme":"###Haibu-Control\nhaibu-control is a remote control for a haibu server.\n\nYou install haibu-control globally via NPM and then you create a\n\"Deployfile\" in your nodejs project.\n\nThe format of the \"Deployfile\" is as follows\n\n {\n\t\t\t\"user\" : \"joshholt\",\n\t\t\t\"name\" : \"test\",\n\t\t\t\"domain\": \"mytest.com\",\n\t\t\t\"repository\" : {\n\t\t\t\t\"type\" : \"git\",\n\t\t\t\t\"url\" : \"https://github.com/Marak/hellonode.git\"\n\t\t\t},\n\t\t\t\"scripts\" : {\n\t\t\t\t\"start\" : \"server.js\"\n\t\t\t}\n\t }\n\n\nOnce you've set up your \"Deployfile\" you can deploy your application to\nyour haibu server with the folowing command:\n\n`haibu-control -s`\n\nYou can restart your application on the haibu server with the following comand:\n\n`haibu-control -r`\n\nYou can kill your application on the haibu server with the following comand:\n\n`haibu-control -k`\n\nYou can completely remove your application from the haibu server with the following comand:\n\n`haibu-control -d`\n","maintainers":[{"name":"joshholt","email":"holt.josh@gamil.com"}],"time":{"modified":"2012-07-22T15:57:37.728Z","created":"2012-07-20T18:52:06.847Z","0.0.2":"2012-07-20T18:52:07.343Z","0.0.3":"2012-07-20T19:00:31.341Z","0.0.4":"2012-07-20T19:17:49.212Z","0.0.5":"2012-07-20T19:19:32.222Z","0.0.6":"2012-07-20T19:26:41.547Z","0.0.7":"2012-07-20T19:30:26.858Z","0.0.8":"2012-07-20T19:35:42.361Z","0.0.9":"2012-07-20T19:40:33.226Z","0.1.0":"2012-07-20T19:48:07.349Z","0.1.1":"2012-07-20T19:50:55.144Z","0.1.2":"2012-07-20T19:54:55.120Z","0.1.3":"2012-07-20T19:59:13.732Z","0.1.4":"2012-07-22T15:44:47.563Z","0.1.5":"2012-07-22T15:48:51.386Z","0.1.6":"2012-07-22T15:57:37.728Z"},"author":{"name":"Josh Holt","email":"holt.josh@gmail.com","url":"http://joshholt.github.com"},"repository":{"type":"git","url":"https://github.com/joshholt/haibu-control"},"_id":"haibu-control","_rev":"1-46c4ab880a0df5d03b50cea9a748dd81"}ÿdocument-storeÿgusto˜{"id":"gusto","rev":"1-72aeb3085d8322f7976e42ec131bd67b","rev_tree":[{"pos":1,"ids":["72aeb3085d8322f7976e42ec131bd67b",{"status":"available"},[]]}],"rev_map":{"1-72aeb3085d8322f7976e42ec131bd67b":3280},"winningRev":"1-72aeb3085d8322f7976e42ec131bd67b","deleted":false,"seq":3280}ÿby-sequenceÿ0000000000003280ƒI{"name":"gusto","description":"Unfancy MVC","dist-tags":{"latest":"0.0.4b"},"versions":{"0.0.1":{"name":"gusto","version":"0.0.1","description":"Unfancy MVC","keywords":["mvc","framework","coco","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":"~0.1.13","sync":"~v0.2.0","prelude-ls":"~0.2.0","qq":"~0.3.4","LiveScript":"~0.9.8c","mime-magic":"~0.2.6","q":"~0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"9c3e98e212374d36957d6a6d9b97a885c3f4a1f9","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.1.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.2":{"name":"gusto","version":"0.0.2","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":"~0.1.13","sync":"~v0.2.0","prelude-ls":"~0.2.0","qq":"~0.3.4","LiveScript":"~0.9.8c","mime-magic":"~0.2.6","q":"~0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a8032ebb1d850c6fd5d206ef4bb3fd21e5b03fbe","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.2.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.2a":{"name":"gusto","version":"0.0.2a","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":"~0.1.13","sync":"~v0.2.0","prelude-ls":"~0.2.0","qq":"~0.3.4","LiveScript":"~0.9.8c","mime-magic":"~0.2.6","q":"~0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.2a","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"11f50f104aaccbbdfae9679a816dbc117dfb4518","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.2a.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.2b":{"name":"gusto","version":"0.0.2b","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":"~0.1.13","sync":"~v0.2.0","prelude-ls":"~0.2.0","qq":"~0.3.4","LiveScript":"~0.9.8c","mime-magic":"~0.2.6","q":"~0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.2b","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"00e4bef14a8f0e4a8238945e36a69394f42e1fbb","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.2b.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.3":{"name":"gusto","version":"0.0.3","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":"~0.1.13","sync":"~v0.2.0","prelude-ls":"~0.2.0","qq":"~0.3.4","LiveScript":"~0.9.8c","mime-magic":"~0.2.6","q":"~0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"f37647f4b1ac805b102326ad41c81f679ade89f5","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.3.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.4a":{"name":"gusto","version":"0.0.4a","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":">=0.1.13","sync":">=v0.2.0","prelude-ls":">=0.2.0","qq":">=0.3.4","LiveScript":">=0.9.8c","mime-magic":">=0.2.6","q":">=0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.4a","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"52b9a2e0c241523c1afa32f26f5fe54b71a960d2","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.4a.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]},"0.0.4b":{"name":"gusto","version":"0.0.4b","description":"Unfancy MVC","keywords":["mvc","framework","livescript","javascript"],"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"homepage":"http://github.com/quarterto/Gusto/","licenses":[{"type":"MIT","url":"https://github.com/quarterto/Gusto/blob/master/LICENCE.md"}],"engines":{"node":">= 0.6"},"directories":{"lib":"./lib"},"main":"./lib/main","bin":{"gusto":"./lib/main.js"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"dependencies":{"q-http":">=0.1.13","sync":">=v0.2.0","prelude-ls":">=0.2.0","qq":">=0.3.4","LiveScript":">=0.9.8c","mime-magic":">=0.2.6","q":">=0.8.5"},"_npmUser":{"name":"quarterto","email":"mwr.brennan@gmail.com"},"_id":"gusto@0.0.4b","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"b3073a85da68d34672d1a80814b8ce1aaeb4693c","tarball":"http://registry.npmjs.org/gusto/-/gusto-0.0.4b.tgz"},"maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}]}},"readme":"Gusto\n=====\n...is an MVC framework written in [Coco](http://github.com/satyr/coco) for Node. It's geared towards flexibility without sacrificing simplicity, and at a mere ~500loc it's lightweight too. It's released under the MIT Licence, so hack away.\n##Sample\n###controllers/site.co\n```coffeescript\n{Controller,action} = require \\gusto/lib/mvc/controller\n{get} = require \\gusto/lib/server/router\n\nexports.site = Controller {\n\tindex: get \"home\", action (self)->\n\t\tself.render greet:\"world!\"\n}\n```\n###views/site/index.eco\n```html\nHello #{greet}\n```\n###run.co\n```coffeescript\nGusto = require \\gusto\napp = Gusto.defaults!\napp.listen 8001\n```\n\n```bash\n$ coco run.co &\nLOG\t5174 Listening on *:8001\n$ curl http://localhost/home\nHello world!\n```","maintainers":[{"name":"quarterto","email":"mwr.brennan@gmail.com"}],"time":{"modified":"2012-06-18T10:39:20.642Z","created":"2012-06-10T22:24:54.757Z","0.0.1":"2012-06-10T22:24:56.215Z","0.0.2":"2012-06-13T11:36:45.027Z","0.0.2a":"2012-06-13T11:42:58.702Z","0.0.2b":"2012-06-13T11:47:15.005Z","0.0.3":"2012-06-13T12:03:24.631Z","0.0.4a":"2012-06-17T10:13:02.163Z","0.0.4b":"2012-06-18T10:39:20.642Z"},"author":{"name":"quarterto","email":"mwr.brennan@gmail.com","url":"http://github.com/quarterto"},"repository":{"type":"git","url":"git://github.com/quarterto/Gusto.git"},"_id":"gusto","_rev":"1-72aeb3085d8322f7976e42ec131bd67b"}ÿdocument-storeÿgrunt-bomœ{"id":"grunt-bom","rev":"1-d1c10e274e9cffd3c1562ed3a8bf8c92","rev_tree":[{"pos":1,"ids":["d1c10e274e9cffd3c1562ed3a8bf8c92",{"status":"available"},[]]}],"rev_map":{"1-d1c10e274e9cffd3c1562ed3a8bf8c92":3279},"winningRev":"1-d1c10e274e9cffd3c1562ed3a8bf8c92","deleted":false,"seq":3279}ÿby-sequenceÿ0000000000003279Ê{"name":"grunt-bom","description":"A task to remove the BOM for any file you want.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"grunt-bom","description":"A task to remove the BOM for any file you want.","version":"0.1.0","homepage":"https://github.com/david-driscoll/grunt-bom","author":{"name":"David Driscoll","email":"david.driscoll@gmail.com"},"repository":{"type":"git","url":"https://github.com/david-driscoll/grunt-bom"},"bugs":{"url":"https://github.com/david-driscoll/grunt-bom/issues"},"licenses":[{"type":"MIT","url":""}],"main":"grunt.js","engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"async":"0.1.x","grunt":"~0.3.8"},"devDependencies":{"grunt":"~0.3.8"},"keywords":["gruntplugin"],"readme":"# grunt-bom\n\nA Byte Order Mark removal task for grunt.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-bom`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-bom');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 David Driscoll \nLicensed under the MIT license.\n","_id":"grunt-bom@0.1.0","dist":{"shasum":"81b0278eef3bb0184548329e04b5e6e120a1ddbd","tarball":"http://registry.npmjs.org/grunt-bom/-/grunt-bom-0.1.0.tgz"},"maintainers":[{"name":"david-driscoll","email":"david.driscoll@gmail.com"}]}},"readme":"# grunt-bom\n\nA Byte Order Mark removal task for grunt.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-bom`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-bom');\n```'yèžù\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 David Driscoll \nLicensed under the MIT license.\n","maintainers":[{"name":"david-driscoll","email":"david.driscoll@gmail.com"}],"time":{"modified":"2012-07-15T18:11:28.282Z","created":"2012-07-15T18:11:26.769Z","0.1.0":"2012-07-15T18:11:28.282Z"},"author":{"name":"David Driscoll","email":"david.driscoll@gmail.com"},"repository":{"type":"git","url":"https://github.com/david-driscoll/grunt-bom"},"_id":"grunt-bom","_rev":"1-d1c10e274e9cffd3c1562ed3a8bf8c92"}ÿdocument-storeÿgrasshopperž{"id":"grasshopper","rev":"1-fd24032122141165928ad20e5fe9cd8e","rev_tree":[{"pos":1,"ids":["fd24032122141165928ad20e5fe9cd8e",{"status":"available"},[]]}],"rev_map":{"1-fd24032122141165928ad20e5fe9cd8e":3278},"winningRev":"1-fd24032122141165928ad20e5fe9cd8e","deleted":false,"seq":3278}ÿby-sequenceÿ0000000000003278È{"name":"grasshopper","dist-tags":{"latest":"0.5.1"},"versions":{"0.5.0":{"name":"grasshopper","description":"A feature-rich and flexible MVC framework.","version":"0.5.0","author":{"name":"Chandra Sekar S","email":"chandru.in@gmail.com","url":"http://tuxychandru.blogspot.com"},"dependencies":{"formidable":">=1.0.7"},"engines":{"node":">= 0.6.0"},"main":".","bin":{"grasshopper":"./cli.js"},"repository":{"type":"git","url":"git://github.com/tuxychandru/grasshopper.git"},"_npmUser":{"name":"tuxychandru","email":"chandru.in@gmail.com"},"_id":"grasshopper@0.5.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"eee9867a52f5e14b53edde61ea95601691bd7579","tarball":"http://registry.npmjs.org/grasshopper/-/grasshopper-0.5.0.tgz"},"maintainers":[{"name":"tuxychandru","email":"chandru.in@gmail.com"}],"directories":{}},"0.5.1":{"name":"grasshopper","description":"A feature-rich and flexible MVC framework.","version":"0.5.1","author":{"name":"Chandra Sekar S","email":"chandru.in@gmail.com","url":"http://tuxychandru.blogspot.com"},"dependencies":{"formidable":">=1.0.7"},"engines":{"node":">= 0.6.0"},"main":".","bin":{"grasshopper":"./cli.js"},"repository":{"type":"git","url":"git://github.com/tuxychandru/grasshopper.git"},"_npmUser":{"name":"tuxychandru","email":"chandru.in@gmail.com"},"_id":"grasshopper@0.5.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"7e011098007c127344e65a872be65fd26412b14a","tarball":"http://registry.npmjs.org/grasshopper/-/grasshopper-0.5.1.tgz"},"readme":"","maintainers":[{"name":"tuxychandru","email":"chandru.in@gmail.com"}],"directories":{}}},"maintainers":[{"name":"tuxychandru","email":"chandru.in@gmail.com"}],"description":"A feature-rich and flexible MVC framework.","time":{"modified":"2012-05-09T11:28:21.822Z","created":"2011-01-25T16:55:45.775Z","0.3.0":"2011-01-25T16:55:45.775Z","0.3.1":"2011-01-25T16:55:45.775Z","0.3.2":"2011-01-25T16:55:45.775Z","0.3.3":"2011-01-25T16:55:45.775Z","0.3.4":"2011-01-25T16:55:45.775Z","0.4.0":"2011-02-10T11:34:05.370Z","0.4.1":"2011-04-12T17:48:35.741Z","0.4.2":"2011-07-19T04:03:52.376Z","0.4.3":"2011-09-20T09:19:01.838Z","0.5.0":"2011-11-15T16:00:44.200Z","0.5.1":"2012-05-09T10:05:43.929Z"},"author":{"name":"Chandra Sekar S","email":"chandru.in@gmail.com","url":"http://tuxychandru.blogspot.com"},"repository":{"type":"git","url":"git://github.com/tuxychandru/grasshopper.git"},"_id":"grasshopper","_rev":"1-fd24032122141165928ad20e5fe9cd8e"}ÿdocument-storeÿgov–{"id":"gov","rev":"1-2daadb1be09877bf23f65b5cd61161a7","rev_tree":[{"pos":1,"ids":["2daadb1be09877bf23f65b5cd61161a7",{"status":"available"},[]]}],"rev_map":{"1-2daadb1be09877bf23f65b5cd61161a7":3277},"winningRev":"1-2daadb1be09877bf23f65b5cd61161a7","deleted":false,"seq":3277}ÿby-sequenceÿ0000000000003277å {"name":"gov","description":"Node.js server manager","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"name":"gov","description":"Node.js server manager","tags":["manager","restart","process"],"homepage":"https://github.com/brianloveswords/gov","repository":{"type":"git","url":"git://github.com/brianloveswords/gov.git"},"version":"0.1.0","bin":{"gov":"./bin/gov"},"scripts":{"test":"make test"},"main":"./lib/gov","engines":{"node":">= 0.6.0"},"dependencies":{"colors":"*","commander":"~0.6.1","underscore":"~1.3.3"},"devDependencies":{"mocha":"*","jshint":"~0.7.0"},"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"gov@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"d9f8ed7a8a8c3ea3ea08779debb28f807b104acf","tarball":"http://registry.npmjs.org/gov/-/gov-0.1.0.tgz"},"readme":"","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]}},"readme":"","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"time":{"modified":"2012-06-24T21:23:42.349Z","created":"2012-06-24T21:23:41.843Z","0.1.0":"2012-06-24T21:23:42.349Z"},"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"repository":{"type":"git","url":"git://github.com/brianloveswords/gov.git"},"_id":"gov","_rev":"1-2daadb1be09877bf23f65b5cd61161a7"}ÿdocument-storeÿgooglespellž{"id":"googlespell","rev":"1-edd3c2c2e52c9f8d9518e6a5ec8f7138","rev_tree":[{"pos":1,"ids":["edd3c2c2e52c9f8d9518e6a5ec8f7138",{"status":"available"},[]]}],"rev_map":{"1-edd3c2c2e52c9f8d9518e6a5ec8f7138":3276},"winningRev":"1-edd3c2c2e52c9f8d9518e6a5ec8f7138","deleted":false,"seq":3276}ÿby-sequenceÿ0000000000003276¤:{"name":"googlespell","description":"A node module for the undocumented google spell API","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"googlespell","version":"0.0.1","description":"A node module for the undocumented google spell API","homepage":"http://github.com/tstone/googlespell","keywords":["spell check","spell","google"],"author":{"name":"Titus Stone","email":"wastingtape@gmail.com","url":"http://typeof.co"},"licenses":[{"type":"MIT","url":"http://github.com/tstone/googlespell/master/MIT.LICENSE"}],"dependencies":{"xml2js":">= 0.1.x","request":">= 2.x.x","underscore":">= 1.x.x"},"repository":{"type":"git","url":"git://github.com/tstone/googlespell.git","web":"http://github.com/tstone/googlespell"},"main":"src/index.js","engines":{"node":"0.6.x","npm":"1.0.x"},"_npmUser":{"name":"andstuff","email":"wastingtape@gmail.com"},"_id":"googlespell@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1655549b48bd9ba65186421b82236117903aadf2","tarball":"http://registry.npmjs.org/googlespell/-/googlespell-0.0.1.tgz"},"maintainers":[{"name":"andstuff","email":"wastingtape@gmail.com"}]},"0.0.2":{"name":"googlespell","version":"0.0.2","description":"A node module for the undocumented google spell API","homepage":"http://github.com/tstone/googlespell","keywords":["spell check","spell","google"],"author":{"name":"Titus Stone","email":"wastingtape@gmail.com","url":"http://typeof.co"},"licenses":[{"type":"MIT","url":"http://github.com/tstone/googlespell/master/MIT.LICENSE"}],"dependencies":{"xml2js":">= 0.1.x","request":">= 2.x.x","underscore":">= 1.x.x"},"repository":{"type":"git","url":"git://github.com/tstone/googlespell.git","web":"http://github.com/tstone/googlespell"},"main":"src/index.js","engines":{"node":">= 0.6.x"},"_npmUser":{"name":"andstuff","email":"wastingtape@gmail.com"},"_id":"googlespell@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"9fa53dbc29c946b75f0cdf870a956ac00ef65d5e","tarball":"http://registry.npmjs.org/googlespell/-/googlespell-0.0.2.tgz"},"maintainers":[{"name":"andstuff","email":"wastingtape@gmail.com"}]},"0.0.3":{"name":"googlespell","version":"0.0.3","description":"A node module for the undocumented google spell API","homepage":"http://github.com/tstone/googlespell","keywords":["spell check","spell","google"],"author":{"name":"Titus Stone","email":"wastingtape@gmail.com","url":"http://typeof.co"},"licenses":[{"type":"MIT","url":"http://github.com/tstone/googlespell/master/MIT.LICENSE"}],"dependencies":{"xml2js":">= 0.1.x","request":">= 2.x.x","underscore":">= 1.x.x"},"repository":{"type":"git","url":"git://github.com/tstone/googlespell.git","web":"http://github.com/tstone/googlespell"},"main":"src/index.js","engines":{"node":">= 0.6.x"},"_npmUser":{"name":"andstuff","email":"wastingtape@gmail.com"},"_id":"googlespell@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"824cc2e2fbd7d34f3a36ec9b5f191a0cc8b3a1eb","tarball":"http://registry.npmjs.org/googlespell/-/googlespell-0.0.3.tgz"},"maintainers":[{"name":"andstuff","email":"wastingtape@gmail.com"}]},"0.0.4":{"name":"googlespell","version":"0.0.4","description":"A node module for the undocumented google spell API","homepage":"http://github.com/tstone/googlespell","keywords":["spell check","spell","google"],"author":{"name":"Titus Stone","email":"wastingtape@gmail.com","url":"http://typeof.co"},"licenses":[{"type":"MIT","url":"http://github.com/tstone/googlespell/master/MIT.LICENSE"}],"dependencies":{"xml2js":">= 0.1.x","request":">= 2.x.x","underscore":">= 1.x.x"},"repository":{"type":"git","url":"git://github.com/tstone/googlespell.git","web":"http://github.com/tstone/googlespell"},"main":"src/index.js","engines":{"node":">= 0.6.x"},"_npmUser":{"name":"andstuff","email":"wastingtape@gmail.com"},"_id":"googlespell@0.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b243b29589945fdaf6b909fbc696b02c15e54b8e","tarball":"http://registry.npmjs.org/googlespell/-/googlespell-0.0.4.tgz"},"maintainers":[{"name":"andstuff","email":"wastingtape@gmail.com"}]}},"readme":"\r\ngooglespell\r\n===========\r\n\r\nA simple node.js module for accessing the (undocumented) Google Toolbar spellchecker API. It would probably be a good idea to only use this module for personal projects or things that will only have light traffic, as Google could yank acess to that API at any time for any reason.\r\n\r\nInstallation\r\n------------\r\n\r\nThe usual...\r\n\r\n npm install googlespell\r\n\r\nThen\r\n\r\n var googlespell = require('googlespell');\r\n\r\nUsage\r\n-----\r\n\r\n### Initialization\r\n\r\n`googlespell` exposes a `Checker` object which will handle doing the spell checking. It takes one input parameter, `config`;\r\n\r\n var googlespell = require('googlespell');\r\n var checker = new googlespell.Checker(options);\r\n\r\n#### Checker Config\r\n\r\n ignoreDupes: Ignore duplicates. // (default: false)\r\n ignoreDigits: Ignore numbers. // (default: true)\r\n ignoreCaps: Ignore caps. // (default: true)\r\n ignoreHtml: Remove all HTML tags, keeping inner HTML. // (default: true)\r\n ignoreCode: Completely remove all tags. // (default: true)\r\n language: Language to check against. // (default: 'en')\r\n threshold: Filter suggestions based on Google's confidence level. // (default: 0)\r\n\r\n### Doing the Check\r\n\r\nOnce the checker is initialized call the `.check` method.\r\n\r\n Checker.check(text, callback(err, result));\r\n\r\nExample:\r\n\r\n var googlespell = require('googlespell');\r\n var checker = new googlespell.Checker();\r\n\r\n checker.check('This is an exmaple', function(err, result) {\r\n console.log(result);\r\n });\r\n\r\n### Results\r\n`googlespell` will return a `Result` object which has an array of suggestions. Each suggestion contains the following properites:\r\n\r\n confidence -- How confident Google is about this suggestion\r\n context -- A snippet of the word within the source string\r\n offset -- Position in source string where word is\r\n word -- The word Google things is misspelled\r\n words -- Suggestions for what that word might be\r\n\r\nIn the above example, the suggestion returned would look like this:\r\n\r\n { offset: 12\r\n confidence: 1\r\n word: 'exmaple',\r\n words: [ 'example', 'ex maple', 'ex-maple', 'exampled', 'examples' ],\r\n context: 'This is an [exmaple]' }\r\n\r\n","maintainers":[{"name":"andstuff","email":"wastingtape@gmail.com"}],"time":{"modified":"2012-06-24T20:38:59.932Z","created":"2012-06-24T19:42:15.233Z","0.0.1":"2012-06-24T19:42:17.358Z","0.0.2":"2012-06-24T19:49:11.606Z","0.0.3":"2012-06-24T20:21:25.627Z","0.0.4":"2012-06-24T20:38:59.932Z"},"author":{"name":"Titus Stone","email":"wastingtape@gmail.com","url":"http://typeof.co"},"repository":{"type":"git","url":"git://github.com/tstone/googlespell.git","web":"http://github.com/tstone/googlespell"},"_id":"googlespell","_rev":"1-edd3c2c2e52c9f8d9518e6a5ec8f7138"}ÿdocument-storeÿglm–{"id":"glm","rev":"1-f3557cdc58fbe6190b230b8683e692b2","rev_tree":[{"pos":1,"ids":["f3557cdc58fbe6190b230b8683e692b2",{"status":"available"},[]]}],"rev_map":{"1-f3557cdc58fbe6190b230b8683e692b2":3275},"winningRev":"1-f3557cdc58fbe6190b230b8683e692b2","deleted":false,"seq":3275}ÿby-sequenceÿ0000000000003275«{"name":"glm","description":"Generalized Linear Models","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"glm","version":"0.0.1","description":"Generalized Linear Models","keywords":["glm","statistics","model","machine-learning"],"homepage":"https://github.com/rallysf/glm.js","main":"./glm.js","repository":{"type":"git","url":"git://github.com/rallysf/glm.js.git"},"devDependencies":{"vows":"0.6.1","uglify-js":"1.2.5"},"_npmUser":{"name":"clay","email":"clay@woolam.org"},"_id":"glm@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b47f5b232ddbb1a3ec2f215c77fce9575192f42c","tarball":"http://registry.npmjs.org/glm/-/glm-0.0.1.tgz"},"readme":"","maintainers":[{"name":"clay","email":"clay@woolam.org"}]},"1.0.0":{"name":"glm","version":"1.0.0","description":"Generalized Linear Models","keywords":["glm","statistics","model","machine-learning"],"homepage":"https://github.com/rallysf/glm","main":"./glm.js","repository":{"type":"git","url":"git://github.com/rallysf/glm.js.git"},"devDependencies":{"vows":"0.6.1","uglify-js":"1.2.5"},"_npmUser":{"name":"clay","email":"clay@woolam.org"},"_id":"glm@1.0.0","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7e857c8886946c9be5a6292378bd6b2e263ad078","tarball":"http://registry.npmjs.org/glm/-/glm-1.0.0.tgz"},"readme":"","maintainers":[{"name":"clay","email":"clay@woolam.org"}]}},"readme":"","maintainers":[{"name":"clay","email":"clay@woolam.org"}],"time":{"modified":"2012-06-18T02:25:37.087Z","created":"2012-06-15T18:24:13.685Z","0.0.1":"2012-06-15T18:24:14.953Z","1.0.0":"2012-06-18T02:25:37.087Z"},"repository":{"type":"git","url":"git://github.com/rallysf/glm.js.git"},"_id":"glm","_rev":"1-f3557cdc58fbe6190b230b8683e692b2"}ÿdocument-storeÿglass-scriptŸ{"id":"glass-script","rev":"1-ecb77dfa64fa2375d4baf6d64fde1ea3","rev_tree":[{"pos":1,"ids":["ecb77dfa64fa2375d4baf6d64fde1ea3",{"status":"available"},[]]}],"rev_map":{"1-ecb77dfa64fa2375d4baf6d64fde1ea3":3274},"winningRev":"1-ecb77dfa64fa2375d4baf6d64fde1ea3","deleted":false,"seq":3274}ÿby-sequenceÿ0000000000003274F{"name":"glass-script","description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","dist-tags":{"latest":"0.5.6"},"versions":{"0.5.1":{"name":"glass-script","preferGlobal":"true","version":"0.5.1","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"git://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"krisnye","email":"krisnye@gmail.com"},"_id":"glass-script@0.5.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d2492b5f2e822223b33972da15a9c4039c55fbc7","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.1.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]},"0.5.2":{"name":"glass-script","preferGlobal":"true","version":"0.5.2","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"git://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"krisnye","email":"krisnye@gmail.com"},"_id":"glass-script@0.5.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"71d5366f09f59c1f48b4111c4ed8674fc2c9a69c","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.2.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]},"0.5.3":{"name":"glass-script","preferGlobal":"true","version":"0.5.3","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"git://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"krisnye","email":"krisnye@gmail.com"},"_id":"glass-script@0.5.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4e2dfc491186b65ef9bebcb17efddcf2da137e2b","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.3.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]},"0.5.4":{"name":"glass-script","preferGlobal":"true","version":"0.5.4","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"git://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"krisnye","email":"krisnye@gmail.com"},"_id":"glass-script@0.5.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"aa1441e3b22fc22932eafd4a634a1edfe8849b4c","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.4.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]},"0.5.5":{"name":"glass-script","preferGlobal":"true","version":"0.5.5","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"git://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"krisnye","email":"krisnye@gmail.com"},"_id":"glass-script@0.5.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"31d385224be77f00b4f329b8cbe8e064ee6abd4e","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.5.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]},"0.5.6":{"name":"glass-script","preferGlobal":"true","version":"0.5.6","author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"description":"a safe JSON path expression and simple scripting language. Suitable for evaluating untrusted javascript like code in a sandbox.","contributors":[{"name":"Kris Nye","email":"krisnye@gmail.com"}],"bin":{},"scripts":{"glass":"node ./lib/Expression.js"},"main":"./lib/Expression","repository":{"type":"git","url":"https://github.com/krisnye/glass.git"},"keywords":["glass","JSON","JSONPath","XPATH","script","sandbox"],"dependencies":{"underscore":"*"},"noAnalyze":true,"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.4"},"readme":"glass\r\n=====\r\n\r\nGlass Safe Scripting Language\r\n\r\nGlass is a minimalist scripting language to allow you to safely evaluate path expressions and small programs that may contain untrusted code.\r\n\r\nGlass is very similar to JSON Path but it adds the ability to evaluate locally defined functions, execute multiple statements including variable declarations and conditional branches.\r\n\r\nThere are no for loops and scripts can only call functions or reference properties that are defined directly on the context object.\r\n\r\nWhen using a simple JSON tree as the context Glass Scripts are designed to be inherently safe to evaluate without any possibility of external side effects, and no ability to block the thread since there are no for or while loops.\r\n\r\nuse 'glass' command line utility to test expressions.","_id":"glass-script@0.5.6","dist":{"shasum":"4d5cdfc71c42ff6a7fbcd856198758b3a8206f98","tarball":"http://registry.npmjs.org/glass-script/-/glass-script-0.5.6.tgz"},"maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}]}},"readme":"glass\r\n=====\r\n\r\nGlass Safe Scripting Language\r\n\r\nGlass is a minimalist scripting language to allow you to safely evaluate path expressions and small programs that may contain untrusted code.\r\n\r\nGlass is very similar to JSON Path but it adds the ability to evaluate locally defined functions, execute multiple statements including variable declarations and conditional branches.\r\n\r\nThere are no for loops and scripts can only call functions or reference properties that are defined directly on the context object.\r\n\r\nWhen using a simple JSON tree as the context Glass Scripts are designed to be inherently safe to evaluate without any possibility of external side effects, and no ability to block the thread since there are no for or while loops.\r\n\r\nuse 'glass' command line utility to test expressions.","maintainers":[{"name":"krisnye","email":"krisnye@gmail.com"}],"time":{"modified":"2012-07-09T21:17:31.888Z","created":"2012-06-30T22:11:12.533Z","0.5.1":"2012-06-30T22:11:14.947Z","0.5.2":"2012-07-01T00:07:53.362Z","0.5.3":"2012-07-01T00:31:14.044Z","0.5.4":"2012-07-01T00:34:21.997Z","0.5.5":"2012-07-01T01:35:26.302Z","0.5.6":"2012-07-09T21:17:31.888Z"},"author":{"name":"Kris Nye","email":"krisnye@gmail.com"},"repository":{"type":"git","url":"https://github.com/krisnye/glass.git"},"_id":"glass-script","_rev":"1-ecb77dfa64fa2375d4baf6d64fde1ea3"}ÿdocument-storeÿgitban™{"id":"gitban","rev":"1-d33b3ca04a9d3c9fbe6da63d496dcddf","rev_tree":[{"pos":1,"ids":["d33b3ca04a9d3c9fbe6da63d496dcddf",{"status":"available"},[]]}],"rev_map":{"1-d33b3ca04a9d3c9fbe6da63d496dcddf":3273},"winningRev":"1-d33b3ca04a9d3c9fbe6da63d496dcddf","deleted":false,"seq":3273}ÿby-sequenceÿ0000000000003273ǹ{"name":"gitban","description":"Very simple command line kanban-esque tool for use with github issues","dist-tags":{"latest":"0.0.13"},"versions":{"0.0.1":{"name":"gitban","version":"0.0.1","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"78c5e446e1137b28f6b107458c39a9ff248314c6","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.1.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.2":{"name":"gitban","version":"0.0.2","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"bf0956b099f9e79800607d230c5bebe18a8ffb9b","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.2.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.3":{"name":"gitban","version":"0.0.3","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"306da32d92eba3f9df52be2891cf5d22ded511f3","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.3.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.4":{"name":"gitban","version":"0.0.4","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e244f3310b04758a70929c66c7621d8ffecaf941","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.4.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.5":{"name":"gitban","version":"0.0.5","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"https://git@github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"readme":"gitban\n======\n\n*A very simple command line kanban-esque tool for use with github issues*\n\n##Installation\n\n npm install gitban -g\n \nNext, create the following labels in your github project:\n\nGB0 - Backlog \nGB1 - Ready \nGB2 - Doing \n\nThat's it!\n\n##Usage\n\nYou can always get help\n\n gitban --help\n \nFor most actions you will need to specify:\n\n* github login name\n* github password\n* organization\n* repository\n\nThese can be put in a file called *.gitban.json* in your home directory for convenience. The format is:\n\n {\n \"user\" : \"username\",\n \"pass\" : \"password\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nThe options set in *.gitban.json* will be overridden by anything specified explicitly on the command line.\n\nNote: For better security you may wish to not use basic authentication but instead use OAuth. To do this\nyou must first create a an OAuth token with the following command line:\n\n curl -u '' -d '{\"scopes\":\"repo\",\"note\":\"gitban\"}' https://api.github.com/authorizations\n \nYou will be prompted to login then you should see some JSON that looks like:\n\n {\n \"token\": \"\",\n \"note\": \"gitban\",\n \"note_url\": null,\n \"scopes\": [\n \"repo\"\n ],\n \"created_at\": \"2012-06-28T04:57:16Z\",\n \"app\": {\n \"url\": \"http://developer.github.com/v3/oauth/#oauth-authorizations-api\",\n \"name\": \"gitban (API)\"\n },\n \"url\": \"https://api.github.com/authorizations/437559\",\n \"id\": 437559,\n \"updated_at\": \"2012-06-28T04:57:16Z\"\n }\n \nNow just edit your *.gitban.json* file as follows:\n\n {\n \"token\" : \"\",\n \"user\" : \"username\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nDone! From this point forward you can manage (e.g. revoke) this token using the Applications tab from within\nyour github account settings.\n\n###Workflow\n\nThe purpose of this tool is to provide a very simple workflow based loosely on the [kanban board](http://en.wikipedia.org/wiki/Kanban_board) style whereby all issues\nare initially added to the system in a \"backlog\" / unassigned state. Do this by just creating a new issue in github.\n\nNext, issues can be assigned to team members. This puts the issue into a \"ready\" state and can be done using the \"take\" command.\n\n gitban take 47\n \nThis will cause issue #47 to be assigned to you and set its state to ready.\n\nWhen commencing to work on an issue use the \"action\" command.\n(note that you action an issue without having to first take it)\n\n gitban action 47\n \nThis command does several things:\n\àZŸ¦ùn* The issue will be assigned to you if it isn't already\n* The issue will be put into the \"doing\" state\n* Any other issue you may have been working on is moved from the doing to the ready state\n\nAs you can see from this logic the system will enforce only one issue be worked on at a time by each team member.\n\nTo close / complete issue just close the issue using github or the \"fixes #\" syntax in your commit comment.\n\nGitban uses the labels above to differentiate states of issues.\nGitban will add a small comment to the issue describing each state change for tracking.\n\n##Examples\n\n(note: these examples assume you have set up a .gitban.json so that github params do not have to always be specified)\n\nList the issues currently assign to you\n\n gitban list\n \nList issues currently assigned to bob\n\n gitban -a bob list\n \nTake ownership of issue 47 and start working on it\n\n gitban action 47\n \nAssign issue 47 to bob\n\n gitban -a bob take 47\n \nGet information / comments on an issue\n\n gitban info 47\n \nSee a list of what each team member is currently working on\n\n gitban status\n","_id":"gitban@0.0.5","dist":{"shasum":"dceea853cab14dbf4adf22b83f2708552c4a0061","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.5.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.6":{"name":"gitban","version":"0.0.6","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.5.2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"29212001bef07115e4f440c2627c139c99a7d13d","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.6.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.7":{"name":"gitban","version":"0.0.7","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git+ssh://git@github.com:alphashack/node-github","commander":">= 0.6.0"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete@playup.com"},"_id":"gitban@0.0.7","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"bb995764b4dc66a2cef32f200a3ef94b2b209b47","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.7.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.8":{"name":"gitban","version":"0.0.8","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"https://github.com/alphashack/node-github.git","commander":">= 0.6.0"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git@github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete_diemert@msn.com"},"_id":"gitban@0.0.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"8a69cb933b4092d13a15ae8b96f064aff6070ab7","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.8.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.9":{"name":"gitban","version":"0.0.9","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"https://github.com/alphashack/node-github.git","commander":">= 0.6.0"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete_diemert@msn.com"},"_id":"gitban@0.0.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"f0e79b36eb7afaaeee04e7a053f9117a0250d4ee","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.9.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.10":{"name":"gitban","version":"0.0.10","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git://github.com/alphashack/node-github.git","commander":">= 0.6.0"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"git://github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"_npmUser":{"name":"pdiemert","email":"pete_diemert@msn.com"},"_id":"gitban@0.0.10","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"9a66254aba5c030a893aafe47dd76aab488ef830","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.10.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.12":{"name":"gitban","version":"0.0.12","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git://github.com/alphashack/node-github.git","commander":">= 0.6.0","underscore":"1.3.3","moment":"1.7.0","node-terminal":"0.1.1","string":"0.2.1-2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"https://git@github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"readme":"gitban\n======\n\n*A very simple command line kanban-esque tool for use with github issues*\n\n##Installation\n\n npm install gitban -g\n \nNext, create the following labels in your github project:\n\nGB0 - Backlog \nGB1 - Ready \nGB2 - Doing \n\nThat's it!\n\n##Usage\n\nYou can always get help\n\n gitban --help\n \nFor most actions you will need to specify:\n\n* github login name\n* github password\n* organization\n* repository\n\nThese can be put in a file called *.gitban.json* in your home directory for convenience. The format is:\n\n {\n \"user\" : \"username\",\n \"pass\" : \"password\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nThe options set in *.gitban.json* will be overridden by anything specified explicitly on the command line.\n\nNote: For better security you may wish to not use basic authentication but instead use OAuth. To do this\nyou must first create a an OAuth token with the following command line:\n\n curl -u '' -d '{\"scopes\":\"repo\",\"note\":\"gitban\"}' https://api.github.com/authorizations\n \nYou will be prompted to login then you should see some JSON that looks like:\n\n {\n \"token\": \"\",\n \"note\": \"gitban\",\n \"note_url\": null,\n \"scopes\": [\n \"repo\"\n ],\n \"created_at\": \"2012-06-28T04:57:16Z\",\n \"app\": {\n \"url\": \"http://developer.github.com/v3/oauth/#oauth-authorizations-api\",\n \"name\": \"gitban (API)\"\n },\n \"url\": \"https://api.github.com/authorizations/437559\",\n \"id\": 437559,\n \"updated_at\": \"2012-06-28T04:57:16Z\"\n }\n \nNow just edit your *.gitban.json* file as follows:\n\n {\n \"token\" : \"\",\n \"user\" : \"username\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nDone! From this point forward you can manage (e.g. revoke) this token using the Applications tab from within\nyour github account settings.\n\n###Workflow\n\nThe purpose of this tool is to provide a very simple workflow based loosely on the [kanban board](http://en.wikipedia.org/wiki/Kanban_board) style whereby all issues\nare initially added to the system in a \"backlog\" / unassigned state. Do this by just creating a new issue in github.\n\nNext, issues can be assigned to team members. This puts the issue into a \"ready\" state and can be done using the \"take\" command.\n\n gitban take 47\n \nThis will cause issue #47 to be assigned to you and set its state to ready.\n\nWhen commencing to work on an issue use the \"action\" command.\n(note that you action an issue without having to first take it)\n\n gitban action 47\n \nThis command does several things:\n\n* The issue will be assigned to you if it isn't already\n* The issue will be put into the \"doing\" state\n* Any other issue you may have been working on is moved from the doing to the ready state\n\nAs you can see from this logic the system will enforce only one issue be worked on at a time by each team member.\n\nTo close / complete issue just close the issue using github or the \"fixes #\" syntax in your commit comment.\n\nGitban uses the labels above to differentiate states of issues.\nGitban will add a small comment to the issue describing each state change for tracking.\n\n##Examples\n\n(note: these examples assume you have set up a .gitban.json so that github params do not have to always be specified)\n\nList the issues currently assign to you\n\n gitban list\n \nList issues currently assigned to bob\n\n gitban -a bob list\n \nTake ownership of issue 47 and start working on it\n\n gitban action 47\n \nAssign issue 47 to bob\n\n gitban -a bob take 47\n \nGet information / comments on an issue\n\n gitban info 47\n \nSee a list of what each team member is currently working on\n\n gitban status\n","_id":"gitban@0.0.12","dist":{"shasum":"e266cdf8755181268b0d3ef951b9f26ac81bce9b","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.12.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]},"0.0.13":{"name":"gitban","version":"0.0.13","description":"Very simple command line kanban-esque tool for use with github issues","author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"dependencies":{"github":"git://github.com/alphashack/node-github.git","commander":">= 0.6.0","underscore":"1.3.3","moment":"1.7.0","node-terminal":"0.1.1","string":"0.2.1-2"},"engine":"node >= 0.4.12","main":"./lib/index.js","keywords":["github","kanban","issues","tracking"],"repository":{"type":"git","url":"https://git@github.com:alphashack/gitban.git"},"bin":{"gitban":"./bin/cli.js"},"readme":"gitban\n======\n\n*A very simple command line kanban-esque tool for use with github issues*\n\n##Installation\n\n npm install gitban -g\n \nNext, create the following labels in your github project:\n\nGB0 - Backlog \nGB1 - Ready \nGB2 - Doing \n\nThat's it!\n\n##Usage\n\nYou can always get help\n\n gitban --help\n \nFor most actions you will need to specify:\n\n* github login name\n* github password\n* organization\n* repository\n\nThese can be put in a file called *.gitban.json* in your home directory for convenience. The format is:\n\n {\n \"user\" : \"username\",\n \"pass\" : \"password\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nThe options set in *.gitban.json* will be overridden by anything specified explicitly on the command line.\n\nNote: For better security you may wish to not use basic authentication but instead use OAuth. To do this\nyou must first create a an OAuth token with the following command line:\n\n curl -u '' -d '{\"scopes\":\"repo\",\"note\":\"gitban\"}' https://api.github.com/authorizations\n \nYou will be prompted to login then you should see some JSON that looks like:\n\n {\n \"token\": \"\",\n \"note\": \"gitban\",\n \"note_url\": null,\n \"scopes\": [\n \"repo\"\n ],\n \"created_at\": \"2012-06-28T04:57:16Z\",\n \"app\": {\n \"url\": \"http://developer.github.com/v3/oauth/#oauth-authorizations-api\",\n \"name\": \"gitban (API)\"\n },\n \"url\": \"https://api.github.com/authorizations/437559\",\n \"id\": 437559,\n \"updated_at\": \"2012-06-28T04:57:16Z\"\n }\n \nNow just edit your *.gitban.json* file as follows:\n\n {\n \"token\" : \"\",\n \"user\" : \"username\",\n \"org\" : \"organization\",\n \"repo\" : \"repository\"\n }\n \nDone! From this point forward you can manage (e.g. revoke) this token using the Applications tab from within\nyour github account settings.\n\n###Workflow\n\nThe purpose of this tool is to provide a very simple workflow based loosely on the [kanban board](http://en.wikipedia.org/wiki/Kanban_board) style whereby all issues\nare initially added to the system in a \"backlog\" / unassigned state. Do this by just creating a new issue in github.\n\nNext, issues can be assigned to team members. This puts the issue into a \"ready\" state and can be done using the \"take\" command.\n\n gitban take 47\n \nThis will cause issue #47 to be assigned to you and set its state to ready.\n\nWhen commencing to work on an issue use the \"action\" command.\n(note that you action an issue without having to first take it)\n\n gitban action 47\n \nThis command does several things:\n\n* The issue will be assigned to you if it isn't already\n* The issue will be put into the \"doing\" state\n* Any other issue you may have been working on is moved from the doing to the ready state\n\nAs you can see from this logic the system will enforce only one issue be worked on at a time by each team member.\n\nTo close / complete issue just close the issue using github or the \"fixes #\" syntax in your commit comment.\n\nGitban uses the labels above to differentiate states of issues.\nGitban will add a small comment to the issue describing each state change for tracking.\n\n##Examples\n\n(note: these examples assume you have set up a .gitban.json so that github params do not have to always be specified)\n\nList the issues currently assign to you\n\n gitban list\n \nList issues currently assigned to bob\n\n gitban -a bob list\n \nTake ownership of issue 47 and start working on it\n\n gitban action 47\n \nAssign issue 47 to bob\n\n gitban -a bob take 47\n \nGet information / comments on an issue\n\n gitban info 47\n \nSee a list of what each team member is currently working on\n\n gitban status\n","_id":"gitban@0.0.13","dist":{"shasum":"211edaad355af7e41f690f4ec6ecc12f1fc5fde1","tarball":"http://registry.npmjs.org/gitban/-/gitban-0.0.13.tgz"},"maintainers":[{"name":"pdiemert","email":"pete@playup.com"}]}},"readme":"gitban\n======\n\nvery simple command line kanban-esque tool for use with github issues","maintainers":[{"name":"pdiemert","email":"pete@playup.com"}],"time":{"modified":"2012-08-22T00:08:45.713Z","created":"2012-06-28T03:23:56.067Z","0.0.1":"2012-06-28T03:24:01.151Z","0.0.2":"2012-06-28T03:33:42.226Z","0.0.3":"2012-06-28T04:59:47.106Z","0.0.4":"2012-06-28T05:25:19.613Z","0.0.5":"2012-06-28T07:28:41.650Z","0.0.6":"2012-06-29T01:31:33.023Z","0.0.7":"2012-07-02T01:29:44.978Z","0.0.8":"2012-07-06T07:31:12.477Z","0.0.9":"2012-07-06T07:40:18.323Z","0.0.10":"2012-07-06T08:49:20.685Z","0.0.12":"2012-08-20T02:53:33.584Z","0.0.13":"2012-08-22T00:08:45.713Z"},"author":{"name":"Pete Diemert","email":"pete_diemert@msn.com"},"repository":{"type":"git","url":"https://git@github.com:alphashack/gitban.git"},"_id":"gitban","_rev":"1-d33b3ca04a9d3c9fbe6da63d496dcddf"}#ÿdocument-storeÿgit-hooks-manager¤{"id":"git-hooks-manager","rev":"1-10d3f89a09bf7a451d0f4b3373294943","rev_tree":[{"pos":1,"ids":["10d3f89a09bf7a451d0f4b3373294943",{"status":"available"},[]]}],"rev_map":{"1-10d3f89a09bf7a451d0f4b3373294943":3272},"winningRev":"1-10d3f89a09bf7a451d0f4b3373294943","deleted":false,"seq":3272}ÿby-sequenceÿ0000000000003272 {"name":"git-hooks-manager","description":"hook manager for git","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Thomas Debarochez"},"name":"git-hooks-manager","description":"hook manager for git","version":"0.0.0","main":"index.js","dependencies":{"daemon":"0.5.1","glob":"3.1.9"},"scripts":{"install":"./index.js init"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tdebarochez","email":"thomas.barochez+npm@gmail.com"},"_id":"git-hooks-manager@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.7.9-pre","_defaultsLoaded":true,"dist":{"shasum":"f18ac816e3cd60fe7ba6a0941ead8b16e74ba7c7","tarball":"http://registry.npmjs.org/git-hooks-manager/-/git-hooks-manager-0.0.0.tgz"},"maintainers":[{"name":"tdebarochez","email":"thomas.barochez+npm@gmail.com"}]}},"readme":"Git Hooks Manager\n===\n\nThis package helps you to setup quickly some useful scripts as hook for all your project managed by `git`. Somes are already bundles with this app, but you can add yours. It takes place in `git` hooks directory (`.git/hooks` or `hooks/` for bare repositories).\n\nSetup\n---\n\nInstallation is very simple :\n\n $ cd your-project/.git/ # or simply your-project.git for a bare repository\n $ mv hooks hooks_ # backup existing hooks\n $ git clone git://github.com/tdebarochez/git-hooks-manager.git hooks\n $ cd hooks && npm install # initialization\n\nUsage\n---\n\nThere is two ways to use it :\n\n - clone this repo and use one of provided hooks\n - clone localy this repo, add your own scripts and clone your copy on every of your project\n\nDuring intialization, this application create, for each hook type, one symbolic link to itself and a directory where each symbolic link will be added when you will decide to setup a hook. IE :\n\n -rwxr-xr-x@ 1 tdebarochez staff 10K 24 jui 11:02 index.js\n lrwxr-xr-x 1 tdebarochez staff 53B 18 jui 21:16 post-checkout -> index.js\n drwxr-xr-x 2 tdebarochez staff 68B 18 jui 21:16 post-checkout.d\n\nTo list every setup hooks, run `ls *.d/*`\n\nCommands\n---\n\nUsage :\n\n $ ./index.js \n\n__search__ : list every available hooks for a git hook type (`pre-commit`, `post-commit`, `post-receive`, etc...)\n\n__add__ / __rm__ : setup or remove a hook\n\n__hook__ : execute one by one every setup hooks by type\n\nType `./index.js help ` to get more infos about a command.\n\nYour own hooks\n---\n\nEvery scripts are store in `hooks/` directory, arrange by hook type (ie: `hooks/pre-commit/your-hook-name/`). For every script you must define a `hook.json` file. Example :\n\n {\n \"index\": \"app.js\",\n \"description\": \"long description of your hook\",\n \"post-install\": \"npm install\",\n \"async\": false\n }\n\n__index__ : entry point of your hook\n\n__description__ : long description\n\n__async__ : this property daemonize the main process for long during operation (ie: builds, unit testing, etc...), this is typicaly for `post-something` hooks.\n\n__pre-install__, __post-install__, __pre-remove__ and __post-remove__ : those commands are executed before or after setup or remove a hook for your project. You can use it to download dependencies, cleanup directories, etc...\n\nYou can look at existing hooks to see an example.\n\nTodo\n---\n\nAdd more and more hooks","maintainers":[{"name":"tdebarochez","email":"thomas.barochez+npm@gmail.com"}],"time":{"modified":"2012-06-24T20:42:43.537Z","created":"2012-06-24T20:42:41.632Z","0.0.0":"2012-06-24T20:42:43.537Z"},"author":{"name":"Thomas Debarochez"},"_id":"git-hooks-manager","_rev":"1-10d3f89a09bf7a451d0f4b3373294943"}ÿdocument-storeÿgetpw˜{"id":"getpw","rev":"1-f4bb8ea7c0614046e9e5ff49389dce17","rev_tree":[{"pos":1,"ids":["f4bb8ea7c0614046e9e5ff49389dce17",{"status":"available"},[]]}],"rev_map":{"1-f4bb8ea7c0614046e9e5ff49389dce17":3271},"winningRev":"1-f4bb8ea7c0614046e9e5ff49389dce17","deleted":false,"seq":3271}ÿby-sequenceÿ0000000000003271{"name":"getpw","description":"node.js wrapper for POSIX getpwuid() function","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"getpw","description":"node.js wrapper for POSIX getpwuid() function","version":"0.0.1","contributors":[{"name":"Ken Woodruff","email":"ken.woodruff@gmail.com"}],"repository":{"type":"git","url":"git://github.com/femto113/node-getpw.git"},"main":"build/Release/getpw.node","engines":{"node":">= 0.4.7"},"_npmUser":{"name":"femto113","email":"ken.woodruff@gmail.com"},"_id":"getpw@0.0.1","scripts":{"preinstall":"node-waf clean || (exit 0); node-waf configure build"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"ba594af71fc49a05e50b096cfa8117bb734db1bc","tarball":"http://registry.npmjs.org/getpw/-/getpw-0.0.1.tgz"},"maintainers":[{"name":"femto113","email":"ken.woodruff@gmail.com"}]},"0.0.2":{"name":"getpw","description":"node.js wrapper for POSIX getpwuid() function","version":"0.0.2","contributors":[{"name":"Ken Woodruff","email":"ken.woodruff@gmail.com"}],"repository":{"type":"git","url":"git://github.com/femto113/node-getpw.git"},"main":"build/Release/getpw.node","scripts":{"preinstall":"node-waf configure build","prepublish":"node-waf distclean","test":"node test.js"},"engines":{"node":">= 0.4.7"},"_npmUser":{"name":"femto113","email":"ken.woodruff@gmail.com"},"_id":"getpw@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"bac9660bf374ecbc43b8317a3ec340994abc46b2","tarball":"http://registry.npmjs.org/getpw/-/getpw-0.0.2.tgz"},"maintainers":[{"name":"femto113","email":"ken.woodruff@gmail.com"}]}},"readme":"# getpw\n\nnode.js wrapper for POSIX {getpwuid()} function. The main use of this method\nis to convert numeric user ids (e.g. as obtainable from {process.getuid()})\ninto string user names.\n\nFor more info\n\n man getpwuid\n\n## Install\n\n npm install getpw\n\nor\n\n git clone http://github.com/femto113/node-getpw.git\n cd getpw\n npm link\n\n## Example\n\n var getpw = require(\"getpw\");\n\n console.log(getpw.getpwuid(process.getuid())\n \noutputs something like\n\n {\n pw_name: 'femto113',\n pw_uid: 113,\n pw_gid: 22,\n pw_dir: '/home/femto113',\n pw_shell: '/bin/tcsh'\n }\n\n## TODO\n\n- will probably blow up on non-POSIX (i.e. Windows) OS \n- there are some other functions (esp. {getpwnam()}) that \n would make sense to add\n","maintainers":[{"name":"femto113","email":"ken.woodruff@gmail.com"}],"time":{"modified":"2012-05-09T21:11:45.768Z","created":"2012-02-24T00:18:21.933Z","0.0.1":"2012-02-24T00:18:23.749Z","0.0.2":"2012-05-09T21:11:45.768Z"},"repository":{"type":"git","url":"git://github.com/femto113/node-getpw.git"},"_id":"getpw","_rev":"1-f4bb8ea7c0614046e9e5ff49389dce17"}ÿdocument-storeÿgeom2d™{"id":"geom2d","rev":"1-42178cba8a97a86888090ece90e993fc","rev_tree":[{"pos":1,"ids":["42178cba8a97a86888090ece90e993fc",{"status":"available"},[]]}],"rev_map":{"1-42178cba8a97a86888090ece90e993fc":3270},"winningRev":"1-42178cba8a97a86888090ece90e993fc","deleted":false,"seq":3270}ÿby-sequenceÿ0000000000003270à+{"name":"geom2d","description":"A library for basic 2D affine transformations; will likely add other little items","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"geom2d","description":"A library for basic 2D affine transformations; will likely add other little items","version":"0.0.1","directories":{"lib":"./lib"},"main":"index.js","author":{"name":"Chris Coyne","email":"ccoyne77@gmail.com"},"repository":{"type":"git","url":"git://github.com/okcupid/node-geom2d.git"},"devDependencies":{"iced-coffee-script":"1.3.1a"},"scripts":{"preinstall":"cake build"},"licenses":[{"type":"MIT","url":"http://github.com/okcupid/node-geom2d/raw/master/LICENSE"}],"_npmUser":{"name":"malgorithms","email":"ccoyne77@gmail.com"},"_id":"geom2d@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"f1673baf06110d8f69df0dd86c66fb8e8c6966f1","tarball":"http://registry.npmjs.org/geom2d/-/geom2d-0.0.1.tgz"},"maintainers":[{"name":"malgorithms","email":"ccoyne77@gmail.com"}]},"0.0.2":{"name":"geom2d","description":"A library for basic 2D affine transformations; will likely add other little items","version":"0.0.2","directories":{"lib":"./lib"},"main":"index.js","author":{"name":"Chris Coyne","email":"ccoyne77@gmail.com"},"repository":{"type":"git","url":"git://github.com/okcupid/node-geom2d.git"},"devDependencies":{"iced-coffee-script":"1.3.1a"},"scripts":{"preinstall":"cake build"},"licenses":[{"type":"MIT","url":"http://github.com/okcupid/node-geom2d/raw/master/LICENSE"}],"_npmUser":{"name":"malgorithms","email":"ccoyne77@gmail.com"},"_id":"geom2d@0.0.2","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"f41d4e42faa59726966057defe612793fff67937","tarball":"http://registry.npmjs.org/geom2d/-/geom2d-0.0.2.tgz"},"maintainers":[{"name":"malgorithms","email":"ccoyne77@gmail.com"}]},"0.0.3":{"name":"geom2d","description":"A library for basic 2D affine transformations; will likely add other little items","version":"0.0.3","directories":{"lib":"./lib"},"main":"index.js","author":{"name":"Chris Coyne","email":"ccoyne77@gmail.com"},"repository":{"type":"git","url":"git://github.com/okcupid/node-geom2d.git"},"devDependencies":{"iced-coffee-script":"1.3.1a"},"scripts":{"preinstall":"cake build"},"licenses":[{"type":"MIT","url":"http://github.com/okcupid/node-geom2d/raw/master/LICENSE"}],"_npmUser":{"name":"malgorithms","email":"ccoyne77@gmail.com"},"_id":"geom2d@0.0.3","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"d262aaf7378ea6b02e699096eec1dc8b3b6dc1ad","tarball":"http://registry.npmjs.org/geom2d/-/geom2d-0.0.3.tgz"},"maintainers":[{"name":"malgorithms","email":"ccoyne77@gmail.com"}]},"0.0.4":{"name":"geom2d","description":"A library for basic 2D affine transformations; will likely add other little items","version":"0.0.4","directories":{"lib":"./lib"},"main":"index.js","author":{"name":"Chris Coyne","email":"ccoyne77@gmail.com"},"repository":{"type":"git","url":"git://github.com/okcupid/node-geom2d.git"},"devDependencies":{"iced-coffee-script":"1.3.1a","stitch":"0.3.3"},"licenses":[{"type":"MIT","url":"http://github.com/okcupid/node-geom2d/raw/master/LICENSE"}],"_npmUser":{"name":"malgorithms","email":"ccoyne77@gmail.com"},"_id":"geom2d@0.0.4","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"62eeb16085abe3d5253ce74945cf7b25d0e1391b","tarball":"http://registry.npmjs.org/geom2d/-/geom2d-0.0.4.tgz"},"maintainers":[{"name":"malgorithms","email":"ccoyne77@gmail.com"}]}},"readme":"Explanation\n============\nA very alpha version of a nodejs module for doing affine transformations and (coming soon) other simple transformations\nI need for a bigger project. My first node module. Written in IcedCoffeeScript.\n\nInstallation\n============\n```\nnpm install -g geom2d\n```\n\nUsage (CoffeeScript example)\n============================\n```\n{affine, vector, polygon} = require 'geom2d'\n\nrot_left = new affine.rotation Math.PI / 4\nrot_right = new affine.rotation -Math.PI / 4\ngo_big = new affine.scaling 2, 4\ngo_small = new affine.scaling 0.5, 0.25\n\n# 4 compositions that should net nothing\n# --------------------------------------\ndo_nothing = rot_left.copy()\ndo_nothing.rightComposeWith rot_right\ndo_nothing.rightComposeWith go_big\ndo_nothing.rightComposeWith go_small\n\nsquare = polygon.factory.unitSquare()\nsquare.transform do_nothing\n\nconsole.log square\n```\n\n\nContributing\n============\nAll `.js` and `.json` files are auto-generated. Please edit the appropropriate `.iced` files and run `cake build` before committing.\n\ngeom2d is written in an improved version of CoffeeScript called \"IcedCoffeeScript\".\n\n\n","maintainers":[{"name":"malgorithms","email":"ccoyne77@gmail.com"}],"time":{"modified":"2012-05-10T16:38:06.965Z","created":"2012-04-26T18:57:36.592Z","0.0.1":"2012-04-26T18:57:36.920Z","0.0.2":"2012-04-26T20:26:53.336Z","0.0.3":"2012-05-01T19:27:50.445Z","0.0.4":"2012-05-10T16:38:06.965Z"},"author":{"name":"Chris Coyne","email":"ccoyne77@gmail.com"},"repository":{"type":"git","url":"git://github.com/okcupid/node-geom2d.git"},"_id":"geom2d","_rev":"1-42178cba8a97a86888090ece90e993fc"}ÿdocument-storeÿgaddag.jsœ{"id":"gaddag.js","rev":"1-e4123f31b576eae74209f0c52ae32268","rev_tree":[{"pos":1,"ids":["e4123f31b576eae74209f0c52ae32268",{"status":"available"},[]]}],"rev_map":{"1-e4123f31b576eae74209f0c52ae32268":3269},"winningRev":"1-e4123f31b576eae74209f0c52ae32268","deleted":false,"seq":3269}ÿby-sequenceÿ0000000000003269›{"name":"gaddag.js","description":"A package for constructing a GADDAG, a specialized version of a DAWG commonly used in Scrabble-like wordfinding scenarios","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Johan Hillerström","email":"progr@mmer.nu","url":"https://github.com/hillerstorm"},"name":"gaddag.js","description":"A package for constructing a GADDAG, a specialized version of a DAWG commonly used in Scrabble-like wordfinding scenarios","version":"0.0.0","homepage":"https://github.com/hillerstorm/gaddag.js","repository":{"type":"git","url":"git://github.com/hillerstorm/gaddag.js.git"},"main":"gaddag","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"hillerstorm","email":"progr@mmer.nu"},"_id":"gaddag.js@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"5cbd39e416d3d649844f75fac58e165597a23709","tarball":"http://registry.npmjs.org/gaddag.js/-/gaddag.js-0.0.0.tgz"},"maintainers":[{"name":"hillerstorm","email":"progr@mmer.nu"}],"directories":{},"deprecated":"renamed gaddag :o"},"0.0.1":{"author":{"name":"Johan Hillerström","email":"progr@mmer.nu","url":"https://github.com/hillerstorm"},"name":"gaddag.js","description":"A package for constructing a GADDAG, a specialized version of a DAWG commonly used in Scrabble-like wordfinding scenarios","version":"0.0.1","homepage":"https://github.com/hillerstorm/gaddag.js","repository":{"type":"git","url":"git://github.com/hillerstorm/gaddag.js.git"},"main":"gaddag","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"hillerstorm","email":"progr@mmer.nu"},"_id":"gaddag.js@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"719fd1f6e06857177de12b87b2196ded48032f36","tarball":"http://registry.npmjs.org/gaddag.js/-/gaddag.js-0.0.1.tgz"},"maintainers":[{"name":"hillerstorm","email":"progr@mmer.nu"}],"directories":{},"deprecated":"renamed gaddag :o"}},"readme":"gaddag.js\r\n=========\r\n\r\nA package for constructing a GADDAG, a specialized version of a DAWG commonly used in Scrabble-like wordfinding scenarios","maintainers":[{"name":"hillerstorm","email":"progr@mmer.nu"}],"time":{"modified":"2012-05-10T20:27:22.509Z","created":"2012-05-10T20:23:40.699Z","0.0.0":"2012-05-10T20:23:42.344Z","0.0.1":"2012-05-10T20:24:40.856Z"},"author":{"name":"Johan Hillerström","email":"progr@m)Ifeùmer.nu","url":"https://github.com/hillerstorm"},"repository":{"type":"git","url":"git://github.com/hillerstorm/gaddag.js.git"},"_id":"gaddag.js","_rev":"1-e4123f31b576eae74209f0c52ae32268"}ÿdocument-storeÿgab–{"id":"gab","rev":"1-987f738dbf8037e3d3de16b72aea4f0b","rev_tree":[{"pos":1,"ids":["987f738dbf8037e3d3de16b72aea4f0b",{"status":"available"},[]]}],"rev_map":{"1-987f738dbf8037e3d3de16b72aea4f0b":3268},"winningRev":"1-987f738dbf8037e3d3de16b72aea4f0b","deleted":false,"seq":3268}ÿby-sequenceÿ0000000000003268È{"name":"gab","description":"A module to help implement command/response protocols","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"gab","id":"gab","version":"0.0.1","description":"A module to help implement command/response protocols","keywords":["protocol","command","response","chat","nntp","ftp"],"author":{"name":"Sergi Mansilla","email":"sergi.mansilla@gmail.com","url":"http://sergimansilla.com"},"homepage":"https://github.com/sergi/gab","repository":{"type":"git","url":"git://github.com/sergi/gab.git"},"bugs":{"url":"https://github.com/sergi/gab/issues"},"dependencies":{},"devDependencies":{},"main":"./gab.js","engines":{"node":">=0.4"},"licenses":[{"type":"MIT","url":"https://github.com/sergi/gab/blob/master/LICENSE"}],"_npmUser":{"name":"sergi","email":"sergi.mansilla@gmail.com"},"_id":"gab@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"d1d2de9fc4d9751fb4446cc191054b9a48571e95","tarball":"http://registry.npmjs.org/gab/-/gab-0.0.1.tgz"},"readme":"","maintainers":[{"name":"sergi","email":"sergi.mansilla@gmail.com"}]},"0.0.2":{"name":"gab","id":"gab","version":"0.0.2","description":"A module to help implement command/response protocols","keywords":["protocol","command","response","chat","nntp","ftp"],"author":{"name":"Sergi Mansilla","email":"sergi.mansilla@gmail.com","url":"http://sergimansilla.com"},"homepage":"https://github.com/sergi/gab","repository":{"type":"git","url":"git://github.com/sergi/gab.git"},"bugs":{"url":"https://github.com/sergi/gab/issues"},"dependencies":{},"devDependencies":{},"main":"./gab.js","engines":{"node":">=0.4"},"licenses":[{"type":"MIT","url":"https://github.com/sergi/gab/blob/master/LICENSE"}],"_npmUser":{"name":"sergi","email":"sergi.mansilla@gmail.com"},"_id":"gab@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"748f588c1e798e220204a7a3168e6b384cd5920e","tarball":"http://registry.npmjs.org/gab/-/gab-0.0.2.tgz"},"readme":"","maintainers":[{"name":"sergi","email":"sergi.mansilla@gmail.com"}]}},"readme":"","maintainers":[{"name":"sergi","email":"sergi.mansilla@gmail.com"}],"time":{"modified":"2012-05-09T15:22:59.570Z","created":"2012-05-04T12:14:26.473Z","0.0.1":"2012-05-04T12:14:28.024Z","0.0.2":"2012-05-09T15:22:59.570Z"},"author":{"name":"Sergi Mansilla","email":"sergi.mansilla@gmail.com","url":"http://sergimansilla.com"},"repository":{"type":"git","url":"git://github.com/sergi/gab.git"},"_id":"gab","_rev":"1-987f738dbf8037e3d3de16b72aea4f0b"}ÿdocument-storeÿfs-ex˜{"id":"fs-ex","rev":"1-48edd784feeb519a7049fad52f44fe9d","rev_tree":[{"pos":1,"ids":["48edd784feeb519a7049fad52f44fe9d",{"status":"available"},[]]}],"rev_map":{"1-48edd784feeb519a7049fad52f44fe9d":3267},"winningRev":"1-48edd784feeb519a7049fad52f44fe9d","deleted":false,"seq":3267}ÿby-sequenceÿ0000000000003267õ{"name":"fs-ex","description":"extended fs library","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"vol4ok","email":"hello@vol4ok.net"},"name":"fs-ex","description":"extended fs library","version":"0.0.1","main":"fs-ex.js","repository":{"url":"git://github.com/vol4ok/fs-ex.git"},"dependencies":{"fs.walker":">=0.0.6"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"vol4ok","email":"admin@vol4ok.net"},"_id":"fs-ex@0.0.1","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"16e0ec890b17fbdc5972d6c4a5ccce5bcc684059","tarball":"http://registry.npmjs.org/fs-ex/-/fs-ex-0.0.1.tgz"},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]}},"readme":"","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}],"time":{"modified":"2012-05-10T07:57:17.430Z","created":"2012-05-10T07:57:15.566Z","0.0.1":"2012-05-10T07:57:17.430Z"},"author":{"name":"vol4ok","email":"hello@vol4ok.net"},"repository":{"url":"git://github.com/vol4ok/fs-ex.git"},"_id":"fs-ex","_rev":"1-48edd784feeb519a7049fad52f44fe9d"}ÿdocument-storeÿflowtools.jsŸ{"id":"flowtools.js","rev":"1-42cdf2a13fa8bc3441cf7a19b7f2163f","rev_tree":[{"pos":1,"ids":["42cdf2a13fa8bc3441cf7a19b7f2163f",{"status":"available"},[]]}],"rev_map":{"1-42cdf2a13fa8bc3441cf7a19b7f2163f":3266},"winningRev":"1-42cdf2a13fa8bc3441cf7a19b7f2163f","deleted":false,"seq":3266}ÿby-sequenceÿ0000000000003266”{"name":"flowtools.js","description":"flowtools.js gives game to your apis.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"flowtools.js","description":"flowtools.js gives game to your apis.","author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"version":"0.1.0","main":"index.js","scripts":{"test":"./node_modules/mocha/bin/mocha -R spec"},"repository":{"type":"git","url":"https://github.com/caryhaynie/flowtools.js.git"},"devDependencies":{"mocha":"latest","expect.js":"latest"},"license":"MIT","engines":{"node":">=0.6"},"readme":"# flowtools.js -- tools for people who write async tools.\n\n## installing \n\n### via git ( using npm link )\n\n`$ git clone https//github.com/caryhaynie/flowtools.js.git`\n\nfollowed by:\n\n`$ cd flowtools.js; sudo npm link`\n\n`$ npm link flow.js`\n\n### via npm\n\n`$ npm install flowtools.js`\n\n","_id":"flowtools.js@0.1.0","dist":{"shasum":"176f368e468043f3638d718742967b4801ff408c","tarball":"http://registry.npmjs.org/flowtools.js/-/flowtools.js-0.1.0.tgz"},"maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}]}},"readme":"# flowtools.js -- tools for people who write async tools.\n\n## installing \n\n### via git ( using npm link )\n\n`$ git clone https//github.com/caryhaynie/flowtools.js.git`\n\nfollowed by:\n\n`$ cd flowtools.js; sudo npm link`\n\n`$ npm link flow.js`\n\n### via npm\n\n`$ npm install flowtools.js`\n\n","maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}],"time":{"modified":"2012-07-10T00:41:00.520Z","created":"2012-07-10T00:40:59.999Z","0.1.0":"2012-07-10T00:41:00.520Z"},"author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"repository":{"type":"git","url":"https://github.com/caryhaynie/flowtools.js.git"},"_id":"flowtools.js","_rev":"1-42cdf2a13fa8bc3441cf7a19b7f2163f"} ÿdocument-storeÿflashsocket-js¡{"id":"flashsocket-js","rev":"1-1348bcec95581ab46da040265cc9381f","rev_tree":[{"pos":1,"ids":["1348bcec95581ab46da040265cc9381f",{"status":"available"},[]]}],"rev_map":{"1-1348bcec95581ab46da040265cc9381f":3265},"winningRev":"1-1348bcec95581ab46da040265cc9381f","deleted":false,"seq":3265}ÿby-sequenceÿ0000000000003265› {"name":"flashsocket-js","description":"JS flash socket protocol","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"flashsocket-js","description":"JS flash socket protocol","version":"0.0.1","author":{"name":"Pavel Dobrev","email":"pavelgdobrev@gmail.com"},"keywords":["javascript","flash","socket"],"directories":{"lib":"./lib"},"engines":{"node":">= 0.2.0"},"main":"./index","licenses":[{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"}],"readme":"flashsocket-js\n==============\n\nJavascript flash socket protocol","_id":"flashsocket-js@0.0.1","dist":{"shasum":"01073798c65b257523a5dd2f6e42af2492ee16f6","tarball":"http://registry.npmjs.org/flashsocket-js/-/flashsocket-js-0.0.1.tgz"},"scripts":{},"_npmVersion":"1.1.58","_npmUser":{"name":"robbflynn","email":"pavelgdobrev@gmail.com"},"maintainers":[{"name":"robbflynn","email":"pavelgdobrev@gmail.com"}]}},"readme":"flashsocket-js\n==============\n\nJavascript flash socket protocol","maintainers":[{"name":"robbflynn","email":"pavelgdobrev@gmail.com"}],"time":{"modified":"2012-08-22T10:10:14.607Z","created":"2012-08-22T10:10:12.773Z","0.0.1":"2012-08-22T10:10:14.607Z"},"author":{"name":"Pavel Dobrev","email":"pavelgdobrev@gmail.com"},"_id":"flashsocket-js","_rev":"1-1348bcec95581ab46da040265cc9381f"}"ÿdocument-storeÿfibonacci-native£{"id":"fibonacci-native","rev":"1-0c079a5c27e7bb42e954c61e7910f14e","rev_tree":[{"pos":1,"ids":["0c079a5c27e7bb42e954c61e7910f14e",{"status":"available"},[]]}],"rev_map":{"1-0c079a5c27e7bb42e954c61e7910f14e":3264},"winningRev":"1-0c079a5c27e7bb42e954c61e7910f14e","deleted":false,"seq":3264}ÿby-sequenceÿ0000000000003264¦ {"name":"fibonacci-native","description":"A C++ addon to compute the nth fibonacci number.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"AvianFlu","email":"charlie@charlieistheman.com"},"name":"fibonacci-native","description":"A C++ addon to compute the nth fibonacci number.","version":"0.0.0","repository":{"type":"git","url":"git://github.com/AvianFlu/fibonacci-native.git"},"main":"lib/binding.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"avianflu","email":"charlie@charlieistheman.com"},"_id":"fibonacci-native@0.0.0","scripts":{"preinstall":"node-waf clean || (exit 0); node-waf configure build"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"919172ed727b69b7ba7c4bca34c92897004fa44d","tarball":"http://registry.npmjs.org/fibonacci-native/-/fibonacci-native-0.0.0.tgz"},"readme":"","maintainers":[{"name":"avianflu","email":"charlie@charlieistheman.com"}]}},"readme":"","maintainers":[{"name":"avianflu","email":"charlie@charlieistheman.com"}],"time":{"modified":"2012-03-21T06:17:25.843Z","created":"2012-03-21T06:17:24.220Z","0.0.0":"2012-03-21T06:17:25.843Z"},"author":{"name":"AvianFlu","email":"charlie@charlieistheman.com"},"repository":{"type":"git","url":"git://github.com/AvianFlu/fibonacci-native.git"},"_id":"fibonacci-native","_rev":"1-0c079a5c27e7bb42e954c61e7910f14e"}ÿdocument-storeÿfeat—{"id":"feat","rev":"1-febc96a7c19362452b2d2777fa0b242e","rev_tree":[{"pos":1,"ids":["febc96a7c19362452b2d2777fa0b242e",{"status":"available"},[]]}],"rev_map":{"1-febc96a7c19362452b2d2777fa0b242e":3263},"winningRev":"1-febc96a7c19362452b2d2777fa0b242e","deleted":false,"seq":3263}ÿby-sequenceÿ0000000000003263ÔG{"name":"feat","description":"A framework for organizing and loading code by feature with built-in rollout support.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.2":{"author":{"name":"Chris Powers","email":"chrisjpowers@gmail.com","url":"http://chrisjpowers.com"},"name":"feat","description":"A framework for organizing and loading code by feature with built-in rollout support.","version":"0.0.2","main":"index.js","bin":{"feat":"bin/feat"},"dependencies":{"coffee-script":"*","express":"> 2.0.0","underscore":"*","glob":"*","mocha":"*","should":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"chrisjpowers","email":"chrisjpowers@gmail.com"},"_id":"feat@0.0.2","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"99eab9e34c9826532cc91dc1cbed7226060266d9","tarball":"http://registry.npmjs.org/feat/-/feat-0.0.2.tgz"},"maintainers":[{"name":"chrisjpowers","email":"chrisjpowers@gmail.com"}]},"0.0.3":{"author":{"name":"Chris Powers","email":"chrisjpowers@gmail.com","url":"http://chrisjpowers.com"},"name":"feat","description":"A framework for organizing and loading code by feature with built-in rollout support.","version":"0.0.3","main":"index.js","bin":{"feat":"bin/feat"},"dependencies":{"coffee-script":"*","express":"> 2.0.0","underscore":"*","glob":"*","mocha":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"chrisjpowers","email":"chrisjpowers@gmail.com"},"_id":"feat@0.0.3","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"2f61f01bb304f382564b8a91049637a62fe75348","tarball":"http://registry.npmjs.org/feat/-/feat-0.0.3.tgz"},"maintainers":[{"name":"chrisjpowers","email":"chrisjpowers@gmail.com"}]}},"readme":"# Feat\n\nSuccessfully organizing your source code as your app grows can be quite a *feat*.\nThat's why I wrote **Feat**.\n\nFeat is a tool for modularly organizing your Node.js code by feature rathan than taxonomy. \nRails-style `model`, `controller`, `view`, etc. directories bloat uncontrollably\nover time, so Feat puts all the code that pertains to a given feature in its\nown directory. Every file that has to do with the given feature is colocated,\nmaking it easy find your source code. Your file structure grows horizontally\nrather than vertically, leveraging feature names to add an extra layer of\ncontext to the code it contains.\n\nAdditionally, Feat allows you to easily toggle your features on and off without\nhaving to restart your server! This gives you built-in dynamic feature rollout\nfunctionality and can even help you A/B test your features.\n\n*Disclaimer: Feat's API is still in flux, so breaking changes may occur.*\n\n## Installation\n\nInstall Feat as a global `npm` package so that you can use the `feat` command anywhere:\n\n```bash\nnpm install -g feat\n```\n\nOn the command line, `cd` to a Node.js project and use `feat add` to add a feature:\n\n```bash\ncd /path/to/myproject\nfeat add first-feature\n```\n\nThis will add a `./features/first-feature` directory to your project. It also\nwill add `./features.json` where it will persist your current features configuration.\nYou can use this command to add additional features, or simply add your own\nfolders to the `./features` directory.\n\n## Usage\n\n### Middleware\n\nFirst you need to add `feat.middleware()` to your Connect-compatible server:\n\n```javascript\nvar feat = require(\"feat\"),\n express = require(\"express\"),\n app = express.createServer();\n\napp.use(feat.middleware());\napp.listen(8080);\n```\n\n### Feature Servers\n\nIf you look in `./features/first-feature/index.js` you will see that by\ndefault it creates an Express server and exports it as `exports.server`.\nWhen you boot your app up, Feat will wire up the servers of all enabled\nfeatures, leaving out the disabled features.\n\nHere's a trivial example of a feature's server:\n\n```javascript\n// ./features/first-feature/index.js\nvar feat = require(\"feat\"),\n express = require(\"express\");\n\nvar server = exports.server = express.createServer();\n\nserver.get(\"/foo\", function(req, res) {\n res.send(\"bar\");\n});\n```\n\n### Enabling/Disabling Features\n\nIf you start your server and visit `/foo` you will see the server respond\nwith \"bar\" because new features are turned on by default. To disable a feature,\nuse `feat disable`:\n\n```bash\nfeat disable first-feature\n```\n\nNow if you visit `/foo` you should should not see a response. To turn the\nfeature back on, use `feat enable`:\n\n```bash\nfeat enable first-feature\n```\n\n*NOTE: Features can be enabled and disabled \"hot\" without restarting your server!*\n\n### Feature Events\n\nWhile it should be a goal to keep features as detached from one another as\npossible, clearly there will points of interaction that will have to be\nsetup when a feature is turned on and torn down when a feature is turned off.\nIt is a good practice to have features offer services to other features to\nisolate and control the interactions. \n\nFor example, let's say that we have a\n`navigation` feature that manages the links in our site's nav. If our\n`first-feature` needs to display a link in the navigation, it should only do\nso when it is active. If it is deactivated, it needs to remove its link\nfrom the navigation.\n\nThe `feat` object is an `EventEmitter` that emits events when features are\nturned on and off. Here is how we could handle our navigation:\n\n```javascript\n// ./features/first-feature/index.js\nvar feat = require(\"feat\"),\n express = require(\"express\"),\n nav = require(\"../navigation\");\n\nvar server = exports.server = express.createServer();\n\nserver.get(\"/foo\", function(req, res) {\n res.send(\"bar\");\n});\n\nfeat.on(\"first-feature:on\", function() {\n nav.add(\"/foo\", \"Foo\");\n});\n\nfeat.on(\"first-feature:off\", function() {\n nav.remove(\"/foo\");\n});\n```\n\nAssuming that the `navigation` feature exported the `add` and `remove`\nfunctions, we would be able to use them in this way to ensure our nav\nis only present when this feature is turned on.\n\n### Running an Isolated Feature Server\n\nAs an app grows in size, it can be useful in development to run a server\nwith your feature but without the rest. Feat supports this with the `start`\ncommand:\n\n```bash\nfeat start first-feature\n```\n\nWithout a feature name, `feat start` runs whatever command you have for\n`npm start` in your `package.json` file.\n\n### Running Isolated Feature Specs\n\nSimilarly, running specs for a single feature is supported:\n\n```bash\nfeat test first-feature\n```\n\nFeat assumes your feature directory has either a `spec` or `test` directory\nwith an optional `spec-helper.js` or `test-helper.js` file and tests that\nuse a *test.js or *spec.js naming convention. *NOTE: Coffeescript files\nwill also work automatically.*\n\n`feat test` runs your feature's server at `localhost:8228` by default, adding\n`{ENV: \"test\"}` to `process.env`. You can specify a custom port if needbe by\nsetting the `PORT` environment variable when you start `feat test`.\n\nRunning `feat test` without a feature name will run your server with `npm test`\nand load all your features' tests.\n\n## Plugins\n\n### GUI\n\nWhile enabling/disabling features from the command line works, it may be nice\nto have a GUI for easily managing feature state in development and testing.\nFeat ships with a GUI middleware that you can add to your server stack:\n\n```javascript\nvar feat = require(\"feat\"),\n express = require(\"express\"),\n app = express.createServer();\n\napp.use(feat.middleware());\nif(process.env.ENV === \"development\") {\n app.use(feat.gui());\n}\napp.listen(8080);\n```\n\nThere is currently *no authentication* built into the GUI, so it's important\nthat you do not deploy it to a production environment. One interesting\npossibility is to create a \"gui\" feature that uses this middleware, that\nway you are able to turn it on and off on the fly!\n\n## Todos\n\nRight now this organization strategy is experimental and I haven't actually\nbuilt out a project with it yet to validate whether or not it's effective.\nI am actively looking for feedback and ideas about what works, what doesn't\nand what is missing!\n\n* Add code examples\n* Build some apps with Feat to validate/invalidate the approach.\n* Explore using Feat for graduated feature rollouts.\n* Explore using Feat to A/B test features.\n* Evaluate `feat test` and `feat server` -- are they useful?\n* Evaluate on-the-fly feature switching -- is it worth the cost?\n* Improve the GUI plugin\n* Use something better than `fs.watchFile` to watch for changes to `features.json`\n","maintainers":[{"name":"chrisjpowers","email":"chrisjpowers@gmail.com"}],"time":{"modified":"2012-05-10T14:41:34.184Z","created":"2012-05-05T01:44:07.358Z","0.0.2":"2012-05-05T01:44:08.132Z","0.0.3":"2012-05-10T14:41:34.184Z"},"author":{"name":"Chris Powers","email":"chrisjpowers@gmail.com","url":"http://chrisjpowers.com"},"_id":"feat","_rev":"1-febc96a7c19362452b2d2777fa0b242e"}ÿdocument-storeÿextentsš{"id":"extents","rev":"1-87e1348132de4b8fe5a515fe07ebedbe","rev_tree":[{"pos":1,"ids":["87e1348132de4b8fe5a515fe07ebedbe",{"status":"available"},[]]}],"rev_map":{"1-87e1348132de4b8fe5a515fe07ebedbe":3262},"winningRev":"1-87e1348132de4b8fe5a515fe07ebedbe","deleted":false,"seq":3262}ÿby-sequenceÿ0000000000003262Å {"name":"extents","description":"compute the bounding extents of a polygon","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"extents","version":"0.0.0","description":"compute the bounding extents of a polygon","main":"index.js","bin":{},"directories":{"example":"example","test":"test"},"dependencies":{},"devDependencies":{"tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/node-extents.git"},"homepage":"https://github.com/substack/node-extents","keywords":["bounding","box","extent","gis"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","engine":{"node":">=0.6"},"readme":"","_id":"extents@0.0.0","dist":{"shasum":"d687ce2a006dcfcaa1102b1fd70b1dd0d47b6d87","tarball":"http://registry.npmjs.org/extents/-/extents-0.0.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2012-07-09T22:37:10.207Z","created":"2012-07-09T22:37:08.923Z","0.0.0":"2012-07-09T22:37:10.207Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/node-extents.git"},"_id":"extents","_rev":"1-87e1348132de4b8fe5a515fe07ebedbe"}ÿdocument-storeÿexpress-yui3Ÿ{"id":"express-yui3","rev":"1-2b3f54a7807f916ab366e831d882089c","rev_tree":[{"pos":1,"ids":["2b3f54a7807f916ab366e831d882089c",{"status":"available"},[]]}],"rev_map":{"1-2b3f54a7807f916ab366e831d882089c":3261},"winningRev":"1-2b3f54a7807f916ab366e831d882089c","deleted":false,"seq":3261}ÿby-sequenceÿ0000000000003261²${"name":"express-yui3","description":"Express bindings for YUI3 modules","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"express-yui3","description":"Express bindings for YUI3 modules","main":"index.js","version":"0.1.0","author":{"name":"Graham Cox","email":"graham@grahamcox.co.uk"},"repository":{"type":"git","url":"git://github.com/sazzer/express-yui3.git"},"dependencies":{"async":">= 0.1.21","beeline":">= 0.1.10"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3"},"license":"MIT/X11","engines":{"node":"*"},"scripts":{"test":"mocha -R spec test/*.js"},"_npmUser":{"name":"sazzer","email":"graham@grahamcox.co.uk"},"_id":"express-yui3@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ee59d93fa88ab9a5860b6c306b5e4746e2af6c6f","tarball":"http://registry.npmjs.org/express-yui3/-/express-yui3-0.1.0.tgz"},"maintainers":[{"name":"sazzer","email":"graham@grahamcox.co.uk"}]},"0.1.1":{"name":"express-yui3","description":"Express bindings for YUI3 modules","main":"index.js","version":"0.1.1","author":{"name":"Graham Cox","email":"graham@grahamcox.co.uk"},"repository":{"type":"git","url":"git://github.com/sazzer/express-yui3.git"},"dependencies":{"async":">= 0.1.21","beeline":">= 0.1.10"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3"},"license":"MIT/X11","engines":{"node":"*"},"scripts":{"test":"mocha -R spec test/*.js"},"_npmUser":{"name":"sazzer","email":"graham@grahamcox.co.uk"},"_id":"express-yui3@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1a9a0ea05458eef971781729f30eda8f341d5288","tarball":"http://registry.npmjs.org/express-yui3/-/express-yui3-0.1.1.tgz"},"maintainers":[{"name":"sazzer","email":"graham@grahamcox.co.uk"}]}},"readme":"# Express-yui3\n\nMaking configuration of YUI3 modules painless\n\n## Goals\n* Simple\n* Easy to use\n* Fast\n* Remove duplication of configuration required for YUI3 modules\n\n## What doesn't it do yet\nSo far the loader that is generated is incredably simple. So simple in fact that it doesn't do hardly anything. Features currently missing that will be added as and when I get round to it are:\n* Support for language files\n* Support for widget assets\n* Support for comboing of modules\n* Support for rollups\n* Support for minifiction of modules\n* Support for css modules\n* Support for submodules\n* More testing\n\n## Examples\n\n```javascript\nvar express = require(\"express\"),\n app = express.createServer(),\n expressYui3 = require(\"express-yui3\");\n\napp.configure(function() {\n // Standard Express configuration options\n app.use(\"/yui3\", expressYui3.handler(__dirname + \"/yui3\"));\n // Standard Express configuration options\n});\n```\n\nThis configures up an Express HTTP server, and serves up the YUI3 modules on the \"/yui3\" route. This then provides a Javascript file at \"/yui3/loader\" that gives the YUI3 loader configuration to locate all of the modules that were automatically discovered in the directory __dirname + \"/yui3\". \n\nThe Javascript that is written for the loader will look as follows:\n```javascript\nvar YUI_config = YUI_config || {};\nYUI_config.groups = YUI_config.groups || {};\nYUI_config.groups[\"express-yui3\"] = {\n \"base\": \"/yui3/modules\",\n \"modules\": {\n // YUI3 Module configuration goes here.\n }\n}\n```\n\nThis will create a global YUI_config object if it doesn't already exist. Then create a YUI_config.groups object if that doesn't already exist. It will then create a group entry called \"express-yui3\" with the configuration of this group of modules.\n\n\n## Using from the browser\n\nUsing the above configuration for Express, you can use your modules in a browser by simply including YUI3 as normal, and then adding a script tag to include the loader:\n```html\n\n```\n\nThis will then set up the YUI_config variable as described above so you can use YUI3 like normal and have all of your modules available to you.\n\n# Developed By\n* Graham Cox\n\n","maintainers":[{"name":"sazzer","email":"graham@grahamcox.co.uk"}],"time":{"modified":"2012-06-04T18:44:03.082Z","created":"2012-05-29T20:19:22.648Z","0.1.0":"2012-05-29T20:19:24.461Z","0.1.1":"2012-06-04T18:44:03.082Z"},"author":{"name":"Graham Cox","email":"graham@grahamcox.co.uk"},"repository":{"type":"git","url":"git://github.com/sazzer/express-yui3.git"},"_id":"express-yui3","_rev":"1-2b3f54a7807f916ab366e831d882089c"}"ÿdocument-storeÿexpress-recorder£{"id":"express-recorder","rev":"1-fd92062c899d15725b3980c8c4f93642","rev_tree":[{"pos":1,"ids":["fd92062c899d15725b3980c8c4f93642",{"status":"available"},[]]}],"rev_map":{"1-fd92062c899d15725b3980c8c4f93642":3260},"winningRev":"1-fd92062c899d15725b3980c8c4f93642","deleted":false,"seq":3260}ÿby-sequenceÿ0000000000003260ž8{"name":"express-recorder","description":"Records your middleware and gives you a result you can assert","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"express-recorder","version":"0.0.1","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your route or middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"express-recorder@0.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"fb759f54d0c0da5af19abd506a9fa26e8e10b0e6","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-0.0.1.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"directories":{}},"0.0.2":{"name":"express-recorder","version":"0.0.2","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your route or middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"express-recorder@0.0.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"27fc83acea8d8bc029832aadf4d93c8b7e2fe4b8","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-0.0.2.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"directories":{}},"0.0.3":{"name":"express-recorder","version":"0.0.3","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your route or middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"express-recorder@0.0.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d1757ebc2eb3557afef90e6f186dd6f7a518afab","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-0.0.3.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"directories":{}},"0.0.4":{"name":"express-recorder","version":"0.0.4","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your route or middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"express-recorder@0.0.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1ef02a2c655b03b1da72e4f2598fbbe14e7765f4","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-0.0.4.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"directories":{}},"0.0.5":{"name":"express-recorder","version":"0.0.5","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your route or middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"express-recorder@0.0.5","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"556c300defd43172b780a30d5e2b13464110df21","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-0.0.5.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"directories":{}},"1.0.0":{"name":"express-recorder","version":"1.0.0","repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"description":"Records your middleware and gives you a result you can assert","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["express","testing","middleware","routes"],"dependencies":{"underscore":"*","difflet":"*","eql":"0.0.5"},"devDependencies":{"should":"*"},"readme":"# Express Recorder\n\nThis module will pass fakes to your middleware which you can assert.\n\n## Example\n\n```js\nvar recorder = require('express-recorder');\n\n// Middleware \n\nvar middleware = function (req, res, next) {\n res.locals.username = req.body.firstname + ' ' + res.locals.lastname;\n next();\n};\n\n// Setup state\n\nvar body = { firstname: 'Geert' };\nvar locals = { lastname: 'Pasteels' }; \n\nrecorder(middleware, { body: body, locals: locals }, function (result) {\n\n result.eql({\n next: true,\n locals: { lastname: 'Pasteels', username: 'Geert Pasteels' }\n });\n\n});\n\n```\n\n## State options\n\n- body\n- locals\n- session\n- params\n- query\n- cookies\n- headers\n- request\n\nThe 'request' option is used to add propertie£ÏYÅùs to the request object.\n\n```js\n\nrecorder(middleware, { request: { missing: 'MIA' } }, function (result) {\n //assert\n});\n\n```\n\n## Result object\n\nThe result object has the following properties for asserting.\n\n- render\n- redirect\n- send\n- json\n- next\n- header\n- cookie\n- locals\n\nIt also has a handy eql method that shows the difference between the result object and your expected object.\n\n## Tests\n\n```sh\nmake test\n```\n","_id":"express-recorder@1.0.0","dist":{"shasum":"844e2e6a91e1eb68f0f96198f1287267b07a5f83","tarball":"http://registry.npmjs.org/express-recorder/-/express-recorder-1.0.0.tgz"},"maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]}},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"time":{"modified":"2012-08-02T13:44:31.715Z","created":"2012-03-13T17:17:19.739Z","0.0.1":"2012-03-13T17:17:22.277Z","0.0.2":"2012-05-13T19:45:19.192Z","0.0.3":"2012-05-18T11:14:05.724Z","0.0.4":"2012-07-07T15:56:02.775Z","0.0.5":"2012-07-07T16:29:47.857Z","1.0.0":"2012-07-24T15:33:56.123Z"},"author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"repository":{"type":"git","url":"git://github.com/Enome/express-recorder.git"},"users":{"fgribreau":true},"_id":"express-recorder","_rev":"1-fd92062c899d15725b3980c8c4f93642"}ÿdocument-storeÿer•{"id":"er","rev":"1-ee08c844be884c85db88d7d68c833b9e","rev_tree":[{"pos":1,"ids":["ee08c844be884c85db88d7d68c833b9e",{"status":"available"},[]]}],"rev_map":{"1-ee08c844be884c85db88d7d68c833b9e":3259},"winningRev":"1-ee08c844be884c85db88d7d68c833b9e","deleted":false,"seq":3259}ÿby-sequenceÿ0000000000003259£{"name":"er","description":"A simple set of custom error classes.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"er","version":"0.1.0","homepage":"https://github.com/rowanmanning/er","description":"A simple set of custom error classes.","keywords":["custom","error","exception"],"repository":{"type":"git","url":"git://github.com/rowanmanning/er.git"},"author":{"name":"Rowan Manning","url":"http://rowanmanning.co.uk/"},"dependencies":{},"devDependencies":{"chai":"1.1.x","coffee-script":"1.3.x","colors":"0.6.0-1","mocha":"1.2.x"},"main":"./lib/er","directories":{"lib":"./lib","test":"./test"},"scripts":{"prepublish":"jake build","test":"jake test"},"engines":{"node":">=0.6.0"},"_npmUser":{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},"_id":"er@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"233b0cdc6812e64bfd39f8fae487058c87380a0b","tarball":"http://registry.npmjs.org/er/-/er-0.1.0.tgz"},"maintainers":[{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"}]},"0.2.0":{"name":"er","version":"0.2.0","homepage":"https://github.com/rowanmanning/er","description":"A simple set of custom error classes.","keywords":["custom","error","exception"],"repository":{"type":"git","url":"git://github.com/rowanmanning/er.git"},"author":{"name":"Rowan Manning","url":"http://rowanmanning.co.uk/"},"dependencies":{},"devDependencies":{"chai":"1.1.x","coffee-script":"1.3.x","coffeelint":"0.4.x","colors":"0.6.0-1","mocha":"1.2.x"},"main":"./lib/er","directories":{"lib":"./lib","test":"./test"},"scripts":{"prepublish":"jake build","test":"jake test"},"engines":{"node":">=0.6.0"},"_npmUser":{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},"_id":"er@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8f0034b64dc85e836bc52747a19f15ce77bb5c1d","tarball":"http://registry.npmjs.org/er/-/er-0.2.0.tgz"},"maintainers":[{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"}]}},"readme":"\n# Er... #\n\nA small set of custom error classes for Node.js.\n\n\n## Development ##\n\nIn order to develop Er..., you'll need to install the following\nnpm modules globally like so:\n\n npm install -g coffee-script\n npm install -g jake\n\nAnd then install development dependencies locally with:\n\n npm install\n\nOnce you have these dependencies, you will be able to run the\nfollowing commands:\n\n`jake build`: Build JavaScript from the CoffeeScript source.\n\n`jake test`: Run all unit tests.\n\n\n## License ##\n\nDual licensed under the [MIT][mit] or [GPL Version 2][gpl]\nlicenses.\n\n\n[bookbind]: http://github.com/rowanmanning/bookbind\n[jake]: http://github.com/mde/jake\n[mit]: http://opensource.org/licenses/mit-license.php\n[gpl]: http://opensource.org/licenses/gpl-2.0.php\n","maintainers":[{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"}],"time":{"modified":"2012-07-09T19:44:40.776Z","created":"2012-07-08T00:23:17.884Z","0.1.0":"2012-07-08T00:23:19.510Z","0.2.0":"2012-07-09T19:44:40.776Z"},"author":{"name":"Rowan Manning","url":"http://rowanmanning.co.uk/"},"repository":{"type":"git","url":"git://github.com/rowanmanning/er.git"},"_id":"er","_rev":"1-ee08c844be884c85db88d7d68c833b9e"}ÿdocument-storeÿeql–{"id":"eql","rev":"1-f7f8d9636d2f9c1d02d06c7fe77394c0","rev_tree":[{"pos":1,"ids":["f7f8d9636d2f9c1d02d06c7fe77394c0",{"status":"available"},[]]}],"rev_map":{"1-f7f8d9636d2f9c1d02d06c7fe77394c0":3258},"winningRev":"1-f7f8d9636d2f9c1d02d06c7fe77394c0","deleted":false,"seq":3258}ÿby-sequenceÿ0000000000003258Ã!{"name":"eql","description":"Asserts two values using difflet.","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"eql","version":"0.0.1","repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"description":"Asserts two values using difflet.","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["asserting","comparing"],"dependencies":{"difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"eql@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a3d017b08d60231ff251e7baf35c52f885fa8b4e","tarball":"http://registry.npmjs.org/eql/-/eql-0.0.1.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]},"0.0.2":{"name":"eql","version":"0.0.2","repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"description":"Asserts two values using difflet.","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["asserting","comparing"],"dependencies":{"difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"eql@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"af9a73bf52ba9684f7b1bdfea20b8cb15122290a","tarball":"http://registry.npmjs.org/eql/-/eql-0.0.2.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]},"0.0.3":{"name":"eql","version":"0.0.3","repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"description":"Asserts two values using difflet.","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["asserting","comparing"],"dependencies":{"difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"eql@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7b767798d9c9c1fd0712aaef002f4571aec49121","tarball":"http://registry.npmjs.org/eql/-/eql-0.0.3.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]},"0.0.4":{"name":"eql","version":"0.0.4","repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"description":"Asserts two values using difflet.","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["asserting","comparing"],"dependencies":{"difflet":"*"},"devDependencies":{"should":"*"},"_npmUser":{"name":"enome","email":"geert.pasteels@gmail.com"},"_id":"eql@0.0.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"98a81d65a2ea7cfd0fa6fc9cfca5f6632bbdd427","tarball":"http://registry.npmjs.org/eql/-/eql-0.0.4.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]},"0.0.5":{"name":"eql","version":"0.0.5","repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"description":"Asserts two values using difflet.","main":"index.js","author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"keywords":["asserting","comparing"],"dependencies":{"difflet":"*","should":"~1.0.0"},"devDependencies":{"should":"*"},"_id":"eql@0.0.5","dist":{"shasum":"beda843101c00cbc5c3e684b63d4aa075727f0a5","tarball":"http://registry.npmjs.org/eql/-/eql-0.0.5.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]}},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"time":{"modified":"2012-08-02T13:44:32.311Z","created":"2012-06-25T07:54:57.092Z","0.0.1":"2012-06-25T07:54:58.961Z","0.0.2":"2012-06-25T11:09:52.081Z","0.0.3":"2012-06-25T11:27:53.986Z","0.0.4":"2012-06-25T14:15:20.846Z","0.0.5":"2012-07-24T12:37:37.053Z"},"author":{"name":"Geert Pasteels","email":"twitter.com/enome"},"repository":{"type":"git","url":"git://github.com/Enome/eql.git"},"users":{"fgribreau":true},"_id":"eql","_rev":"1-f7f8d9636d2f9c1d02d06c7fe77394c0"}ÿdocument-storeÿentintar›{"id":"entintar","rev":"1-dd77ef8f2946f7a10f44b1a5e659772e","rev_tree":[{"pos":1,"ids":["dd77ef8f2946f7a10f44b1a5e659772e",{"status":"available"},[]]}],"rev_map":{"1-dd77ef8f2946f7a10f44b1a5e659772e":3257},"winningRev":"1-dd77ef8f2946f7a10f44b1a5e659772e","deleted":false,"seq":3257}ÿby-sequenceÿ0000000000003257é#{"name":"entintar","description":"Filter which colorizes text, e.g. output from maven","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"entintar","version":"0.1.0","author":{"name":"Heinrich Göbl","email":"hgoebl@goebl.com","url":"http://goebl.com/"},"description":"Filter which colorizes text, e.g. output from maven","keywords":["color","maven","filter","console"],"homepage":"https://github.com/hgoebl/entintar","licenses":[{"type":"MIT","url":"http://github.com/hgoebl/entintar/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/hgoebl/entintar.git"},"dependencies":{"optimist":">= 0.3.0"},"devDependencies":{},"engines":{"node":"*"},"scripts":{"test":"node index.js < test/data/test-commons-lang.txt"},"main":"./index.js","bin":{"entintar":"./bin/entintar"},"_npmUser":{"name":"hgoebl","email":"hgoebl@goebl.com"},"_id":"entintar@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"dc7c488cc1944b169feb9d59db6ccd252a19451d","tarball":"http://registry.npmjs.org/entintar/-/entintar-0.1.0.tgz"},"maintainers":[{"name":"hgoebl","email":"hgoebl@goebl.com"}]},"0.2.0":{"name":"entintar","version":"0.2.0","author":{"name":"Heinrich Göbl","email":"hgoebl@goebl.com","url":"http://goebl.com/"},"description":"Filter which colorizes text, e.g. output from maven","keywords":["color","maven","filter","console"],"homepage":"https://github.com/hgoebl/entintar","licenses":[{"type":"MIT","url":"http://github.com/hgoebl/entintar/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/hgoebl/entintar.git"},"dependencies":{"optimist":">= 0.3.0"},"devDependencies":{},"engines":{"node":"*"},"scripts":{"test":"node index.js < test/data/test-commons-lang.txt"},"main":"./index.js","bin":{"entintar":"./bin/entintar"},"_npmUser":{"name":"hgoebl","email":"hgoebl@goebl.com"},"_id":"entintar@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"e8146d57de1c2df430e7e0a1f60b08ca1d01d15d","tarball":"http://registry.npmjs.org/entintar/-/entintar-0.2.0.tgz"},"maintainers":[{"name":"hgoebl","email":"hgoebl@goebl.com"}]}},"readme":"# entintar\n\nThis is a small tool to colorize and filter the verbose output of Maven or other unreadable text output.\n\nDoes not work with DOS/Windows Command Box (cmd.exe) - use Cygwin instead.\n\n## The name?\n\n'entintar' is Spanish and AKFAIK means something like ink or colorize. Colorizer was already used.\n\n## Usage\n\n```\nUsage: node ./bin/entintar [options]\n\nOptions:\n --encoding, -e character-set of stdin input [default: \"utf8\"]\n --logfile path/name of file where stdin is written to [default: null]\n --color colorize output (--no-color to disable) [default: true]\n --rules name of rule-set or path to rules.js [default: \"maven3\"]\n --debug output for easier debugging [default: false]\n --help, -h show help and exit\n```\n\n## Use with maven\n\nInstall entintar globally:\n\n npm install entintar -g\n\nPlace following lines in your ~/.bashrc:\n\n```bash\nmvn_colored() {\n $MAVEN_HOME/bin/mvn $* | entintar\n # $MAVEN_HOME/bin/mvn $* | entintar --logfile mvn.log\n}\nalias mvn=mvn_colored\n```\n\nIf you want to run the maven command w/out coloring, then run\n\n \"mvn\" ...\n\nThis will ignore the bash alias and directly run the mvn command.\n\n## Example Output\n\n![example output](https://github.com/hgoebl/entintar/blob/master/maven-colored.png?raw=true)\n\n## Extend\n\nYou can easily extend this tool by providing a rules.js (see lib/rules/maven3.js for an example).\nIf placed in the same directory, you can select the rules with the command line option --rules and the name\nw/out '.js'.\nIt is also possible to place a rules file elsewhere and provide the full path to this file.\n\n## TODO\n\n * Refactor (especially index.js is kind of spagetti-code)\n * Write a real test (not just invoke the program)\n\n## License\n\nMIT (see LICENSE file)\n","maintainers":[{"name":"hgoebl","email":"hgoebl@goebl.com"}],"time":{"modified":"2012-06-17T20:27:50.451Z","created":"2012-05-13T18:00:11.623Z","0.1.0":"2012-05-13T18:00:14.445Z","0.2.0":"2012-06-17T20:27:50.451Z"},"author":{"name":"Heinrich Göbl","email":"hgoebl@goebl.com","url":"http://goebl.com/"},"repository":{"type":"git","url":"git://github.com/hgoebl/entintar.git"},"_id":"entintar","_rev":"1-dd77ef8f2946f7a10f44b1a5e659772e"} ÿdocument-storeÿemail-listener¡{"id":"email-listener","rev":"1-76dc620c00fe632db3c8be31596d67d3","rev_tree":[{"pos":1,"ids":["76dc620c00fe632db3c8be31596d67d3",{"status":"available"},[]]}],"rev_map":{"1-76dc620c00fe632db3c8be31596d67d3":3256},"winningRev":"1-76dc620c00fe632db3c8be31596d67d3","deleted":false,"seq":3256}ÿby-sequenceÿ0000000000003256ÂI{"name":"email-listener","description":"Listen for email messages on a server and then trigger an event","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1beta":{"name":"email-listener","version":"0.0.1beta","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an even","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.1beta","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"0d1761ae61384b2c542ceaebcfa987c188e25388","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.1beta.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}],"directories":{}},"0.0.1":{"name":"email-listener","version":"0.0.1","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an even","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"fc3e3407c9c1537564f9206d8fcf53907745a44d","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.1.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}],"directories":{}},"0.0.2":{"name":"email-listener","version":"0.0.2","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an even","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"4f99bf1a5ce45aac198f542c405a06ad1d307ffb","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.2.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]},"0.0.3":{"name":"email-listener","version":"0.0.3","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an even","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"7a55efa5eb19b97fb3c74a06b588323c9d2beb9e","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.3.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]},"0.0.4":{"name":"email-listener","version":"0.0.4","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an event","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"d772b5d6ed0e92262ddf0b4c4d4e606db8cedbd6","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.4.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]},"0.0.5":{"name":"email-listener","version":"0.0.5","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an event","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"82b50f75d4e9ed720543c060d652f4bc63cedf6c","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.5.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]},"0.0.6":{"name":"email-listener","version":"0.0.6","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an event","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1","mailparser":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"f4342aa5fdec17447a872e436f47b1d27303005a","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.6.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]},"0.0.7":{"name":"email-listener","version":"0.0.7","author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"description":"Listen for email messages on a server and then trigger an event","bugs":{"url":"https://github.com/djwglpuppy/node-email-listener/issues"},"homepage":"https://github.com/djwglpuppy/node-email-listener","repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"main":"./index","dependencies":{"underscore":">=0.0.1","mailparser":">=0.0.1"},"devDependencies":{"should":">0.0.1","mocha":">0.0.1"},"keywords":["smtp","email"],"engines":{"node":"*"},"_npmUser":{"name":"djwglpuppy","email":"davidroberts@gmail.com"},"_id":"email-listener@0.0.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"7d46f74bd4b04b815ff8a5af5f8f3cde5ff9d38a","tarball":"http://registry.npmjs.org/email-listener/-/email-listener-0.0.7.tgz"},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}]}},"readme":"","maintainers":[{"name":"djwglpuppy","email":"davidroberts@gmail.com"}],"time":{"modified":"2012-06-04T20:37:34.465Z","created":"2012-06-02T21:27:27.849Z","0.0.1beta":"2012-06-02T21:27:28.972Z","0.0.1":"2012-06-02T21:41:15.744Z","0.0.2":"2012-06-02T21:44:19.505Z","0.0.3":"2012-06-02T21:45:25.043Z","0.0.4":"2012-06-03T03:15:16.404Z","0.0.5":"2012-06-03T03:40:07.739Z","0.0.6":"2012-06-04T20:14:47.984Z","0.0.7":"2012-06-04T20:37:34.465Z"},"author":{"name":"David K Roberts","email":"davidroberts@gmail.com","url":"http://www.nodejs.io/"},"repository":{"type":"git","url":"git://github.com/djwglpuppy/node-email-listener.git"},"_id":"email-listener","_rev":"1-76dc620c00fe632db3c8be31596d67d3"}ÿdocument-storeÿeffortless{"id":"effortless","rev":"1-a7c37cfd52ff3886d694b5140861ec0a","rev_tree":[{"pos":1,"ids":["a7c37cfd52ff3886d694b5140861ec0a",{"status":"available"},[]]}],"rev_map":{"1-a7c37cfd52ff3886d694b5140861ec0a":3255},"winningRev":"1-a7c37cfd52ff3886d694b5140861ec0a","deleted":false,"seq":3255}ÿby-sequenceÿ0000000000003255ýJ{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","dist-tags":{"latest":"0.1.4"},"versions":{"0.0.1":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.0.1","bin":{"effortless":"./main"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"joelklabo","email":"joelklabo@gmail.com"},"_id":"effortless@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e7ea880f085560b09eaaca423e2a16152d7280c0","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.0.1.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.0.2":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.0.2","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"joelklabo","email":"joelklabo@gmail.com"},"_id":"effortless@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"fbb8ae67b374baf31e7a5f51ff4708815b9d31a3","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.0.2.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.0.3":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.0.3","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"joelklabo","email":"joelklabo@gmail.com"},"_id":"effortless@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"6eff35e44edbe53d788ad06141fa2e810b9d816c","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.0.3.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.0.4":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.0.4","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"joelklabo","email":"joelklabo@gmail.com"},"_id":"effortless@0.0.4","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"793c5927bf64f4cf57a30fe3c264ab0e3aadb608","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.0.4.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.1.0":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.1.0","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"joelklabo","email":"joelklabo@gmail.com"},"_id":"effortless@0.1.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"975142dc757d2025b87f5050a1a3efbd94fde12c","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.1.0.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.1.1":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.1.1","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*","findir":"0.0.8"},"devDependencies":{},"optionalDependencies":{},"_id":"effortless@0.1.1","dist":{"shasum":"9669cb9542b5da3c9e9bc6d5778eb7a515544ede","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.1.1.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.1.2":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.1.2","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*","findir":"0.0.8","colors":"~0.6.0-1"},"devDependencies":{},"optionalDependencies":{},"_id":"effortless@0.1.2","dist":{"shasum":"1ed5ab0f2ce513b62a88fc8dc3cde42d3649dc64","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.1.2.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.1.3":{"name":"effortless","description":"effortless watches for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.1.3","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*","findir":"0.0.8","colors":"~0.6.0-1"},"devDependencies":{},"optionalDependencies":{},"_id":"effortless@0.1.3","dist":{"shasum":"42d1de2ed394d41f02789cc5a48e9c7f40c4c57a","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.1.3.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]},"0.1.4":{"name":"effortless","description":"effortless watchesO.ªù for changes in .less files and automatically compiles them","tags":["less","css","fs","files","utility","fun!"],"version":"0.1.4","bin":{"effortless":"./main.js"},"homepage":"https://github.com/joelklabo/effortless","bugs":{"url":"https://github.com/joelklabo/effortless/issues"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"engines":["node >=0.1.95"],"preferGlobal":"true","dependencies":{"watch":"*","less":"*","optimist":"*","findir":"0.0.8","colors":"~0.6.0-1"},"devDependencies":{},"optionalDependencies":{},"_id":"effortless@0.1.4","dist":{"shasum":"56685011d96295df1e631c77a8a63c3c57bafc1a","tarball":"http://registry.npmjs.org/effortless/-/effortless-0.1.4.tgz"},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}]}},"readme":"","maintainers":[{"name":"joelklabo","email":"joelklabo@gmail.com"}],"time":{"modified":"2012-07-10T03:40:07.428Z","created":"2012-06-29T01:53:50.544Z","0.0.1":"2012-06-29T01:53:52.183Z","0.0.2":"2012-06-29T01:56:29.726Z","0.0.3":"2012-06-29T01:58:48.852Z","0.0.4":"2012-06-29T02:24:03.156Z","0.1.0":"2012-07-02T20:56:40.051Z","0.1.1":"2012-07-08T23:42:24.491Z","0.1.2":"2012-07-09T00:01:27.562Z","0.1.3":"2012-07-09T00:05:39.397Z","0.1.4":"2012-07-10T03:40:07.428Z"},"author":{"name":"Joel Klabo","email":"joelklabo@gmail.com"},"repository":{"type":"git","url":"git://github.com/joelklabo/effortless.git"},"_id":"effortless","_rev":"1-a7c37cfd52ff3886d694b5140861ec0a"}ÿdocument-storeÿeasy-routesž{"id":"easy-routes","rev":"1-79d8435964ee32e7dd7670942c14c77a","rev_tree":[{"pos":1,"ids":["79d8435964ee32e7dd7670942c14c77a",{"status":"available"},[]]}],"rev_map":{"1-79d8435964ee32e7dd7670942c14c77a":3254},"winningRev":"1-79d8435964ee32e7dd7670942c14c77a","deleted":false,"seq":3254}ÿby-sequenceÿ0000000000003254ÿ {"name":"easy-routes","description":"cakePHP inspired router for connect/express","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"easy-routes","description":"cakePHP inspired router for connect/express","version":"0.0.1","author":{"name":"Fernando Lores","email":"ferlores@gmail.com"},"keywords":["framework","sinatra","web","rest","restful","cakephp","route","middleware","connect","express"],"repository":{"type":"git","url":"git://github.com/ferlores/easy-routes.git"},"main":"./lib/index","_npmUser":{"name":"ferlores","email":"ferlores@gmail.com"},"_id":"easy-routes@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"2ef594be2bb4b232717815a95ad72d0c892a3222","tarball":"http://registry.npmjs.org/easy-routes/-/easy-routes-0.0.1.tgz"},"maintainers":[{"name":"ferlores","email":"ferlores@gmail.com"}]}},"readme":"\n# Easy Routes\n Extreamly light middleware that creates some default routes for structuring responses inside controllers like cakePHP. Works with [Connect](http://github.com/senchalabs/connect) and [Express](http://github.com/visionmedia/express) \n \n var app = http.createServer()\n , prefixes = ['admin'];\n\t \n app.configure(function(){\n\t app.use(require('easy-routes')(__dirname + '/controllers', prefixes)); \n\t });\n \n app.listen(3000);\n\n## Features\n * Creates default routes for `////`\n * Looks up the controller/action in the directory passed by param \n * Controllers are loaded on demand and only once.\n\nIn the handler: \n \n\treq.param = {\n\t\tprefix: ..., //optional\n\t\tcontroller: ...,\n\t\taction: ...,\n\t\tparams: [...] //optional\n\t}\n\t\n## Installation\n\n $ npm install easy-routes\n\n## Controllers example\n\t\n\tmodule.exports = {\n\t\tindex_GET: function(req, res) {\n\t\t\t/* handle the request */\n\t\t},\n\t\tadmin_index_GET: function(req,res){\n\t\t\t/* handle the request */\t\n\t\t},\n\t\taction_POST: function(req,res){\n\t\t\t/* handle the request */\t\n\t\t},\n\t\t_action_: function(req, res){\n\t\t\t/* handle the request */\n\t\t}\n\t}\n\t\n## Quick start\n * Install easy-routes (npm install easy-routes)\n * Creates a controllers folder\n * Add the easy-routes middleware\n * Creates a controller inside the folder (see controlles example)\n * Visit http://localhost:3000/controller/action\n\t\n## Running Tests\n\n $ cd ./testing \n $ npm install -d\n $ node app.js\n\nTest suites are in ./testing/tests.js\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 Fenando Lores <ferlores@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"ferlores","email":"ferlores@gmail.com"}],"time":{"modified":"2012-07-10T00:41:02.452Z","created":"2012-04-09T00:09:05.191Z","0.0.1":"2012-04-09T00:09:08.848Z"},"author":{"name":"Fernando Lores","email":"ferlores@gmail.com"},"repository":{"type":"git","url":"git://github.com/ferlores/easy-routes.git"},"users":{"fflores":true},"_id":"easy-routes","_rev":"1-79d8435964ee32e7dd7670942c14c77a"}ÿdocument-storeÿducksnodeœ{"id":"ducksnode","rev":"1-fee7c37441015168ec0bc93faeb89453","rev_tree":[{"pos":1,"ids":["fee7c37441015168ec0bc93faeb89453",{"status":"available"},[]]}],"rev_map":{"1-fee7c37441015168ec0bc93faeb89453":3253},"winningRev":"1-fee7c37441015168ec0bc93faeb89453","deleted":false,"seq":3253}ÿby-sequenceÿ0000000000003253š{"name":"ducksnode","description":"Ducksboard API wrapper on node.js","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"ducksnode","description":"Ducksboard API wrapper on node.js","version":"0.1.0","homepage":"https://github.com/iloire/ducksnode","author":{"name":"Iván Loire","email":"ivan@iloire.com"},"repository":{"type":"git","url":"git://github.com/iloire/ducksnode.git"},"bugs":{"url":"https://github.com/iloire/ducksnode/issues"},"licenses":[{"type":"MIT","url":"https://github.com/iloire/ducksnode/blob/master/LICENSE-MIT"}],"main":"lib/ducksnode","engines":{"node":">= 0.6.0"},"scripts":{"test":"mocha test/ducksnode_test.js"},"dependencies":{"request":"2.9.x"},"devDependencies":{"mocha":"1.3.0"},"keywords":[],"_npmUser":{"name":"iloire","email":"ivan@iloire.com"},"_id":"ducksnode@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"b0c25d8c9a0f336f548a785c67e9fd89365b1f20","tarball":"http://registry.npmjs.org/ducksnode/-/ducksnode-0.1.0.tgz"},"maintainers":[{"name":"iloire","email":"ivan@iloire.com"}]}},"readme":"# ducksnode\n\nDucksboard API wrapper on node.js\n\n## Getting Started\nInstall the module with: `npm install ducksnode`\n\n```javascript\nvar options = {\n\tapi_key : '#your api key#'\n};\n\nvar ducksnode = require('ducksnode').create(options);\n\n// simple push to 'my_widget'\nducksnode.push('my_widget', 324);\n\n// push to 'my_widget' with callback\nducksnode.push('my_widget', 324, function (err, response_status){\n\tif (err){\n\t\tconsole.error(err); //error pushing to ducksboard server.\n\t}\n});\n```\nRun the tests with: `npm test` (requires mocha)\n\n## Examples\nLook into the \"examples\" folder\n\n## Release History\n### 0.1.0 Initial release\n\n## TODO\n - Pull API\n - Http Pull API\n - Websockets API\n - Dashboard API\n\n## License\nCopyright (c) 2012 Iván Loire\nLicensed under the MIT license.\n","maintainers":[{"name":"iloire","email":"ivan@iloire.com"}],"time":{"modified":"2012-07-15T23:30:20.130Z","created":"2012-07-15T23:30:17.196Z","0.1.0":"2012-07-15T23:30:20.130Z"},"author":{"name":"Iván Loire","email":"ivan@iloire.com"},"repository":{"type":"git","url":"git://github.com/iloire/ducksnode.git"},"_id":"ducksnode","_rev":"1-fee7c37441015168ec0bc93faeb89453"}$ÿdocument-storeÿdocpad-plugin-rest¥{"id":"docpad-plugin-rest","rev":"1-4c678239f046595681aeb1d08cb3b72f","rev_tree":[{"pos":1,"ids":["4c678239f046595681aeb1d08cb3b72f",{"status":"available"},[]]}],"rev_map":{"1-4c678239f046595681aeb1d08cb3b72f":3252},"winningRev":"1-4c678239f046595681aeb1d08cb3b72f","deleted":false,"seq":3252}ÿby-sequenceÿ0000000000003252Ó{"name":"docpad-plugin-rest","description":"Adds support for REST to DocPad.","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"docpad-plugin-rest","version":"1.0.0","description":"Adds support for REST to DocPad.","homepage":"https://github.com/bevry/docpad-extras","keywords":["docpad","docpad-plugin","rest","api"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/docpad-extras/issues"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"engines":{"node":">=0.4.0","docpad":"5.x"},"main":"./rest.plugin.coffee","docpad":{"plugin":{"requireAuthentication":false}},"_npmUser":{"name":"balupton","email":"b@lupton.cc"},"_id":"docpad-plugin-rest@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"43a3d2fc381828ae099c1b5b8269b87340fa5938","tarball":"http://registry.npmjs.org/docpad-plugin-rest/-/docpad-plugin-rest-1.0.0.tgz"},"readme":""},"2.0.0":{"name":"docpad-plugin-rest","version":"2.0.0","description":"Adds support for REST to DocPad.","homepage":"https://github.com/bevry/docpad-extras","keywords":["docpad","docpad-plugin","rest","api"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/docpad-extras/issues"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"engines":{"node":">=0.4.0","docpad":"6.x"},"devDependencies":{"coffee-script":"1.3.x"},"main":"./out/rest.plugin.js","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"_id":"docpad-plugin-rest@2.0.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"2fef13878339d1309d3cbc5829301399a169e837","tarball":"http://registry.npmjs.org/docpad-plugin-rest/-/docpad-plugin-rest-2.0.0.tgz"},"readme":""}},"readme":"","maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"time":{"modified":"2012-06-11T10:05:41.660Z","created":"2012-04-14T12:07:59.217Z","1.0.0":"2012-04-14T12:08:05.394Z","2.0.0":"2012-06-11T10:05:41.660Z"},"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"_id":"docpad-plugin-rest","_rev":"1-4c678239f046595681aeb1d08cb3b72f"}&ÿdocument-storeÿdocpad-plugin-images§{"id":"docpad-plugin-images","rev":"1-02cd8940eeef0ea266e960da7f47e362","rev_tree":[{"pos":1,"ids":["02cd8940eeef0ea266e960da7f47e362",{"status":"available"},[]]}],"rev_map":{"1-02cd8940eeef0ea266e960da7f47e362":3251},"winningRev":"1-02cd8940eeef0ea266e960da7f47e362","deleted":false,"seq":3251}ÿby-sequenceÿ0000000000003251Ð{"name":"docpad-plugin-images","description":"DocPad plugin which adds the ability to an array of images associated with a document by metada during the templating process.","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"docpad-plugin-images","version":"2.0.0","description":"DocPad plugin which adds the ability to an array of images associated with a document by metada during the templating process.","homepage":"https://github.com/bevry/docpad-extras","keywords":["docpad","docpad-plugin","images"],"author":{"name":"Morgan Sutherland","email":"morgan@msutherl.net"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Morgan Sutherland","email":"morgan@msutherl.net"},{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/docpad-extras/issues"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"engines":{"node":">=0.4.0","docpad":"6.x"},"dependencies":{"underscore":"*"},"devDependencies":{"coffee-script":"1.3.x"},"main":"./out/images.plugin.js","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"_id":"docpad-plugin-images@2.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7526bd58c3b63ad9222dc9fe8737af9bf783874d","tarball":"http://registry.npmjs.org/docpad-plugin-images/-/docpad-plugin-images-2.0.0.tgz"},"readme":""}},"readme":"","maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"time":{"modified":"2012-06-11T10:04:00.261Z","created":"2012-06-11T10:03:55.003Z","2.0.0":"2012-06-11T10:04:00.261Z"},"author":{"name":"Morgan Sutherland","email":"morgan@msutherl.net"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"_id":"docpad-plugin-images","_rev":"1-02cd8940eeef0ea266e960da7f47e362"}&ÿdocument-storeÿdocpad-plugin-buildr§{"id":"docpad-plugin-buildr","rev":"1-e24d315c165948351c8df3eae5a61bf5","rev_tree":[{"pos":1,"ids":["e24d315c165948351c8df3eae5a61bf5",{"status":"available"},[]]}],"rev_map":{"1-e24d315c165948351c8df3eae5a61bf5":3250},"winningRev":"1-e24d315c165948351c8df3eae5a61bf5","deleted":false,"seq":3250}ÿby-sequenceÿ0000000000003250­{"name":"docpad-plugin-buildr","description":"Adds support for Buildr to DocPad","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"docpad-plugin-buildr","version":"1.0.0","description":"Adds support for Buildr to DocPad","homepage":"https://github.com/bevry/docpad-extras","keywords":["docpad","docpad-plugin","compression","bundling","scripts","styles","lint","css","js","bundle","compress"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/docpad-extras/issues"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"engines":{"node":">=0.4.0","docpad":"5.x"},"main":"./buildr.plugin.coffee","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"_id":"docpad-plugin-buildr@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ef9b63e54ea554666af11ca9755e5d55eec6db2b","tarball":"http://registry.npmjs.org/docpad-plugin-buildr/-/docpad-plugin-buildr-1.0.0.tgz"},"readme":""},"2.0.0":{"name":"docpad-plugin-buildr","version":"2.0.0","description":"Adds support for Buildr to DocPad","homepage":"https://github.com/bevry/docpad-extras","keywords":["docpad","docpad-plugin","compression","bundling","scripts","styles","lint","css","js","bundle","compress"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/docpad-extras/issues"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"engines":{"node":">=0.4.0","docpad":"6.x"},"main":"./out/buildr.plugin.js","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"_id":"docpad-plugin-buildr@2.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d72c94f00a9cd65d971728f3d042fc6fd25cfa71","tarball":"http://registry.npmjs.org/docpad-plugin-buildr/-/docpad-plugin-buildr-2.0.0.tgz"},"readme":""}},"readme":"","maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"time":{"modified":"2012-06-11T10:02:24.605Z","created":"2012-04-14T11:51:57.833Z","1.0.0":"2012-04-14T11:52:03.805Z","2.0.0":"2012-06-11T10:02:24.605Z"},"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"repository":{"type":"git","url":"git://github.com/bevry/docpad-extras.git"},"_id":"docpad-plugin-buildr","_rev":"1-e24d315c165948351c8df3eae5a61bf5"}ÿdocument-storeÿdisorder›{"id":"disorder","rev":"1-e61be98e36d2e069dff60e69dd2a6def","rev_tree":[{"pos":1,"ids":["e61be98e36d2e069dff60e69dd2a6def",{"status":"available"},[]]}],"rev_map":{"1-e61be98e36d2e069dff60e69dd2a6def":3249},"winningRev":"1-e61be98e36d2e069dff60e69dd2a6def","deleted":false,"seq":3249}ÿby-sequenceÿ0000000000003249‰ {"name":"disorder","description":"compute expressions out of order, like `where` or `let` blocks in haskell","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"disorder","description":"compute expressions out of order, like `where` or `let` blocks in haskell","version":"0.0.0","repository":{"type":"git","url":"git://github.com/substack/node-disorder.git"},"main":"index.js","keywords":["where","let","expression"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{},"devDependencies":{"tap":"~0.2.4"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"disorder@0.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"e14905dfab0568f5e44016b909906067cd026e27","tarball":"http://registry.npmjs.org/disorder/-/disorder-0.0.0.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2012-04-21T09:18:22.238Z","created":"2012-04-21T09:18:20.768Z","0.0.0":"2012-04-21T09:18:22.238Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/node-disorder.git"},"_id":"disorder","_rev":"1-e61be98e36d2e069dff60e69dd2a6def"}ÿdocument-storeÿdirStatš{"id":"dirStat","rev":"1-8eb508b41ad224da1a8ea42b6758292c","rev_tree":[{"pos":1,"ids":["8eb508b41ad224da1a8ea42b6758292c",{"status":"available"},[]]}],"rev_map":{"1-8eb508b41ad224da1a8ea42b6758292c":3248},"winningRev":"1-8eb508b41ad224da1a8ea42b6758292c","deleted":false,"seq":3248}ÿby-sequenceÿ0000000000003248’{"name":"dirStat","description":"The result of fs.stat on all files in a directory","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Aaron Probus","email":"aprobus15@gmail.com"},"name":"dirStat","description":"The result of fs.stat on all files in a directory","version":"0.0.1","repository":{"type":"git","url":"git://github.com/aprobus/node-dirStat.git"},"main":"index.js","keywords":["directory","dir","stat"],"engines":{"node":"~0.7.7 || 0.8"},"dependencies":{"async":"~0.1.22"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"aprobus","email":"aprobus15@gmail.com"},"_id":"dirStat@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"7964692e518c113e21e2ed301dd39bfa578fff60","tarball":"http://registry.npmjs.org/dirStat/-/dirStat-0.0.1.tgz"},"maintainers":[{"name":"aprobus","email":"aprobus15@gmail.com"}]},"0.0.2":{"author":{"name":"Aaron Probus","email":"aprobus15@gmail.com"},"name":"dirStat","description":"The result of fs.stat on all files in a directory","version":"0.0.2","repository":{"type":"git","url":"git://github.com/aprobus/node-dirStat.git"},"main":"index.js","keywords":["directory","dir","stat"],"engines":{"node":">=0.7.7"},"dependencies":{"async":"~0.1.22"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"aprobus","email":"aprobus15@gmail.com"},"_id":"dirStat@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"1eac120429ad9a5064031380012a765a50971697","tarball":"http://registry.npmjs.org/dirStat/-/dirStat-0.0.2.tgz"},"maintainers":[{"name":"aprobus","email":"aprobus15@gmail.com"}]}},"readme":"# dirStat\n\nRun stat on all files in a directory\n\n## Examples\n\n```javascript\nvar dirStat = require('dirStat').dirStat;\ndirStat(__dirname, function (err, results) {\n //results[0].fileName\n //results[0].ctime\n}\n````\n\nThe results is an array of the files. Each file has the results of stat on that file, as well as as 'fileName' and\n'filePath' for identifying the file.\n\n## Download\n\n````\nnpm install dirStat\n````","maintainers":[{"name":"aprobus","email":"aprobus15@gmail.com"}],"time":{"modified":"2012-06-18T15:01:59.524Z","created":"2012-06-18T13:46:13.902Z","0.0.1":"2012-06-18T13:52:40.812Z","0.0.2":"2012-06-18T15:01:59.524Z"},"author":{"name":"Aaron Probus","email":"aprobus15@gmail.com"},"repository":{"type":"git","url":"git://github.com/aprobus/node-dirStat.git"},"_id":"dirStat","_rev":"1-8eb508b41ad224da1a8ea42b6758292c"}ÿdocument-storeÿdhl–{"id":"dhl","rev":"1-d7463b85bfeef264819b44137b31856d","rev_tree":[{"pos":1,"ids":["d7463b85bfeef264819b44137b31856d",{"status":"available"},[]]}],"rev_map":{"1-d7463b85bfeef264819b44137b31856d":3247},"winningRev":"1-d7463b85bfeef264819b44137b31856d","deleted":false,"seq":3247}ÿby-sequenceÿ0000000000003247±H{"name":"dhl","description":"A dhl/ups packet tracking module","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"dhl","version":"1.0.0","description":"A dhl packet tracking module","keywords":["dhl","packet","tracking"],"maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}],"repositories":[{"type":"git","url":"http://github.com/syranez/dhl-tracking.git"}],"author":{"name":"syranez"},"license":"MIT","dependencies":{"cheerio":"0.8.3","request":"2.9.203","underscore":"1.3.3"},"main":"./index.js","readme":"# dhl-tracking\n\nQuerys the DHL status page at http://www.dhl.de/ asking the delivery progress of your packet.\n\n## Introduction\n\nGet delivery progress.\n\n var tracking = require('dhl-tracking');\n\n var packetId = 23;\n\n tracking.track(packetId, function (tracking) {\n\n if (tracking.data.status === \"100%\") {\n console.log(\"arrived!\");\n } else {\n console.log(\"not yet :(\");\n }\n });\n\n## Installation\n`npm install dhl-tracking`\n\n... or to install the package globally:\n\n`npm install -g dhl-tracking`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Michael Nowack <syranez@minaga-church.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"dhl@1.0.0","dist":{"shasum":"361b879a89d9a9d30b5f9c91251403d18dc598b5","tarball":"http://registry.npmjs.org/dhl/-/dhl-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"dhl","version":"1.0.1","description":"A dhl packet tracking module","keywords":["dhl","packet","tracking"],"maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}],"repository":{"type":"git","url":"http://github.com/syranez/dhl-tracking.git"},"author":{"name":"syranez"},"license":"MIT","dependencies":{"cheerio":"0.8.3","request":"2.9.203","underscore":"1.3.3"},"main":"./index.js","readme":"# dhl-tracking\n\nQuerys the DHL status page at http://www.dhl.de/ asking the delivery progress of your packet.\n\n## Introduction\n\nGet delivery progress.\n\n var tracking = require('dhl-tracking');\n\n var packetId = 23;\n\n tracking.track(packetId, function (tracking) {\n\n if (tracking.data.status === \"100%\") {\n console.log(\"arrived!\");\n } else {\n console.log(\"not yet :(\");\n }\n });\n\n## Installation\n`npm install dhl-tracking`\n\n... or to install the package globally:\n\n`npm install -g dhl-tracking`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Michael Nowack <syranez@minaga-church.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"dhl@1.0.1","dist":{"shasum":"ea8dc832b3ba1b379f13443e52aab901363a2a9c","tarball":"http://registry.npmjs.org/dhl/-/dhl-1.0.1.tgz"}},"1.2.0":{"name":"dhl","version":"1.2.0","description":"A dhl/ups packet tracking module","keywords":["dhl","ups","packet","tracking"],"maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}],"repository":{"type":"git","url":"http://github.com/syranez/dhl.git"},"author":{"name":"syranez"},"license":"MIT","dependencies":{"cheerio":"0.8.3","request":"2.9.203","underscore":"1.3.3","moment":"1.6.2"},"devDependencies":{"buster":"0.6.2"},"main":"./index.js","readme":"# dhl\n\nQuerys the tracking page of a delivery service for the status of a sent package.\n\n## Introduction\n\nGet delivery progress.\n\n var tracking = require('dhl');\n\n var packet = {\n \"service\": \"dhl\",\n \"id\": 23\n };\n\n tracking.track(packet, function (tracking) {\n\n if (tracking.data.arrived === true) {\n console.log(\"arrived!\");\n } else {\n console.log(\"not yet :(\");\n }\n });\n\n## Available delivery services\n\n* dhl\n+ ups\n\n## Installation\n`npm install dhl`\n\n... or to install the package globally:\n\n`npm install -g dhl`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Michael Nowack <syranez@minaga-church.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"dhl@1.2.0","dist":{"shasum":"b9e03538233c27877a7fa108037cac706d8ab999","tarball":"http://registry.npmjs.org/dhl/-/dhl-1.2.0.tgz"}}},"readme":"# dhl-tracking\n\nQuerys the DHL status page at http://www.dhl.de/ asking the delivery progress of your packet.\n\n## Introduction\n\nGet delivery progress.\n\n var tracking = require('dhl-tracking');\n\n var packetId = 23;\n\n tracking.track(packetId, function (tracking) {\n\n if (tracking.data.status === \"100%\") {\n console.log(\"arrived!\");\n } else {\n console.log(\"not yet :(\");\n }\n });\n\n## Installation\n`npm install dhl-tracking`\n\n... or to install the package globally:\n\n`npm install -g dhl-tracking`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Michael Nowack <syranez@minaga-church.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}],"time":{"modified":"2012-07-22T16:32:25.297Z","created":"2012-07-13T20:31:43.312Z","1.0.0":"2012-07-13T20:31:45.245Z","1.0.1":"2012-07-13T20:51:40.155Z","1.2.0":"2012-07-22T16:32:25.297Z"},"author":{"name":"syranez"},"repository":{"type":"git","url":"http://github.com/syranez/dhl.git"},"_id":"dhl","_rev":"1-d7463b85bfeef264819b44137b31856d"}ÿdocument-storeÿdestruct›{"id":"destruct","rev":"1-90cb5f759e1a3634bddc121b5b222d73","rev_tree":[{"pos":1,"ids":["90cb5f759e1a3634bddc121b5b222d73",{"status":"available"},[]]}],"rev_map":{"1-90cb5f759e1a3634bddc121b5b222d73":3246},"winningRev":"1-90cb5f759e1a3634bddc121b5b222d73","deleted":false,"seq":3246}ÿby-sequenceÿ0000000000003246Ã6{"name":"destruct","description":"Easily unpack C Structs and binary buffers","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Dave Eddy","email":"dave@daveeddy.com","url":"http://www.daveeddy.com"},"name":"destruct","description":"Easily unpack C Structs and binary buffers","version":"0.0.0","repository":{"url":"https://github.com/bahamas10/node-destruct.git","type":"git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"keywords":["binary","struct","c types","unpack"],"readme":"(De) Struct\n===========\n\n;{ùEasily unpack C Structs and binary buffers\n\nBased off the `unpack` function in Perl, and inspired by [prustat][1]\nby [Brendan Gregg][2].\n\nInstall\n------\n\nInstall locally to use as a module\n\n npm install destruct\n\nUsage\n-----\n\nas a module\n\n``` js\nvar destruct = require('destruct');\n```\n\nKnown Limitations\n-----------------\n\nThis module does not handle all data types, it has only been tested on SmartOS,\nand was built for making it easier to extend the [proc][3] Node module by [@dshaw][4].\n\nFunctions\n---------\n\n### destruct.unpack(fmt, buf, [pos])\n\nUnpack a given binary buffer with the given format starting from `pos` (default 0)\n\nExample\n-------\n\n``` js\nvar destruct = require('destruct'),\n fs = require('fs'),\n fmt = 'iiiiiiiiiiIiiiiSSa8a8a8Z16Z80iiIIaa3iiiiii',\n file = '/proc/self/psinfo';\n\nfs.readFile(file, function(err, buf) {\n console.log(destruct.unpack(fmt, buf));\n});\n```\n\nyields\n\n``` js\n[ 33554432,\n 3,\n 714,\n 18456,\n 714,\n 18456,\n 2011,\n 2011,\n 2300,\n 2300,\n 0,\n 14536,\n 9736,\n 0,\n 1572868,\n 11,\n 3,\n ,\n ,\n ,\n 'node',\n 'node ./psinfo.js',\n 0,\n 2,\n 134511788,\n 134511800,\n ,\n ,\n 674523,\n 3,\n 0,\n 0,\n 29,\n 19167112 ]\n```\n\nLicense\n-------\n\nMIT Licensed\n\n[1]: http://www.brendangregg.com/DTrace/prustat\n[2]: http://www.brendangregg.com\n[3]: https://github.com/dshaw/proc\n[4]: https://github.com/dshaw\n\n","_id":"destruct@0.0.0","dist":{"shasum":"eb6aa3996145be676745e5c2c6c0b8d3dffe4451","tarball":"http://registry.npmjs.org/destruct/-/destruct-0.0.0.tgz"},"maintainers":[{"name":"bahamas10","email":"dave@daveeddy.com"}]},"0.0.1":{"author":{"name":"Dave Eddy","email":"dave@daveeddy.com","url":"http://www.daveeddy.com"},"name":"destruct","description":"Easily unpack C Structs and binary buffers","version":"0.0.1","repository":{"url":"https://github.com/bahamas10/node-destruct.git","type":"git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"keywords":["binary","struct","c types","unpack"],"readme":"(De) Struct\n===========\n\nEasily unpack C Structs and binary buffers\n\nBased off the `unpack` function in Perl, and inspired by [prustat][1]\nby [Brendan Gregg][2]. There were other modules that claimed to do the same functionality,\nbut most of them were too poorly documented with the source code almost unreadable, while the\nothers were overcomplicated and didn't support a simple format string.\n\nInstall\n------\n\nInstall locally to use as a module\n\n npm install destruct\n\nUsage\n-----\n\nas a module\n\n``` js\nvar destruct = require('destruct');\n```\n\nKnown Limitations\n-----------------\n\nThis module does not handle all data types, it has only been tested on SmartOS,\nand was built for making it easier to extend the [proc][3] Node module by [@dshaw][4].\n\nFunctions\n---------\n\n### destruct.unpack(fmt, buf, [pos])\n\nUnpack a given binary buffer with the given format starting from `pos` (default 0)\n\nExample\n-------\n\n``` js\nvar destruct = require('destruct'),\n fs = require('fs'),\n fmt = 'iiiiiiiiiiIiiiiSSa8a8a8Z16Z80iiIIaa3iiiiii',\n file = '/proc/self/psinfo';\n\nfs.readFile(file, function(err, buf) {\n console.log(destruct.unpack(fmt, buf));\n});\n```\n\nyields\n\n``` js\n[ 33554432,\n 3,\n 714,\n 18456,\n 714,\n 18456,\n 2011,\n 2011,\n 2300,\n 2300,\n 0,\n 14536,\n 9736,\n 0,\n 1572868,\n 11,\n 3,\n ,\n ,\n ,\n 'node',\n 'node ./psinfo.js',\n 0,\n 2,\n 134511788,\n 134511800,\n ,\n ,\n 674523,\n 3,\n 0,\n 0,\n 29,\n 19167112 ]\n```\n\nLicense\n-------\n\nMIT Licensed\n\n[1]: http://www.brendangregg.com/DTrace/prustat\n[2]: http://www.brendangregg.com\n[3]: https://github.com/dshaw/proc\n[4]: https://github.com/dshaw\n\n","_id":"destruct@0.0.1","dist":{"shasum":"57e2d18018c04c28eced7e70ef77d4ac4ec83066","tarball":"http://registry.npmjs.org/destruct/-/destruct-0.0.1.tgz"},"maintainers":[{"name":"bahamas10","email":"dave@daveeddy.com"}]}},"readme":"(De) Struct\n===========\n\nEasily unpack C Structs and binary buffers\n\nBased off the `unpack` function in Perl, and inspired by [prustat][1]\nby [Brendan Gregg][2].\n\nInstall\n------\n\nInstall locally to use as a module\n\n npm install destruct\n\nUsage\n-----\n\nas a module\n\n``` js\nvar destruct = require('destruct');\n```\n\nKnown Limitations\n-----------------\n\nThis module does not handle all data types, it has only been tested on SmartOS,\nand was built for making it easier to extend the [proc][3] Node module by [@dshaw][4].\n\nFunctions\n---------\n\n### destruct.unpack(fmt, buf, [pos])\n\nUnpack a given binary buffer with the given format starting from `pos` (default 0)\n\nExample\n-------\n\n``` js\nvar destruct = require('destruct'),\n fs = require('fs'),\n fmt = 'iiiiiiiiiiIiiiiSSa8a8a8Z16Z80iiIIaa3iiiiii',\n file = '/proc/self/psinfo';\n\nfs.readFile(file, function(err, buf) {\n console.log(destruct.unpack(fmt, buf));\n});\n```\n\nyields\n\n``` js\n[ 33554432,\n 3,\n 714,\n 18456,\n 714,\n 18456,\n 2011,\n 2011,\n 2300,\n 2300,\n 0,\n 14536,\n 9736,\n 0,\n 1572868,\n 11,\n 3,\n ,\n ,\n ,\n 'node',\n 'node ./psinfo.js',\n 0,\n 2,\n 134511788,\n 134511800,\n ,\n ,\n 674523,\n 3,\n 0,\n 0,\n 29,\n 19167112 ]\n```\n\nLicense\n-------\n\nMIT Licensed\n\n[1]: http://www.brendangregg.com/DTrace/prustat\n[2]: http://www.brendangregg.com\n[3]: https://github.com/dshaw/proc\n[4]: https://github.com/dshaw\n\n","maintainers":[{"name":"bahamas10","email":"dave@daveeddy.com"}],"time":{"modified":"2012-07-10T00:57:02.182Z","created":"2012-07-08T08:19:43.041Z","0.0.0":"2012-07-08T08:19:44.451Z","0.0.1":"2012-07-10T00:57:02.182Z"},"author":{"name":"Dave Eddy","email":"dave@daveeddy.com","url":"http://www.daveeddy.com"},"repository":{"url":"https://github.com/bahamas10/node-destruct.git","type":"git"},"_id":"destruct","_rev":"1-90cb5f759e1a3634bddc121b5b222d73"}ÿdocument-storeÿdeploy-toœ{"id":"deploy-to","rev":"1-ac188848792b218c805485819f24b1cc","rev_tree":[{"pos":1,"ids":["ac188848792b218c805485819f24b1cc",{"status":"available"},[]]}],"rev_map":{"1-ac188848792b218c805485819f24b1cc":3245},"winningRev":"1-ac188848792b218c805485819f24b1cc","deleted":false,"seq":3245}ÿby-sequenceÿ0000000000003245“,{"name":"deploy-to","description":"Git deployment utility script.","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.6":{"name":"deploy-to","version":"0.0.6","preferGlobal":true,"description":"Git deployment utility script.","keywords":["git","deploy"],"url":"http://github.com/rubenv/deploy-to","repositories":[{"type":"git","url":"git://github.com/rubenv/deploy-to.git"}],"author":{"name":"Ruben Vermeersch","email":"ruben@savanne.be"},"contributors":[],"licenses":[{"type":"MIT","url":"https://raw.github.com/rubenv/deploy-to/master/LICENSE"}],"dependencies":{},"bin":{"deploy-to":"./src/deploy.sh"},"_npmUser":{"name":"rubenv","email":"ruben@savanne.be"},"_id":"deploy-to@0.0.6","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.93","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"cbbc0b39991633eaf776451c07186b5fb532b94c","tarball":"http://registry.npmjs.org/deploy-to/-/deploy-to-0.0.6.tgz"},"maintainers":[{"name":"rubenv","email":"ruben@savanne.be"}],"directories":{}},"0.0.7":{"name":"deploy-to","version":"0.0.7","preferGlobal":true,"description":"Git deployment utility script.","keywords":["git","deploy"],"url":"http://github.com/rubenv/deploy-to","repositories":[{"type":"git","url":"git://github.com/rubenv/deploy-to.git"}],"author":{"name":"Ruben Vermeersch","email":"ruben@savanne.be"},"contributors":[],"licenses":[{"type":"MIT","url":"https://raw.github.com/rubenv/deploy-to/master/LICENSE"}],"dependencies":{},"bin":{"deploy-to":"./src/deploy.sh"},"_npmUser":{"name":"rubenv","email":"ruben@savanne.be"},"_id":"deploy-to@0.0.7","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.93","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2ecba49a95646513d094949d30f5d7b2c8b46a9f","tarball":"http://registry.npmjs.org/deploy-to/-/deploy-to-0.0.7.tgz"},"maintainers":[{"name":"rubenv","email":"ruben@savanne.be"}]},"0.0.8":{"name":"deploy-to","version":"0.0.8","preferGlobal":true,"description":"Git deployment utility script.","keywords":["git","deploy"],"url":"http://github.com/rubenv/deploy-to","repositories":[{"type":"git","url":"git://github.com/rubenv/deploy-to.git"}],"author":{"name":"Ruben Vermeersch","email":"ruben@savanne.be"},"contributors":[],"licenses":[{"type":"MIT","url":"https://raw.github.com/rubenv/deploy-to/master/LICENSE"}],"dependencies":{},"bin":{"deploy-to":"./src/deploy.sh"},"_npmUser":{"name":"rubenv","email":"ruben@savanne.be"},"_id":"deploy-to@0.0.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c6a9e1b41512aed6474e9c8d2cda6af8f235ed7b","tarball":"http://registry.npmjs.org/deploy-to/-/deploy-to-0.0.8.tgz"},"readme":"# Git deployment utility script.\n\n Merges the master branch to another branch and pushes it.\n\n Developed by Flow Pilots: http://www.flowpilots.com/\n\n## Usage\n \n You can install the latest version via npm:\n \n $ npm install -g deploy-to\n\n Go to your git repository and invoke the script:\n\n $ cd /path/to/my/repo\n $ deploy-to production\n\n This will:\n \n 1. Check that node\\_modules is in .gitignore (if present).\n 2. Switch to the target branch.\n 3. Pull the latest version of that branch.\n 4. Merge the master branch into this branch.\n 5. Push the branch.\n\n In this case it would merge any changes from master onto the production\n branch and push them upstream. Add git hooks to the server to perform further\n deployment steps.\n\n## Rationale\n\n At Flow Pilots, we develop our work on a master branch. Deployment to servers\n happens using git commit hooks on the deployment and staging branches. This\n script makes deployment a command-line one-liner.\n \n## License \n\n (The MIT License)\n\n Copyright (C) 2012 by Ruben Vermeersch \n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n","maintainers":[{"name":"rubenv","email":"ruben@savanne.be"}]}},"maintainers":[{"name":"rubenv","email":"ruben@savanne.be"}],"time":{"modified":"2012-06-12T06:59:43.123Z","created":"2011-12-28T19:47:01.156Z","0.0.1":"2011-12-28T19:47:02.534Z","0.0.2":"2011-12-28T20:00:52.616Z","0.0.3":"2011-12-28T20:38:55.201Z","0.0.4":"2011-12-29T08:23:28.038Z","0.0.5":"2011-12-29T08:51:27.073Z","0.0.6":"2011-12-29T09:08:46.157Z","0.0.7":"2012-06-12T06:54:07.484Z","0.0.8":"2012-06-12T06:59:43.123Z"},"author":{"name":"Ruben Vermeersch","email":"ruben@savanne.be"},"_id":"deploy-to","_rev":"1-ac188848792b218c805485819f24b1cc"}ÿdocument-storeÿdefos˜{"id":"defos","rev":"1-819b0e264e19b5b4d0628f37a5a586e1","rev_tree":[{"pos":1,"ids":["819b0e264e19b5b4d0628f37a5a586e1",{"status":"available"},[]]}],"rev_map":{"1-819b0e264e19b5b4d0628f37a5a586e1":3244},"winningRev":"1-819b0e264e19b5b4d0628f37a5a586e1","deleted":false,"seq":3244}ÿby-sequenceÿ0000000000003244…{"name":"defos","description":"if (typeof x !== 'undefined' && x !== null) replacement","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"defos","description":"if (typeof x !== 'undefined' && x !== null) replacement","version":"1.0.0","keywords":["defined","ifdef","defined","ender"],"homepage":"http://github.com/gcmurphy/defos","authors":["Grant Murphy"],"repository":{"type":"git","url":"git://github.com/gcmurphy/defos.git"},"main":"./defos.js","ender":"./ender.js","_npmUser":{"name":"gmurphy","email":"grantcmurphy@gmail.com"},"_id":"defos@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f3f53dde4c876205fff52f91d642c8ca3a0b9e97","tarball":"http://registry.npmjs.org/defos/-/defos-1.0.0.tgz"},"maintainers":[{"name":"gmurphy","email":"grantcmurphy@gmail.com"}]},"1.0.1":{"name":"defos","description":"if (typeof x !== 'undefined' && x !== null) replacement","version":"1.0.1","keywords":["defined","ifdef","defined","ender"],"homepage":"http://github.com/gcmurphy/defos","authors":["Grant Murphy"],"repository":{"type":"git","url":"git://github.com/gcmurphy/defos.git"},"main":"./defos.js","ender":"./ender.js","_npmUser":{"name":"gmurphy","email":"grantcmurphy@gmail.com"},"_id":"defos@1.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"2fbda87a6e7be2574700157d730cc0f62720ec56","tarball":"http://registry.npmjs.org/defos/-/defos-1.0.1.tgz"},"maintainers":[{"name":"gmurphy","email":"grantcmurphy@gmail.com"}]}},"readme":"defos\n=====\n\nSugar for js: if (typeof x !== undefined && x !== null){ foo(x) }\n\nTo use with front end scripts: \n\n ender add defos\n\nTo use with nodejs \n\n npm install defos\n\n","maintainers":[{"name":"gmurphy","email":"grantcmurphy@gmail.com"}],"time":{"modified":"2012-06-18T06:42:05.343Z","created":"2012-06-18T06:38:48.402Z","1.0.0":"2012-06-18T06:38:53.147Z","1.0.1":"2012-06-18T06:42:05.343Z"},"repository":{"type":"git","url":"git://github.com/gcmurphy/defos.git"},"_id":"defos","_rev":"1-819b0e264e19b5b4d0628f37a5a586e1"}ÿdocument-storeÿdefer-tick{"id":"defer-tick","rev":"1-a75ed40745ba9a245bc257e98336641d","rev_tree":[{"pos":1,"ids":["a75ed40745ba9a245bc257e98336641d",{"status":"available"},[]]}],"rev_map":{"1-a75ed40745ba9a245bc257e98336641d":3243},"winningRev":"1-a75ed40745ba9a245bc257e98336641d","deleted":false,"seq":3243}ÿby-sequenceÿ0000000000003243ƒ{"name":"defer-tick","dist-tags":{"latest":"0.0.1","stable":"0.0.1"},"versions":{"0.0.1":{"name":"defer-tick","version":"0.0.1","author":{"name":"Fedor Indutny","email":"fedor@indutny.com"},"homepage":"https://github.com/indutny/defer-tick","repository":{"type":"git","url":"git://github.com/indutny/defer-tick.git"},"main":"./lib/defer-tick.js","dependencies":{"node-gyp":"0.5.x"},"devDependencies":{"mocha":"~1.2.0","async":"~0.1.22"},"scripts":{"install":"node-gyp configure && node-gyp build","test":"mocha --reporter spec test/*-test.js"},"engine":{"node":">= 0.6.0"},"_npmUser":{"name":"fedor.indutny","email":"fedor.indutny@gmail.com"},"_id":"defer-tick@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"5b74b7775ab09cbb54b75ed4e730b9f5827891bf","bin":{"true":{"shasum":"40bd35de6276768ec3d679198ceb94a43a9ba11f"},"0.6-ares1.7.5-DEV-evundefined-openssl0.9.8l-v83.6.6.25-darwin-x64-10.8.0":{"tarball":"http://registry.npmjs.org/defer-tick/-/defer-tick-0.0.1-0.6-ares1.7.5-DEV-evundefined-openssl0.9.8l-v83.6.6.25-darwin-x64-10.8.0.tgz"}},"tarball":"http://registry.npmjs.org/defer-tick/-/defer-tick-0.0.1.tgz"},"_from":"/Users/indutny/.npm/defer-tick/0.0.1/package.tgz","maintainers":[{"name":"fedor.indutny","email":"fedor.indutny@gmail.com"}]}},"readme":"# deferTick([function]) [![Build Status](https://secure.travis-ci.org/indutny/defer-tick.png)](http://travis-ci.org/indutny/defer-tick)\n\n...\n","maintainers":[{"name":"fedor.indutny","email":"fedor.indutny@gmail.com"}],"time":{"modified":"2012-06-18T14:02:51.769Z","created":"2012-06-18T14:02:37.696Z","0.0.1":"2012-06-18T14:02:39.790Z"},"author":{"name":"Fedor Indutny","email":"fedor@indutny.com"},"repository":{"type":"git","url":"git://github.com/indutny/defer-tick.git"},"_id":"defer-tick","_rev":"1-a75ed40745ba9a245bc257e98336641d"}ÿdocument-storeÿdeclarativejs {"id":"declarativejs","rev":"1-5b67360491865d69eaf0544fdf152ef5","rev_tree":[{"pos":1,"ids":["5b67360491865d69eaf0544fdf152ef5",{"status":"available"},[]]}],"rev_map":{"1-5b67360491865d69eaf0544fdf152ef5":3242},"winningRev":"1-5b67360491865d69eaf0544fdf152ef5","deleted":false,"seq":3242}ÿby-sequenceÿ0000000000003242Î{"name":"declarativejs","description":"Declarative JavaScript toolkit - (DSLs, config, etc)","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"declarativejs","version":"0.0.1","description":"Declarative JavaScript toolkit - (DSLs, config, etc)","author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"dependencies":{},"devDependencies":{"should":"*","mocha":"*"},"main":"lib/declarative","_npmUser":{"name":"tjholowaychuk","email":"tj@vision-media.ca"},"_id":"declarativejs@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"308f0bc88457ba569568a757078cf4534535627e","tarball":"http://registry.npmjs.org/declarativejs/-/declarativejs-0.0.1.tgz"},"maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}]}},"readme":"\n# declarativejs\n\n Declarative JavaScript toolkit\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2012-06-17T22:50:12.001Z","created":"2012-06-17T22:50:10.566Z","0.0.1":"2012-06-17T22:50:12.000Z"},"author":{"name":"TJ Holowaychuk","email":"tj@vision-media.ca"},"_id":"declarativejs","_rev":"1-5b67360491865d69eaf0544fdf152ef5"}ÿdocument-storeÿdart-streamž{"id":"dart-stream","rev":"1-74befcfa84360e2e7f31e390b5558fa2","rev_tree":[{"pos":1,"ids":["74befcfa84360e2e7f31e390b5558fa2",{"status":"available"},[]]}],"rev_map":{"1-74befcfa84360e2e7f31e390b5558fa2":3241},"winningRev":"1-74befcfa84360e2e7f31e390b5558fa2","deleted":false,"seq":3241}ÿby-sequenceÿ0000000000003241Ä {"name":"dart-stream","description":"A stream interface like the one in dart","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"dart-stream","version":"0.0.0","description":"A stream interface like the one in dart","main":"index.js","directories":{"test":"test"},"scripts":{"test":"node test/index.js"},"repository":{"type":"git","url":"git://github.com/dominictarr/dart-stream.git"},"keywords":["stream","experiment"],"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"license":"BSD","_id":"dart-stream@0.0.0","dist":{"shasum":"da0e27651c77d19f1961674987bfe144938c5578","tarball":"http://registry.npmjs.org/dart-stream/-/dart-stream-0.0.0.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-07-15T05:21:29.384Z","created":"2012-07-15T05:21:25.315Z","0.0.0":"2012-07-15T05:21:29.384Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/dart-stream.git"},"_id":"dart-stream","_rev":"1-74befcfa84360e2e7f31e390b5558fa2"}ÿdocument-storeÿcubist™{"id":"cubist","rev":"1-a1569434c25f26ca42c88b4e8ab8cad7","rev_tree":[{"pos":1,"ids":["a1569434c25f26ca42c88b4e8ab8cad7",{"status":"available"},[]]}],"rev_map":{"1-a1569434c25f26ca42c88b4e8ab8cad7":3240},"winningRev":"1-a1569434c25f26ca42c88b4e8ab8cad7","deleted":false,"seq":3240}ÿby-sequenceÿ0000000000003240«${"name":"cubist","description":"Cubism graph composer","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"name":"cubist","description":"Cubism graph composer","keywords":["cube","cubist","graphite"],"version":"0.0.0","author":{"name":"Chris Faulkner","email":"thefaulkner@gmail.com"},"homepage":"https://github.com/faulkner/cubist","repository":{"type":"git","url":"git://github.com/faulkner/cubist.git"},"dependencies":{"coffee-script":"1.3.3","express":"3.0.0alpha4","jade":"0.26.0","connect-assets":"2.2.1","d3":"*","cubism":"*","jquery":"*","underscore":">=1.3.1"},"bin":{"cubist":"./bin/cubist"},"engines":{"node":"node ~> 0.6"},"_npmUser":{"name":"faulkner","email":"thefaulkner@gmail.com"},"_id":"cubist@0.0.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"310b13b80180947461eb59334696044337324a3f","tarball":"http://registry.npmjs.org/cubist/-/cubist-0.0.0.tgz"},"maintainers":[{"name":"faulkner","email":"thefaulkner@gmail.com"}]},"0.0.1":{"name":"cubist","description":"Cubism graph composer","keywords":["cube","cubist","graphite"],"version":"0.0.1","author":{"name":"Chris Faulkner","email":"thefaulkner@gmail.com"},"homepage":"https://github.com/faulkner/cubist","repository":{"type":"git","url":"git://github.com/faulkner/cubist.git"},"dependencies":{"coffee-script":"1.3.3","express":"3.0.0alpha4","jade":"0.26.0","connect-assets":"2.2.1","d3":"2.9.4","cubism":"1.2.0","jquery":"1.7.2","underscore":"1.3.3","jquery-ui":"git://github.com/jquery/jquery-ui.git"},"bin":{"cubist":"./bin/cubist"},"engines":{"node":"0.6.x"},"_npmUser":{"name":"faulkner","email":"thefaulkner@gmail.com"},"_id":"cubist@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"87c73c28bcfbc1f6d32caa374d3bf62dde0d494d","tarball":"http://registry.npmjs.org/cubist/-/cubist-0.0.1.tgz"},"maintainers":[{"name":"faulkner","email":"thefaulkner@gmail.com"}]},"0.0.2":{"name":"cubist","description":"Cubism graph composer","keywords":["cube","cubist","graphite"],"version":"0.0.2","author":{"name":"Chris Faulkner","email":"thefaulkner@gmail.com"},"homepage":"https://github.com/faulkner/cubist","repository":{"type":"git","url":"git://github.com/faulkner/cubist.git"},"dependencies":{"coffee-script":"1.3.3","express":"3.0.0alpha4","jade":"0.26.0","connect-assets":"2.2.1","d3":"2.9.4","cubism":"1.2.0","jquery":"1.7.2","underscore":"1.3.3","jquery-ui":"git://github.com/jquery/jquery-ui.git"},"bin":{"cubist":"./bin/cubist"},"engines":{"node":"0.6.x"},"_npmUser":{"name":"faulkner","email":"thefaulkner@gmail.com"},"_id":"cubist@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"b40924197b01dbe8b2802406f8cb2f2eb4d34f5d","tarball":"http://registry.npmjs.org/cubist/-/cubist-0.0.2.tgz"},"maintainers":[{"name":"faulkner","email":"thefaulkner@gmail.com"}]}},"readme":"# Cubist\n\nCubist is a Cubism graphing sandbox.\n\nEnter Cube or Graphite expressions, get charts.\n\nChart settings are chucked in local storage for later use.\n\n## To install\n\n```bash\n$ npm install -g cubist\n```\n\n## Usage\n\n```bash\n$ cubist\n```\n\nUsing port 3000 already? Fine.\n\n```bash\n$ export PORT=1234; cubist\n```\n\nThe defaults assume you're running Cube and/or Graphite locally.\nAt the moment there aren't forms to edit this, but if you pop open\nyour console it's just a matter of punching in:\n\n```javascript\nconfig.cube.dsn='http://some.other.server.com:1081'\n```\n\n\n## TODO\n- correct any node/JS stupidity (I rarely touch node or frontend code; much to improve)\n- use Backbone or other framework to clean up JS\n- add support for multiple servers\n- live editing for existing charts\n- accept chart settings from query params\n- kill data polling when charts are removed\n- support for comparison charts\n- UI bits to set the server defaults\n- UI for removing old expressions\n- change typeahead into an autocomplete based on functions and metrics available\n","maintainers":[{"name":"faulkner","email":"thefaulkner@gmail.com"}],"time":{"modified":"2012-06-24T12:53:11.445Z","created":"2012-06-22T08:50:24.151Z","0.0.0":"2012-06-22T08:50:25.739Z","0.0.1":"2012-06-24T10:26:58.375Z","0.0.2":"2012-06-24T12:53:11.445Z"},"author":{"name":"Chris Faulkner","email":"thefaulkner@gmail.com"},"repository":{"type":"git","url":"git://github.com/faulkner/cubist.git"},"_id":"cubist","_rev":"1-a1569434c25f26ca42c88b4e8ab8cad7"} ÿdocument-storeÿcubism-browser¡{"id":"cubism-browser","rev":"1-ac86f11535d454c0d11d5db6f2dee302","rev_tree":[{"pos":1,"ids":["ac86f11535d454c0d11d5db6f2dee302",{"status":"available"},[]]}],"rev_map":{"1-ac86f11535d454c0d11d5db6f2dee302":3239},"winningRev":"1-ac86f11535d454c0d11d5db6f2dee302","deleted":false,"seq":3239}ÿby-sequenceÿ0000000000003239® {"name":"cubism-browser","description":"cubism npm package for browsers","dist-tags":{"latest":"1.2.0-1"},"versions":{"1.2.0-1":{"name":"cubism-browser","version":"1.2.0-1","description":"cubism npm package for browsers","keywords":["visualization","d3","graph","series","time"],"homepage":"http://square.github.com/cubism/","author":{"name":"Mike Bostock","url":"http://bost.ocks.org/mike"},"repository":{"type":"git","url":"git://github.com/kapouer/cubism-browser.git"},"main":"./index.js","directories":{"javascripts":"./js"},"dependencies":{"d3-browser":">=2.9.2-1"},"_npmUser":{"name":"kapouer","email":"kapouer@melix.org"},"_id":"cubism-browser@1.2.0-1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ef8a86ed154ea0858a15c1411ee1e781f670eea3","tarball":"http://registry.npmjs.org/cubism-browser/-/cubism-browser-1.2.0-1.tgz"},"readme":"","maintainers":[{"name":"kapouer","email":"kapouer@melix.org"}]}},"readme":"","maintainers":[{"name":"kapouer","email":"kapouer@melix.org"}],"time":{"modified":"2012-06-04T21:32:10.531Z","created":"2012-06-04T21:32:08.659Z","1.2.0-1":"2012-06-04T21:32:10.531Z"},"author":{"name":"Mike Bostock","url":"http://bost.ocks.org/mike"},"repository":{"type":"git","url":"git://github.com/kapouer/cubism-browser.git"},"_id":"cubism-browser","_rev":"1-ac86f11535d454c0d11d5db6f2dee302"}ÿdocument-storeÿcss-prefix{"id":"css-prefix","rev":"1-e38c6c6041f85ffdbab5eb842569ff04","rev_tree":[{"pos":1,"ids":["e38c6c6041f85ffdbab5eb842569ff04",{"status":"available"},[]]}],"rev_map":{"1-e38c6c6041f85ffdbab5eb842569ff04":3238},"winningRev":"1-e38c6c6041f85ffdbab5eb842569ff04","deleted":false,"seq":3238}ÿby-sequenceÿ0000000000003238»{"name":"css-prefix","description":"add a prefix to all classes and identifiers in a stylesheet","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"name":"css-prefix","version":"0.0.0","description":"add a prefix to all classes and identifiers in a stylesheet","main":"index.js","directories":{"example":"example","test":"test"},"dependencies":{"cssp":"~1.0.5","traverse":"~0.6.1"},"devDependencies":{"tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/css-prefix.git"},"keywords":["css","transform","prefix"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"css-prefix@0.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"3068a261dfefe8a93718eb4ab920a728daefc8ea","tarball":"http://registry.npmjs.org/css-prefix/-/css-prefix-0.0.0.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.0.1":{"name":"css-prefix","version":"0.0.1","description":"add a prefix to all classes and identifiers in a stylesheet","main":"index.js","directories":{"example":"example","test":"test"},"dependencies":{"cssp":"~1.0.5","traverse":"~0.6.1"},"devDependencies":{"tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/css-prefix.git"},"keywords":["css","transform","prefix"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"css-prefix@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"feee2fdafa36c5112b0d4515b3811ebefcfad441","tarball":"http://registry.npmjs.org/css-prefix/-/css-prefix-0.0.1.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.0.2":{"name":"css-prefix","version":"0.0.2","description":"add a prefix to all classes and identifiers in a stylesheet","main":"index.js","directories":{"example":"example","test":"test"},"dependencies":{"cssp":"~1.0.5","traverse":"~0.6.1"},"devDependencies":{"tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/css-prefix.git"},"keywords":["css","transform","prefix"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"css-prefix@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"3812a708c7a0aac13f13d7af290a145590713a2e","tarball":"http://registry.npmjs.org/css-prefix/-/css-prefix-0.0.2.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2012-06-11T12:20:46.204Z","created":"2012-05-27T23:29:55.641Z","0.0.0":"2012-05-27T23:29:56.951Z","0.0.1":"2012-05-28T02:38:23.682Z","0.0.2":"2012-06-11T12:20:46.204Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/css-prefix.git"},"_id":"css-prefix","_rev":"1-e38c6c6041f85ffdbab5eb842569ff04"}ÿdocument-storeÿcrux—{"id":"crux","rev":"1-323870a7270dbe7f62593e668fca320b","rev_tree":[{"pos":1,"ids":["323870a7270dbe7f62593e668fca320b",{"status":"available"},[]]}],"rev_map":{"1-323870a7270dbe7f62593e668fca320b":3237},"winningRev":"1-323870a7270dbe7f62593e668fca320b","deleted":false,"seq":3237}ÿby-sequenceÿ0000000úË ‘ù000003237ë{"name":"crux","description":"An MVC web application framework controller","dist-tags":{"latest":"0.5.0"},"versions":{"0.0.4":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.0.4","repository":{"url":""},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.0.4","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"2fd1de9b245858835709fa945df4383c2ffaf7c5","tarball":"http://registry.npmjs.org/crux/-/crux-0.0.4.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.0.5":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.0.5","repository":{"url":""},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.0.5","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"fde962d5f0a6c39afd96a8dd1faaf6090bba9d9b","tarball":"http://registry.npmjs.org/crux/-/crux-0.0.5.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.0.6":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.0.6","repository":{"url":""},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.0.6","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"35ddfaf499292a962ec9cc2e69bcf89a57a9c714","tarball":"http://registry.npmjs.org/crux/-/crux-0.0.6.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.0.7":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.0.7","repository":{"url":""},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.0.7","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"9b76528b3f46df300b2d6f0c913f6ab23faccd8a","tarball":"http://registry.npmjs.org/crux/-/crux-0.0.7.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.0.8":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.0.8","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.0.8","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"6cbcb91e69356b88edf50a3aeb744c7c19141dbb","tarball":"http://registry.npmjs.org/crux/-/crux-0.0.8.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.1":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.1","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"c959fa45105b783eeb67e62ff8ceb570bf4482bd","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.1.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.2":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.2","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.2","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"38f19e9e13f48377c0712279cda595dfc5b1ea37","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.2.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.3":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.3","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.3","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"7e30d38cf74bc466f63a57c8d41e1da71a8a0b3b","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.3.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.4":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.4","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.4","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"cfffcc9dad54182eb5d69ee3ac2a4ad93b9f77f2","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.4.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.5":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.5","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.5","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"3085ad450b29255f3498399a36c99f08aeb83d99","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.5.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.6":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.6","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.6","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"9c0426e363db2ef2e1d8a1e20241708dc93b6d73","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.6.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.7":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.7","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.7","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"c3d369d755d065b6fa04b7772b556d1ab07201a2","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.7.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.1.8":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.1.8","repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.1.8","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"3afb44e519856095abc510c485109526a2c4c624","tarball":"http://registry.npmjs.org/crux/-/crux-0.1.8.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.2.1":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.2.1","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.2.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"7eae6619fb882d958d2876a826982e748fab7a34","tarball":"http://registry.npmjs.org/crux/-/crux-0.2.1.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.3.1":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.3.1","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.3.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"b3bffada1b42ab2cfee123f71f72a7f1cbccb71a","tarball":"http://registry.npmjs.org/crux/-/crux-0.3.1.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.3.2":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.3.2","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.3.2","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"ae3306db53b7a28fb83dc83b937e7aa43bb91258","tarball":"http://registry.npmjs.org/crux/-/crux-0.3.2.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.3.3":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.3.3","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.3.3","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"0412833ea21ad1d5b19ac992acfc1abdf5aec8bf","tarball":"http://registry.npmjs.org/crux/-/crux-0.3.3.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.0":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.0","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.0","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"4d5607ae6f322299da219bf368cfc85c340e0e2d","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.0.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.1":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.1","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"92e1ecc9ae45b2306a3e7ab200b2dbbc01f89a38","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.1.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.2":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.2","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.2","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"f3fe7c0cc3f02e0c034c4bfdad0f3f417ce23244","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.2.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.3":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.3","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.3","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"c27245e1b4ca4e2ad64989b8c2df7f5f2fed4d36","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.3.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.4":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.4","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.4","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"a82348196015459ae8977c8bd9e81a97c080aaba","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.4.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.5":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.5","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.5","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"a7b0687c588d20613d23b18e29a2f14c916559d5","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.5.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.6":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.6","preferGlobal":"true","files":["*","template/.git*"],"repository":{"url":"https://github.com/kbjr/node-crux"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.6","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"12fe9dda1ddc483e307a197419a089180ca79df8","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.6.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.7":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.7","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.7","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"aeb5fa6ee036c44e91536533876ee344c09df3b5","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.7.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.8":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.8","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.8","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"8ac9f0c510257ab257e4e1c2af60722314b0f4e6","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.8.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.9":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.9","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.9","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"e694b299f9bd23e7f811626155d8c8774fe5308e","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.9.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.10":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.10","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.10","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"813abedac3bf7f2a1f532da86330e4c82c6a423b","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.10.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.11":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.11","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.11","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"0058b054a686d52b7cba19564047c6310642c78d","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.11.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.12":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.12","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.12","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"826d09d3ca5bc23b6b28947686eae47306845f27","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.12.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.4.13":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.4.13","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.4.13","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"4e2d3ba9efc8346058aefbebecc6d7ae979bffb6","tarball":"http://registry.npmjs.org/crux/-/crux-0.4.13.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{},"deprecated":"major backwards-incompat changes in v0.5"},"0.5.0":{"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"name":"crux","description":"An MVC web application framework controller","version":"0.5.0","preferGlobal":"true","files":["*","template/.git*"],"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"bin":{"crux":"./bin/crux.js"},"scripts":{"install":"node scripts/bash-completion.js","update":"node scripts/bash-completion.js"},"engines":{"node":">=0.6.0"},"dependencies":{"wrench":"1.3.6","migrate":"0.1.1","gitjs":"0.0.5"},"devDependencies":{},"_npmUser":{"name":"k","email":"kbjr14@gmail.com"},"_id":"crux@0.5.0","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"0beb62ae7ff053e87d8fe810f6fd1df3712fa317","tarball":"http://registry.npmjs.org/crux/-/crux-0.5.0.tgz"},"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"directories":{}}},"readme":null,"maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"time":{"modified":"2012-04-21T03:50:20.646Z","created":"2012-02-23T03:29:16.169Z","0.0.4":"2012-02-23T03:29:18.811Z","0.0.5":"2012-02-23T06:22:32.204Z","0.0.6":"2012-02-23T06:41:28.394Z","0.0.7":"2012-03-02T06:46:29.901Z","0.0.8":"2012-03-03T03:41:07.800Z","0.1.1":"2012-03-03T04:47:10.569Z","0.1.2":"2012-03-06T03:17:00.376Z","0.1.3":"2012-03-06T03:24:10.756Z","0.1.4":"2012-03-07T00:54:04.722Z","0.1.5":"2012-03-07T05:20:41.812Z","0.1.6":"2012-03-07T05:49:15.917Z","0.1.7":"2012-03-07T06:07:18.346Z","0.1.8":"2012-03-09T01:03:03.345Z","0.2.1":"2012-03-11T12:49:53.937Z","0.3.1":"2012-03-19T12:20:48.845Z","0.3.2":"2012-03-19T12:21:27.394Z","0.3.3":"2012-03-20T09:58:22.383Z","0.4.0":"2012-03-25T19:53:47.192Z","0.4.1":"2012-03-27T02:15:50.475Z","0.4.2":"2012-03-28T22:14:22.798Z","0.4.3":"2012-03-28T22:45:26.349Z","0.4.4":"2012-03-29T16:27:28.428Z","0.4.5":"2012-03-30T23:11:55.856Z","0.4.6":"2012-03-31T23:54:02.962Z","0.4.7":"2012-04-09T20:03:32.364Z","0.4.8":"2012-04-09T22:52:59.171Z","0.4.9":"2012-04-09T23:20:46.574Z","0.4.10":"2012-04-09T23:43:49.209Z","0.4.11":"2012-04-12T00:38:51.920Z","0.4.12":"2012-04-14T02:32:06.741Z","0.4.13":"2012-04-15T03:26:43.001Z","0.5.0":"2012-04-21T03:50:03.743Z"},"author":{"name":"James Brumond","email":"kbjr14@gmail.com","url":"http://jbrumond.me"},"repository":{"type":"git","url":"git://github.com/kbjr/node-crux.git"},"_id":"crux","_rev":"1-323870a7270dbe7f62593e668fca320b"}!ÿdocument-storeÿconsole-colorjs¢{"id":"console-colorjs","rev":"1-549bdb7a06f1b807e8cf7843dd94ba81","rev_tree":[{"pos":1,"ids":["549bdb7a06f1b807e8cf7843dd94ba81",{"status":"available"},[]]}],"rev_map":{"1-549bdb7a06f1b807e8cf7843dd94ba81":3236},"winningRev":"1-549bdb7a06f1b807e8cf7843dd94ba81","deleted":false,"seq":3236}ÿby-sequenceÿ0000000000003236²{"name":"console-colorjs","description":"make the console a little bit colorful","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"console-colorjs","version":"0.0.1","main":"lib/console-color.js","description":"make the console a little bit colorful","keywords":["console","terminal","color","colorized","colorful"],"readme":"console-color\r\n=============\r\n\r\nExamples:\r\n```javascript\r\n\r\nvar colorized = require('console-color');\r\n\r\nconsole.log(colorized.pass('pass'));\r\nconsole.log(colorized.bright('process'));","_id":"console-colorjs@0.0.1","dist":{"shasum":"f300a72c78c8521f9ef0e094c67021623dbdd2db","tarball":"http://registry.npmjs.org/console-colorjs/-/console-colorjs-0.0.1.tgz"},"maintainers":[{"name":"youngjay","email":"hiyoungjay@gmail.com"}]},"0.0.2":{"name":"console-colorjs","version":"0.0.2","main":"lib/console-color.js","description":"make the console a little bit colorful","keywords":["console","terminal","color","colorized","colorful"],"readme":"console-color\r\n=============\r\n\r\nExamples:\r\n```javascript\r\n\r\nvar colorized = require('console-color');\r\n\r\nconsole.log(colorized.pass('pass'));\r\nconsole.log(colorized.bright('process'));","_id":"console-colorjs@0.0.2","_from":"console-colorjs@*","dist":{"shasum":"9f7b52c0d444c631adf8fb091be60ccd5c6555db","tarball":"http://registry.npmjs.org/console-colorjs/-/console-colorjs-0.0.2.tgz"},"maintainers":[{"name":"youngjay","email":"hiyoungjay@gmail.com"}]}},"readme":"console-color\r\n=============\r\n\r\nExamples:\r\n```javascript\r\n\r\nvar colorized = require('console-color');\r\n\r\nconsole.log(colorized.pass('pass'));\r\nconsole.log(colorized.bright('process'));","maintainers":[{"name":"youngjay","email":"hiyoungjay@gmail.com"}],"time":{"modified":"2012-08-22T06:13:28.614Z","created":"2012-08-22T04:20:36.549Z","0.0.1":"2012-08-22T04:20:40.581Z","0.0.2":"2012-08-22T06:13:28.614Z"},"_id":"console-colorjs","_rev":"1-549bdb7a06f1b807e8cf7843dd94ba81"}%ÿdocument-storeÿconnect-redirection¦{"id":"connect-redirection","rev":"1-46819922fef8e0b2efdc03ca878e83e0","rev_tree":[{"pos":1,"ids":["46819922fef8e0b2efdc03ca878e83e0",{"status":"available"},[]]}],"rev_map":{"1-46819922fef8e0b2efdc03ca878e83e0":3235},"winningRev":"1-46819922fef8e0b2efdc03ca878e83e0","deleted":fals3JìÃùe,"seq":3235}ÿby-sequenceÿ0000000000003235Ó {"name":"connect-redirection","description":"Response redirect middleware for Connect.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"connect-redirection","version":"0.0.1","description":"Response redirect middleware for Connect.","keywords":["connect","express","redirect"],"repository":{"type":"git","url":"git://github.com/jaredhanson/connect-redirection.git"},"bugs":{"url":"http://github.com/jaredhanson/connect-redirection/issues"},"author":{"name":"Jared Hanson","email":"jaredhanson@gmail.com","url":"http://www.jaredhanson.net/"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"main":"./lib","dependencies":{"response-redirect":"0.0.x"},"devDependencies":{"vows":"0.6.x"},"scripts":{"test":"NODE_PATH=lib node_modules/.bin/vows test/*-test.js"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"jaredhanson","email":"jaredhanson@gmail.com"},"_id":"connect-redirection@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0c5615392fc87c10c5633fbd507b2ea8a97b9aa4","tarball":"http://registry.npmjs.org/connect-redirection/-/connect-redirection-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jaredhanson","email":"jaredhanson@gmail.com"}]}},"readme":"","maintainers":[{"name":"jaredhanson","email":"jaredhanson@gmail.com"}],"time":{"modified":"2012-07-15T20:01:26.322Z","created":"2012-07-15T20:01:24.943Z","0.0.1":"2012-07-15T20:01:26.322Z"},"author":{"name":"Jared Hanson","email":"jaredhanson@gmail.com","url":"http://www.jaredhanson.net/"},"repository":{"type":"git","url":"git://github.com/jaredhanson/connect-redirection.git"},"_id":"connect-redirection","_rev":"1-46819922fef8e0b2efdc03ca878e83e0"},ÿdocument-storeÿconnect-cookieless-session­{"id":"connect-cookieless-session","rev":"1-ca7d4b8cf3a7b8dc874f29ef801779ce","rev_tree":[{"pos":1,"ids":["ca7d4b8cf3a7b8dc874f29ef801779ce",{"status":"available"},[]]}],"rev_map":{"1-ca7d4b8cf3a7b8dc874f29ef801779ce":3234},"winningRev":"1-ca7d4b8cf3a7b8dc874f29ef801779ce","deleted":false,"seq":3234}ÿby-sequenceÿ0000000000003234ª {"name":"connect-cookieless-session","description":"A cookieless session handler for connect. Uses regular headers and or steve-style json, if available","dist-tags":{"latest":"0.6.0"},"versions":{"0.6.0":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"connect-cookieless-session","description":"A cookieless session handler for connect. Uses regular headers and or steve-style json, if available","version":"0.6.0","homepage":"http://github.com/coolaj86/steve","repository":{"type":"git","url":"git://github.com/coolaj86/steve.git"},"main":"index","dependencies":{"node-uuid":"1.x"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"connect-cookieless-session@0.6.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"24f631681a9662f34a506494b8c73eb21accfde6","tarball":"http://registry.npmjs.org/connect-cookieless-session/-/connect-cookieless-session-0.6.0.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-06-11T19:18:59.874Z","created":"2012-06-11T19:18:59.448Z","0.6.0":"2012-06-11T19:18:59.874Z"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"repository":{"type":"git","url":"git://github.com/coolaj86/steve.git"},"_id":"connect-cookieless-session","_rev":"1-ca7d4b8cf3a7b8dc874f29ef801779ce"}ÿdocument-storeÿconfig.jsœ{"id":"config.js","rev":"1-34d89be96387e11f0d6ef38aea7290c5","rev_tree":[{"pos":1,"ids":["34d89be96387e11f0d6ef38aea7290c5",{"status":"available"},[]]}],"rev_map":{"1-34d89be96387e11f0d6ef38aea7290c5":3233},"winningRev":"1-34d89be96387e11f0d6ef38aea7290c5","deleted":false,"seq":3233}ÿby-sequenceÿ0000000000003233ñ{"name":"config.js","description":"simple library for retrieving per-file configuration data","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"config.js","description":"simple library for retrieving per-file configuration data","author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"version":"0.0.1","license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/caryhaynie/config.js.git"},"scripts":{"test":"./node_modules/mocha/bin/mocha -R spec"},"dependencies":{"callsite":"latest"},"devDependencies":{"expect.js":"0.1.x","mocha":"1.x"},"engine":{"node":">=0.6"},"_npmUser":{"name":"caryhaynie","email":"cary.haynie@gmail.com"},"_id":"config.js@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"d9df57a583f97bb328ba702ac1ac90399e11bd6e","tarball":"http://registry.npmjs.org/config.js/-/config.js-0.0.1.tgz"},"maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}]},"0.1.0":{"name":"config.js","description":"simple library for retrieving per-file configuration data","author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"version":"0.1.0","license":"MIT","main":"index.js","repository":{"type":"git","url":"https://github.com/caryhaynie/config.js.git"},"scripts":{"test":"./node_modules/mocha/bin/mocha -R spec"},"dependencies":{"callsite":"latest"},"devDependencies":{"expect.js":"0.1.x","mocha":"1.x"},"engine":{"node":">=0.8"},"readme":"# config.js -- node.js configuration for busy people\n\n## install ( via git and npm linking )\n\n`$ git clone https://github.com/caryhaynie/config.js.git`\n\n`$ cd config.js; sudo npm link`\n\n`$ npm link config.js`\n\n## install ( via npm )\n\n`$ npm install config.js`\n\n## usage\n\n`var config = require(\"config.js\").getConfig()`\n\n## info\nconfig.js is a simple library that allows node.js developers to store\nconfiguration data in a JSON file that sits next to the script where they\nneed it. To load your config, simply call ` require(\"config.js\").getConfig() `\nand read the resulting object. If config.js can't find a config file, it will\nsimply return an empty object. If it can't parse the JSON data, it will throw\na Syntax Error.\n","_id":"config.js@0.1.0","dist":{"shasum":"b8c1080ba26f309835a4796e20b3624be760bc0d","tarball":"http://registry.npmjs.org/config.js/-/config.js-0.1.0.tgz"},"maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}]}},"readme":"# config.js -- node.js configuration for busy people\n\n## install\n\n`$ git clone https://github.com/caryhaynie/config.js.git`\n\n`$ cd config.js; sudo npm link`\n\n## usage\n\n`$ npm link config.js`\n\n\n## info\nconfig.js is a simple library that allows node.js developers to store\nconfiguration data in a JSON file that sits next to the script where they\nneed it. To load your config, simply call ` require(\"config.js\").getConfig() `\nand read the resulting object. If config.js can't find a config file, it will\nsimply return an empty object. If it can't parse the JSON data, it will throw\na Syntax Error.\n","maintainers":[{"name":"caryhaynie","email":"cary.haynie@gmail.com"}],"time":{"modified":"2012-07-10T00:47:34.374Z","created":"2012-06-10T18:03:50.308Z","0.0.1":"2012-06-10T18:03:50.860Z","0.1.0":"2012-07-10T00:47:34.374Z"},"author":{"name":"Cary Haynie","email":"cary.haynie@gmail.com"},"repository":{"type":"git","url":"https://github.com/caryhaynie/config.js.git"},"_id":"config.js","_rev":"1-34d89be96387e11f0d6ef38aea7290c5"}ÿdocument-storeÿconfig-toolž{"id":"config-tool","rev":"1-2c90cc565e69bf7cef10a1c568120605","rev_tree":[{"pos":1,"ids":["2c90cc565e69bf7cef10a1c568120605",{"status":"available"},[]]}],"rev_map":{"1-2c90cc565e69bf7cef10a1c568120605":3232},"winningRev":"1-2c90cc565e69bf7cef10a1c568120605","deleted":false,"seq":3232}ÿby-sequenceÿ0000000000003232ß{"name":"config-tool","description":"Configuration and settings management through JavaScript files or JSON files with comments","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Jeremy Fisher","email":"jeremy@rentawebgeek.com"},"name":"config-tool","description":"Configuration and settings management through JavaScript files or JSON files with comments","keywords":["conf","config","configure","configuration","settings","env","environment","management","json","script"],"version":"0.1.0","homepage":"http://github.com/rawg/config-tool","repository":{"url":"git://github.com/rawg/config-tool.git"},"main":"lib/config-tool.js","engines":{"node":">= 0.4.0"},"dependencies":{},"_npmUser":{"name":"rawg","email":"jeremy@rentawebgeek.com"},"_id":"config-tool@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"a7f721a86707a53fb05ecd57f77b0f2d942ae2e8","tarball":"http://registry.npmjs.org/config-tool/-/config-tool-0.1.0.tgz"},"maintainers":[{"name":"rawg","email":"jeremy@rentawebgeek.com"}]}},"readme":"# config-tool\nConfiguration management for node, with some cool features.\n\n## Features\nConfigurations are just JavaScript objects, but there are several ways to manipulate values:\n\n * Directly as object members\n * As JSON strings or files – comments allowed!\n * As JavaScript files (see the examples)\n * From command line arguments (like -D )\n\n","maintainers":[{"name":"rawg","email":"jeremy@rentawebgeek.com"}],"time":{"modified":"2012-04-20T23:45:30.571Z","created":"2012-04-20T23:45:29.415Z","0.1.0":"2012-04-20T23:45:30.571Z"},"author":{"name":"Jeremy Fisher","email":"jeremy@rentawebgeek.com"},"repository":{"url":"git://github.com/rawg/config-tool.git"},"_id":"config-tool","_rev":"1-2c90cc565e69bf7cef10a1c568120605"}ÿdocument-storeÿcoberturaJSž{"id":"coberturaJS","rev":"1-7c0dd94e6a102f8a6e377c7258f6d4da","rev_tree":[{"pos":1,"ids":["7c0dd94e6a102f8a6e377c7258f6d4da",{"status":"available"},[]]}],"rev_map":{"1-7c0dd94e6a102f8a6e377c7258f6d4da":3231},"winningRev":"1-7c0dd94e6a102f8a6e377c7258f6d4da","deleted":false,"seq":3231}ÿby-sequenceÿ0000000000003231Ù>{"name":"coberturaJS","description":"code coverage tool for node.js","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.1":{"name":"coberturaJS","version":"0.0.1","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"967192571d9b0d36d3c4677c613333da09d509e0","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.1.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.2":{"name":"coberturaJS","version":"0.0.2","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"d90f378ab2796638a3f442e8ddd5bab5d8326602","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.2.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.3":{"name":"coberturaJS","version":"0.0.3","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8aecf6ad69cb8e9ba09462606a48de7310eeb2fc","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.3.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.4":{"name":"coberturaJS","version":"0.0.4","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"83d289122fbb608ff5d023dee542a3cf1cf87afe","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.4.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.5":{"name":"coberturaJS","version":"0.0.5","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.5","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6ff7b2e05655e9c67d0be417857e6c041d69144e","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.5.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.6":{"name":"coberturaJS","version":"0.0.6","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.6","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"7505c58a8c983429c225462f61d2c1a33fcf9b9a","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.6.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.7":{"name":"coberturaJS","version":"0.0.7","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.7","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"67f9a242a024bdcbda55674e2ca532845411d103","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.7.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.8":{"name":"coberturaJS","version":"0.0.8","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.8","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b025ad64270afc7e365abeb458ae1ffc7e87deaa","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.8.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]},"0.0.9":{"name":"coberturaJS","version":"0.0.9","description":"code coverage tool for node.js","keywords":["cobertura","coverage","test"],"author":{"name":"Paulo Lopes"},"bin":{"coberturajs":"./bin/coberturajs"},"main":"./lib","dependencies":{"esprima":"0.9.9","escodegen":"0.0.2"},"engines":{"node":">=0.4.12"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"license":"GPLv3","_npmUser":{"name":"pmlopes","email":"pmlopes@gmail.com"},"_id":"coberturaJS@0.0.9","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"be199481367d7bade7e9e0a946ae94dfe440e82a","tarball":"http://registry.npmjs.org/coberturaJS/-/coberturaJS-0.0.9.tgz"},"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}]}},"readme":null,"maintainers":[{"name":"pmlopes","email":"pmlopes@gmail.com"}],"time":{"modified":"2012-05-09T14:18:14.303Z","created":"2012-05-09T09:46:03.875Z","0.0.1":"2012-05-09T09:46:05.077Z","0.0.2":"2012-05-09T10:44:11.153Z","0.0.3":"2012-05-09T10:56:04.667Z","0.0.4":"2012-05-09T11:18:21.136Z","0.0.5":"2012-05-09T11:41:29.292Z","0.0.6":"2012-05-09T11:53:04.835Z","0.0.7":"2012-05-09T13:20:32.397Z","0.0.8":"2012-05-09T13:25:48.303Z","0.0.9":"2012-05-09T14:18:14.303Z"},"author":{"name":"Paulo Lopes"},"repository":{"type":"git","url":"git://github.com/pmlopes/coberturajs.git"},"_id":"coberturaJS","_rev":"1-7c0dd94e6a102f8a6e377c7258f6d4da"}ÿdocument-storeÿcmdparserœ{"id":"cmdparser","rev":"1-7dbb17fa5aec5205fec45ebba0361b44","rev_tree":[{"pos":1,"ids":["7dbb17fa5aec5205fec45ebba0361b44",{"status":"available"},[]]}],"rev_map":{"1-7dbb17fa5aec5205fec45ebba0361b44":3230},"winningRev":"1-7dbb17fa5aec5205fec45ebba0361b44","deleted":false,"seq":3230}ÿby-sequenceÿ0000000000003230ù{"name":"cmdparser","description":"Command parser with support for completers.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Joe Ferner","email":"joe@fernsroth.com"},"name":"cmdparser","description":"Command parser with support for completers.","keywords":["parser","command","redis"],"version":"0.0.1","repository":{"type":"git","url":"git://github.com/joeferner/node-cmdparser.git"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{"nodeunit":"~0.7.4"},"scripts":{"test":"nodeunit test"},"main":"./parser.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"cmdparser@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"d7c0db3d37b616eddefec26d75294122cffa760a","tarball":"http://registry.npmjs.org/cmdparser/-/cmdparser-0.0.1.tgz"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]},"0.0.2":{"author":{"name":"Joe Ferner","email":"joe@fernsroth.com"},"name":"cmdparser","description":"Command parser with support for completers.","keywords":["parser","command","redis"],"version":"0.0.2","repository":{"type":"git","url":"git://github.com/joeferner/node-cmdparser.git"},"engines":{"node":"*"},"dependencies":{"async":"~0.1.22"},"devDependencies":{"nodeunit":"~0.7.4"},"scripts":{"test":"nodeunit test"},"main":"./parser.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"cmdparser@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"ef1b6b61ce14e60517510ba1afa1a097bc17d1f0","tarball":"http://registry.npmjs.org/cmdparser/-/cmdparser-0.0.2.tgz"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]},"0.0.3":{"author":{"name":"Joe Ferner","email":"joe@fernsroth.com"},"name":"cmdparser","description":"Command parser with support for completers.","keywords":["parser","command","redis"],"version":"0.0.3","repository":{"type":"git","url":"git://github.com/nearinfinity/node-cmdparser.git"},"engines":{"node":"*"},"dependencies":{"async":"~0.1.22"},"devDependencies":{"nodeunit":"~0.7.4"},"scripts":{"test":"./node_modules/nodeunit/bin/nodeunit test"},"main":"./parser.js","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"cmdparser@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"d17075849ba6bbb462447c1950188ab7719871e6","tarball":"http://registry.npmjs.org/cmdparser/-/cmdparser-0.0.3.tgz"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]}},"readme":"\n# cmdparser\n\nCommand parser with support for completers.\n\nMade specifically to parse redis command syntax but can be used for other purposes as well.\n\n# Install\n\n```bash\n$ npm install cmdparser\n```\n\n# Example\n\n```javascript\nvar cmdparser = new CmdParser([\n \"del [key ...]\",\n \"dump \",\n \"exists \"\n], {\n key: function (partial) {\n return [\"1111\", \"1112\", \"1113\"];\n }\n});\nvar results = cmdparser.completer(\"dump 111\");\n// results = [ [\"1111\", \"1112\", \"1113\"], \"111\" ]\n```\n","maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"time":{"modified":"2012-08-02T13:44:31.268Z","created":"2012-06-20T18:53:32.078Z","0.0.1":"2012-06-20T18:53:32.835Z","0.0.2":"2012-06-20T21:05:17.578Z","0.0.3":"2012-07-24T16:12:42.532Z"},"author":{"name":"Joe Ferner","email":"joe@fernsroth.com"},"repository":{"type":"git","url":"git://github.com/nearinfinity/node-cmdparser.git"},"users":{"fgribreau":true},"_id":"cmdparser","_rev":"1-7dbb17fa5aec5205fec45ebba0361b44"}ÿdocument-storeÿclotho™{"id":"clotho","rev":"1-a5cbc356d866f57c013fca7294e519da","rev_tree":[{"pos":1,"ids":["a5cbc356d866f57c013fca7294e519da",{"status":"available"},[]]}],"rev_map":{"1-a5cbc356d866f57c013fca7294e519da":3229},"winningRev":"1-a5cbc356d866f57c013fca7294e519da","deleted":false,"seq":3229}ÿby-sequenceÿ0000000000003229¨{"name":"clotho","description":"A sugared DOM builder à lá Hiccup.","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"author":{"name":"Quildreen Motta","email":"quildreen@gmail.com","url":"http://killdream.github.com/"},"name":"clotho","description":"A sugared DOM builder à lá Hiccup.","version":"0.1.0","main":"./src/index.js","repository":{"type":"git","url":"git://github.com/killdream/clotho.git"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"_id":"clotho@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"8880bf6e5d2ee048e5e40819a29890c689fb2666","tarball":"http://registry.npmjs.org/clotho/-/clotho-0.1.0.tgz"},"readme":"","maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.1.1":{"author":{"name":"Quildreen Motta","email":"quildreen@gmail.com","url":"http://killdream.github.com/"},"name":"clotho","description":"A sugared DOM builder à lá Hiccup.","version":"0.1.1","main":"./src/index.js","repository":{"type":"git","url":"git://github.com/killdream/clotho.git"},"engines":{"node":"*"},"dependencies":{"boo":"~1.2.0","khaos":"~0.1.3"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"_id":"clotho@0.1.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"cc103f1e1343dd1a86a1ffb047d98e355dc8039e","tarball":"http://registry.npmjs.org/clotho/-/clotho-0.1.1.tgz"},"readme":"","maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.1.2":{"author":{"name":"Quildreen Motta","email":"quildreen@gmail.com","url":"http://killdream.github.com/"},"name":"clotho","description":"A sugared DOM builder à lá Hiccup.","version":"0.1.2","main":"./src/index.js","repository":{"type":"git","url":"git://github.com/killdream/clotho.git"},"engines":{"node":"*"},"dependencies":{"boo":"~1.2.0","khaos":"~0.1.3"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"_id":"clotho@0.1.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"674a91c3883fa82eee30cd5b01e426c09b699b7b","tarball":"http://registry.npmjs.org/clotho/-/clotho-0.1.2.tgz"},"readme":"","maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]}},"readme":"","maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}],"time":{"modified":"2012-06-12T01:56:40.879Z","created":"2012-06-06T01:29:44.467Z","0.1.0":"2012-06-06T01:29:48.405Z","0.1.1":"2012-06-11T00:13:29.285Z","0.1.2":"2012-06-12T01:56:40.879Z"},"author":{"name":"Quildreen Motta","email":"quildreen@gmail.com","url":"http://killdream.github.com/"},"repository":{"type":"git","url":"git://github.com/killdream/clotho.git"},"_id":"clotho","_rev":"1-a5cbc356d866f57c013fca7294e519da"}+ÿdocument-storeÿcacti-host-updown-monitor¬{"id":"cacti-host-updown-monitor","rev":"1-f115a766b25ae24a4e6e71c0b6ab4d44","rev_tree":[{"pos":1,"ids":["f115a766b25ae24a4e6e71c0b6ab4d44",{"status":"available"},[]]}],"rev_map":{"1-f115a766b25ae24a4e6e71c0b6ab4d44":3228},"winningRev":"1-f115a766b25ae24a4e6e71c0b6ab4d44","deleted":false,"seq":3228}ÿby-sequenceÿ0000000000003228‚{"name":"cacti-host-updown-monitor","description":"If use cacti, this node module will send alarm email when server down","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"cacti-host-updown-monitor","version":"0.0.1","preferGlobal":true,"description":"If use cacti, this node module will send alarm email when server host down","author":{"name":"JasonCheng","email":"info@JasonCheng.tw"},"homepage":"http://jasoncheng.tw","keywords":["cacti","monitor","updown","alarm"],"dependencies":{"flow":">=0.2.2","sequelize":">=1.3.7","mailer":">=0.6.7"},"main":"cacti","repository":{"type":"git","url":"git://github.com/jasoncheng/cacti-host-updown-monitor.git"},"engines":{"node":">=0.6.x"},"_npmUser":{"name":"jasoncheng","email":"17hado.com@gmail.com"},"_id":"cacti-host-updown-monitor@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"eaf495c3746dfba79db66a25a62d35f17fcc43e8","tarball":"http://registry.npmjs.org/cacti-host-updown-monitor/-/cacti-host-updown-monitor-0.0.1.tgz"},"maintainers":[{"name":"jasoncheng","email":"17hado.com@gmail.com"}]},"0.0.2":{"name":"cacti-host-updown-monitor","version":"0.0.2","preferGlobal":true,"description":"If use cacti, this node module will send alarm email when server down","author":{"name":"JasonCheng","email":"info@JasonCheng.tw"},"homepage":"http://jasoncheng.tw","keywords":["cacti","monitor","updown","alarm"],"dependencies":{"flow":">=0.2.2","sequelize":">=1.3.7","mailer":">=0.6.7"},"main":"cacti","repository":{"type":"git","url":"git://github.com/jasoncheng/cacti-host-updown-monitor.git"},"engines":{"node":">=0.6.x"},"_npmUser":{"name":"jasoncheng","email":"17hado.com@gmail.com"},"_id":"cacti-host-updown-monitor@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"ad22e6de882dc43ea75e382e02c52ecdf6983e6a","tarball":"http://registry.npmjs.org/cacti-host-updown-monitor/-/cacti-host-updown-monitor-0.0.2.tgz"},"maintainers":[{"name":"jasoncheng","email":"17hado.com@gmail.com"}]}},"readme":"cacti-host-updown-gmail-notify\n==============================\n\nThis is a very very very simple [NodeJS](http://nodejs.org) code, for myself use; if u like, just use it!\n\nWhat for\n=================\n \n - Checking cacti database, monitor host.status change; default check interval is 5 mins (can be change on config.js)\n - Send email through smtp when cacti monitor host is down.\n\nWhen will send alarm email\n=================\n \n - One time alarm, server status not \"HOST_UP\"\n - One time alarm, when server go back to \"HOST_UP\"\n - One time alarm, when server status change\n\nInstall\n=================\n\n\n $ cd /usr/share/cacti/node_modules/cacti-host-updown\n $ cp config.tmp.js config.js\n $ vim config.js\n $ npm install\n $ node cacti\n\n","maintainers":[{"name":"jasoncheng","email":"17hado.com@gmail.com"}],"time":{"modified":"2012-08-02T13:44:31.905Z","created":"2012-07-24T14:42:35.909Z","0.0.1":"2012-07-24T14:42:39.316Z","0.0.2":"2012-07-24T14:46:51.575Z"},"author":{"name":"JasonCheng","email":"info@JasonCheng.tw"},"repository":{"type":"git","url":"git://github.com/jasoncheng/cacti-host-updown-monitor.git"},"users":{"fgribreau":true},"_id":"cacti-host-updown-monitor","_rev":"1-f115a766b25ae24a4e6e71c0b6ab4d44"}ÿdocument-storeÿbxjs—{"id":"bxjs","rev":"1-c4a6fc8117a7f83c51f4e3c9747e4b3a","rev_tree":[{"pos":1,"ids":["c4a6fc8117a7f83c51f4e3c9747e4b3a",{"status":"available"},[]]}],"rev_map":{"1-c4a6fc8117a7f83c51f4e3c9747e4b3a":3227},"winningRev":"1-c4a6fc8117a7f83c51f4e3c9747e4b3a","deleted":false,"seq":3227}ÿby-sequenceÿ0000000000003227ª {"name":"bxjs","description":"","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"bxjs","main":"./lib/Box.js","author":{"name":"rolandpoulter"},"version":"0.0.1","keywords":[],"homepage":"https://github.com/rolandpoulter/node-box-js","repository":{"type":"git","url":"git://github.com/rolandpoulter/node-box-js.git"},"description":"","contributors":[],"dependencies":{"clss":">= 0.0.1","uglify-js":">= 1.2.5"},"devDependencies":{"spc":">= 0.0.1"},"scripts":{"test":"node ./script/test.js"},"_npmUser":{"name":"rolandpoulter","email":"rolandpoulter@gmail.com"},"_id":"bxjs@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"7c6b70db3b97526b9fec04e0fb9fe858237ecbcb","tarball":"http://registry.npmjs.org/bxjs/-/bxjs-0.0.1.tgz"},"readme":"","maintainers":[{"name":"rolandpoulter","email":"rolandpoulter@gmail.com"}]}},"readme":"","maintainers":[{"name":"rolandpoulter","email":"rolandpoulter@gmail.com"}],"time":{"modified":"2012-06-18T06:27:27.806Z","created":"2012-06-18T06:27:26.651Z","0.0.1":"2012-06-18T06:27:27.806Z"},"author":{"name":"rolandpoulter"},"repository":{"type":"git","url":"git://github.com/rolandpoulter/node-box-js.git"},"_id":"bxjs","_rev":"1-c4a6fc8117a7f83c51f4e3c9747e4b3a"}ÿdocument-storeÿbuttly™{"id":"buttly","rev":"1-b6dc9d8c27bd79c6bd02ffcbd0501cc1","rev_tree":[{"pos":1,"ids":["b6dc9d8c27bd79c6bd02ffcbd0501cc1",{"status":"available"},[]]}],"rev_map":{"1-b6dc9d8c27bd79c6bd02ffcbd0501cc1":3226},"winningRev":"1-b6dc9d8c27bd79c6bd02ffcbd0501cc1","deleted":false,"seq":3226}ÿby-sequenceÿ0000000000003226ª{"name":"buttly","description":"Jims Nightclub","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"buttly","version":"0.0.1","description":"Jims Nightclub","keywords":["jim"],"engines":{"node":">= 0.5.0"},"_npmUser":{"name":"ond","email":"no@no.com"},"_id":"buttly@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ec0db970e733e83447e8a8a6a4eee9600c4e67be","tarball":"http://registry.npmjs.org/buttly/-/buttly-0.0.1.tgz"},"readme":"","maintainers":[{"name":"ond","email":"no@no.com"}]},"0.0.2":{"name":"buttly","version":"0.0.2","description":"Jims Nightclub","main":"main.js","bin":{"phonosaur":"main.js"},"keywords":["jim"],"engines":{"node":">= 0.5.0"},"_npmUser":{"name":"ond","email":"no@no.com"},"_id":"buttly@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b49d664a1ac0182dad9bf9a287305c38d8f188ac","tarball":"http://registry.npmjs.org/buttly/-/buttly-0.0.2.tgz"},"readme":"","maintainers":[{"name":"ond","email":"no@no.com"}]},"0.0.3":{"name":"but¤é½½ùtly","version":"0.0.3","description":"Jims Nightclub","main":"main.js","bin":{"butt":"node main.js"},"keywords":["jim"],"engines":{"node":">= 0.5.0"},"_npmUser":{"name":"ond","email":"no@no.com"},"_id":"buttly@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"222f221dc91267b94f78712dce142de2bc67acc1","tarball":"http://registry.npmjs.org/buttly/-/buttly-0.0.3.tgz"},"readme":"","maintainers":[{"name":"ond","email":"no@no.com"}]},"0.0.4":{"name":"buttly","version":"0.0.4","description":"Jims Nightclub","main":"main.js","bin":{"butt":"main.js"},"keywords":["jim"],"engines":{"node":">= 0.5.0"},"_npmUser":{"name":"ond","email":"no@no.com"},"_id":"buttly@0.0.4","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"443744a29b92e8c7be2826f69f3fc584b2eb7a64","tarball":"http://registry.npmjs.org/buttly/-/buttly-0.0.4.tgz"},"readme":"","maintainers":[{"name":"ond","email":"no@no.com"}]}},"readme":"","maintainers":[{"name":"ond","email":"no@no.com"}],"time":{"modified":"2012-06-23T21:11:03.284Z","created":"2012-06-23T20:46:21.380Z","0.0.1":"2012-06-23T20:46:23.634Z","0.0.2":"2012-06-23T21:04:53.449Z","0.0.3":"2012-06-23T21:07:51.745Z","0.0.4":"2012-06-23T21:11:03.284Z"},"_id":"buttly","_rev":"1-b6dc9d8c27bd79c6bd02ffcbd0501cc1"}"ÿdocument-storeÿbuster-dev-tools£{"id":"buster-dev-tools","rev":"1-f61dab5f58577b97f01fa19cbdfd59c9","rev_tree":[{"pos":1,"ids":["f61dab5f58577b97f01fa19cbdfd59c9",{"status":"available"},[]]}],"rev_map":{"1-f61dab5f58577b97f01fa19cbdfd59c9":3225},"winningRev":"1-f61dab5f58577b97f01fa19cbdfd59c9","deleted":false,"seq":3225}ÿby-sequenceÿ0000000000003225Ë{"name":"buster-dev-tools","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"buster-dev-tools","version":"0.1.0","author":{"name":"August Lilleaas and Christian Johansen"},"contributors":[{"name":"August Lilleaas","email":"august@augustl.com","url":"http://augustl.com"},{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"}],"bin":{"buster-dev-tools":"./bin/buster-dev-tools"},"_npmUser":{"name":"augustl","email":"agust@augustl.com"},"_id":"buster-dev-tools@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"84a6707f56d5c01164df3d3b3a746fe91f82f131","tarball":"http://registry.npmjs.org/buster-dev-tools/-/buster-dev-tools-0.1.0.tgz"},"readme":"","maintainers":[{"name":"augustl","email":"agust@augustl.com"}]},"0.2.0":{"name":"buster-dev-tools","version":"0.2.0","author":{"name":"August Lilleaas and Christian Johansen"},"contributors":[{"name":"August Lilleaas","email":"august@augustl.com","url":"http://augustl.com"},{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"}],"bin":{"buster-dev-tools":"./bin/buster-dev-tools"},"_npmUser":{"name":"augustl","email":"august@augustl.com"},"_id":"buster-dev-tools@0.2.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"e2bc90de7efd24d3ebc9b559bd0ce5f5a0a85968","tarball":"http://registry.npmjs.org/buster-dev-tools/-/buster-dev-tools-0.2.0.tgz"},"readme":"","maintainers":[{"name":"augustl","email":"agust@augustl.com"}]}},"readme":"","maintainers":[{"name":"augustl","email":"agust@augustl.com"}],"time":{"modified":"2012-03-21T20:06:33.086Z","created":"2012-03-13T21:47:53.294Z","0.1.0":"2012-03-13T21:47:54.831Z","0.2.0":"2012-03-21T20:06:33.086Z"},"author":{"name":"August Lilleaas and Christian Johansen"},"_id":"buster-dev-tools","_rev":"1-f61dab5f58577b97f01fa19cbdfd59c9"}#ÿdocument-storeÿbrowserify-bypass¤{"id":"browserify-bypass","rev":"1-c2c187801e79d854ea9fd9a3564fcae7","rev_tree":[{"pos":1,"ids":["c2c187801e79d854ea9fd9a3564fcae7",{"status":"available"},[]]}],"rev_map":{"1-c2c187801e79d854ea9fd9a3564fcae7":3224},"winningRev":"1-c2c187801e79d854ea9fd9a3564fcae7","deleted":false,"seq":3224}ÿby-sequenceÿ0000000000003224ù{"name":"browserify-bypass","description":"browserify middleware to declare alternative requires for the browser","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"browserify-bypass","version":"0.1.0","description":"browserify middleware to declare alternative requires for the browser","keywords":["browserify","middleware","alternative","conditional","require","browser"],"author":{"name":"Johannes Ewald","email":"mail@johannesewald.de","url":"http://johannesewald.de"},"main":"lib/bypass.js","bugs":{"email":"mail@johannesewald.de"},"repositories":{"type":"git","url":"https://github.com/jhnns/browserify-bypass"},"engines":{"node":"<=0.8.x"},"devDependencies":{"mocha":"1.2.x","expect.js":"0.1.x","browserify":"1.12.x"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jhnns","email":"mail@johannesewald.de"},"_id":"browserify-bypass@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"424ca38611bc7bd2a15da90dd3cfd0105eb39fc8","tarball":"http://registry.npmjs.org/browserify-bypass/-/browserify-bypass-0.1.0.tgz"},"maintainers":[{"name":"jhnns","email":"mail@johannesewald.de"}]}},"readme":"browserify-bypass\r\n=================\r\n\r\nA node.js [browserify](https://github.com/substack/node-browserify) middleware to declare alternative requires for\r\nthe browser.\r\n\r\n
\r\n\r\nInstallation\r\n------------\r\n\r\n`npm install browserify-bypass`\r\n\r\nExample\r\n--------\r\n\r\nTo declare an alternative require for the browser write `// @browser ./path/to/browserModule.js` one line above the\r\n require statement:\r\n\r\n```javascript\r\n\r\n// @browser ./browserModule.js\r\nvar myModule = require(\"./nodeModule.js\"),\r\n// @browser ./anotherBrowserModule.js\r\n anotherModule = require(\"./anotherNodeModule.js\");\r\n```\r\n\r\nTo generate the browserified module just do this:\r\n\r\n```javascript\r\n\r\nvar b = require(\"browserify\");\r\n\r\nb(); // init browserify with default options\r\nb.use(require(\"browserify-bypass\"));\r\nb.require(\"./testModule.js\");\r\n```\r\n\r\nThe browserified module will now look like this:\r\n\r\n```javascript\r\n\r\nvar myModule = require(\"./browserModule.js\"),\r\n anotherModule = require(\"./anotherBrowserModule.js\");\r\n```","maintainers":[{"name":"jhnns","email":"mail@johannesewald.de"}],"time":{"modified":"2012-06-18T16:45:07.753Z","created":"2012-06-18T16:45:03.940Z","0.1.0":"2012-06-18T16:45:07.753Z"},"author":{"name":"Johannes Ewald","email":"mail@johannesewald.de","url":"http://johannesewald.de"},"_id":"browserify-bypass","_rev":"1-c2c187801e79d854ea9fd9a3564fcae7"}ÿdocument-storeÿbridge-jsœ{"id":"bridge-js","rev":"1-6ef76c44f461c5a5a37740b8e4e1fe66","rev_tree":[{"pos":1,"ids":["6ef76c44f461c5a5a37740b8e4e1fe66",{"status":"available"},[]]}],"rev_map":{"1-6ef76c44f461c5a5a37740b8e4e1fe66":3223},"winningRev":"1-6ef76c44f461c5a5a37740b8e4e1fe66","deleted":false,"seq":3223}ÿby-sequenceÿ0000000000003223˜2{"name":"bridge-js","description":"Bridge client for JS","dist-tags":{"latest":"0.2.2"},"versions":{"0.2.0":{"author":"","name":"bridge-js","description":"Bridge client for JS","version":"0.2.0","repository":{"type":"git","url":"git://github.com/getbridge/bridge-js.git"},"main":"lib/bridge.js","engines":{"node":">= 0.6.1"},"devDependencies":{"uglify-js":"*"},"_npmUser":{"name":"sridatta","email":"sridatta@flotype.com"},"_id":"bridge-js@0.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"0ea7ef7c4d1b8a3dc87132e4ccdb9160da4cf541","tarball":"http://registry.npmjs.org/bridge-js/-/bridge-js-0.2.0.tgz"},"maintainers":[{"name":"sridatta","email":"sridatta@flotype.com"}],"directories":{}},"0.2.1":{"author":"","name":"bridge-js","description":"Bridge client for JS","version":"0.2.1","repository":{"type":"git","url":"git://github.com/getbridge/bridge-js.git"},"main":"lib/bridge.js","engines":{"node":">=0.6.1"},"devDependencies":{"uglify-js":"*"},"readme":"# Bridge for Javascript\nBridge is a unified messaging system that allows you to easily build\ncross-language services to share data and realtime updates among your\nservers and your clients\n\n## Node.js Installation\nQuick install: Using the [Node Package Manager](http://npmjs.org).\n\n npm install bridge\n\nSource install: Clone this repository using `git clone\ngit@github.com:getbridge/bridge-js.git` and install using the npm\ninstaller, `npm install bridge-js/`\n\n## Browser Use\n\nBridge for Javascript can be used in the browser. The javascript is hosted\non Bridge servers, but can be served from your own server or CDN of your\nchoice.\n\n http://www.getbridge.com/js/bridge.min.js\n \nTo use Bridge in the browser, simply add a script tag in your\nhtml. ``\n\n### Dependencies\nThis library has no external dependencies.\n\n## Documentation and Support\n* API Reference: http://www.getbridge.com/docs/api/js/\n* Getting Started: http://www.getbridge.com/docs/gettingstarted/js/\n* About Bridge: http://www.getbridge.com/\n\nThe `examples` directory of this library contains sample applications for Bridge.\n\nSupport is available in #getbridge on Freenode IRC or the Bridge Google Group.\n\n\n## License\nBridge is made available under the MIT/X11 license. See LICENSE file for details.\n\n","_id":"bridge-js@0.2.1","dist":{"shasum":"d42a13fc186f4fca212e744e9622c58a7bdf3984","tarball":"http://registry.npmjs.org/bridge-js/-/bridge-js-0.2.1.tgz"},"maintainers":[{"name":"sridatta","email":"sridatta@flotype.com"}],"directories":{}},"0.2.2":{"author":"","name":"bridge-js","description":"Bridge client for JS","version":"0.2.2","repository":{"type":"git","url":"git://github.com/getbridge/bridge-js.git"},"main":"lib/bridge.js","engines":{"node":">=0.6.1"},"devDependencies":{"uglify-js":"*"},"readme":"# Bridge for Javascript\nBridge is a unified messaging system that allows you to easily build\ncross-language services to share data and realtime updates among your\nservers and your clients\n\n## Node.js Installation\nQuick install: Using the [Node Package Manager](http://npmjs.org).\n\n npm install bridge\n\nSource install: Clone this repository using `git clone\ngit@github.com:getbridge/bridge-js.git` and install using the npm\ninstaller, `npm install bridge-js/`\n\n## Browser Use\n\nBridge for Javascript can be used in the browser. The javascript is hosted\non Bridge servers, but can be served from your own server or CDN of your\nchoice.\n\n http://www.getbridge.com/js/bridge.min.js\n \nTo use Bridge in the browser, simply add a script tag in your\nhtml. ``\n\n### Dependencies\nThis library has no external dependencies.\n\n## Documentation and Support\n* API Reference: http://www.getbridge.com/docs/api/js/\n* Getting Started: http://www.getbridge.com/docs/gettingstarted/js/\n* About Bridge: http://www.getbridge.com/\n\nThe `examples` directory of this library contains sample applications for Bridge.\n\nSupport is available in #getbridge on Freenode IRC or the Bridge Google Group.\n\n\n## License\nBridge is made available under the MIT/X11 license. See LICENSE file for details.\n\n","_id":"bridge-js@0.2.2","dist":{"shasum":"e16af14ff24acad6490601b2997f54877c52abef","tarball":"http://registry.npmjs.org/bridge-js/-/bridge-js-0.2.2.tgz"},"maintainers":[{"name":"sridatta","email":"sridatta@flotype.com"}]}},"readme":"# Bridge for Javascript\nBridge is a unified messaging system that allows you to easily build\ncross-language services to share data and realtime updates among your\nservers and your clients\n\n## Node.js Installation\nQuick install: Using the [Node Package Manager](http://npmjs.org).\n\n npm install bridge\n\nSource install: Clone this repository using `git clone\ngit@github.com:getbridge/bridge-js.git` and install using the npm\ninstaller, `npm install bridge-js/`\n\n## Browser Use\n\nBridge for Javascript can be used in the browser. The javascript is hosted\non Bridge servers, but can be served from your own server or CDN of your\nchoice.\n\n http://www.getbridge.com/js/bridge.min.js\n \nTo use Bridge in the browser, simply add a script tag in your\nhtml. ``\n\n### Dependencies\nThis library has no external dependencies.\n\n## Documentation and Support\n* API Reference: http://www.getbridge.com/docs/api/js/\n* Getting Started: http://www.getbridge.com/docs/gettingstarted/js/\n* About Bridge: http://www.getbridge.com/\n\nThe `examples` directory of this library contains sample applications for Bridge.\n\nSupport is available in #getbridge on Freenode IRC or the Bridge Google Group.\n\n\n## License\nBridge is made available under the MIT/X11 license. See LICENSE file for details.\n\n","maintainers":[{"name":"sridatta","email":"sridatta@flotype.com"}],"time":{"modified":"2012-07-09T19:36:34.884Z","created":"2012-06-28T09:22:43.067Z","0.2.0":"2012-06-28T09:22:47.529Z","0.2.1":"2012-07-07T00:40:57.970Z","0.2.2":"2012-07-09T19:36:34.884Z"},"repository":{"type":"git","url":"git://github.com/getbridge/bridge-js.git"},"_id":"bridge-js","_rev":"1-6ef76c44f461c5a5a37740b8e4e1fe66"}ÿdocument-storeÿbogus.js›{"id":"bogus.js","rev":"1-bcaf0892b4fc97887ab6a557f4d9ca09","rev_tree":[{"pos":1,"ids":["bcaf0892b4fc97887ab6a557f4d9ca09",{"status":"available"},[]]}],"rev_map":{"1-bcaf0892b4fc97887ab6a557f4d9ca09":3222},"winningRev":"1-bcaf0892b4fc97887ab6a557f4d9ca09","deleted":false,"seq":3222}ÿby-sequenceÿ0000000000003222ê"{"name":"bogus.js","description":"Access Backbone templates from Hogan","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.0":{"name":"bogus.js","description":"Access Backbone templates from Hogan","version":"0.0.0","author":{"name":"Stéphan Kochen","email":"stephan@angrybytes.com"},"keywords":["mustache","template","hogan","backbone"],"licenses":{"type":"Apache-2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"},"repository":{"type":"git","url":"git://github.com/AngryBytes/bogus.js.git"},"dependencies":{"hogan.js":"1.0.5-dev"},"devDependencies":{"tap":"0.2"},"main":"bogus.js","scripts":{"test":"tap test.js"},"_npmUser":{"name":"stephank","email":"stephan@kochen.nl"},"_id":"bogus.js@0.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"31b7ca8fbce0e2118a7548c9fdc151a33031383c","tarball":"http://registry.npmjs.org/bogus.js/-/bogus.js-0.0.0.tgz"},"maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}]},"2.0.0":{"name":"bogus.js","description":"Access Backbone templates from Hogan","version":"2.0.0","author":{"name":"Stéphan Kochen","email":"stephan@angrybytes.com"},"keywords":["mustache","template","hogan","backbone"],"licenses":{"type":"Apache-2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"},"repository":{"type":"git","url":"git://github.com/Two-Screen/bogus.js.git"},"dependencies":{"underscore":"1","hogan.js":"2.0.0"},"devDependencies":{"tap":"0.2","backbone":">=0.5"},"main":"bogus.js","scripts":{"test":"tap test.js"},"_npmUser":{"name":"stephank","email":"stephan@kochen.nl"},"_id":"bogus.js@2.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"bfa58198d3fff2d3179dc2f743971a39fe6ec893","tarball":"http://registry.npmjs.org/bogus.js/-/bogus.js-2.0.0.tgz"},"maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}]}},"readme":"## Bogus.js = Hogan.js + Backbone.js [![Build Status](https://secure.travis-ci.org/AngryBytes/bogus.js.png)](http://travis-ci.org/AngryBytes/bogus.js)\n\nBogus.js extends [Hogan.js] with support for [Backbone.js] models. This means\nthat mustache `{{tags}}` will look for Backbone.Model attributes, and mustache\n`{{#sections}}` will iterate over Backbone.Collections.\n\n [Hogan.js]: http://twitter.github.com/hogan.js/\n [Backbone.js]: http://documentcloud.github.com/backbone/\n\n### From the browser\n\nBogus.js is tied to a specific version of Hogan.js, currently 1.0.5. You will\nprobably want one of the following builds:\n\n * [hogan-1.0.5.js]: Complete build.\n * [hogan-1.0.5.min.js]: Complete build, minified.\n * [template-1.0.5.js]: Just Hogan.Template.\n * [template-1.0.5.min.js]: Just Hogan.Template, minified.\n\nMake sure Hogan.js and Bogus.js are included in your page in order:\n\n \n \n\n(Of course, you also want Backbone and dependencies, but Bogus.js won't\nactually fail without them.)\n\n [hogan-1.0.5.js]: https://raw.github.com/twitter/hogan.js/gh-pages/builds/1.0.5/hogan-1.0.5.js\n [hogan-1.0.5.min.js]: https://raw.github.com/twitter/hogan.js/gh-pages/builds/1.0.5/hogan-1.0.5.min.js\n [template-1.0.5.js]: https://raw.github.com/twitter/hogan.js/gh-pages/builds/1.0.5/template-1.0.5.js\n [template-1.0.5.min.js]: https://raw.github.com/twitter/hogan.js/gh-pages/builds/1.0.5/template-1.0.5.min.js\n\n### From Node.js\n\nInstall using NPM:\n\n $ npm install bogus.js\n\nThen simply:\n\n var Bogus = require('bogus.js');\n\n### Usage\n\nThe `Bogus` namespace contains all the methods you'd normally find in the\n`Hogan` namespace. This means you can simply:\n\n var data = new Backbone.Model({\n screenName: \"ko_si_nus\",\n });\n\n var template = Bogus.compile(\"Follow @{{screenName}}.\");\n var output = template.render(data);\n\n // prints \"Follow @ko_si_nus.\"\n console.log(output);\n","maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}],"time":{"modified":"2012-03-21T13:02:57.531Z","created":"2012-02-06T12:46:23.700Z","0.0.0":"2012-02-06T12:46:25.203Z","2.0.0":"2012-03-21T13:02:57.531Z"},"author":{"name":"Stéphan Kochen","email":"stephan@angrybytes.com"},"repository":{"type":"git","url":"git://github.com/Two-Screen/bogus.js.git"},"_id":"bogus.js","_rev":"1-bcaf0892b4fc97887ab6a557f4d9ca09"}ÿdocument-storeÿbobby˜{"id":"bobby","rev":"1-a0f2b49c0602665648900dc488f97736","rev_tree":[{"pos":1,"ids":["a0f2b49c0602665648900dc488f97736",{"status":"available"},[]]}],"rev_map":{"1-a0f2b49c0602665648900dc488f97736":3221},"winningRev":"1-a0f2b49c0602665648900dc488f97736","deleted":false,"seq":3221}ÿby-sequenceÿ0000000000003221È {"name":"bobby","description":"Build your JavaScript projects","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"author":{"name":"Stefan Fochler"},"name":"bobby","description":"Build your JavaScript projects","version":"1.0.0","repository":{"type":"git","url":"git://github.com/istefo/bobby.git"},"preferGlobal":true,"bugs":{"url":"http://github.com/istefo/bobby/issues"},"main":"bin/bobby.js","bin":{"bobby":"./bin/bobby.js"},"engines":{"node":"~0.6.x"},"dependencies":{"optimist":"~0.3.4","winston":"~0.6.1","uglify-js":"~1.3.1"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"iStefo","email":"istefo@me.com"},"_id":"bobby@1.0.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d3a29a59fa90c376a9d098131efa8523f5a91fa9","tarball":"http://registry.npmjs.org/bobby/-/bobby-1.0.0.tgz"},"maintainers":[{"name":"iStefo","email":"istefo@me.com"}]}},"readme":"# bobby (the little builder)\nBuild your JavaScript projects the way you allways wanted!\n\n*bobby* is a **JavaScript preprocessor** introducing `@require('file.js')` calls to easily give your projects a clean structure.\n\nIt recoursively parses your files starting at `file1 [file2...]` and include dependencies at the right place, but only once for the whole project. Simply put `@require('path/lib.js')` (CSS style @import will also work) where you want the file to be. Can't be easier.\n\n## Usage\nHere's the helpscreen of *bobby*: \n\n\tUsage: bobby [-cvs] [-b path] [-o out] file1 [file2...]\n\n\tOptions:\n\t -c, --compress Compress output with UglifyJS [boolean]\n\t -o, --output Output file. Defaults to stdout \n\t -b, --base Base directory of scripts relative to current\n\t -v, --verbose Be more verbose and log every step [boolean]\n\t -s, --strict Exit when a requested file can't be found [boolean]\n\nThe easiest way to combine all the files of your projects in the right order works like this:\n\n`bobby main.js > result.js`\n\n## Tips\n*bobby* is now available over npm. Simpy `npm install -g bobby` to get it running.\n\nAlternatively, check out this repository and install via `npm install -g .`.\n\n*bobby* becomes really powerfull when combined with tools like [LiveReload](http://livereload.com) or any other filesystem watcher. This way, *bobby* can build your project on the fly before you had even switched to your comandline (if you hadn't used vim, but of course you do...)\n\n## Options, explained\n### -c, --compress\nCompresses (mangles names and minifies) your scripts through UglifyJS\n\n### -o, --output\nSpecify a path here that shall be used as ouput. When not given, result will be piped to `stdout` and logs will be written to `bobby.log`. If a output file is given, your terminal will show the most important steps, warnings and errors.\n\n### -b, --base\nSpecify a directory realtive to current that will be used as base for your *required* scripts (not the start-files and not the output file!)\n\n### -v, --verbose\nBe more (really) verbose about requiring files\n\n### -s, --strict\nWhen *bobby* can't find a specified file, it still will continue (if possible). With this option, execution will be aborted when a file can't be read.\n\n## Acknowledgements \n### Sponsor\n#### Boinx Software\nwhere I'm proud to work at with all the amazing people. They make [cool software for OS X and iOS](http://boinx.com) and payed me for the hours I worked at *Bobby*.\n\n### Libraries\n#### optimist\nfor [comandline option parsing](https://github.com/substack/node-optimist)\n\n#### winston\na library for [asynchronous logging to different transports](https://github.com/flatiron/winston)\n\n#### UglifyJS\nfor [fast and efficient minifycation](https://github.com/mishoo/UglifyJS)","maintainers":[{"name":"iStefo","email":"istefo@me.com"}],"time":{"modified":"2012-06-24T19:33:54.394Z","created":"2012-06-24T19:33:52.361Z","1.0.0":"2012-06-24T19:33:54.394Z"},"author":{"name":"Stefan Fochler"},"repository":{"type":"git","url":"git://github.com/istefo/bobby.git"},"_id":"bobby","_rev":"1-a0f2b49c0602665648900dc488f97736"}ÿdocument-storeÿblarg˜{"id":"blarg","rev":"1-558e0d4af4d92834d834bb552ff2091a","rev_tree":[{"pos":1,"ids":["558e0d4af4d92834d834bb552ff2091a",{"status":"available"},[]]}],"rev_map":{"1-558e0d4af4d92834d834bb552ff2091a":3220},"winningRev":"1-558e0d4af4d92834d834bb552ff2091a","deleted":false,"seq":3220}ÿby-sequenceÿ0000000000003220ñ{"name":"blarg","description":"A markdown-based blog toolkit","dist-tags":{"latest":"0.1.4"},"versions":{"0.0.0":{"name":"blarg","version":"0.0.0","description":"A markdown-based blog server","author":{"name":"Henry Smith","email":"henry@henrysmith.org","url":"http://blog.henrysmith.org"},"keywords":["blog server","markdown blog","flat file blog"],"bugs":{"email":"henry@henrysmith.org","url":"https://github.com/henry-smith/blarg/issues"},"repository":{"type":"git","url":"git://github.com/henry-smith/blarg.git"},"scripts":{"start":"node src/blarg.js start","stop":"node src/blarg.js stop"},"dependencies":{"async":"0.1.16","cluster":"0.7.7","daemon":"0.4.1","dateformat":"1.0.x","express":"2.5.8","glob":"3.0.1","jsdom":"0.2.10","markdown":"0.3.1"},"_npmUser":{"name":"henry","email":"henry@henrysmith.org"},"_id":"blarg@0.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ebd4397d35708eaa01ca748ddb1fa7047e6ec7fd","tarball":"http://registry.npmjs.org/blarg/-/blarg-0.0.0.tgz"},"maintainers":[{"name":"henry","email":"henry@henrysmith.org"}],"directories":{}},"0.1.3":{"name":"blarg","version":"0.1.3","description":"A markdown-based blog toolkit","author":{"name":"Henry Smith","email":"henry@henrysmith.org"},"keywords":["markdown blog"],"bugs":{"email":"henry@henrysmith.org","url":"https://github.com/henry-smith/blarg/issues"},"repository":{"type":"git","url":"git://github.com/henry-smith/blarg.git"},"dependencies":{"async":"0.1.16","glob":"3.0.1","jsdom":"0.2.10","markdown":"0.3.1"},"_npmUser":{"name":"henry","email":"henry@henrysmith.org"},"_id":"blarg@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0a71c1813b31f7f1670bd1aff18b7df84ef949a7","tarball":"http://registry.npmjs.org/blarg/-/blarg-0.1.3.tgz"},"maintainers":[{"name":"henry","email":"henry@henrysmith.org"}]},"0.1.4":{"name":"blarg","version":"0.1.4","description":"A markdown-based blog toolkit","author":{"name":"Henry Smith","email":"henry@henrysmith.org"},"keywords":["markdown blog"],"bugs":{"email":"henry@henrysmith.org","url":"https://github.com/henry-smith/blarg/issues"},"repository":{"type":"git","url":"git://github.com/henry-smith/blarg.git"},"dependencies":{"async":"0.1.16","glob":"3.0.1","jsdom":"0.2.10","markdown":"0.3.1","mkdirp":"0.3.0"},"_npmUser":{"name":"henry","email":"henry@henrysmith.org"},"_id":"blarg@0.1.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d00463eed0e67c1f5a8ab4618ae988ead75cd483","tarball":"http://registry.npmjs.org/blarg/-/blarg-0.1.4.tgz"},"maintainers":[{"name":"henry","email":"henry@henrysmith.org"}]}},"readme":"\nblarg\n-----\n\nBlarg is the Node.js software powering my blog at [blog.henrysmith.org](http://blog.henrysmith.org)\n\n","maintainers":[{"name":"henry","email":"henry@henrysmith.org"}],"time":{"modified":"2012-03-21T21:52:29.471Z","created":"2012-02-17T19:16:01.242Z","0.0.0":"2012-02-17T19:16:03.680Z","0.0.2":"2012-02-18T15:38:21.794Z","0.1.3":"2012-03-20T21:27:33.794Z","0.1.4":"2012-03-21T21:52:29.471Z"},"author":{"name":"Henry Smith","email":"henry@henrysmith.org"},"repository":{"type":"git","url":"git://github.com/henry-smith/blarg.git"},"_id":"blarg","_rev":"1-558e0d4af4d92834d834bb552ff2091a"}ÿdocument-storeÿbitreaderœ{"id":"bitreader","rev":"1-ac633d8a1584357886e12f07ae40df0d","rev_tree":[{"pos":1,"ids":["ac633d8a1584357886e12f07ae40df0d",{"status":"available"},[]]}],"rev_map":{"1-ac633d8a1584357886e12f07ae40df0d":3219},"winningRev":"1-ac633d8a1584357886e12f07ae40df0d","deleted":false,"seq":3219}ÿby-sequenceÿ0000000000003219É{"name":"bitreader","description":"Generic, space efficient parser with sugar for digesting strings, ints, etc.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"name":"bitreader","description":"A generic parser with sugar for digesting strings, ints, etc.","version":"0.0.0","homepage":"https://github.com/brianloveswords/bitreader","repository":{"type":"git","url":"git://github.com/brianloveswords/bitreader.git"},"main":"index.js","scripts":{"test":"./node_modules/.bin/tap test/"},"dependencies":{},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"bitreader@0.0.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"1a9f70418b69723eacbd16af1c3cb70cba78cf17","tarball":"http://registry.npmjs.org/bitreader/-/bitreader-0.0.0.tgz"},"readme":"","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]},"0.0.1":{"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"name":"bitreader","description":"Generic, space efficient parser with sugar for digesting strings, ints, etc.","version":"0.0.1","homepage":"https://github.com/brianloveswords/bitreader","repository":{"type":"git","url":"git://github.com/brianloveswords/bitreader.git"},"main":"index.js","scripts":{"test":"./node_modules/.bin/tap test/*.test.js"},"dependencies":{},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"readme":"# bitreader [![Build Status](https://secure.travis-ci.org/brianloveswords/bitreader.png?branch=master)](http://travis-ci.org/brianloveswords/bitreader)\n\nGeneric, space efficient (uses `Buffer#slice` as much as possilbe)\nparser with sugar for digesting strings, ints, etc. Inherits from\nstream, implements `write` and `end`, and emits `data` events for easy\npiping.\n\n## Install\n\n```bash\n$ npm install bitreader\n```\n\n## Example\nAdapted from [streampng](/brianloveswords/streampng)\n\n```js\nfunction SuggestedPalette() { this.intialize.apply(this, arguments) }\nSuggestedPalette.prototype.initialize = function initialize(data) {\n var colourSize, chunkSize;\n var parser = BitReader(data);\n\n this.type = 'sPLT'\n this.paletteName = parser.eatString();\n this.sampleDepth = parser.eatUInt(1);\n this.palette = [];\n\n colourSize = (this.sampleDepth === 16) ? 2 : 1;\n chunkSize = (colourSize === 2) ? 10 : 6\n\n this.palette = parser.eatRest({ chunkSize: chunkSize }).map(function (entry) {\n var p = BitReader(entry);\n return {\n red: p.eatUInt(colourSize),\n green: p.eatUInt(colourSize),\n blue: p.eatUInt(colourSize),\n alpha: p.eatUInt(colourSize),\n frequency: p.eatUInt(2)\n }\n }.bind(this));\n};\n```\n\n## API\n\nSee [the API page on the wiki](https://github.com/brianloveswords/bitreader/wiki/API)\n\n## Tests\nUses [tap](/isaacs/node-tap) for testing. Tested against node 0.6.19 and node 0.8.2.\n\n```bash\n$ npm test\n```\n\n## License\n\n[http://wtfpl.org/](http://wtfpl.org/)\n","_id":"bitreader@0.0.1","dist":{"shasum":"e96fb1c10a7769acaeff7f39315a178cf3c01a76","tarball":"http://registry.npmjs.org/bitreader/-/bitreader-0.0.1.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]}},"readme":"","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"time":{"modified":"2012-07-16T15:24:43.316Z","created":"2012-07-15T17:08:53.788Z","0.0.0":"2012-07-15T17:08:54.205Z","0.0.1":"2012-07-16T15:24:43.316Z"},"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"repository":{"type":"git","url":"git://github.com/brianloveswords/bitreader.git"},"_id":"bitreader","_rev":"1-ac633d8a1584357886e12f07ae40df0d"}ÿdocument-storeÿbeseda™{"id":"beseda","rev":"1-8dae0ed104dda6007f164e482e26bf10","rev_tree":[{"pos":1,"ids":["8dae0ed104dda6007f164e482e26bf10",{"status":"available"},[]]}],"rev_map":{"1-8dae0ed104dda6007f164e482e26bf10":3218},"winningRev":"1-8dae0ed104dda6007f164e482e26bf10","deleted":false,"seq":3218}ÿby-sequenceÿ0000000000003218¡·{"name":"beseda","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","dist-tags":{"latest":"0.2.5"},"versions":{"0.0.1":{"name":"beseda","version":"0.0.1","description":"Beseda is fast and well designed Pub/Sub server with server-side and crossbrowser client-side API for realtime messaging.","keywords":["pub/sub","socket.io","bayeux"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./index.js","repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_id":"beseda@0.0.1","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c35f3d8ab5b913b2d6f6692034e7258ac67c7d93","tarball":"http://registry.npmjs.org•x°ù/beseda/-/beseda-0.0.1.tgz"},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.2":{"name":"beseda","version":"0.0.2","description":"Beseda is fast and well designed Pub/Sub server with server-side and crossbrowser client-side API for realtime messaging.","keywords":["pub/sub","socket.io","bayeux"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./index.js","repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_id":"beseda@0.0.2","_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.3","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5b63b726219bd8ee4359e328696cedde1d0d7493","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.2.tgz"},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.3":{"name":"beseda","version":"0.0.3","description":"Beseda is fast and well designed Pub/Sub server with server-side and crossbrowser client-side API for realtime messaging.","keywords":["pub/sub","socket.io","bayeux","comet"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_id":"beseda@0.0.3","_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.3","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"2047b78d6ce67b7dd1611270d5aa088a689d9124","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.3.tgz"},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.5":{"name":"beseda","version":"0.0.5","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0","cli":">=0.3.3"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"devDependencies":{},"_id":"beseda@0.0.5","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"37f45c2b3168c875b92213b491d5a24da211658b","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.5.tgz"},"scripts":{},"directories":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.6":{"name":"beseda","version":"0.0.6","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0","cli":">=0.3.3"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"devDependencies":{},"_id":"beseda@0.0.6","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"0aa0bbc4dba3fc4d27a299619e7b7123e103ca2e","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.6.tgz"},"scripts":{},"directories":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.7":{"name":"beseda","version":"0.0.7","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"devDependencies":{},"_id":"beseda@0.0.7","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"a424759276176519d9bcda2cf79ffb57688e781d","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.7.tgz"},"scripts":{},"directories":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.8":{"name":"beseda","version":"0.0.8","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"devDependencies":{},"_id":"beseda@0.0.8","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"e764252da140bff5fcc6d60fb49ebeb8e5a81855","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.8.tgz"},"scripts":{},"directories":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]},"0.0.9":{"name":"beseda","version":"0.0.9","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis-node":">=0.4.0","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmJsonOpts":{"file":"/Users/ivanshumkov/.npm/beseda/0.0.9/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"beseda@0.0.9","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.18","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"71070c38e7e8056311d3666fd038927709bb2a42","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.9.tgz"},"scripts":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.0.10":{"name":"beseda","version":"0.0.10","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.5","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmJsonOpts":{"file":"/Users/ivanshumkov/.npm/beseda/0.0.10/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"beseda@0.0.10","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.18","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"298127c3a560ccbe2584e0b1d87de2d35a8c075a","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.0.10.tgz"},"scripts":{},"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.1.0":{"name":"beseda","version":"0.1.0","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.5","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmJsonOpts":{"file":"/home/max/.npm/beseda/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"beseda@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"8b980ed1aafaaf725a815b0845c9cd87ccd438ce","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.1.0.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"directories":{}},"0.1.1":{"name":"beseda","version":"0.1.1","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"082e948a6e9074d342b8e6bf463b9d76a510a8fb","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.1.1.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.1.2":{"name":"beseda","version":"0.1.2","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.1.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"0c4f1b42f24cb25e254345310396c151928ee77f","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.1.2.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.0":{"name":"beseda","version":"0.2.0","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"6c02e88e27dee23279063c7d760721d8198483d6","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.0.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.1":{"name":"beseda","version":"0.2.1","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*","qs":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"77de5065b35b6d258ae006fc818488048abe94e1","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.1.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.2":{"name":"beseda","version":"0.2.2","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*","qs":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"f886b835c4ec6cbe924c0fc70fe8954d1273bb4a","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.2.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.3":{"name":"beseda","version":"0.2.3","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*","qs":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"21b3e5e29eb0f875fd5f2596034b1fe5af0d494b","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.3.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.4":{"name":"beseda","version":"0.2.4","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*","qs":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"621309b11283adb6cf3a6cdeef68c950b3750f59","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.4.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"directories":{}},"0.2.5":{"name":"beseda","version":"0.2.5","description":"Beseda is fast, well designed and featured Pub/Sub server. Beseda offers multiple platform API to develop realtime web applications.","keywords":["pub/sub","commet","bayeux","realtime","push","WebSocket"],"homepage":"http://geometria-lab.net","author":{"name":"Geometria Lab"},"contributors":[{"name":"Ivan Shumkov","email":"ivan@shumkov.ru"},{"name":"Sergey Kononenko","email":"kononencheg@gmail.com"}],"main":"./server","bin":{"beseda-client":"./bin/client.js","beseda-server":"./bin/server.js","beseda-benchmarks":"./bin/benchmarks.js"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"dependencies":{"redis":">=0.6.6","cli":">=0.3.3","websocket-client":"*","qs":"*"},"engines":["node >=0.4.11"],"licenses":[{"type":"BSD","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"shumkov","email":"ivan@shumkov.ru"},"_id":"beseda@0.2.5","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"da701ca5a49d78616ecf5daacc8a7af85792b707","tarball":"http://registry.npmjs.org/beseda/-/beseda-0.2.5.tgz"},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}]}},"maintainers":[{"name":"shumkov","email":"ivan@shumkov.ru"}],"time":{"modified":"2012-05-10T09:22:07.702Z","created":"2011-04-04T14:40:45.706Z","0.0.1":"2011-12-08T15:24:13.434Z","0.0.2":"2011-12-08T15:24:13.434Z","0.0.3":"2011-12-08T15:24:13.434Z","0.0.5":"2011-12-08T15:24:13.434Z","0.0.6":"2011-12-08T15:24:13.434Z","0.0.7":"2011-12-08T15:24:13.434Z","0.0.8":"2011-12-08T15:24:13.434Z","0.0.9":"2011-12-08T15:24:13.434Z","0.0.10":"2011-12-08T15:24:13.434Z","0.1.0":"2011-12-08T15:24:13.434Z","0.1.1":"2011-11-08T15:35:23.734Z","0.1.2":"2011-11-30T07:36:43.653Z","0.2.0":"2011-12-08T15:24:13.434Z","0.2.1":"2012-03-27T13:25:13.893Z","0.2.2":"2012-03-29T14:46:18.307Z","0.2.3":"2012-04-06T09:55:30.499Z","0.2.4":"2012-04-09T15:01:52.971Z","0.2.5":"2012-05-10T09:22:07.702Z"},"author":{"name":"Geometria Lab"},"repository":{"type":"git","url":"git://github.com/geometria-lab/Beseda.git"},"_id":"beseda","_rev":"1-8dae0ed104dda6007f164e482e26bf10"}!ÿdocument-storeÿbackbone-github¢{"id":"backbone-github","rev":"1-967f84436f59aa4e35908e48d5b20a38","rev_tree":[{"pos":1,"ids":["967f84436f59aa4e35908e48d5b20a38",{"status":"available"},[]]}],"rev_map":{"1-967f84436f59aa4e35908e48d5b20a38":3217},"winningRev":"1-967f84436f59aa4e35908e48d5b20a38","deleted":false,"seq":3217}ÿby-sequenceÿ0000000000003217• {"name":"backbone-github","description":"Backbone models for the GitHub API","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.3":{"name":"backbone-github","version":"0.0.3","description":"Backbone models for the GitHub API","homepage":"https://github.com/trabian/backbone-github","author":{"name":"Matt Dean","email":"matt@trabian.com"},"bugs":{"email":"matt@trabian.com","url":"https://github.com/trabian/backbone-github/issues"},"stitch":{"paths":["src"]},"_npmUser":{"name":"trabianmatt","email":"matt@trabian.com"},"_id":"backbone-github@0.0.3","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"112cd8f2ab296d771d72eaa2a4503255beff70ee","tarball":"http://registry.npmjs.org/backbone-github/-/backbone-github-0.0.3.tgz"},"maintainers":[{"name":"trabianmatt","email":"matt@trabian.com"}]}},"readme":"The purpose of this project is to extract Backbone models that can be\nused to interact with the GitHub API.\n\nIt's currently being used primarily as part of [titanium-backbone-ks](https://github.com/trabian/titanium-backbone-ks) but will hopefully be improved to the point where it can be used in multiple contexts.\n","maintainers":[{"name":"trabianmatt","email":"matt@trabian.com"}],"time":{"modified":"2012-03-21T05:49:03.651Z","created":"2012-03-21T05:49:02.714Z","0.0.3":"2012-03-21T05:49:03.651Z"},"author":{"name":"Matt Dean","email":"matt@trabian.com"},"_id":"backbone-github","_rev":"1-967f84436f59aa4e35908e48d5b20a38"}ÿdocument-storeÿauto-grunt{"id":"auto-grunt","rev":"1-d11dfd5fb5f1e35d9e8291dbd141fa3b","rev_tree":[{"pos":1,"ids":["d11dfd5fb5f1e35d9e8291dbd141fa3b",{"status":"available"},[]]}],"rev_map":{"1-d11dfd5fb5f1e35d9e8291dbd141fa3b":3216},"winningRev":"1-d11dfd5fb5f1e35d9e8291dbd141fa3b","deleted":false,"seq":3216}ÿby-sequenceÿ0000000000003216²Ò{"name":"auto-grunt","description":"A task-based command line auto build tool for static resource.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"auto-grunt","description":"A task-based command line build tool for JavaScript projects.","version":"0.0.1","author":{"name":"\"Cowboy\" Ben Alman","url":"http://benalman.com/"},"homepage":"http://github.com/cowboy/grunt","repository":{"type":"git","url":"git://github.com/cowboy/grunt.git"},"bugs":{"url":"http://github.com/cowboy/grunt/issues"},"licenses":[{"type":"MIT","url":"http://github.com/cowboy/grunt/blob/master/LICENSE-MIT"}],"main":"lib/grunt","bin":{"grunt":"bin/auto-grunt"},"scripts":{"test":"grunt test"},"engines":{"node":">= 0.6.0"},"preferGlobal":true,"keywords":["async","cli","minify","uglify","build","underscore","unit","test","qunit","nodeunit","server","init","scaffold","make","jake","tool"],"dependencies":{"cssom":"~0.2.5","async":"~0.1.18","colors":"~0.6.0","connect":"~2.3.4","dateformat":"1.0.2-1.2.3","iconv-lite":"~0.2.3","glob-whatev":"~0.1.4","hooker":"~0.2.3","jshint":"~0.5.9","nodeunit":"~0.6.4","nopt":"~1.0.10","prompt":"~0.1.12","clean-css":"~0.4.1","semver":"~1.0.13","uglify-js":"~1.0.7","underscore":"~1.2.4","underscore.string":"~2.1.1","temporary":"~0.0.4","gzip-js":"~0.3.1"},"devDependencies":{},"readme":"# grunt\nGrunt is a task-based command line build tool for JavaScript projects.\n\n_Grunt is currently in beta. While I'm already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_\n\n## Getting started
âš‘\nBe sure to read the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example gruntfiles](/cowboy/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.\n\n## Built-in tasks âš‘\nAs of now, grunt has the following predefined tasks that you can use in your project:\n\n* [concat](/cowboy/grunt/blob/master/docs/task_concat.md) - Concatenate files.\n* [init](/cowboy/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.\n* [lint](/cowboy/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].\n* [min](/cowboy/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].\n* [qunit](/cowboy/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.\n* [server](/cowboy/grunt/blob/master/docs/task_server.md) - Start a static web server.\n* test - Run unit tests with [nodeunit][nodeunit].\n* watch - Run predefined tasks whenever watched files change.\n\n_(More documentation forthcoming)_\n\n## Custom tasks âš‘\nIn addition to the built-in tasks, you can create your own tasks. Don't like a built-in task's default behavior? Override it. Check out the [grunt API documentation](/cowboy/grunt/blob/master/docs/api.md) and the [built-in tasks source](/cowboy/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.\n\n## Documentation âš‘\nTake a look at the [documentation table of contents][docs] for all the things.\n\n## Why does grunt exist? âš‘\nDoing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that's maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.\n\nBeing primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.\n\n## Installing grunt âš‘\n\nGrunt is available as an [npm][npm] module. If you install grunt globally via `npm install -g grunt`, it will be available for use in all of your projects. Once grunt has been installed, you can type `grunt --help` at the command line for more information. And if you want to see grunt \"grunt\" itself, cd into grunt's directory and type `grunt`\n\n_Note: in Windows, you may need to run grunt as `grunt.cmd`. See the [FAQ](/cowboy/grunt/blob/master/docs/faq.md) for more Windows-specific information._\n\nFor projects already using grunt, you're done. Otherwise, if you're adding grunt to an existing project or starting from scratch, check out the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.\n\n## Release History âš‘\n_(Until v1.0.0, this will only be updated when major or breaking changes are made)_\n\n* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).\n* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.\n* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global \"grunt\" script.\n* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init template `exports.warnOn` property and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.\n* 2012/03/28 - v0.3.6 - Fixed a `--help` screen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.\n* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.\n* 2012/03/26 - v0.3.3 - Added a \"gruntfile\" init template. Create a basic gruntfile in seconds with `grunt init:gruntfile`. A few other minor fixes.\n* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial \"files exist\" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in the `task.expand*` methods.\n* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.\n* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.\n* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer \"hang\" when done.\n* 2012/01/29 - v0.2.5 - Added a \"qunit\" task as well as an init \"jquery\" template (as of now, there are also \"node\" and \"commonjs\" init templates).\n* 2012/01/22 - v0.2.1 -*ïoù Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /*! will no longer be stripped.\n* 2012/01/22 - v0.2.0 - Added \"init\" task with a sample template, reworked a lot of code. Hopefully it's backwards-compatible.\n* 2012/01/11 - v0.1.0 - Initial release.\n\n## License âš‘\nCopyright (c) 2012 \"Cowboy\" Ben Alman \nLicensed under the MIT license. \n\n\n\n[docs]: /cowboy/grunt/blob/master/docs/toc.md\n[docs-init]: /cowboy/grunt/blob/master/docs/task_init.md\n[issues]: /cowboy/grunt/issues\n\n[node]: http://nodejs.org/\n[npm]: http://npmjs.org/\n[jshint]: http://www.jshint.com/\n[uglify]: https://github.com/mishoo/UglifyJS/\n[nodeunit]: https://github.com/caolan/nodeunit\n[qunit]: http://docs.jquery.com/QUnit\n[phantom]: http://www.phantomjs.org/\n","_id":"auto-grunt@0.0.1","dist":{"shasum":"8a2ddafc04a2db1f48d390edf0c6673906e6237f","tarball":"http://registry.npmjs.org/auto-grunt/-/auto-grunt-0.0.1.tgz"},"_from":"grunt","maintainers":[{"name":"mozhuoying","email":"love149692@163.com"}],"directories":{}},"0.0.2":{"name":"auto-grunt","description":"A task-based command line build tool for JavaScript projects.","version":"0.0.2","author":{"name":"\"Cowboy\" Ben Alman","url":"http://benalman.com/"},"homepage":"http://github.com/cowboy/grunt","repository":{"type":"git","url":"git://github.com/cowboy/grunt.git"},"bugs":{"url":"http://github.com/cowboy/grunt/issues"},"licenses":[{"type":"MIT","url":"http://github.com/cowboy/grunt/blob/master/LICENSE-MIT"}],"main":"lib/grunt","bin":{"auto-grunt":"bin/auto-grunt"},"scripts":{"test":"grunt test"},"engines":{"node":">= 0.6.0"},"preferGlobal":true,"keywords":["async","cli","minify","uglify","build","underscore","unit","test","qunit","nodeunit","server","init","scaffold","make","jake","tool"],"dependencies":{"cssom":"~0.2.5","async":"~0.1.18","colors":"~0.6.0","connect":"~2.3.4","dateformat":"1.0.2-1.2.3","iconv-lite":"~0.2.3","glob-whatev":"~0.1.4","hooker":"~0.2.3","jshint":"~0.5.9","nodeunit":"~0.6.4","nopt":"~1.0.10","prompt":"~0.1.12","clean-css":"~0.4.1","semver":"~1.0.13","uglify-js":"~1.0.7","underscore":"~1.2.4","underscore.string":"~2.1.1","temporary":"~0.0.4","gzip-js":"~0.3.1"},"devDependencies":{},"readme":"# grunt\nGrunt is a task-based command line build tool for JavaScript projects.\n\n_Grunt is currently in beta. While I'm already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_\n\n## Getting started âš‘\nBe sure to read the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example gruntfiles](/cowboy/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.\n\n## Built-in tasks âš‘\nAs of now, grunt has the following predefined tasks that you can use in your project:\n\n* [concat](/cowboy/grunt/blob/master/docs/task_concat.md) - Concatenate files.\n* [init](/cowboy/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.\n* [lint](/cowboy/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].\n* [min](/cowboy/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].\n* [qunit](/cowboy/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.\n* [server](/cowboy/grunt/blob/master/docs/task_server.md) - Start a static web server.\n* test - Run unit tests with [nodeunit][nodeunit].\n* watch - Run predefined tasks whenever watched files change.\n\n_(More documentation forthcoming)_\n\n## Custom tasks âš‘\nIn addition to the built-in tasks, you can create your own tasks. Don't like a built-in task's default behavior? Override it. Check out the [grunt API documentation](/cowboy/grunt/blob/master/docs/api.md) and the [built-in tasks source](/cowboy/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.\n\n## Documentation âš‘\nTake a look at the [documentation table of contents][docs] for all the things.\n\n## Why does grunt exist? âš‘\nDoing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that's maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.\n\nBeing primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.\n\n## Installing grunt âš‘\n\nGrunt is available as an [npm][npm] module. If you install grunt globally via `npm install -g grunt`, it will be available for use in all of your projects. Once grunt has been installed, you can type `grunt --help` at the command line for more information. And if you want to see grunt \"grunt\" itself, cd into grunt's directory and type `grunt`\n\n_Note: in Windows, you may need to run grunt as `grunt.cmd`. See the [FAQ](/cowboy/grunt/blob/master/docs/faq.md) for more Windows-specific information._\n\nFor projects already using grunt, you're done. Otherwise, if you're adding grunt to an existing project or starting from scratch, check out the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.\n\n## Release History âš‘\n_(Until v1.0.0, this will only be updated when major or breaking changes are made)_\n\n* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).\n* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.\n* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global \"grunt\" script.\n* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init template `exports.warnOn` property and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.\n* 2012/03/28 - v0.3.6 - Fixed a `--help` screen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.\n* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.\n* 2012/03/26 - v0.3.3 - Added a \"gruntfile\" init template. Create a basic gruntfile in seconds with `grunt init:gruntfile`. A few other minor fixes.\n* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial \"files exist\" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in the `task.expand*` methods.\n* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.\n* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.\n* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer \"hang\" when done.\n* 2012/01/29 - v0.2.5 - Added a \"qunit\" task as well as an init \"jquery\" template (as of now, there are also \"node\" and \"commonjs\" init templates).\n* 2012/01/22 - v0.2.1 - Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /*! will no longer be stripped.\n* 2012/01/22 - v0.2.0 - Added \"init\" task with a sample template, reworked a lot of code. Hopefully it's backwards-compatible.\n* 2012/01/11 - v0.1.0 - Initial release.\n\n## License âš‘\nCopyright (c) 2012 \"Cowboy\" Ben Alman \nLicensed under the MIT license. \n\n\n\n[docs]: /cowboy/grunt/blob/master/docs/toc.md\n[docs-init]: /cowboy/grunt/blob/master/docs/task_init.md\n[issues]: /cowboy/grunt/issues\n\n[node]: http://nodejs.org/\n[npm]: http://npmjs.org/\n[jshint]: http://www.jshint.com/\n[uglify]: https://github.com/mishoo/UglifyJS/\n[nodeunit]: https://github.com/caolan/nodeunit\n[qunit]: http://docs.jquery.com/QUnit\n[phantom]: http://www.phantomjs.org/\n","_id":"auto-grunt@0.0.2","dist":{"shasum":"3814dee5c5766cf73749058ca9bbf9c742fb11c5","tarball":"http://registry.npmjs.org/auto-grunt/-/auto-grunt-0.0.2.tgz"},"_from":"grunt","maintainers":[{"name":"mozhuoying","email":"love149692@163.com"}],"directories":{}}},"readme":"# grunt\nGrunt is a task-based command line build tool for JavaScript projects.\n\n_Grunt is currently in beta. While I'm already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_\n\n## Getting started âš‘\nBe sure to read the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example gruntfiles](/cowboy/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.\n\n## Built-in tasks âš‘\nAs of now, grunt has the following predefined tasks that you can use in your project:\n\n* [concat](/cowboy/grunt/blob/master/docs/task_concat.md) - Concatenate files.\n* [init](/cowboy/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.\n* [lint](/cowboy/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].\n* [min](/cowboy/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].\n* [qunit](/cowboy/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.\n* [server](/cowboy/grunt/blob/master/docs/task_server.md) - Start a static web server.\n* test - Run unit tests with [nodeunit][nodeunit].\n* watch - Run predefined tasks whenever watched files change.\n\n_(More documentation forthcoming)_\n\n## Custom tasks âš‘\nIn addition to the built-in tasks, you can create your own tasks. Don't like a built-in task's default behavior? Override it. Check out the [grunt API documentation](/cowboy/grunt/blob/master/docs/api.md) and the [built-in tasks source](/cowboy/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.\n\n## Documentation âš‘\nTake a look at the [documentation table of contents][docs] for all the things.\n\n## Why does grunt exist? âš‘\nDoing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that's maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.\n\nBeing primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.\n\n## Installing grunt âš‘\n\nGrunt is available as an [npm][npm] module. If you install grunt globally via `npm install -g grunt`, it will be available for use in all of your projects. Once grunt has been installed, you can type `grunt --help` at the command line for more information. And if you want to see grunt \"grunt\" itself, cd into grunt's directory and type `grunt`\n\n_Note: in Windows, you may need to run grunt as `grunt.cmd`. See the [FAQ](/cowboy/grunt/blob/master/docs/faq.md) for more Windows-specific information._\n\nFor projects already using grunt, you're done. Otherwise, if you're adding grunt to an existing project or starting from scratch, check out the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.\n\n## Release History âš‘\n_(Until v1.0.0, this will only be updated when major or breaking changes are made)_\n\n* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).\n* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.\n* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global \"grunt\" script.\n* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init template `exports.warnOn` property and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.\n* 2012/03/28 - v0.3.6 - Fixed a `--help` screen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.\n* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.\n* 2012/03/26 - v0.3.3 - Added a \"gruntfile\" init template. Create a basic gruntfile in seconds with `grunt init:gruntfile`. A few other minor fixes.\n* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial \"files exist\" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in the `task.expand*` methods.\n* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.\n* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.\n* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer \"hang\" when done.\n* 2012/01/29 - v0.2.5 - Added a \"qunit\" task as well as an init \"jquery\" template (as of now, there are also \"node\" and \"commonjs\" init templates).\n* 2012/01/22 - v0.2.1 - Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /*! will no longer be stripped.\n* 2012/01/22 - v0.2.0 - Added \"init\" task with a sample template, reworked a lot of code. Hopefully it's backwards-compatible.\n* 2012/01/11 - v0.1.0 - Initial release.\n\n## License âš‘\nCopyright (c) 2012 \"Cowboy\" Ben Alman \nLicensed under the MIT license. \n\n\n\n[docs]: /cowboy/grunt/blob/master/docs/toc.md\n[docs-init]: /cowboy/grunt/blob/master/docs/task_init.md\n[issues]: /cowboy/grunt/issues\n\n[node]: http://nodejs.org/\n[npm]: http://npmjs.org/\n[jshint]: http://www.jshint.com/\n[uglify]: https://github.com/mishoo/UglifyJS/\n[nodeunit]: https://github.com/caolan/nodeunit\n[qunit]: http://docs.jquery.com/QUnit\n[phantom]: http://www.phantomjs.org/\n","maintainers":[{"name":"mozhuoying","email":"love149692@163.com"}],"time":{"modified":"2012-08-22T11:12:53.293Z","created":"2012-08-19T10:05:47.565Z","0.0.1":"2012-08-19T10:05:55.611Z","0.0.2":"2012-08-20T08:14:55.951Z","0.0.2pre":"2012-08-21T12:40:50.371Z"},"author":{"name":"\"Cowboy\" Ben Alman and contributors","url":"http://gruntjs.com/"},"repository":{"type":"git","url":"git://github.com/gruntjs/auto-grunt.git"},"_id":"auto-grunt","_rev":"1-d11dfd5fb5f1e35d9e8291dbd141fa3b"} ÿdocument-storeÿatomize-client¡{"id":"atomize-client","rev":"1-0b99267e9abf3db012337a7ad04f3fcc","rev_tree":[{"pos":1,"ids":["0b99267e9abf3db012337a7ad04f3fcc",{"status":"available"},[]]}],"rev_map":{"1-0b99267e9abf3db012337a7ad04f3fcc":3215},"winningRev":"1-0b99267e9abf3db012337a7ad04f3fcc","deleted":false,"seq":3215}ÿby-sequenceÿ0000000000003215ªÌ{"name":"atomize-client","description":"Client library for AtomizeJS: JavaScript DSTM","dist-tags":{"latest":"0.4.16"},"versions":{"0.0.1":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.1","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","description":"Client library for atomize: JavaScript DSTM","dependencies":{"cereal":"*","sockjs":">=0.1.0"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"ddc199c70632a7d354cf83eb50aaf27ff2f17ab5","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.1.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.2":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.2","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":"*","sockjs":">=0.1.0"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"7e564bc22599467722d066abc440dbc027a5f14e","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.2.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.3":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.3","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"d0dcdb67d225b589a304ad70e4f65eadc3dc82c4","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.3.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.4":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.4","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"c5152e8134a57c43daa593a66efaf937bde80060","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.4.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.5":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.5","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d8bc326b959fb1a4ebbdf28e303a65652cddbde0","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.5.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.6":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.6","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"58eecd75f65c9701c04baad603c5c8d9ac86ab6e","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.6.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.7":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.7","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"ab0c876f3cf222b5b16b32c9312b95ef57d92e99","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.7.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.8":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.8","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d71b82980c7734202ed9ddfc636f030d80671741","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.8.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.9":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.9","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"33ebe9b8bff188d6c023be5873d6c98b7535012c","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.9.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.10":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.10","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.10","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"37eab491ad7973211cfed9f151998dc48f56d324","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.10.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.11":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.11","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.11","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d5f14e9b78a1e627a1078a0dffddc487d7d1eb26","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.11.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.12":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.12","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.12","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"84bb67519fe4cd5a874f5ff0e00ece533b74eaf4","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.12.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.13":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.13","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.13","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d969bf503c8949d7be93763056fd691a00d256f5","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.13.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.14":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.14","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.14","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"90ee2e86b21a90430a9ba549fdf99f98bfd3140b","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.14.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.15":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.15","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.15","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"98fdbecd6127d2bbb621a2ec6fa428b8f521b06f","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.15.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.16":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.16","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"À3Џùhomepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.16","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e2117b704266417d5b65778a0346c68584f033f9","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.16.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.17":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.17","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.17","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"d6b1ca52681f8f3c61cfb07c9ae05233d9ee5dd5","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.17.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.0.18":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.0.18","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.0.7","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.0.18","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b1d011730d9ef59499656e123a4bc5a2aeca5508","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.0.18.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.9":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.9","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.1.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.9","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"8f4d9508e3b832dce01fe5d0870101bafa34ea8d","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.9.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.10":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.10","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.1.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.10","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ed92bd4885979a11c795551359ad834217299053","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.10.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.11":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.11","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.1.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.11","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c4786c40b240b786577fc3abe845a814d41c9d3e","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.11.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.12":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.12","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.1.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.12","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"dd5788ac7bbc5972a9fa534ab3abcebdf529da56","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.12.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.13":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.13","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.1.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.13","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"512fee29ee73cab518c9615ba1778d1808598d97","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.13.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.14":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.14","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.2.0","sockjs":">=0.1.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.14","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"1ac69c83801b7aedebdeadab554eda23e38e6c6c","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.14.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.15":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.15","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.2.0","sockjs":">=0.3.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.15","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"675b36831d8f29094e7296dc3bc2a89ddcb81a9d","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.15.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]},"0.4.16":{"name":"atomize-client","author":{"name":"Matthew Sackman"},"version":"0.4.16","repository":{"type":"git","url":"git://github.com/atomizejs/atomize-client.git"},"main":"index","bin":{"atomize-translate":"./lib/transform.js"},"description":"Client library for AtomizeJS: JavaScript DSTM","dependencies":{"cereal":">=0.2.0","sockjs":">=0.3.0"},"devDependencies":{"nodeunit":"*"},"homepage":"http://atomizejs.github.com/","keywords":["software transactional memory","stm","distribution","synchronisation","synchronization","rpc","remote procedure call"],"_npmUser":{"name":"msackman","email":"matthew@rabbitmq.com"},"_id":"atomize-client@0.4.16","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"13b586846987d330e5a484fae7d9938297b6da13","tarball":"http://registry.npmjs.org/atomize-client/-/atomize-client-0.4.16.tgz"},"maintainers":[{"name":"msackman","email":"matthew@rabbitmq.com"}]}},"readme":"# Atomize-client\n\nThis is the client library for the Atomize DSTM JavaScript project.\n\nThis library can be used either client-side or in NodeJS. It is\nrequired when running Atomize-node.\n\nWhen running in Node, an `npm install atomize-client` will work. When\nrunning client side, you'll need to `` to your html file.\r\n\r\n## The details\r\n\r\n Modern javascript libraries like [Backbone](http://backbonejs.org/) and [ember.js](http://emberjs.com/) often require lower-level libraries that are very common, heavyweight, or use shared-state configuration. For example: [underscore](http://underscorejs.org/) or [JQuery](http://jquery.com/). The developers want to provide a single, prebuilt script but won't, can't, or shouldn't include the necessary libraries. `uncommon` is an alternative to the complicated and/or project specific tools used for packaging these scripts without their runtime dependencies. \r\n \r\n With `uncommon` you can write and organize your library or application as simple CommonJS modules and then compile them into a single script. `uncommon `can import dependencies from the global scope and expose them as modules; allowing your code to depend on shared libraries or legacy scripts that may already be loaded on the page. 'uncommon' can also export your module as a global symbol so legacy or inline scripts can use it without any loaders or modification. Projects configured for use with 'uncommon' are compatible with other CommonJS runtimes and package managers (such as npm). \r\n\r\n### Compatibility with node.js\r\n\r\n`uncommon` requires your project to be defined using the [CommonJS module 1.0 specification](http://wiki.commonjs.org/wiki/Modules/1.0). As long as your code does not use any browser-only features or scripts it will be compatible with node.js as is, without any modification or build steps. External dependencies will be loaded in as node modules instead of being bootstraped by the uncommon runtime. \r\n\r\nFor packaging existing node modules for the browser, I recommend using [browserify](https://github.com/substack/node-browserify) instead of `uncommon`. `browserify` has support for node specific features that `uncommon` does not.\r\n\r\n### Compatibility with ender\r\n\r\n[ender](http://ender.no.de/) is a full-featured package management and build tool for CommonJS projects. If you are developing a front-end javascript application I strongly recommend using `ender` instead of `uncommon` for building your project. For libraries and packages that are not meant to stand-alone, `uncommon` can be used within packages or alongside `ender` for building a drop-in ready script that is independent from npm. \r\n\r\n## Usage\r\n\r\n`under construction`","_id":"uncommon@0.0.1-dev","dist":{"shasum":"5194fea018a0b0905988d8fd86cef4253d245692","tarball":"http://registry.npmjs.org/uncommon/-/uncommon-0.0.1-dev.tgz"},"maintainers":[{"name":"mjeffery","email":"michael.jeffery@gmail.com"}]}},"readme":"# uncommon\r\n\r\nDevelop modular javascript for the browser without extra frameworks, package managers, or loaders\r\n\t\r\n[![Build Status](https://secure.travis-ci.org/mjeffery/uncommon.png)](http://travis-ci.org/mjeffery/uncommon)\r\n\r\n## Installation\r\n\r\n\t$ npm install uncommon\r\n\t\r\nDon't have [node.js](http://nodejs.org/) or [npm](https://npmjs.org/) installed? Take a moment to learn about server-side javascript.\r\n\r\n## Example\r\n\r\nFormat your javascript project so it has a main [CommonJS](http://www.commonjs.org/) module:\r\n\r\n```javascript\r\n// use relative paths to load other modules in your project\r\nvar foo = require('./foo');\r\nvar bar = require('../lib/bar');\r\n\r\n// or reference an external dependency by name\r\nvar $ = require('jquery');\r\n\r\n// export the external interface as a module\r\nmodule.exports = {\r\n\tprocess: function(data) {\r\n\t\treturn bar.process(data);\r\n\t}\r\n};\r\nmodule.exports.fnx = foo.fnx;\r\n```\r\n\r\nNow create a `uncommon.config.json` file at the root of your project to describe how it should be packaged:\r\n\r\n```json\r\n{\r\n\t\"name\": \"global_symbol\",\r\n\t\"main\": \"./path/to/main_module.js\",\r\n\t\"output\": \"./path/to/output_script.js\",\r\n\t\"dependencies\": {\r\n\t\t\"module_name\": \"global_symbol\", \r\n\t\t\"underscore\": \"_\",\r\n\t\t\"jquery\": \"$\"\r\n\t}\r\n}\r\n```\r\n\r\nBundle the project into a single script using the `uncommon build` command:\r\n\r\n```\r\n$ uncommon build path/to/project \r\n```\r\n\r\nOr host it on a local server that will rebuild the script as you make changes:\r\n\r\n```\r\n$ uncommon preview path/to/project --port 8888\r\n```\r\n\r\n`uncommon` will recursively find and package all of your project's required modules and create shims for any external dependencies. Your project is wrapped inside of a self-executing function along with a lightweight runtime (about 30 lines) for building and exporting your public interface. Your new package can be included like another script by adding `` to your html file.\r\n\r\n## The details\r\n\r\n Modern javascript libraries like [Backbone](http://backbonejs.org/) and [ember.js](http://emberjs.com/) often require lower-level libraries that are very common, heavyweight, or use shared-state configuration. For example: [underscore](http://underscorejs.org/) or [JQuery](http://jquery.com/). The developers want to provide a single, prebuilt script but won't, can't, or shouldn't include the necessary libraries. `uncommon` is an alternative to the complicated and/or project specific tools used for packaging these scripts without their runtime dependencies. \r\n \r\n With `uncommon` you can write and organize your library or application as simple CommonJS modules and then compile them into a single script. `uncommon `can import dependencies from the global scope and expose them as modules; allowing your code to depend on shared libraries or legacy scripts that may already be loaded on the page. 'uncommon' can also export your module as a global symbol so legacy or inline scripts can use it without any loaders or modification. Projects configured for use with 'uncommon' are compatible with other CommonJS runtimes and package managers (such as npm). \r\n\r\n### Compatibility with node.js\r\n\r\n`uncommon` requires your project to be defined using the [CommonJS module 1.0 specification](http://wiki.commonjs.org/wiki/Modules/1.0). As long as your code does not use any browser-only features or scripts it will be compatible with node.js as is, without any modification or build steps. External dependencies will be loaded in as node modules instead of being bootstraped by the uncommon runtime. \r\n\r\nFor packaging existing node modules for the browser, I recommend using [browserify](https://github.com/substack/node-browserify) instead of `uncommon`. `browserify` has support for node specific features that `uncommon` does not.\r\n\r\n### Compatibility with ender\r\n\r\n[ender](http://ender.no.de/) is a full-featured package management and build tool for CommonJS projects. If you are developing a front-end javascript application I strongly recommend using `ender` instead of `uncommon` for building your project. For libraries and packages that are not meant to stand-alone, `uncommon` can be used within packages or alongside `ender` for building a drop-in ready script that is independent from npm. \r\n\r\n## Usage\r\n\r\n`under construction`","maintainers":[{"name":"mjeffery","email":"michael.jeffery@gmail.com"}],"time":{"modified":"2012-08-22T20:36:59.085Z","created":"2012-08-22T20:36:57.520Z","0.0.1-dev":"2012-08-22T20:36:59.085Z"},"author":{"name":"Michael Jeffery","email":"michael.jeffery@gmail.com"},"repository":{"type":"git","url":"https://github.com/mjeffery/uncommon.git"},"_id":"uncommon","_rev":"1-5f5d4b7b74dfb10f56b52546ee03661e"}ÿdocument-storeÿukijs˜{"id":"ukijs","rev":"1-ad98a21ec628e573f2ef4da624ea3797","rev_tree":[{"pos":1,"ids":["ad98a21ec628e573f2ef4da624ea3797",{"status":"available"},[]]}],"rev_map":{"1-ad98a21ec628e573f2ef4da624ea3797":3589},"winningRev":"1-ad98a21ec628e573f2ef4da624ea3797","deleted":false,"seq":3589}ÿby-sequenceÿ0000000000003589:{"name":"ukijs","description":"Simple client side app framework","dist-tags":{"latest":"0.4.7"},"versions":{"0.4.0":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.0","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"lib":"./src","spec":"./spec","example":"./examples","bin":"./tools/bin"},"main":"./src/uki","engines":{"node":">=0.2.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.0","_engineSupported":true,"_npmVersion":"0.2.18","_nodeVersion":"v0.4.0","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c321f1bd7fb4c46a97a5fbde247b1128501f49d6","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.0.tgz"}},"0.4.1":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.1","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"lib":"./src","spec":"./spec","example":"./examples","bin":"./tools/bin"},"main":"./src/uki","engines":{"node":">=0.2.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.1","_engineSupported":true,"_npmVersion":"0.2.18","_nodeVersion":"v0.4.0","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5bc9ac22c69fd0a380691332ddfc0092f46c0b40","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.1.tgz"}},"0.4.2":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.2","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki.git"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"lib":"./src","spec":"./spec","example":"./examples","bin":"./tools/bin"},"main":"./src/uki.js","engines":{"node":">=0.2.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.2","_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.5.0-pre","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c454e4f7425126e491b71498c32deff86d916f5d","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.2.tgz"}},"0.4.3":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.3","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki.git"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"lib":"./src","spec":"./spec","example":"./examples","bin":"./tools/bin"},"main":"./src/uki.js","engines":{"node":">=0.2.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3","mime":">=1.2.1"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.3","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23b73c946cea1025d277b5ee1523e315f7f93b3b","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.3.tgz"}},"0.4.5":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.5","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uk{Bùi.git"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"bin":"./tools/bin"},"main":"./src/uki.js","engines":{"node":">=0.4.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3","mime":">=1.2.1"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.5","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"54b8fe2d5cc597461d77b4499e347c10217c4351","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.5.tgz"}},"0.4.6":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.6","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki.git"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"bin":"./tools/bin"},"main":"./src/uki.js","engines":{"node":">=0.4.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3","mime":">=1.2.1"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_id":"ukijs@0.4.6","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","bin":{"uki":"tools/bin/uki"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5f336efaf2b9307c9b5d7ccc8ab513387eb051e0","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.6.tgz"}},"0.4.7":{"name":"ukijs","description":"Simple client side app framework","keywords":["uki","ukijs","widgets","mvc","view"],"version":"0.4.7","homepage":"http://ukijs.org/","author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki.git"},"bugs":{"url":"https://github.com/voloko/uki/issues"},"directories":{"bin":"./tools/bin"},"main":"./src/uki.js","engines":{"node":">=0.4.0"},"dependencies":{"uglify-js":">=0.0.1","cssom":">=0.0.1","cli":">=0.2.6","express":">=1.0.0","jade":">=0.6.3","mime":">=1.2.1"},"licenses":[{"type":"MIT","url":"http://ukijs.org/LICENSE"}],"_npmUser":{"name":"voloko","email":"voloko@gmail.com"},"_id":"ukijs@0.4.7","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"bin":{"uki":"tools/bin/uki"},"dist":{"shasum":"850cced31e68aeb0b1b60d00e684021f64f531e4","tarball":"http://registry.npmjs.org/ukijs/-/ukijs-0.4.7.tgz"},"readme":"","maintainers":[{"name":"voloko","email":"voloko@gmail.com"}]}},"maintainers":[{"name":"voloko","email":"voloko@gmail.com"}],"time":{"modified":"2012-06-05T19:17:20.257Z","created":"2011-02-22T20:00:00.828Z","0.4.0":"2011-02-22T20:00:01.091Z","0.4.1":"2011-02-24T02:02:43.360Z","0.4.2":"2011-02-24T02:13:22.494Z","0.4.3":"2011-03-16T00:37:00.664Z","0.4.5":"2011-03-16T02:29:38.337Z","0.4.6":"2011-04-17T20:43:22.805Z","0.4.7":"2012-06-05T19:17:20.257Z"},"author":{"name":"Vladimir Kolesnikov","email":"voloko@gmail.com"},"repository":{"type":"git","url":"git://github.com/voloko/uki.git"},"_id":"ukijs","_rev":"1-ad98a21ec628e573f2ef4da624ea3797"}ÿdocument-storeÿubelt˜{"id":"ubelt","rev":"1-cfb2129e116fb5f83fc9896f9dcb68fb","rev_tree":[{"pos":1,"ids":["cfb2129e116fb5f83fc9896f9dcb68fb",{"status":"available"},[]]}],"rev_map":{"1-cfb2129e116fb5f83fc9896f9dcb68fb":3588},"winningRev":"1-cfb2129e116fb5f83fc9896f9dcb68fb","deleted":false,"seq":3588}ÿby-sequenceÿ0000000000003588¡a{"name":"ubelt","description":"utility belt was (Dominic's Utilities)","dist-tags":{"latest":"3.2.2"},"versions":{"2.3.3":{"name":"ubelt","version":"2.3.3","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.3.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.3.3","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"e7aa69457fbaf696c96610f9767d4df57b80292d","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.3.3.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.4.0":{"name":"ubelt","version":"2.4.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.4.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.4.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"d19a4c6abe959fa632785ac5c6bb9bf93b77568b","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.4.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.5.0":{"name":"ubelt","version":"2.5.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.5.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.5.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"33ae2506fb59beab089a1d774828770b53b839f9","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.5.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.6.0":{"name":"ubelt","version":"2.6.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.6.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.6.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"90f1ea5598072de840ed8d27463a1eef66f739ca","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.6.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.7.0":{"name":"ubelt","version":"2.7.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.7.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.7.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"9ab5782840c79d8d3e6a536bb83801d6c019841a","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.7.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.8.0":{"name":"ubelt","version":"2.8.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmJsonOpts":{"file":"/home/dominic/.npm/ubelt/2.8.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ubelt@2.8.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"f52150dd8dff5ddede804a48caf302e1b6d317e6","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.8.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.9.0":{"name":"ubelt","version":"2.9.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@2.9.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"1950de99b8e7bdbd53cebda0024a468ccde6b4f6","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.9.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.10.0":{"name":"ubelt","version":"2.10.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@2.10.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"46eb5084968e4f7b3275265b2aad6f6521b8fdfd","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.10.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.11.1":{"name":"ubelt","version":"2.11.1","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@2.11.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"bb135836827ef8de453ae31b671d12108cdf6976","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.11.1.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"2.12.0":{"name":"ubelt","version":"2.12.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@2.12.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b063983ee508afa7e7fe19e328db28dbc78d2656","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-2.12.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"3.0.0":{"name":"ubelt","version":"3.0.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@3.0.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"c784014c52f973f7d61009ca650d772454a19258","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-3.0.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"3.1.0":{"name":"ubelt","version":"3.1.0","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/d-utils","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/d-utils.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@3.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"22099f55d44c0f4fa3d7cf0697d373ccbfcb43d2","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-3.1.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"3.2.1":{"name":"ubelt","version":"3.2.1","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/ubelt","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/ubelt.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@3.2.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8a5b0f7f6a7b83c18619ed15a7bdca38fac69d32","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-3.2.1.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"3.2.2":{"name":"ubelt","version":"3.2.2","description":"utility belt was (Dominic's Utilities)","homepage":"http://github.com/dominictarr/ubelt","main":"./index.js","repository":{"type":"git","url":"git://github.com/dominictarr/ubelt.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"ubelt@3.2.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"468b3eb2973aada6f17b97dfe732f59d96e23b03","tarball":"http://registry.npmjs.org/ubelt/-/ubelt-3.2.2.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-05-17T14:53:03.394Z","created":"2011-09-25T13:11:57.420Z","2.3.3":"2011-09-25T13:12:01.667Z","2.4.0":"2011-09-26T08:12:32.708Z","2.5.0":"2011-09-26T09:09:26.242Z","2.6.0":"2011-09-26T09:39:54.713Z","2.7.0":"2011-09-29T05:26:22.539Z","2.8.0":"2011-09-29T11:55:37.465Z","2.9.0":"2011-10-29T10:13:48.327Z","2.10.0":"2011-11-12T02:59:59.254Z","2.11.1":"2011-11-18T11:49:30.668Z","2.12.0":"2011-11-30T03:54:57.255Z","3.0.0":"2011-11-30T23:47:51.773Z","3.1.0":"2011-12-22T00:39:07.579Z","3.2.1":"2012-03-09T00:40:41.804Z","3.2.2":"2012-05-17T14:53:03.394Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://bit.ly/dominictarr"},"repository":{"type":"git","url":"git://github.com/dominictarr/ubelt.git"},"_id":"ubelt","_rev":"1-cfb2129e116fb5f83fc9896f9dcb68fb"}ÿdocument-storeÿtypejs™{"id":"typejs","rev":"1-39ce24b4b14090d24d694422b121eb89","rev_tree":[{"pos":1,"ids":["39ce24b4b14090d24d694422b121eb89",{"status":"available"},[]]}],"rev_map":{"1-39ce24b4b14090d24d694422b121eb89":3587},"winningRev":"1-39ce24b4b14090d24d694422b121eb89","deleted":false,"seq":3587}ÿby-sequenceÿ0000000000003587¥{"name":"typejs","description":"Type creation system (prototypal inheritance)","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"typejs","version":"0.1.0","description":"Type creation system (prototypal inheritance)","keywords":["type","typejs","class","prototypal"],"licenses":[{"type":"MIT","url":"http://pietervanderwerff.mit-license.org/"}],"repositories":[{"type":"git","url":"https://github.com/pieter-vanderwerff/type"}],"bugs":{},"maintainers":[{"name":"pieter-vanderwerff","email":"me@pieter.io"}],"devDependencies":{"buster":"~0.4"},"main":"./type","directories":{"test":"test"},"scripts":{"test":"buster test -e node"},"_npmUser":{"name":"pieter-vanderwerff","email":"me@pieter.io"},"_id":"typejs@0.1.0","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"bc6490c3baafde45f5791ef170f78e1609372928","tarball":"http://registry.npmjs.org/typejs/-/typejs-0.1.0.tgz"}}},"readme":"#Type (typejs)\n\n[![Build Status](https://secure.travis-ci.org/pieter-vanderwerff/type.png)](http://travis-ci.org/pieter-vanderwerff/type)\n\nA Type creation system using a lightweight prototypal inheritance implementation based on [backbone.js](http://backbonejs.org/).\n\n----\n\nQuick Start\n===========\n\n### JAM\n\n1. `jam install typejs`\n1. `var type = require('typejs');`\n\n### AMD\n\n1. `git clone https://github.com/pieter-vanderwerff/type` or `git submodule add https://github.com/pieter-vanderwerff/type`\n1. Configure your loader with a package:\n\n\t```javascript\n\tpackages: [\n\t\t{ name: 'typejs', location: 'path/to/type/', main: 'type' },\n\t\t// ... other packages ...\n\t]\n\t```\n\n1. `define(['typejs', ...], function(type, ...) { ... });` or `require(['typejs', ...], function(type, ...) { ... });`\n\n### Script Tag\n\n1. `git clone https://github.com/pieter-vanderwerff/type` or `git submodule add https://github.com/pieter-vanderwerff/type`\n1. ``\n1. `type` will be available as `window.typejs`\n\n### Node\n\n1. `npm install typejs`\n1. `var type = require('typejs');`\n\n\nAPI\n===\n\ntype()\n------\n\nCreate a type object:\n\n```javascript\nvar Foo = type( { foo: 'bar' } );\n\n// Returns a newable object\nvar foo1 = new Foo();\nvar foo2 = new Foo();\n```\n\n**constructor / initialize function**\n\nAs with backbone.js if the object has a function called **initialize** it will be run on the creation of an instance, receiving any arguments passed to the type.\n\n```javascript\nvar Foo = type( {\n\tinitialize: function( options ) {\n\n\t\tthis._bar = options.bar;\n\n\t}\n} );\n\n// Create instances passing options to the initialize function\nvar foo1 = new Foo( { bar: 10 } );\nvar foo2 = new Foo( { bar: 17 } );\n```\n\ntype().extend()\n------------\n\nExtend a type object:\n\n```javascript\nvar Foo = type( { foo: 10 } );\n\n// Extend Foo\nvar Foostream = Foo.extend( { foo: 10000000, bar: 17 } );\n\n// Create instances of both types\nvar foo1 = new Foo();\nvar foo2 = new Foostream();\n```\n\nRunning the Unit Tests\n======================\n\nInstall [buster.js](http://busterjs.org/)\n\n`npm install -g buster`\n\nRun unit tests in Node:\n\n1. `buster test -e node`\n\nRun unit tests in Browsers (and Node):\n\n1. `buster server` - this will print a url\n2. Point browsers at /capture, e.g. `localhost:1111/capture`\n3. `buster test` or `buster test -e browser`\n","maintainers":[{"name":"pieter-vanderwerff","email":"me@pieter.io"}],"time":{"modified":"2012-06-18T23:37:01.160Z","created":"2012-06-18T23:36:58.283Z","0.1.0":"2012-06-18T23:37:01.160Z"},"_id":"typejs","_rev":"1-39ce24b4b14090d24d694422b121eb89"}ÿdocument-storeÿtype—{"id":"type","rev":"1-6ad7b6d06fea9a75cfd5c5f5609c9a01","rev_tree":[{"pos":1,"ids":["6ad7b6d06fea9a75cfd5c5f5609c9a01",{"status":"available"},[]]}],"rev_map":{"1-6ad7b6d06fea9a75cfd5c5f5609c9a01":3586},"winningRev":"1-6ad7b6d06fea9a75cfd5c5f5609c9a01","deleted":false,"seq":3586}ÿby-sequenceÿ0000000000003586Î{"name":"type","description":"Type utils","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"type","id":"type","version":"0.0.1","description":"Type utils","keywords":["types","utils","checks"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"homepage":"https://github.com/Gozala/type","repository":{"type":"git","url":"git://github.com/Gozala/type.git","web":"https://github.com/Gozala/type"},"bugs":{"url":"http://github.com/Gozala/type/issues/"},"devDependencies":{"test":">=0.0.10"},"directories":{"lib":"."},"engines":{"node":"0.4.x"},"scripts":{"test":"node tests/test-type.js"},"licenses":[{"type":"MIT","url":"http://jeditoolkit.com/LICENSE"}],"_id":"type@0.0.1","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"b0204ee776b790769f307af8fbf513308a41433c","tarball":"http://registry.npmjs.org/type/-/type-0.0.1.tgz"}},"0.0.2":{"name":"type","id":"type","version":"0.0.2","description":"Type utils","keywords":["types","utils","checks"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"homepage":"https://github.com/Gozala/type","repository":{"type":"git","url":"git://github.com/Gozala/type.git","web":"https://github.com/Gozala/type"},"bugs":{"url":"http://github.com/Gozala/type/issues/"},"devDependencies":{"test":">=0.4.0"},"directories":{"lib":"."},"scripts":{"test":"node tests/test-type.js"},"licenses":[{"type":"MIT","url":"http://jeditoolkit.com/LICENSE"}],"_npmUser":{"name":"gozala","email":"rfobic@gmail.com"},"_id":"type@0.0.2","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.5.9","_defaultsLoaded":true,"dist":{"shasum":"4726bad976d955b6fc4862238451d82a0648705e","tarball":"http://registry.npmjs.org/type/-/type-0.0.2.tgz"},"maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}]},"0.0.3":{"name":"type","id":"type","version":"0.0.3","description":"Type utils","keywords":["types","utils","checks"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"homepage":"https://github.com/Gozala/type","repository":{"type":"git","url":"git://github.com/Gozala/type.git","web":"https://github.com/Gozala/type"},"bugs":{"url":"http://github.com/Gozala/type/issues/"},"devDependencies":{"test":">=0.4.0"},"directories":{"lib":"."},"scripts":{"test":"node tests/test-type.js"},"licenses":[{"type":"MIT","url":"http://jeditoolkit.com/LICENSE"}],"_npmUser":{"name":"gozala","email":"rfobic@gmail.com"},"_id":"type@0.0.3","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"0eacb2438a9935614d9f351bd91250890ce4d533","tarball":"http://registry.npmjs.org/type/-/type-0.0.3.tgz"},"readme":"# type #\n\nType utils\n\n## Install ##\n\n npm install type\n\n## Require ##\n\n var checks = require('https!raw.github.com/Gozala/type/v0.0.1/checks.js')\n","maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}]}},"maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}],"time":{"modified":"2012-06-18T19:41:26.049Z","created":"2011-06-09T23:12:24.505Z","0.0.1":"2011-06-09T23:12:25.475Z","0.0.2":"2012-02-25T18:41:58.376Z","0.0.3":"2012-06-18T19:41:26.049Z"},"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"repository":{"type":"git","url":"git://github.com/Gozala/type.git","web":"https://github.com/Gozala/type"},"_id":"type","_rev":"1-6ad7b6d06fea9a75cfd5c5f5609c9a01"}$ÿdocument-storeÿtraffic_cop_client¥{"id":"traffic_cop_client","rev":"1-fe26042857522191c31a8bf6fc00eb1c","rev_tree":[{"pos":1,"ids":["fe26042857522191c31a8bf6fc00eb1c",{"status":"available"},[]]}],"rev_map":{"1-fe26042857522191c31a8bf6fc00eb1c":3585},"winningRev":"1-fe26042857522191c31a8bf6fc00eb1c","deleted":false,"seq":3585}ÿby-sequenceÿ0000000000003585õ{"name":"traffic_cop_client","description":"This is the Javascript Client for TrafficCop","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com","url":"https://github.com/santosh79"},"name":"traffic_cop_client","description":"This is the Javascript Client for TrafficCop","version":"0.1.0","repository":{"type":"git","url":"git@github.com:santosh79/traffic_cop_client.git"},"engines":{"node":"~0.6.8"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"homepage":"https://github.com/santosh79/traffic_cop_client","main":"./lib/traffic_cop.js","_npmUser":{"name":"santosh","email":"santosh79@gmail.com"},"_id":"traffic_cop_client@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"71eacb792fe73afdcff9b7e8f413e3abd6f3d9c2","tarball":"http://registry.npmjs.org/traffic_cop_client/-/traffic_cop_client-0.1.0.tgz"},"readme":"","maintainers":[{"name":"santosh","email":"santosh79@gmail.com"}]},"0.1.1":{"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com","url":"https://github.com/santosh79"},"name":"traffic_cop_client","description":"This is the Javascript Client for TrafficCop","version":"0.1.1","repository":{"type":"git","url":"git@github.com:santosh79/traffic_cop_client.git"},"engines":{"node":"~0.6.8"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"homepage":"https://github.com/santosh79/traffic_cop_client","main":"./lib/traffic_cop.js","_npmUser":{"name":"santosh","email":"santosh79@gmail.com"},"_id":"traffic_cop_client@0.1.1","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"6a351a9260b18cf3be12eaa6e3d966ca53096f91","tarball":"http://registry.npmjs.org/traffic_cop_client/-/traffic_cop_client-0.1.1.tgz"},"readme":"","maintainers":[{"name":"santosh","email":"santosh79@gmail.com"}]}},"readme":"","maintainers":[{"name":"santosh","email":"santosh79@gmail.com"}],"time":{"modified":"2012-03-22T03:42:21.709Z","created":"2012-03-14T03:26:59.529Z","0.1.0":"2012-03-14T03:27:01.035Z","0.1.1":"2012-03-22T03:42:21.709Z"},"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com","url":"https://github.com/santosh79"},"repository":{"type":"git","url":"git@github.com:santosh79/traffic_cop_client.git"},"_id":"traffic_cop_client","_rev":"1-fe26042857522191c31a8bf6fc00eb1c"}ÿdocument-storeÿtext_parserž{"id":"text_parser","rev":"1-5c9b19448e6e64d5b72f46f79ca8c346","rev_tree":[{"pos":1,"ids":["5c9b19448e6e64d5b72f46f79ca8c346",{"status":"available"},[]]}],"rev_map":{"1-5c9b19448e6e64d5b72f46f79ca8c346":3584},"winningRev":"1-5c9b19448e6e64d5b72f46f79ca8c346","deleted":false,"seq":3584}ÿby-sequenceÿ0000000000003584¨{"name":"text_parser","description":"Simple text parser","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"text_parser","description":"Simple text parser","version":"0.0.1","author":{"name":"Frederico de Paula"},"repository":{"type":"git","url":"git://github.com/fpaula/text_parser_js.git"},"engines":{"node":">=0.6.15"},"main":"text_parser","_npmUser":{"name":"fpaula","email":"fpaula@gmail.com"},"_id":"text_parser@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5066b426e2def8df88e6c8666fea4e231a726b10","tarball":"http://registry.npmjs.org/text_parser/-/text_parser-0.0.1.tgz"},"readme":"","maintainers":[{"name":"fpaula","email":"fpaula@gmail.com"}]},"0.0.2":{"name":"text_parser","description":"Simple text parser","version":"0.0.2","author":{"name":"Frederico de Paula"},"repository":{"type":"git","url":"git://github.com/fpaula/text_parser_js.git"},"scripts":{"test":"node test/text_parser_test.js"},"main":"text_parser","_npmUser":{"name":"fpaula","email":"fpaula@gmail.com"},"_id":"text_parser@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0eda690dda7ad37662361284ba53dd55c6726884","tarball":"http://registry.npmjs.org/text_parser/-/text_parser-0.0.2.tgz"},"readme":"","maintainers":[{"name":"fpaula","email":"fpaula@gmail.com"}]}},"readme":"","maintainers":[{"name":"fpaula","email":"fpaula@gmail.com"}],"time":{"modified":"2012-05-11T16:20:25.532Z","created":"2012-05-08T22:42:29.509Z","0.0.1":"2012-05-08T22:42:31.245Z","0.0.2":"2012-05-11T16:20:25.532Z"},"author":{"name":"Frederico de Paula"},"repository":{"type":"git","url":"git://github.com/fpaula/text_parser_js.git"},"_id":"text_parser","_rev":"1-5c9b19448e6e64d5b72f46f79ca8c346"}ÿdocument-storeÿtesttesttestŸ{"id":"testtesttest","rev":"1-b3ee04e97453e8e4c1dd1e7856fbacf7","rev_tree":[{"pos":1,"ids":["b3ee04e97453e8e4c1dd1e7856fbacf7",{"status":"available"},[]]}],"rev_map":{"1-b3ee04e97453e8e4c1dd1e7856fbacf7":3583},"winningRev":"1-b3ee04e97453e8e4c1dd1e7856fbacf7","deleted":false,"seq":3583}ÿby-sequenceÿ0000000000003583‘{"name":"testtesttest","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"testtesttest","version":"0.0.1","main":"index.js","license":"BSD","_id":"testtesttest@0.0.1","dist":{"shasum":"d6dfbfaf01608d3dcfc52b3e49c4436c33f75696","tarball":"http://registry.npmjs.org/testtesttest/-/testtesttest-0.0.1.tgz"},"readme":"","maintainers":[{"name":"testtesttest","email":"test@example.com"}]}},"readme":"","maintainers":[{"name":"testtesttest","email":"test@example.com"}],"time":{"modified":"2012-06-30T11:19:31.236Z","created":"2012-06-30T11:19:29.662Z","0.0.1":"2012-06-30T11:19:31.236Z"},"_id":"testtesttest","_rev":"1-b3ee04e97453e8e4c1dd1e7856fbacf7"}ÿdocument-storeÿtaskserver{"id":"taskserver","rev":"1-4f7e6fdf9c068f5969b6f90904cdc08e","rev_tree":[{"pos":1,"ids":["4f7e6fdf9c068f5969b6f90904cdc08e",{"status":"available"},[]]}],"rev_map":{"1-4f7e6fdf9c068f5969b6f90904cdc08e":3582},"winningRev":"1-4f7e6fdf9c068f5969b6f90904cdc08e","deleted":false,"seq":3582}ÿby-sequenceÿ0000000000003582ã {"name":"taskserver","description":"running tasks and get cached results","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"taskserver","description":"running tasks and get cached results","keywords":["task","stats","solr"],"version":"0.0.1","homepage":"https://github.com/leonchen/taskserver","bugs":{"name":"https://github.com/leonchen/taskserver/issues"},"author":{"name":"Leon Chen"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.0"},"main":"taskserver","directories":{},"bin":{},"repository":{"type":"git","url":"git://github.com/leonchen/taskserver.git"},"scripts":{"start":"node app"},"dependencies":{"express":"3.0.0beta6","jade":"*","sqlite":"1.0.4"},"_npmUser":{"name":"leonchen","email":"leonhart.chen@gmail.com"},"_id":"taskserver@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"a10614f38195acaa0653c8add4ab2188ece4921d","tarball":"http://registry.npmjs.org/taskserver/-/taskserver-0.0.1.tgz"},"maintainers":[{"name":"leonchen","email":"leonhart.chen@gmail.com"}]}},"readme":"taskserver\n==========","maintainers":[{"name":"leonchen","email":"leonhart.chen@gmail.com"}],"time":{"modified":"2012-07-16T10:37:48.660Z","created":"2012-07-16T10:37:39.821Z","0.0.1":"2012-07-16T10:37:48.660Z"},"author":{"name":"Leon Chen"},"repository":{"type":"git","url":"git://github.com/leonchen/taskserver.git"},"_id":"taskserver","_rev":"1-4f7e6fdf9c068f5969b6f90904cdc08e"}ÿdocument-storeÿsunrpc_server {"id":"sunrpc_server","rev":"1-e61e3299eff88f4f4fbe1794974d7252","rev_tree":[{"pos":1,"ids":["e61e3299eff88f4f4fbe1794974d7252",{"status":"available"},[]]}],"rev_map":{"1-e61e3299eff88f4f4fbe1794974d7252":3581},"winningRev":"1-e61e3299eff88f4f4fbe1794974d7252","deleted":false,"seq":3581}ÿby-sequenceÿ0000000000003581ô {"name":"sunrpc_server","description":"SunRPC Base implement and PortMapper Procduce Server","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"sunrpc_server","description":"SunRPC Base implement and PortMapper Procduce Server","keywords":["sunrpc","portmapper"],"homepage":"http://blog.win-ing.cn","version":"0.1.0","author":{"name"Ñ$7Ûù:"Katana","email":"ad@win-ing.cn","url":"http://blog.win-ing.cn"},"main":"./sunrpc.js","_npmUser":{"name":"katana","email":"ad@win-ing.cn"},"_id":"sunrpc_server@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5663d8a3c611237600edea00a79ad9b494570891","tarball":"http://registry.npmjs.org/sunrpc_server/-/sunrpc_server-0.1.0.tgz"},"readme":"","maintainers":[{"name":"katana","email":"ad@win-ing.cn"}]}},"readme":"","maintainers":[{"name":"katana","email":"ad@win-ing.cn"}],"time":{"modified":"2012-08-02T13:44:39.492Z","created":"2012-07-23T07:15:08.327Z","0.1.0":"2012-07-23T07:15:12.744Z"},"author":{"name":"Katana","email":"ad@win-ing.cn","url":"http://blog.win-ing.cn"},"users":{"fgribreau":true},"_id":"sunrpc_server","_rev":"1-e61e3299eff88f4f4fbe1794974d7252"}ÿdocument-storeÿstruct.jsœ{"id":"struct.js","rev":"1-1fb11c254c961ee6b85dcd3852b8d266","rev_tree":[{"pos":1,"ids":["1fb11c254c961ee6b85dcd3852b8d266",{"status":"available"},[]]}],"rev_map":{"1-1fb11c254c961ee6b85dcd3852b8d266":3580},"winningRev":"1-1fb11c254c961ee6b85dcd3852b8d266","deleted":false,"seq":3580}ÿby-sequenceÿ0000000000003580Š {"name":"struct.js","description":"Structs for JS","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"struct.js","version":"0.0.0","description":"Structs for JS","main":"lib","scripts":{"test":"echo \"Error: no test specified\" && exit 1","preinstall":"cat src/struct.js > lib/index.js; echo \"module.exports=Struct\" >> lib/index.js"},"repository":{"type":"git","url":"git@github.com:jussi-kalliokoski/struct.js.git"},"keywords":["struct","binary"],"author":{"name":"Jussi Kalliokoski"},"license":"BSD","_id":"struct.js@0.0.0","dist":{"shasum":"3736b13722b4022548f60f0dfffb89593fc4cacb","tarball":"http://registry.npmjs.org/struct.js/-/struct.js-0.0.0.tgz"},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}]}},"readme":"","maintainers":[{"name":"jussi-kalliokoski","email":"jussi.kalliokoski@gmail.com"}],"time":{"modified":"2012-07-16T08:45:40.735Z","created":"2012-07-16T08:45:38.698Z","0.0.0":"2012-07-16T08:45:40.735Z"},"author":{"name":"Jussi Kalliokoski"},"repository":{"type":"git","url":"git@github.com:jussi-kalliokoski/struct.js.git"},"_id":"struct.js","_rev":"1-1fb11c254c961ee6b85dcd3852b8d266"}ÿdocument-storeÿstreamtapœ{"id":"streamtap","rev":"1-4e897a424ef94806536ecc7695dd3fa3","rev_tree":[{"pos":1,"ids":["4e897a424ef94806536ecc7695dd3fa3",{"status":"available"},[]]}],"rev_map":{"1-4e897a424ef94806536ecc7695dd3fa3":3579},"winningRev":"1-4e897a424ef94806536ecc7695dd3fa3","deleted":false,"seq":3579}ÿby-sequenceÿ0000000000003579¯ {"name":"streamtap","description":"silently tap into a stream","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"name":"streamtap","description":"silently tap into a stream","version":"0.1.0","homepage":"https://github.com/dannycoates/streamtap","repository":{"url":"http://github.com/dannycoates/streamtap.git"},"main":"main.js","scripts":{"test":"node test.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">=0.6.0"},"_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"_id":"streamtap@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.19-pre","_defaultsLoaded":true,"dist":{"shasum":"5c6de19e7e52185756c8ee49125554b531bac92d","tarball":"http://registry.npmjs.org/streamtap/-/streamtap-0.1.0.tgz"},"readme":"","maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}]}},"readme":"","maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"time":{"modified":"2012-06-05T04:31:58.636Z","created":"2012-06-05T04:31:57.192Z","0.1.0":"2012-06-05T04:31:58.636Z"},"author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"repository":{"url":"http://github.com/dannycoates/streamtap.git"},"_id":"streamtap","_rev":"1-4e897a424ef94806536ecc7695dd3fa3"}!ÿdocument-storeÿstreamprocessor¢{"id":"streamprocessor","rev":"1-5af5210856783c43a80e9361abaa4b1a","rev_tree":[{"pos":1,"ids":["5af5210856783c43a80e9361abaa4b1a",{"status":"available"},[]]}],"rev_map":{"1-5af5210856783c43a80e9361abaa4b1a":3578},"winningRev":"1-5af5210856783c43a80e9361abaa4b1a","deleted":false,"seq":3578}ÿby-sequenceÿ0000000000003578å{"name":"streamprocessor","description":"An inline Stream that can process data coming through before piping to another Stream","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.5":{"name":"streamprocessor","preferGlobal":"true","version":"0.0.5","author":{"name":"Morgan 'ARR!' Allen"},"description":"An inline Stream that can process data coming through before piping to another Stream","contributors":[{"name":"Morgan 'ARR!' Allen","email":"morganrallen@gmail.com"}],"repository":{"type":"git","url":"git://github.com/morganrallen/StreamProcessor.git"},"keywords":["streams","buffer"],"devDpendencies":{"colors":"*"},"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"morganrallen","email":"morganrallen@gmail.com"},"_id":"streamprocessor@0.0.5","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"a5dc29d31c74a232511836ff8a0fafe58697ff89","tarball":"http://registry.npmjs.org/streamprocessor/-/streamprocessor-0.0.5.tgz"},"maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}]}},"readme":"StreamProcessor\n===============\n\nAn inline Stream that can process data coming through before piping to another Stream\n\nexample\n=======\n\n``` js\n// silly example that reverses the titles of pages\nvar http = require('http'),\n\tStreamProcessor = require(\"..\");\n\nvar titleReverse = new StreamProcessor(function(chunk) {\n\tif(typeof chunk !== \"string\") chunk = chunk.toString(\"utf8\");\n\tif(chunk.indexOf(\" -1) {\n\t\tvar m = chunk.match(/(.*)<\\/title>/i);\n\t};\n\n\tif(m) {\n\t\tvar title = m[1].split(\"\").reverse().join(\"\");\n\t\tchunk = chunk.replace(m[0], \"<title>\" + title + \"\");\n\t}\n\n\treturn chunk;\n});\n\nhttp.createServer(function(request, response) {\n delete request.headers['accept-encoding'];\n var proxy = http.createClient(80, request.headers['host'])\n var proxy_request = proxy.request(request.method, request.url, request.headers);\n proxy_request.on('response', function (proxy_response) {\n // inline the processor\n proxy_response.pipe(titleReverse).pipe(response);\n response.writeHead(proxy_response.statusCode, proxy_response.headers);\n });\n\n request.pipe(proxy_request);\n}).listen(8080);\n```\n","maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}],"time":{"modified":"2012-08-02T13:44:34.509Z","created":"2012-07-24T04:14:14.959Z","0.0.5":"2012-07-24T04:14:19.342Z"},"author":{"name":"Morgan 'ARR!' Allen"},"repository":{"type":"git","url":"git://github.com/morganrallen/StreamProcessor.git"},"users":{"fgribreau":true},"_id":"streamprocessor","_rev":"1-5af5210856783c43a80e9361abaa4b1a"}ÿdocument-storeÿstreak™{"id":"streak","rev":"1-1df9ed880fb3bc216ec5ceee51b891d5","rev_tree":[{"pos":1,"ids":["1df9ed880fb3bc216ec5ceee51b891d5",{"status":"available"},[]]}],"rev_map":{"1-1df9ed880fb3bc216ec5ceee51b891d5":3577},"winningRev":"1-1df9ed880fb3bc216ec5ceee51b891d5","deleted":false,"seq":3577}ÿby-sequenceÿ0000000000003577ô{"name":"streak","description":"streak is a library for calculating win/loss streaks. It uses Redis as its backend for collecting the data.","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"author":{"name":"David Czarnecki","email":"me@davidczarnecki.com"},"name":"streak","description":"streak is a library for calculating win/loss streaks. It uses Redis as its backend for collecting the data.","version":"0.0.1","homepage":"http://github.com/czarneckid/coffeescript-streak","repository":{"type":"git","url":"git://github.com/czarneckid/coffeescript-streak.git"},"main":"./lib/index","scripts":{"test":"make test"},"engines":{"node":"~0.6.6"},"dependencies":{"redis":"~0.7.0","coffee-script":">= 1.2.0"},"devDependencies":{"mocha":"0.12.1","should":"0.5.1","redis-protocol":"0.1.9"},"_npmUser":{"name":"czarneckid","email":"me@davidczarnecki.com"},"_id":"streak@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"9a0b3d44755f25f445da2d7790ce23476d12e1e6","tarball":"http://registry.npmjs.org/streak/-/streak-0.0.1.tgz"},"readme":"","maintainers":[{"name":"czarneckid","email":"me@davidczarnecki.com"}]},"0.1.0":{"author":{"name":"David Czarnecki","email":"me@davidczarnecki.com"},"name":"streak","description":"streak is a library for calculating win/loss streaks. It uses Redis as its backend for collecting the data.","version":"0.1.0","homepage":"http://github.com/czarneckid/coffeescript-streak","repository":{"type":"git","url":"git://github.com/czarneckid/coffeescript-streak.git"},"main":"./lib/index","scripts":{"test":"make test"},"engines":{"node":"~0.6.6"},"dependencies":{"redis":"~0.7.0","coffee-script":">= 1.2.0"},"devDependencies":{"mocha":"0.12.1","should":"0.5.1","redis-protocol":"0.1.9"},"_npmUser":{"name":"czarneckid","email":"me@davidczarnecki.com"},"_id":"streak@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"8712ee08f876b32b8be1bbb05c182fdb7fa2b279","tarball":"http://registry.npmjs.org/streak/-/streak-0.1.0.tgz"},"readme":"","maintainers":[{"name":"czarneckid","email":"me@davidczarnecki.com"}]}},"readme":"","maintainers":[{"name":"czarneckid","email":"me@davidczarnecki.com"}],"time":{"modified":"2012-05-18T00:17:47.132Z","created":"2012-05-05T20:13:15.769Z","0.0.1":"2012-05-05T20:13:16.281Z","0.1.0":"2012-05-18T00:17:47.132Z"},"author":{"name":"David Czarnecki","email":"me@davidczarnecki.com"},"repository":{"type":"git","url":"git://github.com/czarneckid/coffeescript-streak.git"},"_id":"streak","_rev":"1-1df9ed880fb3bc216ec5ceee51b891d5"}ÿdocument-storeÿsprite™{"id":"sprite","rev":"1-337ffd1687bf172c93c45bd6a59ba712","rev_tree":[{"pos":1,"ids":["337ffd1687bf172c93c45bd6a59ba712",{"status":"available"},[]]}],"rev_map":{"1-337ffd1687bf172c93c45bd6a59ba712":3576},"winningRev":"1-337ffd1687bf172c93c45bd6a59ba712","deleted":false,"seq":3576}ÿby-sequenceÿ0000000000003576®{"name":"sprite","description":"CSS sprite sheet generator","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"sprite","version":"0.0.1","description":"CSS sprite sheet generator","keywords":["sprite","css","image","canvas"],"author":{"name":"TJ Holowaychuk","email":"tj@learnboost.com"},"bin":{"sprite":"./bin/sprite"},"dependencies":{"canvas":"*","commander":"0.5.x"},"main":"index","engines":{"node":">= 0.4.x < 0.7.x"},"_npmUser":{"name":"tjholowaychuk","email":"tj@vision-media.ca"},"_id":"sprite@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2b0638aca5944c994128d591c7e12997fcb8bc05","tarball":"http://registry.npmjs.org/sprite/-/sprite-0.0.1.tgz"},"maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}]}},"readme":"\n# sprite\n\n CSS sprite sheet generator\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2012-08-07T14:45:06.987Z","created":"2012-02-01T22:08:11.144Z","0.0.1":"2012-02-01T22:08:12.482Z"},"author":{"name":"TJ Holowaychuk","email":"tj@learnboost.com"},"users":{},"_id":"sprite","_rev":"1-337ffd1687bf172c93c45bd6a59ba712"}ÿdocument-storeÿspoke˜{"id":"spoke","rev":"1-efc97ec7102779a29d709406bf3f8910","rev_tree":[{"pos":1,"ids":["efc97ec7102779a29d709406bf3f8910",{"status":"available"},[]]}],"rev_map":{"1-efc97ec7102779a29d709406bf3f8910":3575},"winningRev":"1-efc97ec7102779a29d709406bf3f8910","deleted":false,"seq":3575}ÿby-sequenceÿ0000000000003575÷{"name":"spoke","description":"I radiate therefore I am.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"spoke","description":"I radiate therefore I am.","version":"0.0.1","licenses":[{"type":"MIT","url":"https://github.com/roylines/spoke/raw/master/LICENSE"}],"author":{"name":"Roy Lines","url":"https://roylines.co.uk"},"repository":{"type":"git","url":"git://github.com/roylines/spoke.git"},"dependencies":{},"devDependencies":{"sinon":"1.3.x","vows":"0.6.x"},"main":"./lib/spoke","scripts":{"test":"vows test/*_test.js --spec"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"roylines","email":"roy@roylines.co.uk"},"_id":"spoke@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"59970a49eb22758479f67e15f96783d5eede5c93","tarball":"http://registry.npmjs.org/spoke/-/spoke-0.0.1.tgz"},"maintainers":[{"name":"roylines","email":"roy@roylines.co.uk"}]},"0.0.2":{"name":"spoke","description":"I radiate therefore I am.","version":"0.0.2","licenses":[{"type":"MIT","url":"https://github.com/roylines/spoke/raw/master/LICENSE"}],"author":{"name":"Roy Lines","url":"https://roylines.co.uk"},"repository":{"type":"git","url":"http://github.com/roylines/spoke.git"},"dependencies":{"express":"2.5.x","mongodb":"0.9.x"},"devDependencies":{"sinon":"1.3.x","vows":"0.6.x"},"main":"./lib/spoke","scripts":{"test":"vows test/*_test.js --spec"},"engines":{"engines":{"node":">= 0.6.0"}},"readme":"# spoke\nI radiate therefore I am.\n\n[![Build Status](https://secure.travis-ci.org/roylines/spoke.png)](http://travis-ci.org/roylines/spoke)\n\n## authentication of all calls\nadd token to header.\n\n## creating a pipe\npost: \nhttp://host:port/pipe/name\n\n## starting a stage in a pipe\npost:\nhttp://host:port/pipe/name/stage/name/start\n\n## ending current stage in a pipe\npost:\nhttp://host:port/pipe/name/stage/name/ok\n\n## failing a stage in a pipe\npost:\nhttp://host:port/pipe/name/stage/name/fail\n","_id":"spoke@0.0.2","dist":{"shasum":"392e9a4e3ae9426215876cec962326925891290a","tarball":"http://registry.npmjs.org/spoke/-/spoke-0.0.2.tgz"},"maintainers":[{"name":"roylines","email":"roy@roylines.co.uk"}]}},"readme":"# spoke\nI radiate therefore I am.\n","maintainers":[{"name":"roylines","email":"roy@roylines.co.uk"}],"time":{"modified":"2012-06-30T10:16:56.080Z","created":"2012-04-08T10:37:50.502Z","0.0.1":"2012-04-08T10:37:52.035Z","0.0.2":"2012-06-30T10:16:56.080Z"},"author":{"name":"Roy Lines","url":"https://roylines.co.uk"},"repository":{"type":"git","url":"http://github.com/roylines/spoke.git"},"_id":"spoke","_rev":"1-efc97ec7102779a29d709406bf3f8910"}%ÿdocument-storeÿsourcemint-node-www¦{"id":"sourcemint-node-www","rev":"1-850cbecc251aee4252935de6248de46e","rev_tree":[{"pos":1,"ids":["850cbecc251aee4252935de6248de46e",{"status":"available"},[]]}],"rev_map":{"1-850cbecc251aee4252935de6248de46e":3574},"winningRev":"1-850cbecc251aee4252935de6248de46e","deleted":false,"seq":3574}ÿby-sequenceÿ0000000000003574û{"name":"sourcemint-node-www","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"sourcemint-node-www","version":"0.1.1","pm":"npm","dependencies":{"express":"3.0.0rc3","sourcemint-node":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node-www@0.1.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"98165725241db4b47f08b52c483242d0c9bc17b7","tarball":"http://registry.npmjs.org/sourcemint-node-www/-/sourcemint-node-www-0.1.1.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.2":{"name":"sourcemint-node-www","version":"0.1.2","pm":"npm","dependencies":{"express":"3.0.0rc3","sourcemint-node":"0.1.x"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node-www@0.1.2","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"64063a867ae372f880a28f96a56e7a5e40f89331","tarball":"http://registry.npmjs.org/sourcemint-node-www/-/sourcemint-node-www-0.1.2.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]}},"readme":"Sourcemint Node Web Interface\n=============================\n\n*Status: ALPHA*\n\nA web interface for the [sourcemint-node](https://github.com/sourcemint/node).\n\n * Copyright: 2012 [Christoph Dorn](http://www.christophdorn.com/)\n * Code License: [MIT License](http://www.opensource.org/licenses/mit-license.php)\n * Docs License: [Creative Commons Attribution-NonCommercial-ShareAlike 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/)\n * Sponsor: [Sourcemint](http://sourcemint.com/)\n * Mailing list: [groups.google.com/group/sourcemint](http://groups.google.com/group/sourcemint)\n","maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}],"time":{"modified":"2012-08-22T23:40:26.190Z","created":"2012-08-22T22:57:59.418Z","0.1.1":"2012-08-22T22:58:00.580Z","0.1.2":"2012-08-22T23:40:26.190Z"},"_id":"sourcemint-node-www","_rev":"1-850cbecc251aee4252935de6248de46e"}!ÿdocument-storeÿsourcemint-node¢{"id":"sourcemint-node","rev":"1-82f7af3029e0472c5f0f0cd842b32a68","rev_tree":[{"pos":1,"ids":["82f7af3029e0472c5f0f0cd842b32a68",{"status":"available"},[]]}],"rev_map":{"1-82f7af3029e0472c5f0f0cd842b32a68":3573},"winningRev":"1-82f7af3029e0472c5f0f0cd842b32a68","deleted":false,"seq":3573}ÿby-sequenceÿ0000000000003573û {"name":"sourcemint-node","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.1":{"name":"sourcemint-node","version":"0.1.1","pm":"npm","dependencies":{"express":"3.0.0rc3","request":"2.10.0"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node@0.1.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"21c73f113b491d9ef2afcd927e602a2fb1ec1641","tarball":"http://registry.npmjs.org/sourcemint-node/-/sourcemint-node-0.1.1.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.2":{"name":"sourcemint-node","version":"0.1.2","pm":"npm","dependencies":{"express":"3.0.0rc3","request":"2.10.0"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node@0.1.2","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"deb7ed490b8392391b7ff7b7597a4400230be5f0","tarball":"http://registry.npmjs.org/sourcemint-node/-/sourcemint-node-0.1.2.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.3":{"name":"sourcemint-node","version":"0.1.3","pm":"npm","dependencies":{"express":"3.0.0rc3","request":"2.10.0"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node@0.1.3","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"605d638ce8cb0feb0fd871da0ebe725ddc53b422","tarball":"http://registry.npmjs.org/sourcemint-node/-/sourcemint-node-0.1.3.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.4":{"name":"sourcemint-node","version":"0.1.4","pm":"npm","dependencies":{"express":"3.0.0rc3","request":"2.10.0"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node@0.1.4","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"07638e3495ff015ef17a92f025e4fe3c3a7f0937","tarball":"http://registry.npmjs.org/sourcemint-node/-/sourcemint-node-0.1.4.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]},"0.1.5":{"name":"sourcemint-node","version":"0.1.5","pm":"npm","dependencies":{"express":"3.0.0rc3","request":"2.10.0"},"_npmUser":{"name":"cadorn","email":"christoph@christophdorn.com"},"_id":"sourcemint-node@0.1.5","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"c9f7a5c71e1f325cf9913bf93376c9d60bb5b15c","tarball":"http://registry.npmjs.org/sourcemint-node/-/sourcemint-node-0.1.5.tgz"},"maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}]}},"readme":"Sourcemint Node\n===============\n\n*Status: ALPHA*\n\nThe sourcemint networkable node daemon to be installed on all systems.\n\n * Copyright: 2012 [Christoph Dorn](http://www.christophdorn.com/)\n * Code License: [MIT License](http://www.opensource.org/licenses/mit-license.php)\n * Docs License: [Creative Commons Attribution-NonCommercial-ShareAlike 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/)\n * Sponsor: [Sourcemint](http://sourcemint.com/)\n * Mailing list: [groups.google.com/group/sourcemint](http://groups.google.com/group/sourcemint)\n","maintainers":[{"name":"cadorn","email":"christoph@christophdorn.com"}],"time":{"modified":"2012-08-23T01:31:31.084Z","created":"2012-08-22T22:57:18.526Z","0.1.1":"2012-08-22T22:57:19.755Z","0.1.2":"2012-08-22T23:42:26.802Z","0.1.3":"2012-08-22T23:53:51.510Z","0.1.4":"2012-08-23T01:12:25.902Z","0.1.5":"2012-08-23T01:31:31.084Z"},"_id":"sourcemint-node","_rev":"1-82f7af3029e0472c5f0f0cd842b32a68"}"ÿdocument-storeÿsockjs-client-ws£{"id":"sockjs-client-ws","rev":"1-1ab00491d054a5dae9c0ae14789ad785","rev_tree":[{"pos":1,"ids":["1ab00491d054a5dae9c0ae14789ad785",{"status":"available"},[]]}],"rev_map":{"1-1ab00491d054a5dae9c0ae14789ad785":3572},"winningRev":"1-1ab00491d054a5dae9c0ae14789ad785","deleted":false,"seq":3572}ÿby-sequenceÿ0000000000003572û{"name":"sockjs-client-ws","description":"Client library for SockJS (Websocket)","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"sockjs-client-ws","author":{"name":"Surat Teerapittayanon"},"version":"0.1.0","keywords":["websockets","websocket","sockjs"],"repository":{"type":"git","url":"git://github.com/steerapi/sockjs-client-node.git"},"main":"index","description":"Client library for SockJS (Websocket)","dependencies":{"node-uuid":"1.3.3","ws":"*"},"readme":"# SockJS Client Node\n\nNode client for [SockJS](https://github.com/sockjs). Currently, only\nthe WebSocket transport is supported.\n\n## Usage\n\n var sjsc = require('sockjs-client-ws');\n var client = sjsc.create(\"http://localhost/sjsServer\");\n client.on('connection', function () { // connection is established });\n client.on('data', function (msg) { // received some data });\n client.on('error', function (e) { // something went wrong });\n client.write(\"Have some text you mighty SockJS server!\");\n","_id":"sockjs-client-ws@0.1.0","dist":{"shasum":"53815692923836b4f85fb412c71b42aab03c014a","tarball":"http://registry.npmjs.org/sockjs-client-ws/-/sockjs-client-ws-0.1.0.tgz"},"maintainers":[{"name":"steerapi","email":"steerapi@gmail.com"}]}},"readme":"# SockJS Client Node\n\nNode client for [SockJS](https://github.com/sockjs). Currently, only\nthe WebSocket transport is supported.\n\n## Usage\n\n var sjsc = require('sockjs-client-ws');\n var client = sjsc.create(\"http://localhost/sjsServer\");\n client.on('connection', function () { // connection is established });\n client.on('data', function (msg) { // received some data });\n client.on('error', function (e) { // something went wrong });\n client.write(\"Have some text you mighty SockJS server!\");\n","maintainers":[{"name":"steerapi","email":"steerapi@gmail.com"}],"time":{"modified":"2012-08-18T05:36:27.790Z","created":"2012-08-18T05:36:27.338Z","0.1.0":"2012-08-18T05:36:27.790Z"},"author":{"name":"Surat Teerapittayanon"},"repository":{"type":"git","url":"git://github.com/steerapi/sockjs-client-node.git"},"_id":"sockjs-client-ws","_rev":"1-1ab00491d054a5dae9c0ae14789ad785"}ÿdocument-storeÿsincerelyœ{"id":"sincerely","rev":"1-462bf066d75492bcf268b5f1e66222cd","rev_tree":[{"pos":1,"ids":["462bf066d75492bcf268b5f1e66222cd",{"status":"available"},[]]}],"rev_map":{"1-462bf066d75492bcf268b5f1e66222cd":3571},"winningRev":"1-462bf066d75492bcf268b5f1e66222cd","deleted":false,"seq":3571}ÿby-sequenceÿ0000000000003571ü {"name":"sincerely","description":"Node.js library for accessing Sincerely's Web API at ","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"sincerely","description":"Node.js library for accessing Sincerely's Web API at ","version":"0.0.1","author":{"name":"Nick Baugh","email":"niftylettuce@gmail.com"},"contributors":[{"name":"Nick Baugh","email":"niftylettuce@gmail.com"}],"keywords":["sincerely","node-sincerely","web","postcard","postagram","api"],"homepage":"https://github.com/niftylettuce/node-sincerely","repository":{"type":"git","url":"git://github.com/niftylettuce/node-sincerely.git"},"engines":{"node":">= 0.6.0"},"main":"lib/main.js","dependencies":{},"devDependencies":{"vows":">= 0.6.3"},"scripts":{"test":"vows test/*"},"_npmUser":{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"},"_id":"sincerely@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f279ab01a28a6b8c3667a9021bcc62740dd80db7","tarball":"http://registry.npmjs.org/sincerely/-/sincerely-0.0.1.tgz"},"readme":"","maintainers":[{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"}]}},"readme":"","maintainers":[{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"}],"time":{"modified":"2012-08-07T19:23:31.150Z","created":"2012-08-07T19:23:30.267Z","0.0.1":"2012-08-07T19:23:31.150Z"},"author":{"name":"Nick Baugh","email":"niftylettuce@gmail.com"},"repository":{"type":"git","url":"git://github.com/niftylettuce/node-sincerely.git"},"_id":"sincerely","_rev":"1-462bf066d75492bcf268b5f1e66222cd"}ÿdocument-storeÿsimple-authž{"id":"simple-auth","rev":"1-93b22e8eb2cd60679423e8425c7a1013","rev_tree":[{"pos":1,"ids":["93b22e8eb2cd60679423e8425c7a1013",{"status":"available"},[]]}],"rev_map":{"1-93b22e8eb2cd60679423e8425c7a1013":3570},"winningRev":"1-93b22e8eb2cd60679423e8425c7a1013","deleted":false,"seq":3570}ÿby-sequenceÿ0000000000003570¹{"name":"simple-auth","description":"HTTP basic authentication","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"simple-auth","author":{"name":"sentientwaffle","url":"http://sentientwaffle.github.com/"},"description":"HTTP basic authentication","tags":["auth","authentication","http"],"version":"0.0.1","main":"index.js","scripts":{"test":"tap test/"},"devDependencies":{"tap":"~0.2.5","request":"~2.9.202"},"engines":{"node":">=0.6.0"},"readme":"# Simple-auth\n\n[![Build Status](https://secure.travis-ci.org/sentientwaffle/simple-auth.png?branch=master)](http://travis-ci.org/sentientwaffle/simple-auth)\n\nFramework-agnostic HTTP Basic authentication for Node.js (no need for\nexpress/connect/insert-web-framework).\n\n# Example\n\n var http = require('http')\n , basic_auth = require('simple-auth')('username123', 'password456')\n\n http.createServer(function (req, res) {\n basic_auth(req, res, function() {\n res.writeHead(200, {'Content-Type': 'text/plain'})\n res.end('Your username & password were correct\\n')\n })\n }).listen(31337, '127.0.0.1')\n\n console.log('Server running at http://127.0.0.1:31337/')\n\n# Installation\n\n $ npm install simple-auth\n\n# API\n## `basic_auth(username, password[, fail_delay])`\n\nReturns a function that receives `(req, res, next)`, where `next` will only\nbe called if the user authenticates.\n\n`fail_delay` is the number of milliseconds that the user will be prevented from\nretrying after a failed authentication (defaults to 5000).\n\n# License\n\nMIT\n","_id":"simple-auth@0.0.1","dist":{"shasum":"e17d7eed42fbfbb64bd17e744d47a2654c905f50","tarball":"http://registry.npmjs.org/simple-auth/-/simple-auth-0.0.1.tgz"},"maintainers":[{"name":"sentientwaffle","email":"sentientwaffle@gmail.com"}]}},"readme":"# Simple-auth\n\n[![Build Status](https://secure.travis-ci.org/sentientwaffle/simple-auth.png?branch=master)](http://travis-ci.org/sentientwaffle/simple-auth)\n\nFramework-agnostic HTTP Basic authentication for Node.js (no need for\nexpress/connect/insert-web-framework).\n\n# Example\n\n var http = require('http')\n , basic_auth = require('simple-auth')('username123', 'password456')\n\n http.createServer(function (req, res) {\n basic_auth(req, res, function() {\n res.writeHead(200, {'Content-Type': 'text/plain'})\n res.end('Your username & password were correct\\n')\n })\n }).listen(31337, '127.0.0.1')\n\n console.log('Server running at http://127.0.0.1:31337/')\n\n# Installation\n\n $ npm install simple-auth\n\n# API\n## `basic_auth(username, password[, fail_delay])`\n\nReturns a function that receives `(req, res, next)`, where `next` will only\nbe called if the user authenticates.\n\n`fail_delay` is the number of milliseconds that the user will be prevented from\nretrying after a failed authentication (defaults to 5000).\n\n# License\n\nMIT\n","maintainers":[{"name":"sentientwaffle","email":"sentientwaffle@gmail.com"}],"time":{"modified":"2012-06-29T22:47:43.814Z","created":"2012-06-29T22:47:42.676Z","0.0.1":"2012-06-29T22:47:43.814Z"},"author":{"name":"sentientwaffle","url":"http://sentientwaffle.github.com/"},"_id":"simple-auth","_rev":"1-93b22e8eb2cd60679423e8425c7a1013"}ÿdocument-storeÿsilly˜{"id":"silly","rev":"1-2f7d77990986726770c3e768c15f8cf4","rev_tree":[{"pos":1,"ids":["2f7d77990986726770c3e768c15f8cf4",{"status":"available"},[]]}],"rev_map":{"1-2f7d77990986726770c3e768c15f8cf4":3569},"winningRev":"1-2f7d77990986726770c3e768c15f8cf4","deleted":false,"seq":3569}ÿby-sequenceÿ0000000000003569¹{"name":"silly","description":"A silly DOM library built for the heck of it.","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"author":{"name":"David Ed Mellum","email":"david@edmellum.com","url":"edmellum.com"},"name":"silly","description":"A silly DOM library built for the heck of it.","version":"0.2.0","repository":{"type":"git","url":"git://github.com/edmellum/silly.js.git"},"main":"./silly.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"licenses":[{"type":"MIT +no-false-attribs","url":"http://github.com/isaacs/npm/raw/master/LICENSE"}],"_npmUser":{"name":"edmellum","email":"david@edmellum.com"},"_id":"silly@0.2.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3a70c556eae89ca58ef205ccce764e328470c81f","tarball":"http://registry.npmjs.org/silly/-/silly-0.2.0.tgz"},"maintainers":[{"name":"edmellum","email":"david@edmellum.com"}]}},"readme":"# Silly.js\r\n\r\nA DOM library built forʬÌËù the heck of it. Other implementations were purposefully not studied while building it so it shouldn't be considered usable by any means.\r\n\r\nI've tried to implement APIs I liked from using different DOM libraries, consequently all of it pretty much looks like jQuery. Sadly most of what I've previously read of jQuery's source has left my mind so all of the implementation is dirty, fun and doesn't support anything but the specific Chrome version I used while coding.\r\n\r\n# TODO\r\n- Some silly tests\r\n- A silly selector engine\r\n- Animations(silly)","maintainers":[{"name":"edmellum","email":"david@edmellum.com"}],"time":{"modified":"2012-05-11T16:20:39.858Z","created":"2012-05-11T16:20:37.091Z","0.2.0":"2012-05-11T16:20:39.858Z"},"author":{"name":"David Ed Mellum","email":"david@edmellum.com","url":"edmellum.com"},"repository":{"type":"git","url":"git://github.com/edmellum/silly.js.git"},"_id":"silly","_rev":"1-2f7d77990986726770c3e768c15f8cf4"}ÿdocument-storeÿshorty-client {"id":"shorty-client","rev":"1-06283114b9292ea8843e3e8cd64d5a88","rev_tree":[{"pos":1,"ids":["06283114b9292ea8843e3e8cd64d5a88",{"status":"available"},[]]}],"rev_map":{"1-06283114b9292ea8843e3e8cd64d5a88":3568},"winningRev":"1-06283114b9292ea8843e3e8cd64d5a88","deleted":false,"seq":3568}ÿby-sequenceÿ0000000000003568Ü {"name":"shorty-client","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"shorty-client","version":"0.0.1","main":"./shorty-client.js","dependencies":{"superagent":"~0.6.0","debug":"*"},"_npmUser":{"name":"rauchg","email":"rauchg@gmail.com"},"_id":"shorty-client@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"4c2c8696fc92da5ac5cd02a0e151098f3a1867cf","tarball":"http://registry.npmjs.org/shorty-client/-/shorty-client-0.0.1.tgz"},"maintainers":[{"name":"rauchg","email":"rauchg@gmail.com"}]}},"readme":"\n# shorty-client\n\nA simple wrapper around [superagent](https://github.com/visionmedia/superagent)\nto shorten URLs.\n\n## Usage\n\n```js\nvar shorten = require('shorty-client')('http://shr.url');\n// callback with arity = 2\nshorten('http://google.com', function(err, url){\n // if an error occurs, url = 'http://google.com'\n});\n```\n","maintainers":[{"name":"rauchg","email":"rauchg@gmail.com"}],"time":{"modified":"2012-07-22T22:40:10.993Z","created":"2012-07-22T22:40:05.512Z","0.0.1":"2012-07-22T22:40:10.993Z"},"_id":"shorty-client","_rev":"1-06283114b9292ea8843e3e8cd64d5a88"}ÿdocument-storeÿsheriffš{"id":"sheriff","rev":"1-d4ce7b2b59407c917604ff2fa2580810","rev_tree":[{"pos":1,"ids":["d4ce7b2b59407c917604ff2fa2580810",{"status":"available"},[]]}],"rev_map":{"1-d4ce7b2b59407c917604ff2fa2580810":3567},"winningRev":"1-d4ce7b2b59407c917604ff2fa2580810","deleted":false,"seq":3567}ÿby-sequenceÿ0000000000003567Ï {"name":"sheriff","description":"A validator based loosely on JSON Schema, with the ability to throw custom functions into the schema.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"author":{"name":"Paul d'Aoust","email":"paul@heliosstudio.ca","url":"http://heliosstudio.ca"},"name":"sheriff","description":"A validator based loosely on JSON Schema, with the ability to throw custom functions into the schema.","version":"0.0.2","main":"index.js","scripts":{"test":"jasmine-node tests/"},"dependencies":{"wrangler":">= 0.0.2"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"pdaoust","email":"paul@heliosstudio.ca"},"_id":"sheriff@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"170aaedd112d77a3d0ff8cfb25d739b4d71da938","tarball":"http://registry.npmjs.org/sheriff/-/sheriff-0.0.2.tgz"},"maintainers":[{"name":"pdaoust","email":"paul@heliosstudio.ca"}]}},"readme":"Sheriff\n================\n\nA validator based loosely on JSON Schema, with the ability to throw custom functions into both the schema and the object. Reasonably decent test coverage. Most of the documentation can be found in the script; more comprehensive documentation to come soon!\n","maintainers":[{"name":"pdaoust","email":"paul@heliosstudio.ca"}],"time":{"modified":"2012-06-19T05:29:17.219Z","created":"2012-06-19T05:29:15.778Z","0.0.2":"2012-06-19T05:29:17.219Z"},"author":{"name":"Paul d'Aoust","email":"paul@heliosstudio.ca","url":"http://heliosstudio.ca"},"_id":"sheriff","_rev":"1-d4ce7b2b59407c917604ff2fa2580810"}ÿdocument-storeÿshadow™{"id":"shadow","rev":"1-221073db7676a0731781ec4212030987","rev_tree":[{"pos":1,"ids":["221073db7676a0731781ec4212030987",{"status":"available"},[]]}],"rev_map":{"1-221073db7676a0731781ec4212030987":3566},"winningRev":"1-221073db7676a0731781ec4212030987","deleted":false,"seq":3566}ÿby-sequenceÿ0000000000003566­ {"name":"shadow","description":"Node Front-end automation test framework","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"JacksonTian"},"name":"shadow","description":"Node Front-end automation test framework","version":"0.0.1","repository":{"type":"git","url":"git://github.com/TBEDP/ghost.git"},"main":"index.js","scripts":{"test":"mocha"},"dependencies":{"webdriverjs":"0.6.9","mocha":"*","should":"0.6.3"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jacksontian","email":"shyvo1987@gmail.com"},"_id":"shadow@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"abf68993a80c8298f83e9054845675e28641deda","tarball":"http://registry.npmjs.org/shadow/-/shadow-0.0.1.tgz"},"maintainers":[{"name":"jacksontian","email":"shyvo1987@gmail.com"}]}},"readme":"Ghost\n========\n\nNode Front-end automation test framework written in Node.js\n\nTodo\n========\n1. 熟悉webdriverjs.\n2. 利用工具类跑通交互行为.\n3. 集æˆmocha/should.\n4. ç»„ç»‡æˆæ¡†æž¶.\n5. 写cases.","maintainers":[{"name":"jacksontian","email":"shyvo1987@gmail.com"}],"time":{"modified":"2012-06-30T14:45:26.801Z","created":"2012-06-30T14:45:22.940Z","0.0.1":"2012-06-30T14:45:26.801Z"},"author":{"name":"JacksonTian"},"repository":{"type":"git","url":"git://github.com/TBEDP/ghost.git"},"_id":"shadow","_rev":"1-221073db7676a0731781ec4212030987"}'ÿdocument-storeÿsession-mongoose-repl¨{"id":"session-mongoose-repl","rev":"1-f693089167d8c3dc4442bf334d837c92","rev_tree":[{"pos":1,"ids":["f693089167d8c3dc4442bf334d837c92",{"status":"available"},[]]}],"rev_map":{"1-f693089167d8c3dc4442bf334d837c92":3565},"winningRev":"1-f693089167d8c3dc4442bf334d837c92","deleted":false,"seq":3565}ÿby-sequenceÿ0000000000003565—{"name":"session-mongoose-repl","description":"connect session store implementation using Mongoose - temporary solution to allow sessions store in mongo replica sets - forked from Don Park - will issue pull request","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"ManChoy Kau","email":"manchoyy@gmail.com"},"name":"session-mongoose-repl","description":"connect session store implementation using Mongoose - temporary solution to allow sessions store in mongo replica sets - forked from Don Park - will issue pull request","version":"0.0.1","main":"./index.js","repository":{"type":"git","url":"git://github.com/ManChoy/session-mongoose.git"},"engines":{"node":">= v0.4.0"},"dependencies":{"connect":">= 1.0.0 < 2","mongeese":">= 0.0.1"},"devDependencies":{},"_npmUser":{"name":"manchoy","email":"manchoyy@gmail.com"},"_id":"session-mongoose-repl@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"415ac243b86362524a03aa89ddecb02ad4194824","tarball":"http://registry.npmjs.org/session-mongoose-repl/-/session-mongoose-repl-0.0.1.tgz"},"maintainers":[{"name":"manchoy","email":"manchoyy@gmail.com"}]}},"readme":"`session-mongoose` module is an implementation of `connect` session store using [Mongoose](http://mongoosejs.com).\n\n## Implementation Note:\n\nUses [mongeese](https://github.com/donpark/mongeese) module to isolate session database from app's default Mongoose database.\n\n## Install\n\n npm install session-mongoose\n\n## Usage\n\nCreate session store:\n\n var SessionMongoose = require(\"session-mongoose\");\n var mongooseSessionStore = new SessionMongoose({\n url: \"mongodb://localhost/session\",\n interval: 120000 // expiration check worker run interval in millisec (default: 60000)\n });\n\nConfigure Express\n\n var express = require(\"express\");\n ...\n // configure session provider\n app.use(express.session({\n store: mongooseSessionStore,\n ...\n });\n ...\n\nThat's it.\n","maintainers":[{"name":"manchoy","email":"manchoyy@gmail.com"}],"time":{"modified":"2012-05-17T08:47:56.176Z","created":"2012-05-17T08:47:50.453Z","0.0.1":"2012-05-17T08:47:56.176Z"},"author":{"name":"ManChoy Kau","email":"manchoyy@gmail.com"},"repository":{"type":"git","url":"git://github.com/ManChoy/session-mongoose.git"},"_id":"session-mongoose-repl","_rev":"1-f693089167d8c3dc4442bf334d837c92"}ÿdocument-storeÿseq.uenceœ{"id":"seq.uence","rev":"1-0b0c28c4457dd24b67619fdf4e4a63cf","rev_tree":[{"pos":1,"ids":["0b0c28c4457dd24b67619fdf4e4a63cf",{"status":"available"},[]]}],"rev_map":{"1-0b0c28c4457dd24b67619fdf4e4a63cf":3564},"winningRev":"1-0b0c28c4457dd24b67619fdf4e4a63cf","deleted":false,"seq":3564}ÿby-sequenceÿ0000000000003564à {"name":"seq.uence","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"seq.uence","version":"0.0.1","main":"./seq.js","scripts":{"test":"mocha"},"devDependencies":{"mocha":"*"},"_npmUser":{"name":"4d47","email":"mathieu@gagnon.name"},"_id":"seq.uence@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9c2b40df9e516da490c298ffb9fd3b4947aa1381","tarball":"http://registry.npmjs.org/seq.uence/-/seq.uence-0.0.1.tgz"},"maintainers":[{"name":"4d47","email":"mathieu@gagnon.name"}]}},"readme":"seq.uence\n=========\n\nUtility to sequentially apply a list of functions\nand augmenting the arguments with the 'next' function;\nhelping decoupling asynchronous style functions.\n\n```javascript\n seq(\n function(next) {\n\t next(12)\n },\n function(luckyNumber) {\n\t console.log( luckyNumber + 2 )\n }\n )\n```\n","maintainers":[{"name":"4d47","email":"mathieu@gagnon.name"}],"time":{"modified":"2012-04-21T12:35:58.970Z","created":"2012-04-21T12:35:58.217Z","0.0.1":"2012-04-21T12:35:58.970Z"},"_id":"seq.uence","_rev":"1-0b0c28c4457dd24b67619fdf4e4a63cf"}ÿdocument-storeÿseed-redis{"id":"seed-redis","rev":"1-7e83e1246de77c9b3a82dd2419143e2d","rev_tree":[{"pos":1,"ids":["7e83e1246de77c9b3a82dd2419143e2d",{"status":"available"},[]]}],"rev_map":{"1-7e83e1246de77c9b3a82dd2419143e2d":3563},"winningRev":"1-7e83e1246de77c9b3a82dd2419143e2d","deleted":false,"seq":3563}ÿby-sequenceÿ0000000000003563{"name":"seed-redis","description":"Store your seed sets in Redis","dist-tags":{"latest":"0.5.3"},"versions":{"0.3.2":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-redis","description":"Store your seed sets in Redis","version":"0.3.2","repository":{"type":"git","url":"git://github.com/qualiancy/seed-redis.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"redis":"0.7.x","debug":"0.6.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-redis@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"35941adb3411473c723de9afa8488b91753cb7d5","tarball":"http://registry.npmjs.org/seed-redis/-/seed-redis-0.3.2.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.4.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-redis","description":"Store your seed sets in Redis","version":"0.4.1","repository":{"type":"git","url":"git://github.com/qualiancy/seed-redis.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"redis":"0.7.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.3.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-redis@0.4.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a75108b65bd74c25dfe3be5b9694ec28b3395d2a","tarball":"http://registry.npmjs.org/seed-redis/-/seed-redis-0.4.1.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.5.3":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-redis","description":"Store your seed sets in Redis","version":"0.5.3","repository":{"type":"git","url":"git://github.com/qualiancy/seed-redis.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"dragonfly":"0.2.x","redis":"0.7.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.4.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-redis@0.5.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"e49d7328fca3fc624d1d2c78f768394ee54b2eb2","tarball":"http://registry.npmjs.org/seed-redis/-/seed-redis-0.5.3.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}}},"readme":"# Seed Redis \n\nThis module provides a storage addon for [Seed](http://github.com/qualiancy/seed) that allows for\ndatasets to be stored in Redis.\n\nMore documentation coming soon.\n","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"time":{"modified":"2012-06-29T10:47:10.239Z","created":"2012-01-12T01:18:05.989Z","0.1.0":"2012-01-12T01:18:06.643Z","0.1.1":"2012-01-23T07:47:31.412Z","0.2.0":"2012-02-27T06:05:03.159Z","0.3.0":"2012-03-14T04:43:29.145Z","0.3.1":"2012-03-19T22:39:10.373Z","0.3.2":"2012-03-20T23:07:24.644Z","0.4.0":"2012-05-25T08:28:57.807Z","0.4.1":"2012-05-25T09:04:04.577Z","0.5.0":"2012-06-26T08:50:13.113Z","0.5.1":"2012-06-28T09:40:10.514Z","0.5.1-1":"2012-06-28T09:48:06.635Z","0.5.2":"2012-06-29T10:37:52.213Z","0.5.3":"2012-06-29T10:44:33.277Z"},"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"repository":{"type":"git","url":"git://github.com/qualiancy/seed-redis.git"},"_id":"seed-redis","_rev":"1-7e83e1246de77c9b3a82dd2419143e2d"}ÿdocument-storeÿseasonsš{"id":"seasons","rev":"1-c56ce07ad0ba0e04e77c4505d125f166","rev_tree":[{"pos":1,"ids":["c56ce07ad0ba0e04e77c4505d125f166",{"status":"available"},[]]}],"rev_map":{"1-c56ce07ad0ba0e04e77c4505d125f166":3562},"winningRev":"1-c56ce07ad0ba0e04e77c4505d125f166","deleted":false,"seq":3562}ÿby-sequenceÿ0000000000003562•{"name":"seasons","description":"generate and display changes in code across commits","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Chris Dickinson","email":"chris@neversaw.us","url":"http://github.com/chrisdickinson/"},"name":"seasons","description":"generate and display changes in code across commits","version":"0.0.1","homepage":"http://github.com/chrisdickinson/seasons/","repository":{"url":"git://github.com/chrisdickinson/seasons.git"},"main":"lib/seasons.js","dependencies":{"d3":"~2.9.4"},"bin":{"build_seasons":"./bin/build_seasons"},"devDependencies":{},"optionalDependencies":{},"license":"MIT","engines":{"node":"*"},"_npmUser":{"name":"chrisdickinson","email":"chris@neversaw.us"},"_id":"seasons@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"55c775f2240c1e42632500113541bc86db9d192c","tarball":"http://registry.npmjs.org/seasons/-/seasons-0.0.1.tgz"},"maintainers":[{"name":"chrisdickinson","email":"chris@neversaw.us"}]}},"readme":"# Seasons.js\n\nView changes to a file over time.\n\n## Installation\n\nTo generate data:\n\n````\n npm install -g seasons\n build_seasons ../../path/to/some/file/in/some/repo\n # should create an `output.json` in your cwd.\n````\n\nTo use in-browser with require:\n\n````html\n \n \n````\n\nAnd it should work with [browserify](https://github.com/substack/browserify) too.\n\n## API\n\n### seasons = require('seasons') -> function\n\nReturns the `seasons` function.\n\n### seasons(id, data[, lineHeight][, highlighter]) -> function\n\nGiven commit data and a DOM id, display the code contained in `data`.\n\n## Building Seasons data\n\n````bash\n build_seasons ../../path/to/some/file/in/some/repo\n # should create an `output.json` in your cwd.\n````\n\n","maintainers":[{"name":"chrisdickinson","email":"chris@neversaw.us"}],"time":{"modified":"2012-06-24T23:39:10.570Z","created":"2012-06-24T23:39:09.091Z","0.0.1":"2012-06-24T23:39:10.570Z"},"author":{"name":"Chris Dickinson","email":"chris@neversaw.us","url":"http://github.com/chrisdickinson/"},"repository":{"url":"git://github.com/chrisdickinson/seasons.git"},"_id":"seasons","_rev":"1-c56ce07ad0ba0e04e77c4505d125f166"}ÿdocument-storeÿsantosh-posix {"id":"santosh-posix","rev":"1-f1af1e2f90b8d86e99f0603ae7a6fc63","rev_tree":[{"pos":1,"ids":["f1af1e2f90b8d86e99f0603ae7a6fc63",{"status":"available"},[]]}],"rev_map":{"1-f1af1e2f90b8d86e99f0603ae7a6fc63":3561},"winningRev":"1-f1af1e2f90b8d86e99f0603ae7a6fc63","deleted":false,"seq":3561}ÿby-sequenceÿ0000000000003561î{"name":"santosh-posix","description":"The missing POSIX system calls","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.8":{"name":"santosh-posix","version":"0.0.8","description":"The missing POSIX system calls","keywords":["posix","rlimit","getrlimit","setrlimit","ulimit","setuid","setgid","seteuid","setegid","chroot","setreuid","setregid","getpgrp","setsid","setpgid","getpwnam","getgrnam","uid","gid","syslog","setlogmask"],"homepage":"http://github.com/santosh79/node-posix","repository":{"type":"git","url":"git://github.com/santosh79/node-posix.git"},"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com"},"main":"./lib/posix","dependencies":{},"scripts":{"test":"make test","install":"node-waf configure build || true"},"engines":{"node":">= 0.6.0"},"readme":"# node-posix\n\nThe missing POSIX system calls for Node.\n[![Build Status](https://secure.travis-ci.org/melor/node-posix.png)](http://travis-ci.org/melor/node-posix)\n\n## FAQ\n\n* Q: Why?\n* A: Because the Node core has a limited set of POSIX system calls.\n* Q: How mature/stable is this?\n* A: Each version released in NPM has decent automated test coverage. The\n module is still new and not battle-hardened.\n* Q: I have a feature request/bug report...\n* A: Please submit a pull request or an issue ticket at\n https://github.com/melor/node-posix\n\n## Related modules\n\nOther extension modules that provide POSIX/Unix/Linux/BSD functionality:\n\n* glob() http://search.npmjs.org/#/glob\n* getrusage() http://search.npmjs.org/#/getrusage\n* chroot(), daemonization http://search.npmjs.org/#/daemon-tools\n* iconv() http://search.npmjs.org/#/iconv\n* mmap() http://search.npmjs.org/#/mmap\n* PAM authentication, flock() and mkstemp() http://search.npmjs.org/#/unixlib\n\n## Roadmap\n\n### User and Group ID Management\n* `getgid()` in Node core as `process.getgid`\n* `getuid()` in Node core as `process.getuid`\n* `setgid()` in Node core as `process.setgid`\n* `setuid()` in Node core as `process.setuid`, NOTE: should be used carefully\n due to inconsistent behavior under different operating systems, see\n http://www.cs.ucdavis.edu/~hchen/paper/usenix02.html\n\n### Resource limits\n* `ulimit()` is obsolete, use `posix.setrlimit()` instead\n\n## General usage\n\n* Installation: `npm install posix`\n* In your code: `var posix = require('posix');`\n\n## POSIX System Calls\n\n### posix.chroot(path)\n\nChanges the root directory of the calling process to that specified in `path`.\nThis directory will be used for pathnames beginning with `/`. The root\ndirectory is inherited by all children of the calling process.\n\nThe working directory is also automatically set to the new root directory.\n\nNOTE: Please be aware of the limitations of `chroot` jails:\n\n* \"Best Practices for UNIX `chroot()` Operations\":\n http://www.unixwiz.net/techtips/chroot-practices.html\n* \"How to break out of a `chroot()` jail\":\n http://www.bpfh.net/simes/computing/chroot-break.html\n\nExample:\n\n posix.chroot('/somewhere/safe');\n\n### posix.getegid()\n\nReturns the current process's effective group ID.\n\n console.log('Effective GID: ' + posix.getegid());\n\n### posix.geteuid()\n\nReturns the current process's effective user ID.\n\n console.log('Effective UID: ' + posix.geteuid());\n\n### posix.getgrnam(group)\n\nGet the group database entry for the given group. `group` can be specified\neither as a numeric GID or a group name (string).\n\n var util = require('util');\n util.inspect(posix.getgrnam('wheel'));\n\nExample output of above:\n\n { name: 'wheel', passwd: '*', gid: 0, members: [ 'root' ] }\n\n### posix.getpgid(pid)\n\nReturn the process group ID of the current process (`posix.getpgid(0)`) or of\na process of a given PID (`posix.getpgid(PID)`).\n\n console.log('My PGID: ' + posix.getpgid(0));\n console.log('init's PGID: ' + posix.getpgid(1));\n\n### posix.getppid()\n\nReturns the parent process's PID.\n\n console.log('Parent PID: ' + posix.getppid());\n\n### posix.getpwnam(user)\n\nGet the user database entry for the given user. `user` can be specified either\nas a numeric UID or a username (string).\n\n var util = require('util');\n util.inspect(posix.getpwnam('root'));\n\nExample output of above:\n\n { name: 'root',\n passwd: '*',\n uid: 0,\n gid: 0,\n gecos: 'System Administrator',\n shell: '/bin/sh',\n dir: '/var/root' }\n\n### posix.getrlimit(resource)\n\nGet resource limits. (See getrlimit(2).)\n\nThe `soft` limit is the value that the kernel enforces for the\ncorresponding resource. The `hard` limit acts as a ceiling for the soft\nlimit: an unprivileged process may only set its soft limit to a value in the\nrange from 0 up to the hard limit, and (irreversibly) lower its hard limit.\n\nSupported resources:\n\n`'core'` (RLIMIT_CORE) Maximum size of core file. When 0 no core dump files\nare created.\n\n`'cpu'` (RLIMIT_CPU) CPU time limit in seconds. When the process reaches the\nsoft limit, it is sent a SIGXCPU signal. The default action for this signal is\nto terminate the process.\n\n`'data'` (RLIMIT_DATA) The maximum size of the process's data segment\n(initialized data, uninitialized data, and heap).\n\n`'fsize'` (RLIMIT_FSIZE) The maximum size of files that the process may create.\nAttempts to extend a file beyond this limit result in delivery of a SIGXFSZ\nsignal.\n\n`'nofile'` (RLIMIT_NOFILE) Specifies a value one greater than the maximum file\ndescriptor number that can be opened by this process.\n\n`'stack'` (RLIMIT_STACK) The maximum size of the process stack, in bytes. Upon\nreaching this limit, a SIGSEGV signal is generated.\n\n`'as'` (RLIMIT_AS) The maximum size of the process's virtual memory (address\nspace) in bytes.\n\n var limits = posix.getrlimit('nofile');\n console.log('Current limits: soft=' + limits.soft + ', max=' + limits.hard);\n\n### posix.setegid(gid)\n\nSets the Effective group ID of the current process. `gid` can be either a\nnumeric GID or a group name (string).\n\n posix.setegid(0); // set effective group UID to \"wheel\"\n posix.setegid('nobody');\n\n### posix.seteuid(uid)\n\nSets the Effective user ID of the current process. `uid` can be either a\nnumeric UID or a username (string).\n\n posix.seteuid(0); // set effective UID to \"root\"\n posix.seteuid('nobody');\n\n### posix.setregid(rgid, egid)\n\nSets the Real and Effective group IDs of the current process. `rgid` and `egid`\ncan be either a numeric UIDs or group names (strings). A value of `-1` means\nthat the corresponding GID is left unchanged.\n\n posix.setregid(-1, 1000); // just set the EGID to 1000\n posix.setregid('www-data', 'www-data'); // change both RGID and EGID to \"www-data\"\n\n### posix.setreuid(ruid, euid)\n\nSets the Real and Effective user IDs of the current process. `ruid` and `euid`\ncan be either a numeric UIDs or usernames (strings). A value of `-1` means\nthat the corresponding UID is left unchanged.\n\nIMPORTANT NOTE: what happens to the Saved UID when `setreuid()` is called is\noperating system dependent. For example on OSX the Saved UID seems to be set\nto the previous EUID. This means that the process can escape back to EUID=0\nsimply by calling `setreuid(0, 0)`. A workaround for this is to call\n`posix.setreuid(ruid, euid)` twice with the same arguments.\n\n posix.setreuid(-1, 1000); // just set the EUID to 1000\n posix.setreuid('nobody', 'nobody'); // change both RUID and EUID to \"nobody\"\n\n### posix.setrlimit(resource, limits)\n\nSet resource limits. (See setrlimit(2).) Supported resource types are listed\nunder `posix.getrlimit`.\n\nThe `limits` argument is an object in the form\n`{ soft: SOFT_LIMIT, hard: HARD_LIMIT }`. Current limit values are used if\neither `soft` or `hard` key is not specifing in the `limits` object. A limit\nvalue of `null` indicates \"unlimited\" (RLIM_INFINITY).\n\n // raise maximum number of open file descriptors to 10k, hard limit is left unchanged\n posix.setrlimit('nofile', { soft: 10000 });\n\n // enable core dumps of unlimited size\n posix.setrlimit('core', { soft: null, hard: null });\n\n### posix.setsid()\n\nCreates a session and sets the process group ID. Returns the process group ID.\n\n console.log('Session ID: ' + posix.setsid());\n\n## Syslog\n\n### posix.openlog(identity, options, facility)\n\nOpen a connection to the logger.\n\nArguments:\n\n* `identity` - defines the name of the process visible in the logged entries.\n* `options` - set of option flags (see below).\n* `facility` - facility code for the logged messages (see below).\n\nOptions:\n\n* `'cons'` - Log to the system console on error.\n* `'ndelay'` - Connect to syslog daemon immediately.\n* `'nowait'` - Do not wait for child processes.\n* `'odelay'` - Delay open until syslog() is called.\n* `'pid'` - Log the process ID with each message.\n\nFacilities:\n\nNOTE: only `'user'` and `'local0'` .. `'local7'` are defined in the POSIX\nstandard. However, the other codes should be pretty well supported on most\nplatforms.\n\n* `'kern'`\n* `'user'`\n* `'mail'`\n* `'news'`\n* `'uucp'`\n* `'daemon'`\n* `'auth'`\n* `'cron'`\n* `'lpr'`\n* `'local0'` .. `'local7'`\n\nExample:\n\n posix.openlog('myprog', {odelay: true, pid: true}, 'local7');\n\n### posix.closelog()\n\nClose connection to the logger.\n\n### posix.setlogmask(mask)\n\nSets a priority mask for log messages. Further `posix.syslog()` messages are\nonly sent out if their priority is included in the mask. Priorities are listed\nunder `posix.syslog()`.\n\n // only send the most critical messages\n posix.setlogmask({emerg:true, alert: true, crit: true});\n\n### posix.syslog(priority, message)\n\nSend a message to the syslog logger using the given `priority`.\n\nPriorities:\n\n* `'emerg'`\n* `'alert'`\n* `'crit'`\n* `'err'`\n* `'warning'`\n* `'notice'`\n* `'info'`\n* `'debug'`\n\nExample:\n\n posix.syslog('info', 'hello, world!');\n\n## Credits\n\n* Some of the documentation strings stolen from Linux man pages.\n* `posix.seteuid` etc. implementation is based on Node core project `SetUid`\n* Fixes: Dan Bornstein\n\n## LICENSE\n\nCopyright (c) 2011-2012 Mika Eloranta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"santosh-posix@0.0.8","dist":{"shasum":"2fe9d774e1bb30f1a5848a020c7c25ba5c3dedac","tarball":"http://registry.npmjs.org/santosh-posix/-/santosh-posix-0.0.8.tgz"},"maintainers":[{"name":"santosh79","email":"santosh79@gmail.com"}]}},"readme":"# node-posix\n\nThe missing POSIX system calls for Node.\n[![Build Status](https://secure.travis-ci.org/melor/node-posix.png)](http://travis-ci.org/melor/node-posix)\n\n## FAQ\n\n* Q: Why?\n* A: Because the Node core has a limited set of POSIX system calls.\n* Q: How mature/stable is this?\n* A: Each version released in NPM has decent automated test coverage. The\n module is still new and not battle-hardened.\n* Q: I have a feature request/bug report...\n* A: Please submit a pull request or an issue ticket at\n https://github.com/melor/node-posix\n\n## Related modules\n\nOther extension modules that provide POSIX/Unix/Linux/BSD functionality:\n\n* glob() http://search.npmjs.org/#/glob\n* getrusage() http://search.npmjs.org/#/getrusage\n* chroot(), daemonization http://search.npmjs.org/#/daemon-tools\n* iconv() http://search.npmjs.org/#/iconv\n* mmap() http://search.npmjs.org/#/mmap\n* PAM authentication, flock() and mkstemp() http://search.npmjs.org/#/unixlib\n\n## Roadmap\n\n### User and Group ID Management\n* `getgid()` in Node core as `process.getgid`\n* `getuid()` in Node core as `process.getuid`\n* `setgid()` in Node core as `process.setgid`\n* `setuid()` in Node core as `process.setuid`, NOTE: should be used carefully\n due to inconsistent behavior under different operating systems, see\n http://www.cs.ucdavis.edu/~hchen/paper/usenix02.html\n\n### Resource limits\n* `ulimit()` is obsolete, use `posix.setrlimit()` instead\n\n## General usage\n\n* Installation: `npm install posix`\n* In your code: `var posix = require('posix');`\n\n## POSIX System Calls\n\n### posix.chroot(path)\n\nChanges the root directory of the calling process to that specified in `path`.\nThis directory will be used for pathnames beginning with `/`. The root\ndirectory is inherited by all children of the calling process.\n\nThe working directory is also automatically set to the new root directory.\n\nNOTE: Please be aware of the limitations of `chroot` jails:\n\n* \"Best Practices for UNIX `chroot()` Operations\":\n http://www.unixwiz.net/techtips/chroot-practices.html\n* \"How to break out of a `chroot()` jail\":\n http://www.bpfh.net/simes/computing/chroot-break.html\n\nExample:\n\n posix.chroot('/somewhere/safe');\n\n### posix.getegid()\n\nReturns the current process's effective group ID.\n\n console.log('Effective GID: ' + posix.getegid());\n\n### posix.geteuid()\n\nReturns the current process's effective user ID.\n\n console.log('Effective UID: ' + posix.geteuid());\n\n### posix.getgrnam(group)\n\nGet the group database entry for the given group. `group` can be specified\neither as a numeric GID or a group name (string).\n\n var util = require('util');\n util.inspect(posix.getgrnam('wheel'));\n\nExample output of above:\n\n { name: 'wheel', passwd: '*', gid: 0, members: [ 'root' ] }\n\n### posix.getpgid(pid)\n\nReturn the process group ID of the current process (`posix.getpgid(0)`) or of\na process of a given PID (`posix.getpgid(PID)`).\n\n console.log('My PGID: ' + posix.getpgid(0));\n console.log('init's PGID: ' + posix.getpgid(1));\n\n### posix.getppid()\n\nReturns the parent process's PID.\n\n console.log('Parent PID: ' + posix.ß ¨kùgetppid());\n\n### posix.getpwnam(user)\n\nGet the user database entry for the given user. `user` can be specified either\nas a numeric UID or a username (string).\n\n var util = require('util');\n util.inspect(posix.getpwnam('root'));\n\nExample output of above:\n\n { name: 'root',\n passwd: '*',\n uid: 0,\n gid: 0,\n gecos: 'System Administrator',\n shell: '/bin/sh',\n dir: '/var/root' }\n\n### posix.getrlimit(resource)\n\nGet resource limits. (See getrlimit(2).)\n\nThe `soft` limit is the value that the kernel enforces for the\ncorresponding resource. The `hard` limit acts as a ceiling for the soft\nlimit: an unprivileged process may only set its soft limit to a value in the\nrange from 0 up to the hard limit, and (irreversibly) lower its hard limit.\n\nSupported resources:\n\n`'core'` (RLIMIT_CORE) Maximum size of core file. When 0 no core dump files\nare created.\n\n`'cpu'` (RLIMIT_CPU) CPU time limit in seconds. When the process reaches the\nsoft limit, it is sent a SIGXCPU signal. The default action for this signal is\nto terminate the process.\n\n`'data'` (RLIMIT_DATA) The maximum size of the process's data segment\n(initialized data, uninitialized data, and heap).\n\n`'fsize'` (RLIMIT_FSIZE) The maximum size of files that the process may create.\nAttempts to extend a file beyond this limit result in delivery of a SIGXFSZ\nsignal.\n\n`'nofile'` (RLIMIT_NOFILE) Specifies a value one greater than the maximum file\ndescriptor number that can be opened by this process.\n\n`'stack'` (RLIMIT_STACK) The maximum size of the process stack, in bytes. Upon\nreaching this limit, a SIGSEGV signal is generated.\n\n`'as'` (RLIMIT_AS) The maximum size of the process's virtual memory (address\nspace) in bytes.\n\n var limits = posix.getrlimit('nofile');\n console.log('Current limits: soft=' + limits.soft + ', max=' + limits.hard);\n\n### posix.setegid(gid)\n\nSets the Effective group ID of the current process. `gid` can be either a\nnumeric GID or a group name (string).\n\n posix.setegid(0); // set effective group UID to \"wheel\"\n posix.setegid('nobody');\n\n### posix.seteuid(uid)\n\nSets the Effective user ID of the current process. `uid` can be either a\nnumeric UID or a username (string).\n\n posix.seteuid(0); // set effective UID to \"root\"\n posix.seteuid('nobody');\n\n### posix.setregid(rgid, egid)\n\nSets the Real and Effective group IDs of the current process. `rgid` and `egid`\ncan be either a numeric UIDs or group names (strings). A value of `-1` means\nthat the corresponding GID is left unchanged.\n\n posix.setregid(-1, 1000); // just set the EGID to 1000\n posix.setregid('www-data', 'www-data'); // change both RGID and EGID to \"www-data\"\n\n### posix.setreuid(ruid, euid)\n\nSets the Real and Effective user IDs of the current process. `ruid` and `euid`\ncan be either a numeric UIDs or usernames (strings). A value of `-1` means\nthat the corresponding UID is left unchanged.\n\nIMPORTANT NOTE: what happens to the Saved UID when `setreuid()` is called is\noperating system dependent. For example on OSX the Saved UID seems to be set\nto the previous EUID. This means that the process can escape back to EUID=0\nsimply by calling `setreuid(0, 0)`. A workaround for this is to call\n`posix.setreuid(ruid, euid)` twice with the same arguments.\n\n posix.setreuid(-1, 1000); // just set the EUID to 1000\n posix.setreuid('nobody', 'nobody'); // change both RUID and EUID to \"nobody\"\n\n### posix.setrlimit(resource, limits)\n\nSet resource limits. (See setrlimit(2).) Supported resource types are listed\nunder `posix.getrlimit`.\n\nThe `limits` argument is an object in the form\n`{ soft: SOFT_LIMIT, hard: HARD_LIMIT }`. Current limit values are used if\neither `soft` or `hard` key is not specifing in the `limits` object. A limit\nvalue of `null` indicates \"unlimited\" (RLIM_INFINITY).\n\n // raise maximum number of open file descriptors to 10k, hard limit is left unchanged\n posix.setrlimit('nofile', { soft: 10000 });\n\n // enable core dumps of unlimited size\n posix.setrlimit('core', { soft: null, hard: null });\n\n### posix.setsid()\n\nCreates a session and sets the process group ID. Returns the process group ID.\n\n console.log('Session ID: ' + posix.setsid());\n\n## Syslog\n\n### posix.openlog(identity, options, facility)\n\nOpen a connection to the logger.\n\nArguments:\n\n* `identity` - defines the name of the process visible in the logged entries.\n* `options` - set of option flags (see below).\n* `facility` - facility code for the logged messages (see below).\n\nOptions:\n\n* `'cons'` - Log to the system console on error.\n* `'ndelay'` - Connect to syslog daemon immediately.\n* `'nowait'` - Do not wait for child processes.\n* `'odelay'` - Delay open until syslog() is called.\n* `'pid'` - Log the process ID with each message.\n\nFacilities:\n\nNOTE: only `'user'` and `'local0'` .. `'local7'` are defined in the POSIX\nstandard. However, the other codes should be pretty well supported on most\nplatforms.\n\n* `'kern'`\n* `'user'`\n* `'mail'`\n* `'news'`\n* `'uucp'`\n* `'daemon'`\n* `'auth'`\n* `'cron'`\n* `'lpr'`\n* `'local0'` .. `'local7'`\n\nExample:\n\n posix.openlog('myprog', {odelay: true, pid: true}, 'local7');\n\n### posix.closelog()\n\nClose connection to the logger.\n\n### posix.setlogmask(mask)\n\nSets a priority mask for log messages. Further `posix.syslog()` messages are\nonly sent out if their priority is included in the mask. Priorities are listed\nunder `posix.syslog()`.\n\n // only send the most critical messages\n posix.setlogmask({emerg:true, alert: true, crit: true});\n\n### posix.syslog(priority, message)\n\nSend a message to the syslog logger using the given `priority`.\n\nPriorities:\n\n* `'emerg'`\n* `'alert'`\n* `'crit'`\n* `'err'`\n* `'warning'`\n* `'notice'`\n* `'info'`\n* `'debug'`\n\nExample:\n\n posix.syslog('info', 'hello, world!');\n\n## Credits\n\n* Some of the documentation strings stolen from Linux man pages.\n* `posix.seteuid` etc. implementation is based on Node core project `SetUid`\n* Fixes: Dan Bornstein\n\n## LICENSE\n\nCopyright (c) 2011-2012 Mika Eloranta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"santosh79","email":"santosh79@gmail.com"}],"time":{"modified":"2012-07-16T22:03:43.666Z","created":"2012-07-16T22:03:40.872Z","0.0.8":"2012-07-16T22:03:43.666Z"},"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com"},"repository":{"type":"git","url":"git://github.com/santosh79/node-posix.git"},"_id":"santosh-posix","_rev":"1-f1af1e2f90b8d86e99f0603ae7a6fc63"}ÿdocument-storeÿrush—{"id":"rush","rev":"1-6ef2b99d31285f06cb18a8fa13dd9594","rev_tree":[{"pos":1,"ids":["6ef2b99d31285f06cb18a8fa13dd9594",{"status":"available"},[]]}],"rev_map":{"1-6ef2b99d31285f06cb18a8fa13dd9594":3560},"winningRev":"1-6ef2b99d31285f06cb18a8fa13dd9594","deleted":false,"seq":3560}ÿby-sequenceÿ0000000000003560–{"name":"rush","description":"The ultimate solution of writing asyncronous code in a beautiful way.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"rush","description":"The ultimate solution of writing asyncronous code in a beautiful way.","keywords":["async"],"version":"0.0.1","author":{"name":"Ivan Zhidkov","email":"scaryzet@gmail.com"},"repository":{"type":"git","url":"git://github.com/scaryzet/node-rush.git"},"main":"index.js","scripts":{"test":"node index.js"},"dependencies":{},"devDependencies":{"stack-parser":"0.0.1"},"optionalDependencies":{},"engines":{"node":"*"},"license":{"type":"MIT","url":"https://raw.github.com/scaryzet/node-rush/master/LICENSE"},"_npmUser":{"name":"scaryzet","email":"scaryzet@gmail.com"},"_id":"rush@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"606be08ae5ddc7d11fdd0d1eb90078f4a442db88","tarball":"http://registry.npmjs.org/rush/-/rush-0.0.1.tgz"},"maintainers":[{"name":"scaryzet","email":"scaryzet@gmail.com"}]},"0.0.2":{"name":"rush","description":"The ultimate solution of writing asyncronous code in a beautiful way.","keywords":["async"],"version":"0.0.2","author":{"name":"Ivan Zhidkov","email":"scaryzet@gmail.com"},"repository":{"type":"git","url":"git://github.com/scaryzet/node-rush.git"},"main":"index.js","scripts":{"test":"node index.js"},"dependencies":{},"devDependencies":{"stack-parser":"0.0.1"},"optionalDependencies":{},"engines":{"node":"*"},"license":{"type":"MIT","url":"https://raw.github.com/scaryzet/node-rush/master/LICENSE"},"_npmUser":{"name":"scaryzet","email":"scaryzet@gmail.com"},"_id":"rush@0.0.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"32d7bb349552cfe51b6b1e7560cc65139d3bcea0","tarball":"http://registry.npmjs.org/rush/-/rush-0.0.2.tgz"},"maintainers":[{"name":"scaryzet","email":"scaryzet@gmail.com"}]}},"readme":"Rush\r\n====\r\n\r\nThe ultimate solution of writing asyncronous code in a beautiful way.\r\n\r\nInstallation\r\n============\r\n\r\n```\r\nnpm install rush\r\n```\r\n\r\nExample\r\n=======\r\n\r\n```javascript\r\nvar rush = require('rush');\r\n\r\nrush({\r\n\tn: 0\r\n\tdata: []\r\n})(function() {\r\n\tthis.n++;\r\n\t\r\n\tfs.readFile('file1.txt', this(function(data) {\r\n\t\tthis.data.push(data);\r\n\t}));\r\n\t\r\n\tfs.readFile('file2.txt', this(function(data) {\r\n\t\tthis.data.push(data);\r\n\t}));\r\n})(function() {\r\n\tthis.n++;\r\n\t\r\n\tfs.readFile('file3.txt', this(function(data) {\r\n\t\tthis.data.push(data);\r\n\t}));\r\n})(function(err) {\r\n\tconsole.log(n); // => 2\r\n\t// this.data should have 3 items:\r\n\t// (data of) file1, file2, file3 or file2, file1, file3.\r\n})();\r\n\r\n```\r\n\r\nLicense\r\n=======\r\n\r\nMIT\r\n","maintainers":[{"name":"scaryzet","email":"scaryzet@gmail.com"}],"time":{"modified":"2012-05-17T09:50:16.375Z","created":"2012-05-14T20:12:30.301Z","0.0.1":"2012-05-14T20:12:34.108Z","0.0.2":"2012-05-17T09:50:16.375Z"},"author":{"name":"Ivan Zhidkov","email":"scaryzet@gmail.com"},"repository":{"type":"git","url":"git://github.com/scaryzet/node-rush.git"},"_id":"rush","_rev":"1-6ef2b99d31285f06cb18a8fa13dd9594"}ÿdocument-storeÿroutil-cookie {"id":"routil-cookie","rev":"1-fb958b3985865c94f5ec1153c45122f9","rev_tree":[{"pos":1,"ids":["fb958b3985865c94f5ec1153c45122f9",{"status":"available"},[]]}],"rev_map":{"1-fb958b3985865c94f5ec1153c45122f9":3559},"winningRev":"1-fb958b3985865c94f5ec1153c45122f9","deleted":false,"seq":3559}ÿby-sequenceÿ0000000000003559§{"name":"routil-cookie","description":"set and get cookies","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"routil-cookie","version":"0.0.1","description":"set and get cookies","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-cookie.git"},"main":"index","scripts":{"test":"make test"},"homepage":"https://github.com/Raynos/routil-cookie","contributors":[{"name":"Jake Verbaten"}],"bugs":{"email":"raynos2@gmail.com","url":"https://github.com/Raynos/routil-cookie/issues"},"dependencies":{"cookie":"0.0.2","request":"~2.9.202"},"devDependencies":{"mocha":"1.1.0"},"licenses":[{"type":"MIT","url":"http://github.com/raynos/routil-cookie/raw/master/LICENSE"}],"engines":{"node":">=0.4"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"routil-cookie@0.0.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b72619545d381f2a7a5373bb21c2de69ab724682","tarball":"http://registry.npmjs.org/routil-cookie/-/routil-cookie-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# Routil-cookie \n[![build status][1]][2]\n\nCookie manipulation on req and res\n\n## Example\n\n var routilCookie = require(\"routil-cookie\"),\n getCookie = routilCookie.getCookie,\n setCookie = routilCookie.setCookie,\n http = require(\"http\")\n\n http.createServer(function (req, res) {\n var value = getCookie(req, name)\n\n setCookie(res, name, value, options)\n })\n\n [1]: https://secure.travis-ci.org/Raynos/routil-cookie.png\n [2]: http://travis-ci.org/Raynos/routil-cookie","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-06-05T16:49:34.060Z","created":"2012-06-05T16:49:32.526Z","0.0.1":"2012-06-05T16:49:34.060Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-cookie.git"},"_id":"routil-cookie","_rev":"1-fb958b3985865c94f5ec1153c45122f9"}ÿdocument-storeÿrouter-linež{"id":"router-line","rev":"1-65453c8cba45cbfdd32689cb9d17279f","rev_tree":[{"pos":1,"ids":["65453c8cba45cbfdd32689cb9d17279f",{"status":"available"},[]]}],"rev_map":{"1-65453c8cba45cbfdd32689cb9d17279f":3558},"winningRev":"1-65453c8cba45cbfdd32689cb9d17279f","deleted":false,"seq":3558}ÿby-sequenceÿ0000000000003558â{"name":"router-line","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.0":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"router-line","version":"0.0.0","repository":{"url":""},"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"should":"*"},"optionalDependencies":{},"main":"./lib/index.js","scripts":{"test":"mocha"},"_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"router-line@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0500f6aa2db250ca9173d9a493fe7497fd16c309","tarball":"http://registry.npmjs.org/router-line/-/router-line-0.0.0.tgz"},"maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]},"0.1.0":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"router-line","version":"0.1.0","repository":{"url":""},"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"should":"*"},"optionalDependencies":{},"main":"./lib/index.js","scripts":{"test":"mocha"},"_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"router-line@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"f0b27b06d80c9e2ac6dfa2e4676e5c646d625462","tarball":"http://registry.npmjs.org/router-line/-/router-line-0.1.0.tgz"},"maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]},"0.2.0":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"router-line","version":"0.2.0","repository":{"url":""},"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"should":"*","mocha":"*"},"optionalDependencies":{},"main":"./lib/index.js","scripts":{"test":"mocha"},"_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"router-line@0.2.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fc95bb05f30d258429a3e495fb96463e316f777f","tarball":"http://registry.npmjs.org/router-line/-/router-line-0.2.0.tgz"},"maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]},"0.2.1":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"router-line","version":"0.2.1","repository":{"url":""},"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"should":"*","mocha":"*","coffee-script":"*"},"optionalDependencies":{},"main":"./lib/index.js","scripts":{"test":"node_modules/mocha/bin/mocha"},"_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"router-line@0.2.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"5bc84ba012f867c12a9fb787a419d389353fa8de","tarball":"http://registry.npmjs.org/router-line/-/router-line-0.2.1.tgz"},"maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]}},"readme":"Router-Line\n=============================\nA URL routing module for Node.js\n\nThis is a module of \"subway\"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}],"time":{"modified":"2012-08-02T13:44:36.885Z","created":"2012-02-10T08:09:58.328Z","0.0.0":"2012-02-10T08:10:01.697Z","0.1.0":"2012-03-05T08:21:07.676Z","0.2.0":"2012-06-07T10:51:30.388Z","0.2.1":"2012-07-23T17:42:29.457Z"},"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"repository":{"url":""},"users":{"fgribreau":true},"_id":"router-line","_rev":"1-65453c8cba45cbfdd32689cb9d17279f"}ÿdocument-storeÿri•{"id":"ri","rev":"1-5c16f54e8ac000dadf9ffd00c06d3784","rev_tree":[{"pos":1,"ids":["5c16f54e8ac000dadf9ffd00c06d3784",{"status":"available"},[]]}],"rev_map":{"1-5c16f54e8ac000dadf9ffd00c06d3784":3557},"winningRev":"1-5c16f54e8ac000dadf9ffd00c06d3784","deleted":false,"seq":3557}ÿby-sequenceÿ0000000000003557Ë {"name":"ri","description":"Magic","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"ri","version":"0.0.0","description":"Magic","keywords":["Magic"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"devDependencies":{"jison":"0.3.x","mocha":"1.0.x","chai":"*"},"repository":{"type":"git","url":"git://github.com/vesln/ri.git"},"homepage":"http://github.com/vesln/ri","scripts":{"test":"make test"},"main":"./lib/ri","engines":{"node":">= 0.6.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"ri@0.0.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"28ff9335a0e34f84a981a92cf3aded62053817d0","tarball":"http://registry.npmjs.org/ri/-/ri-0.0.0.tgz"},"readme":"","maintainers":[{"name":"vesln","email":"hi@vesln.com"}]}},"readme":"","maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"time":{"modified":"2012-05-11T15:51:04.311Z","created":"2012-05-11T15:51:02.469Z","0.0.0":"2012-05-11T15:51:04.311Z"},"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"repository":{"type":"git","url":"git://github.com/vesln/ri.git"},"_id":"ri","_rev":"1-5c16f54e8ac000dadf9ffd00c06d3784"}#ÿdocument-storeÿresourceful-redis¤{"id":"resourceful-redis","rev":"1-fbc7a4b60e4d5710145fc3f33e8ea17f","rev_tree":[{"pos":1,"ids":["fbc7a4b60e4d5710145fc3f33e8ea17f",{"status":"available"},[]]}],"rev_map":{"1-fbc7a4b60e4d5710145fc3f33e8ea17f":3556},"winningRev":"1-fbc7a4b60e4d5710145fc3f33e8ea17f","deleted":false,"seq":3556}ÿby-sequenceÿ0000000000003556Úe{"name":"resourceful-redis","description":"resourceful redis engine","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"resourceful-redis","description":"resourceful redis engine","version":"0.0.1","author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"url":"http://github.com/particlebanana/resourceful-redis","keywords":["redis","database","ODM"],"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"dependencies":{"redis":"0.7.x","hiredis":"0.1.x","resourceful":"0.1.x","async":"0.1.x"},"devDependencies":{"mocha":"1.0.x","should":"0.6.x"},"scripts":{"test":"mocha test"},"engines":{"node":">= 0.6.0"},"main":"./lib/resourceful-redis","_npmUser":{"name":"particlebanana","email":"particlebanana@gmail.com"},"_id":"resourceful-redis@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"58d4947f64891466c5740b44a890848bcc570a33","tarball":"http://registry.npmjs.org/resourceful-redis/-/resourceful-redis-0.0.1.tgz"},"maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}]},"0.1.0":{"name":"resourceful-redis","description":"resourceful redis engine","version":"0.1.0","author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"url":"http://github.com/particlebanana/resourceful-redis","keywords":["redis","database","ODM"],"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"dependencies":{"redis":"0.7.x","hiredis":"0.1.x","resourceful":"0.1.x","async":"0.1.x"},"devDependencies":{"mocha":"1.0.x","should":"0.6.x"},"scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.6.0"},"main":"./lib/resourceful-redis","_npmUser":{"name":"particlebanana","email":"particlebanana@gmail.com"},"_id":"resourceful-redis@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"17497573774d0a3320f40c9090de14539891bd4f","tarball":"http://registry.npmjs.org/resourceful-redis/-/resourceful-redis-0.1.0.tgz"},"maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}]},"0.1.1":{"name":"resourceful-redis","description":"resourceful redis engine","version":"0.1.1","author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"url":"http://github.com/particlebanana/resourceful-redis","keywords":["redis","database","ODM"],"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"dependencies":{"redis":"0.7.x","hiredis":"0.1.x","resourceful":"0.1.x","async":"0.1.x"},"devDependencies":{"mocha":"1.0.x","should":"0.6.x"},"scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.6.0"},"main":"./lib/resourceful-redis","_npmUser":{"name":"particlebanana","email":"particlebanana@gmail.com"},"_id":"resourceful-redis@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"50c512f9fe1de0e86f8688605170778556f5bfe6","tarball":"http://registry.npmjs.org/resourceful-redis/-/resourceful-redis-0.1.1.tgz"},"maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}]},"0.1.2":{"name":"resourceful-redis","description":"resourceful redis engine","version":"0.1.2","author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"url":"http://github.com/particlebanana/resourceful-redis","keywords":["redis","database","ODM"],"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"dependencies":{"redis":"0.7.2","hiredis":"0.1.14","resourceful":"0.1.10","async":"0.1.22"},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.6.0"},"main":"./lib/resourceful-redis","readme":"#resourceful-redis\n\nA Redis engine for [resourceful](https://github.com/flatiron/resourceful/), a model framework from the [flatiron](https://github.com/flatiron/) project.\n\n[![Build Status](https://secure.travis-ci.org/particlebanana/resourceful-redis.png?branch=master)](http://travis-ci.org/particlebanana/resourceful-redis)\n\n#### Acknowledgement\n\nresourceful-redis is based on all the other resourceful engines including the standard couchdb and memory engines. Also inspired by the following projects:\n\n - [resourceful-mongo](https://github.com/codebrew/resourceful-mongo) from codebrew\n - [resourceful-riak](https://github.com/admazely/resourceful-riak) from admazely\n\n#### Status\n\nresourceful-redis is just getting started. I wouldn't use it in production yet but try it out and if you find bugs create an issue so we can get it to a production ready state soon.\n\n## Example\n\n``` js\n var redisConnection = redis.createClient(); // an external redis connection\n\n var resourceful = require('../lib/resourceful-redis');\n\n var Creature = resourceful.define('creature', function () {\n\n // Specify redis engine and connection\n this.use(\"redis\", {\n // You can pass in a connection object which is recommened or\n // a uri string to create a connection per model\n connection: redisConnection, // Pass in a redis connection\n // uri: \"redis://DB:Pass@127.0.0.1:6379\", // Set connection string here, auth is optional\n namespace: \"\" // Each model will have a different namespace to use as a key\n });\n\n // Specify some properties\n this.string('diet');\n this.bool('vertebrate');\n this.array('belly');\n\n this.timestamps();\n });\n\n Creature.prototype.feed = function (food) {\n this.belly.push(food);\n };\n```\n\n## Resourceful API\nResourceful-redis uses the [engines-test.js](https://github.com/flatiron/resourceful/blob/master/test/engines-test.js) test suite from the resourceful project in order to try and ensure API compatibility. It's edited to use [mocha][0] instead of Vows but should be similar. \n\nCurrently resourceful-redis should support all of the CRUD methods that resourceful defines as well as simple find's and filters. In the future I would like to implement relationship modeling and hooks for redis pub/sub functionality.\n\n## Installation\n\n### Installing resourceful-redis\n``` bash\n $ [sudo] npm install resourceful-redis\n```\n\n## Tests\nAll tests are written with [mocha][0] and should be run with [npm][1]:\n\n``` bash\n $ npm test\n```\n\n#### Author: [Cody Stoltman](http://github.com/particlebanana)\n#### License: [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\n[0]: http://visionmedia.github.com/mocha/\n[1]: http://npmjs.org","_id":"resourceful-redis@0.1.2","dist":{"shasum":"a3fc9cfe60504449df45af9c030300310fb417ea","tarball":"http://registry.npmjs.org/resourceful-redis/-/resourceful-redis-0.1.2.tgz"},"maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}]},"0.1.3":{"name":"resourceful-redis","description":"resourceful redis engine","version":"0.1.3","author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"url":"http://github.com/particlebanana/resourceful-redis","keywords":["redis","database","ODM"],"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"dependencies":{"redis":"0.7.2","hiredis":"0.1.14","resourceful":"0.2.x","async":"0.1.22"},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.8.0"},"main":"./lib/resourceful-redis","readme":"#resourceful-redis\n\nA Redis engine for [resourceful](https://github.com/flatiron/resourceful/), a model framework from the [flatiron](https://github.com/flatiron/) project.\n\n[![Build Status](https://secure.travis-ci.org/particlebanana/resourceful-redis.png?branch=master)](http://travis-ci.org/particlebanana/resourceful-redis)\n\n#### Acknowledgement\n\nresourceful-redis is based on all the other resourceful engines including the standard couchdb and memory engines. Also inspired by the following projects:\n\n - [resourceful-mongo](https://github.com/codebrew/resourceful-mongo) from codebrew\n - [resourceful-riak](https://github.com/admazely/resourceful-riak) from admazely\n\n#### Status\n\nresourceful-redis is just getting started. I wouldn't use it in production yet but try it out and if you find bugs create an issue so we can get it to a production ready state soon.\n\n## Example\n\n``` js\n var redisConnection = redis.createClient(); // an external redis connection\n\n var resourceful = require('../lib/resourceful-redis');\n\n var Creature = resourceful.define('creature', function () {\n\n // Specify redis engine and connection\n this.use(\"redis\", {\n // You can pass in a connection object which is recommened or\n // a uri string to create a connection per model\n connection: redisConnection, // Pass in a redis connection\n // uri: \"redis://DB:Pass@127.0.0.1:6379\", // Set connection string here, auth is optional\n namespace: \"\" // Each model will have a different namespace to use as a key\n });\n\n // Specify some properties\n this.string('diet');\n this.bool('vertebrate');\n this.array('belly');\n\n this.timestamps();\n });\n\n Creature.prototype.feed = function (food) {\n this.belly.push(food);\n };\n```\n\n## Resourceful API\nResourceful-redis uses the [engines-test.js](https://github.com/flatiron/resourceful/blob/master/test/engines-test.js) test suite from the resourceful project in order to try and ensure API compatibility. It's edited to use [mocha][0] instead of Vows but should be similar. \n\nCurrently resourceful-redis should support all of the CRUD methods that resourceful defines as well as simple find's and filters. In the future I would like to implement relationship modeling and hooks for redis pub/sub functionality.\n\n## Installation\n\n### Installing resourceful-redis\n``` bash\n $ [sudo] npm install resourceful-redis\n```\n\n## Tests\nAll tests are written with [mocha][0] and should be run with [npm][1]:\n\n``` bash\n $ npm test\n```\n\n#### Author: [Cody Stoltman](http://github.com/particlebanana)\n#### License: [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\n[0]: http://visionmedia.github.com/mocha/\n[1]: http://npmjs.org","_id":"resourceful-redis@0.1.3","dist":{"shasum":"9835efa3751038afe68ed07f8810974692c8877d","tarball":"http://registry.npmjs.org/resourceful-redis/-/resourceful-redis-0.1.3.tgz"},"maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}]}},"readme":"#resourceful-redis [![Build Status](https://secure.travis-ci.org/particlebanana/resourceful-redis.png?branch=master)](http://travis-ci.org/particlebanana/resourceful-redis)\n\nA Redis engine for [resourceful](https://github.com/flatiron/resourceful/), a model framework from the [flatiron](https://github.com/flatiron/) project.\n\n#### Acknowledgement\n\nresourceful-redis is based on all the other resourceful engines including the standard couchdb and memory engines. Also inspired by the following projects:\n\n - [resourceful-mongo](https://github.com/codebrew/resourceful-mongo) from codebrew\n - [resourceful-riak](https://github.com/admazely/resourceful-riak) from admazely\n\n## Example\n\n``` js\n var resourceful = require('../lib/resourceful-redis');\n\n var Creature = resourceful.define('creature', function () {\n\n // Specify redis engine and connection\n this.use(\"redis\", {\n uri: \"redis://DB:Pass@127.0.0.1:6379\", // Set connection string here, auth is optional\n namespace: \"\" // Each model will have a different namespace to use as a key\n });\n\n // Specify some properties\n this.string('diet');\n this.bool('vertebrate');\n this.array('belly');\n\n this.timestamps();\n });\n\n Creature.prototype.feed = function (food) {\n this.belly.push(food);\n };\n```\n\n## Installation\n\n### Installing resourceful\n``` bash\n $ [sudo] npm install resourceful\n```\n\n### Installing resourceful-redis\n``` bash\n $ [sudo] npm install resourceful-redis\n```\n\n## Tests\nAll tests are written with [mocha][0] and should be run with [npm][1]:\n\n``` bash\n $ npm test\n```\n\n#### Author: [Cody Stoltman](http://github.com/particlebanana)\n#### License: [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\n[0]: http://visionmedia.github.com/mocha/\n[1]: http://npmjs.org","maintainers":[{"name":"particlebanana","email":"particlebanana@gmail.com"}],"time":{"modified":"2012-08-02T13:44:36.169Z","created":"2012-04-09T01:14:23.423Z","0.0.1":"2012-04-09T01:14:24.568Z","0.1.0":"2012-04-11T03:16:34.197Z","0.1.1":"2012-04-13T16:14:55.071Z","0.1.2":"2012-06-25T23:54:13.310Z","0.1.3":"2012-07-23T21:47:41.567Z"},"author":{"name":"Cody Stoltman","email":"particlebanana@gmail.com"},"repository":{"type":"git","url":"git://github.com/particlebanana/resourceful-redis.git"},"users":{"fgribreau":true},"_id":"resourceful-redis","_rev":"1-fbc7a4b60e4d5710145fc3f33e8ea17f"},ÿdocument-storeÿrequirejs-library-skeleton­{"id":"requirejs-library-skeleton","rev":"1-6dfd3a4cb67ac3d31ee18a6bc76034a1","rev_tree":[{"pos":1,"ids":["6dfd3a4cb67ac3d31ee18a6bc76034a1",{"status":"available"},[]]}],"rev_map":{"1-6dfd3a4cb67ac3dö»€ªù31ee18a6bc76034a1":3555},"winningRev":"1-6dfd3a4cb67ac3d31ee18a6bc76034a1","deleted":false,"seq":3555}ÿby-sequenceÿ0000000000003555Ì={"name":"requirejs-library-skeleton","description":"RequireJS skeleton for modern JS libraries.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"requirejs-library-skeleton","description":"RequireJS skeleton for modern JS libraries.","version":"0.1.0","homepage":"http://github.com/tkellen/requirejs-library-skeleton","author":{"name":"Tyler Kellen"},"licenses":[{"type":"MIT","url":"http://github.com/tkellen/requirejs-library-skeleton/blob/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/tkellen/requirejs-library-skeleton.git"},"main":"build/skeleton.js","engines":{"node":">=0.4.2"},"keywords":["requirejs","library","boilerplate"],"dependencies":{},"scripts":{"test":"phantomjs test/runner-phantom.js http://localhost:8000/test/runner.html"},"devDependencies":{"system":"*","requirejs":"*","servedir":"*"},"readme":"# RequireJS skeleton for modern JS libraries.\n[![Build Status](https://secure.travis-ci.org/tkellen/requirejs-library-skeleton.png)](http://travis-ci.org/[tkellen]/[requirejs-library-skeleton])\n\nThis template is a starting point for developing modern javascript modules and libraries. Dependency management is handled by the [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) loader [RequireJS](https://github.com/jrburke/requirejs). Unit testing is implemented with the BDD framework [Jasmine](https://github.com/pivotal/jasmine). Compilation is handled with [r.js](https://github.com/jrburke/r.js) and [almond](https://github.com/jrburke/almond)--the result is a single file with no external dependencies that runs in Node or the browser (with AMD, or as an inline script).\n\n### How to build ([node.js](http://nodejs.org/) is required):\n\n```console\nnode vendor/r.js -o build.js\n```\nThis generates a minified/optimized file under build/app.js.\n\n## Thanks to\n\n- @jrburke for the fantastic tools RequireJS/r.js & almond.\n- @pivotal for the intuitive testing framework Jasmine.\n","_id":"requirejs-library-skeleton@0.1.0","dist":{"shasum":"4d40c4db7670a4f7641c209bc4d5ba5e84b9ae1b","tarball":"http://registry.npmjs.org/requirejs-library-skeleton/-/requirejs-library-skeleton-0.1.0.tgz"},"maintainers":[{"name":"tkellen","email":"tyler@sleekcode.net"}]},"0.2.0":{"name":"requirejs-library-skeleton","description":"RequireJS skeleton for modern JS libraries.","version":"0.2.0","homepage":"http://github.com/tkellen/requirejs-library-skeleton","author":{"name":"Tyler Kellen"},"licenses":[{"type":"MIT","url":"http://github.com/tkellen/requirejs-library-skeleton/blob/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/tkellen/requirejs-library-skeleton.git"},"engines":{"node":">=0.6.0"},"keywords":["requirejs","library","boilerplate","skeleton","template"],"dependencies":{},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.3.11","grunt-contrib":"*","grunt-jasmine-task":"*","requirejs":"*","coffee-script":"*","servedir":"*"},"readme":"# RequireJS skeleton for modern JS libraries.\n[![Build Status](https://secure.travis-ci.org/tkellen/requirejs-library-skeleton.png)](http://travis-ci.org/[tkellen]/[requirejs-library-skeleton])\n\nThis template is a starting point for developing modern javascript modules and libraries. Dependency management is handled by the [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) loader [RequireJS](https://github.com/jrburke/requirejs). Unit testing is implemented with the BDD framework [Jasmine](https://github.com/pivotal/jasmine). Compilation is handled with [r.js](https://github.com/jrburke/r.js) and [almond](https://github.com/jrburke/almond) via node, or using the javascript build tool [grunt](https://github.com/cowboy/grunt)\n\nWhichever method you use, the result is a single file with no external dependencies that runs in Node or the browser (with AMD, or as an inline script).\n\n\n## Building / Testing with Node\n\nKick off the requirejs optimizer by hand:\n```console\nnode vendor/r.js -o build.js\n```\n\nIf your project does not require a browser environment, run Jasmine tests with node.\n```console\nnode test/runner-node\n```\n\nIf your project does require a browser, start a webserver in the root directry.\n```console\nservedir\n```\n...and browse to [http://localhost:8000/test/runner.html](http://localhost:8000/test/runner.html)\n\n\n## Building / Testing / Minifying with Grunt\n\nStart by installing grunt and a few required tasks:\n```console\nnpm install -g grunt\nnpm install\n```\n\nThen, use grunt to run your tests in a headless browser ([PhantomJS](http://www.phantomjs.org/)), or kick off the RequireJS optimizer from any path inside the root of your project using these commands:\n```console\ngrunt test\ngrunt requirejs\n```\n\nTo run tests, optimize and minify your library with a single command, call grunt with no arguments.\n```console\ngrunt\n```\n\n### Headless Browser Testing w/ PhantomJS\n\nIn order for the jasmine task to work properly, [PhantomJS](http://www.phantomjs.org/) must be installed. Unfortunately, PhantomJS cannot be installed automatically via npm or grunt, so you need to install it yourself. There are a number of ways to install PhantomJS.\n\n* [PhantomJS and Mac OS X](http://ariya.ofilabs.com/2012/02/phantomjs-and-mac-os-x.html)\n* [PhantomJS Installation](http://code.google.com/p/phantomjs/wiki/Installation) (PhantomJS wiki)\n\nNote that the `phantomjs` executable needs to be in the system `PATH` for grunt to see it (if you can run \"phantomjs\" at the command line, this task should work).\n\n* [How to set the path and environment variables in Windows](http://www.computerhope.com/issues/ch000549.htm)\n* [Where does $PATH get set in OS X 10.6 Snow Leopard?](http://superuser.com/questions/69130/where-does-path-get-set-in-os-x-10-6-snow-leopard)\n* [How do I change the PATH variable in Linux](https://www.google.com/search?q=How+do+I+change+the+PATH+variable+in+Linux)\n\n\n## Thanks to\n\n- @jrburke for the fantastic tools RequireJS/r.js & almond.\n- @cowboy for all of his hard work on Grunt.\n- @pivotal for the intuitive testing framework Jasmine.\n","_id":"requirejs-library-skeleton@0.2.0","dist":{"shasum":"0ba4c26c99d0e5165d5eccffb94ac079eff90038","tarball":"http://registry.npmjs.org/requirejs-library-skeleton/-/requirejs-library-skeleton-0.2.0.tgz"},"maintainers":[{"name":"tkellen","email":"tyler@sleekcode.net"}]}},"readme":"# RequireJS skeleton for modern JS libraries.\n[![Build Status](https://secure.travis-ci.org/tkellen/requirejs-library-skeleton.png)](http://travis-ci.org/[tkellen]/[requirejs-library-skeleton])\n\nThis template is a starting point for developing modern javascript modules and libraries. Dependency management is handled by the [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) loader [RequireJS](https://github.com/jrburke/requirejs). Unit testing is implemented with the BDD framework [Jasmine](https://github.com/pivotal/jasmine). Compilation is handled with [r.js](https://github.com/jrburke/r.js) and [almond](https://github.com/jrburke/almond)--the result is a single file with no external dependencies that runs in Node or the browser (with AMD, or as an inline script).\n\n### How to build ([node.js](http://nodejs.org/) is required):\n\n```console\nnode vendor/r.js -o build.js\n```\nThis generates a minified/optimized file under build/app.js.\n\n## Thanks to\n\n- @jrburke for the fantastic tools RequireJS/r.js & almond.\n- @pivotal for the intuitive testing framework Jasmine.\n","maintainers":[{"name":"tkellen","email":"tyler@sleekcode.net"}],"time":{"modified":"2012-08-22T15:53:10.860Z","created":"2012-07-06T14:40:03.606Z","0.1.0":"2012-07-06T14:40:07.889Z","0.2.0":"2012-08-22T15:53:10.860Z"},"author":{"name":"Tyler Kellen"},"repository":{"type":"git","url":"git://github.com/tkellen/requirejs-library-skeleton.git"},"_id":"requirejs-library-skeleton","_rev":"1-6dfd3a4cb67ac3d31ee18a6bc76034a1"} ÿdocument-storeÿrequire-kernel¡{"id":"require-kernel","rev":"1-0ddef502257e24846682d7026f2b3116","rev_tree":[{"pos":1,"ids":["0ddef502257e24846682d7026f2b3116",{"status":"available"},[]]}],"rev_map":{"1-0ddef502257e24846682d7026f2b3116":3554},"winningRev":"1-0ddef502257e24846682d7026f2b3116","deleted":false,"seq":3554}ÿby-sequenceÿ0000000000003554éE{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.0","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"c5d1611b05bbaa8b6d1605a30f26c3c92f8b4bb4","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.0.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.1":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.1","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"0143a30d6275980531ecc37a3fc9ff5ee083a7bc","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.1.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.2":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.2","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"c1f895b10a844300f6ca3044bcf8ad5a8078dd6f","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.2.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.3":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.3","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3f6aba2f28ca8c5fc49da4b552c40d0348737e51","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.3.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.4":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.4","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"4b5de152716838a3a929d0ae0934ced414126a35","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.4.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.5":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.5","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"be6d1bce74db802c47cbfd77b967135b8dc6157d","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.5.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]},"1.0.6":{"name":"require-kernel","description":"A reference implementation of a CommonJS module loader.","homepage":"https://github.com/cweider/require-kernel","keywords":["commonjs","require","loader","editor"],"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"dependencies":{},"version":"1.0.6","repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_npmUser":{"name":"cweider","email":"cweider@oofn.net"},"_id":"require-kernel@1.0.6","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"d470d3fe4038165cc431af2c0277676751ad185d","tarball":"http://registry.npmjs.org/require-kernel/-/require-kernel-1.0.6.tgz"},"maintainers":[{"name":"cweider","email":"cweider@oofn.net"}]}},"readme":"# require-kernel #\n\nThis is an implementation of the [CommonJS module standard](http://wiki.commonjs.org/wiki/Modules/1.1) for a browser environment.\n\n## Usage ##\n\nThe kernel is a code fragment that evaluates to an unnamed function.\n\n### Interface ###\n\nModules can be loaded either synchronously and asynchronously:\n\n* `module = require(path)`\n* `require(path1[, path2[, ...]], function (module1[, module2[, ...]]) {})`\n\nThe kernel has the following methods:\n\n* `define`: A method for defining modules. It may be invoked one of several ways. In either case the path is expected to be fully qualified and the module a function with the signature `(require, exports, module)`.\n * `require.define(path, module)`\n * `require.define({path1: module1, path2: module2, path3: module3})`\n* `setGlobalKeyPath`: A string (such as `\"require\"` and `\"namespace.req\"`) that evaluates to the kernel in the global scope. Asynchronous retrieval of modules using JSONP will happen if and only if this path is defined. Default is `undefined`.\n* `setRootURI`: The URI that non-library paths will be requested relative to. Default is `undefined`.\n* `setLibraryURI`: The URI that library paths (i.e. paths that do not match `/^\\.{0,2}\\//`) will be requested relative to. Default is `undefined`.\n* `setRequestMaximum`: The maximum number of concurrent requests. Default is `2`.\n\n## Behavior ##\n\n### JSONP ###\n\nIf a global key path was set for the kernel and the request is allowed to be asynchronous, a JSONP will be used to request the module. The callback parameter sent in the request is the `define` method of `require` (as specified by the global key path).\n\n### Cross Origin Resources ###\n\nJSONP accomplishes CORS, so if such a request is possible to make, it is made, else, if the user agent is capable of such a request, requests to cross origin resources can be made, if not (IE[6,7]), the kernel will attempt to make a request to a mirrored location on the same origin (`http://static.example.com/javascripts/index.js` becomes `http://www.example.com/javascripts/index.js`).\n\n## License ##\n\nReleased to the public domain. In any regions where transfer the public domain is not possible the software is granted under the terms of the MIT License.\n","maintainers":[{"name":"cweider","email":"cweider@oofn.net"}],"time":{"modified":"2012-05-11T02:52:17.687Z","created":"2012-01-17T13:36:28.344Z","1.0.0":"2012-01-17T13:36:29.736Z","1.0.1":"2012-02-06T00:49:51.928Z","1.0.2":"2012-02-15T21:27:01.541Z","1.0.3":"2012-02-16T22:14:47.387Z","1.0.4":"2012-02-29T20:46:36.522Z","1.0.5":"2012-03-07T01:41:32.403Z","1.0.6":"2012-05-11T02:52:17.687Z"},"author":{"name":"Chad Weider","email":"cweider@oofn.net","url":"http://oofn.net"},"repository":{"type":"git","url":"git://github.com/cweider/require-kernel.git"},"_id":"require-kernel","_rev":"1-0ddef502257e24846682d7026f2b3116"}ÿdocument-storeÿrepl-rainbowŸ{"id":"repl-rainbow","rev":"1-86d7e7999094f4ff213f201b8e5a2694","rev_tree":[{"pos":1,"ids":["86d7e7999094f4ff213f201b8e5a2694",{"status":"available"},[]]}],"rev_map":{"1-86d7e7999094f4ff213f201b8e5a2694":3553},"winningRev":"1-86d7e7999094f4ff213f201b8e5a2694","deleted":false,"seq":3553}ÿby-sequenceÿ0000000000003553—^{"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.1","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"repl-rainbow.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.1","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"f45b02434dfe14c98f521113704408dd5db234ad","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.1.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.2":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.2","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"repl-rainbow.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.2","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"6e54063d9f9f36d33a74995aa0ddbbc265ee2a09","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.2.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.4":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.4","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"repl-rainbow.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.4","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"33ee8b968483fd771b4079a3d22b06beb0f80082","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.4.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.5":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.5","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.5","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"a8cbadbbbbb5149754741f4e20d4aa36c19e5813","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.5.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.6":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.6","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.6","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"628bc8e13708054ee3d5a358817f2dc5f351d954","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.6.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.7":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.7","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.7","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"44f8f2c08e48bb97b64a2b4ce07ca87c432b3240","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.7.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.8":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.8","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.8","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"c83190e51565652e8ccb1d5ca9df45d64a3b3530","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.8.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.9":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.0.9","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.0.9","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"632b6969b117277cb2cf0a58ec3bfe459bf2bbb8","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.0.9.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.0":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.1.0","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.1.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"0b1137393e038002862f102abdb5fb0c72dafac0","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.1.0.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.1":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"repl-rainbow","description":"A lib for easily translating and manipulating colors and sets of colors centered around xterm-256 pallette","version":"0.1.1","homepage":"https://github.com/Benvie/repl-rainbow","repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"repl-rainbow@0.1.1","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"6a5cec36fd19d4bb077f0c606269a3ca5573a908","tarball":"http://registry.npmjs.org/repl-rainbow/-/repl-rainbow-0.1.1.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]}},"readme":"# Repl-Rainbow\nHop aboard the rainbow. Have some colors. I found all existing libs out there either not adequate for my needs and usually lacking most of the tools I wanted.\n\n## Goals\n\n* provide easy translating between core color spaces of RGB and HSL and 256 color Ansi\n* translate from any one to any other with ease and terse syntax\n* provide baseline tools for generating sets of colors like gradients and nearest colors\n* transform arrays of colors at at a single time\n\n## Basic Usage\n\nThe api is designed to be very easy to use. The base exports is the Rainbow function which attempts to determine from given inputs what type of color you want.\n\n```javascript\nvar rainbow = require('repl-rainbow');\n\n// explicit\nrainbow('hsl', 180, 1, 0.5);\n\n// guessing from numbers\nrainbow(255,0,0); //rgb\nrainbow(50) //ansi\n\n// arrays work\nrainbow([255,0,0]);\n\n```\n\n## Detailed Usage\n\nAside from the main function there's also a direct function for each. They all have identical methods. RGB has an rgb method that returns itself, for example, for the sake of consistency.\n\nThe differences are:\n\n* __rainbow.RGB__ has `r`, `g`, `b`\n* __rainbow.HSL__ has `h`, `s`, `l`\n* __rainbow.Ansi__ has `code`\n\nThe common api is:\n\n* __rgb()__: return an rgb instance for the color\n* __hsl()__: return an hsl instance for the color\n* __ansi()__: return an ansi instance for the color\n* __hex()__: return the HTML hex code for the color as rgb\n* __closest(n)__: return the n closest colors, using that color space's rules\n* __gradient(c,n)__: returns an array of `n` length with colors interpolating to `c` in that color space\n\nA few bonus extras are avaiable on Ansi types\n\n* __basic(bg)__: convert to the nearest of the basic 16 colors for downgradging. Set `bg` to true to get the bg escape\n* __escape(text, type)__: escapes the text with the full ansi escape sequence for the color. Set `bg` to true for the bg escape\n\n\n## Arrays\n\nThe return type for operations that return sets is `ColorSet`. A ColorSet is just an array with a bit of extra functionality. All the Array functions that return new arrays are wrapped so that you always get back a ColorSet. This allows you to do multiple filters and mappings and still have a ColorSet.\n\n* __hsl()__: maps the ColorSet to another ColorSet where all the values have been converted to hsl's\n* __rgb()__: same for rgb\n* __ansi()__: same for ansi","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"time":{"modified":"2012-04-21T04:19:15.024Z","created":"2012-04-03T00:46:40.683Z","0.0.1":"2012-04-03T00:46:41.729Z","0.0.2":"2012-04-03T00:54:34.714Z","0.0.4":"2012-04-04T15:10:51.811Z","0.0.5":"2012-04-09T10:29:40.389Z","0.0.6":"2012-04-12T20:30:19.601Z","0.0.7":"2012-04-16T02:18:48.586Z","0.0.8":"2012-04-18T09:56:48.580Z","0.0.9":"2012-04-18T11:21:03.046Z","0.1.0":"2012-04-19T06:00:05.871Z","0.1.1":"2012-04-21T04:19:15.024Z"},"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"repository":{"url":"git://github.com/Benvie/repl-rainbow.git"},"_id":"repl-rainbow","_rev":"1-86d7e7999094f4ff213f201b8e5a2694"}'ÿdocument-storeÿrandomstring-extended¨{"id":"randomstring-extended","rev":"1-989cc147227b00f18334b972697ee9c3","rev_tree":[{"pos":1,"ids":["989cc147227b00f18334b972697ee9c3",{"status":"available"},[]]}],"rev_map":{"1-989cc147227b00f18334b972697ee9c3":3552},"winningRev":"1-989cc147227b00f18334b972697ee9c3","deleted":false,"seq":3552}ÿby-sequenceÿ0000000000003552·{"name":"randomstring-extended","description":"A module for generating random strings","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"randomstring-extended","version":"1.0.0","author":{"name":"Jose Luis Rivas","email":"joseluis@eserre.com","url":"http://ghostbar.ath.cx/"},"description":"A module for generating random strings","homepage":"https://github.com/niftylettuce/node.randomstring-extended","repository":{"type":"git","url":"git://github.com/niftylettuce/node.randomstring-extended.git"},"main":"./index","engines":{"node":"*"},"_npmUser":{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"},"_id":"randomstring-extended@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"82f620dee99ba4d916774840c36ecf62f6279086","tarball":"http://registry.npmjs.org/randomstring-extended/-/randomstring-extended-1.0.0.tgz"},"maintainers":[{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"}]}},"readme":"# node.randomstring-extended\n\nThis is based on [node-randomstring](http://github.com/eliaskg/node-randomstring). It added more chars including spaces.\n\n## Installation\n\nTo install randomstring-extended, use [npm](http://github.com/isaacs/npm):\n\n $ npm install randomstring-extended\n\n## Usage\n\n```javascript\nvar randomstring = require(\"randomstring-extended\");\n\nrandomstring.generate();\n// >> \"XwPp9xazJ0ku5CZnlmgAx2Dld8SHkAeT\"\n\nrandomstring.generate(7);\n// >> \"xqm5wXX\"\n```\n\n## LICENSE\n\nnode-randomstring-extended is licensed under the MIT license.\n","maintainers":[{"name":"niftylettuce","email":"nicholasbaugh@gmail.com"}],"time":{"modified":"2012-06-19T02:09:12.989Z","created":"2012-06-19T02:06:38.136Z","1.0.0":"2012-06-19T02:09:12.989Z"},"author":{"name":"Jose Luis Rivas","email":"joseluis@eserre.com","url":"http://ghostbar.ath.cx/"},"repository":{"type":"git","url":"git://github.com/niftylettuce/node.randomstring-extended.git"},"_id":"randomstring-extended","_rev":"1-989cc147227b00f18334b972697ee9c3"}ÿdocument-storeÿproximoš{"id":"proximo","rev":"1-4706090ec2597874e69e4f26cdc17fce","rev_tree":[{"pos":1,"ids":["4706090ec2597874e69e4f26cdc17fce",{"status":"available"},[]]}],"rev_map":{"1-4706090ec2597874e69e4f26cdc17fce":3551},"winningRev":"1-4706090ec2597874e69e4f26cdc17fce","deleted":false,"seq":3551}ÿby-sequenceÿ0000000000003551Æ{"name":"proximo","description":"Proxied model implementation","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"proximo","description":"Proxied model implementation","version":"0.0.1","author":{"nams6¿ùe":"Mattijs Hoitink","email":"mattijs@monkeyandmachine.com"},"homepage":"http://github.com/mattijs/proximo","repository":{"type":"git","url":"git://github.com/mattijs/proximo.git"},"license":"MIT","keywords":["model","proxy","harmony"],"dependencies":{"underscore":"~1.3.3"},"engine":{"node":">= 0.6.19"},"main":"index.js","_npmUser":{"name":"mattijs","email":"mattijs@monkeyandmachine.com"},"_id":"proximo@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e3c948d3bd0fee832bffbabdf97a513ea4cd7995","tarball":"http://registry.npmjs.org/proximo/-/proximo-0.0.1.tgz"},"maintainers":[{"name":"mattijs","email":"mattijs@monkeyandmachine.com"}]}},"readme":"# Proximo\n\nProximo is an experiment to implement Backbone.js' Model class but enhanced with\nthe Harmony Proxy proposal. This allows Model attributes to be accessed like a\nnative JavaScript Object but still enables change events to be fired.\n\n```javascript\nvar m = new Model();\nm.on('change:foo', function(model, value) {\n console.log('Foo changed to ' + value);\n});\n\n// Backbone accessor\nm.set('foo', 'bar');\n// prints \"Foo changed to bar\"\n\n// Proximo accessor\nm.foo = 'baz';\n// prints \"Foo changed to baz\"\n```\n\nProximo uses the Harmony Proxy proposal implemented in the v8 engine. This is available by\ncalling `node` with the `--harmony_proxies` flag. As an alternative the `node-proxy`\nmodule can be installed.\n\nProximo is an experiment and is still being developed. Use at your own risk.\n\n## Install\n\n```\n$ npm install proximo\n```\n\nThe module is tested on node v0.6.19. Other tests will be added soon.\n\n## Shortcomings\n\nThe Harmony API's are not completely settled yet so the implementation is not final. The new \n`Proxy.for` API is not yet implemented in v8 packaged with node v0.6.x. The `iterate` trap\nis also unimplemented as it relies on the Harmony iterator proposal which is also not\navailable in node.\n\n## License\n\nThis module is available under the MIT License. See LICENSE file for full details. \nSome parts of model.js are taken from [backbone.js](http://backbonejs.org) which \nis available under the MIT License.\n","maintainers":[{"name":"mattijs","email":"mattijs@monkeyandmachine.com"}],"time":{"modified":"2012-06-12T20:29:00.863Z","created":"2012-06-12T20:28:59.181Z","0.0.1":"2012-06-12T20:29:00.863Z"},"author":{"name":"Mattijs Hoitink","email":"mattijs@monkeyandmachine.com"},"repository":{"type":"git","url":"git://github.com/mattijs/proximo.git"},"_id":"proximo","_rev":"1-4706090ec2597874e69e4f26cdc17fce"}ÿdocument-storeÿprocfile›{"id":"procfile","rev":"1-431bf4dc269c9c4b38b4ba308c91abd0","rev_tree":[{"pos":1,"ids":["431bf4dc269c9c4b38b4ba308c91abd0",{"status":"available"},[]]}],"rev_map":{"1-431bf4dc269c9c4b38b4ba308c91abd0":3550},"winningRev":"1-431bf4dc269c9c4b38b4ba308c91abd0","deleted":false,"seq":3550}ÿby-sequenceÿ0000000000003550²{"name":"procfile","description":"A simple CLI tool for ensuring that a given node script runs continuously (i.e. forever)","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"procfile","description":"A simple CLI tool for ensuring that a given node script runs continuously (i.e. forever)","version":"0.1.0","author":{"name":"Charlie Robbins","email":"charlie.robbins@gmail.com"},"repository":{"type":"git","url":"git://github.com/indexzero/node-procfile.git"},"keywords":["tools","procfile","sysadmin"],"devDependencies":{"async":"0.1.x","vows":"0.5.x"},"main":"./lib/procfile","scripts":{"test":"vows test/*-test.js --spec"},"engines":{"node":">= 0.4.0"},"_id":"procfile@0.1.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e83887a0a92637fe6eda3eeb3bd354a4cd513f84","tarball":"http://registry.npmjs.org/procfile/-/procfile-0.1.0.tgz"}},"0.1.1":{"name":"procfile","description":"A simple CLI tool for ensuring that a given node script runs continuously (i.e. forever)","version":"0.1.1","author":{"name":"Charlie Robbins","email":"charlie.robbins@gmail.com"},"repository":{"type":"git","url":"http://github.com/indexzero/node-procfile.git"},"keywords":["tools","procfile","sysadmin"],"devDependencies":{"async":"0.1.x","vows":"0.5.x"},"main":"./lib/procfile","scripts":{"test":"vows test/*-test.js --spec"},"engines":{"node":">= 0.4.0"},"readme":"# node-procfile\n\nA Procfile parser for node.js.\n\n## Installation\n\n### Installing npm (node package manager)\n```\n curl http://npmjs.org/install.sh | sh\n```\n\n### Installing node-procfile\n```\n [sudo] npm install procfile\n```\n\n## Usage\nThere are two simple methods when using `node-procfile`: `.parse()` and `.stringify()`. If you are familiar with using the native `JSON` methods in Javascript, there is nothing new about the API.\n\n``` js\n var fs = require('fs'),\n procfile = require('procfile');\n \n var data = fs.readFileSync('/path/to/procfile').toString(),\n proc = procfile.parse(data);\n \n console.dir(proc)\n```\n\nThis outputs the results of the procfile parse:\n\n``` js\n {\n web: {\n command: 'node',\n options: [ 'myapp.js', '-p', '80', '--some-option' ]\n },\n worker: {\n command: 'node',\n options: [ 'myworker.js', '--other-option' ]\n }\n }\n```\n\n## Run Tests\n``` bash\n $ vows --spec\n```\n\n#### Author: [Charlie Robbins][0]\n\n[0]: http://nodejitsu.com","_id":"procfile@0.1.1","dist":{"shasum":"7393f5ac171b13213143b355373cc690b058b22f","tarball":"http://registry.npmjs.org/procfile/-/procfile-0.1.1.tgz"},"_npmVersion":"1.1.53","_npmUser":{"name":"indexzero","email":"charlie.robbins@gmail.com"},"maintainers":[{"name":"indexzero","email":"charlie.robbins@gmail.com"}]}},"maintainers":[{"name":"indexzero","email":"charlie.robbins@gmail.com"}],"time":{"modified":"2012-08-22T21:35:36.361Z","created":"2011-06-13T09:10:04.346Z","0.1.0":"2011-06-13T09:10:04.608Z","0.1.1":"2012-08-22T21:17:32.309Z"},"author":{"name":"Charlie Robbins","email":"charlie.robbins@gmail.com"},"repository":{"type":"git","url":"http://github.com/indexzero/node-procfile.git"},"_id":"procfile","_rev":"1-431bf4dc269c9c4b38b4ba308c91abd0"}ÿdocument-storeÿpreforkš{"id":"prefork","rev":"1-06b398062a1543b37c1a93864fdd4d1a","rev_tree":[{"pos":1,"ids":["06b398062a1543b37c1a93864fdd4d1a",{"status":"available"},[]]}],"rev_map":{"1-06b398062a1543b37c1a93864fdd4d1a":3549},"winningRev":"1-06b398062a1543b37c1a93864fdd4d1a","deleted":false,"seq":3549}ÿby-sequenceÿ0000000000003549){"name":"prefork","description":"Start a node process in the background.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"AvianFlu","email":"charlie@charlieistheman.com"},"name":"prefork","description":"Start a node process in the background.","version":"0.1.0","homepage":"https://github.com/AvianFlu/node-prefork","repository":{"type":"git","url":"git://github.com/AvianFlu/node-prefork.git"},"main":"lib/prefork.js","engines":{"node":">=0.4 <0.9"},"_npmUser":{"name":"avianflu","email":"charlie@charlieistheman.com"},"_id":"prefork@0.1.0","scripts":{"install":"node-gyp rebuild"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4ac51a08c8b19aa1523fb68bd33e7f50dadbf951","tarball":"http://registry.npmjs.org/prefork/-/prefork-0.1.0.tgz"},"maintainers":[{"name":"avianflu","email":"charlie@charlieistheman.com"}]}},"readme":"# node-prefork\n\n## Start a node.js process in the background\n\n`node-prefork` seeks to provide an easy API for starting a node.js process in\nthe background, independent of any controlling terminal session.\n\n## Limitations\n\nThis module will not currently work on Windows, at all - but it will, soon.\nWe're working on it.\n\nThis module is called `prefork` for a reason. When using `fork(2)` on a unix\nsystem, the current process is cloned, file descriptors and all - however, the\nnew child process is single-threaded. If you open a file asynchronously in\nnode.js, it gets opened by a thread pool; if you fork after doing this, you\ncannot rely upon that file descriptor to still exist, since the new forked\nchild is now single-threaded.\n\nThis module does not provide any sort of process-watching functionality. While\nit could certainly be used to build a process watcher, your application is on\nits own after being started with `prefork()`.\n\nThis leaves us with a few simple rules:\n\n- Use `prefork()` as close to the start of your program as is possible.\n- If you need to perform I/O beforehand, do it synchronously.\n- Nothing created on the thread pool before `prefork()` is called will reliably\n exist afterwards.\n- Without a separate solution to restart your process when it crashes, there's\n no guarantee of uptime. If your process is stable, it could run for months,\n but the first time it crashes, it's done.\n\nIf these rules are followed, everything should be nice and stable.\n\n## Installation\n\nInstallation is easy via `npm`:\n\n npm install prefork\n\nIf you want the git repo:\n\n git clone https://github.com/AvianFlu/node-prefork\n cd node-prefork\n node-gyp configure build\n\nIf you do not have `node-gyp` installed, simply substitute `node-waf` in the\ncommand above.\n\n## Usage\n\nUsing `prefork` is easy - just require it, and call it before your main\napplication logic starts.\n\n```js\n\nvar http = require('http'),\n prefork = require('prefork');\n\nvar pid = prefork();\n\nhttp.createServer(function (req, res) {\n res.end('I am a backgrounded HTTP server, running as ' + pid);\n}).listen(8080);\n\n```\n`prefork()` will perform all necessary actions to background your process, and\nreturn the new `pid`.\n\n### stdio redirection\n\n`prefork` also allows for various configurations of redirected `stdio`.\n\nTo simply log all output to a file:\n\n```js\n\nvar pid = prefork({\n stdout: 'output.log'\n});\n\nconsole.log('Started successfully, new pid is %d', pid);\n\n```\n\nIf only `stdout` is provided, `stderr` will be redirected to the same place.\nTo separate `stderr` from `stdout`, provide a `stderr` option as well.\n\n```js\n\nprefork({\n stdout: 'output.log',\n stderr: 'errors.log'\n});\n\n```\n\nIf a `stdin` option is provided, then the file is opened, read, and its data\nbecomes available as data events on the `process.stdin` stream. This simple \nexample would log the data from `inputfile` to the process' new `stdout`, which\nin this case is redirected to `outputfile`.\n\n```js\n\nprefork({\n stdin: 'inputfile',\n stdout: 'outputfile'\n});\n\nprocess.stdin.resume();\nprocess.stdin.on('data', function (data) {\n console.log(data.toString());\n});\n\n```\n\n### custom fds\n\nIf you're feeling adventurous, an array of integer file descriptors can also be\npassed to `prefork()`. Note that this will override any filename options that\nhave been passed - note also that passing random integers that aren't real\nfile descriptors is not a good idea.\n\n```js\nvar fd = require('fs').openSync('output.log', 'a');\n\nprefork({\n customFds: [ -1, fd, -1 ]\n});\n\n```\n\nIf a value of `-1` is passed for any of the file descriptors, as in the example\nabove, that file descriptor will be nulled. This example nulls `stdin` and\n`stderr`, but redirects `stdout` to a file.\n\n\n","maintainers":[{"name":"avianflu","email":"charlie@charlieistheman.com"}],"time":{"modified":"2012-05-17T18:56:01.800Z","created":"2012-05-17T18:55:59.939Z","0.1.0":"2012-05-17T18:56:01.800Z"},"author":{"name":"AvianFlu","email":"charlie@charlieistheman.com"},"repository":{"type":"git","url":"git://github.com/AvianFlu/node-prefork.git"},"_id":"prefork","_rev":"1-06b398062a1543b37c1a93864fdd4d1a"}ÿdocument-storeÿprefix-triež{"id":"prefix-trie","rev":"1-98de8bfbe015bb20889a0bcf60b348bf","rev_tree":[{"pos":1,"ids":["98de8bfbe015bb20889a0bcf60b348bf",{"status":"available"},[]]}],"rev_map":{"1-98de8bfbe015bb20889a0bcf60b348bf":3548},"winningRev":"1-98de8bfbe015bb20889a0bcf60b348bf","deleted":false,"seq":3548}ÿby-sequenceÿ0000000000003548½ {"name":"prefix-trie","description":"Super simple prefix-trie implementation for fast autocomplete.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Matt Mueller","email":"mattmuelle@gmail.com"},"name":"prefix-trie","description":"Super simple prefix-trie implementation for fast autocomplete.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/MatthewMueller/prefix-trie.git"},"main":"trie.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"mattmueller","email":"mattmuelle@gmail.com"},"_id":"prefix-trie@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"eff7a97f78f895adc64eb769050dc4bff2dc7678","tarball":"http://registry.npmjs.org/prefix-trie/-/prefix-trie-0.0.1.tgz"},"readme":"","maintainers":[{"name":"mattmueller","email":"mattmuelle@gmail.com"}]}},"readme":"","maintainers":[{"name":"mattmueller","email":"mattmuelle@gmail.com"}],"time":{"modified":"2012-06-25T02:02:28.927Z","created":"2012-06-25T02:02:27.535Z","0.0.1":"2012-06-25T02:02:28.927Z"},"author":{"name":"Matt Mueller","email":"mattmuelle@gmail.com"},"repository":{"type":"git","url":"git://github.com/MatthewMueller/prefix-trie.git"},"_id":"prefix-trie","_rev":"1-98de8bfbe015bb20889a0bcf60b348bf"}ÿdocument-storeÿpng-sync›{"id":"png-sync","rev":"1-2ec468489f74729e94e592313436f745","rev_tree":[{"pos":1,"ids":["2ec468489f74729e94e592313436f745",{"status":"available"},[]]}],"rev_map":{"1-2ec468489f74729e94e592313436f745":3547},"winningRev":"1-2ec468489f74729e94e592313436f745","deleted":false,"seq":3547}ÿby-sequenceÿ0000000000003547Ž4{"name":"png-sync","description":"Same as node-png except it's sync and compiles on windows with node 0.6","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"png-sync","version":"1.0.0","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"scripts":{"install":"node-gyp configure build"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c33a0eeb7654fcaeb7e4de19ca9d0a458ae4b62d","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.0.0.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]},"1.0.1":{"name":"png-sync","version":"1.0.1","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"scripts":{"install":"node-gyp configure && node-gyp build"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"adbdc0e3435813e194a11e3aa6dabc7a8f4ff0d3","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.0.1.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]},"1.0.2":{"name":"png-sync","version":"1.0.2","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"scripts":{"install":"node-gyp configure && node-gyp build"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3566f01138b96386040348ebdc76abf32e319c4b","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.0.2.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]},"1.0.3":{"name":"png-sync","version":"1.0.3","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"scripts":{"install":"node-gyp configure && node-gyp build"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"03929bea2032986e2c2712ded90e5438569c9411","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.0.3.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]},"1.0.4":{"name":"png-sync","version":"1.0.4","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"scripts":{"install":"node-gyp configure && node-gyp build"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.0.4","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f9de5ff2ed565dd879286cc630066c888ef583d2","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.0.4.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]},"1.1.0":{"name":"png-sync","version":"1.1.0","main":"./build/Release/binding","description":"Same as node-png except it's sync and compiles on windows with node 0.6","keywords":["png","rgb","rgba","image","picture","encode"],"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"license":{"type":"MIT"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"engines":{"node":">=0.6.0"},"_npmUser":{"name":"pkrumins","email":"peteris.krumins@gmail.com"},"_id":"png-sync@1.1.0","scripts":{"install":"node-gyp rebuild"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"90824a5755ae59631469d0cee15166e44c214f00","tarball":"http://registry.npmjs.org/png-sync/-/png-sync-1.1.0.tgz"},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}]}},"readme":"","maintainers":[{"name":"pkrumins","email":"peteris.krumins@gmail.com"}],"time":{"modified":"2012-05-17T22:13:05.713Z","created":"2012-04-01T21:31:58.069Z","1.0.0":"2012-04-01T21:32:00.553Z","1.0.1":"2012-04-06T20:37:32.839Z","1.0.2":"2012-04-12T19:24:57.675Z","1.0.3":"2012-05-03T21:18:08.072Z","1.0.4":"2012-05-03T21:23:08.623Z","1.1.0":"2012-05-17T22:13:05.713Z"},"author":{"name":"Peteris Krumins","email":"peteris.krumins@gmail.com","url":"http://www.catonmat.net"},"repository":{"type":"git","url":"git://github.com/pkrumins/node-png-sync.git"},"_id":"png-sync","_rev":"1-2ec468489f74729e94e592313436f745"}ÿdocument-storeÿpip–{"id":"pip","rev":"1-9dc419131b51ae4322fd6f195418145f","rev_tree":[{"pos":1,"ids":["9dc419131b51ae4322fd6f195418145f",{"status":"available"},[]]}],"rev_map":{"1-9dc419131b51ae4322fd6f195418145f":3546},"winningRev":"1-9dc419131b51ae4322fd6f195418145f","deleted":false,"seq":3546}ÿby-sequenceÿ0000000000003546Ñ{"name":"pip","description":"Freckle CLI tool using node.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"pip","description":"Freckle CLI tool using node.js","keywords":["freckle","cli","tools"],"author":{"name":"sirkitree","email":"sirkitree@gmail.com"},"version":"0.0.1","repository":{"type":"git","url":"git://github.com/sirkitree/pip.git"},"engines":{"node":"*"},"dependencies":{"optimist":">= 0.1.5","freckle":">= 0.0.1"},"bin":{"pip":"./lib/cli.js"},"_npmUser":{"name":"sirkitree","email":"sirkitree@gmail.com"},"_id":"pip@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"cf0b55a81ecbbf47f85045ccb5fe9afa05a7269e","tarball":"http://registry.npmjs.org/pip/-/pip-0.0.1.tgz"},"maintainers":[{"name":"sirkitree","email":"sirkitree@gmail.com"}],"directories":{}}},"readme":"# Pip\n_'Cuz Pippi has freckles._\n\nBasic command line tool for logging hours in [let's freckle](http://letsfreckle.com). Uses the excellent [freckle api bindings](https://github.com/tbranyen/nodefreckle) from the Node.js library created by Tim Branyan [@tbranyen](http://twitter.com/tbranyen).\n\n## Setup\nCreate a ~/.freckle file using the config.json file as a template. Modify each variable to your specific information.\n\n## Use\n```\nUsage: pip [command] [options]\n\n[Commands]\nlist List projects associated with your subdomain. This will give you a list of project names and their IDs which you need for logging your entries.\n ex: pip list\n\nlog Log time entries using various options.\n ex: pip log -p 101814 -m \"quick update\" -t 15m\n\n[Options]\n-h, --help Display this help page.\n ex: pip -h\n\n-t, --time Time entry in freckle specified format.\n ex: pip -t 15m\n ex: pip -t 1.5h\n\n-p, --project The project ID.\n ex: pip -p 101814\n\n-m, --message Post a message to yammer\n ex: pip -m \"I'm working on pip\"\n ex: pip -m \"tag, tag, tag\"\n\n-d, --date Optional date formated in YYYY-MM-DD. Defaults to today.\n ex: pip -d 2012-07-20\n\n-u, --user Optional user to log time for. Defaults to user in config.json.\n ex: pip -u apitest@letsfreckle.com\n```\n\n## Todo\n* I'd like to have tab completion for project names and tags.\n","maintainers":[{"name":"sirkitree","email":"sirkitree@gmail.com"}],"time":{"modified":"2012-08-02T13:44:35.177Z","created":"2012-07-24T01:45:37.290Z","0.0.1":"2012-07-24T01:45:38.781Z","0.0.2":"2012-07-24T02:21:34.316Z"},"author":{"name":"sirkitree","email":"sirkitree@gmail.com"},"repository":{"type":"git","url":"git://github.com/sirkitree/pip.git"},"users":{"fgribreau":true},"_id":"pip","_rev":"1-9dc419131b51ae4322fd6f195418145f"}ÿdocument-storeÿpickle™{"id":"pickle","rev":"1-63ed4a5b28499cd23b8e3e447fcfa534","rev_tree":[{"pos":1,"ids":["63ed4a5b28499cd23b8e3e447fcfa534",{"status":"available"},[]]}],"rev_map":{"1-63ed4a5b28499cd23b8e3e447fcfa534":3545},"winningRev":"1-63ed4a5b28499cd23b8e3e447fcfa534","deleted":false,"seq":3545}ÿby-sequenceÿ0000000000003545¡{"name":"pickle","description":"A Python pickled object <-> JSON transport. Writing/reading Python pickled objects to Javascript objects.","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"pickle","description":"A Python pickled object <-> JSON transport. Writing/reading Python pickled objects to Javascript objects.","version":"0.2.0","repository":{"type":"git","url":"git://github.com/mattrobenolt/node_pickle.git"},"author":{"name":"Matt Robenolt"},"main":"./lib/pickle","directories":{"lib":"lib"},"engines":{"node":">=0.4.0"},"_npmUser":{"name":"mattrobenolt","email":"matt@ydekproductions.com"},"_id":"pickle@0.2.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1b63adda34fbf6bc36727223d6bb2ddb9bd14106","tarball":"http://registry.npmjs.org/pickle/-/pickle-0.2.0.tgz"},"maintainers":[{"name":"mattrobenolt","email":"matt@ydekproductions.com"}]}},"readme":"# node_pickle\n \n A really, admittedly, lazy interface into Python for pickling/unpickling an object.\n The interface mimics Python's pickle.dumps & pickle.loads. \n \n var pickle = require('./lib/pickle');\n \n pickle.dumps({hello: \"world\"}, function(pickled)\n {\n console.log(\"pickled:\", pickled);\n pickle.loads(pickled, function(original)\n {\n console.log(\"original:\", original);\n });\n });\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 Matt Robenolt <root@drund.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"mattrobenolt","email":"matt@ydekproductions.com"}],"time":{"modified":"2012-05-17T20:18:12.077Z","created":"2012-05-17T20:18:10.840Z","0.2.0":"2012-05-17T20:18:12.077Z"},"author":{"name":"Matt Robenolt"},"repository":{"type":"git","url":"git://github.com/mattrobenolt/node_pickle.git"},"_id":"pickle","_rev":"1-63ed4a5b28499cd23b8e3e447fcfa534"}ÿdocument-storeÿpath-routerž{"id":"path-router","rev":"1-8047f90337ef355db231ebfa4a874e4e","rev_tree":[{"pos":1,"ids":["8047f90337ef355db231ebfa4a874e4e",{"status":"available"},[]]}],"rev_map":{"1-8047f90337ef355db231ebfa4a874e4e":3544},"winningRev":"1-8047f90337ef355db231ebfa4a874e4e","deleted":false,"seq":3544}ÿby-sequenceÿ0000000000003544øM{"name":"path-router","description":"Calling functions using path-like strings","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8934bd7d13f88a6661982f02b5dcb7f3a1255aa1","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.1":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6df43ebd00a727f136d938f57eb658cb8a4b4d76","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.2":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0d09d0f8a7c09704235bce551337df3e88d808b5","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.3":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.3","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"955eadbb730b7be65b81adc523ce924e9d2fe69e","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.3.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.4":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.4","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.4","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8d9d13ea956ff1d1ed730018dd534c8276c24918","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.4.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.1.5":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.1.5","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.1.5","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6491271fb50c6ae09649a2852a49a194e496976f","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.1.5.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.0":{"name":"path-router","description":"Calling functions using path-like strings","main":"./build/router.js","version":"0.2.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c ‚³aù-o build src/router.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.2.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"2d9301b03e108bf40d8f26d69a46049d45c3a417","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.2.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.1":{"name":"path-router","description":"Calling functions using path-like strings","main":"./lib/router.js","version":"0.2.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/protoplast.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.2.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"4c3cc0ddd41fd97a19c11341469b863aa96ea9a5","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.2.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.2":{"name":"path-router","description":"Calling functions using path-like strings","main":"./lib/router.js","version":"0.2.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/protoplast.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.2.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"efff0183400bb31dd875ff909bbd3d71076db71b","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.2.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.3":{"name":"path-router","description":"Calling functions using path-like strings","main":"./lib/router.js","version":"0.2.3","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/protoplast.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.2.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"3d2bfd8f7197f096e54dd48fdbf2ea5ffdf0e492","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.2.3.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.4":{"name":"path-router","description":"Calling functions using path-like strings","main":"./lib/router.js","version":"0.2.4","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/path-router.git"},"engines":{"node":">=0.6.0"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o lib src"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"path-router@0.2.4","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"983a608c495b8ddd4610a2e1c953fd651d78dcd5","tarball":"http://registry.npmjs.org/path-router/-/path-router-0.2.4.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]}},"readme":"path-router\n===========","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}],"time":{"modified":"2012-06-29T20:33:46.853Z","created":"2012-06-21T16:20:40.732Z","0.1.0":"2012-06-21T16:20:42.424Z","0.1.1":"2012-06-21T16:27:04.973Z","0.1.2":"2012-06-21T16:32:13.003Z","0.1.3":"2012-06-21T16:36:46.613Z","0.1.4":"2012-06-21T17:50:11.428Z","0.1.5":"2012-06-21T17:51:45.220Z","0.2.0":"2012-06-27T10:18:30.095Z","0.2.1":"2012-06-29T20:26:30.018Z","0.2.2":"2012-06-29T20:29:08.567Z","0.2.3":"2012-06-29T20:29:55.986Z","0.2.4":"2012-06-29T20:33:46.853Z"},"author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/path-router.git"},"_id":"path-router","_rev":"1-8047f90337ef355db231ebfa4a874e4e"}ÿdocument-storeÿpatchy™{"id":"patchy","rev":"1-3f98075adedd2ebd1faf1e1abb990125","rev_tree":[{"pos":1,"ids":["3f98075adedd2ebd1faf1e1abb990125",{"status":"available"},[]]}],"rev_map":{"1-3f98075adedd2ebd1faf1e1abb990125":3543},"winningRev":"1-3f98075adedd2ebd1faf1e1abb990125","deleted":false,"seq":3543}ÿby-sequenceÿ0000000000003543Ž{"name":"patchy","description":"An abstraction layer for patching using DiffMatchPatch","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"patchy","description":"An abstraction layer for patching using DiffMatchPatch","keywords":["diffmatchpatch","versioning","api"],"version":"0.0.1","homepage":"https://CharlotteGore@github.com/CharlotteGore/Patchy.git","author":{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"},"contributors":[{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"}],"dependencies":{"base-framework":"1.0.x","underscore":"1.3.x"},"devDependencies":{"mocha":"*","should":"*"},"main":"lib/patchy","directories":{"lib":"lib"},"repository":{"type":"git","url":"git://github.com/CharlotteGore/Patchy.git"},"engines":{"node":"*"},"_npmUser":{"name":"CharlotteGore","email":"conspiracygore@gmail.com"},"_id":"patchy@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"1ff21db4a2bfa8f7eec54d4e4ac6bf3c8197f240","tarball":"http://registry.npmjs.org/patchy/-/patchy-0.0.1.tgz"},"maintainers":[{"name":"CharlotteGore","email":"conspiracygore@gmail.com"}]}},"readme":"#Patchy\n\n## Intro\n\nPatchy uses Google's DiffMatchPatch code to provide two basic, easy to use methods:\n\n### The Code\n\nTo install\n\n\tnpm install patchy\n\tcd node_modules/patchy\n\tnpm install\n\nTo use\n\n\t// get a patchy object\n\tvar patchy = require('patchy');\n\n\t// make a patch: makePatch( original_string, new_string ); \n\tpatchy.makePatch('', 'Hello world'); // returns '@@ -0,0 +1,11 @@\\n+Hello world\\n'\n\n\t// apply a patch: applyPatch( original_string, patch_string );\n\tpatchy.applyPatch('', '@@ -0,0 +1,11 @@\\n+Hello world\\n'); // returns 'Hello world'\n\n\t// apply an array of patches: applyPatch(original_string, array_of_patch_strings );\n\tpatchy.applyPatch('', [\n\t\t'@@ -0,0 +1,11 @@\\n+Hello world\\n',\n\t\t'@@ -1,9 +1,17 @@\\n-Hello\\n+Goodbye cruel\\n wor\\n',\n\t\t'@@ -12,8 +12,24 @@\\n el world\\n+, we\\'ll miss you\\n'\n\t]);\n\t// returns \"Goodbye cruel world, we'll miss you\"\n\n### Run the tests\n\nYou need mocha and should.js. Google's DiffMatchPatch is extensively unit-tested so these tests merely\nconfirm that patchy isn't adding or removing anything\n\n\tmake test\n","maintainers":[{"name":"CharlotteGore","email":"conspiracygore@gmail.com"}],"time":{"modified":"2012-04-21T17:19:45.634Z","created":"2012-04-21T17:19:42.697Z","0.0.1":"2012-04-21T17:19:45.634Z"},"author":{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"},"repository":{"type":"git","url":"git://github.com/CharlotteGore/Patchy.git"},"_id":"patchy","_rev":"1-3f98075adedd2ebd1faf1e1abb990125"}ÿdocument-storeÿpat–{"id":"pat","rev":"1-d46fafec82c5f83d88e61f5f0d7d3676","rev_tree":[{"pos":1,"ids":["d46fafec82c5f83d88e61f5f0d7d3676",{"status":"available"},[]]}],"rev_map":{"1-d46fafec82c5f83d88e61f5f0d7d3676":3542},"winningRev":"1-d46fafec82c5f83d88e61f5f0d7d3676","deleted":false,"seq":3542}ÿby-sequenceÿ0000000000003542G{"name":"pat","description":"Formats data described by format strings","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"pat","description":"Formats data described by format strings","version":"0.0.1","author":{"name":"Michael Pecherstorfer","email":"michael.pecherstorfer@gmx.at"},"repository":{"type":"git","url":"https://github.com/mpecherstorfer/pat"},"main":"./lib/pat.js","keywords":["format","formatter","formatstring","format specifier","java.util.Formatter","sprintf","strftime","string.format"],"devDependencies":{"yuidocjs":"0.3.x","mocha":"1.2.x","expect.js":"0.1.x","sinon":"1.3.x","sinon-expect":"0.1.x","node-inspector":"0.2.x","requirejs":"2.0.x"},"engines":{"node":"*"},"readme":"#pat\nA data formatter. Data to be formatted is described by format specifiers of a\ncertain flavor. Currently supported flavors:\n\n+ [Java](https://github.com/mpecherstorfer/pat/blob/master/lib/flavors/java.md) (java.util.Formatter)\n\n##Node environment\n### Installation\n\n $ npm install pat\n\n### Usage\n\n var pat = require('pat'),\n fmt = pat.Formatter.format,\n localizedDateString;\n\n //Optionally set a culture and/or a flavor.\n //Default flavor is 'java', default culture 'enUS'.\n pat.Formatter.options({\n cultureId: 'deAT'\n });\n\n localizedDateString = fmt(\n 'Aktuelles Datum: %1$#tA, %1$#te. %1$#tB %1$#tY, %1$#tT',\n new Date());\n\n## Browser environment: AMD\n\n //Optionally configure require\n require.config({\n //Default module directory, relative to the file including require.js\n baseUrl: 'js/lib',\n //Specific module directories, relative to baseUrl\n paths: {\n pat: 'pat/lib'\n }\n });\n //Include pat and format...\n require(['pat/pat'], function(pat) {\n var fmt = pat.Formatter.format,\n localizedDateString;\n \n //Use default culture (en-US) and default flavor (java)\n localizedDateString = fmt('Current date: %#tc', new Date());\n console.log(localizedDateString);\n \n //Specific culture\n pat.Formatter.options({\n cultureId: 'deAT'\n }, function() {\n localizedDateString = fmt(\n 'Aktuelles Datum: %1$#tA, %1$#te. %1$#tB %1$#tY, %1$#tT',\n new Date());\n console.log(localizedDateString);\n });\n });\n\n## Browser environment: global scope\nInclude the cultures and flavors to use (any order). Make sure to include pat.js\nafter all the culture and flavor scripts.\n\n \n \n \n \n\n+ If a single culture file is included, that culture is used as the default culture.\nWhen several culture files are included, the default culture is 'en-US' or, if not\nincluded, the culture represented by the first included culture file.\n\n+ If a single flavor file is included, that flavor is used as the default flavor.\nWhen several flavor files are included, the default flavor is 'java' or, if not\nincluded, the flavor represented by the first included flavor file.\n\n## Multiple formatters\nTo create additional formatters apply Formatter as a constructor function:\n\n fmt = new Formatter();\n fmt.options({ cultureId: 'deAT' });\n Formatter.format(...) //Default formatter instance\n fmt.format(...) //Specific instance\n\n## Formatter options\nGetter/setter: ```Formatter.options()``` or ```formatterInstance.options()```\n\nThe setter expects an object with one or more of the following properties:\n\n+ ```cultureId```: Id of the culture module to use, defaults to ```'enUS'```.\n+ ```flavorId```: Id of the flavor module to use, defaults to ```'java'```.\n+ ```lineSeparator```: Line separator to use when parsing the line separator format\n specifier (e.g. '%n'). Defaults to '\\n'.\n\n## Flavor documentation\n[Java flavored format specifiers](https://github.com/mpecherstorfer/pat/blob/master/lib/flavors/java.md)\n\n","_id":"pat@0.0.1","dist":{"shasum":"9ecffae84087b6d8b621f24451adaa747805e97b","tarball":"http://registry.npmjs.org/pat/-/pat-0.0.1.tgz"},"maintainers":[{"name":"mpecherstorfer","email":"michael.pecherstorfer@gmx.at"}]}},"readme":"#pat\nA data formatter. Data to be formatted is described by format specifiers of a\ncertain flavor. Currently supported flavors:\n\n+ [Java](https://github.com/mpecherstorfer/pat/blob/master/lib/flavors/java.md) (java.util.Formatter)\n\n##Node environment\n### Installation\n\n $ npm install pat\n\n### Usage\n\n var pat = require('pat'),\n fmt = pat.Formatter.format,\n localizedDateString;\n\n //Optionally set a culture and/or a flavor.\n //Default flavor is 'java', default culture 'enUS'.\n pat.Formatter.options({\n cultureId: 'deAT'\n });\n\n localizedDateString = fmt(\n 'Aktuelles Datum: %1$#tA, %1$#te. %1$#tB %1$#tY, %1$#tT',\n new Date());\n\n## Browser environment: AMD\n\n //Optionally configure require\n require.config({\n //Default module directory, relative to the file including require.js\n baseUrl: 'js/lib',\n //Specific module directories, relative to baseUrl\n paths: {\n pat: 'pat/lib'\n }\n });\n //Include pat and format...\n require(['pat/pat'], function(pat) {\n var fmt = pat.Formatter.format,\n localizedDateString;\n \n //Use default culture (en-US) and default flavor (java)\n localizedDateString = fmt('Current date: %#tc', new Date());\n console.log(localizedDateString);\n \n //Specific culture\n pat.Formatter.options({\n cultureId: 'deAT'\n }, function() {\n localizedDateString = fmt(\n 'Aktuelles Datum: %1$#tA, %1$#te. %1$#tB %1$#tY, %1$#tT',\n new Date());\n console.log(localizedDateString);\n });\n });\n\n## Browser environment: global scope\nInclude the cultures and flavors to use (any order). Make sure to include pat.js\nafter all the culture and flavor scripts.\n\n \n \n \n \n\n+ If a single culture file is included, that culture is used as the default culture.\nWhen several culture files are included, the default culture is 'en-US' or, if not\nincluded, the culture represented by the first included culture file.\n\n+ If a single flavor file is included, that flavor is used as the default flavor.\nWhen several flavor files are included, the default flavor is 'java' or, if not\nincluded, the flavor represented by the first included flavor file.\n\n## Multiple formatters\nTo create additional formatters apply Formatter as a constructor function:\n\n fmt = new Formatter();\n fmt.options({ cultureId: 'deAT' });\n Formatter.format(...) //Default formatter instance\n fmt.format(...) //Specific instance\n\n## Formatter options\nGetter/setter: ```Formatter.options()``` or ```formatterInstance.options()```\n\nThe setter expects an object with one or more of the following properties:\n\n+ ```cultureId```: Id of the culture module to use, defaults to ```'enUS'```.\n+ ```flavorId```: Id of the flavor module to use, defaults to ```'java'```.\n+ ```lineSeparator```: Line separator to use when parsing the line separator format\n specifier (e.g. '%n'). Defaults to '\\n'.\n\n## Flavor documentation\n[Java flavored format specifiers](https://github.com/mpecherstorfer/pat/blob/master/lib/flavors/java.md)\n\n","maintainers":[{"name":"mpecherstorfer","email":"michael.pecherstorfer@gmx.at"}],"time":{"modified":"2012-07-22T21:40:08.475Z","created":"2012-07-22T21:40:05.559Z","0.0.1":"2012-07-22T21:40:08.475Z"},"author":{"name":"Michael Pecherstorfer","email":"michael.pecherstorfer@gmx.at"},"repository":{"type":"git","url":"https://github.com/mpecherstorfer/pat"},"_id":"pat","_rev":"1-d46fafec82c5f83d88e61f5f0d7d3676"}ÿdocument-storeÿparadoxš{"id":"paradox","rev":"1-ab82b1ff406ed8ff1ec83eed7feaca9c","rev_tree":[{"pos":1,"ids":["ab82b1ff406ed8ff1ec83eed7feaca9c",{"status":"available"},[]]}],"rev_map":{"1-ab82b1ff406ed8ff1ec83eed7feaca9c":3541},"winningRev":"1-ab82b1ff406ed8ff1ec83eed7feaca9c","deleted":false,"seq":3541}ÿby-sequenceÿ0000000000003541Å{"name":"paradox","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"paradox","version":"0.0.1","main":"index.js","_npmUser":{"name":"joe-io","email":"joe.ward@mac.com"},"_id":"paradox@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"0d8b212df19426cca483dbebd8170263c26c9c3a","tarball":"http://registry.npmjs.org/paradox/-/paradox-0.0.1.tgz"},"readme":"","maintainers":[{"name":"joe-io","email":"joe.ward@mac.com"}]}},"readme":"","maintainers":[{"name":"joe-io","email":"joe.ward@mac.com"}],"time":{"modified":"2012-03-21T23:36:57.092Z","created":"2012-03-21T23:36:55.452Z","0.0.1":"2012-03-21T23:36:57.092Z"},"_id":"paradox","_rev":"1-ab82b1ff406ed8ff1ec83eed7feaca9c"}ÿdocument-storeÿowldoc™{"id":"owldoc","rev":"1-4fe85b5140c48cfedacc3c3d233d0bc5","rev_tree":[{"pos":1,"ids":["4fe85b5140c48cfedacc3c3d233d0bc5",{"status":"available"},[]]}],"rev_map":{"1-4fe85b5140c48cfedacc3c3d233d0bc5":3540},"winningRev":"1-4fe85b5140c48cfedacc3c3d233d0bc5","deleted":false,"seq":3540}ÿby-sequenceÿ0000000000003540’{"name":"owldoc","description":"A JavaScript prose documentation generator.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"owldoc","version":"0.0.1","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A JavaScript prose documentation generator.","main":"./owldoc","repository":{"type":"git","url":"https://github.com/rfw/owl.git"},"dependencies":{"node-markdown":"0.1.x","cheerio":"0.8.x","optimist":"0.3.x","ejs":"0.7.x"},"bin":{"owldoc":"./owldoc.js"},"license":"MIT","_id":"owldoc@0.0.1","dist":{"shasum":"7617e17b0b55af5c4800ad784ada280fa4d89618","tarball":"http://registry.npmjs.org/owldoc/-/owldoc-0.0.1.tgz"},"readme":"","maintainers":[{"name":"rfw","email":"tony@rfw.name"}],"directories":{}},"0.0.2":{"name":"owldoc","version":"0.0.2","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A JavaScript prose documentation generator.","main":"./owldoc","files":["docs.ejs.html","owldoc.js"],"repository":{"type":"git","url":"https://github.com/rfw/owl.git"},"dependencies":{"node-markdown":"0.1.x","cheerio":"0.8.x","optimist":"0.3.x","ejs":"0.7.x"},"bin":{"owldoc":"./owldoc.js"},"license":"MIT","_id":"owldoc@0.0.2","dist":{"shasum":"8671b589ad2a281e5423dc93b5e9a8b7a3861f32","tarball":"http://registry.npmjs.org/owldoc/-/owldoc-0.0.2.tgz"},"readme":"","maintainers":[{"name":"rfw","email":"tony@rfw.name"}]},"0.0.3":{"name":"owldoc","version":"0.0.3","author":{"name":"Tony Young","email":"tony@rfw.name"},"description":"A JavaScript prose documentation generator.","main":"./owldoc","files":["docs.ejs.html","owldoc.js"],"repository":{"type":"git","url":"https://github.com/rfw/owl.git"},"dependencies":{"node-markdown":"0.1.x","cheerio":"0.8.x","optimist":"0.3.x","ejs":"0.7.x"},"bin":{"owldoc":"./owldoc.js"},"license":"MIT","_id":"owldoc@0.0.3","dist":{"shasum":"482225c2b9ff00add18b0262a3a39db9e11da8c3","tarball":"http://registry.npmjs.org/owldoc/-/owldoc-0.0.3.tgz"},"readme":"","maintainers":[{"name":"rfw","email":"tony@rfw.name"}]}},"readme":"","maintainers":[{"name":"rfw","email":"tony@rfw.name"}],"time":{"modified":"2012-08-07T14:26:15.937Z","created":"2012-07-16T10:55:35.249Z","0.0.1":"2012-07-16T10:55:38.380Z","0.0.2":"2012-07-16T11:09:02.850Z","0.0.3":"2012-07-21T14:06:40.437Z"},"author":{"name":"Tony Young","email":"tony@rfw.name"},"repository":{"type":"git","url":"https://github.com/rfw/owl.git"},"users":{},"_id":"owldoc","_rev":"1-4fe85b5140c48cfedacc3c3d233d0bc5"}ÿdocument-storeÿoort—{"id":"oort","rev":"1-2e75d2ef27d64c910318f63e906f7649","rev_tree":[{"pos":1,"ids":["2e75d2ef27d64c910318f63e906f7649",{"status":"available"},[]]}],"rev_map":{"1-2e75d2ef27d64c910318f63e906f7649":3539},"winningRev":"1-2e75d2ef27d64c910318f63e906f7649","deleted":false,"seq":3539}ÿby-sequenceÿ0000000000003539·W{"name":"oort","description":"sweet cloud action. don't use this yet","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.0":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.0","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"dependencies":{"commander":"~0.6.0"},"devDependencies":{},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"bd727b213f066dfcfee3d25e7908e94ac330dc88","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.0.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"directories":{}},"0.0.1":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.1","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b6113c649aa018680e5434857a4d9c1df7b2f283","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.1.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"directories":{}},"0.0.2":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.2","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"3df35133fd0c4d330d20237f8c4e2aa1ed44e32b","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.2.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"directories":{}},"0.0.3":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.3","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fd46aaa91b8fb6dbcda7239d19deb56c84a660c4","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.3.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"directories":{}},"0.0.4":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.4","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"a99660d3bb5c34f2f39026929cc8ee420231d86a","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.4.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]},"0.0.5":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.5","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"824ddae11d1f0295015d634d8e3a694fbfe12ff5","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.5.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]},"0.0.6":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.6","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"3e47d6dfe871e4e09adbc1d7e5622fcbe58f37ca","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.6.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]},"0.0.8":{"name":"oort","description":"sweet cloud action. don't use this yet","version":"0.0.8","homepage":"https://github.com/brianloveswords/oort","author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"contributors":[],"repository":{"type":"git","url":"git://github.com/brianloveswords/oort.git"},"bugs":{"url":"https://github.com/brianloveswords/oort/issues"},"licenses":[{"type":"MIT","url":"https://github.com/brianloveswords/oort/blob/master/LICENSE-MIT"}],"engines":{"node":"~0.6.14"},"scripts":{"test":"NODE_ENV=test vows --isolate --spec"},"bin":{"oort":"./bin/oort","oortd":"./bin/oortd"},"dependencies":{"colors":"*","commander":"~0.6.0","connect":"~2.2.1","http-proxy":"~0.8.0","mime":"~1.2.5","cmdserver":"~0.0.1"},"devDependencies":{"vows":"~0.6.2"},"noAnalyze":true,"bundleDependencies":[],"keywords":["cloud","lol"],"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"oort@0.0.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b80033840dcb7c9a6bf7627470f41d2e421d8967","tarball":"http://registry.npmjs.org/oort/-/oort-0.0.8.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]}},"readme":"# oort -- like heroku for your personal server.\n## this doesn't exist yet, i'm just planning it out, okay?!\n\n# on the server\n$ oort init\n - creating `~/.oort`\n - creating `repositories` folder\n - starting server\n\n# on the client\nin some sort of git repo\nconfig:\n{ \"server\": \"bjb.io\"\n, \"user\": \"brian\"\n}\n\n$ oort launch\n - create a bare clone\n - push to server:$OORT_DIR/repositories\n - add remote `oort`\n \n","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"time":{"modified":"2012-06-30T19:45:37.174Z","created":"2012-04-29T17:23:37.099Z","0.0.0":"2012-04-29T17:23:37.630Z","0.0.1":"2012-06-25T00:26:31.839Z","0.0.2":"2012-06-25T00:28:54.939Z","0.0.3":"2012-06-25T00:52:32.212Z","0.0.4":"2012-06-25T00:57:03.844Z","0.0.5":"2012-06-25T00:58:01.707Z","0.0.6":"2012-06-25T01:33:06.590Z","0.0.8":"2012-06-30T19:45:37.174Z"},"author":{"name":"Brian J Brennan","email":"brian@nyhacker.org","url":"http://bjb.io"},"repository":{"type":"git","url":"git://github.co"0÷ùm/brianloveswords/oort.git"},"_id":"oort","_rev":"1-2e75d2ef27d64c910318f63e906f7649"}ÿdocument-storeÿonebyone›{"id":"onebyone","rev":"1-9b8937d42224f603bff1ebf3d0f3e5bf","rev_tree":[{"pos":1,"ids":["9b8937d42224f603bff1ebf3d0f3e5bf",{"status":"available"},[]]}],"rev_map":{"1-9b8937d42224f603bff1ebf3d0f3e5bf":3538},"winningRev":"1-9b8937d42224f603bff1ebf3d0f3e5bf","deleted":false,"seq":3538}ÿby-sequenceÿ0000000000003538Ø({"name":"onebyone","description":"Flow control so that only one function executes at any one time.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"onebyone","description":"Flow control so that only one function executes at any one time.","version":"0.1.0","author":{"name":"Andrew Chilton","email":"chilts@appsattic.com","url":"http://www.chilts.org/"},"homepage":"https://github.com/appsattic/onebyone","contributors":[],"devDependencies":{"tap":">= 0.2.5"},"dependencies":{},"main":"onebyone.js","engines":{"node":">= 0.6.0"},"repository":{"type":"git","url":"git://github.com/appsattic/onebyone.git"},"bugs":{"email":"chilts@appsattic.com","url":"http://github.com/appsattic/onebyone/issues"},"licenses":[{"type":"MIT","url":"http://opensource.org/licenses/MIT"}],"keywords":["function","linear","control flow","flow","sequence"],"scripts":{"test":"tap test/"},"_npmUser":{"name":"chilts","email":"chilts@appsattic.com"},"_id":"onebyone@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3c632eee6721949a5d9af6b50853731ec81c9122","tarball":"http://registry.npmjs.org/onebyone/-/onebyone-0.1.0.tgz"},"maintainers":[{"name":"chilts","email":"chilts@appsattic.com"}]}},"readme":"```\n _______ _ _______ ______ _______ _ _______ \n ( ___ )( ( /|( ____ \\( ___ \\ |\\ /|( ___ )( ( /|( ____ \\\n | ( ) || \\ ( || ( \\/| ( ) )( \\ / )| ( ) || \\ ( || ( \\/\n | | | || \\ | || (__ | (__/ / \\ (_) / | | | || \\ | || (__ \n | | | || (\\ \\) || __) | __ ( \\ / | | | || (\\ \\) || __) \n | | | || | \\ || ( | ( \\ \\ ) ( | | | || | \\ || ( \n | (___) || ) \\ || (____/\\| )___) ) | | | (___) || ) \\ || (____/\\\n (_______)|/ )_)(_______/|/ \\___/ \\_/ (_______)|/ )_)(_______/\n \n```\n\nonebyone - Flow control so that only one function executes at any one time.\n\n[![Build Status](https://secure.travis-ci.org/appsattic/onebyone.png?branch=master)](http://travis-ci.org/appsattic/onebyone)\n\n## Synopsis ##\n\nLike async.series() but you can keep adding functions to it.\n\nGives you an object (like a queue) into which you can add functions and each will only ever run in series, never\nconcurrently, and only one at a time. Also gives you your result immediately, rather than at the end of the series.\n\n## Example ##\n\n```\nvar onebyone = require('onebyone')();\n\nvar one = function(callback) {\n setTimeout(function() {\n callback(null, 'Ok');\n }, 2000);\n};\n\nvar two = function(callback) {\n setTimeout(function() {\n callback(null, 'Ok');\n }, 1000);\n};\n\nconsole.log('Setting up tasks : ' + (new Date()).toISOString());\nonebyone.add(one, function(err, data) {\n console.log('One has finished : ' + (new Date()).toISOString());\n});\nonebyone.add(two, function(err, data) {\n console.log('Two has finished : ' + (new Date()).toISOString());\n});\n```\n\nWill give an output similar to the following:\n\n```\nSetting up tasks : 2012-06-05T05:33:25.549Z\nOne has finished : 2012-06-05T05:33:27.561Z\nTwo has finished : 2012-06-05T05:33:28.563Z\n```\n\n## Author ##\n\nWritten by: [Andrew Chilton](http://chilts.org/) - [Blog](http://chilts.org/blog/) -\n[Twitter](https://twitter.com/andychilton).\n\n## License ##\n\nThe MIT License : http://opensource.org/licenses/MIT\n\nCopyright (c) 2011-2012 AppsAttic Ltd. http://appsattic.com/\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the 'Software'), to deal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit\npersons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the\nSoftware.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\nWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\nOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"chilts","email":"chilts@appsattic.com"}],"time":{"modified":"2012-06-05T07:12:47.648Z","created":"2012-06-05T07:12:41.902Z","0.1.0":"2012-06-05T07:12:47.648Z"},"author":{"name":"Andrew Chilton","email":"chilts@appsattic.com","url":"http://www.chilts.org/"},"repository":{"type":"git","url":"git://github.com/appsattic/onebyone.git"},"_id":"onebyone","_rev":"1-9b8937d42224f603bff1ebf3d0f3e5bf"}ÿdocument-storeÿoauthrequestŸ{"id":"oauthrequest","rev":"1-0c6da1e435b33447bbaea5f577713c10","rev_tree":[{"pos":1,"ids":["0c6da1e435b33447bbaea5f577713c10",{"status":"available"},[]]}],"rev_map":{"1-0c6da1e435b33447bbaea5f577713c10":3537},"winningRev":"1-0c6da1e435b33447bbaea5f577713c10","deleted":false,"seq":3537}ÿby-sequenceÿ0000000000003537á{"name":"oauthrequest","description":"jsOAuth's submodule for signing http requests","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"oauthrequest","description":"jsOAuth's submodule for signing http requests","version":"2.0.0","homepage":"https://github.com/bytespider/OAuthRequest","author":{"name":"Rob Griffiths","email":"rob@bytespider.eu","url":"http://bytespider.eu"},"repository":{"type":"git","url":"git@github.com:bytespider/OAuthRequest.git"},"bugs":{"url":"https://github.com/bytespider/OAuthRequest/issues"},"licenses":[{"type":"MIT","url":"https://github.com/bytespider/OAuthRequest/blob/master/LICENSE-MIT"}],"main":"lib/Request","engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"w3c-xmlhttprequest":"1.x"},"devDependencies":{"grunt":"~0.3.11"},"keywords":["OAuth"],"_npmUser":{"name":"bytespider","email":"rob@bytespider.eu"},"_id":"oauthrequest@2.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"846ebf835162ec020dce2e7a81d23418c3b1197f","tarball":"http://registry.npmjs.org/oauthrequest/-/oauthrequest-2.0.0.tgz"},"maintainers":[{"name":"bytespider","email":"rob@bytespider.eu"}]}},"readme":"# OAuthRequest\n\n[![Build Status](https://secure.travis-ci.org/bytespider/OAuthRequest.png?branch=master)](http://travis-ci.org/bytespider/OAuthRequest)\n\nOAuthRequest is a W3C compatable XMLHttpRequest object for signing OAuth requests. Designed for use with jsOAuth 2.\n\n## Getting Started\nInstall the module with: `npm install OAuthRequest`\n\n```javascript\nvar OAuthRequest = require('OAuthRequest');\nvar xhr = new OAuthRequest();\n\nxhr.open(\"GET\", \"http://www.google.co.uk\", true);\n\nxhr.addEventListener(\"readystatechange\", function (event) {\n if (this.readyState === this.DONE && this.status >= 200) {\n doStuff(this.responseText);\n }\n});\n\nxhr.send(null);\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Rob Griffiths \nLicensed under the MIT license.\n","maintainers":[{"name":"bytespider","email":"rob@bytespider.eu"}],"time":{"modified":"2012-07-16T08:35:19.697Z","created":"2012-07-16T08:35:18.133Z","2.0.0":"2012-07-16T08:35:19.697Z"},"author":{"name":"Rob Griffiths","email":"rob@bytespider.eu","url":"http://bytespider.eu"},"repository":{"type":"git","url":"git@github.com:bytespider/OAuthRequest.git"},"_id":"oauthrequest","_rev":"1-0c6da1e435b33447bbaea5f577713c10"}ÿdocument-storeÿnp_package{"id":"np_package","rev":"1-7b23b3edfa31eb104502ea16287dd2ea","rev_tree":[{"pos":1,"ids":["7b23b3edfa31eb104502ea16287dd2ea",{"status":"available"},[]]}],"rev_map":{"1-7b23b3edfa31eb104502ea16287dd2ea":3536},"winningRev":"1-7b23b3edfa31eb104502ea16287dd2ea","deleted":false,"seq":3536}ÿby-sequenceÿ0000000000003536Þ{"name":"np_package","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":"","name":"np_package","version":"0.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"yangqj","email":"yangqj1989@gmail.com"},"_id":"np_package@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e106130870244b11203b212d15c9e80ab62d8ffd","tarball":"http://registry.npmjs.org/np_package/-/np_package-0.0.0.tgz"},"readme":"","maintainers":[{"name":"yangqj","email":"yangqj1989@gmail.com"}]}},"readme":"","maintainers":[{"name":"yangqj","email":"yangqj1989@gmail.com"}],"time":{"modified":"2012-06-19T08:37:07.240Z","created":"2012-06-19T08:37:02.296Z","0.0.0":"2012-06-19T08:37:07.240Z"},"_id":"np_package","_rev":"1-7b23b3edfa31eb104502ea16287dd2ea"}ÿdocument-storeÿnot-sure›{"id":"not-sure","rev":"1-fdffb97a1b8ce3223d545d6924d163bf","rev_tree":[{"pos":1,"ids":["fdffb97a1b8ce3223d545d6924d163bf",{"status":"available"},[]]}],"rev_map":{"1-fdffb97a1b8ce3223d545d6924d163bf":3535},"winningRev":"1-fdffb97a1b8ce3223d545d6924d163bf","deleted":false,"seq":3535}ÿby-sequenceÿ0000000000003535ë {"name":"not-sure","description":"shell script and lib for requesting code reviews","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"not-sure","description":"shell script and lib for requesting code reviews","keywords":["review","codereview"],"author":{"name":"Julian Gruber","email":"julian@juliangruber.com"},"version":"0.0.1","licenses":[{"type":"MIT","url":"https://raw.github.com/juliangruber/not-sure/master/LICENSE"}],"engines":{"node":"*"},"bin":{"notsure":"./bin/notsure"},"repository":{"type":"git","url":"git://github.com/juliangruber/not-sure.git"},"main":"not-sure","dependencies":{"seq":"0.3.5"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"_id":"not-sure@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b62d89dc4ddce0508479d8803c1b9d3e7e6f5944","tarball":"http://registry.npmjs.org/not-sure/-/not-sure-0.0.1.tgz"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}]}},"readme":"not-sure\n========","maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"time":{"modified":"2012-06-25T14:02:53.162Z","created":"2012-06-25T14:02:20.181Z","0.0.1":"2012-06-25T14:02:53.162Z"},"author":{"name":"Julian Gruber","email":"julian@juliangruber.com"},"repository":{"type":"git","url":"git://github.com/juliangruber/not-sure.git"},"_id":"not-sure","_rev":"1-fdffb97a1b8ce3223d545d6924d163bf"}ÿdocument-storeÿnodeigniterž{"id":"nodeigniter","rev":"1-d806c0e52adf552f3fcd5369dc555e33","rev_tree":[{"pos":1,"ids":["d806c0e52adf552f3fcd5369dc555e33",{"status":"available"},[]]}],"rev_map":{"1-d806c0e52adf552f3fcd5369dc555e33":3534},"winningRev":"1-d806c0e52adf552f3fcd5369dc555e33","deleted":false,"seq":3534}ÿby-sequenceÿ0000000000003534¦ {"name":"nodeigniter","description":"inspired by codeigniter","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"nodeigniter","description":"inspired by codeigniter","keywords":["nodeigniter","igniter","framework"],"version":"0.1.0","homepage":"https://github.com/makarukudo/nodeigniter","author":{"name":"Michael Brucal","email":"bruczki21@live.com"},"main":"./lib/nodeigniter.js","_npmUser":{"name":"makarukudo","email":"epson.code@gmail.com"},"_id":"nodeigniter@0.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"d6a5ce3d5297745a1b975ff9a58d813662130026","tarball":"http://registry.npmjs.org/nodeigniter/-/nodeigniter-0.1.0.tgz"},"readme":"","maintainers":[{"name":"makarukudo","email":"epson.code@gmail.com"}]}},"readme":"","maintainers":[{"name":"makarukudo","email":"epson.code@gmail.com"}],"time":{"modified":"2012-03-22T11:21:08.819Z","created":"2012-03-22T11:21:01.638Z","0.1.0":"2012-03-22T11:21:08.819Z"},"author":{"name":"Michael Brucal","email":"bruczki21@live.com"},"_id":"nodeigniter","_rev":"1-d806c0e52adf552f3fcd5369dc555e33"}ÿdocument-storeÿnode-watcherŸ{"id":"node-watcher","rev":"1-6c7ac8879a0c5105037cbd24d7080c72","rev_tree":[{"pos":1,"ids":["6c7ac8879a0c5105037cbd24d7080c72",{"status":"available"},[]]}],"rev_map":{"1-6c7ac8879a0c5105037cbd24d7080c72":3533},"winningRev":"1-6c7ac8879a0c5105037cbd24d7080c72","deleted":false,"seq":3533}ÿby-sequenceÿ0000000000003533Å${"name":"node-watcher","description":"Watcher by @nodester :: is a module to manage|limit resources in a shared environment","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"node-watcher","version":"0.0.1","description":"Watcher by nodester :: is a module to manage|limit resources in a shared environment","author":{"name":"Alejandro Morales"},"repository":{"type":"git","url":"git://github.com/nodester/watcher.git"},"main":"./lib/watcher.js","bin":{"watcher":"./bin/watcher"},"engines":{"node":">=0.4.x"},"preferGlobal":"true","_npmUser":{"name":"alejandromg","email":"vamg008@gmail.com"},"_id":"node-watcher@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4365a71ae7e2bd28f2881498380888bf8ee85f11","tarball":"http://registry.npmjs.org/node-watcher/-/node-watcher-0.0.1.tgz"},"maintainers":[{"name":"alejandromg","email":"vamg008@gmail.com"}]},"0.0.2":{"name":"node-watcher","version":"0.0.2","description":"Watcher by @nodester :: is a module to manage|limit resources in a shared environment","author":{"name":"Alejandro Morales"},"repository":{"type":"git","url":"git://github.com/nodester/watcher.git"},"main":"./lib/watcher.js","bin":{"watcher":"./lib/watcher.js"},"engines":{"node":">=0.4.x"},"preferGlobal":"true","_npmUser":{"name":"alejandromg","email":"vamg008@gmail.com"},"_id":"node-watcher@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"19b15de47f5847dd1faf996b9b98db5252b306b2","tarball":"http://registry.npmjs.org/node-watcher/-/node-watcher-0.0.2.tgz"},"maintainers":[{"name":"alejandromg","email":"vamg008@gmail.com"}]},"0.0.3":{"name":"node-watcher","version":"0.0.3","description":"Watcher by @nodester :: is a module to manage|limit resources in a shared environment","author":{"name":"Alejandro Morales"},"repository":{"type":"git","url":"git://github.com/nodester/watcher.git"},"main":"./lib/watcher.js","bin":{"watcher":"./lib/watcher.js"},"engines":{"node":">=0.4.x"},"preferGlobal":"true","_npmUser":{"name":"alejandromg","email":"vamg008@gmail.com"},"_id":"node-watcher@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"0c84b672c4f22f48f259e6bf1a246b14a47cf1c3","tarball":"http://registry.npmjs.org/node-watcher/-/node-watcher-0.0.3.tgz"},"maintainers":[{"name":"alejandromg","email":"vamg008@gmail.com"}]},"0.0.4":{"name":"node-watcher","version":"0.0.4","description":"Watcher by @nodester :: is a module to manage|limit resources in a shared environment","author":{"name":"Alejandro Morales"},"repository":{"type":"git","url":"https://github.com/nodester/watcher.git"},"main":"./lib/watcher.js","bin":{"watcher":"./lib/watcher.js"},"engines":">=0.4.x","preferGlobal":"true","readme":"\r\n# Watcher by Nodester\r\n\r\n Watcher is a simple module who will be watching a given process, due to maxmem use or disk space abuse, then It'll emit a SIGINT Sign then it'll send a notice to the master process. To restart the process.\r\n\r\n The main purpose of this module is because we, at nodester, are needed to control the memory use by users apps. And disk space in use. \r\n#\r\n\r\n## Licence\r\n\r\n**GNU Affero**\r\nAlejandro Morales Gámez\r\n","_id":"node-watcher@0.0.4","dist":{"shasum":"d39dd5a6768ca52ce98ac33c2ed910a2ad6ee9ec","tarball":"http://registry.npmjs.org/node-watcher/-/node-watcher-0.0.4.tgz"},"maintainers":[{"name":"alejandromg","email":"vamg008@gmail.com"}]}},"readme":"\r\n# Watcher by Nodester\r\n\r\n Watcher is a simple module who will be watching a given process, due to maxmem use or disk space abuse, then It'll emit a SIGINT Sign then it'll send a notice to the master process. To restart the process.\r\n\r\n The main purpose of this module is because we, at nodester, are needed to control the memory use by users apps. And disk space in use. \r\n#\r\n\r\n## Licence\r\n\r\n**GNU Affero**\r\nAlejandro Morales Gámez\r\n","maintainers":[{"name":"alejandromg","email":"vamg008@gmail.com"}],"time":{"modified":"2012-08-22T18:43:37.152Z","created":"2012-03-24T05:51:10.565Z","0.0.1":"2012-03-24T05:51:19.906Z","0.0.2":"2012-03-24T06:07:46.129Z","0.0.3":"2012-03-30T04:22:03.600Z","0.0.4":"2012-08-22T18:43:37.152Z"},"author":{"name":"Alejandro Morales"},"repository":{"type":"git","url":"https://github.com/nodester/watcher.git"},"_id":"node-watcher","_rev":"1-6c7ac8879a0c5105037cbd24d7080c72"}ÿdocument-storeÿnode-terminal {"id":"node-terminal","rev":"1-9f8ab92712c262b8f5a3d44511860917","rev_tree":[{"pos":1,"ids":["9f8ab92712c262b8f5a3d44511860917",{"status":"available"},[]]}],"rev_map":{"1-9f8ab92712c262b8f5a3d44511860917":3532},"winningRev":"1-9f8ab92712c262b8f5a3d44511860917","deleted":false,"seq":3532}ÿby-sequenceÿ0000000000003532ø#{"name":"node-terminal","description":"control your terminal from node","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"node-terminal","description":"control your terminal from node","version":"0.1.0","author":{"name":"Mattijs Hoitink","email":"mattijs@monkeyandmachine.com"},"keywords":["terminal","colors","text"],"homepage":"https://github.com/mattijs/node-terminal","repository":{"type":"git","url":"git://github.com/mattijs/node-terminal.git"},"main":"./index","_npmUser":{"name":"mattijs","email":"mattijs@monkeyandmachine.com"},"_id":"node-terminal@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"01d0e5c2e6138c846104572900f8ad5a522b7d27","tarball":"http://registry.npmjs.org/node-terminal/-/node-terminal-0.1.0.tgz"},"maintainers":[{"name":"mattijs","email":"mattijs@monkeyandmachine.com"}]},"0.1.1":{"name":"node-terminal","description":"control your terminal from node","version":"0.1.1","author":{"name":"Mattijs Hoitink","email":"mattijs@monkeyandmachine.com"},"keywords":["terminal","colors","text"],"homepage":"https://github.com/mattijs/node-terminal","repository":{"type":"git","url":"git://github.com/mattijs/node-terminal.git"},"main":"./index","_npmUser":{"name":"mattijs","email":"mattijs@monkeyandmachine.com"},"_id":"node-terminal@0.1.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.14","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"3176a3b5f8504045633d863e22cbadf6c006bd9a","tarball":"http://registry.npmjs.org/node-terminal/-/node-terminal-0.1.1.tgz"},"maintainers":[{"name":"mattijs","email":"mattijs@monkeyandmachine.com"}]}},"readme":"# Terminal\n\nTerminal is a small package that can be used with [node.js](http://nodejs.org) to control terminal output. The package can move the cursor in the terminal and output colored text. It can colorize a message with a simple straightforward markup syntax.\n\n# Examples\n\nSome examples from the `examples` directory. \n\n## Colors\n\nControl colored output. See also `examples/colors.js`. Colors may vary depending on the terminal settings.\n\nSimple color changing:\n \n terminal.color('magenta').write('Unicorn');\n\nThis will output `Unicorn` in magenta (or purple). To change the background color to magenta:\n\n terminal.color('magenta', 'background').write('Unicorn');\n\n### Color formatting\n\n`Terminal` supports formatting strings with colors using a simple syntax. Outputting `Unicorn` in magenta (like the example above) would look like this:\n\n terminal.colorize('%mUnicorn');\n \n // And changing the background color to magenta\n terminal.colorize('%5Unicorn');\n\nUsing this syntax we can create `Rainbows` easily in one line:\n\n terminal.colorize('%rR%ma%ci%bn%yb%go%rw\\n');\n \n // Or with background colors\n terminal.colorize('%w%1 R %2 A %3 I %4 N %5 B %6 O %7 W %n ');\n\nThe colorize function accepts the following modifiers:\n\n text text background\n ------------------------------------------------\n %k %K %0 black dark grey black\n %r %R %1 red bold red red\n %g %G %2 green bold green green\n %y %Y %3 yellow bold yellow yellow\n %b %B %4 blue bold blue blue\n %m %M %5 magenta bold magenta magenta\n %p %P magenta (think: purple)\n %c %C %6 cyan bold cyan cyan\n %w %W %7 white bold white white\n \n %F Blinking, Flashing\n %U Underline\n %8 Reverse\n %_,%9 Bold\n \n %n,%N Resets the color\n %% A single %\n\nColored ouput can be reset with the `reset` function:\n\n terminal.color('red').write('This is red,').reset().write(' and this is not');\n# License\n\nTerminal is licensed under The MIT License\n\n","maintainers":[{"name":"mattijs","email":"mattijs@monkeyandmachine.com"}],"time":{"modified":"2012-06-30T08:17:21.464Z","created":"2012-03-28T12:45:18.048Z","0.1.0":"2012-03-28T12:45:19.538Z","0.1.1":"2012-06-30T08:17:21.464Z"},"author":{"name":"Mattijs Hoitink","email":"mattijs@monkeyandmachine.com"},"repository":{"type":"git","url":"git://github.com/mattijs/node-terminal.git"},"_id":"node-terminal","_rev":"1-9f8ab92712c262b8f5a3d44511860917"}%ÿdocument-storeÿnode-stream-spliter¦{"id":"node-stream-spliter","rev":"1-1e269b6e0d07cbbbb1dbf9d09a2676f4","rev_tree":[{"pos":1,"ids":["1e269b6e0d07cbbbb1dbf9d09a2676f4",{"status":"available"},[]]}],"rev_map":{"1-1e269b6e0d07cbbbb1dbf9d09a2676f4":3531},"winningRev":"1-1e269b6e0d07cbbbb1dbf9d09a2676f4","deleted":false,"seq":3531}ÿby-sequenceÿ0000000000003531ø{"name":"node-stream-spliter","description":"split a stream as discreate messages","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Li Yong","email":"kaven276@vip.sina.com"},"name":"node-stream-spliter","description":"split a stream as discreate messages","version":"0.0.1","repository":{"type":"git","url":"git://github.com/kaven276/StreamSpliter.git"},"main":"StreamSpliter.js","scripts":{},"engines":{"node":">=0.6.2"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"kaven276","email":"kaven276@vip.sina.com"},"_id":"node-stream-spliter@0.0.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"f55c62f1ea2e0bc7d43dac6d0697fca76a5c60cd","tarball":"http://registry.npmjs.org/node-stream-spliter/-/node-stream-spliter-0.0.1.tgz"},"maintainers":[{"name":"kaven276","email":"kaven276@vip.sina.com"}]}},"readme":"StreamSpliter is for split message streams and emit discreate messages event.\nThere are two types of StreamSpliters, as the follow:\n\nMessage has length send in its first bytes.\n---------------\n\n\nMessage\n=======\n\n 对于按行分割的输入æµï¼Œå¦‚果使用 emit 行到达事件的方å¼å½“然是éžå¸¸çš„简å•,但是如果想按照 obj.readLine(s) 的方å¼è¯»å°±æ¯”较困难。\n因为å¯èƒ½é‚£æ—¶è¿˜æ²¡æœ‰è¡Œåˆ°è¾¾ï¼Œæœ€å¥½çš„实现方å¼å…¶å®žæ˜¯é˜»å¡žæ–¹å¼ï¼Œå½“没有行时,就等待,直到有了新行为止。\n\n 当然,行分割器å¯èƒ½ä¼šæç¤ºæ–°çš„æ¶ˆæ¯åˆ°è¾¾ï¼Œç„¶åŽ","maintainers":[{"name":"kaven276","email":"kaven276@vip.sina.com"}],"time":{"modified":"2012-06-25T06:42:03.010Z","created":"2012-06-25T06:41:58.787Z","0.0.1":"2012-06-25T06:42:03.010Z"},"author":{"name":"Li Yong","email":"kaven276@vip.sina.com"},"repository":{"type":"git","url":"git://github.com/kaven276/StreamSpliter.git"},"_id":"node-stream-spliter","_rev":"1-1e269b6e0d07cbbbb1dbf9d09a2676f4"}ÿdocument-storeÿnode-socks{"id":"node-socks","rev":"1-721d32fdda733826f5c46d1a5aaca233","rev_tree":[{"pos":1,"ids":["721d32fdda733826f5c46d1a5aaca233",{"status":"available"},[]]}],"rev_map":{"1-721d32fdda733826f5c46d1a5aaca233":3530},"winningRev":"1-721d32fdda733826f5c46d1a5aaca233","deleted":false,"seq":3530}ÿby-sequenceÿ0000000000003530¯ {"name":"node-socks","description":"A simple SOCKS implementation and demo proxy","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.2":{"name":"node-socks","version":"0.0.2","dependencies":{},"contributors":[{"name":"Gert Van Gool","email":"gertvangool@gmail.com"},{"name":"John Cant","email":"a.johncant@gmail.com"}],"readme":"","_id":"node-socks@0.0.2","description":"SOCKS implementation in node.js ===============================","dist":{"shasum":"20ffac5953a20e4cca073aed01a328377000e24f","tarball":"http://registry.npmjs.org/node-socks/-/node-socks-0.0.2.tgz"},"maintainers":[{"name":"gvangool","email":"gertvangool@gmail.com"}]},"0.1.0":{"name":"node-socks","version":"0.1.0","description":"A simple SOCKS implementation and demo proxy","author":{"name":"Gert Van Gool","email":"gertvangool@gmail.com"},"dependencies":{},"contributors":[{"name":"Gert Van Gool","email":"gertvangool@gmail.com"},{"name":"John Cant","email":"a.johncant@gmail.com"}],"readme":"","_id":"node-socks@0.1.0","dist":{"shasum":"2f899eb25adbe1ed9ad7aab38058925a00ffee1b","tarball":"http://registry.npmjs.org/node-socks/-/node-socks-0.1.0.tgz"},"maintainers":[{"name":"gvangool","email":"gertvangool@gmail.com"}]}},"readme":"","maintainers":[{"name":"gvangool","email":"gertvangool@gmail.com"}],"time":{"modified":"2012-08-02T13:44:37.723Z","created":"2012-07-23T16:46:36.605Z","0.0.2":"2012-07-23T16:46:38.393Z","0.1.0":"2012-07-23T16:54:52.629Z"},"author":{"name":"Gert Van Gool","email":"gertvangool@gmail.com"},"users":{"fgribreau":true},"_id":"node-socks","_rev":"1-721d32fdda733826f5c46d1a5aaca233"}ÿdocument-storeÿnode-shortyž{"id":"node-shorty","rev":"1-b54c77bd39a5477f251a66441b637a56","rev_tree":[{"pos":1,"ids":["b54c77bd39a5477f251a66441b637a56",{"status":"available"},[]]}],"rev_map":{"1-b54c77bd39a5477f251a66441b637a56":3529},"winningRev":"1-b54c77bd39a5477f251a66441b637a56","deleted":false,"seq":3529}ÿby-sequenceÿ0000000000003529¯{"name":"node-shorty","description":"Generate short URL paths based on a given counter. Based on django-shorty","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"node-shorty","description":"Generate short URL paths based on a given counter. Based on django-shorty","version":"1.0.0","author":{"name":"Jon Abrams","email":"jon@jonabrams.com"},"dependencies":{},"keywords":["web","util"],"repository":{"type":"git","url":"git://github.com/JonAbrams/node-short.git"},"main":"lib/main.js","_npmUser":{"name":"JonAbrams","email":"jon@jonabrams.com"},"_id":"node-shorty@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"d9bb8bacffda6bc569e14f09befb259c0da1fcd1","tarball":"http://registry.npmjs.org/node-shorty/-/node-shorty-1.0.0.tgz"},"maintainers":[{"name":"JonAbrams","email":"jon@jonabrams.com"}]}},"readme":"# node-shorty\n\nA simple node.js package that will generate tinyurl/bit.ly style URL paths given number.\n\nThis is useful if your webapp needs to generate shortened URLs. Just keep track of the number of shortened URLs generated and pass the counter into url\\_encode. Then, pass an encoded path into url\\_decode to find out the counter that was used to generate the URL path.\n\n## Example\n\nSee my open source URL shortner, [wiqr](http://github.com/JonAbrams/wiqr), written for node.js.\n","maintainers":[{"name":"JonAbrams","email":"jon@jonabrams.com"}],"time":{"modified":"2012-04-21T19:39:14.183Z","created":"2012-04-21T19:39:13.420Z","1.0.0":"2012-04-21T19:39:14.183Z"},"author":{"name":"Jon Abrams","email":"jon@jonabrams.com"},"repository":{"type":"git","url":"git://github.com/JonAbrams/node-short.git"},"_id":"node-shorty","_rev":"1-b54c77bd39a5477f251a66441b637a56"}ÿdocument-storeÿnode-settings {"id":"node-settings","rev":"1-7d6b91a21780dca321119f91dc887abe","rev_tree":[{"pos":1,"ids":["7d6b91a21780dca321119f91dc887abe",{"status":"available"},[]]}],"rev_map":{"1-7d6b91a21780dca321119f91dc887abe":3528},"winningRev":"1-7d6b91a21780dca321119f91dc887abe","deleted":false,"seq":3528}ÿby-sequenceÿ0000000000003528ª1{"name":"node-settings","description":"Provides easy, multi-environment configuration","dist-tags":{"latest":"0.2.2"},"versions":{"0.0.1":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.0.1","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"jasmine-node":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"b63422b13c4bbdc47548cb7712b6d2ef469554f9","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.0.1.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.0":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.1.0","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"jasmine-node":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2e795998bab8ef050d915e77b5a8e4c317b5cd44","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.1.0.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.1":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.1.1","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"jasmine-node":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"69b6542449d6176badee36f7fa55f1adb13e3935","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.1.1.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.2":{"author":{"SXàšùname":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.1.2","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"jasmine-node":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"06863716739885e8c136b10b369182adfcafd46e","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.1.2.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.3":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.1.3","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"jasmine-node":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"ec9a361eaafc0fa02d686e4414420f3a42be7b2a","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.1.3.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.2.0":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.2.0","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"mocha":"1.0.0","should":"0.6.0","coffee-script":"1.2.0"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"node-settings@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"7576dc9f3419e6f08e60bd1c5d1cd21e62e653be","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.2.0.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.2.2":{"author":{"name":"Nick Fisher"},"name":"node-settings","description":"Provides easy, multi-environment configuration","version":"0.2.2","homepage":"","repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"main":"index","engines":{"node":">=0.6.6"},"dependencies":{"optimist":"latest","deepmerge":"latest"},"devDependencies":{"mocha":"latest","should":"latest","coffee-script":"latest"},"_id":"node-settings@0.2.2","dist":{"shasum":"26e3fd1b601a87055f58e9504803dcf501d543f1","tarball":"http://registry.npmjs.org/node-settings/-/node-settings-0.2.2.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]}},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}],"time":{"modified":"2012-06-29T21:30:08.774Z","created":"2012-02-06T15:11:45.648Z","0.0.1":"2012-02-06T15:11:45.839Z","0.1.0":"2012-02-07T15:21:04.891Z","0.1.1":"2012-02-07T15:49:02.100Z","0.1.2":"2012-02-08T14:00:15.069Z","0.1.3":"2012-02-08T16:27:20.900Z","0.2.0":"2012-03-29T03:15:00.884Z","0.2.2":"2012-06-29T21:30:08.774Z"},"author":{"name":"Nick Fisher"},"repository":{"type":"git","url":"git://github.com/nrf110/node-settings.git"},"_id":"node-settings","_rev":"1-7d6b91a21780dca321119f91dc887abe"}ÿdocument-storeÿnode-httpd{"id":"node-httpd","rev":"1-9d4c7d8d9f639e43e0e8710463829035","rev_tree":[{"pos":1,"ids":["9d4c7d8d9f639e43e0e8710463829035",{"status":"available"},[]]}],"rev_map":{"1-9d4c7d8d9f639e43e0e8710463829035":3527},"winningRev":"1-9d4c7d8d9f639e43e0e8710463829035","deleted":false,"seq":3527}ÿby-sequenceÿ0000000000003527’ {"name":"node-httpd","description":"NodeJS Web Server Daemon","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"node-httpd","version":"0.0.1","description":"NodeJS Web Server Daemon","author":{"name":"MYSO Software","email":"smile_0203@nate.com","url":"http://www.facebook.com/myso.kr"},"repository":{"type":"git","url":"git://github.com/myso-kr/node-httpd.git"},"dependencies":{"forever":"0.9.x","daemon":"0.5.x","http-proxy":"0.8.x"},"bin":{"node-httpd":"./bin/node-httpd"},"main":"./lib/node-httpd","engines":{"node":">= 0.4.8"},"_npmUser":{"name":"smile0203","email":"smile_0203@nate.com"},"_id":"node-httpd@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"462cbdba8c8a4e4e263c34c85018e2fbd7580203","tarball":"http://registry.npmjs.org/node-httpd/-/node-httpd-0.0.1.tgz"},"readme":"","maintainers":[{"name":"smile0203","email":"smile_0203@nate.com"}]}},"readme":"","maintainers":[{"name":"smile0203","email":"smile_0203@nate.com"}],"time":{"modified":"2012-06-05T20:03:16.379Z","created":"2012-06-05T20:03:12.746Z","0.0.1":"2012-06-05T20:03:16.379Z"},"author":{"name":"MYSO Software","email":"smile_0203@nate.com","url":"http://www.facebook.com/myso.kr"},"repository":{"type":"git","url":"git://github.com/myso-kr/node-httpd.git"},"_id":"node-httpd","_rev":"1-9d4c7d8d9f639e43e0e8710463829035"}#ÿdocument-storeÿnode-foursquare-2¤{"id":"node-foursquare-2","rev":"1-6e04c1f8850a8760b4fcac7b94a80638","rev_tree":[{"pos":1,"ids":["6e04c1f8850a8760b4fcac7b94a80638",{"status":"available"},[]]}],"rev_map":{"1-6e04c1f8850a8760b4fcac7b94a80638":3526},"winningRev":"1-6e04c1f8850a8760b4fcac7b94a80638","deleted":false,"seq":3526}ÿby-sequenceÿ0000000000003526‰{"name":"node-foursquare-2","description":"Fault-tolerant Foursquare API v2 wrapper for Node JS.","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.4":{"name":"node-foursquare-2","description":"Fault-tolerant Foursquare API v2 wrapper for Node JS.","version":"0.1.4","main":"index.js","keywords":["node-foursquare","foursquare","4sq"],"tags":["node-foursquare","foursquare","4sq"],"repository":{"type":"git","url":"git://github.com/gamebox/node-foursquare.git"},"bugs":{"url":"https://github.com/gamebox/node-foursquare/issues"},"licenses":[{"type":"MIT","url":"http://github.com/gamebox/node-foursquare/raw/master/LICENSE"}],"dependencies":{"log4js":"~0.4.1"},"devDependencies":{"express":"~2.5.0"},"engines":{"node":">= 0.4.x"},"homepage":"https://github.com/gamebox/node-foursquare","author":{"name":"Clint Andrew Hall","url":"http://www.clintandrewhall.com"},"directories":{"lib":"./lib","doc":"./doc"},"scripts":{"test":"node test.js"},"_npmUser":{"name":"gameboxer","email":"anthony.bullard@gmail.com"},"_id":"node-foursquare-2@0.1.4","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"4d0ab360f512e02a27d6faf20cfd7e255173f0a7","tarball":"http://registry.npmjs.org/node-foursquare-2/-/node-foursquare-2-0.1.4.tgz"},"readme":"","maintainers":[{"name":"gameboxer","email":"anthony.bullard@gmail.com"}]},"0.1.5":{"name":"node-foursquare-2","description":"Fault-tolerant Foursquare API v2 wrapper for Node JS.","version":"0.1.5","main":"index.js","keywords":["node-foursquare","foursquare","4sq"],"tags":["node-foursquare","foursquare","4sq"],"repository":{"type":"git","url":"git://github.com/gamebox/node-foursquare.git"},"bugs":{"url":"https://github.com/gamebox/node-foursquare/issues"},"licenses":[{"type":"MIT","url":"http://github.com/gamebox/node-foursquare/raw/master/LICENSE"}],"dependencies":{"log4js":"~0.4.1"},"devDependencies":{"express":"~2.5.0"},"engines":{"node":">= 0.4.x"},"homepage":"https://github.com/gamebox/node-foursquare","author":{"name":"Clint Andrew Hall","url":"http://www.clintandrewhall.com"},"directories":{"lib":"./lib","doc":"./doc"},"scripts":{"test":"node test.js"},"_npmUser":{"name":"gameboxer","email":"anthony.bullard@gmail.com"},"_id":"node-foursquare-2@0.1.5","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"2ee0f3a22345ca083f7ee50f10c86dc8dd97ca3e","tarball":"http://registry.npmjs.org/node-foursquare-2/-/node-foursquare-2-0.1.5.tgz"},"readme":"","maintainers":[{"name":"gameboxer","email":"anthony.bullard@gmail.com"}]}},"readme":"","maintainers":[{"name":"gameboxer","email":"anthony.bullard@gmail.com"}],"time":{"modified":"2012-06-12T21:55:21.635Z","created":"2012-06-12T07:21:02.130Z","0.1.4":"2012-06-12T07:21:03.610Z","0.1.5":"2012-06-12T21:55:21.635Z"},"author":{"name":"Clint Andrew Hall","url":"http://www.clintandrewhall.com"},"repository":{"type":"git","url":"git://github.com/gamebox/node-foursquare.git"},"_id":"node-foursquare-2","_rev":"1-6e04c1f8850a8760b4fcac7b94a80638"}"ÿdocument-storeÿnode-forwardable£{"id":"node-forwardable","rev":"1-e0b019e1502dc07c0ac4b55fc9cdf563","rev_tree":[{"pos":1,"ids":["e0b019e1502dc07c0ac4b55fc9cdf563",{"status":"available"},[]]}],"rev_map":{"1-e0b019e1502dc07c0ac4b55fc9cdf563":3525},"winningRev":"1-e0b019e1502dc07c0ac4b55fc9cdf563","deleted":false,"seq":3525}ÿby-sequenceÿ0000000000003525í{"name":"node-forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"node-forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","version":"0.0.1","author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"homepage":"https://github.com/p-baleine/node-forwardable.git","devDependencies":{"mocha":"*","should":"*"},"keywords":["forwardable"],"main":"./lib/forwardable.js","engines":{"node":">= 0.8.1"},"_npmUser":{"name":"p-baleine","email":"p.baleine@gmail.com"},"_id":"node-forwardable@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"f3548ef03a90737d0434f89ef899548f8d9ec044","tarball":"http://registry.npmjs.org/node-forwardable/-/node-forwardable-0.0.1.tgz"},"maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}]},"0.0.2":{"name":"node-forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","version":"0.0.2","author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"homepage":"https://github.com/p-baleine/node-forwardable.git","devDependencies":{"mocha":"*","should":"*"},"keywords":["forwardable"],"main":"./lib/forwardable.js","engines":{"node":">= 0.8.1"},"_npmUser":{"name":"p-baleine","email":"p.baleine@gmail.com"},"_id":"node-forwardable@0.0.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"403f1009cf8bd69aec154608e4e36336a40e77ec","tarball":"http://registry.npmjs.org/node-forwardable/-/node-forwardable-0.0.2.tgz"},"maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}]},"0.0.3":{"name":"node-forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","version":"0.0.3","author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"homepage":"https://github.com/p-baleine/node-forwardable.git","devDependencies":{"mocha":"*","should":"*"},"keywords":["forwardable"],"main":"./lib/forwardable.js","engines":{"node":">= 0.8.1"},"_npmUser":{"name":"p-baleine","email":"p.baleine@gmail.com"},"_id":"node-forwardable@0.0.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"7e5d4ad8459dd78ab4a5f983909583d8590ff1db","tarball":"http://registry.npmjs.org/node-forwardable/-/node-forwardable-0.0.3.tgz"},"maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}]}},"readme":"node-forwardable\n================\n\nRuby's forwardable inspired modele which defines delegatable functionality of methods for a class.\n\n## Example\n\n var util = require('util')\n , forwardable = require('forwardable');\n \n Stack = function() {\n this.content = [];\n this.defDelegator('content', 'push', 'pop');\n };\n util._extend(Stack.prototype, forwardable);\n\n s = new Stack;\n s.push(1);\n s.push(2);\n s.push(3);\n log(s.pop()); // => 3\n log(s.pop()); // => 2\n log(s.pop()); // => 1\n","maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}],"time":{"modified":"2012-07-16T08:50:14.026Z","created":"2012-07-16T07:55:23.366Z","0.0.1":"2012-07-16T07:55:25.877Z","0.0.2":"2012-07-16T08:43:34.014Z","0.0.3":"2012-07-16T08:50:14.026Z"},"author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"_id":"node-forwardable","_rev":"1-e0b019e1502dc07c0ac4b55fc9cdf563"}ÿdocument-storeÿnode-engineer {"id":"node-engineer","rev":"1-663adbb9377c878798c9a86222d0b184","rev_tree":[{"pos":1,"ids":["663adbb9377c878798c9a86222d0b184",{"status":"available"},[]]}],"rev_map":{"1-663adbb9377c878798c9a86222d0b184":3524},"winningRev":"1-663adbb9377c878798c9a86222d0b184","deleted":false,"seq":3524}ÿby-sequenceÿ0000000000003524ÈW{"name":"node-engineer","description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dist-tags":{"latest":"0.2.8"},"versions":{"0.1.0":{"name":"node-engineer","version":"0.1.0","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engine property and ensure command runs with right node.js version","dependencies":{"nave":">=0.2.13","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{"test":"./node_modules/mocha/bin/mocha -R tap"},"engines":{"node":">=0.6.0 <0.7.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e3674dcd1e54a827f8b84c93fd13580a5f431af0","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.1.0.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.0":{"name":"node-engineer","version":"0.2.0","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engine property and ensure command runs with right node.js version","dependencies":{"nave":">=0.2.13","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0 <0.7.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"5961b0f959d47dca3d9f9fad1530e03b8fc3cb89","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.0.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.1":{"name":"node-engineer","version":"0.2.1","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":">=0.2.13","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0 <0.7.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"f51fb56371ed5264e98f5ee17b90296d6986b880","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.1.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.2":{"name":"node-engineer","version":"0.2.2","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":">=0.2.13","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0 <0.7.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"67eb8acb94b3eb65450ebf839e8250bfd5cf3669","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.2.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.3":{"name":"node-engineer","version":"0.2.3","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":">=0.2.13","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"6a69f3d4b9966527f8c8b8e79cd40b3cd38845db","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.3.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.4":{"name":"node-engineer","version":"0.2.4","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":"git://github.com/niallo/nave.git#d8c73ff6cd92799b4831111f7b2eb92decf498ba","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e947ed76d265d3cd536f44cb2420296766fddb9f","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.4.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.5":{"name":"node-engineer","version":"0.2.5","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":"git://github.com/niallo/nave.git#d8c73ff6cd92799b4831111f7b2eb92decf498ba","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"da29ce5e28ee5c0116bf2546ce89e1e2fe0ec4c9","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.5.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.6":{"name":"node-engineer","version":"0.2.6","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":"git://github.com/niallo/nave.git#d8c73ff6cd92799b4831111f7b2eb92decf498ba","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"157b98729b8d4aeaa5d0be62373ae2ff93b11aaf","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.6.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.7":{"name":"node-engineer","version":"0.2.7","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":"git://github.com/niallo/nave.git#5fdb24773195edfc0e6020a730d506b2046dc922","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.7","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d347fa507801fd51c7217a9665edb7364d389412","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.7.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]},"0.2.8":{"name":"node-engineer","version":"0.2.8","private":false,"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"description":"Parse package.json, inspect engines property and ensure command runs with right node.js version","dependencies":{"nave":"git://github.com/niallo/nave.git#5fdb24773195edfc0e6020a730d506b2046dc922","semver":">=1.0.14","optimist":">=0.3.4"},"scripts":{},"engines":{"node":">=0.6.0"},"bin":{"engineer":"main.js"},"_npmUser":{"name":"niallo","email":"nialljohiggins@gmail.com"},"_id":"node-engineer@0.2.8","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"808c6961a2ec7a87f932b0da6d49afa45cbba4cf","tarball":"http://registry.npmjs.org/node-engineer/-/node-engineer-0.2.8.tgz"},"maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}]}},"readme":"node-engineer\n=============\n\nParse package.json, inspect engine property and ensure command runs with right node.js version.\n\nEngineer makes it trivial to run a command in an environment where `node` and `npm` match those\nspecified by a particular package.json's `engine` field.\n\nThis makes it a no-brainer to run an arbitrary package under whatever version of node it needs. Engineer uses `nave` and `semver` to do the heavy lifting ot installing and checking for valid node.js versions.\n\nInstallation\n============\n```\nnpm install -g engineer\n```\n\nUsage\n=====\n```\nexecute command with node version acceptable to engine package.json property\nusage: node ./main.js\n\nOptions:\n -c Shell command [required]\n -f Path to package.json [required]\n\nMissing required arguments: c, f\n```\n\nDemo\n====\n\n```\n$ engineer -f package.json -c 'npm ls'\nlocal versions: [\"0.6.19\"]\nLocal version 0.6.19 satisfies range >=0.6.0 <0.7.0\nrunning cmd: [\"./node_modules/nave/nave.sh\",\"use\",\"0.6.19\",\"npm\",\"ls\"]\nnode-engineer@0.1.0 /Users/nialljohiggins/projects/node-engineer\n├── chai@1.0.4 extraneous\n├─┬ mocha@1.2.0 extraneous\n│ ├── commander@0.5.2 \n│ ├── debug@0.7.0 \n│ ├── diff@1.0.2 \n│ ├── growl@1.5.1 \n│ └─┬ jade@0.20.3 \n│ └── mkdirp@0.3.3 \n├── nave@0.2.13 \n├─┬ optimist@0.3.4 \n│ └── wordwrap@0.0.2 \n└── semver@1.0.14 \n```\n\nCredits\n=======\n\nThis is a glue package which relies on:\n\n* [Nave by IsaacS](https://github.com/isaacs/nave)\n* [semver by IsaacS](https://github.com/isaacs/node-semver)\n\n\n","maintainers":[{"name":"niallo","email":"nialljohiggins@gmail.com"}],"time":{"modified":"2012-06-29T18:06:56.176Z","created":"2012-06-24T21:47:57.426Z","0.1.0":"2012-06-24T21:48:01.397Z","0.2.0":"2012-06-24T22:13:33.522Z","0.2.1":"2012-06-24T22:23:42.064Z","0.2.2":"2012-06-25T06:14:16.177Z","0.2.3":"2012-06-25T06:25:17.608Z","0.2.4":"2012-06-25T17:47:24.168Z","0.2.5":"2012-06-25T18:05:39.480Z","0.2.6":"2012-06-25T18:25:01.248Z","0.2.7":"2012-06-27T22:58:29.582Z","0.2.8":"2012-06-29T18:06:56.176Z"},"author":{"name":"Niall O'Higgins","email":"niallo@unworkable.org"},"_id":"node-engineer","_rev":"1-663adbb9377c878798c9a86222d0b184"}ÿdocument-storeÿnjrpc˜{"id":"njrpc","rev":"1-5134f161768b264f8b3a6e5c0f78c631","rev_tree":[{"pos":1,"ids":["5134f161768b264f8b3a6e5c0f78c631",{"status":"available"},[]]}],"rev_map":{"1-5134f161768b264f8b3a6e5c0f78c631":3523},"winningRev":"1-5134f161768b264f8b3a6e5c0f78c631","deleted":false,"seq":3523}ÿby-sequenceÿ0000000000003523Á={"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.1":{"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","version":"1.0.1","repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"main":"jrpc.js","engines":{"node":">= v0.4.0"},"dependencies":{},"devDependencies":{},"scripts":{"test":"node test/test.js"},"_npmUser":{"name":"longlho","email":"holevietlong@gmail.com"},"_id":"njrpc@1.0.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"eedbbd255caf5e6365a98402184f1d2b46fbf306","tarball":"http://registry.npmjs.org/njrpc/-/njrpc-1.0.1.tgz"},"maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}],"directories":{}},"1.0.2":{"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","version":"1.0.2","repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"main":"njrpc.js","engines":{"node":">= v0.4.0"},"dependencies":{},"devDependencies":{},"scripts":{"test":"node test/test.js"},"_npmUser":{"name":"longlho","email":"holevietlong@gmail.com"},"_id":"njrpc@1.0.2","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"0c63f3bb23412519a9897ee005182a950e9adb1f","tarball":"http://registry.npmjs.org/njrpc/-/njrpc-1.0.2.tgz"},"maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}],"directories":{}},"1.0.3":{"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","version":"1.0.3","repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"main":"njrpc.js","engines":{"node":">= v0.4.0"},"dependencies":{},"devDependencies":{"vows":"latest"},"scripts":{"test":"node test/test.js"},"_npmUser":{"name":"longlho","email":"holevietlong@gmail.com"},"_id":"njrpc@1.0.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"65f732bcfb08d1c51d3a2572f901ccc5817fa6b9","tarball":"http://registry.npmjs.org/njrpc/-/njrpc-1.0.3.tgz"},"maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}]},"1.0.4":{"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","version":"1.0.4","repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"main":"njrpc.js","engines":{"node":">= v0.4.0"},"dependencies":{},"devDependencies":{"vows":"latest"},"scripts":{"test":"vows test/test.js --spec"},"_npmUser":{"name":"longlho","email":"holevietlong@gmail.com"},"_id":"njrpc@1.0.4","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"594b614588d14c000f1fa73333241aecbea546d4","tarball":"http://registry.npmjs.org/njrpc/-/njrpc-1.0.4.tgz"},"maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}]},"1.1.1":{"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"contributors":[{"name":"Krasen Borisov @kraz"}],"name":"njrpc","description":"JSON-RPC v2.0 implementation in NodeJS","version":"1.1.1","repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"main":"njrpc.js","engines":{"node":">= v0.6.0"},"dependencies":{},"devDependencies":{"vows":"latest"},"scripts":{"test":"vows test/test.js --spec"},"_npmUser":{"name":"longlho","email":"holevietlong@gmail.com"},"_id":"njrpc@1.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1d44be12a65f755176b70938d7bf0999aa705d30","tarball":"http://registry.npmjs.org/njrpc/-/njrpc-1.1.1.tgz"},"maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}]}},"readme":"# Overview\nThis is a JSON-RPC protocol implementation in NodeJS that follows JSON-RPC 2.0 specs. The good and also bad thing about this library is that it enforces method handler modules to have a certain convention/design pattern. However, it allows the server to automatically extract documentation from the handler (Introspection). This library is still under development.\n\n## Features\n- Handles GET/POST requests\n- Better error feedback\n- Allows method namespacing (Module.method)\n- Allows exposure of all methods inside a module\n- Authentication can be achieved by giving a preHandle function\n- Introspection (in progress)\n\n## Installation\nThe usual `npm install njrpc` or if you prefer, you can grab the source/fork it and make changes yourself.\n\n## Usage\nHandlers that can be registered with njrpc should have a name attribute in the instance. A sample handler can be found in handler.js.\n\nThe best design pattern to use with this server is the Module design pattern.\n\n### njrpc.register(modules)\nRegisters an array of modules/a single module, which should have `name` as the namespace of the module.\n\n### njrpc.addCustomPath(url, handlerFn)\nAdd `handlerFn` to a custom path, for example '/version' can return the version number as plain text instead of a JSON request.\n`handlerFn` will have 2 arguments: \n\n- `req`: Request object\n- `res`: Response object to write to\n\n### njrpc.output(res, [jsonResponse])\nActually write the JSON response out to the pipe. This can also be overridden to write something else.\n\n### njrpc.handle(req, res, [preHandleFn])\nHandles a request & response, JSON-RPC style. `preHandleFn` is used to manipulate the JSON request before it gets pushed down to the Handler level. `preHandleFn` takes a single JSON request object as the argument (after parsing and whitelisting)\n\n## Examples\n\n### Simple EchoHandler that echoes whatever it receives\n\n\tvar EchoHandler = function () {\n\t\t\treturn {\n\t\t\t\tname : 'EchoHandler',\n\t\t\t\techo : function (str) {\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tjrpcServer = require('./njrpc'),\n\t\thttp = require('http');\n\t\n\tjrpcServer.registerModule(new EchoHandler());\n\thttp.createServer(function(req, res) {\n\t\tjrpcServer.handle(req, res);\t\n\t}).listen(8080);\n\t\n### Authenticated Echo Handler that still echoes, but needs a user & token\n\n\tvar AuthenticatedEchoHandler = function () {\n\t\t\treturn {\n\t\t\t\tname : 'AuthenticatedEchoHandler',\n\t\t\t\techo : function(context, str) {\n\t\t\t\t\tif (!context.user || !context.token) {\n\t\t\t\t\t\tthrow new Error(\"This call is unauthenticated\");\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tpreHandler = function (jsonReq) {\n\t\t\tif (jsonReq.headers) {\n\t\t\t\tif (Array.isArray(jsonReq.params)) {\n\t\t\t\t\tjsonReq.params.unshift(jsonReq.headers);\n\t\t\t\t} else {\n\t\t\t\t\tjsonReq.params.context = jsonReq.headers;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tjrpcServer = require('./njrpc'),\n\t\thttp = require('http');\n\t\n\tjrpcServer.registerModule(new AuthenticatedEchoHandler());\n\thttp.createServer(function(req, res) {\n\t\tjrpcServer.handle(req, res, preHandler);\t\n\t}).listen(8080);\n\n","maintainers":[{"name":"longlho","email":"holevietlong@gmail.com"}],"time":{"modified":"2012-06-25T13:46:16.038Z","created":"2011-11-09T18:56:26.142†øä_ùZ","1.0.1":"2011-11-09T18:56:26.685Z","1.0.2":"2011-12-04T22:06:48.665Z","1.0.3":"2011-12-24T18:51:43.999Z","1.0.4":"2012-02-29T04:51:49.125Z","1.1.1":"2012-06-25T13:46:16.038Z"},"author":{"name":"Long Ho","email":"holevietlong@gmail.com","url":"www.azndezign.com"},"repository":{"type":"git","url":"git://github.com/longlho/node-jsonrpc.git"},"_id":"njrpc","_rev":"1-5134f161768b264f8b3a6e5c0f78c631"}ÿdocument-storeÿnimrod-nodež{"id":"nimrod-node","rev":"1-37aeac5dc0166668e308f82debae394f","rev_tree":[{"pos":1,"ids":["37aeac5dc0166668e308f82debae394f",{"status":"available"},[]]}],"rev_map":{"1-37aeac5dc0166668e308f82debae394f":3522},"winningRev":"1-37aeac5dc0166668e308f82debae394f","deleted":false,"seq":3522}ÿby-sequenceÿ0000000000003522ª1{"name":"nimrod-node","description":"nimrod-node is an implementation of a Nimrod (Not Invasive MetRics, Oh Dear!) client for NodeJS.","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.0":{"name":"nimrod-node","version":"0.1.0","description":"nimrod-node is an implementation of a Nimrod (Not Invasive MetRics, Oh Dear!) client for NodeJS.","homepage":"http://github.com/lukewh/nimrod-node","author":{"name":"Luke Wesley-Holley","email":"luke@lukewh.com","url":"http://lukewh.com"},"keywords":["nimrod","logging","metrics"],"main":"./lib/nimrod-node.js","engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/lukewh/nimrod-node.git"},"bugs":{"url":"https://github.com/lukewh/nimrod-node/issues"},"licenses":[{"type":"MIT"}],"devDependencies":{"nodeunit":"latest"},"scripts":{"test":"nodeunit ./test/all.js"},"dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"Lukewh","email":"luke@lukewh.com"},"_id":"nimrod-node@0.1.0","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"562e510b491b89079bd919754459c984c72728d8","tarball":"http://registry.npmjs.org/nimrod-node/-/nimrod-node-0.1.0.tgz"},"maintainers":[{"name":"Lukewh","email":"luke@lukewh.com"}]},"0.1.11":{"name":"nimrod-node","version":"0.1.11","description":"nimrod-node is an implementation of a Nimrod (Not Invasive MetRics, Oh Dear!) client for NodeJS.","homepage":"http://github.com/lukewh/nimrod-node","author":{"name":"Luke Wesley-Holley","email":"luke@lukewh.com","url":"http://lukewh.com"},"keywords":["nimrod","logging","metrics"],"main":"./lib/nimrod-node.js","engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/lukewh/nimrod-node.git"},"bugs":{"url":"https://github.com/lukewh/nimrod-node/issues"},"licenses":[{"type":"MIT"}],"devDependencies":{"nodeunit":"latest"},"scripts":{"test":"nodeunit ./test/all.js"},"readme":"# Nimrod-Node\n\nThe Nimrod-Node project provides an easy way to print Nimrod logs from Nodejs.\nFor more information about Nimrod see [http://sbtourist.github.com/nimrod/]\n\n# Installation\n ``npm install nimrod-node``\n \n# Include\n ``var Nimrod = require('nimrod-node'),\n n = new Nimrod('/path/to/log/file.log');``\n \n# Methods\n## n.logAlert(name, value, tags)\n\nA wrapper for n.log().\n\nProduces:\n\n ``[nimrod][123456789][alert][name][value][tags]``\n\n## n.logCounter(name, value, tags)\n\nA wrapper for n.log().\n\nProduces:\n\n ``[nimrod][123456789][counter][name][value][tags]``\n\n## n.logGauge(name, value, tags)\nA wrapper for n.log().\nProduces:\n\n ``[nimrod][123456789][gauge][name][value][tags]``\n\n## n.startTimer(name, tags)\n\nA wrapper for n.log().\n\nProduces:\n\n ``[nimrod][123456789][timer][name][start][tags]``\n\n## n.stopTimer(name)\n\nA wrapper for n.log().\n\nProduces:\n\n ``[nimrod][123456789][timer][name][stop]``\n\n## n.end()\n\nStops all timers that haven't been manually stopped.\n\nProduces:\n\n ``[nimrod][123456789][timer][name][stop]``\n\n## n.log(metric, name, value, tags)\n\nProduces:\n\n ``[nimrod][123456789][metric][name][value][tags]``\n\n# Feedback\n\nFor everything Nimrod-related, join the nimrod-user group: http://groups.google.com/group/nimrod-user\n\n# License\n\nCopyright (c) 2011-2012 Luke Wesley-Holley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"nimrod-node@0.1.11","dist":{"shasum":"29eb32dedc5edbe95517612ec27378ded96ccc4f","tarball":"http://registry.npmjs.org/nimrod-node/-/nimrod-node-0.1.11.tgz"},"maintainers":[{"name":"Lukewh","email":"luke@lukewh.com"}]}},"readme":"# Nimrod-Node\n\nThe Nimrod-Node project provides an easy way to print Nimrod logs from Nodejs.\n\n# Feedback\n\nFor everything Nimrod-related, join the nimrod-user group: http://groups.google.com/group/nimrod-user\n\n# License\n\nCopyright (c) 2011-2012 Luke Wesley-Holley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lukewh","email":"luke@lukewh.com"}],"time":{"modified":"2012-07-10T13:42:49.086Z","created":"2012-06-28T09:07:20.406Z","0.1.0":"2012-06-28T09:07:21.888Z","0.1.11":"2012-07-10T13:42:49.086Z"},"author":{"name":"Luke Wesley-Holley","email":"luke@lukewh.com","url":"http://lukewh.com"},"repository":{"type":"git","url":"git://github.com/lukewh/nimrod-node.git"},"_id":"nimrod-node","_rev":"1-37aeac5dc0166668e308f82debae394f"}ÿdocument-storeÿnetasqsyslogŸ{"id":"netasqsyslog","rev":"1-5146559881dedbd154d9867926c55a00","rev_tree":[{"pos":1,"ids":["5146559881dedbd154d9867926c55a00",{"status":"available"},[]]}],"rev_map":{"1-5146559881dedbd154d9867926c55a00":3521},"winningRev":"1-5146559881dedbd154d9867926c55a00","deleted":false,"seq":3521}ÿby-sequenceÿ0000000000003521ù{"name":"netasqsyslog","description":"Syslog for NETASQ security appliances","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"netasqsyslog","description":"Syslog for NETASQ security appliances","version":"0.1.1","author":{"name":"Sebastien Dolard","email":"sdolard@gmail.com"},"email":"sdolard@gmail.com","keywords":["netasq","syslog","log"],"bin":{"nnsylog":"./bin/nnsyslog.js"},"repository":{"type":"git","url":"git://github.com/sdolard/node-netasqsyslog.git"},"main":"lib/netasqsyslog","license":"MIT","scripts":{"test":"vows test/vows*.js --spec"},"dependencies":{"posix-getopt":">= 0.0.1","logtofile":">= 0.1.0","vows":">= 0.6.2","pkginfo":">= 0.2.x"},"engines":{"node":">= 0.6.x"},"bugs":{"url":"https://github.com/sdolard/node-netasqsyslog/issues"},"licenses":[{"type":"MIT","url":"https://raw.github.com/sdolard/node-netasqsyslog/master/LICENSE"}],"devDependencies":{},"homepage":"http://github.com/sdolard/node-netasqsyslog/","_npmUser":{"name":"sdolard","email":"sdolard@gmail.com"},"_id":"netasqsyslog@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"de608e61fe6c24a881914a4f5bd5ea7a84348f54","tarball":"http://registry.npmjs.org/netasqsyslog/-/netasqsyslog-0.1.1.tgz"},"maintainers":[{"name":"sdolard","email":"sdolard@gmail.com"}]}},"readme":"# node-netasqsyslog\n\nA NETASQ security appliances syslog.\n\n* http://www.netasq.com\n* http://nodejs.org\n\n## Installation with npm > TODO\n### Installing npm (node package manager: http://npmjs.org/)\n\n```\ncurl http://npmjs.org/install.sh || sh\t\n```\n\n### Installing netasqsyslog\n\n```\n[sudo] npm install [-g] netasqsyslog\n```\nnncli (bin) will be only available with global (-g) option.\n\n\n## Usage\n### Basic \n```javascript\n \n\t\t\n```\n\n### Examples\n* bin/nnsyslog.js\n\n## Exports \n\n## Known issues\n\n\n## Test\nJust run test/run_test.js\n\n\n## License\nnode-netasqsyslog is licensed under the MIT license.","maintainers":[{"name":"sdolard","email":"sdolard@gmail.com"}],"time":{"modified":"2012-03-22T15:16:40.112Z","created":"2012-03-22T15:16:37.152Z","0.1.1":"2012-03-22T15:16:40.112Z"},"author":{"name":"Sebastien Dolard","email":"sdolard@gmail.com"},"repository":{"type":"git","url":"git://github.com/sdolard/node-netasqsyslog.git"},"_id":"netasqsyslog","_rev":"1-5146559881dedbd154d9867926c55a00"}ÿdocument-storeÿnestless›{"id":"nestless","rev":"1-37353114506c5a0ad5e4a264d5e56ab1","rev_tree":[{"pos":1,"ids":["37353114506c5a0ad5e4a264d5e56ab1",{"status":"available"},[]]}],"rev_map":{"1-37353114506c5a0ad5e4a264d5e56ab1":3520},"winningRev":"1-37353114506c5a0ad5e4a264d5e56ab1","deleted":false,"seq":3520}ÿby-sequenceÿ0000000000003520Ú“{"name":"nestless","description":"Async callback flattening JS rewriter","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.0":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.0.0","main":"nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"script":{"test":"make test"},"devDependencies":{"ansi-color":"*"},"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.0.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"0f936143280e2adb0b6186079fc4bd07938a23a6","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.0.0.tgz"},"readme":"","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.0.1":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.0.1","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"ac5ac7471ae7597228d9994e63fc4c13d19402ca","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.0.1.tgz"},"readme":"# Nestless.js\n\nRewrites synchronous-style flattened JS into callback-y JS.\n\nSample input:\n\n function cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n return contents;\n }\n\nbecomes:\n\n function cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n return cb(null, contents);\n }); }); }\n\nThe transformation is braindead but it will always **preserve line numbers**.\n\nEvery transformed function must take a last parameter called `callback` or `cb` and contain at least one arrow binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/) or write it out manually.\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n Use `yield` instead of `return` if you want control flow to fall through.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.0.2":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.0.2","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.0.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"03e90665a8cf6f894744f49100fc9689678a631f","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.0.2.tgz"},"readme":"# Nestless.js\n\nRewrites synchronous-style flattened JS into callback-y JS.\n\nSample input:\n\n function cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n return contents;\n }\n\nbecomes:\n\n function cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n return cb(null, contents);\n }); }); }\n\nThe transformation is braindead but it will always **preserve line numbers**.\n\nEvery transformed function must take a last parameter called `callback` or `cb` and contain at least one arrow binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/) or write it out manually.\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n Use `yield` instead of `return` if you want control flow to fall through.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.1.0":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.1.0","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"19c83574dbe49650f0e7ef5ce322c9a1eadef40e","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.1.0.tgz"},"readme":"# Nestless.js\n\nRewrites synchronous-style flattened JS into callback-y JS.\n\nSample input:\n\n function cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n return contents;\n }\n\nbecomes:\n\n function cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n return cb(null, contents);\n }); }); }\n\nThe transformation is braindead but it will always **preserve line numbers**.\n\nEvery transformed function must take a last parameter called `callback` or `cb` and contain at least one arrow binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/).\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n\n## Meta\n\nInstall with `npm install -g nestless`.\n\nMany thanks to Mozilla for [Narcissus](https://github.com/mozilla/narcissus/) which parses the JavaScript and provides token boundaries for rewriting. Relevant bits of Narcissus have been patched and bundled with Nestless, and it assumes the same license.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.1.1":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.1.1","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.1.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"474d956c66f5a77e1d7bd591dd336546350f1f8f","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.1.1.tgz"},"readme":"# Nestless.js\n\nRewrites a flat synchronous-style JS variant into proper callback-y JS **preserving line numbers**.\n\nSample input:\n\n```js\nfunction cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n\n return contents;\n}\n```\n\nbecomes:\n\n```js\nfunction cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n\n return cb(null, contents);\n}); }); }\n```\n\nThe transformation is opt-in per function. Every transformed function must take a last parameter called `callback` or `cb` and contain at least one `<-` binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/).\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n\n## Meta\n\nInstall with `npm install -g nestless`. This should put nestless in your npm bin.\n\nMany thanks to Brendan Eich and Mozilla for [Narcissus](https://github.com/mozilla/narcissus/) which parses the JavaScript and provides token boundaries for rewriting. Relevant bits of Narcissus have been patched and bundled with Nestless, and it assumes the same license.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.1.2":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.1.2","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.1.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"b24619153cb403272bf8233460eb0c55c6f118b7","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.1.2.tgz"},"readme":"# Nestless.js\n\nRewrites a flat synchronous-style JS variant into proper callback-y JS **preserving line numbers**.\n\nSample input:\n\n```js\nfunction cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n\n return contents;\n}\n```\n\nbecomes:\n\n```js\nfunction cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n\n return cb(null, contents);\n}); }); }\n```\n\nThe transformation is opt-in per function. Every transformed function must take a last parameter called `callback` or `cb` and contain at least one `<-` binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/).\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n\n## Meta\n\nInstall with `npm install -g nestless`. This should put nestless in your npm bin.\n\nMany thanks to Brendan Eich and Mozilla for [Narcissus](https://github.com/mozilla/narcissus/) which parses the JavaScript and provides token boundaries for rewriting. Relevant bits of Narcissus have been patched and bundled with Nestless, and it assumes the same license.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]},"0.1.3":{"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"name":"nestless","description":"Async callback flattening JS rewriter","version":"0.1.3","main":"nestless","homepage":"https://github.com/lalcmellkmal/nestless","repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"engines":{"node":"~0.6.2"},"bin":{"nestless":"nestless.js"},"script":{"test":"make test"},"directories":{"narcissus":"narcissus"},"devDependencies":{"ansi-color":"*"},"preferGlobal":true,"_npmUser":{"name":"lalc","email":"lalc@doushio.com"},"_id":"nestless@0.1.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"c324eb794ca2dd0ee34f1065a253f6cc383bad8a","tarball":"http://registry.npmjs.org/nestless/-/nestless-0.1.3.tgz"},"readme":"# Nestless.js\n\nRewrites a flat synchronous-style JS variant into proper callback-y JS **preserving line numbers**.\n\nSample input:\n\n```js\nfunction cat(encoding, cb) {\n filename <- askUser(\"Filename? \");\n contents <- fs.readFile(filename, encoding);\n\n if (contents.match(/piracy/))\n throw \"TAKEN DOWN\";\n\n return contents;\n}\n```\n\nbecomes:\n\n```js\nfunction cat(encoding, cb) {\n askUser(\"Filename? \", function (err, filename) { if (err) return cb(err);\n fs.readFile(filename, encoding, function (err, contents) { if (err) return cb(err);\n\n if (contents.match(/piracy/))\n return cb(\"TAKEN DOWN\");\n\n return cb(null, contents);\n}); }); }\n```\n\nThe transformation is opt-in per function. Every transformed function must take a last parameter called `callback` or `cb` and contain at least one `<-` binding.\n\nAfter the first arrow binding, any `return` or `throw` in the same function *(not in contained functions!)* will be transformed to a callback invocation.\nSee the test folder for more examples.\n\n## BONUS\n\nLets you use Pythonic \"\"\"multi-line string literals\"\"\".\nHowever, it's currently hacked in with a preprocessor. Don't put \"\"\" in\ncomments or normal string literals.\n\n## WARNING\n\n* Nestless is very dumb and hacky and comes without warranty.\n It only handles a certain (common) case.\n Do not use nestless-generated code for anything important without examining the transformed output.\n* Loops are right out.\n Use [async.js](https://github.com/caolan/async) or [TameJS](http://tamejs.org/).\n* Once you `return` a value, nestless tries to stop all execution in the function by possibly inserting more `return`s.\n Strange control flows may break this.\n I assume no responsibility if your callback never gets called or, worse, gets called multiple times.\n\n## Meta\n\nInstall with `npm install -g nestless`. This should put nestless in your npm bin.\n\nMany thanks to Brendan Eich and Mozilla for [Narcissus](https://github.com/mozilla/narcissus/) which parses the JavaScript and provides token boundaries for rewriting. Relevant bits of Narcissus have been patched and bundled with Nestless, and it assumes the same license.\n","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}]}},"readme":"","maintainers":[{"name":"lalc","email":"lalc@doushio.com"}],"time":{"modified":"2012-06-05T09:48:30.585Z","created":"2012-01-30T08:07:53.011Z","0.0.0":"2012-01-30T08:07:54.203Z","0.0.1":"2012-01-30T22:47:41.070Z","0.0.2":"2012-01-31T00:15:07.462Z","0.1.0":"2012-01-31T02:43:45.748Z","0.1.1":"2012-01-31T03:20:27.173Z","0.1.2":"2012-02-11T01:53:58.806Z","0.1.3":"2012-06-05T09:48:30.585Z"},"author":{"name":"Lal'C Mellk Mal","email":"lalc@doushio.com"},"repository":{"type":"git","url":"git@github.com:lalcmellkmal/nestless.git"},"_id":"nestless","_rev":"1-37353114506c5a0ad5e4a264d5e56ab1"})ÿdocument-storeÿnervous_plugin_rabbitmqª{"id":"nervous_plugin_rabbitmq","rev":"1-2878bfa3513901c5cb6ed7ed6b2ceeb6","rev_tree":[{"pos":1,"ids":["2878bfa3513901c5cb6ed7ed6b2ceeb6",{"status":"available"},[]]}],"rev_map":{"1-2878bfa3513901c5cb6ed7ed6b2ceeb6":3519},"winningRev":"1-2878bfa3513901c5cb6ed7ed6b2ceeb6","deleted":false,"seq":3519}ÿby-sequenceÿ0000000000003519ï {"name":"nervous_plugin_rabbitmq","description":"A Nervous plugin for monitoring RabbitMQ","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Erik Rothman","email":"erik.rothman@recordedfuture.com"},"name":"nervous_plugin_rabbitmq","description":"A Nervous plugin for monitoring RabbitMQ","version":"0.0.0","repository":{"type":"git","url":"git://github.com/ruffman/nervous_plugin_rabbitmq.git"},"engines":{"node":"~0.6.7"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"ruffman","email":"erik.rothman@recordedfuture.com"},"_id":"nervous_plugin_rabbitmq@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"2a8c3ff7342148a194e24cae7e5350127d7c3049","tarball":"http://registry.npmjs.org/nervous_plugin_rabbitmq/-/nervous_plugin_rabbitmq-0.0.0.tgz"},"readme":"","maintainers":[{"name":"ruffman","email":"erik.rothman@recordedfuture.com"}]}},"readme":"","maintainers":[{"name":"ruffman","email":"erik.rothman@recordedfuture.com"}],"time":{"modified":"2012-03-22T10:30:54.912Z","created":"2012-03-22T10:30:53.488Z","0.0.0":"2012-03-22T10:30:54.912Z"},"author":{"name":"Erik Rothman","email":"erik.rothman@recordedfuture.com"},"repository":{"type":"git","url":"git://github.com/ruffman/nervous_plugin_rabbitmq.git"},"_id":"nervous_plugin_rabbitmq","_rev":"1-2878bfa3513901c5cb6ed7ed6b2ceeb6"}ÿdocument-storeÿnconvert›{"id":"nconvert","rev":"1-8ad8bea8f7826c8b4213fed52ef69788","rev_tree":[{"pos":1,"ids":["8ad8bea8f7826c8b4213fed52ef69788",{"status":"available"},[]]}],"rev_map":{"1-8ad8bea8f7826c8b4213fed52ef69788":3518},"winningRev":"1-8ad8bea8f7826c8b4213fed52ef69788","deleted":false,"seq":3518}ÿby-sequenceÿ0000000000003518¥{"name":"nconvert","description":"Configurable type/object converter. Useful for copying properties/values to and from data transfer objects and domain objects","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.1":{"author":{"name":"Nick Fisher"},"name":"nconvert","description":"Configurable type/object converter. Useful for copying properties/values to and from data transfer objects and domain objects","version":"0.0.1","homepage":"https://github.com/nrf110/nconvert","repository":{"type":"git","url":"git://github.com/nrf110/nconvert.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{},"devDependencies":{"jasmine-node":"~1.0.20"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"nconvert@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"23551fba271050c3e2fbd8a646d5648966daed63","tarball":"http://registry.npmjs.org/nconvert/-/nconvert-0.0.1.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.0":{"author":{"name":"Nick Fisher"},"name":"nconvert","description":"Configurable type/object converter. Useful for copying properties/values to and from data transfer objects and domain objects","version":"0.1.0","homepage":"https://github.com/nrf110/nconvert","repository":{"type":"git","url":"git://github.com/nrf110/nconvert.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{},"devDependencies":{"jasmine-node":"~1.0.20"},"_npmUser":{"name":"nfisher","email":"nfiƒZK›ùsher@trafficland.com"},"_id":"nconvert@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"73753b811df859417181295b9a022fdbbbe25ce9","tarball":"http://registry.npmjs.org/nconvert/-/nconvert-0.1.0.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.2.0":{"author":{"name":"Nick Fisher"},"name":"nconvert","description":"Configurable type/object converter. Useful for copying properties/values to and from data transfer objects and domain objects","version":"0.2.0","homepage":"https://github.com/nrf110/nconvert","repository":{"type":"git","url":"git://github.com/nrf110/nconvert.git"},"main":"index","engines":{"node":"~0.6.6"},"dependencies":{},"devDependencies":{"mocha":"0.12.1","should":"0.5.1","coffee-script":"latest"},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"nconvert@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"c80ece0157291321c21de770d47300bf0cbf6ee2","tarball":"http://registry.npmjs.org/nconvert/-/nconvert-0.2.0.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.2.1":{"author":{"name":"Nick Fisher"},"name":"nconvert","description":"Configurable type/object converter. Useful for copying properties/values to and from data transfer objects and domain objects","version":"0.2.1","homepage":"https://github.com/nrf110/nconvert","repository":{"type":"git","url":"git://github.com/nrf110/nconvert.git"},"main":"index","engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"latest","should":"latest","coffee-script":"latest"},"_id":"nconvert@0.2.1","dist":{"shasum":"14c5987fdd59906712bc538beb5c91c875f2d671","tarball":"http://registry.npmjs.org/nconvert/-/nconvert-0.2.1.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]}},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}],"time":{"modified":"2012-06-29T21:36:17.455Z","created":"2012-01-31T11:48:30.631Z","0.0.1":"2012-01-31T11:48:31.225Z","0.1.0":"2012-02-07T15:40:54.122Z","0.2.0":"2012-02-18T20:39:09.005Z","0.2.1":"2012-06-29T21:36:17.454Z"},"author":{"name":"Nick Fisher"},"repository":{"type":"git","url":"git://github.com/nrf110/nconvert.git"},"_id":"nconvert","_rev":"1-8ad8bea8f7826c8b4213fed52ef69788"}ÿdocument-storeÿnclosure›{"id":"nclosure","rev":"1-5b0bf0f59a93921e4cacd041be017087","rev_tree":[{"pos":1,"ids":["5b0bf0f59a93921e4cacd041be017087",{"status":"available"},[]]}],"rev_map":{"1-5b0bf0f59a93921e4cacd041be017087":3517},"winningRev":"1-5b0bf0f59a93921e4cacd041be017087","deleted":false,"seq":3517}ÿby-sequenceÿ0000000000003517Å€{"name":"nclosure","description":"Server-side Google Closure with Node.js","dist-tags":{"latest":"0.4.3"},"versions":{"0.3.1":{"name":"nclosure","description":"Server-side Google Closure with Node.js","author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"url":"https://github.com/gatapia/nclosure","directories":{"lib":"./lib","bin":"./bin","example":"./examples"},"dependencies":{"cli":"*"},"main":"./lib/nclosure","version":"0.3.1","engines":{"node":">=0.3.0-pre"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"licenses":[{"type":"Apache License, Version 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"_id":"nclosure@0.3.1","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.8-pre","bin":{"ncstyle":"bin/ncstyle.js","nodetestsrunner":"bin/nodetestsrunner.js","closure.json":"bin/closure.json","nodetestinstance":"bin/nodetestinstance.js","ncdoc":"bin/ncdoc.js","deps":"bin/deps.js","nctest":"bin/nctest.js","nccompile":"bin/nccompile.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"cb4b7675b431bf606a174c3b839f3bdb555406c1","tarball":"http://registry.npmjs.org/nclosure/-/nclosure-0.3.1.tgz"}},"0.4.0":{"name":"nclosure","description":"Server-side Google Closure with Node.js","author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"url":"https://github.com/gatapia/nclosure","directories":{"lib":"./third_party","bin":"./bin","example":"./examples"},"dependencies":{"cli":"*"},"main":"./lib/nclosure","version":"0.4.0","engines":{"node":">=0.3.0-pre"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"licenses":[{"type":"Apache License, Version 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"_id":"nclosure@0.4.0","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.8-pre","bin":{"ncstyle":"bin/ncstyle.js","nodetestsrunner":"bin/nodetestsrunner.js","closure.json":"bin/closure.json","nodetestinstance":"bin/nodetestinstance.js","ncdoc":"bin/ncdoc.js","deps":"bin/deps.js","nctest":"bin/nctest.js","nccompile":"bin/nccompile.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"eb777dfffed1dc79c2748b68313b846edeeb3bf5","tarball":"http://registry.npmjs.org/nclosure/-/nclosure-0.4.0.tgz"}},"0.4.1":{"name":"nclosure","description":"Server-side Google Closure with Node.js","author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"url":"https://github.com/gatapia/nclosure","directories":{"lib":"./third_party","bin":"./bin","example":"./examples"},"dependencies":{"cli":"*"},"main":"./lib/nclosure","version":"0.4.1","engines":{"node":">=0.3.0-pre"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"licenses":[{"type":"Apache License, Version 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"_id":"nclosure@0.4.1","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.8-pre","bin":{"ncstyle":"bin/ncstyle.js","nodetestsrunner":"bin/nodetestsrunner.js","closure.json":"bin/closure.json","nodetestinstance":"bin/nodetestinstance.js","ncdoc":"bin/ncdoc.js","deps":"bin/deps.js","nctest":"bin/nctest.js","nccompile":"bin/nccompile.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"051e5393c1777454d647d35591ef93eefea2311f","tarball":"http://registry.npmjs.org/nclosure/-/nclosure-0.4.1.tgz"}},"0.4.2":{"name":"nclosure","description":"Server-side Google Closure with Node.js","author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"url":"https://github.com/gatapia/nclosure","directories":{"lib":"./third_party","bin":"./bin","example":"./examples"},"dependencies":{"cli":"*"},"main":"./lib/nclosure","version":"0.4.2","engines":{"node":">=0.3.0-pre"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"licenses":[{"type":"Apache License, Version 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"_id":"nclosure@0.4.2","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.8-pre","bin":{"ncstyle":"bin/ncstyle.js","nodetestsrunner":"bin/nodetestsrunner.js","closure.json":"bin/closure.json","nodetestinstance":"bin/nodetestinstance.js","ncdoc":"bin/ncdoc.js","deps":"bin/deps.js","nctest":"bin/nctest.js","nccompile":"bin/nccompile.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"a19e645836298848bec88e918b368b61b80884c6","tarball":"http://registry.npmjs.org/nclosure/-/nclosure-0.4.2.tgz"}},"0.4.3":{"name":"nclosure","description":"Server-side Google Closure with Node.js","author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"url":"https://github.com/gatapia/nclosure","directories":{"lib":"./third_party","bin":"./bin","example":"./examples"},"dependencies":{"cli":"*"},"main":"./lib/nclosure","version":"0.4.3","engines":{"node":">=0.3.0-pre"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"licenses":[{"type":"Apache License, Version 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"bin":{"closure.json":"bin\\closure.json","deps.js":"bin\\deps.js","nccompile.js":"bin\\nccompile.js","ncdoc.js":"bin\\ncdoc.js","ncstyle.js":"bin\\ncstyle.js","nctest.js":"bin\\nctest.js","nodetestinstance.js":"bin\\nodetestinstance.js","nodetestsrunner.js":"bin\\nodetestsrunner.js"},"readme":"# nclosure: Server Side Google Closure Tools in Node.js\r\n\r\n## Overview\r\n\r\nThe [Google Closure Tools](http://code.google.com/closure/) are a powerful set\r\nof utilities that aim to make large scale JavaScript development more\r\nmanageable. This project brings the power of the closure tools to the\r\n[node](http://www.nodejs.org)\r\nplatform. The closure tools gives developers the utilities required to improve\r\ncode design and maintainability by providing support for:\r\n\r\n* Enhanced Modularisation (Both logically and physically)\r\n* Better Encapsulation\r\n* Type Safety\r\n* Interfaces and Mixins\r\n* Rich Source Documentation\r\n* A Huge Library of Production Ready Utilities, including:\r\n\t* Collections / Arrays\r\n\t* Testing / Mocking\r\n\t* Async Development\r\n\t* Encryption\r\n\t* Date / Date Range Support\r\n\t* Events\r\n\t* Internationalisation\r\n\t* Locale\r\n\t* Math\r\n\t* String\r\n\t* Structs\r\n\t* [More...](http://closure-library.googlecode.com/svn/docs/index.html)\r\n\r\n\r\n## Installation (core)\r\n\r\n* Install `nclosure`. By:\r\n\r\n\t\t\tnpm install nclosure\r\n\r\n* Or better yet, by getting the source:\r\n\r\n\t\t\tgit clone git://github.com/gatapia/nclosure.git\r\n\t\t\tcd nclosure\r\n\t\t\tnpm link NOTE: npm link does not work on windows! :(\r\n\r\n## Closure Library\r\n\r\nFor full details on utilities provided in the closure library refer to the\r\n[official docs](http://closure-library.googlecode.com/svn/docs/index.html).\r\nTo use any utility provided in the closure library just:\r\n\r\n1. Include `nclosure` in your application by `require`(ing) it and initialising\r\nit.\r\n\r\n\t\trequire('nclosure').nclosure(); // nclosure() initialises the framework\r\n\r\n2. `goog.require` any namespace from the Closure library.\r\n\r\n goog.require('goog.structs.Trie');\r\n\r\n3. That's it, use the imported namespaces anywhere in your file.\r\n\r\n var trie = new goog.structs.Trie();\r\n\r\n## Closure Compiler\r\n\r\nUsing the [Closure Compiler](http://code.google.com/closure/compiler/) requires\r\na small investment in learning but once you have worked your way through the\r\n[docs](http://code.google.com/closure/compiler/) you can take advantage of the\r\ncompiler's support for:\r\n\r\n* Enhanced Code Documentation\r\n* Type Safety\r\n* Encapsulation\r\n* Modularisation\r\n* Enhanced Inheritance and Interfaces\r\n* Scalability\r\n\r\nOnce your source code is\r\n[annotated](http://code.google.com/closure/compiler/docs/js-for-compiler.html)\r\nand ready for compilation just run the following command:\r\n\r\n\t\tnccompile source.js\r\n\r\nThe `nccompile` command accepts various arguments:\r\n\r\n* -c: Create [C]ompile file - Produces a compiled .min.js file.\r\n Running your code using the compiled js file optimises your code and\r\n reduces the number of imports your system does hence improving start up\r\n time.\r\n* -d: Create [D]ependencies- Creates a deps.js file that can be used as an\r\n additionalDeps in an external project.\r\n\r\n## JSDoc Documentation\r\n\r\nTo run `nclosure`'s documentation tool simply run:\r\n\r\n ncdoc \r\n\r\nFor full documentation details please read the\r\n[official jsdoc-toolkit docs](://code.google.com/p/jsdoc-toolkit/).\r\n\r\nFor a sample source code documentation project using nclosure ncdoc see\r\nthe [node.js core libs](http://gatapia.github.com/ncnode/) as they would look\r\nif generated by nclosure.\r\n\r\n## Closure Testing\r\n\r\n`nclosure` supports testing using Closure's 'goog.testing.jsunit' test tools.\r\nTo set up a unit test simply create a test file like:\r\n\r\n #!/usr/bin/env node\r\n // You can now run the test just by executing this file\r\n require('nclosure').nclosure();\r\n\r\n goog.require('goog.testing.jsunit');\r\n // Import the code you are testing (may need an additionalDeps defined)\r\n goog.require('nclosure.examples.simple.Example');\r\n\r\n // Any testXXX function are auto-discovered and run\r\n var testFunction1 = function() {\r\n assertNotEquals(typeof(example_), 'undefined');\r\n };\r\n\r\n // Also auto discovered\r\n function testFunction2() {\r\n assertTrue(false);\r\n }\r\n\r\nIf the tests are not in the same directory as your code you will have to\r\nensure that the deps.js file of the code you are testing\r\nis declared in the closure.json file of the tests directory or passed in to the\r\ncall to `nclosure();` like:\r\n\r\n require('nclosure').nclosure({additionalDeps:['/pathToDeps/deps.js']});\r\n\r\nTo run a single test just execute:\r\n\r\n ./testSourceFile.js \r\n\r\nTo run all tests (files with the word test or suite in them) in a single\r\ndirectory (recursive) run the following command:\r\n\r\n nctest \r\n\r\nThe testing framework also supports test suite files. If you want to have a\r\ntest suite simply have an array var named suite with the files to test\r\n(relative to the suite file). I.e.\r\n\r\n // Run all the tests inside the '../examples/simple/' directory\r\n // This array can be directories or specific test (or other suite)\r\n // files\r\n var suite = ['../examples/simple/'];\r\n\r\n## Closure Linter\r\n\r\nFor detailed code style checking you can also use `nclosure`'s\r\nlinter support. To use linter you will need to download and install\r\n[Closure Linter](http://code.google.com/closure/utilities/index.html).\r\n\r\nClosure Linter checks your code against Google's own\r\n[JavaScript Style Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)\r\nwhich is a mature and highly scalable framework for developing JavaScript code.\r\n\r\nTo install Closure Linter read the following\r\n[page]( http://code.google.com/closure/utilities/docs/linter_howto.html).\r\n\r\nOnce installed simply run the following command to `linter` your code.\r\n\r\n\t\tncstyle \r\n\r\n## Node Wrappers\r\n\r\nNClosure contains a set of wrappers around the core node.js libraries. These\r\nwrappers can be used to give type safety when using these libraries. Eg:\r\n\r\n goog.provide('namespace');\r\n\r\n // Import the 'node.fs' namespace. All node core libs live inside the\r\n // 'node' namespace.\r\n goog.require('node.fs');\r\n\r\n console.log('Files: ' + node.fs.readdirSync('.'));\r\n\r\n## Advanced Configuration\r\n\r\n`nclosure` can be configured in several ways. The easiest is to modify the\r\n`bin/closure.json` file with your global settings. Settings here can be\r\nextended by placing a `closure.json` file in your source directory. You can\r\nalso place a `closure.json` in the directory running `node` (The cwd).\r\n\r\nFinally, `nclosure` can also be configured by passing an optional options\r\nobject to the `require('nclosure').nclosure(opts);` call.\r\n\r\nAll configuration files and configuration objects take the following format:\r\n\r\n {\r\n closureBasePath: Location of the closure-library. This defaults to\r\n the closure library included in this package.\r\n additionalDeps: Any additional dependency files required to run your\r\n code. These files generally point to other closure libraries.\r\n Note these deps files must have paths relative to this setting\r\n file or be absolute.\r\n compiler_jar: Path to the compiler jar you want to use. This defaults\r\n to the included compiler.jar file so only change this if you want\r\n to use a custom compiler.\r\n additionalCompileOptions: Additional compiler options,\r\n e.g.: \"['--jscomp_warning=newWarningType']\"\r\n additionalCompileRoots: These are directories containing source code\r\n that needs to be included in the compilation. If this is not\r\n included then additionalDeps is used to try to guess any additional\r\n roots required (assumes that the deps.js file is in the root folder\r\n of the source directory).\r\n jsdocToolkitDir: The location of jsdoc-toolkit. This is only required\r\n if you want to use jsdoc-toolkit to document your source code. This\r\n defaults to the jsdoc instance included in this package.\r\n additionalJSDocToolkitOptions: Additional jsdoc-toolkit options,\r\n e.g.: \"['-D=\"noGlobal:true\"']\"\r\n additionalLinterOptions: Additional gjslint and fixjsstyle options,\r\n e.g.: \"['--summary=true']\"\r\n nodeDir: The location of the node source code. This is only required\r\n if you are contributing to the nclosure project or would like to\r\n update your node-extern files.\r\n }\r\n\r\nNote: All paths can be absolute or relative to the location of the current\r\nsettings file.\r\n\r\n## More Help\r\n\r\nThe best way to get going with nclosure is to look at the nclosure code (bin,\r\nlib and examples directories). All nclosure code is annotated and should\r\ngive you a good introduction to what can be acchieved with the tool.\r\n\r\nIf you have any questions, issues, complaints, suggestions, .... just email me\r\n(guido@tapia.com.au) and I'll see what I can do to help.\r\n\r\n## Known Limitations\r\n\r\nSince the Node.js core libs are not jsdoc'ed in any way I could not give any\r\ntype safety when using these core libs.\r\n\r\nThe documentation template is lacking in several areas this will be improved\r\nin the future.\r\n\r\nLinter is a pain to instal.\r\n\r\nPoor project documentation.\r\n\r\nFor an up to date list of issues see the TODO.txt file. Later I will start an\r\nissues list on github.\r\n\r\n## License\r\n\r\nCopyright 2011 Guido Tapia (guido@tapia.com.au)\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\nhttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n","_id":"nclosure@0.4.3","dist":{"shasum":"c8c0d7737f99c7a3edc651ac193a35ff716cce2b","tarball":"http://registry.npmjs.org/nclosure/-/nclosure-0.4.3.tgz"},"maintainers":[{"name":"gatapia","email":"guido@tapia.com.au"},{"name":"bitwiseman","email":"bitwiseman@gmail.com"}]}},"maintainers":[{"name":"gatapia","email":"guido@tapia.com.au"},{"name":"bitwiseman","email":"bitwiseman@gmail.com"}],"time":{"modified":"2012-07-16T18:44:49.515Z","created":"2011-02-15T01:50:38.686Z","0.3.1":"2011-02-15T01:50:39.568Z","0.4.0":"2011-02-25T05:59:59.179Z","0.4.1":"2011-02-25T09:30:41.436Z","0.4.2":"2011-03-05T10:29:45.829Z","0.4.3":"2012-07-16T18:44:49.515Z"},"author":{"name":"Guido Tapia","email":"guido@tapia.com.au"},"repository":{"type":"git","url":"git://github.com/gatapia/nclosure.git"},"_id":"nclosure","_rev":"1-5b0bf0f59a93921e4cacd041be017087"}ÿdocument-storeÿnamespaceœ{"id":"namespace","rev":"1-bf9092783d893fa67bb6fa525db19abb","rev_tree":[{"pos":1,"ids":["bf9092783d893fa67bb6fa525db19abb",{"status":"available"},[]]}],"rev_map":{"1-bf9092783d893fa67bb6fa525db19abb":3516},"winningRev":"1-bf9092783d893fa67bb6fa525db19abb","deleted":false,"seq":3516}ÿby-sequenceÿ0000000000003516ê7{"name":"namespace","description":"Library for defining namespaced properties.","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"namespace","version":"0.0.1","description":"Library for defining namespaced properties.","keywords":["namespace","privates"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com"},"repository":{"type":"git","url":"git://github.com/Gozala/namespace.git","web":"https://github.com/Gozala/namespace"},"bugs":{"url":"http://github.com/Gozala/namespace/issues/"},"directories":{"doc":"./docs","lib":"./lib","test":"./test"},"devDependencies":{"test":">=0.0.10"},"main":"./lib/namespace.js","engines":{"node":"0.4.x","teleport":">=0.2.0"},"scripts":{"test":"node test/test-namespace.js"},"licenses":[{"type":"MPL 1.1/LGPL 2.1/GPL 2.0","url":"http://www.mozilla.org/MPL/"}],"_id":"namespace@0.0.1","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"ddd3351ad5bf07263e13b665c571a13da8f2bc03","tarball":"http://registry.npmjs.org/namespace/-/namespace-0.0.1.tgz"}},"0.0.2":{"name":"namespace","version":"0.0.2","description":"Library for defining namespaced properties.","keywords":["namespace","privates"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com"},"repository":{"type":"git","url":"git://github.com/Gozala/namespace.git","web":"https://github.com/Gozala/namespace"},"bugs":{"url":"http://github.com/Gozala/namespace/issues/"},"directories":{"doc":"./docs","lib":"./lib","test":"./test"},"devDependencies":{"test":">=0.0.10"},"main":"./lib/namespace.js","engines":{"node":"0.4.x","teleport":">=0.2.0"},"scripts":{"test":"node test/test-namespace.js"},"licenses":[{"type":"MPL 1.1/LGPL 2.1/GPL 2.0","url":"http://www.mozilla.org/MPL/"}],"_id":"namespace@0.0.2","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"9e0bfce0825aed337e10d9cd797592240c4f6a56","tarball":"http://registry.npmjs.org/namespace/-/namespace-0.0.2.tgz"}},"0.1.0":{"name":"namespace","id":"namespace","version":"0.1.0","description":"Library for defining namespaced properties.","keywords":["namespace","privates"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"repository":{"type":"git","url":"git://github.com/Gozala/namespace.git","web":"https://github.com/Gozala/namespace"},"bugs":{"url":"http://github.com/Gozala/namespace/issues/"},"devDependencies":{"test":">=0.0.10"},"main":"./namespace.js","engines":{"node":"0.4.x"},"scripts":{"test":"node test/test-namespace.js"},"licenses":[{"type":"MIT","url":"http://jeditoolkit.com/LICENSE"}],"_id":"namespace@0.1.0","dependencies":{},"_engineSupported":false,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"80529c3619da518536e203a7f29496470dac09d2","tarball":"http://registry.npmjs.org/namespace/-/namespace-0.1.0.tgz"}},"1.0.0":{"name":"namespace","id":"namespace","version":"1.0.0","description":"Library for defining namespaced properties.","keywords":["namespace","privates"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"repository":{"type":"git","url":"git://github.com/Gozala/namespace.git","web":"https://github.com/Gozala/namespace"},"bugs":{"url":"http://github.com/Gozala/namespace/issues/"},"devDependencies":{"test":">=0.2.1","repl-utils":">=1.0.3","swank-js":">=0.0.3"},"scripts":{"test":"node test/test-all.js && node --harmony_weakmaps test/test-all.js","repl":"node --harmony_weakmaps node_modules/repl-utils","swank":"node --harmony_weakmaps node_modules/swank-js"},"licenses":[{"type":"MIT","url":"http://jeditoolkit.com/LICENSE"}],"_npmUser":{"name":"gozala","email":"rfobic@gmail.com"},"_id":"namespace@1.0.0","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"eb2e2a438d2b30932b292a6bcfecd19af5066016","tarball":"http://registry.npmjs.org/namespace/-/namespace-1.0.0.tgz"},"readme":"# namespace\n\n[![Build Status](https://secure.travis-ci.org/Gozala/namespace.png)](http://travis-ci.org/Gozala/namespace)\n\nLibrary provides an API for creating sets of namespaced properties for any\ngiven objects (frozen or not). This effectively may be used for creating\nfields that are not part of object's public API, which is useful for hiding\ninternal details or for adding fields to an existing objects (Built-ins or not)\nwithout mutating them and there for any risks of naming conflicts.\n\n\n## Usage\n\nIt is recommended to use this library with enabled `WeakMap`s. On node that\nsimply means running it with additional flag: `node --harmony_weakmaps`. If\nweak maps are not available library will fallback to using imperfect weak map\nshim.\n\n```js\nvar ns = require('namespace/core').ns\nvar internals = ns()\n\ninternals(publicAPI).secret = secret\n```\n\nNamespace may be used with multiple objects:\n\n```js\nvar observable = ns()\n\nfunction Observable() {\n observable(this).observers = []\n}\nObservable.prototype.observe = function(observer) {\n observable(this).observers.push(observer)\n}\n```\n\nAlso, multiple namespaces can be used with a same object without any conflicts.\n\n```js\nvar pending = ns()\n\nfunction Eventual() {\n Observable.call(this)\n pending(this).realized = false\n}\nEventual.prototype = Object.create(Observable.prototype)\nEventual.prototype.realize = function realize(value) {\n if (!pending(this).realized) {\n obesrvable(this).observers.splice.forEach(function(observer) {\n observer(value)\n })\n }\n}\n```\n\nAccess to the namespaced properties can be shared with other code by simple\nhanding a namespace function. Although doing this across modules is not\nrecommended, for example instead of sharing `pending` namespace one could share\nfollowing function instead:\n\n```js\nexports.isRealized = function isRealized(value) {\n return pending(value).realized\n}\n```\n\nNamespaced objects create parallel inheritance chain, or more simply:\n\n```js\nvar foo = ns()\nvar ancestor = {}\n\nfoo(ancestor) === foo(Object.create(ancestor)) // => true\n```\n\nNamespaces are simply a sugar on top of ES.next [WeakMaps][] allowing you to\nassociate sets of namespaced properties to an object via weak references.\n\n## Install\n\n npm install namespace\n\n[WeakMaps]:http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps\n","maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}]}},"maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}],"time":{"modified":"2012-05-17T23:41:10.553Z","created":"2011-04-13T01:51:07.586Z","0.0.1":"2011-04-13T01:51:08.226Z","0.0.2":"2011-04-14T06:22:23.096Z","0.1.0":"2011-06-12T11:27:39.598Z","1.0.0":"2012-05-17T23:41:10.553Z"},"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"repository":{"type":"git","url":"git://github.com/Gozala/namespace.git","web":"https://github.com/Gozala/namespace"},"_id":"namespace","_rev":"1-bf9092783d893fa67bb6fa525db19abb"}ÿdocument-storeÿmuskup-jsœ{"id":"muskup-js","rev":"1-da421616a53f4f259dd8fff8287705d4","rev_tree":[{"pos":1,"ids":["da421616a53f4f259dd8fff8287705d4",{"status":"available"},[]]}],"rev_map":{"1-da421616a53f4f259dd8fff8287705d4":3515},"winningRev":"1-da421616a53f4f259dd8fff8287705d4","deleted":false,"seq":3515}ÿby-sequenceÿ0000000000003515ñ{"name":"muskup-js","description":"Mustache + coffeekup template to js-code compiler","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"muskup-js","version":"0.1.0","description":"Mustache + coffeekup template to js-code compiler","main":"muskup-js.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@github.com:vol4ok/muskup-js.git"},"keywords":["muskup","mustache","hogan","coffeekup","partials","layout","template","engine"],"author":{"name":"vol4ok"},"license":"MIT","dependencies":{"hogan.js":">=2.0.0","coffee-script":"1.x.x"},"devDependencies":{"colors":"0.6.x"},"readme":"# MUSKUP-JS\n\nMustache and coffeekup template to js-code compiler. \n\nUse twitter's [hogan.js](https://github.com/twitter/hogan.js) engine and [coffeekup](https://github.com/mauricemach/coffeekup).\n\n\n### Install\n\n`npm install muskup-js`\n\n### Example\n\n```\ncompile = require('../muskup-js')\ncompile __dirname+'/template.ck', (err, js) ->\n console.log js\n```\n\n### License\nMIT License","_id":"muskup-js@0.1.0","dist":{"shasum":"6fe4bea45eae8c18f4e1ee72914541eb77e07dc4","tarball":"http://registry.npmjs.org/muskup-js/-/muskup-js-0.1.0.tgz"},"maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]},"0.1.1":{"name":"muskup-js","version":"0.1.1","description":"Mustache + coffeekup template to js-code compiler","main":"muskup-js.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@github.com:vol4ok/muskup-js.git"},"keywords":["muskup","mustache","hogan","coffeekup","partials","layout","template","engine"],"author":{"name":"vol4ok"},"license":"MIT","dependencies":{"hogan.js":">=2.0.0","coffee-script":"1.x.x"},"devDependencies":{"colors":"0.6.x"},"readme":"# MUSKUP-JS\n\nMustache and coffeekup template to js-code compiler. \n\nUse twitter's [hogan.js](https://github.com/twitter/hogan.js) engine and [coffeekup](https://github.com/mauricemach/coffeekup).\n\n\n### Install\n\n`npm install muskup-js`\n\n### Example\n\n```\ncompile = require('../muskup-js')\ncompile __dirname+'/template.ck', (err, js) ->\n console.log js\n```\n\n### License\nMIT License","_id":"muskup-js@0.1.1","dist":{"shasum":"018c019d2fd1ce284f6c216fae2c0c2158269761","tarball":"http://registry.npmjs.org/muskup-js/-/muskup-js-0.1.1.tgz"},"maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}]}},"readme":"# MUSKUP-JS\n\nMustache and coffeekup template to js-code compiler. \n\nUse twitter's [hogan.js](https://github.com/twitter/hogan.js) engine and [coffeekup](https://github.com/mauricemach/coffeekup).\n\n\n### Install\n\n`npm install muskup-js`\n\n### Example\n\n```\ncompile = require('../muskup-js')\ncompile __dirname+'/template.ck', (err, js) ->\n console.log js\n```\n\n### License\nMIT License","maintainers":[{"name":"vol4ok","email":"admin@vol4ok.net"}],"time":{"modified":"2012-08-18T11:15:20.690Z","created":"2012-08-18T10:04:54.631Z","0.1.0":"2012-08-18T10:04:58.459Z","0.1.1":"2012-08-18T11:15:20.690Z"},"author":{"name":"vol4ok"},"repository":{"type":"git","url":"git@github.com:vol4ok/muskup-js.git"},"_id":"muskup-js","_rev":"1-da421616a53f4f259dd8fff8287705d4"}ÿdocument-storeÿmt-stats›{"id":"mt-stats","rev":"1-308e7893c44912a66c576e491fe694c3","rev_tree":[{"pos":1,"ids":["308e7893c44912a66c576e491fe694c3",{"status":"available"},[]]}],"rev_map":{"1-308e7893c44912a66c576e491fe694c3":3514},"winningRev":"1-308e7893c44912a66c576e491fe694c3","deleted":false,"seq":3514}ÿby-sequenceÿ0000000000003514 u{"name":"mt-stats","description":"A little library to access your MediaTemple server's stats.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mt-stats","description":"A little library to access your MediaTemple server's stats.","version":"0.0.1","author":{"name":"Andrew Weeks","email":"andrew@meloncholy.com"},"dependencies":{"konphyg":">= 1.0.5"},"keywords":["stats","statistics","mediatemple","mt","json"],"repository":{"type":"git","url":"git://github.com/meloncholy/mt-stats.git"},"main":"index","readme":"(mt) Stats\r\n==========\r\n\r\n(mt) Stats is a specialised proxy server that gets your server's statistics from [MediaTemple's API servers](http://mediatemple.net/api/). It was designed to be used with the [(mt) Stats Viewer](https://github.com/meloncholy/mt-stats-viewer) front end, but may even be more generally useful. \r\n\r\nIf you want to read more about how it works and some potential problems, there's a surprisingly (to me, at least) long post [here](http://meloncholy.com/blog/using-d3-for-realtime-webserver-stats).\r\n\r\n\r\nSetting up (mt) Stats\r\n---------------------\r\n\r\n- [Get an API key](https://ac.mediatemple.net/api) for your MediaTemple server. You'll also need your service ID later, which you can get by visiting `https://api.mediatemple.net/api/v1/services/ids.json?apikey=XXXXX` (I only have one service ID as I have one server, but apparently you could see more.)\r\n\r\n- Rename the config file `node_modules/mt-stats/config/mt-stats-sample.json` to `mt-stats.json` and change the service ID and API key to match your server and key.\r\n\r\n\r\nUsing (mt) Stats with your app\r\n------------------------------\r\n\r\nHere's a quick example of using (mt) Stats with Express. \r\n\r\n```javascript\r\nvar app = require(\"express\").createServer();\r\nvar mtStats = require(\"mt-stats\");\r\n\r\napp.get(\"/api/:range?\", mtStats);\r\n\r\napp.listen(3000);\r\n```\r\n\r\n(mt) Stats will respond differently depending on the range passed to it as part of the path.\r\n\r\n- **No range** - Server stats for current time\r\n- **Range is one of** `5min`, `15mi±¡vùn`, `30min`, `1hour`, `1day`, `1week`, `1month`, `3month`, `1year` - Server stats for that past period will be returned, using the MediaTemple API server's default resolution for that period\r\n- **Range is [0-9]+** - Server stats for the past _number_ of seconds will be returned, using the resolution in the settings file (probably; see below)\r\n- **Range is [0-9]+-[0-9]+** - Server stats covering the range from the first number (time since Linux epoch in seconds) to the second number will be returned, using the resolution in the settings file\r\n\r\n\r\nSettings\r\n--------\r\n\r\nPlease rename `mt-stats-sample.json` to `mt-stats.json`.\r\n\r\n- **serviceId** - Your server's service ID\r\n- **apiKey** - Your MediaTemple API key\r\n- **mode** - Doesn't do anything here, but its presence gives me a warm, comforting glow\r\n- **rootPath** - The root URL path for all API calls\r\n- **interval** - Server polling interval for client. MediaTemple's stats update every 15s\r\n- **ranges** - For each `range`, the `resolution` at which to request data from the API (e.g. every 15 seconds) and the maximum span (`step`) to request in one go (to stop the API server objecting). Range is the maximum timespan at which to use that resolution and step\r\n- **metrics** - Metrics supplied by the API. `apiKey` is the key name in JSON objects and `niceName` is the name to use on the graphs\r\n- **definedRanges** - MediaTemple also supports some default intervals that can be requested with these URLs, e.g. [this URL](http://bits.meloncholy.com/mt-stats/api/5min) will serve up the last 5 minutes' data\r\n- **currentUrl** - API server URL from which to get the current stats. `%SERVICEID` and `%APIKEY` are replaced with your service ID and API key\r\n- **historyUrl** - API server URL to request stats going back for the past X seconds, e.g. [this URL](http://bits.meloncholy.com/mt-stats/api/300) will also give the past 5 minutes' data\r\n- **rangeUrl** - API server URL to get stats covering a specified time range\r\n\r\n```javascript\r\n{\r\n\t\"serviceId\": 000000,\r\n\t\"apiKey\": \"XXXXXXXX\",\r\n\t\"mode\": \"production\",\r\n\t\"rootPath\": \"/api/\",\r\n\t\"interval\": 15000,\r\n\t\"ranges\": [\r\n\t\t{ \"range\": 3600, \"resolution\": 15, \"step\": 3600 },\r\n\t\t{ \"range\": 43200, \"resolution\": 120, \"step\": 28800 },\r\n\t\t{ \"range\": 86400, \"resolution\": 240, \"step\": 57600 },\r\n\t\t{ \"range\": 604800, \"resolution\": 1800, \"step\": 432000 }\r\n\t],\r\n\t\"metrics\": [\r\n\t\t{ \"apiKey\": \"cpu\", \"niceName\": \"CPU %\" },\r\n\t\t{ \"apiKey\": \"memory\", \"niceName\": \"Memory %\" },\r\n\t\t{ \"apiKey\": \"load1Min\", \"niceName\": \"Load 1 min\" },\r\n\t\t{ \"apiKey\": \"load5Min\", \"niceName\": \"Load 5 min\" },\r\n\t\t{ \"apiKey\": \"load15Min\", \"niceName\": \"Load 15 min\" },\r\n\t\t{ \"apiKey\": \"processes\", \"niceName\": \"Processes\" },\r\n\t\t{ \"apiKey\": \"diskSpace\", \"niceName\": \"Disk space\" },\r\n\t\t{ \"apiKey\": \"kbytesIn\", \"niceName\": \"kb in / sec\" },\r\n\t\t{ \"apiKey\": \"kbytesOut\", \"niceName\": \"kb out / sec\" },\r\n\t\t{ \"apiKey\": \"packetsIn\", \"niceName\": \"Packets in / sec\" },\r\n\t\t{ \"apiKey\": \"packetsOut\", \"niceName\": \"Packets out / sec\" }\r\n\t],\r\n\t\"definedRanges\": [\"5min\", \"15min\", \"30min\", \"1hour\", \"1day\", \"1week\", \"1month\", \"3month\", \"1year\"],\r\n\t\"currentUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID.json?apikey=%APIKEY\",\r\n\t\"historyUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID/%RANGE.json?apikey=%APIKEY\",\r\n\t\"rangeUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID.json?start=%START&end=%END&&resolution=%RESOLUTION&apikey=%APIKEY\"\r\n}\r\n```\r\n\r\nMore on stats resolution\r\n------------------------\r\n\r\nMediaTemple may or may not respect the stats resolution you request, e.g. there's a minimum resolution of 15s and a request for 2 hour intervals will be returned at a resolution of 60 minutes. \r\n\r\nThe API server will also only serve up a fairly small amount of data at a given resolution - smaller than I'd like, so the server divides up the client's range into several requests and combines them before returning. The interval at which to split a single request into multiple API queries is the `step` if this is less than the `range` for that range. So if you wanted a week's worth of data at 15 second intervals, you could add `{\"range\": 604800, \"resolution\": 15, \"step\": 3600 }` (but please don't as you'll hit the API server 168 times!). All numbers are seconds. \r\n\r\nThe metrics bit of the config file is currently set up to return up to a week's worth of data at once; it will return more, but at a resolution that would hammer the MediaTemple server rather, so please add some more ranges if you want to do that. \r\n\r\n\r\nDependencies\r\n------------\r\n\r\n- [Konphyg](https://github.com/pgte/konphyg)\r\n\r\n\r\nLegal fun\r\n---------\r\n\r\nCopyright © 2012 Andrew Weeks http://meloncholy.com\r\n\r\n(mt) Stats is licensed under the [MIT licence](http://meloncholy.com/licence).\r\n\r\n\r\nMe\r\n--\r\n\r\nI have a [website](http://meloncholy.com) and a [Twitter](https://twitter.com/meloncholy). Please come and say hi if you'd like or if something's not working; be lovely to hear from you. \r\n","_id":"mt-stats@0.0.1","dist":{"shasum":"5ad1a32c26df2af49b4c510ce35873caed5e180f","tarball":"http://registry.npmjs.org/mt-stats/-/mt-stats-0.0.1.tgz"},"maintainers":[{"name":"meloncholy","email":"andrew@meloncholy.com"}]}},"readme":"(mt) Stats\r\n==========\r\n\r\n(mt) Stats is a specialised proxy server that gets your server's statistics from [MediaTemple's API servers](http://mediatemple.net/api/). It was designed to be used with the [(mt) Stats Viewer](https://github.com/meloncholy/mt-stats-viewer) front end, but may even be more generally useful. \r\n\r\nIf you want to read more about how it works and some potential problems, there's a surprisingly (to me, at least) long post [here](http://meloncholy.com/blog/using-d3-for-realtime-webserver-stats).\r\n\r\n\r\nSetting up (mt) Stats\r\n---------------------\r\n\r\n- [Get an API key](https://ac.mediatemple.net/api) for your MediaTemple server. You'll also need your service ID later, which you can get by visiting `https://api.mediatemple.net/api/v1/services/ids.json?apikey=XXXXX` (I only have one service ID as I have one server, but apparently you could see more.)\r\n\r\n- Rename the config file `node_modules/mt-stats/config/mt-stats-sample.json` to `mt-stats.json` and change the service ID and API key to match your server and key.\r\n\r\n\r\nUsing (mt) Stats with your app\r\n------------------------------\r\n\r\nHere's a quick example of using (mt) Stats with Express. \r\n\r\n```javascript\r\nvar app = require(\"express\").createServer();\r\nvar mtStats = require(\"mt-stats\");\r\n\r\napp.get(\"/api/:range?\", mtStats);\r\n\r\napp.listen(3000);\r\n```\r\n\r\n(mt) Stats will respond differently depending on the range passed to it as part of the path.\r\n\r\n- **No range** - Server stats for current time\r\n- **Range is one of** `5min`, `15min`, `30min`, `1hour`, `1day`, `1week`, `1month`, `3month`, `1year` - Server stats for that past period will be returned, using the MediaTemple API server's default resolution for that period\r\n- **Range is [0-9]+** - Server stats for the past _number_ of seconds will be returned, using the resolution in the settings file (probably; see below)\r\n- **Range is [0-9]+-[0-9]+** - Server stats covering the range from the first number (time since Linux epoch in seconds) to the second number will be returned, using the resolution in the settings file\r\n\r\n\r\nSettings\r\n--------\r\n\r\nPlease rename `mt-stats-sample.json` to `mt-stats.json`.\r\n\r\n- **serviceId** - Your server's service ID\r\n- **apiKey** - Your MediaTemple API key\r\n- **mode** - Doesn't do anything here, but its presence gives me a warm, comforting glow\r\n- **rootPath** - The root URL path for all API calls\r\n- **interval** - Server polling interval for client. MediaTemple's stats update every 15s\r\n- **ranges** - For each `range`, the `resolution` at which to request data from the API (e.g. every 15 seconds) and the maximum span (`step`) to request in one go (to stop the API server objecting). Range is the maximum timespan at which to use that resolution and step\r\n- **metrics** - Metrics supplied by the API. `apiKey` is the key name in JSON objects and `niceName` is the name to use on the graphs\r\n- **definedRanges** - MediaTemple also supports some default intervals that can be requested with these URLs, e.g. [this URL](http://bits.meloncholy.com/mt-stats/api/5min) will serve up the last 5 minutes' data\r\n- **currentUrl** - API server URL from which to get the current stats. `%SERVICEID` and `%APIKEY` are replaced with your service ID and API key\r\n- **historyUrl** - API server URL to request stats going back for the past X seconds, e.g. [this URL](http://bits.meloncholy.com/mt-stats/api/300) will also give the past 5 minutes' data\r\n- **rangeUrl** - API server URL to get stats covering a specified time range\r\n\r\n```javascript\r\n{\r\n\t\"serviceId\": 000000,\r\n\t\"apiKey\": \"XXXXXXXX\",\r\n\t\"mode\": \"production\",\r\n\t\"rootPath\": \"/api/\",\r\n\t\"interval\": 15000,\r\n\t\"ranges\": [\r\n\t\t{ \"range\": 3600, \"resolution\": 15, \"step\": 3600 },\r\n\t\t{ \"range\": 43200, \"resolution\": 120, \"step\": 28800 },\r\n\t\t{ \"range\": 86400, \"resolution\": 240, \"step\": 57600 },\r\n\t\t{ \"range\": 604800, \"resolution\": 1800, \"step\": 432000 }\r\n\t],\r\n\t\"metrics\": [\r\n\t\t{ \"apiKey\": \"cpu\", \"niceName\": \"CPU %\" },\r\n\t\t{ \"apiKey\": \"memory\", \"niceName\": \"Memory %\" },\r\n\t\t{ \"apiKey\": \"load1Min\", \"niceName\": \"Load 1 min\" },\r\n\t\t{ \"apiKey\": \"load5Min\", \"niceName\": \"Load 5 min\" },\r\n\t\t{ \"apiKey\": \"load15Min\", \"niceName\": \"Load 15 min\" },\r\n\t\t{ \"apiKey\": \"processes\", \"niceName\": \"Processes\" },\r\n\t\t{ \"apiKey\": \"diskSpace\", \"niceName\": \"Disk space\" },\r\n\t\t{ \"apiKey\": \"kbytesIn\", \"niceName\": \"kb in / sec\" },\r\n\t\t{ \"apiKey\": \"kbytesOut\", \"niceName\": \"kb out / sec\" },\r\n\t\t{ \"apiKey\": \"packetsIn\", \"niceName\": \"Packets in / sec\" },\r\n\t\t{ \"apiKey\": \"packetsOut\", \"niceName\": \"Packets out / sec\" }\r\n\t],\r\n\t\"definedRanges\": [\"5min\", \"15min\", \"30min\", \"1hour\", \"1day\", \"1week\", \"1month\", \"3month\", \"1year\"],\r\n\t\"currentUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID.json?apikey=%APIKEY\",\r\n\t\"historyUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID/%RANGE.json?apikey=%APIKEY\",\r\n\t\"rangeUrl\": \"https://api.mediatemple.net/api/v1/stats/%SERVICEID.json?start=%START&end=%END&&resolution=%RESOLUTION&apikey=%APIKEY\"\r\n}\r\n```\r\n\r\nMore on stats resolution\r\n------------------------\r\n\r\nMediaTemple may or may not respect the stats resolution you request, e.g. there's a minimum resolution of 15s and a request for 2 hour intervals will be returned at a resolution of 60 minutes. \r\n\r\nThe API server will also only serve up a fairly small amount of data at a given resolution - smaller than I'd like, so the server divides up the client's range into several requests and combines them before returning. The interval at which to split a single request into multiple API queries is the `step` if this is less than the `range` for that range. So if you wanted a week's worth of data at 15 second intervals, you could add `{\"range\": 604800, \"resolution\": 15, \"step\": 3600 }` (but please don't as you'll hit the API server 168 times!). All numbers are seconds. \r\n\r\nThe metrics bit of the config file is currently set up to return up to a week's worth of data at once; it will return more, but at a resolution that would hammer the MediaTemple server rather, so please add some more ranges if you want to do that. \r\n\r\n\r\nDependencies\r\n------------\r\n\r\n- [Konphyg](https://github.com/pgte/konphyg)\r\n\r\n\r\nLegal fun\r\n---------\r\n\r\nCopyright © 2012 Andrew Weeks http://meloncholy.com\r\n\r\n(mt) Stats is licensed under the [MIT licence](http://meloncholy.com/licence).\r\n\r\n\r\nMe\r\n--\r\n\r\nI have a [website](http://meloncholy.com) and a [Twitter](https://twitter.com/meloncholy). Please come and say hi if you'd like or if something's not working; be lovely to hear from you. \r\n","maintainers":[{"name":"meloncholy","email":"andrew@meloncholy.com"}],"time":{"modified":"2012-08-22T16:31:54.620Z","created":"2012-08-22T16:31:52.440Z","0.0.1":"2012-08-22T16:31:54.620Z"},"author":{"name":"Andrew Weeks","email":"andrew@meloncholy.com"},"repository":{"type":"git","url":"git://github.com/meloncholy/mt-stats.git"},"_id":"mt-stats","_rev":"1-308e7893c44912a66c576e491fe694c3"}ÿdocument-storeÿmrs–{"id":"mrs","rev":"1-93ff76242af6a0caae1b81e7fddf58a4","rev_tree":[{"pos":1,"ids":["93ff76242af6a0caae1b81e7fddf58a4",{"status":"available"},[]]}],"rev_map":{"1-93ff76242af6a0caae1b81e7fddf58a4":3513},"winningRev":"1-93ff76242af6a0caae1b81e7fddf58a4","deleted":false,"seq":3513}ÿby-sequenceÿ0000000000003513¹{"name":"mrs","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"mrs","version":"0.0.0","dependencies":{"mr":"*"},"_npmUser":{"name":"kriskowal","email":"kris.kowal@cixar.com"},"_id":"mrs@0.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"08748a90bde33c564f4243613ecd9fdfcd230735","tarball":"http://registry.npmjs.org/mrs/-/mrs-0.0.0.tgz"},"readme":"","maintainers":[{"name":"kriskowal","email":"kris.kowal@cixar.com"}]}},"readme":"","maintainers":[{"name":"kriskowal","email":"kris.kowal@cixar.com"}],"time":{"modified":"2012-08-23T01:36:06.294Z","created":"2012-08-23T01:36:04.889Z","0.0.0":"2012-08-23T01:36:06.294Z"},"_id":"mrs","_rev":"1-93ff76242af6a0caae1b81e7fddf58a4"})ÿdocument-storeÿmonupco-dotcloud-nodejsª{"id":"monupco-dotcloud-nodejs","rev":"1-0c4c276af33b4093aea827950a8b7b08","rev_tree":[{"pos":1,"ids":["0c4c276af33b4093aea827950a8b7b08",{"status":"available"},[]]}],"rev_map":{"1-0c4c276af33b4093aea827950a8b7b08":3512},"winningRev":"1-0c4c276af33b4093aea827950a8b7b08","deleted":false,"seq":3512}ÿby-sequenceÿ0000000000003512ì"{"name":"monupco-dotcloud-nodejs","description":"monupco.com registration agent for dotCloud / node.js applications","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.2":{"name":"monupco-dotcloud-nodejs","description":"monupco.com client for dotCloud / node.js applications","version":"0.0.2","homepage":"https://github.com/monupco/monupco-dotcloud-nodejs","author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/monupco/monupco-dotcloud-nodejs.git"},"dependencies":{"common-nodejs-monupco":""},"main":"monupco-dotcloud.js","engines":{"node":"*"},"bin":{"monupco-dotcloud":"./monupco-dotcloud.js"},"_npmUser":{"name":"zaro","email":"zarrro@gmail.com"},"_id":"monupco-dotcloud-nodejs@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"19df4d63891b88792a11a1e6309ccfcbef66fb25","tarball":"http://registry.npmjs.org/monupco-dotcloud-nodejs/-/monupco-dotcloud-nodejs-0.0.2.tgz"},"maintainers":[{"name":"zaro","email":"zarrro@gmail.com"}]},"0.0.3":{"name":"monupco-dotcloud-nodejs","description":"monupco.com registration agent for dotCloud / node.js applications","version":"0.0.3","homepage":"https://github.com/monupco/monupco-dotcloud-nodejs","author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/monupco/monupco-dotcloud-nodejs.git"},"dependencies":{"common-nodejs-monupco":""},"main":"monupco-dotcloud.js","engines":{"node":"*"},"bin":{"monupco-dotcloud":"./monupco-dotcloud.js"},"_npmUser":{"name":"zaro","email":"zarrro@gmail.com"},"_id":"monupco-dotcloud-nodejs@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"c30781aec0e3074814136894bfa7e464d92556f1","tarball":"http://registry.npmjs.org/monupco-dotcloud-nodejs/-/monupco-dotcloud-nodejs-0.0.3.tgz"},"maintainers":[{"name":"zaro","email":"zarrro@gmail.com"}]}},"readme":"Node.js client side agent for monupco.com preconfigured for dotCloud.\n\n\nInstalling on your dotCloud node.js application\n----------------------------------------------\n\n- Create an account at http://monupco.com\n\n- Create your node.js application in dotCloud\n\n- Add a dependency in your application's package.json file\n\n ...\n \"dependencies\": {\n ...\n \"monupco-dotcloud-nodejs\": \"\"\n },\n ...\n\n- Execute the registration script in your postinstall hook. **Note:**\nIf you are using an \"approot\" your `postinstall` script should be in the \ndirectory pointed by the “approot†directive of your `dotcloud.yml`.\nFor more information about `postinstall` turn to \n[dotCloud documentation](http://docs.dotcloud.com/guides/postinstall/).\n\nIf a file named `postinstall` doesn't already exist, create it and add the following:\n\n #!/bin/sh\n `npm bin`/monupco-dotcloud\n\n\n\n* Make `postinstall` executable\n\n chmod a+x postinstall\n\n* Commit your changes (if using git):\n\n git add .\n git commit -m \"enable monupco registration\"\n\n- Set your monupco user id. You can get it from .\n\n dotcloud var set MONUPCO_USER_ID=UserID\n\n\n- Push your application\n\n dotcloud push \n\n- If everything goes well you should see something like:\n\n 19:55:10 [www.0] Running postinstall script...\n 19:55:13 [www.0] response:200\n 19:55:13 [www.0] Monupco: Success, registered/updated application with id 10\n\n**Note**: While testing the registration code we found out that the Node.js application in dotCloud\nmay not be accessible via http immediately. During that time registration to Monupco may fail!\nIf this happens your application will register the next time you push to dotCloud!\n\n- That's it, you can now check your application statistics at \n","maintainers":[{"name":"zaro","email":"zarrro@gmail.com"}],"time":{"modified":"2012-06-12T16:04:10.093Z","created":"2012-02-15T21:10:16.022Z","0.0.2":"2012-02-15T21:10:18.246Z","0.0.3":"2012-06-12T16:04:10.093Z"},"author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/monupco/monupco-dotcloud-nodejs.git"},"_id":"monupco-dotcloud-nodejs","_rev":"1-0c4c276af33b4093aea827950a8b7b08"}+ÿdocument-storeÿmongoose-rest-in-flatiron¬{"id":"mongoose-rest-in-flatiron","rev":"1-6dec34eb28a8704361a98fc89407b785","rev_tree":[{"pos":1,"ids":["6dec34eb28a8704361a98fc89407b785",{"status":"available"},[]]}],"rev_map":{"1-6dec34eb28a8704361a98fc89407b785":3511},"winningRev":"1-6dec34eb28a8704361a98fc89407b785","deleted":false,"seq":3511}ÿby-sequenceÿ0000000000003511ÖS{"name":"mongoose-rest-in-flatiron","description":"","dist-tags":{"latest":"1.1.4"},"versions":{"0.0.1":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.1","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"repository":{"type":"git","url":"git://github.com/flatiron/flatiron.git"},"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/monngoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmJsonOpts":{"file":"/Users/k/.npm/mongoose-rest-in-flatiron/0.0.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"mongoose-rest-in-flatiron@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.26","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"99192cbaa6eaa67d016241f1dc863557fc579e25","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.1.tgz"},"scripts":{},"maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"0.0.2":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.2","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmJsonOpts":{"file":"/Users/k/.npm/mongoose-rest-in-flatiron/0.0.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"mongoose-rest-in-flatiron@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.26","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"a3c64895c67ff77659c8d9a42425a3aac26f52d1","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.2.tgz"},"scripts":{},"maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"0.0.3":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.3","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b1ede721c08a065ba04771271493af589531d0ef","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.3.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"0.0.4":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.4","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@0.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"4c62b5838bec24aad67e2b428630d9a74f293b01","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.4.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"0.0.5":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.5","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"2e5fbc16121ef42e7b3599a3fc5a3dfd3ae2ebf2","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.5.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"0.0.6":{"name":"mongoose-rest-in-flatiron","description":"","version":"0.0.6","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@0.0.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"dbc5a321427370c4162c85a390d6bc3e73b77a4a","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-0.0.6.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"1.0.0":{"name":"mongoose-rest-in-flatiron","description":"","version":"1.0.0","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takya Kuruma","email":"kuruma@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@1.0.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ae76135f5438dee2b03869fb497af8f2c1648101","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-1.0.0.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"1.1.0":{"name":"mongoose-rest-in-flatiron","description":"","version":"1.1.0","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takuya Kuruma","email":"kuruma@galileoscope.com"},{"name":"Kazuki Seki","email":"seki@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*","winston":"*","socket.io":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@1.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"16d6d749083bce394f78711a57db65e15016a6b1","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-1.1.0.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"1.1.1":{"name":"mongoose-rest-in-flatiron","description":"","version":"1.1.1","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takuya Kuruma","email":"kuruma@galileoscope.com"},{"name":"Kazuki Seki","email":"seki@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*","winston":"*","socket.io":"*","colors":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@1.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b4325f2bb028adec7e3f76adcf62d2b07a7aa7ab","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-1.1.1.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"1.1.2":{"name":"mongoose-rest-in-flatiron","description":"","version":"1.1.2","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takuya Kuruma","email":"kuruma@galileoscope.com"},{"name":"Kazuki Seki","email":"seki@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*","winston":"*","socket.io":"*","colors":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"kuruma3","email":"tk.kuruma@gmail.com"},"_id":"mongoose-rest-in-flatiron@1.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"2fce19d39ba267e9b2de9344666a878680bcdda7","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-1.1.2.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]},"1.1.4":{"name":"mongoose-rest-in-flatiron","description":"","version":"1.1.4","author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"contributors":[{"name":"Takuya Kuruma","email":"kuruma@galileoscope.com"},{"name":"Kazuki Seki","email":"seki@galileoscope.com"}],"dependencies":{"broadway":"*","director":"*","underscore":"*","coffee-script":"*","winston":"*","socket.io":"*","colors":"*"},"main":"./lib/mongoose-rest-in-flatiron","engines":{"node":">= 0.4.0"},"_id":"mongoose-rest-in-flatiron@1.1.4","dist":{"shasum":"4d984ebc42062d81ead7d224e47ec54faf4f3b09","tarball":"http://registry.npmjs.org/mongoose-rest-in-flatiron/-/mongoose-rest-in-flatiron-1.1.4.tgz"},"readme":"","maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}]}},"maintainers":[{"name":"kuruma3","email":"tk.kuruma@gmail.com"}],"time":{"modified":"2012-06-29T13:08:52.209Z","created":"2012-01-30T07:21:59.094Z","0.0.1":"2012-01-30T07:22:03.568Z","0.0.2":"2012-01-30T07:26:33.013Z","0.0.3":"2012-03-01T04:22:01.879Z","0.0.4":"2012-04-12T01:11:55.545Z","0.0.5":"2012-04-12T04:53:00.246Z","0.0.6":"2012-04-12T10:12:17.384Z","1.0.0":"2012-04-12T11:11:56.508Z","1.1.0":"2012-05-30T07:40:22.378Z","1.1.1":"2012-06-06T13:02:08.335Z","1.1.2":"2012-06-23T10:06:34.759Z","1.1.4":"2012-06-29T13:08:52.209Z"},"author":{"name":"GalileoScope,Inc","email":"info@galileoscope.com"},"repository":{"type":"git","url":"git://github.com/flatiron/flatiron.git"},"_id":"mongoose-rest-in-flatiron","_rev":"1-6dec34eb28a8704361a98fc89407b785"}ÿdocument-storeÿmisao-chan{"id":"misao-chan","rev":"1-a0b7f88c92db2e4e363b560f7c5c8b0a","rev_tree":[{"pos":1,"ids":["a0b7f88c92db2e4e363b560f7c5c8b0a",{"status":"available"},[]]}],"rev_map":{"1-a0b7f88c92db2e4e363b560f7c5c8b0a":3510},"winningRev":"1-a0b7f88c92db2e4e363b560f7c5c8b0a","deleted":false,"seq":3510}ÿby-sequenceÿ0000000000003510Ž${"name":"misao-chan","description":"Cutest IRC bot ever","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"misao-chan","description":"Cutest IRC bot ever","author":{"name":"Lorentz Kim","email":"lorentz@majestika.net","url":"http://lorentz.majestika.net"},"homepage":"http://github.com/lorentzkim/misao-chan","version":"0.0.1","main":"./misao-chan","dependencies":{"dork":">=1.1.2"},"engines":["node >=0.2.0"],"repository":{"type":"git","url":"http://github.com/lorentzkim/misao-chan.git"},"license":{"type":"MIT","url":"http://github.com/lorentzkim/misao-chan/raw/master/LICENSE"},"_id":"misao-chan@0.0.1","_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.2.6","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"a45f7047c15493c540db4cec59db27fb63a02bba","tarball":"http://registry.npmjs.org/misao-chan/-/misao-chan-0.0.1.tgz"}},"0.0.2":{"name":"misao-chan","description":"Cutest IRC bot ever","author":{"name":"Lorentz Kim","email":"lorentz@majestika.net","url":"http://lorentz.majestika.net"},"homepage":"http://github.com/lorentzkim/misao-chan","version":"0.0.2","main":"./misao-chan","dependencies":{"jerk":">=1.1.12","mongoose":">1.0.0"},"engines":["node >=0.8.0"],"repository":{"type":"git","url":"git://github.com/lorentzkim/misao-chan.git"},"license":{"type":"MIT","url":"http://github.com/lorentzkim/misao-chan/raw/master/LICENSE"},"_npmUser":{"name":"lorentz","email":"lorentz@majestika.net"},"_id":"misao-chan@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"bb2d29f53f4525c129efff37e9c7bd33d355115a","tarball":"http://registry.npmjs.org/misao-chan/-/misao-chan-0.0.2.tgz"},"readme":"# Misao-chan\n\nAn IRC bot for a certain channel on freenode. Written in JS for Node.js. Feel\nfree to use her for your own channel too!\n\nShe is a relatively advanced IRC bot, capable of hotloading modules (even through\ncode upgrades), and thus very expandable.\n\nBuilt on top of [Jerk](https://github.com/gf3/Jerk).\n\n## Project Goal\n\nTo create an IRC bot that makes life easier for everyone. For instance, a bot\nto make important life decisions for us by randomly picking at things, or\ntelling us when the pizza is baked so we can eat to live another day.\n\n## Core Requirements\n\n nodejs\n jerk\n \n## Module Requirements\n\n### Tell\n ÌŸÄù mongodb\n mongoose\n\n### Weather\n\tlibxmljs\n\n### Quote\n\tmongodb\n\tmongoose\n\n### GFortune\n\tfortune (system utility)\n \n## Installation\n\nCopy/move config.example.js to config.js, edit its contents to suit your needs,\nand then simply run\n\n node app.js\n\n## Modules\n\n### -Usage-\n\nMisao-chan implements a hotloading modules system. If you're the administrator\n(set via the config file, which is yet to be hotloadable), simply \"load modulename\"\nor \"unload modulename\" to load and unload modules, respectably.\n\n### Pizza\n\n Implemented: Yes\n Usage: pizza 10m \"message goes here\"\n\nPizza is basically a timer. 10m is an example time, meaning 10 minutes. After 10\nminutes, bot will reply back with message you assigned it with. Anything between\nthe \"\"s will be parsed as the return message.\n\nThis feature does not yet rely on the mongodb to store pizza values in-case the bot\ninstance is closed.\n\n### 8-ball\n\n Implemented: Yes\n Usage: 8-ball question\n\nA very simple decision making module.\n\n### Choose\n\n Implemented: Yes\n Usage: choose x or y [or z [or w [...]]]\n\nSimilar to 8-ball, except it picks out an answer you want from a given list.\nSeparate all your options with \" or \".\n\n### Fortune\n\n Implemented: Yes\n Usage: fortune\n\nTells you your daily fortune, Japanese style. Very random.\n\n### Tell\n\n\tImplemented: Yes\n\tUsage: tell nickname message\n\nWith Tell, you can send another user a message through the bot, whether the\nperson is online or not. The person will receive the message the moment the bot\nrealises the person is online. Nickname is case sensitive.\n","maintainers":[{"name":"lorentz","email":"lorentz@majestika.net"}]}},"maintainers":[{"name":"lorentz","email":"lorentz@majestika.net"}],"time":{"modified":"2012-06-25T04:20:18.460Z","created":"2011-01-29T04:32:27.522Z","0.0.1":"2011-01-29T04:32:28.496Z","0.0.2":"2012-06-25T04:20:18.460Z"},"author":{"name":"Lorentz Kim","email":"lorentz@majestika.net","url":"http://lorentz.majestika.net"},"repository":{"type":"git","url":"git://github.com/lorentzkim/misao-chan.git"},"_id":"misao-chan","_rev":"1-a0b7f88c92db2e4e363b560f7c5c8b0a"}ÿdocument-storeÿminifymyjs{"id":"minifymyjs","rev":"1-bb4d91a3d13150ee45db0048459d5f89","rev_tree":[{"pos":1,"ids":["bb4d91a3d13150ee45db0048459d5f89",{"status":"available"},[]]}],"rev_map":{"1-bb4d91a3d13150ee45db0048459d5f89":3509},"winningRev":"1-bb4d91a3d13150ee45db0048459d5f89","deleted":false,"seq":3509}ÿby-sequenceÿ0000000000003509,{"name":"minifymyjs","description":"A tool to easily minifying your JavaScript files using the minifyMyJs.net API","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"minifymyjs","version":"1.0.0","description":"A tool to easily minifying your JavaScript files using the minifyMyJs.net API","keywords":["minify","minifier","minifymyjs","obfuscate","obfuscator"],"homepage":"http://github.com/mattlunn/minifymyjs-4-node","bugs":{"email":"contact@mattlunn.me.uk","url":"http://github.com/mattlunn/minifymyjs-4-node/issues"},"author":{"name":"Matt Lunn","email":"contact@mattlunn.me.uk","url":"http://www.mattlunn.me.uk"},"main":"./main","repository":{"type":"git","url":"git://github.com/mattlunn/minifymyjs-4-node.git"},"_npmUser":{"name":"matt","email":"matt@mattlunn.me.uk"},"_id":"minifymyjs@1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a1c6e37a7767ea956a88057287ca23c8ef6bdda7","tarball":"http://registry.npmjs.org/minifymyjs/-/minifymyjs-1.0.0.tgz"},"maintainers":[{"name":"matt","email":"matt@mattlunn.me.uk"}]},"1.0.1":{"name":"minifymyjs","version":"1.0.1","description":"A tool to easily minifying your JavaScript files using the minifyMyJs.net API","keywords":["minify","minifier","minifymyjs","obfuscate","obfuscator"],"homepage":"http://github.com/mattlunn/minifymyjs-4-node","bugs":{"email":"contact@mattlunn.me.uk","url":"http://github.com/mattlunn/minifymyjs-4-node/issues"},"author":{"name":"Matt Lunn","email":"contact@mattlunn.me.uk","url":"http://www.mattlunn.me.uk"},"main":"./main","repository":{"type":"git","url":"git://github.com/mattlunn/minifymyjs-4-node.git"},"_npmUser":{"name":"matt","email":"matt@mattlunn.me.uk"},"_id":"minifymyjs@1.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6d2aec91c77466ac52ba6d1b257d512614cf6fd4","tarball":"http://registry.npmjs.org/minifymyjs/-/minifymyjs-1.0.1.tgz"},"maintainers":[{"name":"matt","email":"matt@mattlunn.me.uk"}]}},"readme":"#minifymyjs-4-node - A wrapper for the minifyMyJs.net API\r\n\r\n##Install\r\n\r\n npm install minifymyjs\r\n\r\nOr if that isn't easy enough\r\n\r\n git clone git://github.com/mattlunn/minifymyjs-4-node.git\r\n cd request\r\n npm link\r\n\r\n##Usage\r\n\r\nThe library comes with **one** method; `minify()`, which has the following signature:\r\n\r\n minify(files[, options][, destination], function (err, output));\r\n\r\n - `files`: One or more files to be minified. If providing more than one file, we expect an array. Each file specified can be either a file path (absolute *or* relative), or a URI.\r\n - `options`: *Optional* An object whose key-values map [API options](http://minifymyjs.net/) to values.\r\n - `destination`: *Optional* Absolute or relative path to where you'd like the minified source to be written. If a file already exists at that destination, it will be overwritten. If you omit this parameter, you'll only get access to the minified source code through the callback parameter (see below).\r\n - `callback`: Called when the API has completed. If an error occured, `err` will be a *String* describing the error. If the request succeeded, `err` will be `null` and `output` will be the minified source code.\r\n * \r\n##Available Options\r\n\r\nA comprehensive list of the available options (with descriptions) can be found at [http://minifymyjs.net](http://minifymyjs.net/#api).\r\n\r\n - To set a boolean option (something that is simply either on or off), pass `true` or `false` as the value for the option.\r\n - To set a numerical value (`max_line_length`, `indent_start` etc.), pass the number as the value for the option.\r\n - To specify variable names to exclude (`exclude[]`), pass an array of variable names with the key `exclude`:\r\n\r\n {\r\n except: ['foo', 'bar', 'baz']\r\n }\r\n \r\n##Examples\r\n\r\nMinifies the files `jquery.js` and `application.js` with all the default API options and writes the minifed source code to `all.js`\r\n\r\n var minifier = require('minifymyjs');\r\n \r\n minifier.minify(['http://code.jquery.com/jquery-1.7.2.js', './js/application.js'], './js/all.js', function (err, output) {\r\n if (err) {\r\n console.log('Whoops: ' + err);\r\n }\r\n });\r\n\r\nChanges some of the API options\r\n\r\n var minifier = require('minifymyjs');\r\n \r\n minifier.minify(['http://code.jquery.com/jquery-1.7.2.js', './js/application.js'], {\r\n mangle: false, // don't change variable names\r\n keep_copyright: true // keep the copyright notice in the first file\r\n }, './js/all.js', function (err, output) {\r\n if (err) {\r\n console.log('Whoops: ' + err);\r\n }\r\n });\r\n ","maintainers":[{"name":"matt","email":"matt@mattlunn.me.uk"}],"time":{"modified":"2012-05-10T22:37:33.782Z","created":"2012-05-10T07:21:38.249Z","1.0.0":"2012-05-10T07:21:41.018Z","1.0.1":"2012-05-10T22:37:33.782Z"},"author":{"name":"Matt Lunn","email":"contact@mattlunn.me.uk","url":"http://www.mattlunn.me.uk"},"repository":{"type":"git","url":"git://github.com/mattlunn/minifymyjs-4-node.git"},"_id":"minifymyjs","_rev":"1-bb4d91a3d13150ee45db0048459d5f89"}!ÿdocument-storeÿmimelib-noiconv¢{"id":"mimelib-noiconv","rev":"1-3f9ed4217849b00874c64c1f78f3be3c","rev_tree":[{"pos":1,"ids":["3f9ed4217849b00874c64c1f78f3be3c",{"status":"available"},[]]}],"rev_map":{"1-3f9ed4217849b00874c64c1f78f3be3c":3508},"winningRev":"1-3f9ed4217849b00874c64c1f78f3be3c","deleted":false,"seq":3508}ÿby-sequenceÿ0000000000003508ˆF{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.2":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.2","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"man":["./man/doc.1"],"devDependencies":{},"_id":"mimelib-noiconv@0.1.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"376fc8172cb23fb4f787560e17bc4a783c7ca3bb","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.2.tgz"},"scripts":{}},"0.1.3":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.3","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"man":["./man/doc.1"],"_npmJsonOpts":{"file":"/root/.npm/mimelib-noiconv/0.1.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"mimelib-noiconv@0.1.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.18","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"376a56fad2cd86fa2198822619f708d81e28400b","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.3.tgz"},"scripts":{}},"0.1.4":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.4","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"man":["./man/doc.1"],"_npmUser":{"name":"andris","email":"andris@node.ee"},"_id":"mimelib-noiconv@0.1.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"ac523cb4929f79ffd09f044196ed70b5bf31bdc4","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.4.tgz"}},"0.1.5":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.5","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"man":["./man/doc.1"],"_npmUser":{"name":"andris","email":"andris@node.ee"},"_id":"mimelib-noiconv@0.1.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"b6f1a0b94cd2567af5a57a806797ddd4dd1f0f35","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.5.tgz"}},"0.1.6":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.6","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"man":["./man/doc.1"],"_npmUser":{"name":"andris","email":"andris@node.ee"},"_id":"mimelib-noiconv@0.1.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"5664e149492083727ed5da1b89c32a1cceaa4b94","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.6.tgz"},"readme":"# mimelib\n\n*mimelib* is a collection of useful functions to deal with mime-encoded data.\n\n## Reference\n\nSee [API reference](/andris9/mimelib/blob/master/doc.md) for documentation\n\n## Installation\n\nInstall with *npm*\n\n npm install mimelib-noiconv\n \n## Usage\n\n var mimelib = require(\"mimelib-noiconv\");\n"},"0.1.7":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.7","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"_npmUser":{"name":"andris","email":"andris@node.ee"},"_id":"mimelib-noiconv@0.1.7","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"f61dd1db6d5655942f3697815dfdde90b0c9f542","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.7.tgz"},"readme":"# mimelib\n\n*mimelib* is a collection of useful functions to deal with mime-encoded data.\n\n## Reference\n\nSee [API reference](/andris9/mimelib/blob/master/doc.md) for documentation\n\n## Installation\n\nInstall with *npm*\n\n npm install mimelib-noiconv\n \n## Usage\n\n var mimelib = require(\"mimelib-noiconv\");\n"},"0.1.8":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.8","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"git://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"_npmUser":{"name":"andris","email":"andris@node.ee"},"_id":"mimelib-noiconv@0.1.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ba54f806abc8ea3764302e9e82fd503b2b8ea515","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.8.tgz"},"readme":"# mimelib\n\n*mimelib* is a collection of useful functions to deal with mime-encoded data.\n\n## Reference\n\nSee [API reference](/andris9/mimelib/blob/master/doc.md) for documentation\n\n## Installation\n\nInstall with *npm*\n\n npm install mimelib-noiconv\n \n## Usage\n\n var mimelib = require(\"mimelib-noiconv\");\n"},"0.1.9":{"name":"mimelib-noiconv","description":"MIME functions to encode/decode e-mails etc.","version":"0.1.9","author":{"name":"Andris Reinman"},"homepage":"http://github.com/andris9/mimelib","maintainers":[{"name":"andris","email":"andris@node.ee"}],"repository":{"type":"git","url":"http://github.com/andris9/mimelib.git"},"main":".","licenses":[{"type":"MIT","url":"http://github.com/andris9/mimelib/blob/master/LICENSE"}],"dependencies":{},"keywords":["e-mail","mime","email"],"readme":"# mimelib\n\n*mimelib* is a collection of useful functions to deal with mime-encoded data.\n\n## Reference\n\nSee [API reference](/andris9/mimelib/blob/master/doc.md) for documentation\n\n## Installation\n\nInstall with *npm*\n\n npm install mimelib-noiconv\n \n## Usage\n\n var mimelib = require(\"mimelib-noiconv\");\n","_id":"mimelib-noiconv@0.1.9","dist":{"shasum":"eadce6f9ce226842501a203e95bcee96af8189f2","tarball":"http://registry.npmjs.org/mimelib-noiconv/-/mimelib-noiconv-0.1.9.tgz"}}},"maintainers":[{"name":"andris","email":"andris@node.ee"}],"time":{"modified":"2012-08-02T13:44:39.292Z","created":"2011-06-11T05:23:05.134Z","0.1.2":"2011-06-11T05:23:05.828Z","0.1.3":"2011-07-26T11:00:41.925Z","0.1.4":"2011-11-10T18:33:35.847Z","0.1.5":"2011-11-14T14:35:29.775Z","0.1.6":"2012-01-29T18:10:21.624Z","0.1.7":"2012-06-21T13:09:07.239Z","0.1.8":"2012-06-27T08:39:17.049Z","0.1.9":"2012-07-23T08:07:27.455Z"},"author":{"name":"Andris Reinman"},"repository":{"type":"git","url":"http://github.com/andris9/mimelib.git"},"users":{"fgribreau":true},"_id":"mimelib-noiconv","_rev":"1-3f9ed4217849b00874c64c1f78f3be3c"}ÿdocument-storeÿmiddle™{"id":"middle","rev":"1-673e3433c289684a10d52fb68acd173c","rev_tree":[{"pos":1,"ids":["673e3433c289684a10d52fb68acd173c",{"status":"available"},[]]}],"rev_map":{"1-673e3433c289684a10d52fb68acd173c":3507},"winningRev":"1-673e3433c289684a10d52fb68acd173c","deleted":false,"seq":3507}ÿby-sequenceÿ0000000000003507¥{"name":"middle","description":"Combining two streams","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"middle","description":"Combining two streams","version":"0.0.1","author":{"name":"Pedro Teixeira"},"repository":{"type":"git","url":"git://github.com/pgte/middle.git"},"tags":["middleware","streams"],"main":"./middle.js","engines":{"node":">= 0.4.0"},"devDependencies":{"tap":"*","bufferedstream":"*"},"scripts":{"test":"node node_modules/tap/bin/tap.js test.js"},"_npmUser":{"name":"pgte","email":"pedro.teixeira@gmail.com"},"_id":"middle@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"14b0f15b93514104c3e8f4ab33b5792d692818a1","tarball":"http://registry.npmjs.org/middle/-/middle-0.0.1.tgz"},"maintainers":[{"name":"pgte","email":"pedro.teixeira@gmail.com"}]},"0.0.2":{"name":"middle","description":"Combining two streams","version":"0.0.2","author":{"name":"Pedro Teixeira"},"repository":{"type":"git","url":"git://github.com/pgte/middle.git"},"tags":["middleware","streams"],"main":"./middle.js","engines":{"node":">= 0.4.0"},"devDependencies":{"tap":"*","bufferedstream":"*"},"scripts":{"test":"node node_modules/tap/bin/tap.js test/test.js"},"_npmUser":{"name":"pgte","email":"pedro.teixeira@gmail.com"},"_id":"middle@0.0.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"7be5ec3b1116023d825890332e29f741f88ea7e3","tarball":"http://registry.npmjs.org/middle/-/middle-0.0.2.tgz"},"maintainers":[{"name":"pgte","email":"pedro.teixeira@gmail.com"}]}},"readme":"# Middle\n\nGet a stream A, pipe it into stream B.\n\nReturns a duplex stream that is the writeable stream part of A and a readable stream part of B\n\nExample:\n\n```javascript\nvar Middle = require('middle');\n\nvar from = // a duplex stream\nvar to = // another duplex stream\nvar middle = new Middle(from, to)\n\n\n// you can also pipe this:\nanotherStream.pipe(middle);\n```","maintainers":[{"name":"pgte","email":"pedro.teixeira@gmail.com"}],"time":{"modified":"2012-03-22T19:59:20.180Z","created":"2012-03-22T18:42:30.262Z","0.0.1":"2012-03-22T18:42:32.364Z","0.0.2":"2012-03-22T19:59:20.180Z"},"author":{"name":"Pedro Teixeira"},"repository":{"type":"git","url":"git://github.com/pgte/middle.git"},"_id":"middle","_rev":"1-673e3433c289684a10d52fb68acd173c"}!ÿdocument-storeÿmerge-recursive¢{"id":"merge-recursive","rev":"1-4fe52a1326d8ae576d0d264856fece6b","rev_tree":[{"pos":1,"ids":["4fe52a1326d8ae576d0d264856fece6b",{"status":"available"},[]]}],"rev_map":{"1-4fe52a1326d8ae576d0d264856fece6b":3506},"winningRev":"1-4fe52a1326d8ae576d0d264856fece6b","deleted":false,"seq":3506}ÿby-sequenceÿ0000000000003506˜{"name":"merge-recursive","description":"A merge utility support recursive merges","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.0":{"name":"merge-recursive","version":"0.0.0","description":"A merge utility support recursive merges","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/UmbraEngineering/node-merge-recursive"},"keywords":["object","merge","recursive"],"author":{"name":"James Brumond"},"license":"MIT","_id":"merge-recursive@0.0.0","dist":{"shasum":"f39d9306030432e1affeba73c038eb8a6a5cc6ae","tarball":"http://registry.npmjs.org/merge-recursive/-/merge-recursive-0.0.0.tgz"},"readme":"","maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]},"0.0.1":{"name":"merge-recursive","version":"0.0.1","description":"A merge utility support recursive merges","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/UmbraEngineering/node-merge-recursive"},"keywords":["object","merge","recursive"],"author":{"name":"James Brumond"},"license":"MIT","_id":"merge-recursive@0.0.1","dist":{"shasum":"5a9ed6e08d4272b0a4726bb753739af8e1dd0be0","tarball":"http://registry.npmjs.org/merge-recursive/-/merge-recursive-0.0.1.tgz"},"readme":"","maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]},"0.0.2":{"name":"merge-recursive","version":"0.0.2","description":"A merge utility support recursive merges","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/UmbraEngineering/node-merge-recursive"},"keywords":["object","merge","recursive"],"author":{"name":"James Brumond"},"license":"MIT","_id":"merge-recursive@0.0.2","dist":{"shasum":"06c4b2456948a9998d71b04d7e0483dd0774d991","tarball":"http://registry.npmjs.org/merge-recursive/-/merge-recursive-0.0.2.tgz"},"readme":"","maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]},"0.0.3":{"name":"merge-recursive","version":"0.0.3","description":"A merge utility support recursive merges","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/UmbraEngineering/node-merge-recursive"},"keywords":["object","merge","recursive"],"author":{"name":"James Brumond"},"license":"MIT","_id":"merge-recursive@0.0.3","dist":{"shasum":"de7901efcaecc906d8cab2ad1e9c470f5a3dae84","tarball":"http://registry.npmjs.org/merge-recursive/-/merge-recursive-0.0.3.tgz"},"readme":"","maintainers":[{"name":"k","email":"kbjr14@gmail.com"}]}},"readme":"","maintainers":[{"name":"k","email":"kbjr14@gmail.com"}],"time":{"modified":"2012-07-22T17:58:49.449Z","created":"2012-07-01T23:35:20.014Z","0.0.0":"2012-07-01T23:35:22.561Z","0.0.1":"2012-07-09T09:01:50.582Z","0.0.2":"2012-07-09T11:27:01.764Z","0.0.3":"2012-07-22T17:58:49.449Z"},"author":{"name":"James Brumond"},"repository":{"type":"git","url":"git://github.com/UmbraEngineering/node-merge-recursive"},"_id":"merge-recursive","_rev":"1-4fe52a1326d8ae576d0d264856fece6b"}ÿdocument-storeÿmd5-component {"id":"md5-component","rev":"1-e72d29dcf7d0b49f04b9bef570b4f465","rev_tree":[{"pos":1,"ids":["e72d29dcf7d0b49f04b9bef570b4f465",{"status":"available"},[]]}],"rev_map":{"1-e72d29dcf7d0b49f04b9bef570b4f465":3505},"winningRev":"1-e72d29dcf7d0b49f04b9bef570b4f465","deleted":false,"seq":3505}ÿby-sequenceÿ0000000000003505ò{"name":"md5-component","description":"MD5 client-side component","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"md5-component","description":"MD5 client-side component","version":"0.0.1","component":{"scripts":{"md5":"index.js"}},"_npmUser":{"name":"tjholowaychuk","email":"tj@vision-media.ca"},"_id":"md5-component@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"38e1667fcf02350e730830450b184be71dd46043","tarball":"http://registry.npmjs.org/md5-component/-/md5-component-0.0.1.tgz"},"readme":"","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}]}},"readme":"","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2012-06-12T21:29:25.921Z","created":"2012-06-12T21:29:24.602Z","0.0.1":"2012-06-12T21:29:25.921Z"},"_id":"md5-component","_rev":"1-e72d29dcf7d0b49f04b9bef570b4f465"}ÿdocument-storeÿmcnet˜{"id":"mcnet","rev":"1-44b4525bc825c80f4737aa83108c4072","rev_tree":[{"pos":1,"ids":["44b4525bc825c80f4737aa83108c4072",{"status":"available"},[]]}],"rev_map":{"1-44b4525bc825c80f4737aa83108c4072":3504},"winningRev":"1-44b4525bc825c80f4737aa83108c4072","deleted":false,"seq":3504}ÿby-sequenceÿ0000000000003504¢{"name":"mcnet","description":"Bindings to the libmcnet Minecraft network protocol parser library","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mcnet","description":"Bindings to the libmcnet Minecraft network protocol parser library","version":"0.0.1","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/node-mcnet","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/node-mcnet.git"},"keywords":["mcnet","minecraft","network","protocol","parser","native","c"],"main":"./mcnet","scripts":{"install":"cd deps/libmcnet; make; cd ../..; node-gyp configure build"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"mcnet@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.7.9","_defaultsLoaded":true,"dist":{"shasum":"53e435a552279d5f2d4390b33e97aa0866db899c","tarball":"http://registry.npmjs.org/mcnet/-/mcnet-0.0.1.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]}},"readme":"node-mcnet\n==========\n\nNode.JS bindings for [libmcnet](https://github.com/deoxxa/libmcnet), an event\nbased, zero-copy, portable Minecraft network protocol parser.\n\nOverview\n--------\n\nTo find out about what libmcnet does, check out [its page](https://github.com/deoxxa/libmcnet)\non github. This binding aims to expose the functionality of the underlying\nlibrary in a way that fits in with the status quo of existing Node.JS modules.\n\nRight now nothing works though. Mainly because I have no idea what I'm doing\nwith node or V8 internals.\n\nLicense\n-------\n\n3-clause BSD. A copy is included with the source.\n\nContact\n-------\n\n* GitHub ([http://github.com/deoxxa](deoxxa))\n* Twitter ([http://twitter.com/deoxxa](@deoxxa))\n* Email ([mailto:deoxxa@fknsrs.biz](deoxxa@fknsrs.biz))\n","maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}],"time":{"modified":"2012-06-05T09:30:46.309Z","created":"2012-06-05T09:30:42.662Z","0.0.1":"2012-06-05T09:30:46.309Z"},"author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"repository":{"type":"git","url":"git://github.com/deoxxa/node-mcnet.git"},"_id":"mcnet","_rev":"1-44b4525bc825c80f4737aa83108c4072"} ÿdocument-storeÿmark-spacedick¡{"id":"mark-spacedick","rev":"1-a31665458110d4ebf9400abbc41a45ff","rev_tree":[{"pos":1,"ids":["a31665458110d4ebf9400abbc41a45ff",{"status":"available"},[]]}],"rev_map":{"1-a31665458110d4ebf9400abbc41a45ff":3503},"winningRev":"1-a31665458110d4ebf9400abbc41a45ff","deleted":false,"seq":3503}ÿby-sequenceÿ0000000000003503± {"name":"mark-spacedick","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"mark-spacedick","author":{"name":"Bob"},"version":"0.0.1","dependencies":{"express":"2.5.10","jade":">= 0.0.1"},"_npmUser":{"name":"yukaihg","email":"yukaihg@gmail.com"},"_id":"mark-spacedick@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0d7f7d2fec7e442a8db9e53fb63a88be39d59e66","tarball":"http://registry.npmjs.org/mark-spacedick/-/mark-spacedick-0.0.1.tgz"},"readme":"","maintainers":[{"name":"yukaihg","email":"yukaihg@gmail.com"}]},"0.0.2":{"name":"mark-spacedick","author":{"name":"Bob"},"version":"0.0.2","dependencies":{"express":"2.5.10","jade":">= 0.0.1"},"_npmUser":{"name":"yukaihg","email":"yukaihg@gmail.com"},"_id":"mark-spacedick@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3b528b02b551fceda5013cbf51f6dae3c5e4e5ee","tarball":"http://registry.npmjs.org/mark-spacedick/-/mark-spacedick-0.0.2.tgz"},"readme":"","maintainers":[{"name":"yukaihg","email":"yukaihg@gmail.com"}]}},"readme":"","maintainers":[{"name":"yukaihg","email":"yukaihg@gmail.com"}],"time":{"modified":"2012-06-18T20:01:43.095Z","created":"2012-06-18T19:52:03.107Z","0.0.1":"2012-06-18T19:52:05.922Z","0.0.2":"2012-06-18T20:01:43.095Z"},"author":{"name":"Bob"},"_id":"mark-spacedick","_rev":"1-a31665458110d4ebf9400abbc41a45ff"}ÿdocument-storeÿlognessš{"id":"logness","rev":"1-a54fbe192c4a7a94487166d7d8aa5f5f","rev_tree":[{"pos":1,"ids":["a54fbe192c4a7a94487166d7d8aa5f5f",{"status":"available"},[]]}],"rev_map":{"1-a54fbe192c4a7a94487166d7d8aa5f5f":3502},"winningRev":"1-a54fbe192c4a7a94487166d7d8aa5f5f","deleted":false,"seq":3502}ÿby-sequenceÿ0000000000003502ñ{"name":"logness","description":"A wrapper for the Mac OS X syslog function that allows you to bind functions to log events.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"name":"logness","version":"0.0.2","description":"A wrapper for the Mac OS X syslog function that allows you to bind functions to log events.","author":{"name":"Martin Gausby","email":"martin@gausby.dk"},"repository":{"type":"git","url":"git@github.com:gausby/logness.git"},"bugs":{"email":"martin@gausby.dk","url":"http://github.com/gausby/logness/issues"},"dependencies":{},"devDependencies":{"buster":">= 0.5.3"},"main":"lib/logness.js","scripts":{"start":"rlwrap node repl.js","test":"./node_modules/buster/bin/buster test","test-runner":"./node_modules/buster/bin/buster autotest","prepublish":"npm install && ./node_modules/buster/bin/buster test"},"engine":"node 0.6.17","_npmUser":{"name":"Martin Gausby","email":"martin@gausby.dk"},"_id":"logness@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7ad8b29cbf37dbee724a1e6909108af32cb65faa","tarball":"http://registry.npmjs.org/logness/-/logness-0.0.2.tgz"},"maintainers":[{"name":"Martin Gausby","email":"martin@gausby.dk"}]}},"readme":"# Logness\n\nA wrapper for the Mac OS X syslog log message viewer.\n\nIf you just initialize a Logness without a filtering function the Logness will emit on every log item that goes into the system `syslog`.\n\nA Logness that would grep all incoming log messages and display their sender and error level could be written as:\n\n var Logness = require('logness');\n var logs = new Logness();\n\n logs.on('message', function(data) {\n console.log([data.sender, data.level].join(' '));\n });\n\n\n## Filtering\n\nIf you pass in a function when you initialize a Logness, you can filter the messages it will react to.\n\n var Logness = require('logness');\n var mail = new Logness(function() {\n /* grep everything send to mail with an error level above 3 */\n return this.sender === 'Mail' && this.level > 3;\n });\n\n mail.on('message', function(data) {\n console.log(data.time, data.message);\n });\n\nThe function passed to Logness should return a Boolean value; `true` if the Logness instance should react on the message, and `false` if it should be ignore it. If no function is passed it will get passed a 'catch all'-function that return `true` for every message, in other words; the Logness instance will get every message.\n\nInside the filtering function `this` refers to the messageÊGŸ+ù data.\n\n\n## Message format\n\nThe message should have the following data attached to it:\n\n * `sender` {string} The name of the program that send the message\n\n * `pid` {number} process id of the sender\n\n * `message` {string} what happened\n\n * `time` {date} the time it happened\n\n * `level` {number} error level\n\n * `host` {string} the name of the machine where the log occurred\n\n\n## Todo\n\n * Make this work for BSD, Linux and other operating systems. Perhaps make a plugin system, that enables Logness to understand other log formats.\n\n * Fix the way the obejcts get notified about messages. I don't know if I like the way it is currently implemented.\n","maintainers":[{"name":"Martin Gausby","email":"martin@gausby.dk"}],"time":{"modified":"2012-06-05T14:15:47.295Z","created":"2012-06-05T14:15:45.804Z","0.0.2":"2012-06-05T14:15:47.295Z"},"author":{"name":"Martin Gausby","email":"martin@gausby.dk"},"repository":{"type":"git","url":"git@github.com:gausby/logness.git"},"_id":"logness","_rev":"1-a54fbe192c4a7a94487166d7d8aa5f5f"}ÿdocument-storeÿlive-fileœ{"id":"live-file","rev":"1-7f758377bfb7d19b95b3d30599bb560f","rev_tree":[{"pos":1,"ids":["7f758377bfb7d19b95b3d30599bb560f",{"status":"available"},[]]}],"rev_map":{"1-7f758377bfb7d19b95b3d30599bb560f":3501},"winningRev":"1-7f758377bfb7d19b95b3d30599bb560f","deleted":false,"seq":3501}ÿby-sequenceÿ0000000000003501Õ4{"name":"live-file","description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"live-file","preferGlobal":"true","version":"0.0.1","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","bin":{"live-file":"./server.js"},"scripts":{"start":"node server.js"},"main":"./server.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engine":{"node":">=0.5"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"7e5ca4dd21e1877ae378a6343c878ef5c8892b13","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.1.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]},"0.0.2":{"name":"live-file","preferGlobal":"true","version":"0.0.2","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","bin":{"live-file":"./server.js"},"scripts":{"start":"node server.js"},"main":"./server.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engine":{"node":">=0.5"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"d877a0505a1c4e6c856a85e82fef2c3f74f25408","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.2.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]},"0.0.3":{"name":"live-file","preferGlobal":"true","version":"0.0.3","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","bin":{"live-file":"./server.js"},"scripts":{"start":"node server.js"},"main":"./server.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engines":{"node":">=0.6"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"747d5f9e6cf184de110f56307629f123ed71db2d","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.3.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]},"0.0.4":{"name":"live-file","preferGlobal":"true","version":"0.0.4","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","bin":{"live-file":"./bin/live-file"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engines":{"node":">=0.6"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"85f9d8c4d432167d12080a78cb53d2d7e3b40ecc","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.4.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]},"0.0.5":{"name":"live-file","preferGlobal":"true","version":"0.0.5","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","bin":{"live-file":"./bin/live-file"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engines":{"node":">=0.6"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"257de03b547aecff871b64c5ca0091efc9b1f070","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.5.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]},"0.0.6":{"name":"live-file","preferGlobal":"true","version":"0.0.6","author":{"name":"Benjamin Eckel bhelx@freenode"},"description":"Pipe a log file to a browser over websockets. Also provide infinite upward scroll.","homepage":"https://github.com/bhelx/live-file","bin":{"live-file":"./bin/live-file"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"keywords":["websockets","log"],"dependencies":{"socket.io":"0.9.x","optimist":"*"},"license":"MIT","engines":{"node":">=0.6"},"_npmUser":{"name":"bhelx","email":"ben@datasingularity.com"},"_id":"live-file@0.0.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5513cf49de206d8dc751dbea53a0e79d4623a3b7","tarball":"http://registry.npmjs.org/live-file/-/live-file-0.0.6.tgz"},"maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}]}},"readme":"Live File\n=========\n\nlive-file is a simple utility to allow you to watch a remote file in realtime on your browser via websockets. It's not meant to be a nice finished product it's just a hacked together tool.\n\nFeatures\n========\n\n* Realtime streaming over webockets\n* Infinite upward scroll simulates terminal application\n* easy to install and run, few dependencies\n\nInstall and Run\n===============\n\nYou can install live-file using npm:\n\n```\n npm install live-file\n```\n\n\n","maintainers":[{"name":"bhelx","email":"ben@datasingularity.com"}],"time":{"modified":"2012-04-21T04:55:32.744Z","created":"2012-04-14T22:39:52.875Z","0.0.1":"2012-04-14T22:39:53.547Z","0.0.2":"2012-04-15T10:41:18.577Z","0.0.3":"2012-04-18T08:44:24.031Z","0.0.4":"2012-04-21T04:09:16.108Z","0.0.5":"2012-04-21T04:23:27.987Z","0.0.6":"2012-04-21T04:55:32.744Z"},"author":{"name":"Benjamin Eckel bhelx@freenode"},"repository":{"type":"git","url":"git://github.com/bhelx/live-file.git"},"_id":"live-file","_rev":"1-7f758377bfb7d19b95b3d30599bb560f"}ÿdocument-storeÿlibs—{"id":"libs","rev":"1-7d43498169e67ae5a106c2e50d515d73","rev_tree":[{"pos":1,"ids":["7d43498169e67ae5a106c2e50d515d73",{"status":"available"},[]]}],"rev_map":{"1-7d43498169e67ae5a106c2e50d515d73":3500},"winningRev":"1-7d43498169e67ae5a106c2e50d515d73","deleted":false,"seq":3500}ÿby-sequenceÿ0000000000003500{"name":"libs","description":"utilities for general NodeJS development","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"libs","version":"0.0.1","description":"utilities for general NodeJS development","url":"http://oscar-mejia.com","main":"./lib/libs.js","directories":{"test":"./test"},"repository":{"type":"git","url":"https://github.com/oscmejia/libs"},"keywords":["utils","utilities","common"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"libs\n====\n\nUtilities for NodeJS","_id":"libs@0.0.1","dist":{"shasum":"ca28fd0f1bf017f82c5f4a29662cfd9697dee2e5","tarball":"http://registry.npmjs.org/libs/-/libs-0.0.1.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.1":{"name":"libs","version":"0.1.1","description":"utilities for general NodeJS development","url":"http://oscar-mejia.com","main":"./lib/libs.js","directories":{"test":"./test"},"repository":{"type":"git","url":"https://github.com/oscmejia/libs"},"keywords":["utils","utilities","common"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"libs\n====\n\nUtilities for NodeJS","_id":"libs@0.1.1","dist":{"shasum":"8ccbee258f2efb37881636fb9020a8f68f21d1ff","tarball":"http://registry.npmjs.org/libs/-/libs-0.1.1.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.2":{"name":"libs","version":"0.1.2","description":"utilities for general NodeJS development","url":"http://oscar-mejia.com","main":"./lib/libs.js","directories":{"test":"./test"},"dependencies":{"dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/libs"},"keywords":["utils","utilities","common"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"libs\n====\n\nUtilities for NodeJS","_id":"libs@0.1.2","dist":{"shasum":"97c049ff773e459b42a1d56818ca02acd4f1f099","tarball":"http://registry.npmjs.org/libs/-/libs-0.1.2.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]}},"readme":"libs\n====\n\nUtilities for NodeJS","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"time":{"modified":"2012-08-07T15:31:34.282Z","created":"2012-08-04T23:14:33.500Z","0.0.1":"2012-08-04T23:14:34.682Z","0.1.1":"2012-08-05T16:38:51.648Z","0.1.2":"2012-08-07T15:31:34.282Z"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"repository":{"type":"git","url":"https://github.com/oscmejia/libs"},"_id":"libs","_rev":"1-7d43498169e67ae5a106c2e50d515d73"}ÿdocument-storeÿlfsworld.jsž{"id":"lfsworld.js","rev":"1-c7836a0560b80da14fed1997ad936ff3","rev_tree":[{"pos":1,"ids":["c7836a0560b80da14fed1997ad936ff3",{"status":"available"},[]]}],"rev_map":{"1-c7836a0560b80da14fed1997ad936ff3":3499},"winningRev":"1-c7836a0560b80da14fed1997ad936ff3","deleted":false,"seq":3499}ÿby-sequenceÿ0000000000003499¾ {"name":"lfsworld.js","description":"LFSWorld API wrapper.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"lfsworld.js","version":"0.0.1","author":{"name":"the_angry_angel","email":"karl@theangryangel.co.uk"},"description":"LFSWorld API wrapper.","repository":{"type":"git","url":"https://github.com/theangryangel/lfsworld.js"},"bugs":"https://github.com/theangryangel/lfsworld.js/issues","main":"./library","keywords":["wrapper","api"],"dependencies":{"shred":"*"},"license":"MIT","engine":{"node":">=0.6.0"},"readme":"","_id":"lfsworld.js@0.0.1","dist":{"shasum":"022f963e0c8e894343bbd59ab2fcb3fec219f55e","tarball":"http://registry.npmjs.org/lfsworld.js/-/lfsworld.js-0.0.1.tgz"},"scripts":{},"maintainers":[{"name":"the_angry_angel","email":"karl@theangryangel.co.uk"}]}},"readme":"","maintainers":[{"name":"the_angry_angel","email":"karl@theangryangel.co.uk"}],"time":{"modified":"2012-06-30T19:34:46.249Z","created":"2012-06-30T19:34:44.305Z","0.0.1":"2012-06-30T19:34:46.249Z"},"author":{"name":"the_angry_angel","email":"karl@theangryangel.co.uk"},"repository":{"type":"git","url":"https://github.com/theangryangel/lfsworld.js"},"_id":"lfsworld.js","_rev":"1-c7836a0560b80da14fed1997ad936ff3"}ÿdocument-storeÿless_r2š{"id":"less_r2","rev":"1-20a2e24c1e7d0c11d1d9c5ed79cdcac8","rev_tree":[{"pos":1,"ids":["20a2e24c1e7d0c11d1d9c5ed79cdcac8",{"status":"available"},[]]}],"rev_map":{"1-20a2e24c1e7d0c11d1d9c5ed79cdcac8":3498},"winningRev":"1-20a2e24c1e7d0c11d1d9c5ed79cdcac8","deleted":false,"seq":3498}ÿby-sequenceÿ0000000000003498ê {"name":"less_r2","description":"compiles a less file then passes it through r2 for right to left styling","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"less_r2","description":"compiles a less file then passes it through r2 for right to left styling","version":"0.0.1","homepage":"https://github.com/dustinsmith1024/less_r2","author":{"name":"Dustin Smith"},"main":"less_r2.js","preferGlobal":true,"repository":{"type":"git","url":"git://github.com/dustinsmith1024/less_r2.git"},"engines":{"node":">= 0.4.1"},"bin":{"less_r2":"bin/less_r2"},"dependencies":{"less":"> 1","R2":"> 1"},"directories":{"bin":"bin","examples":"examples"},"_npmUser":{"name":"dustinsmith1024","email":"dds1024@gmail.com"},"_id":"less_r2@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"376fce77dff43e2673ffddbfa6f5fdb6d52ef060","tarball":"http://registry.npmjs.org/less_r2/-/less_r2-0.0.1.tgz"},"maintainers":[{"name":"dustinsmith1024","email":"dds1024@gmail.com"}]}},"readme":"less_r2\n=======\n\nscript to run a file through lessc then r2","maintainers":[{"name":"dustinsmith1024","email":"dds1024@gmail.com"}],"time":{"modified":"2012-06-11T22:05:47.524Z","created":"2012-06-11T22:05:46.557Z","0.0.1":"2012-06-11T22:05:47.524Z"},"author":{"name":"Dustin Smith"},"repository":{"type":"git","url":"git://github.com/dustinsmith1024/less_r2.git"},"_id":"less_r2","_rev":"1-20a2e24c1e7d0c11d1d9c5ed79cdcac8"}(ÿdocument-storeÿlastfm-spotify-urilist©{"id":"lastfm-spotify-urilist","rev":"1-8ad25470f7d565fed974277c63bc54cc","rev_tree":[{"pos":1,"ids":["8ad25470f7d565fed974277c63bc54cc",{"status":"available"},[]]}],"rev_map":{"1-8ad25470f7d565fed974277c63bc54cc":3497},"winningRev":"1-8ad25470f7d565fed974277c63bc54cc","deleted":false,"seq":3497}ÿby-sequenceÿ0000000000003497É"{"name":"lastfm-spotify-urilist","description":"An easy way of getting a list of Spotify URIs based on Last.fm data","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"lastfm-spotify-urilist","description":"An easy way of getting a list of Spotify URIs based on Last.fm data","version":"0.1.0","homepage":"https://github.com/mikaelbr/lastfm-spotify-urilist","author":{"name":"Mikael Brevik","email":"mikaelbre@gmail.com","url":"http://mikaelb.net"},"repository":{"type":"git","url":"git://github.com/mikaelbr/lastfm-spotify-urilist.git"},"bugs":{"url":"https://github.com/mikaelbr/lastfm-spotify-urilist/issues"},"licenses":[{"type":"MIT","url":"https://github.com/mikaelbr/lastfm-spotify-urilist/blob/master/LICENSE-MIT"}],"main":"lib/lastfm-spotify-urilist","engines":{"node":"~0.6.7"},"scripts":{"test":"grunt test"},"dependencies":{"async":"~0.1.18","spotify":"~0.2.0","lastfm":"~0.8.1","underscore":"~1.3.3"},"devDependencies":{"grunt":"~0.3.8"},"keywords":[],"_npmUser":{"name":"mikaelb","email":"mikaelbre@gmail.com"},"_id":"lastfm-spotify-urilist@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"ddd2caa3fa1f697ef144ccc76898ed4176972a8d","tarball":"http://registry.npmjs.org/lastfm-spotify-urilist/-/lastfm-spotify-urilist-0.1.0.tgz"},"maintainers":[{"name":"mikaelb","email":"mikaelbre@gmail.com"}]},"0.2.0":{"name":"lastfm-spotify-urilist","description":"An easy way of getting a list of Spotify URIs based on Last.fm data","version":"0.2.0","homepage":"https://github.com/mikaelbr/lastfm-spotify-urilist","author":{"name":"Mikael Brevik","email":"mikaelbre@gmail.com","url":"http://mikaelb.net"},"repository":{"type":"git","url":"git://github.com/mikaelbr/lastfm-spotify-urilist.git"},"bugs":{"url":"https://github.com/mikaelbr/lastfm-spotify-urilist/issues"},"licenses":[{"type":"MIT","url":"https://github.com/mikaelbr/lastfm-spotify-urilist/blob/master/LICENSE-MIT"}],"main":"lib/lastfm-spotify-urilist","engines":{"node":"~0.6.7"},"scripts":{"test":"grunt test"},"dependencies":{"async":"~0.1.18","spotify":"~0.2.0","lastfm":"~0.8.1","underscore":"~1.3.3"},"devDependencies":{"grunt":"~0.3.8"},"keywords":[],"_npmUser":{"name":"mikaelb","email":"mikaelbre@gmail.com"},"_id":"lastfm-spotify-urilist@0.2.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"de5d2ee87b2a12d72240a0e27de7e1e99b245e4c","tarball":"http://registry.npmjs.org/lastfm-spotify-urilist/-/lastfm-spotify-urilist-0.2.0.tgz"},"maintainers":[{"name":"mikaelb","email":"mikaelbre@gmail.com"}]}},"readme":"# lastfm-spotify-urilist\n\n__A work in progress for trying to fork out a module from the [Simplify Play Button project](https://github.com/mikaelbr/simplify-playbutton).__\n\nAn easy way of getting a list of Spotify URIs based on Last.fm data (top/loved tracks and weekly chart list of tracks).\n\n## Getting Started\nInstall the module with: `npm install lastfm-spotify-urilist`\n\n```javascript\nvar lsu = require('lastfm-spotify-urilist'),\n tracksProvider = new lsu.SpotifyURIProvider({\n api_key: process.env.SIMPLIFY_LASTFM_API_KEY,\n secret: process.env.SIMPLIFY_LASTFM_SECRET\n });\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\nHaving the tracksProvider object, as defined above, use this simple code to get the loved tracks of a user:\n\n```javascript\ntracksProvider.getURIList(\"loved\", \"mikaelb1\", function (err, data) {\n console.log(data); // List of Spotify URIs from Loved tracks on Last.fm \n});\n\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Mikael Brevik \nLicensed under the MIT license.\n","maintainers":[{"name":"mikaelb","email":"mikaelbre@gmail.com"}],"time":{"modified":"2012-05-11T14:36:12.053Z","created":"2012-05-01T19:57:58.252Z","0.1.0":"2012-05-01T19:58:00.225Z","0.2.0":"2012-05-11T14:36:12.053Z"},"author":{"name":"Mikael Brevik","email":"mikaelbre@gmail.com","url":"http://mikaelb.net"},"repository":{"type":"git","url":"git://github.com/mikaelbr/lastfm-spotify-urilist.git"},"_id":"lastfm-spotify-urilist","_rev":"1-8ad25470f7d565fed974277c63bc54cc"}ÿdocument-storeÿkohai˜{"id":"kohai","rev":"1-64b6c4d275c02972a90a7567ab18f898","rev_tree":[{"pos":1,"ids":["64b6c4d275c02972a90a7567ab18f898",{"status":"available"},[]]}],"rev_map":{"1-64b6c4d275c02972a90a7567ab18f898":3496},"winningRev":"1-64b6c4d275c02972a90a7567ab18f898","deleted":false,"seq":3496}ÿby-sequenceÿ0000000000003496‘{"name":"kohai","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"kohai","author":{"name":"nodejitsu"},"version":"0.0.1","repository":{"type":"git","url":"git@github.com:nodejitsu/kohai.git"},"main":"./lib/kohai","engines":{"node":"v0.4.7"},"dependencies":{"irc":"0.2.x","oauth":"0.9.x","translate":"0.7.x","JS-Entities":">=0.1.0","twitter":">=0.1.17","nconf":"0.1.x","colors":"0.5.x"},"devDependencies":{},"_id":"kohai@0.0.1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"660ccd77a4f66ba3b275be42a03dcf4e0251ac8a","tarball":"http://registry.npmjs.org/kohai/-/kohai-0.0.1.tgz"},"scripts":{}}},"maintainers":[{"name":"marak","email":"marak.squires@gmail.com"}],"time":{"modified":"2012-07-31T22:43:18.379Z","created":"2011-05-21T15:29:59.792Z","0.0.1":"2011-05-21T15:30:00.654Z"},"author":{"name":"nodejitsu"},"repository":{"type":"git","url":"git@github.com:nodejitsu/kohai.git"},"users":{"blakmatrix":true},"_id":"kohai","_rev":"1-64b6c4d275c02972a90a7567ab18f898"}*ÿdocument-storeÿjugglingdb-parse-adapter«{"id":"jugglingdb-parse-adapter","rev":"1-e61eb5d77bfd0b92d70d8db3ce16656f","rev_tree":[{"pos":1,"ids":["e61eb5d77bfd0b92d70d8db3ce16656f",{"status":"available"},[]]}],"rev_map":{"1-e61eb5d77bfd0b92d70d8db3ce16656f":3495},"winningRev":"1-e61eb5d77bfd0b92d70d8db3ce16656f","deleted":false,"seq":3495}ÿby-sequenceÿ0000000000003495Ë{"name":"jugglingdb-parse-adapter","description":"adapter for jugglingdb to use parse.com","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"jugglingdb-parse-adapter","description":"adapter for jugglingdb to use parse.com","keywords":["jugglingdb","adapter","parse.com","node"],"licenses":[{"type":"MIT","url":"https://github.com/malixsys/jugglingdb-parse-adapter/blob/master/LICENSE"}],"version":"0.0.1","homepage":"https://github.com/malixsys/jugglingdb-parse-adapter/","bugs":{"name":"https://github.com/malixsys/jugglingdb-parse-adapter/issues"},"author":{"name":"malixsys","email":"jugglingdbparseadapter@malix.com"},"contributors":[],"engines":{"node":">= 0.6","npm":">= 1.1"},"main":"./lib/main.js","devDependencies":{"coffee-script":"*"},"scripts":{"prepublish":"coffee --compile --output lib/ src/"},"repository":{"type":"git","url":"git://github.com/malixsys/jugglingdb-parse-adapter.git"},"_npmUser":{"name":"malix","email":"npm@malix.com"},"_id":"jugglingdb-parse-adapter@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"2f5cce4b68de26e168997f5c48fec93b05807451","tarball":"http://registry.npmjs.org/jugglingdb-parse-adapter/-/jugglingdb-parse-adapter-0.0.1.tgz"},"maintainers":[{"name":"malix","email":"npm@malix.com"}]},"0.0.2":{"name":"jugglingdb-parse-adapter","description":"adapter for jugglingdb to use parse.com","keywords":["jugglingdb","adapter","parse.com","node"],"licenses":[{"type":"MIT","url":"https://github.com/malixsys/jugglingdb-parse-adapter/blob/master/LICENSE"}],"version":"0.0.2","homepage":"https://github.com/malixsys/jugglingdb-parse-adapter/","bugs":{"name":"https://github.com/malixsys/jugglingdb-parse-adapter/issues"},"author":{"name":"malixsys","email":"jugglingdbparseadapter@malix.com"},"contributors":[],"engines":{"node":">= 0.6","npm":">= 1.1"},"main":"./lib/main.js","devDependencies":{"coffee-script":"*"},"scripts":{"prepublish":"coffee --compile --output lib/ src/"},"repository":{"type":"git","url":"git://github.com/malixsys/jugglingdb-parse-adapter.git"},"_npmUser":{"name":"malix","email":"npm@malix.com"},"_id":"jugglingdb-parse-adapter@0.0.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"4d6fdbe9e463845da956c29cd0cdea3f9a9bfbae","tarball":"http://registry.npmjs.org/jugglingdb-parse-adapter/-/jugglingdb-parse-adapter-0.0.2.tgz"},"maintainers":[{"name":"malix","email":"npm@malix.com"}]}},"readme":"jugglingdb-parse-adapter\r\n========================\r\n\r\nadapter for jugglingdb to use parse.com","maintainers":[{"name":"malix","email":"npm@malix.com"}],"time":{"modified":"2012-05-17T20:35:50.276Z","created":"2012-05-17T20:18:50.619Z","0.0.1":"2012-05-17T20:18:51.054Z","0.0.2":"2012-05-17T20:35:50.276Z"},"author":{"name":"malixsys","email":"jugglingdbparseadapter@malix.com"},"repository":{"type":"git","url":"git://github.com/malixsys/jugglingdb-parse-adapter.git"},"_id":"jugglingdb-parse-adapter","_rev":"1-e61eb5d77bfd0b92d70d8db3ce16656f"}ÿdocument-storeÿjspropsš{"id":"jsprops","rev":"1-991a4b64979d5e4df3e3044dfa328fb5","rev_tree":[{"pos":1,"ids":["991a4b64979d5e4df3e3044dfa328fb5",{"status":"available"},[]]}],"rev_map":{"1-991a4b64979d5e4df3e3044dfa328fb5":3494},"winningRev":"1-991a4b64979d5e4df3e3044dfa328fb5","deleted":false,"seq":3494}ÿby-sequenceÿ0000000000003494Ÿ/{"name":"jsprops","description":"Properties for JavaScript Prototypes. Class based. Extended by a Signal implementation.","dist-tags":{"latest":"0.3.1"},"versions":{"0.3.0":{"name":"jsprops","description":"Properties for JavaScript Prototypes. Class based. Extended by a Signal implementation.","version":"0.3.0","keywords":["object","properties","class","oo","signals"],"main":"lib/properties.js","maintainers":[{"name":"tobiasz.cudnik","email":"tobiasz.cudnik@gmail.com"}],"contributors":[{"name":"Tobiasz Cudnik","email":"tobiasz.cudnik@gmail.com","url":"http://github.com/TobiaszCudnik"}],"repositories":[{"type":"git","url":"http://github.com/TobiaszCudnik/jsprops.git"}],"bugs":{"name":"https://github.com/TobiaszCudnik/jsprops/issues/new"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"dependencies":{"clone":"0.0.4"},"devDependencies":{"mocha":"0.12.1","sinon-expect":"0.1.0","contracts.coffee":"0.2.0"},"_npmUser":{"name":"tobiasz.cudnik","email":"tobiasz.cudnik@gmail.com"},"_id":"jsprops@0.3.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"0703445c501986ed50d7b2b6b7cd40a128e655f6","tarball":"http://registry.npmjs.org/jsprops/-/jsprops-0.3.0.tgz"}},"0.3.1":{"name":"jsprops","description":"Properties for JavaScript Prototypes. Class based. Extended by a Signal implementation.","version":"0.3.1","keywords":["object","properties","class","oo","signals","events"],"main":"lib/properties.js","maintainers":[{"name":"tobiasz.cudnik","email":"tobiasz.cudnik@gmail.com"}],"contributors":[{"name":"Tobiasz Cudnik","email":"tobiasz.cudnik@gmail.com","url":"http://github.com/TobiaszCudnik"}],"repositories":[{"type":"git","url":"http://github.com/TobiaszCudnik/jsprops.git"}],"bugs":{"name":"https://github.com/TobiaszCudnik/jsprops/issues/new"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"dependencies":{"clone":"0.0.4"},"devDependencies":{"contracts.coffee":"0.2.1","mocha":"0.12.1","expect.js":"0.1.2","sinon":"1.3.2","sinon-expect":"0.1.0"},"_npmUser":{"name":"tobiasz.cudnik","email":"tobiasz.cudnik@gmail.com"},"_id":"jsprops@0.3.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"cb13f1c0084732b7b4fed2277982863ad4c4582d","tarball":"http://registry.npmjs.org/jsprops/-/jsprops-0.3.1.tgz"}}},"readme":"# jsprops\nProperties for JavaScript Prototypes.\n\nLibrary provides class based properties that can be bound directly to a prototype, which reduces redundancy of coping the same property among instances.\n\nAdditionally, we can easily inherit from Properties class, extending it by our own getters/setter logic.\n\nDefault property's value is inited in a lazy way, first time it's accessed.\n\n**Example**\n\n```coffeescript\n{ property } = require 'jsprops'\n\nclass Klass\n\tfoo: property 'foo'\n\tbar: property('bar', null, 'def_value')\n\tbaz: property('baz',\n\t\tset: (set, val) ->\n\t\t\tset val.replace /a/, 'b'\n\t)\n\twoof: property('woof',\n\t\tinit: (set) -> set null\n\t\tget: (get) -> get().replace /z/, 'b'\n\t\tset: (set, val) ->\n\t\t\tset val.replace /a/, 'b'\n\t\t'dev_value'\n\t)\n\ninstance = new Klass\ninstance.foo() # returns 'foo'\ninstance.foo 'bar'\ninstance.foo() # returns 'bar'\n```\n\nRepeated name in a declaration is required by the design.\n\n## Signals\nSignals are extended properties, adding nice bindings to an event emitter. An interesting feature is the support for inheritance. You can define an overriding signal in a child class, while still preserving listener defined in the super class. The only condition is the requirement of using `@signal` instead of `signal` (needed for a prototype chain resolution).\n\nFor signals, **set** is an emit and **get** returns temp object with binding functions (on, once) and an init function. All of them can be defined inside a declaration. They are also compatible with [EventEmitter2Async](https://github.com/TobiaszCudnik/EventEmitter2Async) (with callback and after/before events). Additionally, each signal needs to be initialized (manually or using SignalsMixin#initSignals).\n\n**Example**\n\n```coffeescript\n{\n\tsignal\n\tSignalsMixin\n} = require 'jsprops'\n\n# This example actually lacks event emitter, but mixins are out of it's scope.\nclass Klass extends SignalsMixin\n\tfoo: signal('foo',\n\t\ton: -> console.log 'klass1'\n\t)\n\n\ton: -> # forward to a composed event emitter\n\temit: -> # forward to a composed event emitter\n\nclass Klass2 extends Klass\n\tconstructor: ->\n\t\t@initSignals()\n\n\tfoo: @signal('foo',\n\t\ton: -> console.log 'klass2'\n\t)\n\ninstance = new Klass\ninstance.foo().on ->\n\tconsole.log 'listener'\ninstance.foo() # prints 'klass1', 'klass2', 'listener'\n```\n\n## JavaScript examples\n\n```javascript\nproperty = require('jsprops').property\n\nfunction Klass() {}\n\nKlass.prototype.foo = property('foo')\nKlass.prototype.bar = property('bar', null, 'def_value')\nKlass.prototype.baz = property('baz', {\n\tset: function(set, val) {\n\t\tset(val.replace(/a/, 'b'))\n\t}\n})\nKlass.prototype.baz = property('woof', {\n\t\tinit: function(set) {\n\t\t\tset(null)\n\t\t},\n\t\tget: function(get) {\n\t\t\treturn get().replace(/z/, 'b')\n\t\t},\n\t\tset: (set, val) ->\n\t\t\tset(val.replace(/a/, 'b'))\n\t}, 'dev_value'\n)\n```\n\n\n## Contracts\nThis library provides contracts (read - runtime type checking) based on [contracts.coffee](http://disnetdev.com/contracts.coffee/) library. There's a special build for that, so don't worry when using the default one. To make it work, a flag `global.contracts` is needed.","maintainers":[{"name":"tobiasz.cudnik","email":"tobiasz.cudnik@gmail.com"}],"time":{"modified":"2012-03-21T23:45:26.189Z","created":"2012-03-20T21:54:53.034Z","0.3.0":"2012-03-20T21:54:54.999Z","0.3.1":"2012-03-21T23:45:26.189Z"},"_id":"jsprops","_rev":"1-991a4b64979d5e4df3e3044dfa328fb5"}ÿdocument-storeÿjslint-tap{"id":"jslint-tap","rev":"1-11947234806c5f9e1829f44751df2105","rev_tree":[{"pos":1,"ids":["11947234806c5f9e1829f44751df2105",{"status":"available"},[]]}],"rev_map":{"1-11947234806c5f9e1829f44751df2105":3493},"winningRev":"1-11947234806c5f9e1829f44751df2105","deleted":false,"seq":3493}ÿby-sequenceÿ0000000000003493Í {"name":"jslint-tap","description":"A CLI for running JSLint with some helpers.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Irae Carvalho","email":"irae@irae.pro.br"},"name":"jslint-tap","description":"A CLI for running JSLint with some helpers.","version":"0.0.1","homepage":"https://github.com/irae/node-jslint","repository":{"type":"git","url":"git://github.com/irae/jslint-tap.git"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jslinttap":"./bin/lint"},"main":"packages/JSLint/jslint","engines":{"node":">=0.4.1"},"dependencies":{"argsparser":">=0.0.3"},"devDependencies":{},"_npmUser":{"name":"irae","email":"irae@irae.pro.br"},"_id":"jslint-tap@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.10","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"76497b3e3adb25d6d8b02300c9772c3ac754607d","tarball":"http://registry.npmjs.org/jslint-tap/-/jslint-tap-0.0.1.tgz"},"maintainers":[{"name":"irae","email":"irae@irae.pro.br"}]}},"readme":"# Node-JSLint\n\nA CLI for running JSLint (oficial from git submodule) and outputing tap files.\n\n###Usage:\n\nTo run jslinttap use the following command: the `grep -v node_modules` is to exclude any file matching this names.\n\n jslinttap `find * -name '*.js' | grep -v node_modules | xargs echo`\n\n","maintainers":[{"name":"irae","email":"irae@irae.pro.br"}],"time":{"modified":"2012-03-22T18:36:01.575Z","created":"2012-03-22T18:35:59.699Z","0.0.1":"2012-03-22T18:36:01.575Z"},"author":{"name":"Irae Carvalho","email":"irae@irae.pro.br"},"repository":{"type":"git","url":"git://github.com/irae/jslint-tap.git"},"_id":"jslint-tap","_rev":"1-11947234806c5f9e1829f44751df2105"}ÿdocument-storeÿjsflow™{"id":"jsflow","rev":"1-cd59977a71b794e40%2ù2319c9c509ddc4bb","rev_tree":[{"pos":1,"ids":["cd59977a71b794e42319c9c509ddc4bb",{"status":"available"},[]]}],"rev_map":{"1-cd59977a71b794e42319c9c509ddc4bb":3492},"winningRev":"1-cd59977a71b794e42319c9c509ddc4bb","deleted":false,"seq":3492}ÿby-sequenceÿ0000000000003492üY{"name":"jsflow","description":"Just another approach to reduce spaghetti code. But not a libary.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"jsflow","version":"0.1.0","description":"Just another approach to reduce spaghetti code. But not a libary.","author":{"name":"Tobias Koppers @sokra"},"main":"lib/jsflow.js","bin":{"jsflow":"bin/jsflow.js"},"loader":"lib/loader.js","dependencies":{"escodegen":"*"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"sokra","email":"tobias.koppers@googlemail.com"},"_id":"jsflow@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"c7619662d690652b3f7d4ed0a0e44fd1f9f3a553","tarball":"http://registry.npmjs.org/jsflow/-/jsflow-0.1.0.tgz"},"maintainers":[{"name":"sokra","email":"tobias.koppers@googlemail.com"}]}},"readme":"# jsflow\r\n\r\nJust another approach to reduce spaghetti code. But not a libary.\r\n\r\nIt's a compiler.\r\n\r\nOther javascript control flow libaries cannot escape from javascript syntax and so they have still much `function() { ... }` spaghetti. With a compiler we are not bound to javascript syntax.\r\n\r\nOther compilers (like coffeescript) can reduce it better, but they are not focused on common constructs, but offer only alternative syntax for core constructs.\r\n\r\n## Common constructs\r\n\r\n``` javascript\r\n/*** vanilla javascript ***/\r\n// sync control flow (without error handling)\r\nvar content = fs.readFileSync(input, \"utf-8\");\r\nvar ast = parse(content);\r\nvar code = generate(ast);\r\nfs.writeFileSync(output, code, \"utf-8\");\r\nend();\r\n\r\n// async control flow (without error handling)\r\nfs.readFile(input, \"utf-8\", function(err, content) {\r\n\tparse(content, function(err, ast) {\r\n\t\tgenerate(ast, function(err, code) {\r\n\t\t\tfs.writeFile(output, code, \"utf-8\", function(err) {\r\n\t\t\t\tend();\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n```\r\n\r\nSync control flow looks still really ok, but async control flow is really spaghetti-like.\r\n\r\nIf we would add error handling... :(\r\n\r\n## jsflow\r\n\r\njsflow try to make it more readable...\r\n\r\nIt adds a \"register\" named `#` and flow operators. Here is how the above example looks with jsflow:\r\n\r\n``` javascript\r\n/*** jsflow ***/\r\n// sync control flow (with error handling)\r\nfs.readFileSync(input, \"utf-8\") ->\r\n\tparse(#) ->\r\n\tgenerate(#) ->\r\n\tfs.writeFileSync(output, #, \"utf-8\") ->\r\n\tend()\r\n~> console.error(#);\r\n\r\n// async control flow (with error handling)\r\nfs.readFile(input, \"utf-8\") -->\r\n\tparse(#) -->\r\n\tgenerate(#) -->\r\n\tfs.writeFile(output, #, \"utf-8\") -->\r\n\tend()\r\n~~> console.error(#);\r\n\r\n// operator -> sync flow\r\n// operator --> async flow\r\n// operator ~> sync error handling flow\r\n// operator ~~> async error handling flow\r\n// details below\r\n```\r\n\r\njsflow makes sync and async control flow look very similar, which is very cool.\r\n\r\nThere are more flow operators. There are described below.\r\n\r\n## jsflow operators\r\n\r\n### `->` (sync transfer)\r\n\r\nLeft side must be an expression.\r\n\r\nTransfer the \"value\" of the left side expression into the flow register (#) and continue with right side.\r\n\r\n``` javascript\r\n5 -> # + # -> console.log(#); // prints 10\r\n```\r\n\r\n### `=>` (sync non-transfer)\r\n\r\nLeft side can be a statement or expression.\r\n\r\nEvaluates the left side, but do not transfer the \"value\" (statements may not have a value). The flow register (#) is not modified.\r\n\r\nYou are allowed to modify the flow register in the statement.\r\n\r\n``` javascript\r\n5 ->\r\n\tvar test = # =>\r\n\tif (# > 4) {\r\n\t\t# /= 2;\r\n\t} =>\r\n\tconsole.log(test) =>\r\n\tconsole.log(#);\r\n// prints 5 and 2.5\r\n```\r\n\r\nIf you chain many statements you may should use a block, which make if more readable:\r\n\r\n``` javascript\r\n5 -> {\r\n\tvar test = #;\r\n\tif (# > 4) {\r\n\t\t# /= 2;\r\n\t}\r\n\tconsole.log(test);\r\n\tconsole.log(#);\r\n}\r\n// prints 5 and 2.5\r\n```\r\n\r\n### `==>` (async callback)\r\n\r\nLeft side must be a call expression.\r\n\r\nIf a `(` is followed a arguments list is excepted.\r\n\r\n`leftSide ==> (#err, arg2, #, arg3) rightSide`\r\n\r\nThe arguments list may contain `#` or `#err`.\r\n\r\n`#`: The argument is the new value of the flow register.\r\n\r\n`#err`: The argument is an error if set. It is handled by your error handler.\r\n\r\nIf no arguments list is provided it defaults to `(#)`.\r\n\r\nThe operator adds an callback to the call expression. The callback has the arguments as specified in the arguments list. The right side is executed when the callback is called from the function on left side. There is no restriction on how many times it can be called.\r\n\r\n``` javascript\r\nprocess.on(\"exit\") ==> ()\r\n\t[\"a\", \"b\", \"c\"].forEach() ==>\r\n\tfs.readFile(#, \"utf-8\") ==> (#err, #)\r\n\tconsole.log(#);\r\n```\r\n\r\n### `-->` (async callback node style)\r\n\r\nShortcut for `==> (#err, #)`\r\n\r\n### `~>` (sync error handler)\r\n\r\nThe left side must be a flow, statement or expression.\r\n\r\nThe left side is tried (`try`) and if an exception occurs right side is executed. Flow register is set to the exception.\r\n\r\n``` javascript\r\n5 -> \r\n\t#.test() // throw an runtime exception\r\n~> console.log(#);\r\n// prints the runtime exception\r\n```\r\n\r\n### `~~>` (async error handler)\r\n\r\nThe left side must be a flow, statement or expression.\r\n\r\nExceptions parsed the async jsflow callbacks are handled through execution of the right side. Flow register is set to the exception.\r\n\r\n``` javascript\r\nfs.readFile(input, \"utf-8\") -->\r\n\tparse(#) -->\r\n\tgenerate(#) -->\r\n\tfs.writeFile(output, #, \"utf-8\") -->\r\n\tend()\r\n~~> console.error(#);\r\n// prints the error if any async callback is called with an error\r\n```\r\n\r\n### `~> ~~>`\r\n\r\nYou can combine both error types.\r\n\r\n`stuff() --> sth(#) ~> ~~> console.error(#)`\r\n\r\n### `~>` and `~~>`\r\n\r\nAn error handler ends the current flow and starts a new one (error handler flow). If you have multiple error handlers chained the second one is the error handler of the error handler.\r\n\r\n``` javascript\r\n5 ->\r\n\tthrow new Error(\"test\") // throws a test error\r\n~> #.test() // throws a runtime error\r\n~> console.error(#)\r\n// prints the runtime error throwed by the first error handler\r\n// async error handling behaves similar\r\n```\r\n\r\n### `+~>`\r\n\r\nThe left side must be a expression, which should evaluate to a function(err).\r\n\r\nThe value of the left side is set as error handler for both sync and async errors.\r\n\r\n``` javascript\r\nfunction(filename, encoding, callback) {\r\n\tcallback +~> \r\n\t\tprocessFilename(filename) ->\r\n\t\tfs.readFile(#, encoding) -->\r\n\t\tcallback(null, #);\r\n}\r\n```\r\n\r\n### `+~~>`\r\n\r\nLike `+~>` but don't set the sync error handler.\r\n\r\n## Future stuff\r\n\r\nA syntax for the common `func(#)`, `func(#, a, b)` or `#.func()`.\r\n\r\n```\r\n// func! = func(#)\r\n// func a, b = func(#, a, b)\r\n// .func() = #.func()\r\n// .func(a, b) = #.func(a, b)\r\n\r\nsource ->\r\n\tparse {some: \"options\"} --> {\r\n\t\t.visit ==>\r\n\t\t.attr = true;\r\n\t} =>\r\n\tgenerate! ->\r\n\tconsole.log!;\r\n\r\n// is equal to\r\n\r\nsource ->\r\n\tparse(#, {some: \"options\"}) --> {\r\n\t\t#.visit ==>\r\n\t\t#.attr = true;\r\n\t} =>\r\n\tgenerate(#) ->\r\n\tconsole.log(#);\r\n```\r\n\r\nA simple class construct which fits into jsflow.\r\n\r\n```\r\nclass Name : SuperName {\r\n\t/** constructor **/\r\n\t(value) => @value = value;\r\n\t// (@value); // shortcut\r\n\t// (@value) => #super.call(@); // call super class constructor\r\n\t\r\n\t/** method returning value **/\r\n\t.get() -> @value;\r\n\t\r\n\t/** method setting value **/\r\n\t.set(value) => @value = value;\r\n\t// set(@value); // shortcut\r\n\t\r\n\t/** method modifying and returning value **/\r\n\t.increment(#) -> {\r\n\t\t@value += #;\r\n\t\tif(@value > 9000 && @value - # <= 9000)\r\n\t\t\t@emit(\"over9000\", @value);\r\n\t\treturn @value;\r\n\t}\r\n\t\r\n\t/** method with callback **/\r\n\t.bindAlarm ==> (value)\r\n\t\t@on(\"over9000\", #callback);\r\n\t\r\n\t/** method with node-sytle callback\r\n\t.checkAlarm(inSec) -->\r\n\t\tsetTimeout(##, inSec*1000) ==> ()\r\n\t\tif(@value > 9000)\r\n\t\t\t#return @value;\r\n\t\telse\r\n\t\t\t#throw new Error(\"No alarm\");\r\n\t\r\n\t/** method returning a function **/\r\n\t.getLogFunction ->\r\n\t\treturn ==> (text)\r\n\t\t\tconsole.log(text + \" \" + @value);\r\n\t\t\t\r\n\t/** static method **/\r\n\tname -> \"My Class\";\r\n}\r\n// @name is like this.name, but this remembered from start so it \r\n// can be use in callbacks.\r\n// #super simply stores the base class\r\n// .name(arguments) is a instance method\r\n// name(arguments) is a static method\r\n// # can be part of the arguments\r\n// func => code is a function without return value (procedure)\r\n// func -> code is a function with a sync return value\r\n// func ==> (xyz) code is a function with async callback\r\n// callback function is included by jsflow\r\n// if the first argument of the callback function\r\n// is #err than #callback is set as error handler\r\n// #callback is the callback function included by jsflow\r\n// func --> code is a shortcut for func ==> (#err, #)\r\n// than #return and #throw are shortcuts \r\n// for #callback(null, result and #callback(err)\r\n```\r\n\r\n## Technology\r\n\r\nThe compiler is a [esprima](https://github.com/ariya/esprima) -> [escodegen](https://github.com/constellation/escodegen) flow, with modified esprima code. Because it is based on esprima it should parse nearly any normal javascript code too.\r\n\r\n## Info\r\n\r\njsflow is currently just a experiment for this kind of syntax.\r\n\r\nI may use it a few times to experiment with it.\r\n\r\nBased on that and on the comments, I may continue to develop the Future Stuff.\r\n\r\n## Examples\r\n\r\n``` javascript\r\n/*** EventEmitter ***/\r\nee.on(\"event\") ==> (data) {\r\n\tdoSomeStuffWith(data);\r\n\tandEvenMore(data);\r\n\tee.emit(\"event2\", data)\r\n}\r\nee.on(\"event\") ==>\r\n\tdoSomeStuffWith(#) =>\r\n\tandEvenMore(#) =>\r\n\tee.emit(\"event2\", #);\r\n\r\n/*** jQuery ***/\r\n$(\".item\").click() ==>\r\n\t# = $(this) =>\r\n\t#.hide() ->\r\n\t#.css({background: \"red\"});\r\n\r\n/*** fs ***/\r\nfunction printAllFilesLengthIn(filename, callback) {\r\n\tvar count = 0;\r\n\tfs.readFile(filename, \"utf-8\") -->\r\n\t\t#.split(/\\r\\n?/g) ->\r\n\t\tcount = #.length =>\r\n\t\t#.forEach() ==> (filename)\r\n\t\tfs.readFile(filename, \"utf-8\") -->\r\n\t\tconsole.log(filename + \": \" + #.length) =>\r\n\t\tif(--count === 0)\r\n\t\t\tcallback();\r\n\t~~> if(count >= 0) {\r\n\t\tcount = -1;\r\n\t\tcallback(#);\r\n\t}\r\n}\r\n```\r\n\r\n## License\r\n\r\nCopyright (C) 2012 Tobias Koppers and other contributors\r\n\r\nMIT License\r\n\r\nThe source contains [esprima](https://github.com/ariya/esprima#license) code.\r\n\r\n","maintainers":[{"name":"sokra","email":"tobias.koppers@googlemail.com"}],"time":{"modified":"2012-06-12T13:57:43.544Z","created":"2012-06-12T13:57:23.788Z","0.1.0":"2012-06-12T13:57:43.544Z"},"author":{"name":"Tobias Koppers @sokra"},"_id":"jsflow","_rev":"1-cd59977a71b794e42319c9c509ddc4bb"}!ÿdocument-storeÿjordan-npm-test¢{"id":"jordan-npm-test","rev":"1-9464054935b74dc0c8ba9c256ff11554","rev_tree":[{"pos":1,"ids":["9464054935b74dc0c8ba9c256ff11554",{"status":"available"},[]]}],"rev_map":{"1-9464054935b74dc0c8ba9c256ff11554":3491},"winningRev":"1-9464054935b74dc0c8ba9c256ff11554","deleted":false,"seq":3491}ÿby-sequenceÿ0000000000003491ô{"name":"jordan-npm-test","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"jordan-npm-test","author":{"name":"Jordan Fox"},"version":"0.0.1","main":"server.js","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"jrfox02","email":"jrfox02@gmail.com"},"_id":"jordan-npm-test@0.0.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"9a03306928ae19f11d5775a119eabbc83ad716de","tarball":"http://registry.npmjs.org/jordan-npm-test/-/jordan-npm-test-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jrfox02","email":"jrfox02@gmail.com"}]}},"readme":"","maintainers":[{"name":"jrfox02","email":"jrfox02@gmail.com"}],"time":{"modified":"2012-06-18T20:03:17.946Z","created":"2012-06-18T20:03:15.524Z","0.0.1":"2012-06-18T20:03:17.946Z"},"author":{"name":"Jordan Fox"},"_id":"jordan-npm-test","_rev":"1-9464054935b74dc0c8ba9c256ff11554"}ÿdocument-storeÿjoker-dmapiž{"id":"joker-dmapi","rev":"1-f6a1065676e6a3f7300039689a037958","rev_tree":[{"pos":1,"ids":["f6a1065676e6a3f7300039689a037958",{"status":"available"},[]]}],"rev_map":{"1-f6a1065676e6a3f7300039689a037958":3490},"winningRev":"1-f6a1065676e6a3f7300039689a037958","deleted":false,"seq":3490}ÿby-sequenceÿ0000000000003490¬${"name":"joker-dmapi","description":"Joker.com DMAPI client library","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"joker-dmapi","description":"Joker.com DMAPI client library","version":"0.0.1","homepage":"http://github.com/jheusala/node-joker-dmapi","repository":{"type":"git","url":"git://github.com/jheusala/node-joker-dmapi.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/joker-dmapi.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker-dmapi@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d55538e86471c3a79df60d1b63a7066861ac1798","tarball":"http://registry.npmjs.org/joker-dmapi/-/joker-dmapi-0.0.1.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.2":{"name":"joker-dmapi","description":"Joker.com DMAPI client library","version":"0.0.2","homepage":"http://github.com/jheusala/node-joker-dmapi","repository":{"type":"git","url":"git://github.com/jheusala/node-joker-dmapi.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/joker-dmapi.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker-dmapi@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ed3f3fab33b3e1606976553fd3a8435040698564","tarball":"http://registry.npmjs.org/joker-dmapi/-/joker-dmapi-0.0.2.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.3":{"name":"joker-dmapi","description":"Joker.com DMAPI client library","version":"0.0.3","homepage":"http://github.com/jheusala/node-joker-dmapi","repository":{"type":"git","url":"git://github.com/jheusala/node-joker-dmapi.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/joker-dmapi.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker-dmapi@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"593c3147649b75cf81dc7d614ce3a46e3df92f12","tarball":"http://registry.npmjs.org/joker-dmapi/-/joker-dmapi-0.0.3.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.4":{"name":"joker-dmapi","description":"Joker.com DMAPI client library","version":"0.0.4","homepage":"http://github.com/jheusala/node-joker-dmapi","repository":{"type":"git","url":"git://github.com/jheusala/node-joker-dmapi.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/joker-dmapi.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker-dmapi@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"682a7075d9b4a4b93da79d899c5e244c1ba3e411","tarball":"http://registry.npmjs.org/joker-dmapi/-/joker-dmapi-0.0.4.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]}},"readme":"Joker.com DMAPI client library\n==============================\n\nDescription\n-----------\n\nThis is [Domain Management API](https://dmapi.joker.com/) client library for \n[Node.js](http://nodejs.org). It can be used to access \n[Joker.com](http://www.joker.com) by resellers.\n\nInstallation for Node.js\n------------------------\n\nSimplest way to install is to use [npm](http://npmjs.org/), just simply `npm install joker-dmapi`.\n\nLicense\n-------\n\nMIT-style license, see [INSTALL.txt](http://github.com/jheusala/js-snippets/blob/master/LICENSE.txt).\n\nUsage\n-----\n\n\n","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}],"time":{"modified":"2012-05-18T02:24:38.878Z","created":"2012-05-17T22:42:42.281Z","0.0.1":"2012-05-17T22:42:44.389Z","0.0.2":"2012-05-17T23:39:42.324Z","0.0.3":"2012-05-18T01:22:33.412Z","0.0.4":"2012-05-18T02:24:38.878Z"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"repository":{"type":"git","url":"git://github.com/jheusala/node-joker-dmapi.git"},"_id":"joker-dmapi","_rev":"1-f6a1065676e6a3f7300039689a037958"}ÿdocument-storeÿjoker˜{"id":"joker","rev":"1-5cffbc9b4a77518649f06b0c170661b0","rev_tree":[{"pos":1,"ids":["5cffbc9b4a77518649f06b0c170661b0",{"status":"available"},[]]}],"rev_map":{"1-5cffbc9b4a77518649f06b0c170661b0":3489},"winningRev":"1-5cffbc9b4a77518649f06b0c170661b0","deleted":false,"seq":3489}ÿby-sequenceÿ0000000000003489œG{"name":"joker","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.1","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.0.1","snippets":">= 0.0.1","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.1"},"devDependencies":{"snippets":"*","easycli":"*"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0d34dc8c00dd3b7ec2b9d93554c73ffc7a49bf23","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.2":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.2","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.0.1","snippets":">= 0.0.1","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.1"},"devDependencies":{"snippets":"*","easycli":"*"},"bin":{"joker":"./joker.js"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"26f3098c941b2464990dcc80c00d212da265fa1c","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.2.tgz"},"readme":"","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.3":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.3","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.0.1","snippets":">= 0.0.1","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.1"},"devDependencies":{"snippets":"*","easycli":"*"},"bin":{"joker":"./joker.js"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.3","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"cdc6e10f36f8a54b37fa94f3c029aead1bf2e51d","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.3.tgz"},"readme":"","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.4":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.4","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.0.1","snippets":">= 0.0.1","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.1"},"devDependencies":{"snippets":"*","easycli":"*"},"bin":{"joker":"./joker.js"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.4","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"37dd36b971c01183e40ec2bab24ca0928a2e9907","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.4.tgz"},"readme":"\nnode-joker\n==========\n\nCLI utility for Joker.com's Resellers (DMAPI).\n\nIt's still under heavy development and does not support everything yet.\n\nLicense\n-------\n\nMIT-style license, see [INSTALL.txt](http://github.com/jheusala/node-joker/blob/master/LICENSE.txt).\n\nInstall\n-------\n\nSimplest way to install is to use [npm](http://npmjs.org/), just simply `npm install joker -g`.\n\nUsage\n-----\n\n* Login: `joker login USER PASSWORD`\n* Logout: `joker logout`\n* List domains: `joker domain list`\n* More help: `joker help`\n","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.5":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.5","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.3.4","snippets":">= 0.0.6","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.3","easycli":">= 0.0.2"},"devDependencies":{},"bin":{"joker":"./joker.js"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.5","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"07e9da4621282ce4b4c185987441431eab6e589d","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.5.tgz"},"readme":"\nnode-joker\n==========\n\nCLI utility for Joker.com's Resellers (DMAPI).\n\nIt's still under heavy development and does not support everything yet.\n\nLicense\n-------\n\nMIT-style license, see [INSTALL.txt](http://github.com/jheusala/node-joker/blob/master/LICENSE.txt).\n\nInstall\n-------\n\nSimplest way to install is to use [npm](http://npmjs.org/), just simply `npm install joker -g`.\n\nUsage\n-----\n\n### Login\n\n`joker login USER PASSWORD`\n\n**Please note:** Writing your password on command line and using shared computer system might be a security risk. [Prompting it from the command line is on TODO list.]\n\n### Logout\n\n`joker logout`\n\n### List domains\n\n`joker domain list`\n\n### List domain information (using live data from joker.com)\n\n`joker whois --domain=sendanor.com`\n\n### Get reseller profile data\n\n`joker profile`\n\n### Renew domain\n\n`joker domain renew --domain=sendanor.com --expyear=2013`\n\n### Grants\n\nShow grants for domain:\n\n`joker grants list --domain=sendanor.com`\n\nAdd new grant:\n\n`joker grants invite --domain=example.com --role=@admin --email='hostmaster@example.com' --nickname='Hostmaster' --client-uid=1234`\n\n### More help\n\n`joker help`\n\nor \n\n`joker command help`\n","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.6":{"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"name":"joker","version":"0.0.6","homepage":"http://github.com/jheusala/node-joker","repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"engines":{"node":">= 0.6.10"},"dependencies":{"optimist":">= 0.3.4","snippets":">= 0.0.6","filedb":"https://github.com/jheusala/node-filedb/tarball/master","joker-dmapi":">= 0.0.4","easycli":">= 0.0.2"},"devDependencies":{},"bin":{"joker":"./joker.js"},"optionalDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"joker@0.0.6","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ca8e500a23b569fdf029e05e832128b47bcbd361","tarball":"http://registry.npmjs.org/joker/-/joker-0.0.6.tgz"},"readme":"\nnode-joker\n==========\n\nCLI utility for Joker.com's Resellers (DMAPI).\n\nIt's still under heavy development and does not support everything yet.\n\nLicense\n-------\n\nMIT-style license, see [INSTALL.txt](http://github.com/jheusala/node-joker/blob/master/LICENSE.txt).\n\nInstall\n-------\n\nSimplest way to install is to use [npm](http://npmjs.org/), just simply `npm install joker -g`.\n\nUsage\n-----\n\n### Login\n\n`joker login USER PASSWORD`\n\n**Please note:** Writing your password on command line and using shared computer system might be a security risk. [Prompting it from the command line is on TODO list.]\n\n### Logout\n\n`joker logout`\n\n### List domains\n\n`joker domain list`\n\n### List domain information (using live data from joker.com)\n\n`joker whois --domain=example.com`\n\n### Get reseller profile data\n\n`joker profile`\n\n### Renew domain\n\n`joker domain renew --domain=example.com --expyear=2013`\n\n### Grants\n\nShow grants for domain:\n\n`joker grants list --domain=example.com`\n\nAdd new grant:\n\n`joker grants invite --domain=example.com --role=@admin --email='hostmaster@example.com' \n --nickname='Hostmaster' --client-uid=1234`\n\n### More help\n\n`joker help`\n\nor \n\n`joker command help`\n","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]}},"readme":"","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}],"time":{"modified":"2012-05-18T02:25:16.732Z","created":"2012-05-17T22:51:09.265Z","0.0.1":"2012-05-17T22:51:11.311Z","0.0.2":"2012-05-17T22:54:00.055Z","0.0.3":"2012-05-17T22:56:15.826Z","0.0.4":"2012-05-17T23:13:56.558Z","0.0.5":"2012-05-18T01:24:50.362Z","0.0.6":"2012-05-18T02:25:16.732Z"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"repository":{"type":"git","url":"git://github.com/jheusala/node-joker.git"},"_id":"joker","_rev":"1-5cffbc9b4a77518649f06b0c170661b0"}ÿdocument-storeÿjhc-npm-testŸ{"id":"jhc-npm-test","rev":"1-9f40114d3026dcc328b530a0d43f65b2","rev_tree":[{"pos":1,"ids":["9f40114d3026dcc328b530a0d43f65b2",{"status":"available"},[]]}],"rev_map":{"1-9f40114d3026dcc328b530a0d43f65b2":3488},"winningRev":"1-9f40114d3026dcc328b530a0d43f65b2","deleted":false,"seq":3488}ÿby-sequenceÿ0000000000003488æ {"name":"jhc-npm-test","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"jhc-npm-test","author":{"name":"Jihoon Choi"},"version":"0.0.1","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"jhc","email":"jhc20@sfu.ca"},"_id":"jhc-npm-test@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1617697c587905dc6a005c5757fa9596a55ab579","tarball":"http://registry.npmjs.org/jhc-npm-test/-/jhc-npm-test-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jhc","email":"jhc20@sfu.ca"}]},"0.0.2":{"name":"jhc-npm-test","author":{"name":"Jihoon Choi"},"version":"0.0.2","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"jhc","email":"jhc20@sfu.ca"},"_id":"jhc-npm-test@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"502dd539eaae6d0af03b71297af6bec6904a299a","tarball":"http://registry.npmjs.org/jhc-npm-test/-/jhc-npm-test-0.0.2.tgz"},"readme":"","maintainers":[{"name":"jhc","email":"jhc20@sfu.ca"}]}},"readme":"","maintainers":[{"name":"jhc","email":"jhc20@sfu.ca"}],"time":{"modified":"2012-06-18T20:05:28.056Z","created":"2012-06-18T19:54:46.967Z","0.0.1":"2012-06-18T19:54:48.224Z","0.0.2":"2012-06-18T20:05:28.056Z"},"author":{"name":"Jihoon Choi"},"_id":"jhc-npm-test","_rev":"1-9f40114d3026dcc328b530a0d43f65b2"}%ÿdocument-storeÿjasmine-tapreporter¦{"id":"jasmine-tapreporter","rev":"1-0430e3c10ed292be62d59d8aef5f8c3f","rev_tree":[{"pos":1,"ids":["0430e3c10ed292be62d59d8aef5f8c3f",{"status":"available"},[]]}],"rev_map":{"1-0430e3c10ed292be62d59d8aef5f8c3f":3487},"winningRev":"1-0430e3c10ed292be62d59d8aef5f8c3f","deleted":false,"seq":3487}ÿby-sequenceÿ0000000000003487…,{"name":"jasmine-tapreporter","description":"Jasmine reporter that reports a result in TAP format.","dist-tags":{"latest":"0.2.2"},"versions":{"0.0.1":{"name":"jasmine-tapreporter","version":"0.0.1","description":"Jasmine reporter that reports a result in TAP format.","author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"main":"./src/tapreporter.js","licenses":[{"type":"MIT","url":"https://raw.github.com/kozy4324/Jasmine-TAPReporter/master/LICENSE"}],"_npmUser":{"name":"kozy4324","email":"kozy4324@gmail.com"},"_id":"jasmine-tapreporter@0.0.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"6345085e97ad3e89b62cec32fb7203fb86c0477f","tarball":"http://registry.npmjs.org/jasmine-tapreporter/-/jasmine-tapreporter-0.0.1.tgz"},"maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}]},"0.1.0":{"name":"jasmine-tapreporter","version":"0.1.0","description":"Jasmine reporter that reports a result in TAP format.","author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"main":"./src/tapreporter.js","licenses":[{"type":"MIT","url":"https://raw.github.com/kozy4324/Jasmine-TAPReporter/master/LICENSE"}],"_npmUser":{"name":"kozy4324","email":"kozy4324@gmail.com"},"_id":"jasmine-tapreporter@0.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2d9277db079d6c843eb6b641f3c1f329cab26c2b","tarball":"http://registry.npmjs.org/jasmine-tapreporter/-/jasmine-tapreporter-0.1.0.tgz"},"maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}]},"0.2.0":{"name":"jasmine-tapreporter","version":"0.2.0","description":"Jasmine reporter that reports a result in TAP format.","author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"main":"./src/tapreporter.js","licenses":[{"type":"MIT","url":"https://raw.github.com/kozy4324/Jasmine-TAPReporter/master/LICENSE"}],"_npmUser":{"name":"kozy4324","email":"kozy4324@gmail.com"},"_id":"jasmine-tapreporter@0.2.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"bb7b226e5b9d99a3c0331c62b240f9974da621c3","tarball":"http://registry.npmjs.org/jasmine-tapreporter/-/jasmine-tapreporter-0.2.0.tgz"},"maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}]},"0.2.1":{"name":"jasmine-tapreporter","version":"0.2.1","description":"Jasmine reporter that reports a result in TAP formáÃߺùat.","author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"main":"./src/tapreporter.js","licenses":[{"type":"MIT","url":"https://raw.github.com/kozy4324/Jasmine-TAPReporter/master/LICENSE"}],"_npmUser":{"name":"kozy4324","email":"kozy4324@gmail.com"},"_id":"jasmine-tapreporter@0.2.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2cfde7becf7977b5859785ab360d59094e10e868","tarball":"http://registry.npmjs.org/jasmine-tapreporter/-/jasmine-tapreporter-0.2.1.tgz"},"maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}]},"0.2.2":{"name":"jasmine-tapreporter","version":"0.2.2","description":"Jasmine reporter that reports a result in TAP format.","author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"main":"./src/tapreporter.js","licenses":[{"type":"MIT","url":"https://raw.github.com/kozy4324/Jasmine-TAPReporter/master/LICENSE"}],"_npmUser":{"name":"kozy4324","email":"kozy4324@gmail.com"},"_id":"jasmine-tapreporter@0.2.2","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"c5835fb8462debb2c8a33db6b4c97663424c1147","tarball":"http://registry.npmjs.org/jasmine-tapreporter/-/jasmine-tapreporter-0.2.2.tgz"},"maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}]}},"readme":"# jasmine-tapreporter\n\nJasmine reporter that reports a result in TAP format.\n\n## Usage\n\n```coffeescript\n# a.coffee\njasmine = require 'jasmine-node'\nTapreporter = require 'jasmine-tapreporter'\n\ndescribe \"usage of jasmine-tapreporter\", ->\n it \"should be okay!\", ->\n expect(true).toBeTruthy()\n\njasmine.getEnv().addReporter new Tapreporter()\njasmine.getEnv().execute()\n```\n\n```\n$ coffee a.coffee\n1..1\nok 1 - usage of jasmine-tapreporter > should be okay!\n```\n\n## Install\n\n```\nnpm install jasmine-tapreporter\n```\n","maintainers":[{"name":"kozy4324","email":"kozy4324@gmail.com"}],"time":{"modified":"2012-04-21T10:00:39.486Z","created":"2012-01-26T09:08:31.006Z","0.0.1":"2012-01-26T09:08:33.873Z","0.1.0":"2012-02-14T06:08:20.490Z","0.2.0":"2012-02-14T11:05:23.040Z","0.2.1":"2012-02-17T06:54:45.895Z","0.2.2":"2012-04-21T10:00:39.486Z"},"author":{"name":"Koji NAKAMURA","email":"kozy4324@gmail.com"},"repository":{"type":"git","url":"git://github.com/kozy4324/Jasmine-TAPReporter.git"},"_id":"jasmine-tapreporter","_rev":"1-0430e3c10ed292be62d59d8aef5f8c3f"}ÿdocument-storeÿjadeBundlerž{"id":"jadeBundler","rev":"1-81ebf481daa29c892179f78d304ada45","rev_tree":[{"pos":1,"ids":["81ebf481daa29c892179f78d304ada45",{"status":"available"},[]]}],"rev_map":{"1-81ebf481daa29c892179f78d304ada45":3486},"winningRev":"1-81ebf481daa29c892179f78d304ada45","deleted":false,"seq":3486}ÿby-sequenceÿ0000000000003486• {"name":"jadeBundler","description":"Server-side Jade Templating","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Jesse Martin","email":"jessemar10@gmail.com"},"name":"jadeBundler","description":"Server-side Jade Templating","version":"0.1.0","repository":{"url":"https://github.com/jessemartin/JadeBundler.git"},"dependencies":{"jade":"0.26.x"},"devDependencies":{"vows":"*"},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"vows"},"main":"jadeBundler.js","_npmUser":{"name":"jesseMartin","email":"jessemar10@gmail.com"},"_id":"jadeBundler@0.1.0","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fe9fffb1e1b3861af209dd90bf94021e715b9238","tarball":"http://registry.npmjs.org/jadeBundler/-/jadeBundler-0.1.0.tgz"},"readme":"","maintainers":[{"name":"jesseMartin","email":"jessemar10@gmail.com"}]}},"readme":"","maintainers":[{"name":"jesseMartin","email":"jessemar10@gmail.com"}],"time":{"modified":"2012-06-11T21:02:19.030Z","created":"2012-06-11T21:02:17.737Z","0.1.0":"2012-06-11T21:02:19.030Z"},"author":{"name":"Jesse Martin","email":"jessemar10@gmail.com"},"repository":{"url":"https://github.com/jessemartin/JadeBundler.git"},"_id":"jadeBundler","_rev":"1-81ebf481daa29c892179f78d304ada45"}ÿdocument-storeÿjParserš{"id":"jParser","rev":"1-19f9c45bb3a01fc6f952d46775709ce9","rev_tree":[{"pos":1,"ids":["19f9c45bb3a01fc6f952d46775709ce9",{"status":"available"},[]]}],"rev_map":{"1-19f9c45bb3a01fc6f952d46775709ce9":3485},"winningRev":"1-19f9c45bb3a01fc6f952d46775709ce9","deleted":false,"seq":3485}ÿby-sequenceÿ0000000000003485–{"name":"jParser","description":"Parsing binary files made easy.","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"jParser","version":"1.0.0","description":"Parsing binary files made easy.","keywords":["parser","buffer","binary","file","read"],"homepage":"http://blog.vjeux.com/2011/javascript/binaryparser-unleash-javascript-power.html","author":{"name":"Vjeux","email":"vjeuxx@gmail.com","url":"http://blog.vjeux.com/"},"files":["src/jparser.js"],"main":"src/jparser.js","repository":{"type":"git","url":"git://github.com/vjeux/jParser.git"},"_npmUser":{"name":"vjeux","email":"vjeuxx@gmail.com"},"_id":"jParser@1.0.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"1572b92e7c1f6e6afe2a474e69dbddeae720df12","tarball":"http://registry.npmjs.org/jParser/-/jParser-1.0.0.tgz"},"maintainers":[{"name":"vjeux","email":"vjeuxx@gmail.com"}]},"1.0.1":{"name":"jParser","version":"1.0.1","description":"Parsing binary files made easy.","keywords":["parser","buffer","binary","file","read"],"homepage":"http://blog.vjeux.com/2011/javascript/binaryparser-unleash-javascript-power.html","author":{"name":"Vjeux","email":"vjeuxx@gmail.com","url":"http://blog.vjeux.com/"},"dependencies":{"jDataView":"*"},"files":["src/jparser.js"],"main":"src/jparser.js","repository":{"type":"git","url":"git://github.com/vjeux/jParser.git"},"_npmUser":{"name":"vjeux","email":"vjeuxx@gmail.com"},"_id":"jParser@1.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"77aaf254872153c755f051b4f62ecf222dfa72aa","tarball":"http://registry.npmjs.org/jParser/-/jParser-1.0.1.tgz"},"maintainers":[{"name":"vjeux","email":"vjeuxx@gmail.com"}]},"1.0.2":{"name":"jParser","version":"1.0.2","description":"Parsing binary files made easy.","keywords":["parser","buffer","binary","file","read"],"homepage":"http://blog.vjeux.com/2011/javascript/binaryparser-unleash-javascript-power.html","author":{"name":"Vjeux","email":"vjeuxx@gmail.com","url":"http://blog.vjeux.com/"},"dependencies":{"jDataView":"*"},"files":["src/jparser.js"],"main":"src/jparser.js","repository":{"type":"git","url":"git://github.com/vjeux/jParser.git"},"_npmUser":{"name":"vjeux","email":"vjeuxx@gmail.com"},"_id":"jParser@1.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"704289c698bbf0d0646c247824af9ed2354e46b5","tarball":"http://registry.npmjs.org/jParser/-/jParser-1.0.2.tgz"},"maintainers":[{"name":"vjeux","email":"vjeuxx@gmail.com"}]}},"readme":null,"maintainers":[{"name":"vjeux","email":"vjeuxx@gmail.com"}],"time":{"modified":"2012-06-30T20:14:05.555Z","created":"2011-12-02T17:15:49.352Z","1.0.0":"2011-12-02T17:15:51.513Z","1.0.1":"2011-12-02T17:28:25.713Z","1.0.2":"2012-06-30T20:14:05.555Z"},"author":{"name":"Vjeux","email":"vjeuxx@gmail.com","url":"http://blog.vjeux.com/"},"repository":{"type":"git","url":"git://github.com/vjeux/jParser.git"},"_id":"jParser","_rev":"1-19f9c45bb3a01fc6f952d46775709ce9"} ÿdocument-storeÿizaak-npm-test¡{"id":"izaak-npm-test","rev":"1-782fa934f42693efdbd2a8ffbd7586bb","rev_tree":[{"pos":1,"ids":["782fa934f42693efdbd2a8ffbd7586bb",{"status":"available"},[]]}],"rev_map":{"1-782fa934f42693efdbd2a8ffbd7586bb":3484},"winningRev":"1-782fa934f42693efdbd2a8ffbd7586bb","deleted":false,"seq":3484}ÿby-sequenceÿ0000000000003484í {"name":"izaak-npm-test","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"izaak-npm-test","author":{"name":"Izaak Schroeder","email":"izaakschroeder@aelatis.com"},"version":"0.0.1","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"izaakschroeder","email":"izaak.schroeder@gmail.com"},"_id":"izaak-npm-test@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"244e6f1d453365b27811e8200ae5f24bb6d3d407","tarball":"http://registry.npmjs.org/izaak-npm-test/-/izaak-npm-test-0.0.1.tgz"},"readme":"","maintainers":[{"name":"izaakschroeder","email":"izaak.schroeder@gmail.com"}]},"0.0.2":{"name":"izaak-npm-test","author":{"name":"Izaak Schroeder","email":"izaakschroeder@aelatis.com"},"version":"0.0.2","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"izaakschroeder","email":"izaak.schroeder@gmail.com"},"_id":"izaak-npm-test@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"dfe410956b9670f12f38f56af693d5918d03b3fd","tarball":"http://registry.npmjs.org/izaak-npm-test/-/izaak-npm-test-0.0.2.tgz"},"readme":"","maintainers":[{"name":"izaakschroeder","email":"izaak.schroeder@gmail.com"}]}},"readme":"","maintainers":[{"name":"izaakschroeder","email":"izaak.schroeder@gmail.com"}],"time":{"modified":"2012-06-18T20:02:59.167Z","created":"2012-06-18T19:54:44.877Z","0.0.1":"2012-06-18T19:54:47.466Z","0.0.2":"2012-06-18T20:02:59.167Z"},"author":{"name":"Izaak Schroeder","email":"izaakschroeder@aelatis.com"},"_id":"izaak-npm-test","_rev":"1-782fa934f42693efdbd2a8ffbd7586bb"}ÿdocument-storeÿip2locationž{"id":"ip2location","rev":"1-02f81779fa5a5405fb3146dec637b903","rev_tree":[{"pos":1,"ids":["02f81779fa5a5405fb3146dec637b903",{"status":"available"},[]]}],"rev_map":{"1-02f81779fa5a5405fb3146dec637b903":3483},"winningRev":"1-02f81779fa5a5405fb3146dec637b903","deleted":false,"seq":3483}ÿby-sequenceÿ0000000000003483˜ {"name":"ip2location","description":"ip2location bindings for node.js","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"author":{"name":"Roman Bolgov","email":"bolgovr@gmail.com","url":"https://twitter.com/#!/rbolgov"},"name":"ip2location","description":"ip2location bindings for node.js","version":"0.0.1","homepage":"https://github.com/bolgovr/node-ip2location","repository":{"type":"git","url":"git://github.com/bolgovr/node-ip2location.git"},"main":"index.js","engines":{"node":"~0.6.2"},"scripts":{"install":"node install.js"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"bolgovr","email":"bolgovr@gmail.com"},"_id":"ip2location@0.0.1","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"ec3180ee2a9757c6b8f65cf288343c5496dc0275","tarball":"http://registry.npmjs.org/ip2location/-/ip2location-0.0.1.tgz"},"maintainers":[{"name":"bolgovr","email":"bolgovr@gmail.com"}]},"0.0.2":{"author":{"name":"Roman Bolgov","email":"bolgovr@gmail.com","url":"https://twitter.com/#!/rbolgov"},"name":"ip2location","description":"ip2location bindings for node.js","version":"0.0.2","homepage":"https://github.com/bolgovr/node-ip2location","repository":{"type":"git","url":"git://github.com/bolgovr/node-ip2location.git"},"main":"index.js","engines":{"node":"~0.6.2"},"scripts":{"install":"node install.js"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"bolgovr","email":"bolgovr@gmail.com"},"_id":"ip2location@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"0b952db21d829a21cdb131a70f022421bd7d9e86","tarball":"http://registry.npmjs.org/ip2location/-/ip2location-0.0.2.tgz"},"readme":"#IP2Location bindings for node.js\n\nYou should have IP2Location library installed from official site\n\n## Installation\n npm install ip2location\n\n## Example\ncheck example.js\n","maintainers":[{"name":"bolgovr","email":"bolgovr@gmail.com"}]},"0.0.3":{"author":{"name":"Roman Bolgov","email":"bolgovr@gmail.com","url":"https://twitter.com/#!/rbolgov"},"name":"ip2location","description":"ip2location bindings for node.js","version":"0.0.3","homepage":"https://github.com/bolgovr/node-ip2location","repository":{"type":"git","url":"git://github.com/bolgovr/node-ip2location.git"},"main":"index.js","engines":{"node":"*"},"scripts":{"install":"node install.js"},"dependencies":{},"devDependencies":{},"_id":"ip2location@0.0.3","dist":{"shasum":"79d507548e9357ea84199703ebfbf8ce219e1cbd","tarball":"http://registry.npmjs.org/ip2location/-/ip2location-0.0.3.tgz"},"readme":"#IP2Location bindings for node.js\n\nYou should have IP2Location library installed from official site\n\n## Installation\n npm install ip2location\n\n## Example\ncheck example.js\n","maintainers":[{"name":"bolgovr","email":"bolgovr@gmail.com"}]},"0.1.2":{"author":{"name":"Roman Bolgov","email":"bolgovr@gmail.com","url":"https://twitter.com/#!/rbolgov"},"name":"ip2location","description":"ip2location bindings for node.js","version":"0.1.2","homepage":"https://github.com/bolgovr/node-ip2location","repository":{"type":"git","url":"git://github.com/bolgovr/node-ip2location.git"},"main":"index.js","engines":{"node":">=0.8.0"},"scripts":{"install":"node-gyp configure build"},"dependencies":{},"devDependencies":{},"readme":"","_id":"ip2location@0.1.2","dist":{"shasum":"0a172192e3b89f9d9c53f2c7d7b750bced023a6c","tarball":"http://registry.npmjs.org/ip2location/-/ip2location-0.1.2.tgz"},"maintainers":[{"name":"bolgovr","email":"bolgovr@gmail.com"}]}},"readme":null,"maintainers":[{"name":"bolgovr","email":"bolgovr@gmail.com"}],"time":{"modified":"2012-07-16T08:39:52.700Z","created":"2012-01-05T13:30:50.904Z","0.0.1":"2012-01-05T13:30:53.871Z","0.0.2":"2012-01-07T19:30:48.475Z","0.0.3":"2012-07-14T10:04:54.646Z","0.1.2":"2012-07-16T08:39:52.700Z"},"author":{"name":"Roman Bolgov","email":"bolgovr@gmail.com","url":"https://twitter.com/#!/rbolgov"},"repository":{"type":"git","url":"git://github.com/bolgovr/node-ip2location.git"},"_id":"ip2location","_rev":"1-02f81779fa5a5405fb3146dec637b903"}$ÿdocument-storeÿinterleave-collate¥{"id":"interleave-collate","rev":"1-971ef0508ba8bb3647bf0ad179c22f8a","rev_tree":[{"pos":1,"ids":["971ef0508ba8bb3647bf0ad179c22f8a",{"status":"available"},[]]}],"rev_map":{"1-971ef0508ba8bb3647bf0ad179c22f8a":3482},"winningRev":"1-971ef0508ba8bb3647bf0ad179c22f8a","deleted":false,"seq":3482}ÿby-sequenceÿ0000000000003482Í {"name":"interleave-collate","description":"Interleave plugin for collating separate text files into a single JS object","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"interleave-collate","description":"Interleave plugin for collating separate text files into a single JS object","author":{"name":"Damon Oehlman","email":"damon.oehlman@sidelab.com"},"tags":["interleave"],"version":"0.1.0","main":"index.js","engines":{"node":">= 0.4.x < 0.7.0"},"dependencies":{"findit":"0.1.x","seq":"0.3.x"},"devDependencies":{"interleave":">= 0.1.2"},"repository":{"type":"git","url":"git://github.com/DamonOehlman/interleave-collate.git"},"bugs":{"url":"http://github.com/DamonOehlman/interleave-collate/issues"},"contributors":[],"_npmUser":{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"},"_id":"interleave-collate@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"a977882013b8811e2d675b8b10f7075ba99c1a5d","tarball":"http://registry.npmjs.org/interleave-collate/-/interleave-collate-0.1.0.tgz"},"readme":"","maintainers":[{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"}]}},"readme":"","maintainers":[{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"}],"time":{"modified":"2012-03-22T02:56:35.750Z","created":"2012-03-22T02:56:27.062Z","0.1.0":"2012-03-22T02:56:35.750Z"},"author":{"name":"Damon Oehlman","email":"damon.oehlman@sidelab.com"},"repository":{"type":"git","url":"git://github.com/DamonOehlman/interleave-collate.git"},"_id":"interleave-collate","_rev":"1-971ef0508ba8bb3647bf0ad179c22f8a"}ÿdocument-storeÿinsomnia›{"id":"insomnia","rev":"1-1ef0b96c6ecbbdc89863f9129b9eb08e","rev_tree":[{"pos":1,"ids":["1ef0b96c6ecbbdc89863f9129b9eb08e",{"status":"available"},[]]}],"rev_map":{"1-1ef0b96c6ecbbdc89863f9129b9eb08e":3481},"winningRev":"1-1ef0b96c6ecbbdc89863f9129b9eb08e","deleted":false,"seq":3481}ÿby-sequenceÿ0000000000003481˜ {"name":"insomnia","description":"Activites and Notifications made simple","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"insomnia","description":"Activites and Notifications made simple","author":{"name":"Patrick Lussan","email":"lussanp@gmail.com"},"dependencies":{"redis":"latest"},"repository":{"type":"git","url":"git://github.com/xsace/insomnia.git"},"main":"insomnia.js","version":"0.0.1","_npmUser":{"name":"xsace","email":"lussanp@gmail.com"},"_id":"insomnia@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"036d92a37e1f3af07dffbc69e5bbf776e8bf3d5a","tarball":"http://registry.npmjs.org/insomnia/-/insomnia-0.0.1.tgz"},"maintainers":[{"name":"xsace","email":"lussanp@gmail.com"}]}},"readme":"insomnia\r\n========\r\n\r\nActivites and Notifications module for Node","maintainers":[{"name":"xsace","email":"lussanp@gmail.com"}],"time":{"modified":"2012-05-11T13:27:19.226Z","created":"2012-05-11T13:27:16.092Z","0.0.1":"2012-05-11T13:27:19.226Z"},"author":{"name":"Patrick Lussan","email":"lussanp@gmail.com"},"repository":{"type":"git","url":"git://github.com/xsace/insomnia.git"},"_id":"insomnia","_rev":"1-1ef0b96c6ecbbdc89863f9129b9eb08e"}ÿdocument-storeÿimagesortœ{"id":"imagesort","rev":"1-6fb3ca1eff09a30673a56a4794b120ab","rev_tree":[{"pos":1,"ids":["6fb3ca1eff09a30673a56a4794b120ab",{"status":"available"},[]]}],"rev_map":{"1-6fb3ca1eff09a30673a56a4794b120ab":3480},"winningRev":"1-6fb3ca1eff09a30673a56a4794b120ab","deleted":false,"seq":3480}ÿby-sequenceÿ0000000000003480«{"name":"imagesort","description":"image mover for android titanium projects","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"wlaurance.com"},"name":"imagesort","description":"image mover for android titanium projects","version":"0.0.1","repository":{"type":"git","url":"git://github.com/wlaurance/imagesort.git"},"main":"./bin/imagesort","dependencies":{"imageinfo":"1.0.4","commander":"1.0.0","colors":"*","async":"0.1.22"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"wlaurance","email":"w.laurance@gmail.com"},"_id":"imagesort@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"141efe8933fabaac2cc72ee69a0d2f8ae5c6508e","tarball":"http://registry.npmjs.org/imagesort/-/imagesort-0.0.1.tgz"},"readme":"","maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}]},"0.0.2":{"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"wlaurance.com"},"name":"imagesort","description":"image mover for android titanium projects","version":"0.0.2","repository":{"type":"git","url":"git://github.com/wlaurance/imagesort.git"},"bin":{"imagesort":"./bin/imagesort"},"main":"./lib/imagesort.js","dependencies":{"imageinfo":"1.0.4","commander":"1.0.0","colors":"*","async":"0.1.22"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"wlaurance","email":"w.laurance@gmail.com"},"_id":"imagesort@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"80739cb51408b810837279385a9fa60362ad2686","tarball":"http://registry.npmjs.org/imagesort/-/imagesort-0.0.2.tgz"},"readme":"","maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}]}},"readme":"","maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}],"time":{"modified":"2012-08-02T13:44:36.055Z","created":"2012-07-21T20:42:17.591Z","0.0.1":"2012-07-21T20:42:18.313Z","0.0.2":"2012-07-23T20:48:05.414Z"},"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"wlaurance.com"},"repository":{"type":"git","url":"git://github.com/wlaurance/imagesort.git"},"users":{"fgribreau":true},"_id":"imagesort","_rev":"1-6fb3ca1eff09a30673a56a4794b120ab"}ÿdocument-storeÿhttp-callback {"id":"http-callback","rev":"1-171e38d242a347961624c6b207e0c14a","rev_tree":[{"pos":1,"ids":["171e38d242a347961624c6b207e0c14a",{"status":"available"},[]]}],"rev_map":{"1-171e38d242a347961624c6b207e0c14a":3479},"winningRev":"1-171e38d242a347961624c6b207e0c14a","deleted":false,"seq":3479}ÿby-sequenceÿ0000000000003479 {"name":"http-callback","description":"Create unique http endpoints for remote callbacks.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"name":"http-callback","version":"0.0.2","author":{"name":"James Lal","url":"james@lightsofapollo.com"},"description":"Create unique http endpoints for remote callbacks.","main":"lib/http-callback.js","repository":{"type":"git","url":"git://github.com/lightsofapollo/http-callback.git"},"keywords":["callback http","rpc","remote","unique request"],"dependencies":{"openport":"0.0.3","node-uuid":"~1.3","request":"2.9.153"},"devDependencies":{"mocha":"~1.1","expect.js":"~0.1"},"license":"MIT","engine":{"node":">=0.4"},"_npmUser":{"name":"lights-of-apollo","email":"james@lightsofapollo.com"},"_id":"http-callback@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"1738d84c45243ef7e854ca101bd78c9e8002014a","tarball":"http://registry.npmjs.org/http-callback/-/http-callback-0.0.2.tgz"},"readme":"","maintainers":[{"name":"lights-of-apollo","email":"james@lightsofapollo.com"}]}},"readme":"","maintainers":[{"name":"lights-of-apollo","email":"james@lightsofapollo.com"}],"time":{"modified":"2012-06-05T15:57:49.220Z","created":"2012-06-05T15:57:47.952Z","0.0.2":"2012-06-05T15:57:49.220Z"},"author":{"name":"James Lal","url":"james@lightsofapollo.com"},"repository":{"type":"git","url":"git://github.com/lightsofapollo/http-callback.git"},"_id":"http-callback","_rev":"1-171e38d242a347961624c6b207e0c14a"}ÿdocument-storeÿhrl1-npm-test {"id":"hrl1-npm-test","rev":"1-7698792aae1b2a82e11c6509bcf78987","rev_tree":[{"pos":1,"ids":["7698792aae1b2a82e11c6509bcf78987",{"status":"available"},[]]}],"rev_map":{"1-7698792aae1b2a82e11c6509bcf78987":3478},"winningRev":"1-7698792aae1b2a82e11c6509bcf78987","deleted":false,"seq":3478}ÿby-sequenceÿ0000000000003478ã{"name":"hrl1-npm-test","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"hrl1-npm-test","author":{"name":"Hedy Liu","email":"hrl1@sfu.ca"},"version":"0.0.1","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"jelli.donut","email":"csjelly@gmail.com"},"_id":"hrl1-npm-test@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"3b6c36119a91b76ecfcaa2360f94e1d4dc25cde2","tarball":"http://registry.npmjs.org/hrl1-npm-test/-/hrl1-npm-test-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jelli.donut","email":"csjelly@gmail.com"}]}},"readme":"","maintainers":[{"name":"jelli.donut","email":"csjelly@gmail.com"}],"time":{"modified":"2012-06-18T19:54:46.576Z","created":"2012-06-18T19:54:45.222Z","0.0.1":"2012-06-18T19:54:46.576Z"},"author":{"name":"Hedy Liu","email":"hrl1@sfu.ca"},"_id":"hrl1-npm-test","_rev":"1-7698792aae1b2a82e11c6509bcf78987"}ÿdocument-storeÿhostbill-node {"id":"hostbill-node","rev":"1-c063cdae4bc632fce19e2b66a4562079","rev_tree":[{"pos":1,"ids":["c063cdae4bc632fce19e2b66a4562079",{"status":"available"},[]]}],"rev_map":{"1-c063cdae4bc632fce19e2b66a4562079":3477},"winningRev":"1-c063cdae4bc632fce19e2b66a4562079","deleted":false,"seq":3477}ÿby-sequenceÿ0000000000003477¸{"name":"hostbill-node","description":"HostBill API client in Node","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"hostbill-node","version":"0.2.0","description":"HostBill API client in Node","keywords":["hostbill","api","nodejs"],"author":{"name":"Kris Pajak","url":"http://hostbillapp.com"},"license":"MIT","repository":{"type":"git","url":"git@github.com:krispajak/hostbill-node"},"main":"./lib/hostbill-node.js","dependencies":{"request":"2.9.203"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"http://hostbillapp.com","_npmUser":{"name":"krispajak","email":"kris.p@hostbillapp.com"},"_id":"hostbill-node@0.2.0","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"d521627691e319e8c10e8239461bbaea31ba3c1c","tarball":"http://registry.npmjs.org/hostbill-node/-/hostbill-node-0.2.0.tgz"},"maintainers":[{"name":"krispajak","email":"kris.p@hostbillapp.com"}]}},"readme":"# HostBill API client in Node.JS\n\nJust for fun, quick project to see how HostBill API will work from node.\n\n## Install\n\n
\n  npm install hostbill-node\n
\n \n\n## Usage\n\n```javascript\nvar HostBill = require('hostbill-node');\n\nvar hostbill_url = 'http://yourhostbill.com/admin/api.php'; //full url to api endpoint\n\n//from HB:settings->security->api access :\nvar api_id = 'YOUR API ID'; \nvar api_key = 'YOUR API KEY';\n\nvar hb = new HostBill(hostbill_url,api_id,api_key);\n\n//http://api.hostbillapp.com/clients/getClients/\nhb.api('getClients',{},function(obj) { \n\tconsole.log(obj.clients) \n});\n\n\n//passing parameters to api call:\n//http://api.hostbillapp.com/invoices/getInvoiceDetails/\nhb.api('getInvoiceDetails',{id:10}, function(obj) { \n\tconsole.log(obj.invoice);\n});\n\n\n//error handling\nhb.api('unknownMethod',{param:\"value\"},function(obj) { \n\t//check if error occurred\n\tif(obj.error) {\n\t\tconsole.log(error);\n\t}\n\n});\n```\n\n\n","maintainers":[{"name":"krispajak","email":"kris.p@hostbillapp.com"}],"time":{"modified":"2012-06-30T09:30:32.545Z","created":"2012-06-30T09:30:30.298Z","0.2.0":"2012-06-30T09:30:32.545Z"},"author":{"name":"Kris Pajak","url":"http://hostbillapp.com"},"repository":{"type":"git","url":"git@github.com:krispajak/hostbill-node"},"_id":"hostbill-node","_rev":"1-c063cdae4bc632fce19e2b66a4562079"}ÿdocument-storeÿhijinx™{"id":"hijinx","rev":"1-15193287cbe548a7a5793ea7cf27b882","rev_tree":[{"pos":1,"ids":["15193287cbe548a7a5793ea7cf27b882",{"status":"available"},[]]}],"rev_map":{"1-15193287cbe548a7a5793ea7cf27b882":3476},"winningRev":"1-15193287cbe548a7a5793ea7cf27b882","deleted":false,"seq":3476}ÿby-sequenceÿ0000000000003476Ì{"name":"hijinx","description":"Real-time web framework","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"hijinx","author":{"name":"Jeff Carnegie","email":"jeff@newpoetrystudios.com"},"description":"Real-time web framework","version":"0.0.1","dependencies":{"requirejs":"1.0.2"},"bin":{"hijinx":"bin/hijinx"},"main":"lib/hijinx.js","_npmUser":{"name":"jcarnegie","email":"jeff.carnegie@gmail.com"},"_id":"hijinx@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"abab4cd594e7bf39e55b24ad8417ccdc46545ae3","tarball":"http://registry.npmjs.org/hijinx/-/hijinx-0.0.1.tgz"},"maintainers":[{"name":"jcarnegie","email":"jeff.carnegie@gmail.com"}]}},"readme":null,"maintainers":[{"name":"jcarnegie","email":"jeff.carnegie@gmail.com"}],"time":{"modified":"2012-06-05T14:41:27.080Z","created":"2012-06-05T14:41:25.768Z","0.0.1":"2012-06-05T14:41:27.080Z"},"author":{"name":"Jeff Carnegie","email":"jeff@newpoetrystudios.com"},"_id":"hijinx","_rev":"1-15193287cbe548a7a5793ea7cf27b882"}ÿdocument-storeÿhijellyš{"id":"hijelly","rev":"1-78c05cff3e4fdbceee391a8ea15f3929","rev_tree":[{"pos":1,"ids":["78c05cff3e4fdbceee391a8ea15f3929",{"status":"available"},[]]}],"rev_map":{"1-78c05cff3e4fdbceee391a8ea15f3929":3475},"winningRev":"1-78c05cff3e4fdbceee391a8ea15f3929","deleted":false,"seq":3475}ÿby-sequenceÿ0000000000003475ô {"name":"hijelly","description":"hi jelly desc","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"hijelly","version":"0.0.1","description":"hi jelly desc","main":"jks.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"jks"},"license":"BSD","keywords":["hijelly"],"readme":"","_id":"hijelly@0.0.1","dist":{"shasum":"715451de621c4427aad6bb73f8cacf3565453a7f","tarball":"http://registry.npmjs.org/hijelly/-/hijelly-0.0.1.tgz"},"maintainers":[{"name":"jks","email":"jks@163.com"}]},"0.0.2":{"name":"hijelly","version":"0.0.2","description":"hi jelly desc","main":"jks.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"jks"},"license":"BSD","keywords":["hijelly"],"readme":"hello\n","_id":"hijelly@0.0.2","dist":{"shasum":"46d5f6003ac92fe23ca34e3fa40748f75045802f","tarball":"http://registry.npmjs.org/hijelly/-/hijelly-0.0.2.tgz"},"maintainers":[{"name":"jks","email":"jks@163.com"}]}},"readme":"","maintainers":[{"name":"jks","email":"jks@163.com"}],"time":{"modified":"2012-07-16T09:10:17.209Z","created":"2012-07-16T09:05:13.265Z","0.0.1":"2012-07-16T09:05:16.388Z","0.0.2":"2012-07-16T09:10:17.209Z"},"author":{"name":"jks"},"_id":"hijelly","_rev":"1-78c05cff3e4fdbceee391a8ea15f3929"}ÿdocument-storeÿhaibu-apiœ{"id":"haibu-api","rev":"1-d7d5cd40ca43cdd316ffa481661eb59e","rev_tree":[{"pos":1,"ids":["d7d5cd40ca43cdd316ffa481661eb59e",{"status":"available"},[]]}],"rev_map":{"1-d7d5cd40ca43cdd316ffa481661eb59e":3474},"winningRev":"1-d7d5cd40ca43cdd316ffa481661eb59e","deleted":false,"seq":3474}ÿby-sequenceÿ0000000000003474”{"name":"haibu-api","description":"A collection of client wrappers for haibu's core api ","dist-tags":{"latest":"0.9.0"},"versions":{"0.9.0":{"name":"haibu-api","version":"0.9.0","description":"A collection of client wrappers for haibu's core api ","author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"maintainers":[{"name":"indexzero","email":"charlie.robbins@gmail.com"}],"repository":{"type":"git","url":"git://github.com/nodejitsu/haibu-api.git"},"keywords":["cloud computing","automated deployment","platform-as-a-service"],"dependencies":{"request":"2.x.x","utile":"0.1.x"},"devDependencies":{"haibu":"0.x.x","vows":"0.6.x"},"main":"./lib/client","scripts":{"test":"vows test/*-test.js --spec"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"indexzero","email":"charlie.robbins@gmail.com"},"_id":"haibu-api@0.9.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"b03aaf49c86097a05113b88fa36e07e7bee9ef7c","tarball":"http://registry.npmjs.org/haibu-api/-/haibu-api-0.9.0.tgz"}}},"readme":"# haibu-api (node.js)\n\nThe `node.js` client for the [haibu](http://github.com/nodejitsu/haibu) API.\n\n## Usage\n\nAllows you to call haibu programmatically from inside your node.js scripts.\n\n```javascript\nvar eyes = require('eyes'),\n haibu = require('haibu');\n\n// Create a new client for communicating with the haibu server\nvar client = new haibu.drone.Client({\n host: 'localhost',\n port: 9002\n});\n\n// A basic package.json for a node.js application on haibu\nvar app = {\n \"user\": \"marak\",\n \"name\": \"test\",\n \"domain\": \"devjitsu.com\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Marak/hellonode.git\",\n },\n \"scripts\": {\n \"start\": \"server.js\"\n }\n};\n\n// Attempt to start up a new application\nclient.start(app, function (err, result) {\n if (err) {\n console.log('Error spawning app: ' + app.name);\n return eyes.inspect(err);\n }\n\n console.log('Successfully spawned app:');\n eyes.inspect(result);\n});\n\n\nclient.start(app, function (err, result) {\n eyes.inspect(err);\n eyes.inspect(result);\n});\n```\n\n## Run Tests\nAll of the `haibu` tests are written in [vows][0], and cover all of the use cases described above.\n\n``` bash\n $ npm test\n```\n\n#### License: MIT\n#### Author: [Nodejitsu Inc](http://nodejitsu.com)\n#### Contributors: [Maciej Ma“^L ùlecki](http://github.com/mmalecki), [Charlie Robbins](http://github.com/indexzero)","maintainers":[{"name":"indexzero","email":"charlie.robbins@gmail.com"}],"time":{"modified":"2012-07-31T22:43:08.610Z","created":"2012-07-08T21:47:24.563Z","0.9.0":"2012-07-08T21:47:25.063Z"},"author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"repository":{"type":"git","url":"git://github.com/nodejitsu/haibu-api.git"},"users":{"blakmatrix":true},"_id":"haibu-api","_rev":"1-d7d5cd40ca43cdd316ffa481661eb59e"}ÿdocument-storeÿgrunt-context {"id":"grunt-context","rev":"1-6362fd4d1a824d7366cd86a4d33336c7","rev_tree":[{"pos":1,"ids":["6362fd4d1a824d7366cd86a4d33336c7",{"status":"available"},[]]}],"rev_map":{"1-6362fd4d1a824d7366cd86a4d33336c7":3473},"winningRev":"1-6362fd4d1a824d7366cd86a4d33336c7","deleted":false,"seq":3473}ÿby-sequenceÿ0000000000003473ê^{"name":"grunt-context","description":"Give grunt some context, provide named configs for common options and override individual options via the command line","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"grunt-context","description":"Give your config some context.","version":"0.1.0","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"17a5670afa553abfc01347e78c1c3d273ad44da9","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.1.0.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}],"directories":{}},"0.2.0":{"name":"grunt-context","description":"Give your config some context.","version":"0.2.0","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e125fdcf9bc25ecaa93c0cc3881381428a0f118d","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.2.0.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}],"directories":{}},"0.3.0":{"name":"grunt-context","description":"Give your grunt some some context.","version":"0.3.0","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"bd3ebc80d08d7b8b8b0e9728c98d2d1cd011c794","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.3.0.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}],"directories":{}},"0.3.1":{"name":"grunt-context","description":"Give your grunt some some context.","version":"0.3.1","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"ec4c3c211a50f3b970dce07737d0f3d46bf80611","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.3.1.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}],"directories":{}},"0.3.2":{"name":"grunt-context","description":"Give grunt some some context, provide named configs for common options and override individual options via the command line","version":"0.3.2","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"2c689a31968037cc8959a714398886f48ed3dfd5","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.3.2.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}]},"0.3.3":{"name":"grunt-context","description":"Give grunt some context, provide named configs for common options and override individual options via the command line","version":"0.3.3","homepage":"https://github.com/indieisaconcept/grunt-context","author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"bugs":{"url":"https://github.com/indieisaconcept/grunt-context/issues"},"licenses":[{"type":"MIT","url":"https://github.com/indieisaconcept/grunt-context/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-context":"bin/grunt-context"},"engines":{"node":">=0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"indieisaconcept","email":"me@indieisaconcept.com"},"_id":"grunt-context@0.3.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"53b9b1b7e1bf9cd17524eb5f5cbd08736b56fa53","tarball":"http://registry.npmjs.org/grunt-context/-/grunt-context-0.3.3.tgz"},"maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}]}},"readme":"# grunt-context\n\nThe aim of this plugin is to allow the grunt config to be overridden based on the current context selected. This is particularly useful if builds need to be tailored based upon the deployment environment.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-context`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-context');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n\n### Usage\n\ngrunt-context supports arguments. The arguments are broken down as follows:\n\ncontext:*name*:*task*:*arguments*\n\n+ name: The name of the context to use\n+ task: A single task or task list to run\n+ arguments: The arguments to apply to a single task, these are ignored when a task list is used.\n\n### Overrides\n\nTasks you wish to provide a context for should be defined inside the context object and under the options key inside your main config. Properties for a specific task will then be combined with any defined outside of the context object.\n\nExample grunt file with contexts defined:\n\n```javascript\n\n// ... grunt file contents\n\n // =====================\n // GLOBAL CONFIG\n // =====================\n\n someplugin: {\n prop1: 'some original value',\n prop2: 'some original value'\n },\n\n context: {\n\n // =====================\n // CONFIG OVERRIDES\n // =====================\n\n development: {\n\n options: {\n\n someplugin: {\n prop1: 'some development value',\n prop3: 'some development value',\n prop4: 'some development value'\n }\n\n },\n\n tasks: {\n 'default': 'someplugin'\n }\n\n }\n\n }\n\n// ... even more grunt file contents\n\n```\n\nThe above configuration would result in the following config when grunt-context is run with the context set to \"development\".\n\n```javascript\n\n someplugin: {\n prop1: 'some development value',\n prop2: 'some original value' \n prop3: 'some development value',\n prop4: 'some development value'\n },\n\n```\n\nUsing the approach above you could also define the following tasks inside your grunt.js and when run the default task list for the context will run if it exists.\n\n```javascript\n\n grunt.registerTask('default', 'context:development');\n grunt.registerTask('release', 'context:production');\n\n``` \n\n### Tasks\n\nTasks can also be defined against a context, in the same way in which you would normally use grunt.registerTask you can now directly associate tasks to a specific context.\n\n```javascript\n\n tasks: {\n 'default': 'someplugin'\n },\n\n```\n\nA \"default\" task should always be defined as per normal grunt task convention.\n\nTo run the default task for a context, this is possible using the following syntax:\n\n```\n> grunt context:development or\n> grunt content:development:default\n```\n\nThis will either run a single task or either a task list.\n\n*Note:* Ensure that you do not duplicate task names.\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n\n### 0.1.0\n+ Initial Release\n\n## License\nCopyright (c) 2012 \"indieisaconcept\" Jonathan Barnett \nLicensed under the MIT license.","maintainers":[{"name":"indieisaconcept","email":"me@indieisaconcept.com"}],"time":{"modified":"2012-08-02T13:44:38.087Z","created":"2012-06-06T14:41:38.156Z","0.1.0":"2012-06-06T14:41:42.458Z","0.2.0":"2012-06-07T16:39:43.582Z","0.3.0":"2012-06-10T17:19:02.403Z","0.3.1":"2012-06-11T03:28:04.894Z","0.3.2":"2012-06-12T12:21:35.499Z","0.3.3":"2012-07-23T14:55:34.528Z"},"author":{"name":"Jonathan Barnett @indieisaconcept","email":"me@indieisaconcept.com","url":"http://twitter.com/indieisaconcept"},"repository":{"type":"git","url":"git://github.com/indieisaconcept/grunt-context.git"},"users":{"fgribreau":true},"_id":"grunt-context","_rev":"1-6362fd4d1a824d7366cd86a4d33336c7"}ÿdocument-storeÿgenart™{"id":"genart","rev":"1-428e00240162f4f32b744083a53890a8","rev_tree":[{"pos":1,"ids":["428e00240162f4f32b744083a53890a8",{"status":"available"},[]]}],"rev_map":{"1-428e00240162f4f32b744083a53890a8":3472},"winningRev":"1-428e00240162f4f32b744083a53890a8","deleted":false,"seq":3472}ÿby-sequenceÿ0000000000003472Î{"name":"genart","description":"Generative art with canvas.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"genart","description":"Generative art with canvas.","version":"0.1.0","homepage":"https://github.com/chrisjaure/genart","author":{"name":"Chris Jaure","email":"chrisjaure@gmail.com","url":"http://cleverchris.com"},"repository":{"type":"git","url":"git://github.com/chrisjaure/genart.git"},"bugs":{"url":"https://github.com/chrisjaure/genart/issues"},"licenses":[{"type":"MIT","url":"https://github.com/chrisjaure/genart/blob/master/LICENSE-MIT"}],"main":"lib/genart","bin":{"genart":"bin/genart"},"engines":{"node":">= 0.6"},"dependencies":{"paper":"git://github.com/chrisjaure/paper.js.git","underscore":">= 1.3.3","optimist":">= 0.3.4","canvas":">= 0.12"},"devDependencies":{},"keywords":["art","generative"],"_npmUser":{"name":"chrisjaure","email":"chrisjaure@gmail.com"},"_id":"genart@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"00ec8435cc15ac6089f0fd957659c2833d9fb04a","tarball":"http://registry.npmjs.org/genart/-/genart-0.1.0.tgz"},"maintainers":[{"name":"chrisjaure","email":"chrisjaure@gmail.com"}]}},"readme":"# genart\n\nGenerative art for the rest of us. This is an attempt to create a nice api for creating generative art. Built on top of a modified [Paper.js](https://github.com/paperjs/paper.js).\n\n## Getting Started\nInstall the module with: `npm install genart`\n\nGenerate some art!\n\n```\ngenart -i ../examples/circle.js -o ~/genart.png\n```\n\n## Documentation\nSince genart is simply extending paper.js, take a look at the [paper.js docs](http://paperjs.org/reference/) for more details.\n\n_More docs coming soon._\n\n## Examples\nThe extensions can be seen in this example:\n```javascript\nvar circle = new canvas.Path.Circle([0, 0], 50)\n\t.set({\n\t\tfillColor: 'red',\n\t\tstrokeColor: 'green',\n\t\tstrokeWidth: 2,\n\t\topacity: 0.2,\n\t\tblendMode: 'overlay'\n\t})\n\t.nthChild('15n', function() {\n\t\tthis.fillColor = 'yellow';\n\t})\n\t.nthChild('6n', function() {\n\t\tthis.scale(0.5);\n\t})\n\t.tile();\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## License\nCopyright (c) 2012 Chris Jaure \nLicensed under the MIT license.\n","maintainers":[{"name":"chrisjaure","email":"chrisjaure@gmail.com"}],"time":{"modified":"2012-06-18T21:03:42.881Z","created":"2012-06-18T21:03:41.633Z","0.1.0":"2012-06-18T21:03:42.881Z"},"author":{"name":"Chris Jaure","email":"chrisjaure@gmail.com","url":"http://cleverchris.com"},"repository":{"type":"git","url":"git://github.com/chrisjaure/genart.git"},"_id":"genart","_rev":"1-428e00240162f4f32b744083a53890a8"}!ÿdocument-storeÿfunctional-node¢{"id":"functional-node","rev":"1-4a6e1b4d3f4930c38a272b7cb790befc","rev_tree":[{"pos":1,"ids":["4a6e1b4d3f4930c38a272b7cb790befc",{"status":"available"},[]]}],"rev_map":{"1-4a6e1b4d3f4930c38a272b7cb790befc":3471},"winningRev":"1-4a6e1b4d3f4930c38a272b7cb790befc","deleted":false,"seq":3471}ÿby-sequenceÿ0000000000003471’ {"name":"functional-node","description":"a port of the Functional Javascript library","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"functional-node","description":"a port of the Functional Javascript library","version":"1.0.2","author":{"name":"Oliver Steele, Samuel Bailey","email":"sam@bailey.geek.nz"},"license":"MIT","main":"./functional.js","engine":{"node":">=0.6.19"},"repository":{"type":"git","url":"https://github.com/bailus/functional-node.git"},"readme":"","_id":"functional-node@1.0.2","dist":{"shasum":"96cb26195ef820cd76d4ec3f368993345320ad32","tarball":"http://registry.npmjs.org/functional-node/-/functional-node-1.0.2.tgz"},"maintainers":[{"name":"bailus","email":"sam@bailey.geek.nz"}]}},"readme":"","maintainers":[{"name":"bailus","email":"sam@bailey.geek.nz"}],"time":{"modified":"2012-08-02T13:44:38.722Z","created":"2012-07-23T12:44:41.704Z","1.0.2":"2012-07-23T12:44:45.142Z"},"author":{"name":"Oliver Steele, Samuel Bailey","email":"sam@bailey.geek.nz"},"repository":{"type":"git","url":"https://github.com/bailus/functional-node.git"},"users":{"fgribreau":true},"_id":"functional-node","_rev":"1-4a6e1b4d3f4930c38a272b7cb790befc"}ÿdocument-storeÿfrosting›{"id":"frosting","rev":"1-848665bae59541ea9bb375c070288e6d","rev_tree":[{"pos":1,"ids":["848665bae59541ea9bb375c070288e6d",{"status":"available"},[]]}],"rev_map":{"1-848665bae59541ea9bb375c070288e6d":3470},"winningRev":"1-848665bae59541ea9bb375c070288e6d","deleted":false,"seq":3470}ÿby-sequenceÿ0000000000003470ÞÄ{"name":"frosting","description":"Task helpers for Cakefiles","dist-tags":{"latest":"0.3.7"},"versions":{"0.0.1":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.0.1","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"~v0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.0.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.0.1","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"37e1f1b6c6daa00daf75cbc7dfef0150fe770f2c","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.0.1.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.0.2":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.0.2","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"~v0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.0.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.0.2","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"ebcd6e354f4ebb1968eeedab6f3a091ca4bbf574","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.0.2.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.0.4":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.0.4","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"~v0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.0.4/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.0.4","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"2158a05fe09c6d530f5a3175f9a5fdacf5f6bbac","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.0.4.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.0.6":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.0.6","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"~v0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.0.6/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.0.6","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"12650c8955775ca69141a4ed70880b7106055259","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.0.6.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.1.1":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.1.1","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"~v0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.1.1","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"1c1be777ad5a72d73efe8b727d733e5ce2d78410","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.1.1.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.1.2":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.1.2","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":">=0.4.1"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmJsonOpts":{"file":"/Users/jeremy.ruppel/.npm/frosting/0.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"frosting@0.1.2","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"91466e159f7d20fd5eac5a3d3549889c26a4ec89","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.1.2.tgz"},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.0":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.0","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.10","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"5219b4adbd398b30082f909b69993caef7e0af69","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.0.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.2":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.2","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"adfda90dff39af328bcf32bb39310e15f92ab12a","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.2.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.3":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.3","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c1b178d8be8f3f4a1024120397a269a62d1359c5","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.3.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/b£Ü”›ùaz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.5":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.5","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5","ejs":"0.7.2"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"770f063a6784cfba81eb4831b8a89c88ec4582e8","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.5.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.6":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.6","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5","ejs":"0.7.2"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f506bc715e5d9e411df902c6477f7b595856234f","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.6.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]},"0.3.7":{"author":{"name":"Jeremy Ruppel"},"name":"frosting","description":"Task helpers for Cakefiles","version":"0.3.7","repository":{"url":"https://github.com/jeremyruppel/frosting"},"engines":{"node":"0.6.x"},"main":"./lib/frosting","dependencies":{"glob":"3.1.6","coffee-script":"1.2.0","uglify-js":"1.2.5","ejs":"0.7.2"},"devDependencies":{"mocha":"0.14.1","should":"0.6.0","sinon":"1.3.2"},"scripts":{"test":"mocha"},"_npmUser":{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"},"_id":"frosting@0.3.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"676123f289a25cb40daab4db45ab54f5b02644d4","tarball":"http://registry.npmjs.org/frosting/-/frosting-0.3.7.tgz"},"readme":"Frosting\n========\n\n> Task helpers for Cakefiles\n\nAbout\n-----\n\nI've always been a little frustrated with the node filesystem API, especially\nwhen trying to get a build process in place for a javascript project. Frosting\nis really not much more than an abstraction layer over the filesystem module\nthat helps keep Cakefiles readable.\n\nUsage\n-----\n\nTo skip right to some code, here's an example Cakefile with build tasks for a\nclient-side javascript library:\n\n``` coffee\n{each} = require 'frosting'\n\ntask 'compile:dev', 'Compile development distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.write \"./dist/dev/#{f.basename( )}.js\"\n\ntask 'compile:min', 'Compile minified distro files', ->\n each './lib/*.coffee', ( f ) -> f.compile -> f.minify -> f.write \"./dist/min/#{f.basename( )}.js\"\n\ntask 'compile', 'Compile all distro files', ->\n invoke 'compile:dev'\n invoke 'compile:min'\n```\n\nFrosting is definitely an opinionated set of build tools. It assumes that source\nfiles are being written in coffeescript and minification will be done via uglify-js.\n\nFrosting provides a couple of convenience methods that yield a `File` class.\nThis class has the necessary API for reading, writing, mutating, inspecting,\ncompiling and minifying source files.\n\n**each**\n\n`each` can be used to iterate over a set of source files. It accepts a callback\nwhich will be passed a `File` instance for each file, and you can build as you wish\nfrom there. It can be given a glob pattern or an explicit array of files.\n\n``` coffee\neach './lib/*.coffee', ( f ) -> # `f` is an instance of File\n\n# or\n\neach [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File\n```\n\n**concat**\n\n`concat` is similar to each, except it simply concatenates all of the source\nfiles into one coffeescript file and yields a `File` instance with the combined\nsources already in the buffer. If given an array of filenames, they will be\nread and concat'd in order.\n\n``` coffee\nconcat './lib/*.coffee', ( f ) -> # `f` is an instance of File, will only get called once\n\n# or\n\nconcat [\n\t'./lib/foo.coffee',\n\t'./lib/bar.coffee',\n\t'./lib/baz.coffee'\n], ( f ) -> # `f` is an instance of File, will only get called once\n```\n\n**TODO** describe the `File` API\n","maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}]}},"maintainers":[{"name":"jeremyruppel","email":"jeremy.ruppel@gmail.com"}],"time":{"modified":"2012-06-25T17:02:53.183Z","created":"2012-03-13T22:37:10.113Z","0.0.1":"2012-03-13T22:37:12.306Z","0.0.2":"2012-03-13T23:07:24.187Z","0.0.4":"2012-03-14T22:16:11.738Z","0.0.6":"2012-03-14T22:26:47.941Z","0.1.1":"2012-03-14T23:05:07.905Z","0.1.2":"2012-03-14T23:13:39.587Z","0.3.0":"2012-03-19T23:09:15.620Z","0.3.2":"2012-04-23T16:59:29.885Z","0.3.3":"2012-06-20T23:12:03.690Z","0.3.5":"2012-06-25T16:50:25.627Z","0.3.6":"2012-06-25T16:57:43.847Z","0.3.7":"2012-06-25T17:02:53.183Z"},"author":{"name":"Jeremy Ruppel"},"repository":{"url":"https://github.com/jeremyruppel/frosting"},"_id":"frosting","_rev":"1-848665bae59541ea9bb375c070288e6d"}ÿdocument-storeÿforwardablež{"id":"forwardable","rev":"1-d35e8855d37aff3a31e0cb0297a64ac0","rev_tree":[{"pos":1,"ids":["d35e8855d37aff3a31e0cb0297a64ac0",{"status":"available"},[]]}],"rev_map":{"1-d35e8855d37aff3a31e0cb0297a64ac0":3469},"winningRev":"1-d35e8855d37aff3a31e0cb0297a64ac0","deleted":false,"seq":3469}ÿby-sequenceÿ0000000000003469Æ{"name":"forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.4":{"name":"forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","version":"0.0.4","author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"homepage":"https://github.com/p-baleine/node-forwardable.git","devDependencies":{"mocha":"*","should":"*"},"keywords":["forwardable"],"main":"./lib/forwardable.js","engines":{"node":">= 0.8.1"},"_npmUser":{"name":"p-baleine","email":"p.baleine@gmail.com"},"_id":"forwardable@0.0.4","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"de466f2bcb875c4fda74aa03c4b228a2deef2518","tarball":"http://registry.npmjs.org/forwardable/-/forwardable-0.0.4.tgz"},"maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}]},"0.0.5":{"name":"forwardable","description":"ruby's forwardable inspired modele which defines delegatable functionality of methods for a class","version":"0.0.5","author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"homepage":"https://github.com/p-baleine/node-forwardable.git","devDependencies":{"mocha":"*","should":"*"},"keywords":["forwardable"],"main":"./lib/forwardable.js","engines":{"node":">= 0.8.1"},"_npmUser":{"name":"p-baleine","email":"p.baleine@gmail.com"},"_id":"forwardable@0.0.5","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"a70c345ce136e97e6e5258843cf0e9d1b9112ab3","tarball":"http://registry.npmjs.org/forwardable/-/forwardable-0.0.5.tgz"},"maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}]}},"readme":"node-forwardable\n================\n\nRuby's forwardable inspired module which defines delegatable functionality of methods for a class.\n\n## Install\n npm install node-forwardable\n\n## Example\n\n var util = require('util')\n , log = console.log.bind(console)\n , forwardable = require('node-forwardable');\n\n var Stack = function() {\n this.content = [];\n this.defDelegator('content', 'push', 'pop');\n };\n util._extend(Stack.prototype, forwardable);\n \n s = new Stack;\n s.push(1);\n s.push(2);\n s.push(3);\n log(s.pop()); // => 3\n log(s.pop()); // => 2\n log(s.pop()); // => 1\n \n","maintainers":[{"name":"p-baleine","email":"p.baleine@gmail.com"}],"time":{"modified":"2012-08-22T22:55:30.276Z","created":"2012-07-17T00:37:45.974Z","0.0.4":"2012-07-17T00:37:48.765Z","0.0.5":"2012-08-22T22:55:30.276Z"},"author":{"name":"Tajima Junpei","email":"p.baleine@gmail.com"},"repository":{"type":"git","url":"git@github.com:p-baleine/node-forwardable.git"},"_id":"forwardable","_rev":"1-d35e8855d37aff3a31e0cb0297a64ac0"}ÿdocument-storeÿform—{"id":"form","rev":"1-ee3bce298cf90e72025be31be61d1b82","rev_tree":[{"pos":1,"ids":["ee3bce298cf90e72025be31be61d1b82",{"status":"available"},[]]}],"rev_map":{"1-ee3bce298cf90e72025be31be61d1b82":3468},"winningRev":"1-ee3bce298cf90e72025be31be61d1b82","deleted":false,"seq":3468}ÿby-sequenceÿ0000000000003468â0{"name":"form","description":"Form processor for filter and validation form data","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"form","version":"0.1.0","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"git://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.2.8","async":">= 0.1.10"},"engines":{"node":">= 0.2.0"},"_npmJsonOpts":{"file":"/home/vadim/.npm/form/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"form@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"ec79ffa78eb8772d1cc5ff95269dde37f0bc5f7c","tarball":"http://registry.npmjs.org/form/-/form-0.1.0.tgz"},"scripts":{},"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.1":{"name":"form","version":"0.1.1","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"git://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.2.8","async":">= 0.1.10"},"engines":{"node":">= 0.2.0"},"_npmJsonOpts":{"file":"/home/vadim/.npm/form/0.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"form@0.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"cc75771c10437a5f1d732f1cf7a3396c1b354e16","tarball":"http://registry.npmjs.org/form/-/form-0.1.1.tgz"},"scripts":{},"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.2":{"name":"form","version":"0.1.2","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"git://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.2.8","async":">= 0.1.15"},"engines":{"node":">= 0.2.0"},"_npmUser":{"name":"baryshev","email":"vadimbaryshev@gmail.com"},"_id":"form@0.1.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"058970f309b10070b7c24e7dd3b0c534ccf17fca","tarball":"http://registry.npmjs.org/form/-/form-0.1.2.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.0":{"name":"form","version":"0.2.0","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.4.9","async":">= 0.1.22"},"engines":{"node":">= 0.2.2"},"_id":"form@0.2.0","dist":{"shasum":"85b56a9748ecdccb732449900d38ae638a11b5bb","tarball":"http://registry.npmjs.org/form/-/form-0.2.0.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.1":{"name":"form","version":"0.2.1","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.4.9","async":">= 0.1.22"},"engines":{"node":">= 0.2.2"},"_id":"form@0.2.1","dist":{"shasum":"e891dc71e8305ed9aad34c12a049c978165f6882","tarball":"http://registry.npmjs.org/form/-/form-0.2.1.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.2":{"name":"form","version":"0.2.2","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.4.9","async":">= 0.1.22"},"engines":{"node":">= 0.2.2"},"_id":"form@0.2.2","dist":{"shasum":"f32e78e959c14801852898c5d27a1bdebd2d0198","tarball":"http://registry.npmjs.org/form/-/form-0.2.2.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.3":{"name":"form","version":"0.2.3","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.4.9","async":">= 0.1.22"},"engines":{"node":">= 0.2.2"},"_id":"form@0.2.3","dist":{"shasum":"8fe60bfef30d25c133ad277593adf8e8f83203e5","tarball":"http://registry.npmjs.org/form/-/form-0.2.3.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.4":{"name":"form","version":"0.2.4","description":"Form processor for filter and validation form data","keywords":["form"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"main":"index","dependencies":{"validator":">= 0.4.9","async":">= 0.1.22"},"engines":{"node":">= 0.2.2"},"_id":"form@0.2.4","dist":{"shasum":"69a0e9bf9003e7d6e4eee7f9d16239148a129a21","tarball":"http://registry.npmjs.org/form/-/form-0.2.4.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]}},"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}],"time":{"modified":"2012-07-16T23:32:53.021Z","created":"2011-10-08T19:43:50.402Z","0.1.0":"2011-10-08T19:43:52.481Z","0.1.1":"2011-10-08T19:45:09.787Z","0.1.2":"2012-01-29T10:47:23.872Z","0.2.0":"2012-07-14T22:40:19.059Z","0.2.1":"2012-07-15T01:44:30.060Z","0.2.2":"2012-07-15T12:39:14.531Z","0.2.3":"2012-07-16T00:20:48.569Z","0.2.4":"2012-07-16T23:32:53.021Z"},"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"https://github.com/baryshev/form.git"},"_id":"form","_rev":"1-ee3bce298cf90e72025be31be61d1b82"}ÿdocument-storeÿflowin™{"id":"flowin","rev":"1-5fd8e8dffeb6729ddab4924fb2548782","rev_tree":[{"pos":1,"ids":["5fd8e8dffeb6729ddab4924fb2548782",{"status":"available"},[]]}],"rev_map":{"1-5fd8e8dffeb6729ddab4924fb2548782":3467},"winningRev":"1-5fd8e8dffeb6729ddab4924fb2548782","deleted":false,"seq":3467}ÿby-sequenceÿ0000000000003467š{"name":"flowin","description":"Real-time project builder & browser-refresh using node.js","dist-tags":{"latest":"0.0.11"},"versions":{"0.0.10":{"author":{"name":"Chris Abrams","email":"mail@chrisabrams.com"},"name":"flowin","description":"Handles continous development flow of .jade, .scss and .js files","version":"0.0.10","repository":{"type":"git","url":"git://github.com/chrisabrams/flow.git"},"engines":{"node":">= 0.6.17"},"dependencies":{"cli-color":"*","commander":"0.6.1","markx":"git+ssh://git@github.com:chrisabrams/markx.git#0.1.2","nodemon":"*","socket.io":"*","stylus":"0.27.1","watch":"*","wrench":"1.3.9","uglify-js":"1.3.0"},"devDependencies":{"mocha":"1.1.0","should":"0.6.3"},"main":"./lib/flow","_npmUser":{"name":"chrisabrams","email":"mail@chrisabrams.com"},"_id":"flowin@0.0.10","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"9c89f038b9a0c220cf9eb32a717a373f0076675b","tarball":"http://registry.npmjs.org/flowin/-/flowin-0.0.10.tgz"},"maintainers":[{"name":"chrisabrams","email":"mail@chrisabrams.com"}]},"0.0.11":{"author":{"name":"Chris Abrams","email":"mail@chrisabrams.com"},"name":"flowin","description":"Real-time project builder & browser-refresh using node.js","version":"0.0.11","repository":{"type":"git","url":"git://github.com/chrisabrams/flowin.git"},"engines":{"node":">= 0.6.17"},"dependencies":{"cli-color":"*","commander":"0.6.1","markx":"git+ssh://git@github.com:chrisabrams/markx.git#0.1.2","nodemon":"*","socket.io":"*","stylus":"0.27.1","watch":"*","wrench":"1.3.9","uglify-js":"1.3.0"},"devDependencies":{"mocha":"1.1.0","should":"0.6.3"},"main":"./lib/flow","_npmUser":{"name":"chrisabrams","email":"mail@chrisabrams.com"},"_id":"flowin@0.0.11","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"394408c16efe083fe2d82d133714f04b050f41fc","tarball":"http://registry.npmjs.org/flowin/-/flowin-0.0.11.tgz"},"maintainers":[{"name":"chrisabrams","email":"mail@chrisabrams.com"}]}},"readme":"#Flow\n\n##Compiling Jade and Markdown to HTML\n\n###Markdown to HTML\nSupply the path to the .md file and the path to the output .html\n\n\tFlow.compile.html({\n\t\tmd : 'path/to/content.md',\n\t\toutput : 'path/to/content.html'\n\t});\n\n###Jade to HTML\nSupply the path to the .jade file and the path to the output .html\n\n\tFlow.compile.html({\n\t\tjade : 'path/to/template.jade',\n\t\toutput : 'path/to/template.jade'\n\t});\n\n###Jade + Markdown to HTML\nJade can be used as a template and markdown can be written as the content\n\n\tFlow.compile.html({\n\t\tjade : 'path/to/template.jade',\n\t\tmd : 'path/to/content.md',\n\t\toutput : 'path/to/combined.html'\n\t});","maintainers":[{"name":"chrisabrams","email":"mail@chrisabrams.com"}],"time":{"modified":"2012-06-25T06:32:55.477Z","created":"2012-06-25T05:43:41.067Z","0.0.10":"2012-06-25T05:43:42.372Z","0.0.11":"2012-06-25T06:32:55.477Z"},"author":{"name":"Chris Abrams","email":"mail@chrisabrams.com"},"repository":{"type":"git","url":"git://github.com/chrisabrams/flowin.git"},"_id":"flowin","_rev":"1-5fd8e8dffeb6729ddab4924fb2548782"}ÿdocument-storeÿfiltr˜{"id":"filtr","rev":"1-5ad674eb77f4178cf9413c926c3f35c7","rev_tree":[{"pos":1,"ids":["5ad674eb77f4178cf9413c926c3f35c7",{"status":"available"},[]]}],"rev_map":{"1-5ad674eb77f4178cf9413c926c3f35c7":3466},"winningRev":"1-5ad674eb77f4178cf9413c926c3f35c7","deleted":false,"seq":3466}ÿby-sequenceÿ0000000000003466“p{"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.1.0","repository":{"type":"git","url":"git://github.com/logicalparadox/fltr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"87d67cc0f05e5719283aec44a5227807ae4e92f8","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.1.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.1.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.1.1","repository":{"type":"git","url":"git://github.com/logicalparadox/fltr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.1.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"4d2eb9eae9e4fe265eb6cec1c2c379280c22bda8","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.1.1.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.1.2":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.1.2","repository":{"type":"git","url":"git://github.com/logicalparadox/fltr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.1.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"5834b7fcd20b1550cd4091793572912205c01e39","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.1.2.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.1.3":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.1.3","repository":{"type":"git","url":"git://github.com/logicalparadox/fltr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.1.3","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"e157729595131502552c9d3c94ab91e87e8dce6a","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.1.3.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.2.0","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.2.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"bde9c0bfd3bd5a6940d591464395a4ce696bee5c","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.2.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.2.1","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.2.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"8f49e249365b35bcf2a456e19989fc9021ca90ac","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.2.1.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.2":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.2.2","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.2.2","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"f36514a4b9488d736b1089aee05a730af86f0a19","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.2.2.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.3":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.2.3","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.2.3","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"d777dc2716a62179d2d879315da53e670170df4c","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.2.3.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.4":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.2.4","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.2.4","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b6625f400cc1510a06e01771b221db59fac4dd43","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.2.4.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.3.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"filtr","description":"Array filtering for node.js and the browser inspired by MongoDB.","version":"0.3.0","repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">=0.4.8"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*","folio":"0.2.x"},"optionalDependencies":{},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"filtr@0.3.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"957f8382e72a9efd975ª•dù02150aa8cc6f488f9c62c","tarball":"http://registry.npmjs.org/filtr/-/filtr-0.3.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]}},"readme":"# Filtr [![Build Status](https://secure.travis-ci.org/logicalparadox/filtr.png)](http://travis-ci.org/logicalparadox/filtr)\n\nFilter javascript arrays using a MongoDB style syntax and is available for node.js\nand the browser. It was originally written as an internal component for [Seed](https://github.com/qualiancy/seed),\nbut it had no other dependancies and seemed fit for use in the browser.\n\n## Installation\n\n### Node.js\n\nFiltr is available on npm.\n\n npm install filtr\n\n### Browser\n\nA browser build is available in the repository's `dist` folder.\nDownload the package and include either the normal or minimized build in your HTML header.\n\n \n \n\nThe browser build is fully AMD and CommonJS compatible and should work on all browser.\n\n## Features\n\nFiltr is still in early development so expect this list to grow.\n\n##### Expansive Query Language\n\n* Comparators: `$gt`, `$gte`, `$lt`, `$lte`, `$all`, `$exists`, `$mod`, `$eq`, `$ne`, `$in`, `$nin`, `$size`\n* Traversables: `$or`, `$nor`, `$and`\n\n##### Data Helpers\n\n* `filtr.getPathValue` returns the nested value in an object given a string path\n* `filtr.comparators` are available directly for quick value testing\n\n### Usage\n\n```js\nvar query = filtr({ $gt: 15, $lt: 25 })\n , results = query.test([ 5, 10, 17, 19, 25 ]);\n// results == [ 17, 19 ];\n```\n\n#### Test options provide different output \n\nTesting also supports a number of options passed in as the second argument.\n\n* *spec*: output modifer\n * _subset_: (default) return an array containing a subset of matched items\n * _boolean_: return an array of the original length with each item being a boolean when object passed or failed.\n * _index_: return an array of numbers matching the index of passed object in the original array\n* *type*: input modifier\n * _set_: (default) assert that the data provided is an array. test each item.\n * _single_: assert that the data provided is a single item. return boolean.\n\nUsing the `spec` output modifier is an easy way to handle post processing of result sets\nwithout having to match up a subset.\n\n```js\nvar query = filtr({ $gt: 15, $lt: 25 })\n , results = query.test([ 5, 10, 17, 19, 25 ], { spec: 'boolean' });\n// results == [ false, false, true, true, false ];\n```\n\n#### Using paths for deep matching\n\nFiltr also supports using paths for deep matching within a javascript object. Given the \nfollowing items, and sample queries.\n\n```js\nvar dataComplex = [\n { a: { b: 100 }\n , c: 'testC'\n , d: \n [ { e: 'world' } ] \n }\n , { a: { b: 50 }\n , c: 'testC'\n , d: \n [ { e: 'universe' }\n , { e: 'galaxy' } ]\n }\n];\n\nvar query1 = filtr({ 'a.b': { $gt: 75, $lt: 125 } });\n , query2 = filtr({ 'a.b': { $gt: 25, $lt: 75 }, 'd[0].e': { $eq: 'universe' } });\n\nvar res1 = query1.test(dataComplex) // result would have the first item\n , res2 = query1.test(dataComplex); // result would have the second item \n```\n\nA helper is also available that returns the value in a nested object given a string path.\n\n```js\nvar hello = filtr.getPathValue('d[0].e', dataComplex[1]);\n// hello == 'universe'\n```\n\n## Where to Get Help\n\nPlease post issues to [GitHub Issues](https://github.com/logicalparadox/filtr/issues).\n\n## Tests\n\nTests are written in the BDD styles for the [Mocha]() test runner using the\n`should` assertion interface from [Chai](http://chaijs.com). Running tests is simple:\n\n make test\n\nA browser suite is also available at `test/browser/index.js`. The same test definitions are \nused in both contexts.\n\n### Contributing\n\nInterested in contributing? Fork to get started. Contact [@logicalparadox](http://github.com/logicalparadox) \nif you are interested in being regular contributor.\n\n#### Contibutors \n\n* Jake Luer ([Github: @logicalparadox](http://github.com/logicalparadox)) ([Twitter: @jakeluer](http://twitter.com/jakeluer)) ([Website](http://alogicalparadox.com))\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 Jake Luer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"time":{"modified":"2012-06-19T01:10:13.521Z","created":"2012-01-28T05:47:14.936Z","0.1.0":"2012-01-28T05:47:15.712Z","0.1.1":"2012-01-28T14:24:10.410Z","0.1.2":"2012-01-28T22:32:06.826Z","0.1.3":"2012-02-17T21:49:19.603Z","0.2.0":"2012-02-20T21:03:03.589Z","0.2.1":"2012-02-26T03:09:47.619Z","0.2.2":"2012-03-09T00:13:03.899Z","0.2.3":"2012-03-09T01:56:07.210Z","0.2.4":"2012-03-10T01:06:53.367Z","0.3.0":"2012-06-19T01:10:13.521Z"},"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"repository":{"type":"git","url":"git://github.com/logicalparadox/filtr.git"},"_id":"filtr","_rev":"1-5ad674eb77f4178cf9413c926c3f35c7"}"ÿdocument-storeÿexpress-override£{"id":"express-override","rev":"1-539b8dadb9df3cbd2f43f89db1706dde","rev_tree":[{"pos":1,"ids":["539b8dadb9df3cbd2f43f89db1706dde",{"status":"available"},[]]}],"rev_map":{"1-539b8dadb9df3cbd2f43f89db1706dde":3465},"winningRev":"1-539b8dadb9df3cbd2f43f89db1706dde","deleted":false,"seq":3465}ÿby-sequenceÿ0000000000003465ÇÖ{"name":"express-override","description":"Express MVC Like Plugin","dist-tags":{"latest":"0.1.9"},"versions":{"0.0.1":{"name":"express-override","version":"0.0.1","description":"Express MVC Like Plugin","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["nodejs","Express"],"author":{"name":"Kyohei Ueshiba"},"license":"BSD","_id":"express-override@0.0.1","dist":{"shasum":"6dcc44912e387bd8a28938597cd2ab9efb399796","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.1.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.2":{"name":"express-override","version":"0.0.2","description":"Express MVC Like Plugin","main":"index.js","dependencies":{"klass":"1.2.x"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["nodejs","Express"],"author":{"name":"Kyohei Ueshiba"},"license":"BSD","readme":"/* -----------------------------------------------------------------------------\n| Express Over Ride (EOR)\n| @ã°ãƒ¼ã˜ã‚‡ã‚“\n| 0.0.1 Bata\n|\n| @説明\n| é™ã‚ŠãªãExpressã®ã¾ã¾MVCã«ã—ã¦ã€å„モジュールåŒå£«ã§ãƒ‡ãƒ¼ã‚¿ã®å…±æœ‰ã‚’行ã†ç‚ºã®ãƒ©ã‚¤ãƒ–ラリ.\n| ã“ã‚“ãªä¸€æ’ƒæ›¸ãã®ã‚½ãƒ¼ã‚¹ã§è‰¯ã„ã®ã‹ã€‚。。ã¾ãベータ版ã¨ã„ã†äº‹ã§ã€‚\n| MVCå´ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¯matadorã‚’è¸è¥²ã€‚ã¨ã„ã†ã‹klass使ã†ã¨ã©ã†ã—ã¦ã‚‚ã“ã†ãªã‚‹ã€‚\n| 見ãˆã–る何ã‹ã«æŠµæŠ—ã—ã¦ã€åç§°ã‚’controllerã‹ã‚‰handlerã¨ã—ãŸã€‚\n|\n| @拡張予定\n| npm install ã§ node_modulesã«è¿½åŠ ã•れる様ã«ã—ã¦ã€ã‚³ãƒžãƒ³ãƒ‰é¡žã‚‚用æ„ã™ã‚‹ã€‚\n|\n| @ä¾å­˜ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«\n| ä»Šã®æ‰€klassã ã‘。ã‚ã¨Expressã¯ã‚‚ã¡ã‚ん。ãã†ã„ã†ãƒ©ã‚¤ãƒ–ラリã§ã™ã‹ã‚‰ã€‚\n| ã“ã®ãƒ©ã‚¤ãƒ–ラリ自体をklassã§æ›¸ã‘ã°ã‚‚ã£ã¨ç°¡æ½”ã«æ›¸ã‘ãŸã‚“ã˜ã‚ƒã¨ã¯æ€ã£ãŸã‘ã©ã€\n| klassを使ã‚ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚‚ã‚ã‚Šå¾—ã‚‹ã¨æ€ã£ã¡ã‚ƒã£ãŸã‚“ã ãªã€‚ã“れãŒã€‚\n|-----------------------------------------------------------------------------*/","_id":"express-override@0.0.2","dist":{"shasum":"51c4ff4ff293e5de586f5d495d36f4bca3970ccc","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.2.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.3":{"name":"express-override","version":"0.0.3","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["nodejs","Express"],"dependencies":{"klass":"1.2.x"},"bin":{"eor":"./bin/eor"},"readme":"/* -----------------------------------------------------------------------------\n| Express Over Ride (EOR)\n| @ã°ãƒ¼ã˜ã‚‡ã‚“\n| 0.0.1 Bata\n|\n| @説明\n| é™ã‚ŠãªãExpressã®ã¾ã¾MVCã«ã—ã¦ã€å„モジュールåŒå£«ã§ãƒ‡ãƒ¼ã‚¿ã®å…±æœ‰ã‚’行ã†ç‚ºã®ãƒ©ã‚¤ãƒ–ラリ.\n| ã“ã‚“ãªä¸€æ’ƒæ›¸ãã®ã‚½ãƒ¼ã‚¹ã§è‰¯ã„ã®ã‹ã€‚。。ã¾ãベータ版ã¨ã„ã†äº‹ã§ã€‚\n| MVCå´ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¯matadorã‚’è¸è¥²ã€‚ã¨ã„ã†ã‹klass使ã†ã¨ã©ã†ã—ã¦ã‚‚ã“ã†ãªã‚‹ã€‚\n| 見ãˆã–る何ã‹ã«æŠµæŠ—ã—ã¦ã€åç§°ã‚’controllerã‹ã‚‰handlerã¨ã—ãŸã€‚\n|\n| @拡張予定\n| npm install ã§ node_modulesã«è¿½åŠ ã•れる様ã«ã—ã¦ã€ã‚³ãƒžãƒ³ãƒ‰é¡žã‚‚用æ„ã™ã‚‹ã€‚\n|\n| @ä¾å­˜ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«\n| ä»Šã®æ‰€klassã ã‘。ã‚ã¨Expressã¯ã‚‚ã¡ã‚ん。ãã†ã„ã†ãƒ©ã‚¤ãƒ–ラリã§ã™ã‹ã‚‰ã€‚\n| ã“ã®ãƒ©ã‚¤ãƒ–ラリ自体をklassã§æ›¸ã‘ã°ã‚‚ã£ã¨ç°¡æ½”ã«æ›¸ã‘ãŸã‚“ã˜ã‚ƒã¨ã¯æ€ã£ãŸã‘ã©ã€\n| klassを使ã‚ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚‚ã‚ã‚Šå¾—ã‚‹ã¨æ€ã£ã¡ã‚ƒã£ãŸã‚“ã ãªã€‚ã“れãŒã€‚\n|-----------------------------------------------------------------------------*/","_id":"express-override@0.0.3","dist":{"shasum":"c499bfc343309e7eb9f21146aa738667a9e23030","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.3.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.4":{"name":"express-override","version":"0.0.4","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["nodejs","Express"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0"},"bin":{"eor":"./bin/eor"},"readme":"/* -----------------------------------------------------------------------------\n| Express Over Ride (EOR)\n| @ã°ãƒ¼ã˜ã‚‡ã‚“\n| 0.0.1 Bata\n|\n| @説明\n| é™ã‚ŠãªãExpressã®ã¾ã¾MVCã«ã—ã¦ã€å„モジュールåŒå£«ã§ãƒ‡ãƒ¼ã‚¿ã®å…±æœ‰ã‚’行ã†ç‚ºã®ãƒ©ã‚¤ãƒ–ラリ.\n| ã“ã‚“ãªä¸€æ’ƒæ›¸ãã®ã‚½ãƒ¼ã‚¹ã§è‰¯ã„ã®ã‹ã€‚。。ã¾ãベータ版ã¨ã„ã†äº‹ã§ã€‚\n| MVCå´ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¯matadorã‚’è¸è¥²ã€‚ã¨ã„ã†ã‹klass使ã†ã¨ã©ã†ã—ã¦ã‚‚ã“ã†ãªã‚‹ã€‚\n| 見ãˆã–る何ã‹ã«æŠµæŠ—ã—ã¦ã€åç§°ã‚’controllerã‹ã‚‰handlerã¨ã—ãŸã€‚\n|\n| @拡張予定\n| npm install ã§ node_modulesã«è¿½åŠ ã•れる様ã«ã—ã¦ã€ã‚³ãƒžãƒ³ãƒ‰é¡žã‚‚用æ„ã™ã‚‹ã€‚\n|\n| @ä¾å­˜ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«\n| ä»Šã®æ‰€klassã ã‘。ã‚ã¨Expressã¯ã‚‚ã¡ã‚ん。ãã†ã„ã†ãƒ©ã‚¤ãƒ–ラリã§ã™ã‹ã‚‰ã€‚\n| ã“ã®ãƒ©ã‚¤ãƒ–ラリ自体をklassã§æ›¸ã‘ã°ã‚‚ã£ã¨ç°¡æ½”ã«æ›¸ã‘ãŸã‚“ã˜ã‚ƒã¨ã¯æ€ã£ãŸã‘ã©ã€\n| klassを使ã‚ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚‚ã‚ã‚Šå¾—ã‚‹ã¨æ€ã£ã¡ã‚ƒã£ãŸã‚“ã ãªã€‚ã“れãŒã€‚\n|-----------------------------------------------------------------------------*/","_id":"express-override@0.0.4","dist":{"shasum":"62eb0a508f828100229ae9bda14751033efd40f0","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.4.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.5":{"name":"express-override","version":"0.0.5","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["nodejs","Express"],"dependencies":{"klass":"1.2.x"},"bin":{"eor":"./bin/eor"},"readme":"","_id":"express-override@0.0.5","dist":{"shasum":"a4eab06b51a4762c352f2cacfd2e95b71297e614","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.5.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.6":{"name":"express-override","version":"0.0.6","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x"},"bin":{"eor":"./bin/eor"},"readme":"","_id":"express-override@0.0.6","dist":{"shasum":"3ebb95b05da2836790c8b9343b38d88e699725f7","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.6.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.7":{"name":"express-override","version":"0.0.7","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0"},"bin":{"eor":"./bin/eor"},"readme":"","_id":"express-override@0.0.7","dist":{"shasum":"33779bbfe587a60b74362ae4f708dfc96bb7cc91","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.7.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.8":{"name":"express-override","version":"0.0.8","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0"},"bin":{"eor":"./bin/eor"},"readme":"","_id":"express-override@0.0.8","dist":{"shasum":"375f2c057392b57c69033d7165e5f2470e48b780","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.8.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.9":{"name":"express-override","version":"0.0.9","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"18a6777c297773b78d05244e65210771747bb1ff","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.9.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.10":{"name":"express-override","version":"0.0.10","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.10","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"42a67b4d4700425e8f11777163f0996a673b83a8","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.10.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.11":{"name":"express-override","version":"0.0.11","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.11","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a3b5b9d4508a81f183d03782089092f0430866b5","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.11.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.12":{"name":"express-override","version":"0.0.12","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.12","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"db46af201fe291578a687193132195e1ff47988c","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.12.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.13":{"name":"express-override","version":"0.0.13","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.13","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"b37ad279625f425db7deaed8db73629d33e2f0b3","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.13.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.14":{"name":"express-override","version":"0.0.14","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.14","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"16d85f799235b0bb43ebf9c8cb410d43fc8d9b2a","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.14.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.0.15":{"name":"express-override","version":"0.0.15","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.0.15","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"d7d3dad47a05b2b647d308f3d1a6c3f692c2e311","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.0.15.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.0":{"name":"express-override","version":"0.1.0","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"20d80e9d4c45a92026804ba534afc8b4ea5a5993","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.0.tgz"},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.1":{"name":"express-override","version":"0.1.1","description":"Express MVC Like Plugin","main":"index.js","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"285bed8732612f1a26b3ebc6aec41e7efc6cf227","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.1.tgz"},"readme":"# Express-Override\n \n [Express3.x](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n \t* routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n \t* å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n \t* [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override\n $ eor [same options]\n\n## Quick Start\n\n run\n\n\t$ node eor-sample-app.js\n\n browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.2":{"name":"express-override","version":"0.1.2","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"_npmUser":{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"},"_id":"express-override@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"371d48d9689d234bf3661481b4b537cdf031c868","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.2.tgz"},"readme":"# Express-Override\n \n [Express3.x](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.3":{"name":"express-override","version":"0.1.3","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express3.x](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.3","dist":{"shasum":"7346493caab1365bdb27e32efd3c6013d82bd948","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.3.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.4":{"name":"express-override","version":"0.1.4","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express3.x](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.4","dist":{"shasum":"4a01c671c43581d654c3a7d07b1d95de75447e74","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.4.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.5":{"name":"express-override","version":"0.1.5","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚(Version2.5.x & 3.x.x)\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークをzîMù作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n### Other\n\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹äº‹ã§ã‚µãƒ³ãƒ—ルファイル(eor-sample-app.js)ã‚’Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åˆã‚ã›ã¦ä½œæˆã—ã¾ã™ã€‚\n デフォルトã§ã¯Version2。\n\n $ eor -x 2\n\n OR\n\n $ oer -x 3\n\n## Example\n\n/handlers/SampleHandlers.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\").extend(function(){\n this.title = \"Express Override\";\n })\n .methods({\n index : function(req, res) {\n var sampleModel = eor.getModule(\"Sample\", \"Model\");\n if(sampleModel.index()){\n res.render('index', { title: this.title })\n }else{\n res.render('index', { title: this.title, error_message : \"ErrorCode => -1111\"});\n }\n },\n\n hello : function(req, res) {\n res.render('index', { title: eor.shared.name })\n }\n })\n};\n```\n\n/models/SampleModel.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\", \"Model\").extend(function(){\n this.myName = \"SampleModel\";\n })\n .methods({\n index : function(){\n return this.myName == \"SampleModel\";\n }\n });\n};\n```\n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.5","dist":{"shasum":"5292acd5fcf8a6adec94707f93b12313b24842e9","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.5.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.6":{"name":"express-override","version":"0.1.6","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚(Version2.5.x & 3.x.x)\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n### Other\n\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹äº‹ã§ã‚µãƒ³ãƒ—ルファイル(eor-sample-app.js)ã‚’Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åˆã‚ã›ã¦ä½œæˆã—ã¾ã™ã€‚\n デフォルトã§ã¯Version2。\n\n $ eor -x 2\n\n OR\n\n $ oer -x 3\n\n## Example\n\n/handlers/SampleHandlers.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\").extend(function(){\n this.title = \"Express Override\";\n })\n .methods({\n index : function(req, res) {\n var sampleModel = eor.getModule(\"Sample\", \"Model\");\n if(sampleModel.index()){\n res.render('index', { title: this.title })\n }else{\n res.render('index', { title: this.title, error_message : \"ErrorCode => -1111\"});\n }\n },\n\n hello : function(req, res) {\n res.render('index', { title: eor.shared.name })\n }\n })\n};\n```\n\n/models/SampleModel.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\", \"Model\").extend(function(){\n this.myName = \"SampleModel\";\n })\n .methods({\n index : function(){\n return this.myName == \"SampleModel\";\n }\n });\n};\n```\n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.6","dist":{"shasum":"7e51187937dc00d869a17fc495e6085b74605a4e","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.6.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.7":{"name":"express-override","version":"0.1.7","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚(Version2.5.x & 3.x.x)\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n### Other\n\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹äº‹ã§ã‚µãƒ³ãƒ—ルファイル(eor-sample-app.js)ã‚’Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åˆã‚ã›ã¦ä½œæˆã—ã¾ã™ã€‚\n デフォルトã§ã¯Version2。\n\n $ eor -x 2\n\n OR\n\n $ oer -x 3\n\n## Example\n\n/handlers/SampleHandlers.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\").extend(function(){\n this.title = \"Express Override\";\n })\n .methods({\n index : function(req, res) {\n var sampleModel = eor.getModule(\"Sample\", \"Model\");\n if(sampleModel.index()){\n res.render('index', { title: this.title })\n }else{\n res.render('index', { title: this.title, error_message : \"ErrorCode => -1111\"});\n }\n },\n\n hello : function(req, res) {\n res.render('index', { title: eor.shared.name })\n }\n })\n};\n```\n\n/models/SampleModel.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\", \"Model\").extend(function(){\n this.myName = \"SampleModel\";\n })\n .methods({\n index : function(){\n return this.myName == \"SampleModel\";\n }\n });\n};\n```\n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.7","dist":{"shasum":"2ea5622a26ddf62a707b02544148b15e6be1f7b4","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.7.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.8":{"name":"express-override","version":"0.1.8","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚(Version2.5.x & 3.x.x)\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n### Other\n\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹äº‹ã§ã‚µãƒ³ãƒ—ルファイル(eor-sample-app.js)ã‚’Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åˆã‚ã›ã¦ä½œæˆã—ã¾ã™ã€‚\n デフォルトã§ã¯Version2。\n\n $ eor -x 2\n\n OR\n\n $ oer -x 3\n\n## Example\n\n/handlers/SampleHandlers.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\").extend(function(){\n this.title = \"Express Override\";\n })\n .methods({\n index : function(req, res) {\n var sampleModel = eor.getModule(\"Sample\", \"Model\");\n if(sampleModel.index()){\n res.render('index', { title: this.title })\n }else{\n res.render('index', { title: this.title, error_message : \"ErrorCode => -1111\"});\n }\n },\n\n hello : function(req, res) {\n res.render('index', { title: eor.shared.name })\n }\n })\n};\n```\n\n/models/SampleModel.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\", \"Model\").extend(function(){\n this.myName = \"SampleModel\";\n })\n .methods({\n index : function(){\n return this.myName == \"SampleModel\";\n }\n });\n};\n```\n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.8","dist":{"shasum":"755b08a06d51c10d1a78dd6b75f9475804f1f57a","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.8.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]},"0.1.9":{"name":"express-override","version":"0.1.9","description":"Express MVC Like Plugin","main":"index","author":{"name":"Kyohei Ueshiba"},"license":"BSD","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"keywords":["Express","MVC"],"dependencies":{"klass":"1.2.x","mkdirp":"0.3.0","commander":"0.6.x"},"bin":{"eor":"./bin/eor"},"readme":"# Express-Override\n \n [Express](https://github.com/visionmedia/express) ã®æ‹¡å¼µãƒ—ラグインã§ã™ã€‚(Version2.5.x & 3.x.x)\n Expressã‚’ãƒ™ãƒ¼ã‚¹ã«æ–°ãŸã«ãƒ•レームワークを作æˆã™ã‚‹ã®ã§ã¯ãªãã€Expressã®ã¾ã¾ä½¿ç”¨ã™ã‚‹ç‚ºã®æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリ群ã§ã™ã€‚\n ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³0.1.xã§ã¯ã€\n\n * routesã§å®Ÿè¡Œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ•ァイル分割 (handlers)\n * å…¨handlersã§ä½¿ç”¨å‡ºæ¥ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æä¾›\n * [klass.js](https://github.com/ded/klass) ã®ä½¿ç”¨ã«ã‚ˆã‚‹handlers/modelsã®ç¶™æ‰¿\n\n ã®ã¿ã®æ©Ÿèƒ½ã§ã™ã€‚\n\n\n## Installation\n \n 基本仕様ã¯expressコマンドã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーションã®ãƒ™ãƒ¼ã‚¹ãƒ•ァイルãŒä½œæˆã•れãŸå¾Œã«å®Ÿè¡Œã•れる事を想定ã—ã¦ã„ã¾ã™ã€‚\n eorコマンドã®å¼•æ•°ã«ã¯expressコマンドã®å¼•æ•°ã¨åŒã˜ç‰©ã‚’指定ã™ã‚‹ã¨ã€sampleファイルãŒã™ãã«ä½¿ç”¨å‡ºæ¥ã‚‹æ§˜ã«ãªã‚Šã¾ã™ã€‚\n\n $ npm install -g express-override \n\n## Quick Start\n\n### Initialize\n\n \t$ eor [same options]\n $ npm install -d\n\n or\n\n \t$ eor [same options]\n $ npm install express-override\n\n### Run\n\n\t$ node eor-sample-app.js\n\n### Browser\n\n \thttp://localhost:3000\n \thttp://localhost:3000/hello\n \n### Other\n\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹äº‹ã§ã‚µãƒ³ãƒ—ルファイル(eor-sample-app.js)ã‚’Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åˆã‚ã›ã¦ä½œæˆã—ã¾ã™ã€‚\n デフォルトã§ã¯Version2。\n\n $ eor -x 2\n\n OR\n\n $ oer -x 3\n\n## Example\n\n/handlers/SampleHandlers.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\").extend(function(){\n this.title = \"Express Override\";\n })\n .methods({\n index : function(req, res) {\n var sampleModel = eor.getModule(\"Sample\", \"Model\");\n if(sampleModel.index()){\n res.render('index', { title: this.title })\n }else{\n res.render('index', { title: this.title, error_message : \"ErrorCode => -1111\"});\n }\n },\n\n hello : function(req, res) {\n res.render('index', { title: eor.shared.name })\n }\n })\n};\n```\n\n/models/SampleModel.js\n``` js\nmodule.exports = function(eor){\n return eor.define(\"Application\", \"Model\").extend(function(){\n this.myName = \"SampleModel\";\n })\n .methods({\n index : function(){\n return this.myName == \"SampleModel\";\n }\n });\n};\n```\n\n## 今後ã®ã‚¢ãƒƒãƒ—デート方é‡\n\n Expressを使用ã—ãŸã‚¢ãƒ—リケーションã§è»Šè¼ªã®å†é–‹ç™ºã‚’防ã事を目的ã¨ã—ãŸscaffold機能やã€\n Expressã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³äº’æ›å¸åŽç­‰ã‚’ç›®çš„ã«æ›´æ–°ã—ã¦è¡Œãã¾ã™ã€‚","_id":"express-override@0.1.9","dist":{"shasum":"5a151d502f80e9387c348d1b7ae2f1014862be1f","tarball":"http://registry.npmjs.org/express-override/-/express-override-0.1.9.tgz"},"maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}]}},"readme":"","maintainers":[{"name":"Kyohei Ueshiba","email":"kyohei.ueshiba@gmail.com"}],"time":{"modified":"2012-08-07T17:13:20.639Z","created":"2012-07-13T17:15:03.890Z","0.0.1":"2012-07-13T17:15:06.363Z","0.0.2":"2012-07-13T17:37:50.839Z","0.0.3":"2012-07-13T19:21:16.019Z","0.0.4":"2012-07-13T21:02:36.182Z","0.0.5":"2012-07-13T21:51:36.667Z","0.0.6":"2012-07-13T22:00:06.315Z","0.0.7":"2012-07-13T22:05:46.087Z","0.0.8":"2012-07-13T22:14:12.951Z","0.0.9":"2012-07-17T13:07:38.572Z","0.0.10":"2012-07-18T18:03:21.525Z","0.0.11":"2012-07-18T18:40:48.181Z","0.0.12":"2012-07-18T18:42:41.720Z","0.0.13":"2012-07-18T18:53:43.330Z","0.0.14":"2012-07-18T18:57:09.266Z","0.0.15":"2012-07-18T19:16:39.731Z","0.1.0":"2012-07-18T20:57:43.382Z","0.1.1":"2012-07-18T21:37:30.022Z","0.1.2":"2012-07-18T22:13:41.407Z","0.1.3":"2012-07-20T09:57:38.597Z","0.1.4":"2012-07-20T11:19:08.660Z","0.1.5":"2012-07-23T12:23:21.257Z","0.1.6":"2012-07-26T23:30:48.525Z","0.1.7":"2012-08-06T12:06:32.262Z","0.1.8":"2012-08-07T17:05:50.840Z","0.1.9":"2012-08-07T17:13:20.639Z"},"author":{"name":"Kyohei Ueshiba"},"repository":{"type":"git","url":"https://github.com/KyoheiUeshiba/express-override.git"},"users":{"fgribreau":true},"_id":"express-override","_rev":"1-539b8dadb9df3cbd2f43f89db1706dde"}#ÿdocument-storeÿexpress-bootstrap¤{"id":"express-bootstrap","rev":"1-265a1779152d4b0ff15ac7d43446ca71","rev_tree":[{"pos":1,"ids":["265a1779152d4b0ff15ac7d43446ca71",{"status":"available"},[]]}],"rev_map":{"1-265a1779152d4b0ff15ac7d43446ca71":3464},"winningRev":"1-265a1779152d4b0ff15ac7d43446ca71","deleted":false,"seq":3464}ÿby-sequenceÿ0000000000003464Ÿ {"name":"express-bootstrap","description":"ERROR: No README.md file found!","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"express-bootstrap","version":"0.0.0","private":false,"dependencies":{"async":"~0.1.22","better-inspect":"0.0.x","bootstrap":"git://github.com/langpavel/bootstrap.git","browserify":"~1.14.5","colors":"~0.6.0-1","commander":"~0.6.1","connect-redis":"~1.4.1","connect-repl":"~0.0.1","debug":"~0.7.0","express":"~3.0.0rc2","gm":"~1.4.1","highlight.js":"~7.0.1","hiredis":"~0.1.14","jade":"~0.26.3","mkdirp":"~0.3.3","mysql":"~2.0.0-alpha3","nib":"~0.7.0","nodemailer":"~0.3.22","passport":"~0.1.12","passport-local":"~0.1.6","redis":"~0.7.2","showdown":"~0.2.0","socket.io":"~0.9.9","stylus":"~0.28.2","uglify-js":"~1.3.3"},"scripts":{"start":"node server.js"},"_id":"express-bootstrap@0.0.0","readme":"ERROR: No README.md file found!","description":"ERROR: No README.md file found!","dist":{"shasum":"bc12460cd80b8fa16f799e234112d63af991f4f3","tarball":"http://registry.npmjs.org/express-bootstrap/-/express-bootstrap-0.0.0.tgz"},"maintainers":[{"name":"langpavel","email":"langpavel@phpskelet.org"}]}},"readme":"ERROR: No README.md file found!","maintainers":[{"name":"langpavel","email":"langpavel@phpskelet.org"}],"time":{"modified":"2012-08-18T12:01:02.780Z","created":"2012-08-18T12:01:00.824Z","0.0.0":"2012-08-18T12:01:02.780Z"},"_id":"express-bootstrap","_rev":"1-265a1779152d4b0ff15ac7d43446ca71"}ÿdocument-storeÿevent-tree{"id":"event-tree","rev":"1-c6ba1d323e2ab10630787ff85fcb9776","rev_tree":[{"pos":1,"ids":["c6ba1d323e2ab10630787ff85fcb9776",{"status":"available"},[]]}],"rev_map":{"1-c6ba1d323e2ab10630787ff85fcb9776":3463},"winningRev":"1-c6ba1d323e2ab10630787ff85fcb9776","deleted":false,"seq":3463}ÿby-sequenceÿ0000000000003463ì[{"name":"event-tree","description":"Hierachical Event Emitters, (rather like in the browser!)","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"event-tree","version":"0.0.1","homepage":"https://github.com/dominictarr/event-tree","repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"dependencies":{"assertions":"~2.3.0","macgyver":"~1.6.3"},"devDependencies":{"tap":"0.3.0"},"scripts":{"test":"tap test"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","_id":"event-tree@0.0.1","description":"Hierachical Event Emitters, (rather like in the browser!)","dist":{"shasum":"ce743dec378940292a3435a6a8ed500ec87ed932","tarball":"http://registry.npmjs.org/event-tree/-/event-tree-0.0.1.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.2":{"name":"event-tree","version":"0.0.2","homepage":"https://github.com/dominictarr/event-tree","repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"dependencies":{"assertions":"~2.3.0","macgyver":"~1.6.3"},"devDependencies":{"tap":"0.3.0"},"scripts":{"test":"tap test"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","_id":"event-tree@0.0.2","description":"Hierachical Event Emitters, (rather like in the browser!)","dist":{"shasum":"c7cecbb9ef87dd412f880de0d7f50db7c10bb419","tarball":"http://registry.npmjs.org/event-tree/-/event-tree-0.0.2.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.3":{"name":"event-tree","version":"0.0.3","homepage":"https://github.com/dominictarr/event-tree","repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"dependencies":{},"devDependencies":{"assertions":"~2.3.0","macgyver":"~1.6.3","tap":"0.3.0"},"scripts":{"test":"tap test"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","_id":"event-tree@0.0.3","description":"Hierachical Event Emitters, (rather like in the browser!)","dist":{"shasum":"87136277f6acc579068636ffd9fbbd2a11e4a5a9","tarball":"http://registry.npmjs.org/event-tree/-/event-tree-0.0.3.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.0":{"name":"event-tree","version":"0.1.0","homepage":"https://github.com/dominictarr/event-tree","repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"dependencies":{},"devDependencies":{"assertions":"~2.3.0","macgyver":"~1.6.3","tap":"0.3.0"},"scripts":{"test":"tap test"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","_id":"event-tree@0.1.0","description":"Hierachical Event Emitters, (rather like in the browser!)","dist":{"shasum":"7007faab0b692e2a8663b8c1afe918b5c8c94c4b","tarball":"http://registry.npmjs.org/event-tree/-/event-tree-0.1.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.2.0":{"name":"event-tree","version":"0.2.0","homepage":"https://github.com/dominictarr/event-tree","repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"dependencies":{},"devDependencies":{"assertions":"~2.3.0","macgyver":"~1.6.3","tap":"0.3.0"},"scripts":{"test":"tap test"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","_id":"event-tree@0.2.0","description":"Hierachical Event Emitters, (rather like in the browser!)","dist":{"shasum":"4dc4f28ed0d0ea9979b4db6ac588ab2ec9177222","tarball":"http://registry.npmjs.org/event-tree/-/event-tree-0.2.0.tgz"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"readme":"# event-tree\n\nHierachical Event Emitters, (rather like in the browser!)\n\n## Usage\n\nevents *should* be objects. \n\nIf you emit a non object: `et.emit('thing', 'a string')`\nIt will be wrapped in an object: `{message: 'a string', source: emitter...}`\nThis is different to node, but is necessary to keep track of source of an event.\n\n## simple\n\nEmit event on parent after emitting it one the child.\n\n``` js\n\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n console.log(event)\n})\n\nchild.emit('msg', {message: 'hello!'})\n\n```\n\noutput:\n\n```\n{event: 'msg', message: 'hello!', source: child, veto: function () {...}}\n```\n\n### Veto an event.\n\nif a listener calls veto on the event, it will note be emitted on the parent.\n\n``` js\nvar EventTree = require('event-tree')\n\nvar parent = new EventTree(parent)\nvar child = new EventTree()\n\n//or: parent.add(child)\n\nparent.on('msg', function (event) {\n throw new Error('This Must Not Happen')\n})\n\nchild.on('msg', function (event) {\n event.veto()\n})\n\nchild.emit('msg', {message: 'hello!'})\n```\n\n## License\n\nMIT\n","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-08-07T18:11:55.807Z","created":"2012-08-05T17:46:28.038Z","0.0.1":"2012-08-05T17:46:53.149Z","0.0.2":"2012-08-05T22:34:31.652Z","0.0.3":"2012-08-05T22:36:08.577Z","0.1.0":"2012-08-06T19:08:19.841Z","0.2.0":"2012-08-07T18:11:55.807Z"},"author":{"name":"'Dominic Tarr'","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/event-tree.git"},"_id":"event-tree","_rev":"1-c6ba1d323e2ab10630787ff85fcb9776"}ÿdocument-storeÿev•{"id":"ev","rev":"1-4c9124cbe84fe96fa140aa8ea333db16","rev_tree":[{"pos":1,"ids":["4c9124cbe84fe96fa140aa8ea333db16",{"status":"available"},[]]}],"rev_map":{"1-4c9124cbe84fe96fa140aa8ea333db16":3462},"winningRev":"1-4c9124cbe84fe96fa140aa8ea333db16","deleted":false,"seq":3462}ÿby-sequenceÿ0000000000003462Ô^{"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter","keywords":["event","emitter","listener"],"version":"0.0.1","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"sh+ßÂÝùasum":"1de9e0f5740eac7e45a30e67615a4ae81334e2bc","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.1.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.2":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.2","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"7023a2d70f059ea44a70d7d7bd744aeaff938b0d","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.2.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.3":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.3","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8caa1f8aa0d1c24b87fde09f1ffeddb7d395b6cf","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.3.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.4":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.4","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"542c0a0b9efd227a178ffe69374faf836008f4c9","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.4.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.5":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.5","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b0355cd990e72797c352e2645be7210a59556a56","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.5.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.6":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.6","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"_npmUser":{"name":"pierrec","email":"pierre.curto@gmail.com"},"_id":"ev@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"076bbc48e2c0201774bf9030c705b8aee609253a","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.6.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]},"0.0.7":{"author":{"name":"Pierre Curto"},"name":"ev","description":"Fast event emitter - compatible with node's EventEmitter but faster!","keywords":["event","emitter","listener"],"version":"0.0.7","homepage":"http://github.com/pierrec/node-ev","repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"main":"./lib/ev.js","bugs":{"url":"http://github.com/pierrec/node-ev/issues"},"licenses":[{"type":"MIT","url":"http://github.com/pierrec/node-ev/raw/master/LICENSE"}],"engines":{"node":">= 0.6"},"dependencies":{"fnutils":"latest"},"devDependencies":{"mocha":">= 0.10","bench":">= 0.3"},"scripts":{"test":"mocha test/*-test.js"},"readme":"# README\n\n## Synopsis\n\nThis is yet another event emitter implementation for [node.js](http://nodejs.org). It is fully compatible (as of version 0.0.5) with the nodejs' _EventEmitter_ API, with some additions (cf. the Differences section below). The main purpose of node-ev is to provide very fast event emission when dealing with a relatively low number of listeners: below 20 listeners, it is faster than EventEmitter, after that, both average out.\n\n## Differences with node's _EventEmitter_\n\n* New methods\n\t* `off(event[, listener])`: alias to `removeListener()`\n\t* `addEventListener(event, listener)`: alias to `addListener()`\n\t* `emit_myevent([ arg1... ])`: alias for `emit('myevent'[, arg1... ])`\n* New member\n\t* `ev_dedupListener`: does not add a listener if already defined for a given event\n\n\n## API\n\n```javascript\nvar EV = require('ev')\nvar ev = new EV({ match: 1 })\n\nfunction test (a) {\n\tconsole.log('received', a)\n}\n\nev.on('match', test)\nev.emit('match', 'standard emit') // received standard emit\nev.emit_match('shortcut emit!') // received shortcut emit!\n```\n\n\n### Constructor\n\n`EV(events, flag`\n* `events` (_Object_): events object listing the possible events to be emitted and their corresponding number of arguments. Note that EV *will* emit events even though they may not have been set by the constructor but performance will be affected in highly demanding situations.\n* `flag` (_Boolean_): indicates whether warnings should be triggered (default=true)\n\n\n```javascript\n{\n\tdata: 3\n,\tend: 1\n, drain: 0\n}\n```\n\nThere are 3 events defined by default:\n\n* `error(Error)`: if emitted while no listener attached to it, it will throw as per _EventEmitter_'s behavior\n* `newListener(event, listener)`: emitted when a listener is attached to an event\n* `oldListener(event, listener)`: emitted when a listener is removed from an event\n\n\n### Members\n\n* `version` (_String_): EV version\n* `ev_dedupListener` (_Boolean_): will not add a listener more than once to the same event if true\n\n\n### Methods\n\n* `on(event, listener)` (_String_, _Function_): add a listener for [event]\n* `once(event, listener)` (_String_, _Function_): add a listener for [event] and remove it once triggered\n* `off(event, listener)` (_String_, _Function_): remove the listener for [event]\n* `off(event)` (_String_): remove all listeners for [event]\n* `removeAllListeners(event)` (_String_): remove all listeners for [event]\n* `removeAllListeners()`: remove all listeners for all events\n* `emit(event[, arguments])` (_String_[, _Any_]): emit [event] with a list of arguments\n* `setMaxListeners(max)` (_Integer_): set the maximum number of listeners after which a warning is issued, but the listeners are still added\n* `listeners([event])` (_String_): get the list of listeners for [event] or all listeners for all events\n","_id":"ev@0.0.7","dist":{"shasum":"a46b4c0f78c9dc854977b2452f99abc708fba6c8","tarball":"http://registry.npmjs.org/ev/-/ev-0.0.7.tgz"},"maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}]}},"readme":"# README\n\n## Synopsis\n\nThis is yet another event emitter implementation for [node.js](http://nodejs.org). It is nearly fully compatible with the node EventEmitter API (see the differences section). The main purpose for node-ev is to provide very fast event emission when dealing with a relatively low number of listeners. Run the provided benchmarks to see if this is for you.\n\n## Differences with node's EventEmitter\n\n* New methods\n\t* `.off(event[, listener])`: alias to `removeListener()`\n\t* `.emit_myevent()`: alias for `emit('myevent')`\n* Listeners are triggered without any context whereas EventEmitter applies the emitter's\n\n## API\n\n```javascript\nvar EV = require('ev')\nvar ev = new EV({ match: 2 })\nfunction test (a) {\n\tconsole.log('received', a)\n}\nev.on('match', test)\nev.emit('match', 'standard emit') // received standard emit\nev.emit_match('shortcut emit!') // received shortcut emit!\n```\n\n### Methods\n\n* `on(event, listener)`: add a listener for [event]\n* `once(event, listener)`: add a listener for [event] and remove it once triggered\n* `off(event, listener)`: remove the listener for [event]\n* `off(event)`: remove all listeners for [event]\n* `removeAllListeners(event)`: remove all listeners for [event]\n* `removeAllListeners()`: remove all listeners for all events\n* `emit(event[, arguments])`: emit [event] with a list of arguments\n* `setMaxListeners(max)`: set the maximum number of listeners after which a warning is issued, but the listeners are still added\n* `listeners([event])`: get the list of listeners for [event] or all listeners for all events\n","maintainers":[{"name":"pierrec","email":"pierre.curto@gmail.com"}],"time":{"modified":"2012-06-25T17:41:26.193Z","created":"2012-02-09T19:39:42.122Z","0.0.1":"2012-02-09T19:39:46.722Z","0.0.2":"2012-02-10T17:16:18.416Z","0.0.3":"2012-02-11T16:34:46.529Z","0.0.4":"2012-02-26T16:23:17.777Z","0.0.5":"2012-03-07T07:43:09.279Z","0.0.6":"2012-03-09T15:42:15.621Z","0.0.7":"2012-06-25T17:41:26.193Z"},"author":{"name":"Pierre Curto"},"repository":{"type":"git","url":"git://github.com/pierrec/node-ev.git"},"_id":"ev","_rev":"1-4c9124cbe84fe96fa140aa8ea333db16"}ÿdocument-storeÿescapes.js{"id":"escapes.js","rev":"1-7257471636f5ba9cd779264552f293f3","rev_tree":[{"pos":1,"ids":["7257471636f5ba9cd779264552f293f3",{"status":"available"},[]]}],"rev_map":{"1-7257471636f5ba9cd779264552f293f3":3461},"winningRev":"1-7257471636f5ba9cd779264552f293f3","deleted":false,"seq":3461}ÿby-sequenceÿ0000000000003461Ä {"name":"escapes.js","description":"nodejs version of escapes.js to write ansii art png files","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"escapes.js","description":"nodejs version of escapes.js to write ansii art png files","version":"0.0.1","url":"http://sixteencolors.net","author":{"name":"pancake","email":"pancake@nopcode.org"},"dependencies":{"jquery":"1.7","canvas":"0.12"},"keywords":["art","ansi","ascii","render"],"_npmUser":{"name":"pancake","email":"pancake@nopcode.org"},"_id":"escapes.js@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"34e573815c6d88ac7c385e86c9ba811f2a63b217","tarball":"http://registry.npmjs.org/escapes.js/-/escapes.js-0.0.1.tgz"},"readme":"","maintainers":[{"name":"pancake","email":"pancake@nopcode.org"}]}},"readme":"","maintainers":[{"name":"pancake","email":"pancake@nopcode.org"}],"time":{"modified":"2012-06-05T08:48:26.435Z","created":"2012-06-05T08:48:22.190Z","0.0.1":"2012-06-05T08:48:26.435Z"},"author":{"name":"pancake","email":"pancake@nopcode.org"},"_id":"escapes.js","_rev":"1-7257471636f5ba9cd779264552f293f3"}ÿdocument-storeÿeqmon˜{"id":"eqmon","rev":"1-480cfa8af87fcea2dfaf26186351c5d0","rev_tree":[{"pos":1,"ids":["480cfa8af87fcea2dfaf26186351c5d0",{"status":"available"},[]]}],"rev_map":{"1-480cfa8af87fcea2dfaf26186351c5d0":3460},"winningRev":"1-480cfa8af87fcea2dfaf26186351c5d0","deleted":false,"seq":3460}ÿby-sequenceÿ0000000000003460ž{"name":"eqmon","description":"a earthquake monitoring web app","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"eqmon","preferGlobal":"true","version":"0.0.1","author":{"name":"skylamer"},"description":"a earthquake monitoring web app","contributors":[{"name":"Mikhail Dimitrov","email":"cgskylamer@gmail.com"}],"scripts":{"start":"node ./server.js"},"main":"./server.js","repository":{"type":"git","url":"git://github.com/skylamer/eqs.git"},"dependencies":{"mime":"*"},"engine":{"node":">= 0.6"},"_npmUser":{"name":"skylamer","email":"cgskylamer@gmail.com"},"_id":"eqmon@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.7.9","_defaultsLoaded":true,"dist":{"shasum":"85061633cbe56a9a9cd9bfa66e76fb229a43d99e","tarball":"http://registry.npmjs.org/eqmon/-/eqmon-0.0.1.tgz"},"maintainers":[{"name":"skylamer","email":"cgskylamer@gmail.com"}]}},"readme":"eqs\r\n===\r\n![EQMON Default View](https://github.com/skylamer/eqs/raw/master/images/screen_defaultview.png)\r\n\r\n![EQMON Tab View](https://github.com/skylamer/eqs/raw/master/images/screen_tabview.png)\r\n\r\n\r\nA web application which monitors a few data of some websites for earthquakes info\r\n\r\nhave search, and view with tabs and default\r\n\r\n\r\n### To:\r\n * make search more efficient\r\n * do a little design changes\r\n * realtime notifications\r\n * bookmarklet\r\n * can add a custom sources\r\n","maintainers":[{"name":"skylamer","email":"cgskylamer@gmail.com"}],"time":{"modified":"2012-06-05T12:51:51.096Z","created":"2012-06-05T12:51:48.667Z","0.0.1":"2012-06-05T12:51:51.096Z"},"author":{"name":"skylamer"},"repository":{"type":"git","url":"git://github.com/skylamer/eqs.git"},"_id":"eqmon","_rev":"1-480cfa8af87fcea2dfaf26186351c5d0"} ÿdocument-storeÿender-deferred¡{"id":"ender-deferred","rev":"1-72c78d71ecdaf4ab1a392432dfdd5d0e","rev_tree":[{"pos":1,"ids":["72c78d71ecdaf4ab1a392432dfdd5d0e",{"status":"available"},[]]}],"rev_map":{"1-72c78d71ecdaf4ab1a392432dfdd5d0e":3459},"winningRev":"1-72c78d71ecdaf4ab1a392432dfdd5d0e","deleted":false,"seq":3459}ÿby-sequenceÿ0000000000003459®{"name":"ender-deferred","description":"A simple Deferred engine for Ender","dist-tags":{"latest":"0.2.6"},"versions":{"0.2.6":{"author":{"name":"download13"},"name":"ender-deferred","description":"A simple Deferred engine for Ender","version":"0.2.6","main":"./deferred.js","_npmUser":{"name":"download","email":"download333@gmail.com"},"_id":"ender-deferred@0.2.6","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a6a9bf92b198f168217765350d775632bcea952b","tarball":"http://registry.npmjs.org/ender-deferred/-/ender-deferred-0.2.6.tgz"},"readme":"","maintainers":[{"name":"download","email":"download333@gmail.com"}]}},"readme":"","maintainers":[{"name":"download","email":"download333@gmail.com"}],"time":{"modified":"2012-05-17T20:27:23.031Z","created":"2012-05-17T20:27:20.678Z","0.2.6":"2012-05-17T20:27:23.031Z"},"author":{"name":"download13"},"_id":"ender-deferred","_rev":"1-72c78d71ecdaf4ab1a392432dfdd5d0e"}"ÿdocument-storeÿeccies-sequelize£{"id":"eccies-sequelize","rev":"1-cbd7e9b90eef9d850abd6b6e13662557","rev_tree":[{"pos":1,"ids":["cbd7e9b90eef9d850abd6b6e13662557",{"status":"available"},[]]}],"rev_map":{"1-cbd7e9b90eef9d850abd6b6e13662557":3458},"winningRev":"1-cbd7e9b90eef9d850abd6b6e13662557","deleted":false,"seq":3458}ÿby-sequenceÿ0000000000003458ò'{"name":"eccies-sequelize","description":"a Sequelize.js strategy for eccies.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"nicholasf"},"name":"eccies-sequelize","description":"a Sequelize.js strategy for eccies.js","version":"0.0.1","main":"lib/eccies-sequelize.js","repository":{"type":"git","url":"git://github.com/nicholasf/ectypes-sequelize.js.git"},"dependencies":{"sequelize":"~1.5.0","ectypes":"0.0.1","lingo":"0.0.5"},"devDependencies":{"Faker":"*","mocha":"~1.3.2","should":"~1.1.0","async":"~0.1.22"},"optionalDependencies":{},"engines":{"node":"*"},"readme":"# ectypes-sequelize\n\nA ectypes strategy for Sequelize.js - http://www.sequelizejs.com/. \n\nEctypes can be found at http://github.com/nicholasf/ectypes.js\n\n\n## Installation\n\n```\nnpm install ectypes-sequelize\n```\n\n## Explanation\n\nCalls to build() and create() on a Sequelize model are supported.\n\nFirst, create the Sequelize connection and configure it on the ectypes-sequelize strategy. Then load the strategy into ectypes.\n\n```\nvar ectypes = require('ectypes');\nvar sequelize = new Sequelize('ectypes_test', 'nicholas', null);\nvar ectypesSequelize = require('ectypes-sequelize').setup(sequelize);\n\nectypes.load(ectypesSequelize);\n```\n\n\nOnce you have defined a ectype for your model:\n\n```\n//the Sequelize model definition\nvar Project = sequelize.define('Project', {\n title: Sequelize.STRING,\n description: Sequelize.TEXT\n});\n\n//the ectype for the Project model\nvar projectType = {\n\tProject: {\n\t\ttitle: function(){ return Faker.Name.findName() }\n\t}\n};\n\nectypes.add(projectType);\n```\n\nYou may then call build() or create() upon it through ectypes to produce the object.\n\n```\nectypes.Project.create().success(function(project){\n\tconsole.log(project.id, project.title); //this logs something like 6 'Autumn Medhurst' (using Faker)\n});\n\n```\n\nUse hooks to model associations.\n\n```\n\tectypes.plan(\n\t\t{\n\t\t\tProject: {\n\t\t\t\ttitle: function(){ return Faker.Name.findName() },\n\t\t\t\tdescription: function(){ return Faker.Lorem.findSentences() },\n\t\t\t\t_hooks: [ 'add a task to a project', function(project, functionName){\n\t\t\t\t\tif (functionName === 'create'){\t\t\t\t\n\t\t\t\t\t\tTask.create().success(function(task){\n\t\t\t\t\t\t\tproject.task = task;\n\t\t\t\t\t\t\tproject.save();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\n\tproject = ectypes.Project.build();\n\n```\n\n## Running Tests\n\n```\nmocha tests/ectypes-test.js \n```\n \t","_id":"eccies-sequelize@0.0.1","dist":{"shasum":"0b3ca97d1b51b8087e8b93d1aa7e49ee233e9be9","tarball":"http://registry.npmjs.org/eccies-sequelize/-/eccies-sequelize-0.0.1.tgz"},"maintainers":[{"name":"nicholasf","email":"nicholas.faiz@gmail.com"}]}},"readme":"# ectypes-sequelize\n\nA ectypes strategy for Sequelize.js - http://www.sequelizejs.com/. \n\nEctypes can be found at http://github.com/nicholasf/ectypes.js\n\n\n## Installation\n\n```\nnpm install ectypes-sequelize\n```\n\n## Explanation\n\nCalls to build() and create() on a Sequelize model are supported.\n\nFirst, create the Sequelize connection and configure it on the ectypes-sequelize strategy. Then load the strategy into ectypes.\n\n```\nvar ectypes = require('ectypes');\nvar sequelize = new Sequelize('ectypes_test', 'nicholas', null);\nvar ectypesSequelize = require('ectypes-sequelize').setup(sequelize);\n\nectypes.load(ectypesSequelize);\n```\n\n\nOnce you have defined a ectype for your model:\n\n```\n//the Sequelize model definition\nvar Project = sequelize.define('Project', {\n title: Sequelize.STRING,\n description: Sequelize.TEXT\n});\n\n//the ectype for the Project model\nvar projectType = {\n\tProject: {\n\t\ttitle: function(){ return Faker.Name.findName() }\n\t}\n};\n\nectypes.add(projectType);\n```\n\nYou may then call build() or create() upon it through ectypes to produce the object.\n\n```\nectypes.Project.create().success(function(project){\n\tconsole.log(project.id, project.title); //this logs something like 6 'Autumn Medhurst' (using Faker)\n});\n\n```\n\nUse hooks to model associations.\n\n```\n\tectypes.plan(\n\t\t{\n\t\t\tProject: {\n\t\t\t\ttitle: function(){ return Faker.Name.findName() },\n\t\t\t\tdescription: function(){ return Faker.Lorem.findSentences() },\n\t\t\t\t_hooks: [ 'add a task to a project', function(project, functionName){\n\t\t\t\t\tif (functionName === 'create'){\t\t\t\t\n\t\t\t\t\t\tTask.create().success(function(task){\n\t\t\t\t\t\t\tproject.task = task;\n\t\t\t\t\t\t\tproject.save();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\n\tproject = ectypes.Project.build();\n\n```\n\n## Running Tests\n\n```\nmocha tests/ectypes-test.js \n```\n \t","maintainers":[{"name":"nicholasf","email":"nicholas.faiz@gmail.com"}],"time":{"modified":"2012-08-18T12:53:00.800Z","created":"2012-08-18T12:52:55.091Z","0.0.1":"2012-08-18T12:53:00.800Z"},"author":{"name":"nicholasf"},"repository":{"type":"git","url":"git://github.com/nicholasf/ectypes-sequelize.js.git"},"_id":"eccies-sequelize","_rev":"1-cbd7e9b90eef9d850abd6b6e13662557"}ÿdocument-storeÿeasycliš{"id":"easycli","rev":"1-c8f264cc2c8ffdbb8d955365f648a5e7","rev_tree":[{"pos":1,"ids":["c8f264cc2c8ffdbb8d955365f648a5e7",{"status":"available"},[]]}],"rev_map":{"1-c8f264cc2c8ffdbb8d955365f648a5e7":3457},"winningRev":"1-c8f264cc2c8ffdbb8d955365f648a5e7","deleted":false,"seq":3457}ÿby-sequenceÿ0000000000003457ñ{"name":"easycli","description":"Framework for building command line utilities with Node.js","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"easycli","description":"Framework for building command line utilities with Node.js","version":"0.0.1","homepage":"http://github.com/jheusala/node-easycli","repository":{"type":"git","url":"git://github.com/jheusala/node-easycli.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/easycli.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"optimist":"*","wordwrap":"*","snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"easycli@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"db9d04c7d373abfb2e4f369b66eca6a39043f769","tarball":"http://registry.npmjs.org/easycli/-/easycli-0.0.1.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]},"0.0.2":{"name":"easycli","description":"Framework for building command line utilities with Node.js","version":"0.0.2","homepage":"http://github.com/jheusala/node-easycli","repository":{"type":"git","url":"git://github.com/jheusala/node-easycli.git"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"main":"lib/easycli.js","directories":{"lib":"lib"},"engines":{"node":"*"},"dependencies":{"optimist":"*","wordwrap":"*","snippets":"*"},"devDependencies":{},"_npmUser":{"name":"jhh","email":"jhh@sendanor.com"},"_id":"easycli@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"328fb3b71b1de6c5c00e3c35190abb83b81aa994","tarball":"http://registry.npmjs.org/easycli/-/easycli-0.0.2.tgz"},"maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}]}},"readme":"node-easycli\n========\n\nFramework for building command line utilities with Node.js\n\nLicense\n-------\n\nMIT-style license, see [INSTALL.txt](http://github.com/jheusala/js-snippets/blob/master/LICENSE.txt).\n\nUsage\n-----\n\nPlease note that this library is still under heavy development and might get \nmajor changes frequently.\n\nYou can check example usage from \n[node-joker-cli](https://github.com/jheusala/node-joker-cli).\n","maintainers":[{"name":"jhh","email":"jhh@sendanor.com"}],"time":{"modified":"2012-05-18T01:21:54.865Z","created":"2012-05-17T22:42:28.435Z","0.0.1":"2012-05-17T22:42:30.618Z","0.0.2":"2012-05-18T01:21:54.865Z"},"author":{"name":"Jaakko-Heikki Heusala","email":"jheusala@iki.fi","url":"http://www.jhh.me"},"repository":{"type":"git","url":"git://github.com/jheusala/node-easycli.git"},"_id":"easycli","_rev":"1-c8f264cc2c8ffdbb8d955365f648a5e7"}!ÿdocument-storeÿdust-formspring¢{"id":"dust-formspring","rev":"1-12f886890392e72d816b000fd893feda","rev_tree":[{"pos":1,"ids":["12f886890392e72d816b000fd893feda",{"status":"available"},[]]}],"rev_map":{"1-12f886890392e72d816b000fd893feda":3456},"winningRev":"1-12f886890392e72d816b000fd893feda","deleted":false,"seq":3456}ÿby-sequenceÿ0000000000003456­{"name":"dust-formspring","description":"Asynchronous templates for the browser and node.js","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"dust-formspring","version":"0.3.0","description":"Asynchronous templates for the browser and node.js","author":{"name":"Aleksander Williams"},"contributors":[],"url":"http://akdubya.github.com/dustjs/","keywords":["templates","views"],"main":"./lib/dust","scripts":{"test":"make test"},"_npmUser":{"name":"sandosh","email":"sandosh@gmail.com"},"_id":"dust-formspring@0.3.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"53db1c4579b1541aa5657b8f59c900daae3e1990","tarball":"http://registry.npmjs.org/dust-formspring/-/dust-formspring-0.3.0.tgz"},"maintainers":[{"name":"sandosh","email":"sandosh@gmail.com"}]}},"readme":"Dust\n====\n\n> Asynchronous templates for the browser and node.js\n\n#### #\n\nWhy?\n----\n\nI like [Mustache](http://mustache.github.com) and variants but none of them offers quite what I need.\n\nUse Dust if you want these things:\n\n* async/streaming operation\n* browser/node compatibility\n* extended Mustache/ctemplate syntax\n* clean, low-level API\n* [high performance](http://akdubya.github.com/dustjs/benchmark/index.html)\n* composable templates\n\nComposable templates?\n---------------------\n\n {^xhr}\n {>base_template/}\n {:else}\n {+main/}\n {/xhr}\n {\n\nDemo & Guide\n------------\n\nExtensive docs and a full demo are available at ","maintainers":[{"name":"sandosh","email":"sandosh@gmail.com"}],"time":{"modified":"2012-03-22T18:58:05.485Z","created":"2012-03-22T18:58:04.113Z","0.3.0":"2012-03-22T18:58:05.485Z"},"author":{"name":"Aleksander Williams"},"_id":"dust-formspring","_rev":"1-12f886890392e72d816b000fd893feda"}$ÿdocument-storeÿdripps-express-mvc¥{"id":"dripps-express-mvc","rev":"1-3f2ac0f27391a049b5ff7bd69f97db44","rev_tree":[{"pos":1,"ids":["3f2ac0f27391a049b5ff7bd69f97db44",{"status":"available"},[]]}],"rev_map":{"1-3f2ac0f27391a049b5ff7bd69f97db44":3455},"winningRev":"1-3f2ac0f27391a049b5ff7bd69f97db44","deleted":false,"seq":3455}ÿby-sequenceÿ0000000000003455ª4{"name":"dripps-express-mvc","description":"yet another approach to MVC in Express/Connect","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.1":{"author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"name":"dripps-express-mvc","description":"yet another approach to MVC in Express/Connect","version":"0.0.1","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.0.1","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"d5a66b2f08ae38dfdeb0db845df08e3707941969","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.0.1.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.1.1":{"author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"name":"dripps-express-mvc","description":"yet another approach to MVC in Express/Connect","version":"0.1.1","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.1.1","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"345c7cc65f330c26743da803a0933ea371449110","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.1.1.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.1.2":{"author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"name":"dripps-express-mvc","description":"yet another approach to MVC in Express/Connect","version":"0.1.2","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.1.2","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"a6671825c8ac7ff2f8432afbe05dbaccfdc11380","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.1.2.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.2.1":{"name":"dripps-express-mvc","author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"description":"yet another approach to MVC in Express/Connect","version":"0.2.1","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.2.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.5","_defaultsLoaded":true,"dist":{"shasum":"f9e4172ed9aa9271976c77c65744d71abe9cc532","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.2.1.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.3.1":{"name":"dripps-express-mvc","author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"description":"yet another approach to MVC in Express/Connect","version":"0.3.1","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.3.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.5","_defaultsLoaded":true,"dist":{"shasum":"12b722f1c236929ea34a93547b194cbb607c9188","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.3.1.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.3.2":{"name":"dripps-express-mvc","author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"description":"yet another approach to MVC in Express/Connect","version":"0.3.2","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-XÚùexpress-mvc@0.3.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.5","_defaultsLoaded":true,"dist":{"shasum":"1902801a4f8db8c0696de98ea2d73de48fbf4999","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.3.2.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]},"0.4.1":{"name":"dripps-express-mvc","author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"description":"yet another approach to MVC in Express/Connect","version":"0.4.1","repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"main":"index.js","scripts":{"test":"make test"},"engines":{"node":">=0.4.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"daviddripps","email":"david.dripps@gmail.com"},"_id":"dripps-express-mvc@0.4.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.5","_defaultsLoaded":true,"dist":{"shasum":"cf87bb082f98235872a59ca9cf05a95122fc4089","tarball":"http://registry.npmjs.org/dripps-express-mvc/-/dripps-express-mvc-0.4.1.tgz"},"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}]}},"readme":null,"maintainers":[{"name":"daviddripps","email":"david.dripps@gmail.com"}],"time":{"modified":"2012-06-12T16:29:33.708Z","created":"2012-01-07T22:55:54.063Z","0.0.1":"2012-01-07T22:55:54.281Z","0.1.1":"2012-01-07T23:40:35.848Z","0.1.2":"2012-01-08T00:05:26.125Z","0.2.1":"2012-02-24T03:12:17.269Z","0.3.1":"2012-02-24T17:43:10.357Z","0.3.2":"2012-04-10T18:12:17.004Z","0.4.1":"2012-06-12T16:29:33.708Z"},"author":{"name":"David Dripps","email":"david.dripps@gmail.com","url":"http://www.daviddripps.com"},"repository":{"type":"git","url":"git://github.com/daviddripps/dripps-express-mvc.git"},"_id":"dripps-express-mvc","_rev":"1-3f2ac0f27391a049b5ff7bd69f97db44"}ÿdocument-storeÿdivan˜{"id":"divan","rev":"1-69b29d44ec245b00b83c722ddcdc0105","rev_tree":[{"pos":1,"ids":["69b29d44ec245b00b83c722ddcdc0105",{"status":"available"},[]]}],"rev_map":{"1-69b29d44ec245b00b83c722ddcdc0105":3454},"winningRev":"1-69b29d44ec245b00b83c722ddcdc0105","deleted":false,"seq":3454}ÿby-sequenceÿ0000000000003454·5{"name":"divan","description":"persistant key-value store for node with CouchDB-style views","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"divan","version":"0.0.1","description":"persistant key-value store for node with CouchDB-style views","keywords":["db","data","key","value","store","map","reduce","views","couch"],"author":{"name":"Hristo Dachev","email":"tutini@gmail.com"},"main":"./index.js","bugs":{"email":"tutini@gmail.com","url":"http://github.com/hdachev/divan/issues"},"repository":{"type":"git","url":"git://github.com/hdachev/divan.git"},"devDependencies":{"vows":"0.6.x","fakeredis":"0.0.x","should":"0.6.x"},"_npmUser":{"name":"hdachev","email":"tutini@gmail.com"},"_id":"divan@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"56af57088b50f3850512e82c96c8876363b4b468","tarball":"http://registry.npmjs.org/divan/-/divan-0.0.1.tgz"},"maintainers":[{"name":"hdachev","email":"tutini@gmail.com"}]},"0.0.2":{"name":"divan","version":"0.0.2","description":"persistant key-value store for node with CouchDB-style views","keywords":["db","data","key","value","store","map","reduce","views","couch"],"author":{"name":"Hristo Dachev","email":"tutini@gmail.com"},"main":"./index.js","bugs":{"email":"tutini@gmail.com","url":"http://github.com/hdachev/divan/issues"},"repository":{"type":"git","url":"git://github.com/hdachev/divan.git"},"devDependencies":{"vows":"0.6.x","fakeredis":"0.0.x","should":"0.6.x"},"_npmUser":{"name":"hdachev","email":"tutini@gmail.com"},"_id":"divan@0.0.2","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b62d2ef9dfc54f7ddcce5b81229fe458a84c26ec","tarball":"http://registry.npmjs.org/divan/-/divan-0.0.2.tgz"},"maintainers":[{"name":"hdachev","email":"tutini@gmail.com"}]},"0.0.3":{"name":"divan","version":"0.0.3","description":"persistant key-value store for node with CouchDB-style views","keywords":["db","data","key","value","store","map","reduce","views","couch"],"author":{"name":"Hristo Dachev","email":"tutini@gmail.com"},"main":"./index.js","bugs":{"email":"tutini@gmail.com","url":"http://github.com/hdachev/divan/issues"},"repository":{"type":"git","url":"git://github.com/hdachev/divan.git"},"devDependencies":{"vows":"0.6.x","fakeredis":"0.0.x","should":"0.6.x"},"_npmUser":{"name":"hdachev","email":"tutini@gmail.com"},"_id":"divan@0.0.3","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b347e05bc32ddf5a6ed9e5da8e5a06afc6b192cd","tarball":"http://registry.npmjs.org/divan/-/divan-0.0.3.tgz"},"maintainers":[{"name":"hdachev","email":"tutini@gmail.com"}]}},"readme":"\n\nFast **in-process**\n**in-memory** key-value store for node\nwith **snapshot and AOF persistance**\nand **CouchDB-style map-reduce views**.\nJust make sure your data fits in memory,\ncurrently I wouldn't recommend divan\nfor a dataset with more than 500K docs.\n\n\n### why? because!\n\n- some tasks and workloads just don't deserve their own Couch but can benefit from a similar data-model.\n- not a Couch - which among other things means it doesn't do MVCC, so delete and update as much as you want.\n- super fast - when fully warmed up serves thousands of queries per second, and there's no network latency.\n\n\n### usage\n\n npm install divan\n\n**index.js**\n\n```javascript\n\n// Make a divan with local compacted append-only and snapshot files,\n// namespace works in the same way it does for `dirty`:\n\nvar divan = require ( 'divan' ),\n db = divan.cwd ( 'friends' );\n\n// Save some docs, generating your own id-s:\n\ndb.save ({ _id : 'don1', type : 'person', name : 'Don', gender : 'male' });\ndb.save ({ _id : 'samantha', type : 'person', name : 'Sam', gender : 'female' });\ndb.save ({ _id : 'i.v.a.n', type : 'person', name : 'Ivan', gender : 'male' });\n\n// These will be flushed to the AOF and then later compacted as a db snapshot.\n\n// Now register a view:\n\ndb.addView\n(\n 'gender/count',\n divan.mr\n (\n function ( doc, emit )\n {\n if ( doc.type === 'person' )\n emit ( doc.gender, 1 );\n },\n function ( k, v )\n {\n var i, n = v.length, sum = 0;\n for ( i = 0; i < n; i ++ ) sum += v [ i ];\n return sum;\n }\n )\n);\n\n// Query the view:\n\ndb.view ( 'gender/count', { group : true }, function ( err, data )\n{\n data.rows.forEach ( function ( row )\n {\n console.log ( row.key, row.value );\n });\n});\n\n// Outputs:\n// female 1\n// male 2\n\n```\n\nYou can add views via `db.addView`\nor by parsing a directory of\ndesign files via `db.design(path)`.\nThe design-files can either be\n.json files of couchdb-design-doc flavour,\nor .js files that export objects\nwith `map` and `reduce` methods.\nNote that when using .js docs,\n`map` functions need to accept\nthe `emit` function as the second parameter.\n\n\n### CouchDB view API coverage\n\nEverything but `group_level` and `include_docs`.\n\n\n### lazy views and reduce caching\n\nInstead of populating views immediately,\ndivan maps all documents for a view on first `.query()`.\nThis means that you can have as many designs as you want,\nif you only use a few the rest won't eat up memory.\n\nAlso, reduce results are only computed and cached\nfor the ranges of a view that you actually access.\nOnce warmed up, the caches are invalidated and rebuilt\nvery quickly on writes and deletes,\nbecause divan caches intermediate reduce results.\n\nBrief, if you want to **fully warm up a reduce view**,\nquery it with `group=true` or `group=false`\n(depending on whether you'll ever use ungrouped results),\nwithout specifying a key-range.\n\n\n### what else\n\n- You can iterate your entire db with `db.forEach(func)`\n- If you look at the sources, you'll see that there's an option to have your snapshots on Amazon S3.\n- By using `db.addView(\"view-name\", [\"source-view\", \"other-source-view\"], viewObj)` you can perform chained map/reduce, although its not optimized and is really slow right now.\n\n\n### license\n\nMIT\n\n","maintainers":[{"name":"hdachev","email":"tutini@gmail.com"}],"time":{"modified":"2012-06-18T20:19:31.425Z","created":"2012-06-11T12:20:19.043Z","0.0.1":"2012-06-11T12:20:22.103Z","0.0.2":"2012-06-11T16:16:53.490Z","0.0.3":"2012-06-18T20:19:31.425Z"},"author":{"name":"Hristo Dachev","email":"tutini@gmail.com"},"repository":{"type":"git","url":"git://github.com/hdachev/divan.git"},"_id":"divan","_rev":"1-69b29d44ec245b00b83c722ddcdc0105"}#ÿdocument-storeÿdirector-explorer¤{"id":"director-explorer","rev":"1-d5d002bf6d483141f5fc1bf5aee98090","rev_tree":[{"pos":1,"ids":["d5d002bf6d483141f5fc1bf5aee98090",{"status":"available"},[]]}],"rev_map":{"1-d5d002bf6d483141f5fc1bf5aee98090":3453},"winningRev":"1-d5d002bf6d483141f5fc1bf5aee98090","deleted":false,"seq":3453}ÿby-sequenceÿ0000000000003453ý#{"name":"director-explorer","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"director-explorer","author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"maintainers":[{"name":"marak","email":"marak.squires@gmail.com"}],"version":"0.0.1","repository":{"type":"git","url":"git://github.com/Marak/director-explorer.git"},"main":"./lib/director-explorer","dependencies":{"director":"1.0.10","traverse":"0.6.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"marak","email":"marak.squires@gmail.com"},"_id":"director-explorer@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"45467a71bf18b7d8df5a1f55452141dcd3dea5c0","tarball":"http://registry.npmjs.org/director-explorer/-/director-explorer-0.0.1.tgz"}},"0.2.0":{"name":"director-explorer","author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"maintainers":[{"name":"marak","email":"marak.squires@gmail.com"}],"version":"0.2.0","repository":{"type":"git","url":"git://github.com/Marak/director-explorer.git"},"main":"./lib/director-explorer","dependencies":{"director":"1.1.x","traverse":"0.6.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"readme":"# director-explorer\n\nHTML explorer interface for Director routers.\n\n# Features\n\n - Can currently output a plain-text view of a `Director.Router` instance\n\n\n# See Also:\n\n - [director-reflector](http://github.com/flatiron/director-reflector)\n - [restful](http://github.com/flatiron/restful)\n\n# Installation\n\n npm install director-explorer\n\n# Usage\n\n``` js\nvar de = require('director-explorer'),\n director = require('director');\n\nvar router = new director.http.Router();\n\n// simple noop for demo\nvar n = function(){};\n\nrouter.get('/', n);\n\nrouter.path('/users/:id', function(){\n this.post(n); \n this.get(n); \n this.delete(n); \n this.put(n); \n this.path('/dongles', function(){\n this.get(n);\n this.post(n);\n })\n})\n\nconsole.log(de.table(router));\n\n/* \n\n OUTPUTS:\n\n GET / \n POST /users/([._a-zA-Z0-9-]+) \n GET /users/([._a-zA-Z0-9-]+) \n DELETE /users/([._a-zA-Z0-9-]+) \n PUT /users/([._a-zA-Z0-9-]+) \n GET /users/([._a-zA-Z0-9-]+)/dongles \n POST /users/([._a-zA-Z0-9-]+)/dongles \n\n*/\n\n```\n\n# TODO\n\n - Add HTML view with collapsable menus\n - Add WSDL view\n","_id":"director-explorer@0.2.0","description":"HTML explorer interface for Director routers.","dist":{"shasum":"d81d4faeda2925a3ead5de15374c74b9bed28c39","tarball":"http://registry.npmjs.org/director-explorer/-/director-explorer-0.2.0.tgz"}}},"readme":"# director-explorer\n\nTools for exploring Director routers.\n\n# Features\n\n - Can currently output a plain-text view of a `Director.Router` instance\n\n# Installation\n\n npm install director-explorer\n\n# Usage\n\n``` js\nvar de = require('director-explorer'),\n director = require('director');\n\nvar router = new director.http.Router();\n\n// simple noop for demo\nvar n = function(){};\n\nrouter.get('/', n);\n\nrouter.path('/users/:id', function(){\n this.post(n); \n this.get(n); \n this.delete(n); \n this.put(n); \n this.path('/dongles', function(){\n this.get(n);\n this.post(n);\n })\n})\n\nconsole.log(de.table(router));\n\n/* \n\n OUTPUTS:\n\n GET / \n POST /users/([._a-zA-Z0-9-]+) \n GET /users/([._a-zA-Z0-9-]+) \n DELETE /users/([._a-zA-Z0-9-]+) \n PUT /users/([._a-zA-Z0-9-]+) \n GET /users/([._a-zA-Z0-9-]+)/dongles \n POST /users/([._a-zA-Z0-9-]+)/dongles \n\n*/\n\n```\n\n# TODO\n\n - Add HTML view with collapsable menus\n - Add WSDL view\n - Create director-client project for auto-generated director clients\n - Create html demo forms and auto-documentation for director routers\n","maintainers":[{"name":"marak","email":"marak.squires@gmail.com"}],"time":{"modified":"2012-08-19T05:08:06.007Z","created":"2012-05-30T23:31:42.273Z","0.0.1":"2012-05-30T23:31:43.786Z","0.2.0":"2012-08-19T05:08:06.007Z"},"author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"repository":{"type":"git","url":"git://github.com/Marak/director-explorer.git"},"description":"HTML explorer interface for Director routers.","_id":"director-explorer","_rev":"1-d5d002bf6d483141f5fc1bf5aee98090"}(ÿdocument-storeÿdifio-openshift-nodejs©{"id":"difio-openshift-nodejs","rev":"1-7a6997a723fc0a4adb03bda78a3e9091","rev_tree":[{"pos":1,"ids":["7a6997a723fc0a4adb03bda78a3e9091",{"status":"available"},[]]}],"rev_map":{"1-7a6997a723fc0a4adb03bda78a3e9091":3452},"winningRev":"1-7a6997a723fc0a4adb03bda78a3e9091","deleted":false,"seq":3452}ÿby-sequenceÿ0000000000003452©{"name":"difio-openshift-nodejs","description":"Difio registration agent for OpenShift / Node.js applications","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"difio-openshift-nodejs","description":"Difio registration agent for OpenShift / Node.js applications","version":"2.0.0","homepage":"https://github.com/difio/difio-openshift-nodejs","author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/difio/difio-openshift-nodejs.git"},"dependencies":{"common-nodejs-difio":""},"main":"difio-openshift.js","engines":{"node":"*"},"bin":{"difio-openshift":"./difio-openshift.js"},"_npmUser":{"name":"atodorov","email":"atodorov@otb.bg"},"_id":"difio-openshift-nodejs@2.0.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"946a10c8d767582bfaf4961799a4a13ee45541f4","tarball":"http://registry.npmjs.org/difio-openshift-nodejs/-/difio-openshift-nodejs-2.0.0.tgz"},"maintainers":[{"name":"atodorov","email":"atodorov@otb.bg"}]}},"readme":"Registration agent for Difio, preconfigured for OpenShift / Node.js\napplications.\n\nIt compiles a list of installed packages and sends it to http://www.dif.io\n\n\nInstalling on your OpenShift Node.js application\n----------------------------------------------\n\n- Create an account at http://www.dif.io\n\n- Create your Node.js application in OpenShift\n\n- Add a dependency to your application:\n\n echo difio-openshift-nodejs >> deplist.txt\n\n- If your application has a `package.json` file list the dependency there as well:\n\n ...\n \"dependencies\": {\n ...\n \"difio-openshift-nodejs\": \"\"\n },\n ...\n\n- Set your userID in the `./data/DIFIO_SETTINGS` file\n\n echo \"export DIFIO_USER_ID=YourUserID\" > ./data/DIFIO_SETTINGS\n\n- Enable the registration script in `.openshift/action_hooks/post_deploy`\n\n #!/bin/sh\n cd $OPENSHIFT_REPO_DIR\n source data/DIFIO_SETTINGS\n node_modules/.bin/difio-openshift\n\n- Commit and push your application to OpenShift\n\n git add . && git commit -m \"enable Difio registration\" && git push\n\n- If everything goes well you should see something like:\n\n remote: Running .openshift/action_hooks/post_deploy\n remote: Difio: Success, registered/updated application with uuid 25d23384-46a8-48ce-83b0-01f4fa4c5987\n\n- That's it, you can now check your application statistics at http://www.dif.io\n","maintainers":[{"name":"atodorov","email":"atodorov@otb.bg"}],"time":{"modified":"2012-07-10T16:53:25.665Z","created":"2012-07-10T16:53:23.594Z","2.0.0":"2012-07-10T16:53:25.665Z"},"author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/difio/difio-openshift-nodejs.git"},"_id":"difio-openshift-nodejs","_rev":"1-7a6997a723fc0a4adb03bda78a3e9091"}ÿdocument-storeÿdifflibš{"id":"difflib","rev":"1-1f89365fca44d388e209f170ab081f24","rev_tree":[{"pos":1,"ids":["1f89365fca44d388e209f170ab081f24",{"status":"available"},[]]}],"rev_map":{"1-1f89365fca44d388e209f170ab081f24":3451},"winningRev":"1-1f89365fca44d388e209f170ab081f24","deleted":false,"seq":3451}ÿby-sequenceÿ0000000000003451Ðß{"name":"difflib","description":"text diff library ported from Python's difflib module","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"difflib","version":"0.1.0","description":"","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"3f12135a8aa163e9f9abc42527b2098e60faaf65","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.1.0.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"directories":{}},"0.1.1":{"name":"difflib","version":"0.1.1","description":"text diff library","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.1.2"},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.1.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"5a9639f0a704104c508ee067d900410cfed14f62","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.1.1.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"directories":{}},"0.1.2":{"name":"difflib","version":"0.1.2","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.1.2"},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.1.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"eb45af0ddf14dcd2fb2fcf2f023eb894b14f40d7","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.1.2.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"directories":{}},"0.1.3":{"name":"difflib","version":"0.1.3","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.1.2"},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.1.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"56917ee5abcd4ee6bc07b209f5dd423b11b21512","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.1.3.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"directories":{}},"0.2.0":{"name":"difflib","version":"0.2.0","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.1.2"},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0","browserify":">= 1.10.4","uglify-js":">= 1.2.5"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.2.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"901c02b7eb9974b569b1176c20d35ca76f567bf5","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.2.0.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"directories":{}},"0.2.1":{"name":"difflib","version":"0.2.1","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.1.2"},"devDependencies":{"coffee-script":">= 1.2.0","mocha":">= 0.14.0","should":">= 0.6.0","browserify":">= 1.10.4","uglify-js":">= 1.2.5"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.2.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"344e5a18ab160221dea42f380c79d968139da73d","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.2.1.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}]},"0.2.3":{"name":"difflib","version":"0.2.3","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.2.0"},"devDependencies":{"coffee-script":">= 1.3.0","mocha":">= 0.14.0","should":">= 0.6.0","browserify":">= 1.10.4","uglify-js":">= 1.2.5"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.2.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"4980841db8f84549a6cd107169d36fce12e5e005","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.2.3.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}]},"0.2.4":{"name":"difflib","version":"0.2.4","description":"text diff library ported from Python's difflib module","homepage":"https://github.com/qiao/difflib.js","keywords":["diff"],"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"main":"./index.js","dependencies":{"heap":">= 0.2.0"},"devDependencies":{"coffee-script":">= 1.3.0","mocha":">= 1.0.1","should":">= 0.6.0","browserify":">= 1.10.4","uglify-js":">= 1.2.5"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"licenses":[{"type":"PSF","url":"http://docs.python.org/license.html"}],"_npmUser":{"name":"qiao","email":"xueqiaoxu@gmail.com"},"_id":"difflib@0.2.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b5e30361a6db023176d562892db85940a718f47e","tarball":"http://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz"},"maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}]}},"readme":"Difflib.js\n==========\n\nA JavaScript module which provides classes and functions for comparing sequences. It can be used for example, for comparing files, and can produce difference information in various formats, including context and unified diffs. Ported from Python's [difflib](http://docs.python.org/library/difflib.html) module.\n\nInstallation\n------------\n\nReleases are available for download from [GitHub](https://github.com/qiao/difflib.js). Alternatively, you can install using Node Package Manager (npm):\n\n```bash\nnpm install difflib\n```\n\nThen, in your script:\n\n```js\nvar difflib = require('difflib');\n```\n\nQuick Examples\n--------------\n\n1. contextDiff\n\n ```js\n >>> s1 = ['bacon\\n', 'eggs\\n', 'ham\\n', 'guido\\n']\n >>> s2 = ['python\\n', 'eggy\\n', 'hamster\\n', 'guido\\n']\n >>> difflib.contextDiff(s1, s2, {fromfile:'before.py', tofile:'after.py'})\n [ '*** before.py\\n',\n '--- after.py\\n',\n '***************\\n',\n '*** 1,4 ****\\n',\n '! bacon\\n',\n '! eggs\\n',\n '! ham\\n',\n ' guido\\n',\n '--- 1,4 ----\\n',\n '! python\\n',\n '! eggy\\n',\n '! hamster\\n',\n ' guido\\n' ]\n ```\n\n2. unifiedDiff\n\n ```js\n >>> difflib.unifiedDiff('one two three four'.split(' '),\n ... 'zero one tree four'.split(' '), {\n ... fromfile: 'Original'\n ... tofile: 'Current',\n ... fromfiledate: '2005-01-26 23:30:50',\n ... tofiledate: '2010-04-02 10:20:52',\n ... lineterm: ''\n ... })\n [ '--- Original\\t2005-01-26 23:30:50',\n '+++ Current\\t2010-04-02 10:20:52',\n '@@ -1,4 +1,4 @@',\n '+zero',\n ' one',\n '-two',\n '-three',\n '+tree',\n ' four' ]\n ```\n\n\n3. ndiff\n\n ```js\n >>> a = ['one\\n', 'two\\n', 'three\\n']\n >>> b = ['ore\\n', 'tree\\n', 'emu\\n']\n >>> difflib.ndiff(a, b)\n [ '- one\\n',\n '? ^\\n',\n '+ ore\\n',\n '? ^\\n',\n '- two\\n',\n '- three\\n',\n '? -\\n',\n '+ tree\\n',\n '+ emu\\n' ]\n ```\n\n4. ratio\n\n ```js\n >>> s = new difflib.SequenceMatcher(null, 'abcd', 'bcde');\n >>> s.ratio();\n 0.75\n >>> s.quickRatio();\n 0.75\n >>> s.realQuickRatio();\n 1.0\n ```\n\n5. getOpcodes\n\n ```js\n >>> s = new difflib.SequenceMatcher(null, 'qabxcd', 'abycdf');\n >>> s.getOpcodes();\n [ [ 'delete' , 0 , 1 , 0 , 0 ] ,\n [ 'equal' , 1 , 3 , 0 , 2 ] ,\n [ 'replace' , 3 , 4 , 2 , 3 ] ,\n [ 'equal' , 4 , 6 , 3 , 5 ] ,\n [ 'insert' , 6 , 6 , 5 , 6 ] ]\n ```\n\n6. getCloseMatches\n\n ```js\n >>> difflib.getCloseMatches('appel', ['ape', 'apple', 'peach', 'puppy'])\n ['apple', 'ape']\n ```\n\nDocumentation\n-------------\n\n* [SequenceMatcher](#SequenceMatcher)\n\n * [setSeqs](#setSeqs)\n * [setSeq1](#setSeq1)\n * [setSeq2](#setSeq2)\n * [findLongestMatch](#findLongestMatch)\n * [getMatchingBlocks](#getMatchingBlocks)\n * [getOpcodes](#getOpcodes)\n * [getGroupedOpcodes](#getGroupedOpcodes)\n * [ratio](#ratio)\n * [quickRatio](#quickRatio)\n * [realQuickRatio](#realQuickRatio)\n\n* [Differ](#Differ)\n\n * [compare](#compare)\n\n* [contextDiff](#contextDiff)\n* [getCloseMatches](#getCloseMatches)\n* [ndiff](#ndiff)\n* [restore](#restore)\n* [unifiedDiff](#unifiedDiff)\n* [IS_LINE_JUNK](#IS_LINE_JUNK)\n* [IS_CHARACTER_JUNK](#IS_CHARACTER_JUNK)\n\n\n\n### *class* difflib.**SequenceMatcher**([isjunk[, a[, b[, autojunk=true]]]])\n\nThis is a flexible class for comparing pairs of sequences of any type.\n\nOptional argument *isjunk* must be **null** (the default) or a one-argument function\nthat takes a sequence element and returns true if and only if the element is\n\"junk\" and should be ignored. \n\nPassing **null** for *isjunk* is equivalent to passing\n\n```js\nfunction(x) { return false; }; \n```\n\nin other words, no elements are ignored. \n\nFor example, pass:\n\n```js\nfunction(x) { return x == ' ' || x == '\\t'; }\n```\n\nif you're comparing lines as sequences of characters, \nand don’t want to synch up on blanks or hard tabs.\n\nThe optional arguments *a* and *b* are sequences to be compared;\nboth default to empty strings.\n\nThe optional argument *autojunk* can be used to disable the \nautomatic junk heuristic, which automatically treats certain sequence items as junk.\n\n\n\n#### setSeqs(a, b)\n\nSet the two sequences to be compared.\n\nSequenceMatcher computes and caches detailed information about the second\nsequence, so if you want to compare one sequence against many sequences,\nuse [setSeq2()](#setSeq2) to set the commonly used sequence once and call \n[setSeq1()](#setSeq1) repeatedly, once for each of the other sequences.\n\n\n#### setSeq1(a)\n\nSet the first sequence to be compared. The second sequence to be compared is not changed.\n\n\n#### setSeq2(a)\n\nSet the second sequence to be compared. The first sequence to be compared is not changed.\n\n\n#### findLongestMatch(alo, ahi, blo, bhi)\n\nFind longest matching block in `a[alo:ahi]` and `b[blo:bhi]`.\n\nIf *isjunk* was omitted or null, *findLongestMatch()* returns `[i, j, k]` such that \n`a[i:i+k]` is equal to `b[j:j+k]`, where `alo <= i <= i+k <= ahi` and \n`blo <= j <= j+k <= bhi`. \nFor all `[i', j', k']` meeting those conditions, the additional conditions `k >= k'`, \n`i <= i'`, and if `i == i'`, `j <= j'` are also met. \nIn other words, of all maximal matching blocks, return one that starts earliest in *a*,\nand of all those maximal matching blocks that start earliest in *a*, \nreturn the one that starts earliest in *b*.\n\n```js\n>>> s = new difflib.SequenceMatcher(null, \" abcd\", \"abcd abcd\");\n>>> s.findLongestMatch(0, 5, 0, 9);\n[0, 4, 5]\n```\n\nIf *isjunk* was provided, first the longest matching block is determined\nas above, but with the additional restriction that no junk element appears\nin the block. \nThen that block is extended as far as possible by matching (only) junk \nelements on both sides. So the resulting block never matches on junk \nexcept as identical junk happens to be adjacent to an interesting match.\n\nHere's the same example as before, but considering blanks to be junk. \nThat prevents `' abcd'` from matching the `' abcd'` at the tail end of \nthe second sequence directly. \nInstead only the `'abcd'` can match, and matches the leftmost `'abcd'` \nin the second sequence:\n\n```js\n>>> s = new difflib.SequenceMatcher(function(x) {return x == ' ';}, \" abcd\", \"abcd abcd\")\n>>> s.findLongestMatch(0, 5, 0, 9)\n[1, 0, 4]\n```\n\nIf no blocks match, this returns `[alo, blo, 0]`.\n\n\n\n#### getMatchingBlocks()\n\nReturn list of triples describing matching subsequences. \nEach triple is of the form `[i, j, n]`, and means that `a[i:i+n] == b[j:j+n]`. \nThe triples are monotonically increasing in *i* and *j*.\n\î-kCùnThe last triple is a dummy, and has the value `[a.length, b.length, 0]`.\nIt is the only triple with `n == 0`. If `[i, j, n]` and `[i', j', n']` \nare adjacent triples in the list, and the second is not the last triple \nin the list, then `i+n != i'` or `j+n != j'`; \nin other words, adjacent triples always describe non-adjacent equal blocks.\n\n```js\n>>> s = new difflib.SequenceMatcher(null, \"abxcd\", \"abcd\")\n>>> s.getMatchingBlocks()\n[ [0, 0, 2], [3, 2, 2], [5, 4, 0] ]\n```\n\n\n#### getOpcodes()\n\nReturn list of 5-tuples describing how to turn a into b. \nEach tuple is of the form `[tag, i1, i2, j1, j2]`. \nThe first tuple has `i1 == j1 == 0`, and remaining tuples \nhave *i1* equal to the *i2* from the preceding tuple, \nand, likewise, *j1* equal to the previous *j2*.\n\nThe tag values are strings, with these meanings:\n\n Value Meaning\n\n 'replace' a[i1:i2] should be replaced by b[j1:j2].\n 'delete' a[i1:i2] should be deleted. Note that j1 == j2 in this case.\n 'insert' b[j1:j2] should be inserted at a[i1:i1]. Note that i1 == i2 in this case.\n 'equal' a[i1:i2] == b[j1:j2] (the sub-sequences are equal).\n\n```js\n>>> s = new difflib.SequenceMatcher(null, 'qabxcd', 'abycdf');\n>>> s.getOpcodes();\n[ [ 'delete' , 0 , 1 , 0 , 0 ] ,\n [ 'equal' , 1 , 3 , 0 , 2 ] ,\n [ 'replace' , 3 , 4 , 2 , 3 ] ,\n [ 'equal' , 4 , 6 , 3 , 5 ] ,\n [ 'insert' , 6 , 6 , 5 , 6 ] ]\n```\n\n\n#### getGroupedOpcodes()\n\nReturn a list groups with upto n lines of context.\nEach group is in the same format as returned by [getOpcodes()](#getOpcodes).\n\n\n#### ratio()\n\nReturn a measure of the sequences’ similarity as a float in the range [0, 1].\n\nWhere T is the total number of elements in both sequences, \nand M is the number of matches, this is 2.0*M / T. \nNote that this is `1.0` if the sequences are identical, \nand `0.0` if they have nothing in common.\n\nThis is expensive to compute if [getMatchingBlocks()](#getMatchingBlocks) or \n[getOpcodes()](#getOpcodes) hasn’t already been called, in which case \nyou may want to try [quickRatio()](#quickRatio) or \n[realQuickRatio()](#realQuickRatio) first to get an upper bound.\n\n\n#### quickRatio()\n\nReturn an upper bound on ratio() relatively quickly.\n\n\n#### realQuickRatio()\n\nReturn an upper bound on ratio() very quickly.\n\n```js\n>>> s = new difflib.SequenceMatcher(null, 'abcd', 'bcde');\n>>> s.ratio();\n0.75\n>>> s.quickRatio();\n0.75\n>>> s.realQuickRatio();\n1.0\n```\n\n\n### *class* difflib.**Differ**([linejunk[, charjunk]])\n\nThis is a class for comparing sequences of lines of text, \nand producing human-readable differences or deltas. \nDiffer uses [SequenceMatcher](#SequenceMatcher) both to compare \nsequences of lines, and to compare sequences of characters within \nsimilar (near-matching) lines.\n\nEach line of a Differ delta begins with a two-letter code:\n\n Code Meaning\n '- ' line unique to sequence 1\n '+ ' line unique to sequence 2\n ' ' line common to both sequences\n '? ' line not present in either input sequence\n\nLines beginning with `?` attempt to guide the eye to intraline differences, \nand were not present in either input sequence. \nThese lines can be confusing if the sequences contain tab characters.\n\nOptional parameters *linejunk* and *charjunk* are for filter functions (or **null**):\n\n*linejunk*: A function that accepts a single string argument, \nand returns true if the string is junk. \nThe default is **null**, meaning that no line is considered junk.\n\n*charjunk*: A function that accepts a single character argument \n(a string of length 1), and returns true if the character is junk. \nThe default is *null*, meaning that no character is considered junk.\n\n\n#### compare(a, b)\n\nCompare two sequences of lines, and generate the delta (a sequence of lines).\n\nEach sequence must contain individual single-line strings ending with newlines.\n\n```js\n>>> d = new difflib.Differ()\n>>> d.compare(['one\\n', 'two\\n', 'three\\n'],\n... ['ore\\n', 'tree\\n', 'emu\\n'])\n[ '- one\\n',\n '? ^\\n',\n '+ ore\\n',\n '? ^\\n',\n '- two\\n',\n '- three\\n',\n '? -\\n',\n '+ tree\\n',\n '+ emu\\n' ]\n```\n\n\n### difflib.**contextDiff**(a, b, options)\n\nCompare *a* and *b* (lists of strings); \nreturn the delta lines in context diff format.\n\noptions:\n\n* fromfile\n* tofile\n* fromfiledate\n* tofiledate\n* n\n* lineterm\n\nContext diffs are a compact way of showing just the lines that \nhave changed plus a few lines of context. The changes are shown in a \nbefore/after style. \nThe number of context lines is set by n which defaults to three.\n\nBy default, the diff control lines (those with `***` or `---`) are created \nwith a trailing newline. \n\nFor inputs that do not have trailing newlines, set the lineterm argument \nto `\"\"` so that the output will be uniformly newline free.\n\nThe context diff format normally has a header for filenames and modification\ntimes. Any or all of these may be specified using strings for *fromfile*, \n*tofile*, *fromfiledate*, and *tofiledate*. \nThe modification times are normally expressed in the ISO 8601 format. \nIf not specified, the strings default to blanks.\n\n```js\n>>> var s1 = ['bacon\\n', 'eggs\\n', 'ham\\n', 'guido\\n']\n>>> var s2 = ['python\\n', 'eggy\\n', 'hamster\\n', 'guido\\n']\n>>> difflib.contextDiff(s1, s2, {fromfile:'before.py', tofile:'after.py'})\n[ '*** before.py\\n',\n '--- after.py\\n',\n '***************\\n',\n '*** 1,4 ****\\n',\n '! bacon\\n',\n '! eggs\\n',\n '! ham\\n',\n ' guido\\n',\n '--- 1,4 ----\\n',\n '! python\\n',\n '! eggy\\n',\n '! hamster\\n',\n ' guido\\n' ]\n```\n\n\n### difflib.*getCloseMatches*(word, possibilities\\[, n\\]\\[, cutoff\\])\n\nReturn a list of the best “good enough†matches. \n*word* is a sequence for which close matches are desired \n(typically a string), and *possibilities* is a list of sequences against \nwhich to match word (typically a list of strings).\n\nOptional argument *n* (default 3) is the maximum number of close \nmatches to return; *n* must be greater than 0.\n\nOptional argument *cutoff* (default 0.6) is a float in the range \n[0, 1]. \nPossibilities that don’t score at least that similar to word are ignored.\n\nThe best (no more than n) matches among the possibilities are \nreturned in a list, sorted by similarity score, most similar first.\n\n```js\n>>> difflib.getCloseMatches('appel', ['ape', 'apple', 'peach', 'puppy'])\n['apple', 'ape']\n```\n\n\n### difflib.**ndiff**(a, b\\[, linejunk\\]\\[, charjunk\\])\n\nCompare *a* and b (lists of strings); \nreturn Differ-style delta lines\n\nOptional keyword parameters *linejunk* and *charjunk* are for \nfilter functions (or **null**):\n\n*linejunk*: A function that accepts a single string argument, \nand returns true if the string is junk, or false if not. \nThe default is (*null*).\n\n*charjunk*: A function that accepts a character (a string of length 1),\nand returns if the character is junk, or false if not. The default is \nmodule-level function [IS_CHARACTER_JUNK()](#IS_CHARACTER_JUNK), \nwhich filters out whitespace characters (a blank or tab; note: \nbad idea to include newline in this!).\n\n```js\n>>> a = ['one\\n', 'two\\n', 'three\\n']\n>>> b = ['ore\\n', 'tree\\n', 'emu\\n']\n>>> difflib.ndiff(a, b)\n[ '- one\\n',\n '? ^\\n',\n '+ ore\\n',\n '? ^\\n',\n '- two\\n',\n '- three\\n',\n '? -\\n',\n '+ tree\\n',\n '+ emu\\n' ]\n```\n\n\n### difflib.**restore**(sequence, which)\n\nReturn one of the two sequences that generated a delta.\n\nGiven a sequence produced by Differ.compare() or ndiff(), \nextract lines originating from file 1 or 2 (parameter which), stripping off line prefixes.\n\n```js\n>>> a = ['one\\n', 'two\\n', 'three\\n']\n>>> b = ['ore\\n', 'tree\\n', 'emu\\n']\n>>> diff = difflib.ndiff(a, b)\n>>> difflib.restore(diff, 1)\n[ 'one\\n',\n 'two\\n',\n 'three\\n' ]\n>>> restore(diff, 2)\n[ 'ore\\n',\n 'tree\\n',\n 'emu\\n' ]\n```\n\n\n### difflib.**unifiedDiff**(a, b, options)\n\nCompare a and b (lists of strings); \nreturn delta lines in unified diff format.\n\noptions:\n\n* fromfile\n* tofile\n* fromfiledate\n* tofiledate\n* n\n* lineterm\n\nUnified diffs are a compact way of showing just the lines that have \nchanged plus a few lines of context. \nThe changes are shown in a inline style (instead of separate before/after \nblocks). \nThe number of context lines is set by n which defaults to three.\n\nBy default, the diff control lines (those with `---`, `+++`, or `@@`) are \ncreated with a trailing newline. \n\nFor inputs that do not have trailing newlines, set the lineterm argument \nto `\"\"` so that the output will be uniformly newline free.\n\nThe context diff format normally has a header for filenames and modification\ntimes. Any or all of these may be specified using strings for *fromfile*, \n*tofile*, *fromfiledate*, and *tofiledate*. \nThe modification times are normally expressed in the ISO 8601 format.\nIf not specified, the strings default to blanks.\n\n```js\n>>> difflib.unifiedDiff('one two three four'.split(' '),\n... 'zero one tree four'.split(' '), {\n... fromfile: 'Original'\n... tofile: 'Current',\n... fromfiledate: '2005-01-26 23:30:50',\n... tofiledate: '2010-04-02 10:20:52',\n... lineterm: ''\n... })\n[ '--- Original\\t2005-01-26 23:30:50',\n '+++ Current\\t2010-04-02 10:20:52',\n '@@ -1,4 +1,4 @@',\n '+zero',\n ' one',\n '-two',\n '-three',\n '+tree',\n ' four' ]\n```\n\n\n\n### difflib.**IS\\_LINE\\_JUNK**(line)\n\nReturn true for ignorable lines. The line line is ignorable if *line* is \nblank or contains a single `'#'`, otherwise it is not ignorable.\n\n\n### difflib.**IS\\_CHARACTER\\_JUNK**(ch)\n\nReturn true for ignorable characters. The character *ch* is ignorable if ch\nis a space or tab, otherwise it is not ignorable. \nUsed as a default for parameter charjunk in [ndiff()](#ndiff).\n\n\nLicense\n-------\n\nPorted by Xueqiao Xu <xueqiaoxu@gmail.com>\n\nPSF LICENSE AGREEMENT FOR PYTHON 2.7.2\n\n1. This LICENSE AGREEMENT is between the Python Software Foundation (“PSFâ€), and the Individual or Organization (“Licenseeâ€) accessing and otherwise using Python 2.7.2 software in source or binary form and its associated documentation.\n2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 2.7.2 alone or in any derivative version, provided, however, that PSF’s License Agreement and PSF’s notice of copyright, i.e., “Copyright © 2001-2012 Python Software Foundation; All Rights Reserved†are retained in Python 2.7.2 alone or in any derivative version prepared by Licensee.\n3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.7.2 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 2.7.2.\n4. PSF is making Python 2.7.2 available to Licensee on an “AS IS†basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.7.2 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\n5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.7.2 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.7.2, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\n6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\n7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\n8. By copying, installing or otherwise using Python 2.7.2, Licensee agrees to be bound by the terms and conditions of this License Agreement.\n","maintainers":[{"name":"qiao","email":"xueqiaoxu@gmail.com"}],"time":{"modified":"2012-04-22T17:05:29.975Z","created":"2012-03-25T15:51:43.628Z","0.1.0":"2012-03-25T15:51:49.203Z","0.1.1":"2012-03-26T06:24:16.745Z","0.1.2":"2012-03-26T06:28:17.301Z","0.1.3":"2012-03-27T04:43:04.389Z","0.2.0":"2012-03-28T03:01:43.047Z","0.2.1":"2012-04-05T06:22:34.104Z","0.2.3":"2012-04-22T16:58:56.223Z","0.2.4":"2012-04-22T17:05:29.975Z"},"author":{"name":"Xueqiao Xu","email":"xueqiaoxu@gmail.com"},"repository":{"type":"git","url":"git://github.com/qiao/difflib.js.git"},"_id":"difflib","_rev":"1-1f89365fca44d388e209f170ab081f24"}ÿdocument-storeÿdevcycle›{"id":"devcycle","rev":"1-474f4b9e4aead2247547305a7fe2b1b8","rev_tree":[{"pos":1,"ids":["474f4b9e4aead2247547305a7fe2b1b8",{"status":"available"},[]]}],"rev_map":{"1-474f4b9e4aead2247547305a7fe2b1b8":3450},"winningRev":"1-474f4b9e4aead2247547305a7fe2b1b8","deleted":false,"seq":3450}ÿby-sequenceÿ0000000000003450‰{"name":"devcycle","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","dist-tags":{"latest":"0.1.25"},"versions":{"0.1.0":{"name":"devcycle","version":"0.1.0","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["CLI","development","cylces","deploy"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","_id":"devcycle@0.1.0","dist":{"shasum":"10c9ce67cf06035ebfe5c37e5b8861de81b97f71","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.0.tgz"},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.1":{"name":"devcycle","version":"0.1.1","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","devDependencies":{"commander":"*","node-fs":"*","colorize":"*"},"scripts":{"test":"devcyle"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","_id":"devcycle@0.1.1","dist":{"shasum":"098bfe230e924da5f5430352f9462d770d1c7630","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.1.tgz"},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.2":{"name":"devcycle","version":"0.1.2","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","devDependencies":{"commander":"*","node-fs":"*","colorize":"*"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","_id":"devcycle@0.1.2","dist":{"shasum":"8bfa0972b3332d07591d24c55bf5f4ffe6d3aeb3","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.2.tgz"},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.3":{"name":"devcycle","version":"0.1.3","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","devDependencies":{"commander":"1.0.0","node-fs":"0.1.4","colorize":"0.1.0"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","_id":"devcycle@0.1.3","dist":{"shasum":"a9853ea87e202e4c3b5e4a9011a19ba63939c6eb","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.3.tgz"},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.4":{"name":"devcycle","version":"0.1.4","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","_id":"devcycle@0.1.4","dist":{"shasum":"4b5de0dc213a0f515bcef7520ea0a194f6effc85","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.4.tgz"},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.5":{"name":"devcycle","version":"0.1.5","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following operations are supported:\n\n* Create folder\n* Move to Testing folder\n* Move to Deployment folder\n* List all file in testing folders\n\nThis CLI uses as default the following names for your folders:\n\ndevelopment\ntesting\nproduction\n\nIt's also under the assumtion that you will have all 3 folders under the same \nfolder, for instance if you application ame is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.5","dist":{"shasum":"7b716d83cf8ea43d4dbbf592da24297f4612d046","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.5.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.6":{"name":"devcycle","version":"0.1.6","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"bin":{"devcycle":"./devcycle"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCyle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following operations are supported:\n\n** * Create folder\n** * Move to Testing folder\n** * Move to Deployment folder\n** * List all file in testing folders\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n\nIt's also under the assumtion that you will have all 3 folders under the same \nfolder, for instance if you application ame is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.6","dist":{"shasum":"8068b542a2d37fc0c0cc06c25dbbb7f5aa71c09a","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.6.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.7":{"name":"devcycle","version":"0.1.7","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"bin":{"devcycle":"./devcycle.js"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCyle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following operations are supported:\n\n** * Create folder\n** * Move to Testing folder\n** * Move to Deployment folder\n** * List all file in testing folders\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n\nIt's also under the assumtion that you will have all 3 folders under the same \nfolder, for instance if you application ame is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.7","dist":{"shasum":"45c980afecb55556fe6e5f339095ea2d2eb9ef44","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.7.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.11":{"name":"devcycle","version":"0.1.11","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0","dateformat":">= 1.0.2"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"bin":{"devcycle":"./devcycle.js"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCycle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n**init: \ninitialize project configuration\n \n**list \nlist files in the development folder\n \n**stats \ncount files in each main folder\n \n**copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n**repo [action]\nperform operations on local repository. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n** repository\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/repository\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.11","dist":{"shasum":"240664da90e3e62368cc6b25ef358e2f85373238","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.11.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"directories":{}},"0.1.12":{"name":"devcycle","version":"0.1.12","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0","dateformat":"1.0.2-1.2.3"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"bin":{"devcycle":"devcycle.js"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCycle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n**init: \ninitialize project configuration\n \n**list \nlist files in the development folder\n \n**stats \ncount files in each main folder\n \n**copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n**repo [action]\nperform operations on local repository. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n** repository\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/repository\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.12","dist":{"shasum":"044f345aa6ed9c410f501ddf0e692b459c5a8846","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.12.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.13":{"name":"devcycle","version":"0.1.13","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0","dateformat":"1.0.2-1.2.3"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCycle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n**init: \ninitialize project configuration\n \n**list \nlist files in the development folder\n \n**stats \ncount files in each main folder\n \n**copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n**repo [action]\nperform operations on local repository. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n** repository\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/repository\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.13","dist":{"shasum":"acb8a0ff0a32d0816a795e14d4a72e88c88794a0","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.13.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.14":{"name":"devcycle","version":"0.1.14","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","main":"devcycle.js","dependencies":{"commander":">= 1.0.0","node-fs":">= 0.1.4","colorize":">= 0.1.0","wrench":">= 1.3.9","dateformat":"1.0.2-1.2.3"},"scripts":{"test":"devcyle -V"},"keywords":["CLI","development","cylces","deploy","testing"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCycle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n**init: \ninitialize project configuration\n \n**list \nlist files in the development folder\n \n**stats \ncount files in each main folder\n \n**copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n**repo [action]\nperform operations on local repository. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n** repository\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/repository\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.14","dist":{"shasum":"4aa9c59f4cc5c15c331d8be219f0f67b6f64948f","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.14.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.16":{"name":"devcycle","version":"0.1.16","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"## DevCycle\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n**init: \ninitialize project configuration\n \n**list \nlist files in the development folder\n \n**stats \ncount files in each main folder\n \n**copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n**snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n** development\n** testing\n** production\n** repository\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/repository\n\nType \"devcycle -h\" for an overview of the supported arguments.\n\n\n\n","_id":"devcycle@0.1.16","dist":{"shasum":"cfe4b22a663ae705d1aab65ed01beccafde26201","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.16.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.17":{"name":"devcycle","version":"0.1.17","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## init\ninitialize project configuration\n \n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n\n","ýI‚ù_id":"devcycle@0.1.17","dist":{"shasum":"12ee736f41bdeae2e4a36fab8af187dc8b0120d7","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.17.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.19":{"name":"devcycle","version":"0.1.19","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n\n","_id":"devcycle@0.1.19","dist":{"shasum":"fe5631d45b7c03e19656feb66309f8ab167ce6b4","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.19.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.20":{"name":"devcycle","version":"0.1.20","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n\n","_id":"devcycle@0.1.20","dist":{"shasum":"6d16445acfe5413904e8c47348e5912f9eaab9d2","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.20.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.21":{"name":"devcycle","version":"0.1.21","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n\n","_id":"devcycle@0.1.21","dist":{"shasum":"b507c628e6c9ee6bcdd7e73115341c614ce23e9c","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.21.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.22":{"name":"devcycle","version":"0.1.22","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://vowsjs.org","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\ndevcycle is command line interface that helps to move files from development \nto testing and testing to production\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n\n","_id":"devcycle@0.1.22","dist":{"shasum":"2436776feaa5f74891951c0231cd0a2f43d7c2a9","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.22.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.24":{"name":"devcycle","version":"0.1.24","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://oscar-mejia.com","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"BSD","readme":"devcycle\n========\n\nDevcycle is command line interface that helps to move files from development \nto testing and testing to production.\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion witht [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n","_id":"devcycle@0.1.24","dist":{"shasum":"c16e6c313e0a68d6ee07187bee2af2b6f76f852c","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.24.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]},"0.1.25":{"name":"devcycle","version":"0.1.25","description":"devcycle is command line interface that helps to move files from development to testing and testing to production","url":"http://oscar-mejia.com","main":"./bin","bin":{"devcycle":"./bin/devcycle"},"directories":{"test":"./test","bin":"./bin"},"dependencies":{"commander":">=1.0.0","node-fs":">=0.1.4","colorize":">=0.1.0","wrench":">=1.3.9","dateformat":"1.0.2-1.2.3"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"scripts":{"test":"./bin/devcyle -h"},"keywords":["CLI","development","cylces","deploy","testing","snapshots"],"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"license":"MIT","readme":"devcycle\n========\n\nDevcycle is command line interface that helps to move files from development \nto testing and testing to production.\nRight now, the following comands are supported:\n\n\n## Instalation\n\nOne line instaltion with [npm](http://npmjs.org). \n\n\t[sudo] npm install devcycle -g\n\n\n## Usage\n\n\tdevcycle [command] [action]\n\t\nCommands: \n\n## create [projectname]\ncreate an empty project. Provide the name of the project and all files and folders will\nbe created.\n\n## init\ninitialize project configuration. Execute this command from within your application's \nfolder. Al required folders and files will be created.\n\n## list\nlist files in the development folder\n \n## stats\ncount files in each main folder\n \n## copyto [action]\ncopy files between folders. Valid actions are \"test\" and \"prod\"\n \n## snapshot [action]\nperform operations on local snapshots. Valid actions are \"add\" and \"list\"\n\nThis CLI uses as default the following names for your folders:\n\n* development\n* testing\n* production\n* snapshots\n\nIt's also under the assumtion that you will have all 4 folders under the same \nfolder, for instance if you application's name is \"my-app\", your folder estructure\nwill look like this:\n\n../my-app/development\n../my-app/testing\n../my-app/production\n../my-app/snapshots\n\n## Help\n\nType the following for an overview of the supported arguments.\n\n\t\tdevcycle -h\n\n","_id":"devcycle@0.1.25","dist":{"shasum":"b6823c516a027d3f2070f15b9c8457af6df535eb","tarball":"http://registry.npmjs.org/devcycle/-/devcycle-0.1.25.tgz"},"maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}]}},"readme":"","maintainers":[{"name":"oscmejia","email":"oscmejia@vovsolutions.com"}],"time":{"modified":"2012-08-07T21:24:23.782Z","created":"2012-07-21T19:53:00.263Z","0.1.0":"2012-07-21T19:53:01.592Z","0.1.1":"2012-07-21T20:01:04.007Z","0.1.2":"2012-07-21T20:03:49.977Z","0.1.3":"2012-07-21T20:11:38.184Z","0.1.4":"2012-07-21T20:15:29.338Z","0.1.5":"2012-07-21T20:26:15.916Z","0.1.6":"2012-07-21T21:56:21.891Z","0.1.7":"2012-07-21T22:36:50.622Z","0.1.11":"2012-07-24T23:43:29.448Z","0.1.12":"2012-07-24T23:49:29.343Z","0.1.13":"2012-07-24T23:50:45.495Z","0.1.14":"2012-07-25T00:05:12.034Z","0.1.16":"2012-07-25T17:00:23.134Z","0.1.17":"2012-07-25T21:28:37.501Z","0.1.19":"2012-07-26T18:52:02.018Z","0.1.20":"2012-07-26T18:54:22.846Z","0.1.21":"2012-07-26T18:56:04.246Z","0.1.22":"2012-07-26T18:58:52.585Z","0.1.24":"2012-08-02T19:25:44.860Z","0.1.25":"2012-08-07T21:24:23.782Z"},"author":{"name":"Oscar Mejia","email":"oscmejia@vovsolutions.com"},"repository":{"type":"git","url":"https://github.com/oscmejia/devcycle"},"users":{"fgribreau":true},"_id":"devcycle","_rev":"1-474f4b9e4aead2247547305a7fe2b1b8"} ÿdocument-storeÿdependency-foo¡{"id":"dependency-foo","rev":"1-23c2f8ff0e770dd79d070d25d9696a55","rev_tree":[{"pos":1,"ids":["23c2f8ff0e770dd79d070d25d9696a55",{"status":"available"},[]]}],"rev_map":{"1-23c2f8ff0e770dd79d070d25d9696a55":3449},"winningRev":"1-23c2f8ff0e770dd79d070d25d9696a55","deleted":false,"seq":3449}ÿby-sequenceÿ0000000000003449«'{"name":"dependency-foo","description":"Serializable General Purpose Dependency Graph","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"author":{"name":"Firebase.co","email":"npm@firebase.co","url":"http://www.firebase.co/"},"name":"dependency-foo","description":"Serializable General Purpose Dependency Graph","keywords":["Dependency","Tree","Graph","Nodes","Serializable"],"version":"0.1.0","homepage":"http://www.firebase.co","repository":{"type":"git","url":"git://github.com/firebaseco/dependency-foo.git"},"main":"index.js","scripts":{"test":"node test/test.js"},"dependencies":{},"devDependencies":{"vows":"0.6.x"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"firebaseco","email":"npm@firebase.co"},"_id":"dependency-foo@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"343cd1c6ccf9186451777a17347404d752db287e","tarball":"http://registry.npmjs.org/dependency-foo/-/dependency-foo-0.1.0.tgz"},"maintainers":[{"name":"firebaseco","email":"npm@firebase.co"}]},"0.1.1":{"author":{"name":"Firebase.co","email":"npm@firebase.co","url":"http://www.firebase.co/"},"name":"dependency-foo","description":"Serializable General Purpose Dependency Graph","keywords":["Dependency","Tree","Graph","Nodes","Serializable"],"version":"0.1.1","homepage":"http://www.firebase.co","repository":{"type":"git","url":"git://github.com/firebaseco/dependency-foo.git"},"main":"index.js","scripts":{"test":"node test/test.js"},"dependencies":{},"devDependencies":{"vows":"0.6.x"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"firebaseco","email":"npm@firebase.co"},"_id":"dependency-foo@0.1.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fc98c4a4d3bab4ad4c8f6108799cf0a99b4b6e63","tarball":"http://registry.npmjs.org/dependency-foo/-/dependency-foo-0.1.1.tgz"},"maintainers":[{"name":"firebaseco","email":"npm@firebase.co"}]}},"readme":"## dependency-foo\n\ndependency-foo is a stupid-proof Node.js module that implements a General Purpose [Dependency Graph](http://en.wikipedia.org/wiki/Dependency_graph).\n\n### Features\n\n* Compact Serializable State to JSON\n* Object().Oriented()\n* Fully Tested(with Vows)\n\n### Installation\n\n $ npm install dependency-foo\n\n### Usage\n\n#### Creating a Graph Instance\n\tvar DependencyGraph = require('dependency-foo');\n\tvar graph = new DependencyGraph();\n\n#### Declaring a Dependency between two nodes\n\n // The human has now a dependency to the air.\n graph.subject('human').dependsOn('air');\n\n#### Checking Dependencies & Direction\n\n\t// I need to know if air is a dependency of human.\n\tgraph.subject('air').isDependencyOf('human');\n\t=> true\n\n\t// I need to know if human has a dependency to the air\n\tgraph.subject('human').hasDependencyTo('air');\n\t=> true\n\n\n#### Inspecting Dependencies\n\n // What nodes are referencing 'air' as a dependency?\n\tgraph.subject('air').references\n\t=> ['human']\n\t\n\t// What nodes are dependencies of 'human'?\n\tgraph.subject('human').dependencies\n\t=> ['air']\n\n#### Removing a Dependency\n\n\t// The human don't want to depend of the air anymore.\n\tgraph.subject('human').drop('air');\n\t\n\tgraph.subject('human').dependencies\n\t=> []\n\t\n\t// The references are automatically removed.\n\tgraph.subject('air').references\n\t=> []\n\n\n### Tests\n\n npm test\n\n\n## License (MIT)\n\nCopyright (c) 2012 Firebase.co - http://firebase.co\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n","maintainers":[{"name":"firebaseco","email":"npm@firebase.co"}],"time":{"modified":"2012-08-22T18:57:25.891Z","created":"2012-08-22T02:57:34.830Z","0.1.0":"2012-08-22T02:57:36.131Z","0.1.1":"2012-08-22T18:57:25.891Z"},"author":{"name":"Firebase.co","email":"npm@firebase.co","url":"http://www.firebase.co/"},"repository":{"type":"git","url":"git://github.com/firebaseco/dependency-foo.git"},"_id":"dependency-foo","_rev":"1-23c2f8ff0e770dd79d070d25d9696a55"}ÿdocument-storeÿdabblescriptŸ{"id":"dabblescript","rev":"1-0060b45200c35905e298faac4b23f2f0","rev_tree":[{"pos":1,"ids":["0060b45200c35905e298faac4b23f2f0",{"status":"available"},[]]}],"rev_map":{"1-0060b45200c35905e298faac4b23f2f0":3448},"winningRev":"1-0060b45200c35905e298faac4b23f2f0","deleted":false,"seq":3448}ÿby-sequenceÿ0000000000003448ú {"name":"dabblescript","description":"Dabble with JavaScript syntax.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Zach Carter","email":"zach@carter.name","url":"http://zaa.ch"},"name":"dabblescript","description":"Dabble with JavaScript syntax.","version":"0.0.1","keywords":["parser","compiler","language","altjs","dabblescript","operators","overloading","javascript"],"repository":{"type":"git","url":"git://github.com/zaach/dabblescript.git"},"bugs":{"url":"http://github.com/zaach/dabblescript/issues"},"main":"dist/dabble.js","bin":{"dabble":"dist/cli.js"},"engines":{"node":">= 0.4"},"devDependencies":{"jison":"0.3.x","uglify-js":"*"},"scripts":{"test":"node test/all-tests.js"},"dependencies":{"escodegen":"0.0.5"},"optionalDependencies":{},"readme":"# DabbleScript\n\nDabble with JavaScript syntax.\n\n // define an \"is\" operator\n infixl 8 (is) = function (a, b) {\n return a === b;\n };\n\n assert.ok(\"everything\" is \"everything\");\n\n## Install\n\n $ npm install dabble\n\nOr clone from git and run `make`.\n\n## Use\n\nTranslate dabble scripts:\n\n $ dabble exaple/es-next-operators.dabble\n\n## Operator Declarations\n\n infixl [lazy] (op) = expr;\n\n infixr [lazy] (op) = expr;\n\n prefix [lazy] (op) = expr;\n\n postfix [lazy] (op) = expr;\n\n assign [infixr|prefix|postfix] (op) = expr;\n\n\nInfix operators can be left or right associative.\n\nAssign operators roughly translate as `lhs op val` to `lhs = op(lhs, val)`.\n\nLazy operators will have their arguments wrapped in thunks. Precedence determines the order of operations (detailed below), and can be a number from 1 - 16 or a builtin operator (to copy that operators precedence).\n\n### Infix Precedence\n\nFrom lowest to highest precedence:\n\n 1 ,\n 2 // reserved for assignment operators; use assign declaration\n 3 ||\n 4 &&\n 5 |\n 6 ^\n 7 &\n 8 == != === !==\n 9 < <= > >=\n 10 >> >>> <<\n 11 + -\n 12 * % /\n 14 // reserved for unary; use prefix declaration\n 15 // reserved for postfix; use postfix declaration\n 16 .\n\n","_id":"dabblescript@0.0.1","dist":{"shasum":"bcf21697892c4bccb56a4502248df4e142095885","tarball":"http://registry.npmjs.org/dabblescript/-/dabblescript-0.0.1.tgz"},"maintainers":[{"name":"zaach","email":"zack.carter@gmail.com"}]}},"readme":"# DabbleScript\n\nDabble with JavaScript syntax.\n\n // define an \"is\" operator\n infixl 8 (is) = function (a, b) {\n return a === b;\n };\n\n assert.ok(\"everything\" is \"everything\");\n\n## Install\n\n $ npm install dabble\n\nOr clone from git and run `make`.\n\n## Use\n\nTranslate dabble scripts:\n\n $ dabble exaple/es-next-operators.dabble\n\n## Operator Declarations\n\n infixl [lazy] (op) = expr;\n\n infixr [lazy] (op) = expr;\n\n prefix [lazy] (op) = expr;\n\n postfix [lazy] (op) = expr;\n\n assign [infixr|prefix|postfix] (op) = expr;\n\n\nInfix operators can be left or right associative.\n\nAssign operators roughly translate as `lhs op val` to `lhs = op(lhs, val)`.\n\nLazy operators will have their arguments wrapped in thunks. Precedence determines the order of operations (detailed below), and can be a number from 1 - 16 or a builtin operator (to copy that operators precedence).\n\n### Infix Precedence\n\nFrom lowest to highest precedence:\n\n 1 ,\n 2 // reserved for assignment operators; use assign declaration\n 3 ||\n 4 &&\n 5 |\n 6 ^\n 7 &\n 8 == != === !==\n 9 < <= > >=\n 10 >> >>> <<\n 11 + -\n 12 * % /\n 14 // reserved for unary; use prefix declaration\n 15 // reserved for postfix; use postfix declaration\n 16 .\n\n","maintainers":[{"name":"zaach","email":"zack.carter@gmail.com"}],"time":{"modified":"2012-08-07T18:49:22.228Z","created":"2012-08-07T18:49:20.902Z","0.0.1":"2012-08-07T18:49:22.228Z"},"author":{"name":"Zach Carter","email":"zach@carter.name","url":"http://zaa.ch"},"repository":{"type":"git","url":"git://github.com/zaach/dabblescript.git"},"_id":"dabblescript","_rev":"1-0060b45200c35905e298faac4b23f2f0"}ÿdocument-storeÿcryptostreamŸ{"id":"cryptostream","rev":"1-7939c4e5d19aa1b4b36118a29accd961","rev_tree":[{"pos":1,"ids":["7939c4e5d19aa1b4b36118a29accd961",{"status":"available"},[]]}],"rev_map":{"1-7939c4e5d19aa1b4b36118a29accd961":3447},"winningRev":"1-7939c4e5d19aa1b4b36118a29accd961","deleted":false,"seq":3447}ÿby-sequenceÿ0000000000003447ø{"name":"cryptostream","description":"stream wrapper for crypto","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"cryptostream","description":"stream wrapper for crypto","version":"0.0.1","author":{"name":"Brandon Philips","email":"brandon@ifup.org"},"repository":{"type":"git","url":"git://github.com/philips/node-cryptostream.git"},"keywords":["stream","crypto"],"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"philips","email":"brandon.npm@ifup.org"},"_id":"cryptostream@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2bc477df0c89b431768c422f319656c26c13aa26","tarball":"http://registry.npmjs.org/cryptostream/-/cryptostream-0.0.1.tgz"},"maintainers":[{"name":"philips","email":"brandon.npm@ifup.org"}]}},"readme":"Stream object for crypto.\n\nExample Usage:\n\n var DecryptStream = require('./lib/cryptostream.js').DecryptStream;\n var EncryptStream = require('./lib/cryptostream.js').EncryptStream;\n \n var key = 'nodecryptostream';\n \n var e = new EncryptStream(key);\n var d = new DecryptStream(key);\n \n e.addListener('data', function(chunk) {\n d.write(chunk);\n });\n e.addListener('end', function() {\n d.end();\n });\n d.addListener('data', function(chunk) {\n if (chunk.length > 0)\n console.log('data: ' + chunk);\n });\n \n e.write(\"Hello world\", 'binary');\n e.end();\n","maintainers":[{"name":"philips","email":"brandon.npm@ifup.org"}],"time":{"modified":"2012-03-22T05:25:00.672Z","created":"2012-03-22T05:24:58.915Z","0.0.1":"2012-03-22T05:25:00.672Z"},"author":{"name":"Brandon Philips","email":"brandon@ifup.org"},"repository":{"type":"git","url":"git://github.com/philips/node-cryptostream.git"},"_id":"cryptostream","_rev":"1-7939c4e5d19aa1b4b36118a29accd961"}ÿdocument-storeÿcounters›{"id":"counters","rev":"1-bf4d72ce1741efa87a5f981678d2fd95","rev_tree":[{"pos":1,"ids":["bf4d72ce1741efa87a5f981678d2fd95",{"status":"available"},[]]}],"rev_map":{"1-bf4d72ce1741efa87a5f981678d2fd95":3446},"winningRev":"1-bf4d72ce1741efa87a5f981678d2fd95","deleted":false,"seq":3446}ÿby-sequenceÿ0000000000003446Š {"name":"counters","description":"Simples, very simples counters","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"counters","description":"Simples, very simples counters","version":"0.0.2","homepage":"https://github.com/exos/node-counters","repository":{"type":"git","url":"git://github.com/exos/node-counters"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"readme":"","_id":"counters@0.0.2","dist":{"shasum":"c10b78eed08497846798f308b0e2481fe6064a45","tarball":"http://registry.npmjs.org/counters/-/counters-0.0.2.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]}},"readme":"","maintainers":[{"name":"exos","email":"tioscar@gmail.com"}],"time":{"modified":"2012-07-16T22:06:40.928Z","created":"2012-07-16T22:06:36.955Z","0.0.2":"2012-07-16T22:06:40.928Z"},"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"repository":{"type":"git","url":"git://github.com/exos/node-counters"},"_id":"counters","_rev":"1-bf4d72ce1741efa87a5f981678d2fd95"}ÿdocument-storeÿcore_ext›{"id":"core_ext","rev":"1-8bd3548f68c96bdd5f0594542429c7ec","rev_tree":[{"pos":1,"ids":["8bd3548f68c96bdd5f0594542429c7ec",{"status":"available"},[]]}],"rev_map":{"1-8bd3548f68c96bdd5f0594542429c7ec":3445},"winningRev":"1-8bd3548f68c96bdd5f0594542429c7ec","deleted":false,"seq":3445}ÿby-sequenceÿ0000000000003445ò"{"name":"core_ext","description":"JavaScript prototype extensions.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"name":"core_ext","version":"0.0.0","description":"JavaScript extensions.","keywords":["extension","core extensions"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2"},"repository":{"type":"git","url":"git://github.com/vesln/core_ext.git"},"homepage":"http://github.com/vesln/core_ext","scripts":{"test":"make test"},"main":"./lib/index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"core_ext@0.0.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"6929d3fb971ee71a3b25e2c337632b503fd20dad","tarball":"http://registry.npmjs.org/core_ext/-/core_ext-0.0.0.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}]},"0.0.1":{"name":"core_ext","version":"0.0.1","description":"JavaScript prototype extensions.","keywords":["extension","core extensions"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"lingo":"0.0.4","mill":"0.0.1","times":"0.1.3"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2"},"repository":{"type":"git","url":"git://github.com/vesln/core_ext.git"},"homepage":"http://github.com/vesln/core_ext","scripts":{"test":"make test"},"main":"./lib/index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"core_ext@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"82925449976044e48989515d797f16f676a94c05","tarball":"http://registry.npmjs.org/core_ext/-/core_ext-0.0.1.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}]},"0.0.2":{"name":"core_ext","version":"0.0.2","description":"JavaScript prototype extensions.","keywords":["extension","core extensions"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"lingo":"0.0.4","mill":"0.0.1","times":"0.1.3"},"devDependencies":{"mocha":"*","chai":"*"},"repository":{"type":"git","url":"http://github.com/vesln/core_ext.git"},"homepage":"http://github.com/vesln/core_ext","scripts":{"test":"make test"},"main":"./lib/index","engines":{"node":">= 0.6.0"},"_id":"core_ext@0.0.2","dist":{"shasum":"f6acaa05fc68f3298e38ea3346f4162c4bbc874f","tarball":"http://registry.npmjs.org/core_ext/-/core_ext-0.0.2.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}]}},"readme":"[![Build Status](https://secure.travis-ci.org/vesln/core_ext.png)](http://travis-ci.org/vesln/core_ext)\n\n# JavaScript core extensions.\n\n## Description\n\n## Features\n\n## Synopsis\n\n## Requirements\n\n- NPM (http://npmjs.org/)\n- Node.js 0.6 (http://nodejs.org/)\n\n## Install\n\n```\n$ npm install core_ext\n```\n\n## Tests\n\n```\n$ npm install\n$ make test\n```\n\n## License\n\nMIT License\n\nCopyright (C) 2012 Veselin Todorov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy (’œùof\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"time":{"modified":"2012-06-25T18:17:21.916Z","created":"2012-01-27T21:45:20.510Z","0.0.0":"2012-01-27T21:45:22.795Z","0.0.1":"2012-01-31T14:43:56.472Z","0.0.2":"2012-06-25T18:17:21.916Z"},"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"repository":{"type":"git","url":"http://github.com/vesln/core_ext.git"},"_id":"core_ext","_rev":"1-8bd3548f68c96bdd5f0594542429c7ec"}ÿdocument-storeÿcopperhead{"id":"copperhead","rev":"1-f2b8a28feddc12888ba2a9de06e55740","rev_tree":[{"pos":1,"ids":["f2b8a28feddc12888ba2a9de06e55740",{"status":"available"},[]]}],"rev_map":{"1-f2b8a28feddc12888ba2a9de06e55740":3444},"winningRev":"1-f2b8a28feddc12888ba2a9de06e55740","deleted":false,"seq":3444}ÿby-sequenceÿ0000000000003444† {"name":"copperhead","description":"Connect compatible router middleware that supports content negotiation","dist-tags":{"latest":"0.2.1-1"},"versions":{"0.1.0":{"name":"copperhead","version":"0.1.0","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"copperhead@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"0dab2750f091fbe7e558e435bcdf5ed60d7e59b4","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.1.0.tgz"},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.1.1":{"name":"copperhead","version":"0.1.1","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"copperhead@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"d81b7f2bb08f42977b4f9bb339980c8557c37bbb","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.1.1.tgz"},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.1.2":{"name":"copperhead","version":"0.1.2","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"copperhead@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"0940fc9dc231e0447e0d41a50ba919226c5bf890","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.1.2.tgz"},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.1.2-2":{"name":"copperhead","version":"0.1.2-2","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"copperhead@0.1.2-2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"df9bbbdb88c8d452d8cc438a22d9a6fc16801b8e","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.1.2-2.tgz"},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.1.3-1":{"name":"copperhead","version":"0.1.3-1","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.1.3-1","dist":{"shasum":"9bb7ee345354b21f860520c1cd4c01aa5629e33f","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.1.3-1.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.0-1":{"name":"copperhead","version":"0.2.0-1","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.2.0-1","dist":{"shasum":"e1b893fdddc76d1ea562167f5bd23f95630b17b6","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.2.0-1.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.0-2":{"name":"copperhead","version":"0.2.0-2","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.2.0-2","dist":{"shasum":"9f6f8ba3e9442ea9720cc5d5d757bc30a5046243","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.2.0-2.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.0-3":{"name":"copperhead","version":"0.2.0-3","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.2.0-3","dist":{"shasum":"8906c42613b3e635820920eeada64cf9637494f9","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.2.0-3.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.0-4":{"name":"copperhead","version":"0.2.0-4","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.2.0-4","dist":{"shasum":"ca0caa5965ddfa7ae660898c7621ff04e6ee04f5","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.2.0-4.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]},"0.2.1-1":{"name":"copperhead","version":"0.2.1-1","description":"Connect compatible router middleware that supports content negotiation","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"dependencies":{"onion":"0.2.x","onion.utils":"0.2.x","http-accept":"0.1.x"},"main":"lib/Router.js","repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"licence":"MIT","readme":"# Copperhead\n\nCopperhead is a\n[connect](https://github.com/senchalabs/connect)\ncompatible router middleware that supports content negotiation.\n\n## Installation\n\n```plaintext\nnpm install copperhead\n```\n\n## Usage\nThe router object has a method for each HTTP method. Each method needs at least\na handler function that gets `req` und `res` as parameters. If the function\nreturns nothing, the next middleware will be used. If the function returns a\nstring or object it will be used as response with an appropriate content type.\n\nOptionally a method takes a path and a content type. The path variables are\nexposed to the `this` object of the handler.\n\n```plaintext\nrouter.method [path], [content type], (req, res) ->\n```\n\nSo for example if we want to use the `GET` method at the path `/users/:name`\nfor the content type `text/html` we would do\n\n```coffeescript\nrouter.get '/users/:name', 'text/html', (req, res) ->\n\t'Hello user '+@name+'!'\n```\n\nA more complete example\n```coffeescript\nconnect = require 'connect'\n\nrouter = require 'copperhead'\n\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.get '/foo', ->\n\t'bar!'\n\nrouter.get ->\n\t'Hello World!'\n\nrouter.get 'application/json', ->\n\thello: \"World!\"\n\nrouter.get 'text/html', ->\n\t'Hello World!Hello!'\n\napp.listen 3000\n```\n\n### Available Methods\n\n#### HTTP 1.1\nget,\npost,\nput,\ndelete,\noptions,\npatch\n\n#### WebDAV\n\nconnect,\ntrace,\ncopy,\nlock,\nmkcol,\nmove,\npropfind,\nproppatch,\nunlock,\nreport,\nmkactivity,\ncheckout,\nmerge\n\n#### Custom\n\nUse `router.route` to create a custom route.\n`route` takes the arguments\n\n * method\n * path\n * mimetype\n * middleware\n\n```coffeescript\napp = connect()\napp.use connect.logger 'dev'\napp.use router\n\nrouter.route 'custom', '/', '*/*', ->\n\t\"I'm custom!\"\n\napp.listen 3000\n```\n\n## Similar Projects\n\n * [Route66](https://github.com/vdemedes/route66)\n","_id":"copperhead@0.2.1-1","dist":{"shasum":"ceafe8e885437cf5d333184fa7db59dffeefc648","tarball":"http://registry.npmjs.org/copperhead/-/copperhead-0.2.1-1.tgz"},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}]}},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}],"time":{"modified":"2012-08-18T07:11:08.982Z","created":"2012-04-08T18:03:29.476Z","0.1.0":"2012-04-08T18:03:31.481Z","0.1.1":"2012-04-08T19:47:21.695Z","0.1.2":"2012-04-09T09:33:46.198Z","0.1.2-2":"2012-04-28T11:31:46.126Z","0.1.3-1":"2012-08-17T19:15:56.609Z","0.2.0-1":"2012-08-17T19:16:35.206Z","0.2.0-2":"2012-08-17T19:22:36.559Z","0.2.0-3":"2012-08-17T19:25:38.352Z","0.2.0-4":"2012-08-17T19:27:44.116Z","0.2.1-1":"2012-08-18T07:11:08.982Z"},"author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"repository":{"type":"git","url":"git://github.com/niclashoyer/copperhead.git"},"_id":"copperhead","_rev":"1-f2b8a28feddc12888ba2a9de06e55740"}ÿdocument-storeÿconnect-xcors {"id":"connect-xcors","rev":"1-b1f63ea25a449c69aea11b641e3c3c73","rev_tree":[{"pos":1,"ids":["b1f63ea25a449c69aea11b641e3c3c73",{"status":"available"},[]]}],"rev_map":{"1-b1f63ea25a449c69aea11b641e3c3c73":3443},"winningRev":"1-b1f63ea25a449c69aea11b641e3c3c73","deleted":false,"seq":3443}ÿby-sequenceÿ0000000000003443•${"name":"connect-xcors","description":"CORS / XHR2 support for Node.JS's Connect","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"author":{"name":"Antono Vasiljev","email":"antono.vasiljev@gmail.com","url":"http://antono.info"},"contributors":[{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"}],"name":"connect-xcors","description":"CORS / XHR2 support for Node.JS's Connect","version":"0.1.0","homepage":"https://github.com/antono/connect-cors","repository":{"type":"git","url":"git://github.com/antono/connect-cors.git"},"main":"connect-cors.js","engines":{"node":">= 0.2.0"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/Users/coolaj86/.npm/connect-xcors/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"connect-xcors@0.1.0","_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"2db8a308948d2b675fd70b2ab1468a52a507154d","tarball":"http://registry.npmjs.org/connect-xcors/-/connect-xcors-0.1.0.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.5.0":{"author":{"name":"Antono Vasiljev","email":"antono.vasiljev@gmail.com","url":"http://antono.info"},"contributors":[{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"}],"name":"connect-xcors","description":"CORS / XHR2 support for Node.JS's Connect","version":"0.5.0","homepage":"https://github.com/antono/connect-cors","repository":{"type":"git","url":"git://github.com/antono/connect-cors.git"},"main":"connect-cors.js","engines":{"node":">= 0.2.0"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/Users/coolaj86/.npm/connect-xcors/0.5.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"connect-xcors@0.5.0","_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"ac14b88c1442702f66e8c28c0729f4be1e920caa","tarball":"http://registry.npmjs.org/connect-xcors/-/connect-xcors-0.5.0.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.5.1":{"author":{"name":"Antono Vasiljev","email":"antono.vasiljev@gmail.com","url":"http://antono.info"},"contributors":[{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"}],"name":"connect-xcors","description":"CORS / XHR2 support for Node.JS's Connect","version":"0.5.1","homepage":"https://github.com/antono/connect-cors","repository":{"type":"git","url":"git://github.com/antono/connect-cors.git"},"main":"connect-cors.js","engines":{"node":">= 0.2.0"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/Users/coolaj86/.npm/connect-xcors/0.5.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"connect-xcors@0.5.1","_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"53f4236df7ce7e5391704a3771d5abf79e759cfb","tarball":"http://registry.npmjs.org/connect-xcors/-/connect-xcors-0.5.1.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.5.2":{"author":{"name":"Antono Vasiljev","email":"antono.vasiljev@gmail.com","url":"http://antono.info"},"contributors":[{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"}],"name":"connect-xcors","description":"CORS / XHR2 support for Node.JS's Connect","version":"0.5.2","homepage":"https://github.com/antono/connect-cors","repository":{"type":"git","url":"git://github.com/antono/connect-cors.git"},"main":"connect-cors.js","engines":{"node":">= 0.2.0"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"connect-xcors@0.5.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"28bd733452b5036f2f49d6d856cba1cd2fb34a90","tarball":"http://registry.npmjs.org/connect-xcors/-/connect-xcors-0.5.2.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-05-10T22:54:58.446Z","created":"2011-08-06T23:38:34.345Z","0.1.0":"2011-08-06T23:38:34.834Z","0.5.0":"2011-08-07T00:15:36.090Z","0.5.1":"2011-08-11T14:54:46.527Z","0.5.2":"2012-05-10T22:54:58.446Z"},"author":{"name":"Antono Vasiljev","email":"antono.vasiljev@gmail.com","url":"http://antono.info"},"repository":{"type":"git","url":"git://github.com/antono/connect-cors.git"},"_id":"connect-xcors","_rev":"1-b1f63ea25a449c69aea11b641e3c3c73"}ÿdocument-storeÿconnect-views {"id":"connect-views","rev":"1-213510b41f4f69e75094b41ab8a5145b","rev_tree":[{"pos":1,"ids":["213510b41f4f69e75094b41ab8a5145b",{"status":"available"},[]]}],"rev_map":{"1-213510b41f4f69e75094b41ab8a5145b":3442},"winningRev":"1-213510b41f4f69e75094b41ab8a5145b","deleted":false,"seq":3442}ÿby-sequenceÿ0000000000003442ô {"name":"connect-views","description":"Serve your jades, markdowns, lesses like a static files","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Eldar Gabdullin","email":"eldargab@gmail.com"},"name":"connect-views","description":"Serve your jades, markdowns, lesses like a static files","version":"0.0.1","main":"lib/index","repository":{"type":"git","url":"git://github.com/eldargab/connect-views.git"},"scripts":{"test":"node_modules/.bin/mocha -R spec"},"dependencies":{"mime":"*"},"devDependencies":{"express":"3.0.x","mocha":"1.0.x","sinon":"1.3.x","less":"*","jade":"*","markdown":"*","stylus":"*"},"_npmUser":{"name":"Eldar","email":"eldargab@gmail.com"},"_id":"connect-views@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"d522655b29d35c6ac3e2866e28f7b58f38361f44","tarball":"http://registry.npmjs.org/connect-views/-/connect-views-0.0.1.tgz"},"readme":"","maintainers":[{"name":"Eldar","email":"eldargab@gmail.com"}],"directories":{}}},"readme":"","maintainers":[{"name":"eldar","email":"djkojb@gmail.com"}],"time":{"modified":"2012-07-29T18:17:37.935Z","created":"2012-05-21T13:50:55.956Z","0.0.0":"2012-05-21T13:50:57.734Z","0.0.1":"2012-05-21T13:57:58.330Z"},"author":{"name":"Eldar Gabdullin","email":"eldargab@gmail.com"},"repository":{"type":"git","url":"git://github.com/eldargab/connect-views.git"},"_id":"connect-views","_rev":"1-213510b41f4f69e75094b41ab8a5145b"}"ÿdocument-storeÿconnect-throttle£{"id":"connect-throttle","rev":"1-41cd75b640d29c89d97ac11e0c73d831","rev_tree":[{"pos":1,"ids":["41cd75b640d29c89d97ac11e0c73d831",{"status":"available"},[]]}],"rev_map":{"1-41cd75b640d29c89d97ac11e0c73d831":3441},"winningRev":"1-41cd75b640d29c89d97ac11e0c73d831","deleted":false,"seq":3441}ÿby-sequenceÿ0000000000003441‹{"name":"connect-throttle","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Daniel Tralamazza"},"name":"connect-throttle","version":"0.0.1","repository":{"type":"git","url":"git://github.com/tralamazza/connect-throttle.git"},"dependencies":{"connect":"*"},"devDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tralamazza","email":"tralamazza@gmail.com"},"_id":"connect-throttle@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"90d6cd7dee64843a35306f013fb48fcdc152238d","tarball":"http://registry.npmjs.org/connect-throttle/-/connect-throttle-0.0.1.tgz"},"maintainers":[{"name":"tralamazza","email":"tralamazza@gmail.com"}]},"0.0.2":{"author":{"name":"Daniel Tralamazza"},"description":"Connect throttling middleware","name":"connect-throttle","version":"0.0.2","repository":{"type":"git","url":"git://github.com/tralamazza/connect-throttle.git"},"dependencies":{"connect":"*"},"devDependencies":{"vows":"*","should":"*"},"engines":{"node":"*"},"scripts":{"test":"./node_modules/.bin/vows --spec test/*-test.js"},"_npmUser":{"name":"tralamazza","email":"tralamazza@gmail.com"},"_id":"connect-throttle@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"0b7811ef10cb89fa910db999fe901e3ad0ce7f07","tarball":"http://registry.npmjs.org/connect-throttle/-/connect-throttle-0.0.2.tgz"},"maintainers":[{"name":"tralamazza","email":"tralamazza@gmail.com"}]}},"readme":"# Connect Throttle\n\nRequest throttling using _sleep_\n\n```js\nvar connect = require('connect');\nvar throttle = require('connect-throttle');\nconnect()\n .use(throttle.sleep(1000))\n .use(function(req, res) {\n console.log('1 req/s');\n res.end('');\n }).listen(3000);\n```\n\nTry:\n\n ab localhost:3000/\n\n\nPass a function instead of a fixed value:\n\n```js\nvar connect = require('connect');\nvar throttle = require('connect-throttle');\nconnect()\n .use(connect.responseTime())\n .use(throttle.sleep(function() { return Math.floor(Math.random() * 500); }))\n .use(function(req, res) {\n res.end('');\n }).listen(3000);\n```\n\n","maintainers":[{"name":"tralamazza","email":"tralamazza@gmail.com"}],"time":{"modified":"2012-06-25T11:42:48.883Z","created":"2012-06-25T08:10:32.387Z","0.0.1":"2012-06-25T08:11:23.834Z","0.0.2":"2012-06-25T11:42:48.883Z"},"author":{"name":"Daniel Tralamazza"},"repository":{"type":"git","url":"git://github.com/tralamazza/connect-throttle.git"},"description":"Connect throttling middleware","_id":"connect-throttle","_rev":"1-41cd75b640d29c89d97ac11e0c73d831"}"ÿdocument-storeÿconnect-response£{"id":"connect-response","rev":"1-7f980c4a542f6c1126b9488d1a042e98","rev_tree":[{"pos":1,"ids":["7f980c4a542f6c1126b9488d1a042e98",{"status":"available"},[]]}],"rev_map":{"1-7f980c4a542f6c1126b9488d1a042e98":3440},"winningRev":"1-7f980c4a542f6c1126b9488d1a042e98","deleted":false,"seq":3440}ÿby-sequenceÿ0000000000003440ù0{"name":"connect-response","description":"Response middleware for Connect","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.1":{"name":"connect-response","version":"0.1.1","description":"Response middleware for Connect","kÛˆäùeywords":["connect"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","dependencies":{"potato":">= 0.1.0","connect":">= 1.8.2"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"baryshev","email":"vadimbaryshev@gmail.com"},"_id":"connect-response@0.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"596c3710532cd7364321f3674b1eb35353478b55","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.1.tgz"},"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.0":{"name":"connect-response","version":"0.1.0","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"just":">= 0.1.6","connect":">= 1.8.2"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"baryshev","email":"vadimbaryshev@gmail.com"},"_id":"connect-response@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"84e8c77b239f0dd7ebdc090502b8f6f828379a93","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.0.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.2":{"name":"connect-response","version":"0.1.2","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"just":">= 0.1.7","connect":">= 1.8.6"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"baryshev","email":"vadimbaryshev@gmail.com"},"_id":"connect-response@0.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b6062979e862f30b275e596fe5885e0259425291","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.2.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.3":{"name":"connect-response","version":"0.1.3","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"just":">= 0.1.7","connect":">= 1.8.6"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"baryshev","email":"vadimbaryshev@gmail.com"},"_id":"connect-response@0.1.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"a918e751968b2d38de9382de20fcdd425db88b01","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.3.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.4":{"name":"connect-response","version":"0.1.4","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"just":">= 0.1.7","connect":">= 1.8.6"},"engines":{"node":">= 0.4.0"},"_id":"connect-response@0.1.4","dist":{"shasum":"342ebaa2415cc180a5cef7434fb7e24759353952","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.4.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.1.5":{"name":"connect-response","version":"0.1.5","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"just":">= 0.1.8","cookie":">= 0.0.4"},"engines":{"node":">= 0.4.0"},"_id":"connect-response@0.1.5","dist":{"shasum":"2a54c72e3165706c7def2bf7517df5cbf3e2aa7a","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.1.5.tgz"},"readme":"","maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]},"0.2.0":{"name":"connect-response","version":"0.2.0","description":"Response middleware for Connect","keywords":["connect","response","renderer","template","cookies"],"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"main":"index","repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"dependencies":{"cookie":">= 0.0.4"},"engines":{"node":">= 0.4.0"},"readme":"#About\n\nResponse middleware for Connect\n\n#Installation\n\nnpm install connect - response","_id":"connect-response@0.2.0","dist":{"shasum":"f400b671d00cb17d1b80a4878543f2c76ae0cdea","tarball":"http://registry.npmjs.org/connect-response/-/connect-response-0.2.0.tgz"},"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}]}},"readme":null,"maintainers":[{"name":"baryshev","email":"vadimbaryshev@gmail.com"}],"time":{"modified":"2012-08-18T09:46:54.212Z","created":"2012-01-02T01:21:33.735Z","0.1.1":"2012-01-02T01:21:36.248Z","0.1.0":"2012-03-09T13:24:40.366Z","0.1.2":"2012-03-17T00:15:43.063Z","0.1.3":"2012-03-17T00:45:59.878Z","0.1.4":"2012-07-14T01:00:25.108Z","0.1.5":"2012-08-11T14:08:46.645Z","0.2.0":"2012-08-18T09:46:54.212Z"},"author":{"name":"Vadim M. Baryshev","email":"vadimbaryshev@gmail.com"},"repository":{"type":"git","url":"git://github.com/baryshev/connect-response.git"},"_id":"connect-response","_rev":"1-7f980c4a542f6c1126b9488d1a042e98"}ÿdocument-storeÿconnect-jsonŸ{"id":"connect-json","rev":"1-674c6d93920c27ef9f7bac7a216490b2","rev_tree":[{"pos":1,"ids":["674c6d93920c27ef9f7bac7a216490b2",{"status":"available"},[]]}],"rev_map":{"1-674c6d93920c27ef9f7bac7a216490b2":3439},"winningRev":"1-674c6d93920c27ef9f7bac7a216490b2","deleted":false,"seq":3439}ÿby-sequenceÿ0000000000003439þ{"name":"connect-json","description":"A connect middleware that adds res.json(object), outputs JSON/JSONP and ends.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"connect-json","version":"0.0.0","description":"A connect middleware that adds res.json(object), outputs JSON/JSONP and ends.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/dtinth/connect-json.git"},"author":{"name":"Thai Pangsakulyanont"},"license":"MIT","_id":"connect-json@0.0.0","dist":{"shasum":"8e634428acb5ebecd6ec4884fc1106cdb2821808","tarball":"http://registry.npmjs.org/connect-json/-/connect-json-0.0.0.tgz"},"readme":"","maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}]}},"readme":"","maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"time":{"modified":"2012-08-18T10:50:30.050Z","created":"2012-08-18T10:50:24.718Z","0.0.0":"2012-08-18T10:50:30.050Z"},"author":{"name":"Thai Pangsakulyanont"},"repository":{"type":"git","url":"https://github.com/dtinth/connect-json.git"},"_id":"connect-json","_rev":"1-674c6d93920c27ef9f7bac7a216490b2"}%ÿdocument-storeÿcommon-nodejs-difio¦{"id":"common-nodejs-difio","rev":"1-ab95ac4f1c719b50662c491b4cfd2b8f","rev_tree":[{"pos":1,"ids":["ab95ac4f1c719b50662c491b4cfd2b8f",{"status":"available"},[]]}],"rev_map":{"1-ab95ac4f1c719b50662c491b4cfd2b8f":3438},"winningRev":"1-ab95ac4f1c719b50662c491b4cfd2b8f","deleted":false,"seq":3438}ÿby-sequenceÿ0000000000003438ö {"name":"common-nodejs-difio","description":"Common module for Difio node.js clients","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"common-nodejs-difio","description":"Common module for Difio node.js clients","version":"2.0.0","author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"homepage":"http://github.com/difio/common-nodejs-difio","repository":{"type":"git","url":"git://github.com/difio/common-nodejs-difio.git"},"main":"difio.js","engines":{"node":"*"},"_npmUser":{"name":"atodorov","email":"atodorov@otb.bg"},"_id":"common-nodejs-difio@2.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"21743182d251820b15db15eb53f3497c26636526","tarball":"http://registry.npmjs.org/common-nodejs-difio/-/common-nodejs-difio-2.0.0.tgz"},"maintainers":[{"name":"atodorov","email":"atodorov@otb.bg"}]}},"readme":"This is a generic Node.js module used by Difio.\n\nIf you want to install into your Node.js application see\nthe difio-\\-nodejs packages for usage.\n","maintainers":[{"name":"atodorov","email":"atodorov@otb.bg"}],"time":{"modified":"2012-07-10T16:45:20.525Z","created":"2012-07-10T16:45:18.357Z","2.0.0":"2012-07-10T16:45:20.525Z"},"author":{"name":"Svetlozar Argirov","email":"zarrro@gmail.com"},"repository":{"type":"git","url":"git://github.com/difio/common-nodejs-difio.git"},"_id":"common-nodejs-difio","_rev":"1-ab95ac4f1c719b50662c491b4cfd2b8f"}ÿdocument-storeÿcodepointœ{"id":"codepoint","rev":"1-eec581d65987dd5d54ca3ff33ddf86c6","rev_tree":[{"pos":1,"ids":["eec581d65987dd5d54ca3ff33ddf86c6",{"status":"available"},[]]}],"rev_map":{"1-eec581d65987dd5d54ca3ff33ddf86c6":3437},"winningRev":"1-eec581d65987dd5d54ca3ff33ddf86c6","deleted":false,"seq":3437}ÿby-sequenceÿ0000000000003437Á®{"name":"codepoint","description":"Utilities for Unicode codepoint","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"codepoint","version":"0.0.0","description":"Utilities for Unicode codepoint","keywords":["unicode","utf-16","code point"],"homepage":"https://github.com/koichik/node-codepoint/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp"},"licenses":{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"},"repositories":"https://github.com/koichik/node-codepoint.git","main":"./codepoint.js","engines":{"node":"*"},"devDependencies":{"mocha":"*","expect.js":"*"},"scripts":{"test":"./node_modules/mocha/bin/mocha"},"readme":"# Utitilities for Unicode code point based on Java API.\n\nIn this module, _Unicode code point_ is used for character values in the\nrange between `0x0000` and `0x10FFFF`.\nOn the other hand, _Unicode code unit_ is used for 16-bit integer values\nthat are code units of the UTF-16 encoding. \n\n## installation\n\n $ npm install codepoint\n\n## API\n\n```javascript\nvar codepoint = require('codepoint');\n```\n\n### codepoint.MAX_CODE_POINT\n\nThe maximum value of a Unicode code point, constant `0x10FFFF`.\n\n### codepoint.MAX_HIGH_SURROGATE\n\nThe maximum value of a Unicode high-surrogate code unit in the UTF-16 encoding,\nconstant `0xDBFF`.\n\n### codepoint.MAX_LOW_SURROGATE\n\nThe maximum value of a Unicode low-surrogate code unit in the UTF-16 encoding,\nconstant `0xDFFF`.\n\n### codepoint.MAX_SURROGATE\n\nThe maximum value of a Unicode surrogate code unit in the UTF-16 encoding,\nconstant `0xDFFF`.\n\n### codepoint.MAX_CODE_UNIT\n\nThe maximum value of a Unicode code unit in the UTF-16 encoding,\nconstant `0xFFFF`.\n\n### codepoint.MIN_CODE_POINT\n\nThe minimum value of a Unicode code point, constant `0x0000`.\n\n### codepoint.MIN_CODE_UNIT\n\nThe minimum value of a Unicode code unit in the UTF-16 encoding,\nconstant `0x0000`.\n\n### codepoint.MIN_HIGH_SURROGATE\n\nThe minimum value of a Unicode high-surrogate code unit in the UTF-16 encoding,\nconstant `0xD800`.\n\n### codepoint.MIN_LOW_SURROGATE\n\nThe minimum value of a Unicode low-surrogate code unit in the UTF-16 encoding,\nconstant `0xDC00`.\n\n### codepoint.MIN_SUPPLEMENTARY_CODE_POINT\n\nThe minimum value of a Unicode supplementary code point, constant `0x10000`.\n\n### codepoint.MIN_SURROGATE\n\nThe minimum value of a Unicode surrogate code unit in the UTF-16 encoding,\nconstant `0xD800`.\n\n### codepoint.charCount(cp)\n\nDetermines the number of Unicode code units needed to represent the specified\nUnicode code point. If the specified code point is equal to or greater\nthan `codepoint.MIN_SUPPLEMENTARY_CODE_POINT`, then the function returns `2`.\nOtherwise, the function returns `1`.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `2` if the Unicode code point is a valid supplementary code point;\n `1` otherwise.\n\n### codepoint.codePointAt(str [, index])\n\nReturns the code point at the given `index` of the `str`.\nIf the code unit value at the given `index` in the `str` is in the\nhigh-surrogate range, the following `index` is less than the length\nof the `str`, and the code unit value at the following `index` is in\nthe low-surrogate range, then the supplementary code point corresponding\nto this surrogate pair is returned.\nOtherwise, the code unit value at the given `index` is returned.\n\n * Arguments\n * `str`: the string.\n * `index`: the index to the Unicode code units in `str` to be converted.\n Defaults to `0`.\n * Returns\n * the Unicode code point value at the given index.\n\n### codepoint.codePointBefore(str [, index])\n\nReturns the code point preceding the given `index` of the `str`.\nIf the code unit value at (`index - 1`) in the `str` is in the\nlow-surrogate range, (`index - 2`) is not negative, and the code unit\nvalue at (`index - 2`) in the `str` is in the high-surrogate range,\nthen the supplementary code point corresponding to this surrogate pair\nis returned.\nOtherwise, the code unit value at (`index - 1`) is returned.\n\n * Arguments\n * `str`: the string.\n * `index`: the index following the code point that should be returned.\n Defaults to `str.length`.\n * Returns\n * the Unicode code point value before the given index.\n\n### codepoint.codePointCount(str [, beginIndex [, endIndex]])\n\nReturns the number of Unicode code points in the text range of the specified\n`str`. The text range begins at the specified `beginIndex` and extends to\nthe Unicode code unit at index `endIndex - 1`.\nThus the length (in code units) of the text range is `endIndex-beginIndex`.\nUnpaired surrogates within the text range count as one code point each.\n\n * Arguments\n * `str`: the string.\n * `beginIndex`: the index to the first code unit of the text range.\n Defaults to `0`.\n * `endIndex`: the index after the last code unit of the text range.\n Defaults to `str.length`.\n * Returns\n * the number of Unicode code points in the specified text range.\n\n### codepoint.forEachCodePoint(str, cb [, thisArgs])\n\nExecutes a provided function (`cb`) once for each code point present in\nthe `str`.\n\n * Arguments\n * `str`: the string.\n * `cb`: callback function.\n * `thisArg`: `this` value for each invocationof `cb`.\n if it is not provided, `undefined` is used instead.\n\n`cb` is invoked with three arguments:\n\n * Arguments\n * `cp`: the code point value.\n * `index`: the index to the code point of the `str`.\n (i.e. `cp === codepoint.codePointAt(str, index)`)\n * `str`: the string being traversed.\n\n### codepoint.fromCodePoint([cp, ...])\n\nReturns a string value containing as many code points as the number of\narguments. Each argument specifies one code point of the resulting string,\nwith the first argument specifing the first code point, and so on,\nfrom left to right.\n\n * Argument\n * `cp`: Unicode code point.\n * Returns\n * the string.\n\n### codepoint.highSurrogate(cp)\n\nReturns the leading surrogate (a high surrogate code unit) of the surrogate\npair representing the specified supplementary code point in the UTF-16\nencoding.\nIf the specified Unicode code point is not a supplementary code point,\nan unspecified code unit is returned.\n\n * Arguments\n * `cp`: a supplementary code point.\n * Returns\n * the leading surrogate code unit used to represent the character\n in the UTF-16 encoding\n\n### codepoint.isBmpCodePoint(cp)\n\nDetermines whether the specified Unicode code point is in the Basic\nMultilingual Plane (BMP). Such code points can be represented using a\nsingle code unit.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `true` if the specified code point is between `codepoint.MIN_CODE_POINT`\n and `codepoint.MAX_CODE_UNIT` inclusive; `false` otherwise.\n\n### codepoint.isHighSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode high-surrogate\ncode unit (also known as leading-surrogate code unit).\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_HIGH_SURROGATE` and\n `codepoint.MAX_HIGH_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isLowSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode low-surrogate\ncode unit (also known as trailing-surrogate code unit).\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_LOW_SURROGATE` and\n `codepoint.MAX_LOW_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isSupplementaryCodePoint(cp)\n\nDetermines whether the specified Unicode code point is in the supplementary\ncharacter range.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `true` if the specified code point is between\n `MIN_SUPPLEMENTARY_CODE_POINT` and `MAX_CODE_POINT` inclusive;\n `false` otherwise.\n\n### codepoint.isSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode surrogate code unit.\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_SURROGATE` and\n `codepoint.MAX_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isSurrogatePair(highCu, lowCu)\n\nDetermines whether the specified pair of code units is a valid Unicode\nsurrogate pair.\n\n * Arguments\n * `highCu`: the high-surrogate code unit to be tested.\n * `lowCu`: the low-surrogate code unit to be tested.\n * Returns\n * `true` if the specified high and low-surrogate code values represent\n a valid surrogate pair; `false` otherwise.\n\n### codepoint.lowSurrogate(cp)\n\nReturns the trailing surrogate (a low surrogate code unit) of the\nsurrogate pair representing the specified supplementary code point in the UTF-16 encoding.\nIf the specified code point is not a supplementary character, an unspecified\ncode unit is returned.\n\n * Arguments\n * `cp`: a supplementary code point.\n * Returns\n * the trailing surrogate code unit used to represent the character\n in the UTF-16 encoding\n\n### codepoint.offsetByCodePoints(str, index, codePointOffset)\n\nReturns the index within the given `str` that is offset from the given `index`\nby `codePointOffset` code points. Unpaired surrogates within the text range\ngiven by `index` and `codePointOffset` count as one code point each.\n\n * Arguments\n * `str`: the string.\n * `index`: the index to be offset.\n * `codePointOffset`: the offset in code points.\n * Returns\n * the index within the `str`.\n `-1` if `index` is negative or larger then the length of the `str`,\n or if `codePointOffset` is positive and the subsequence starting\n with `index` has fewer than `codePointOffset` code points, or if\n `codePointOffset` is negative and the subsequence before `index` has\n fewer than the absolute value of `codePointOffset` code points.\n\n### codepoint.toChars(cp)\n\nConverts the specified Unicode code point to its UTF-16 representation\nstored in an array of code units. If the specified code point is a BMP\n(Basic Multilingual Plane or Plane 0) value, the resulting array has\nthe same value as codePoint. If the specified code point is a supplementary\ncode point, the resulting array has the corresponding surrogate pair.\n\n * Arguments\n * `cp`: a Unicode code point\n * Returns\n * an array of code units having codePoint's UTF-16 representation.\n\n### codepoint.toCodePoint(highSurrogate, lowSurrogate)\n\nConverts the specified surrogate pair to its supplementary code point value.\nThis method does not validate the specified surrogate pair. The caller must\nvalidate it using `codepoint.isSurrogatePair()` if necessary.\n\n * Arguments\n * `highSurrogate`: the high-surrogate code unit.\n * `lowSurrogate`: the low-surrogate code unit.\n * Returns\n * the supplementary code point composed from the specified surrogate pair.\n\n# License\n\nnode-codeunit is licensed under the\n[MIT license](http://www.opensource.org/licenses/mit-license.php).\n","_id":"codepoint@0.0.0","dist":{"shasum":"79e08141f9b6218678ae79c70ea49e9907fb4e78","tarball":"http://registry.npmjs.org/codepoint/-/codepoint-0.0.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"koichik","email":"koichik@improvement.jp"},"maintainers":[{"name":"koichik","email":"koichik@improvement.jp"}]}},"readme":"# Utitilities for Unicode code point based on Java API.\n\nIn this module, _Unicode code point_ is used for character values in the\nrange between `0x0000` and `0x10FFFF`.\nOn the other hand, _Unicode code unit_ is used for 16-bit integer values\nthat are code units of the UTF-16 encoding. \n\n## installation\n\n $ npm install codepoint\n\n## API\n\n```javascript\nvar codepoint = require('codepoint');\n```\n\n### codepoint.MAX_CODE_POINT\n\nThe maximum value of a Unicode code point, constant `0x10FFFF`.\n\n### codepoint.MAX_HIGH_SURROGATE\n\nThe maximum value of a Unicode high-surrogate code unit in the UTF-16 encoding,\nconstant `0xDBFF`.\n\n### codepoint.MAX_LOW_SURROGATE\n\nThe maximum value of a Unicode low-surrogate code unit in the UTF-16 encoding,\nconstant `0xDFFF`.\n\n### codepoint.MAX_SURROGATE\n\nThe maximum value of a Unicode surrogate code unit in the UTF-16 encoding,\nconstant `0xDFFF`.\n\n### codepoint.MAX_CODE_UNIT\n\nThe maximum value of a Unicode code unit in the UTF-16 encoding,\nconstant `0xFFFF`.\n\n### codepoint.MIN_CODE_POINT\n\nThe minimum value of a Unicode code point, constant `0x0000`.\n\n### codepoint.MIN_CODE_UNIT\n\nThe minimum value of a Unicode code unit in the UTF-16 encoding,\nconstant `0x0000`.\n\n### codepoint.MIN_HIGH_SURROGATE\n\nThe minimum value of a Unicode high-surrogate code unit in the UTF-16 encoding,\nconstant `0xD800`.\n\n### codepoint.MIN_LOW_SURROGATE\n\nThe minimum value of a Unicode low-surrogate code unit in the UTF-16 encoding,\nconstant `0xDC00`.\n\n### codepoint.MIN_SUPPLEMENTARY_CODE_POINT\n\nThe minimum value of a Unicode supplementary code point, constant `0x10000`.\n\n### codepoint.MIN_SURROGATE\n\nThe minimum value of a Unicode surrogate code unit in the UTF-16 encoding,\nconstant `0xD800`.\n\n### codepoint.charCount(cp)\n\nDetermines the number of Unicode code units needed to represent the specified\nUnicode code point. If the specified code point is equal to or greater\nthan `codepoint.MIN_SUPPLEMENTARY_CODE_POINT`, then the function returns `2`.\nOtherwise, the function returns `1`.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `2` if the Unicode code point is a valid supplementary code point;\n `1` otherwise.\n\n### codepoint.codePointAt(str [, index])\n\nReturns the code point at the given `index` of the `str`.\nIf the code unit value at the given `index` in the `str` is in the\nhigh-surrogate range, the following `index` is less than the length\nof the `str`, and the code unit value at the following `index` is in\nthe low-surrogate range, then the supplementary code point corresponding\nto this surrogate pair is returned.\nOtherwise, the code unit value at the given `index` is returned.\n\n * Arguments\n * `str`: the string.\n * `index`: the index to the Unicode code units in `str` to be converted.\n Defaults to `0`.\n * Returns\n * the Unicode code point value at the given index.\n\n### codepoint.codePointBefore(str [, index])\n\nReturns the code point preceding the given `index` of the `str`.\nIf the code unit value at (`index - 1`) in the `str` is in the\nlow-surrogate range, (`index - 2`) is not negative, and the code unit\nvalue at (`index - 2`) in the `str` is in the high-surrogate range,\nthen the supplementary code point corresponding to this surrogate pair\nis returned.\nOtherwise, the code unit value at (`index - 1`) is returned.\n\n * Arguments\n * `str`: the string.\n * `index`: the index following the code point that should be returned.\n Defaults to `str.length`.\n * Returns\n * the Unicode code point value before the given index.\n\n### codepoint.codePointCount(str [, beginIndex [, endIndex]])\n\nReturns the number of Unicode code points in the text range of the specified\n`str`. The text range begins at the specified `beginIndex` and extends to\nthe Unicode code unit at index `endIndex - 1`.\nThus the length (in code units) of the text range is `endIndex-beginIndex`.\nUnpaired surrogates within the text range count as one code point each.\n\n * Arguments\n * `str`: the string.\n * `beginIndex`: the index to the first code unit of the text range.\n Defaults to `0`.\n * `endIndex`: the index after the last code unit of the text range.\n Defaults to `str.length`.\n * Returns\n * the number of Unicode code points in the specified text range.\n\n### codepoint.forEachCodePoint(str, cb [, thisArgs])\n\nExecutes a provided function (`cb`) once for each code point present in\nthe `str`.\n\n * Arguments\n * `str`: the string.\n * `cb`: callback function.\n * `thisArg`: `this` value for each invocationof `cb`.\n if it is not provided, `undefined` is used instead.\n\n`cb` is invoked with three arguments:\n\n * Arguments\n * `cp`: the code point value.\n * `index`: the index to the code point of the `str`.\n (i.e. `cp === codepoint.codePointAt(str, index)`)\n * `str`: the string being traversed.\n\n### codepoint.fromCodePoint([cp, ...])\n\nReturns a string value containing as many code points as the number of\narguments. Each argument specifies one code point of the resulting string,\nwith the first argument specifing the first code point, and so on,\nfrom left to right.\n\n * Argument\n * `cp`: Unicode code point.\n * Returns\n * the string.\n\n### codepoint.highSurrogate(cp)\n\nReturns the leading surrogate (a high surrogate code unit) of the surrogate\npair representing the specified supplementary code point in the UTF-16\nencoding.\nIf the specified Unicode code point is not a supplementary code point,\nan unspecified code unit is returned.\n\n * Arguments\n * `cp`: a supplementary code point.\n * Returns\n * the leading surrogate code unit used to represent the character\n in the UTF-16 encoding\n\n### codepoint.isBmpCodePoint(cp)\n\nDetermines whether the specified Unicode code point is in the Basic\nMultilingual Plane (BMP). Such code points can be represented using a\nsingle code unit.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `true` if the specified code point is between `codepoint.MIN_CODE_POINT`\n and `codepoint.MAX_CODE_UNIT` inclusive; `false` otherwise.\n\n### codepoint.isHighSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode high-surrogate\ncode unit (also known as leading-surrogate code unit).\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_HIGH_SURROGATE` and\n `codepoint.MAX_HIGH_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isLowSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode low-surrogate\ncode unit (also known as trailing-surrogate code unit).\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_LOW_SURROGATE` and\n `codepoint.MAX_LOW_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isSupplementaryCodePoint(cp)\n\nDetermines whether the specified Unicode code point is in the supplementary\ncharacter range.\n\n * Arguments\n * `cp`: the Unicode code point to be tested.\n * Returns\n * `true` if the specified code point is between\n `MIN_SUPPLEMENTARY_CODE_POINT` and `MAX_CODE_POINT` inclusive;\n `false` otherwise.\n\n### codepoint.isSurrogate(cu)\n\nDetermines if the given Unicode code unit is a Unicode surrogate code unit.\n\n * Arguments\n * `cu`: the Unicode code unit to be tested.\n * Returns\n * `true` if the code unit is between `codepoint.MIN_SURROGATE` and\n `codepoint.MAX_SURROGATE` inclusive; `false` otherwise.\n\n### codepoint.isSurrogatePair(highCu, lowCu)\n\nDetermines whether the specified pair of code units is a valid Unicode\nsurrogate pair.\n\n * Arguments\n * `highCu`: the high-surrogate code unit to be tested.\n * `lowCu`: the low-surrogate code unit to be tested.\n * Returns\n * `true` if the specified high and low-surrogate code values represent\n a valid surrogate pair; `false` otherwise.\n\n### codepoint.lowSurrogate(cp)\n\nReturns the trailing surrogate (a low surrogate code unit) of the\nsurrogate pair representing the specified supplementary code point in the UTF-16 encoding.\nIf the specified code point is not a supplementary character, an unspecified\ncode unit is returned.\n\n * Arguments\n * `cp`: a supplementary code point.\n * Returns\n * the trailing surrogate code unit used to represent the character\n in the UTF-16 encoding\n\n### codepoint.offsetByCodePoints(str, index, codePointOffset)\n\nReturns the index within the given `str` that is offset from the given `index`\nby `codePointOffset` code points. Unpaired surrogates within the text range\ngiven by `index` and `codePointOffset` count as one code point each.\n\n * Arguments\n * `str`: the string.\n * `index`: the index to be offset.\n * `codePointOffset`: the offset in code points.\n * Returns\n * the index within the `str`.\n `-1` if `index` is negative or larger then the length of the `str`,\n or if `codePointOffset` is positive and the subsequence starting\n with `index` has fewer than `codePointOffset` code points, or if\n `codePointOffset` is negative and the subsequence before `index` has\n fewer than the absolute value of `codePointOffset` code points.\n\n### codepoint.toChars(cp)\n\nConverts the specified Unicode code point to its UTF-16 representation\nstored in an array of code units. If the specified code point is a BMP\n(Basic Multilingual Plane or Plane 0) value, the resulting array has\nthe same value as codePoint. If the specified code point is a supplementary\ncode point, the resulting array has the corresponding surrogate pair.\n\n * Arguments\n * `cp`: a Unicode code point\n * Returns\n * an array of code units having codePoint's UTF-16 representation.\n\n### codepoint.toCodePoint(highSurrogate, lowSurrogate)\n\nConverts the specified surrogate pair to its supplementary code point value.\nThis method does not validate the specified surrogate pair. The caller must\nvalidate it using `codepoint.isSurrogatePair()` if necessary.\n\n * Arguments\n * `highSurrogate`: the high-surrogate code unit.\n * `lowSurrogate`: the low-surrogate code unit.\n * Returns\n * the supplementary code point composed from the specified surrogate pair.\n\n# License\n\nnode-codeunit is licensed under the\n[MIT license](http://www.opensource.org/licenses/mit-license.php).\n","maintainers":[{"name":"koichik","email":"koichik@improvement.jp"}],"time":{"modified":"2012-08-18T08:52:18.099Z","created":"2012-08-18T08:52:14.969Z","0.0.0":"2012-08-18T08:52:18.099Z"},"author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp"},"_id":"codepoint","_rev":"1-eec581d65987dd5d54ca3ff33ddf86c6"}ÿdocument-storeÿcmdserverœ{"id":"cmdserver","rev":"1-fd0f5540f301d5aaa01a58e0191a9680","rev_tree":[{"pos":1,"ids":["fd0f5540f301d5aaa01a58e0191a9680",{"status":"available"},[]]}],"rev_map":{"1-fd0f5540f301d5aaa01a58e0191a9680":3436},"winningRev":"1-fd0f5540f301d5aaa01a58e0191a9680","deleted":false,"seq":3436}ÿby-sequenceÿ0000000000003436™/{"name":"cmdserver","description":"client/server command line apps made easy","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"name":"cmdserver","description":"client/server commCzDxùand line apps made easy","version":"0.0.1","homepage":"https://github.com/brianloveswords/cmdserver","repository":{"type":"git","url":"git://github.com/brianloveswords/cmdserver.git"},"main":"lib/cmdserver.js","scripts":{"test":"make test"},"dependencies":{"colors":"*"},"devDependencies":{"optimist":"~0.3.4","jshint":"~0.7.0","mocha":"~1.0.3"},"optionalDependencies":{},"engines":{"node":"~0.6.17"},"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"cmdserver@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"96cba753d97ff8ceef7fc251f15313f33f88bf11","tarball":"http://registry.npmjs.org/cmdserver/-/cmdserver-0.0.1.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]},"0.0.2":{"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"name":"cmdserver","description":"client/server command line apps made easy","version":"0.0.2","homepage":"https://github.com/brianloveswords/cmdserver","repository":{"type":"git","url":"git://github.com/brianloveswords/cmdserver.git"},"main":"lib/cmdserver.js","scripts":{"test":"make test"},"dependencies":{"colors":"*","optimist":"~0.3.4"},"devDependencies":{"jshint":"~0.7.0","mocha":"~1.0.3"},"optionalDependencies":{},"engines":{"node":"~0.6.17"},"_npmUser":{"name":"brianloveswords","email":"brian@nyhacker.org"},"_id":"cmdserver@0.0.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"42dedbe3179be053b3f8967a1c06be8b477b1215","tarball":"http://registry.npmjs.org/cmdserver/-/cmdserver-0.0.2.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]}},"readme":"# cmdserver (v0.0.1)\n**client/server command line apps made easy**\n\n## Install\n`npm install cmdserver`\n\n## API example\n\n```js\nvar util = require('util');\nvar app = require('cmdserver')(process.argv);\n\nvar stacks = {\n vegetables: [],\n meats: []\n};\n\napp.command('add ')\n .describe('add a thing to a specific stack')\n .option('method [push|unshift]', 'method for adding. Defaults to `push`', 'push')\n .execute(function (client, thing, stack, opts) {\n if (!stacks[stack])\n return client.send(util.format('don\\'t know about `%s`', stack));\n stacks[stack][opts.method](thing);\n client.send(util.format('%sed `%s` to `%s`', opts.method, thing, stack));\n })\n\napp.command('show ')\n .describe('show the contents of a specific stack')\n .execute(function (client, stack) {\n var display = util.inspect(stacks[stack], undefined, undefined, true);\n client.send(display);\n });\n\napp.command('list stacks')\n .describe('show all of the stacks')\n .execute(function (client, stack) {\n var display = util.inspect(Object.keys(stacks), undefined, undefined, true);\n client.send(display);\n });\n\napp.command('new ')\n .describe('make a brand new stack, hhyyeaaaaa')\n .execute(function (client, name) {\n stacks[name] = [];\n client.send(util.format('adding new stack `%s`', name));\n });\n\napp.begin();\n```\n## client/server model\n\nYou can start a server by doing this:\n\n```\n± node example.js -S /tmp/food.socket \nfile /tmp/food.socket\ndebug listening: '/tmp/food.socket'\n```\n\nThen, in another terminal session, you can connect to the server by running\nthe same command:\n\n```\n± node example.js -S /tmp/food.socket\nfile /tmp/food.socket\n/tmp/food.socket < help\n/tmp/food.socket > \nadd : add a thing to a specific stack\n method [push|unshift] method for adding. Defaults to `push` \nshow : show the contents of a specific stack\nlist stacks: show all of the stacks\nnew : make a brand new stack, hhyyeaaaaa\n\n/tmp/food.socket < add beef meats\n/tmp/food.socket > pushed `beef` to `meats`\n/tmp/food.socket < add 'cold cuts' meats\n/tmp/food.socket > pushed `cold cuts` to `meats`\n/tmp/food.socket < add 'pork shoulder' meats method=unshift\n/tmp/food.socket > unshifted `pork shoulder` to `meats`\n/tmp/food.socket < new 'seafood'\n/tmp/food.socket > adding new stack `seafood`\n```\n\nYou can have as many clients open as you want, go nuts:\n\n```\n# in yet another terminal session\n\n± node example.js -S /tmp/food.socket\nfile /tmp/food.socket\n/tmp/food.socket < list stacks\n/tmp/food.socket > [ 'vegetables',\n 'meats',\n 'seafood' ]\n/tmp/food.socket < show meats\n/tmp/food.socket > [ 'pork shoulder',\n 'beef',\n 'cold cuts' ]\n\n# you can also perform one-off commands\n± node example.js -S /tmp/food.socket \"list stacks\"\n[ 'vegetables',\n 'meats',\n 'seafood' ]\n```\n\n## Using as a REPL\n\nIf you don't pass any arguments, it will drop you into a REPL\n\n```\n± node example.js \nexample.js> help\ndebug \nadd : add a thing to a specific stack\n method [push|unshift] method for adding. Defaults to `push` \nshow : show the contents of a specific stack\nlist stacks: show all of the stacks\nnew : make a brand new stack, hhyyeaaaaa\n\nexample.js> help list stacks\ndebug \nlist stacks: show all of the stacks\nexample.js> \n```\n\n## TODO\n* add port, host:port connection options\n* add more tests, geez!\n","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"time":{"modified":"2012-06-25T00:30:34.947Z","created":"2012-05-13T06:34:38.211Z","0.0.1":"2012-05-13T06:34:38.611Z","0.0.2":"2012-06-25T00:30:34.947Z"},"author":{"name":"Brian J. Brennan","email":"brianloveswords@gmail.com","url":"http://bjb.io"},"repository":{"type":"git","url":"git://github.com/brianloveswords/cmdserver.git"},"_id":"cmdserver","_rev":"1-fd0f5540f301d5aaa01a58e0191a9680"}ÿdocument-storeÿcmd.io™{"id":"cmd.io","rev":"1-be7eec5ec8c00e9c52b832c893c99980","rev_tree":[{"pos":1,"ids":["be7eec5ec8c00e9c52b832c893c99980",{"status":"available"},[]]}],"rev_map":{"1-be7eec5ec8c00e9c52b832c893c99980":3435},"winningRev":"1-be7eec5ec8c00e9c52b832c893c99980","deleted":false,"seq":3435}ÿby-sequenceÿ0000000000003435 {"name":"cmd.io","description":"Send commands by socks | childs","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.3":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"cmd.io","description":"Send commands by socks | childs","version":"0.0.3","homepage":"https://github.com/exos/cmd.io","repository":{"type":"git","url":"git://github.com/exos/cmd.io.git"},"dependencies":{"socket.io":">=0.9.5"},"devDependencies":{},"optionalDependencies":{"socket.io":">=0.9.5"},"engines":{"node":"*"},"_id":"cmd.io@0.0.3","dist":{"shasum":"c21db08f36ed42db28ed295700cfa27d6c635c19","tarball":"http://registry.npmjs.org/cmd.io/-/cmd.io-0.0.3.tgz"},"readme":"","maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]}},"readme":"","maintainers":[{"name":"exos","email":"tioscar@gmail.com"}],"time":{"modified":"2012-07-16T22:01:19.085Z","created":"2012-07-16T22:01:16.255Z","0.0.3":"2012-07-16T22:01:19.085Z"},"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"repository":{"type":"git","url":"git://github.com/exos/cmd.io.git"},"_id":"cmd.io","_rev":"1-be7eec5ec8c00e9c52b832c893c99980"})ÿdocument-storeÿcloudfiles-crypto-proxyª{"id":"cloudfiles-crypto-proxy","rev":"1-549a77b108ff96573e233be3805f51df","rev_tree":[{"pos":1,"ids":["549a77b108ff96573e233be3805f51df",{"status":"available"},[]]}],"rev_map":{"1-549a77b108ff96573e233be3805f51df":3434},"winningRev":"1-549a77b108ff96573e233be3805f51df","deleted":false,"seq":3434}ÿby-sequenceÿ0000000000003434¶{"name":"cloudfiles-crypto-proxy","description":"An HTTP proxy between Rackspace Cloudfiles that encrypts on upload and decrypts on download","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"cloudfiles-crypto-proxy","description":"An HTTP proxy between Rackspace Cloudfiles that encrypts on upload and decrypts on download","version":"0.0.1","author":{"name":"Brandon Philips","email":"brandon@ifup.org"},"repository":{"type":"git","url":"git://github.com/philips/cloudfiles-encrypt-proxy.git"},"keywords":["cloud computing","api","rackspace cloud","cloudfiles","rackspace cloudfiles","rackspace"],"dependencies":{"cryptostream":"git://github.com/philips/node-cryptostream.git","underscore":"1.3.x","request":"2.9.x","optimist":"0.3.x"},"devDependencies":{"vows":"0.6.x","cloudfiles":"git://github.com/philips/node-cloudfiles.git"},"bin":{"cloudfiles-crypto-proxy":"./bin/cloudfiles-crypto-proxy.js","cloudfiles-upload-test":"./bin/cloudfiles-upload-test.js"},"engines":{"node":">= 0.4.0"},"_npmUser":{"name":"philips","email":"brandon.npm@ifup.org"},"_id":"cloudfiles-crypto-proxy@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"7b0eab5522c618fac9214923a6a8d394004f6cf0","tarball":"http://registry.npmjs.org/cloudfiles-crypto-proxy/-/cloudfiles-crypto-proxy-0.0.1.tgz"},"maintainers":[{"name":"philips","email":"brandon.npm@ifup.org"}]}},"readme":"# Cloudfiles Crypto Proxy\n\n`cloudfiles-crypto-proxy` is an HTTP proxy between your client and Rackspace\nCloudfiles that encrypts the object as it is uploaded with an AES key.\n\n# Usage\n\nStartup the proxy on port 3000 using an example key\n\n cloudfiles-crypto-proxy.js -c config-example.json -p 3000\n\nUpload a file using `node-cloudfiles` proxied through http://localhost:3000\n\n cloudfiles-upload-test.js -f README.md -u -k -p 'http://127.0.0.1:3000'\n","maintainers":[{"name":"philips","email":"brandon.npm@ifup.org"}],"time":{"modified":"2012-03-22T05:24:14.122Z","created":"2012-03-22T05:24:12.656Z","0.0.1":"2012-03-22T05:24:14.122Z"},"author":{"name":"Brandon Philips","email":"brandon@ifup.org"},"repository":{"type":"git","url":"git://github.com/philips/cloudfiles-encrypt-proxy.git"},"_id":"cloudfiles-crypto-proxy","_rev":"1-549a77b108ff96573e233be3805f51df"}ÿdocument-storeÿclientmongož{"id":"clientmongo","rev":"1-eb2a7d2292f22bbd3b6e3b76a5d0ee32","rev_tree":[{"pos":1,"ids":["eb2a7d2292f22bbd3b6e3b76a5d0ee32",{"status":"available"},[]]}],"rev_map":{"1-eb2a7d2292f22bbd3b6e3b76a5d0ee32":3433},"winningRev":"1-eb2a7d2292f22bbd3b6e3b76a5d0ee32","deleted":false,"seq":3433}ÿby-sequenceÿ0000000000003433H{"name":"clientmongo","description":"MongoDB proxy for clientside","dist-tags":{"latest":"0.3.7"},"versions":{"0.2.0":{"name":"clientmongo","version":"0.2.0","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.6.3"},"devDependencies":{"browserify":"1.10.7","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.2.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"18dfa41d7b998c1155f2ad1d20128b6f41ab9eb7","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.2.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.2.1":{"name":"clientmongo","version":"0.2.1","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.6.3"},"devDependencies":{"browserify":"1.10.7","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.2.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"aecfbd5c38112619d0d3f7b063987d0be7032be7","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.2.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.0":{"name":"clientmongo","version":"0.3.0","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.6.3"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"6ca58cdc18dfc604f0c1a7887b91aba397920f39","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.1":{"name":"clientmongo","version":"0.3.1","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.6.3"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"12916c1494470498f078eb8628723cde6a17ee31","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.2":{"name":"clientmongo","version":"0.3.2","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.6.3"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9ddba880fb69b2b8c61ae2462e22faec5f3bfa8c","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.2.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.3":{"name":"clientmongo","version":"0.3.3","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.7.3"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"e299538c13b1c271638f5d565fdb83494449d61e","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.3.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.4":{"name":"clientmongo","version":"0.3.4","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.7.4"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"e097c05674ac0b20a2beca7266043cec733ef696","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.4.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.5":{"name":"clientmongo","version":"0.3.5","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.7.4"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.5","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"963cee284182fb1fda11ee62c2a793ca0fc077bd","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.5.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.6":{"name":"clientmongo","version":"0.3.6","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.7.4"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.6","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"fa1b039870b4edbcbdc6a54cb0cecfee7e2ee057","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.6.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.7":{"name":"clientmongo","version":"0.3.7","description":"MongoDB proxy for clientside","author":{"name":"Raynos","email":"raynos2@gmail.com"},"dependencies":{"dnode":"0.9.9","node-uuid":"1.3.3","mongo-col":"0.1.16","pd":"0.7.4"},"devDependencies":{"browserify":"1.10.7","dnode":"0.9.10","connect":"2.1.2","mocha":"1.0.1"},"_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"_id":"clientmongo@0.3.7","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"db242ff44f63163e8b14a37843f1d4aed37ed1dd","tarball":"http://registry.npmjs.org/clientmongo/-/clientmongo-0.3.7.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# clientmongo\n\nMongoDB on the client\n\n## Example\n\n // client.js\n var clientmongo = require(\"clientMongo\"),\n Users = clientmongo(\"Users\")\n\n Users.insert({\n foo: \"bar\"\n }, function () {\n Users.findOne({ foo: \"bar\" }, function (err, person) {\n console.log(person.foo === \"bar\")\n })\n })\n\n // server.js\n\n var server = require(\"express\").createServer(),\n clientmongo = require(\"clientmongo\")(server)\n\nFor a full example run the unit test suite (one code base) on both the server and the client.\n\nTo clarify, you can run the exact same code that interacts with mongoDB in both the browser and the server using `clientmongo`\n\n## Tests\n\n 1. Install dependencies `$ npm install`\n 2. Run server-side tests `make test`\n 3. Boot server for client-side tests `make test-server`\n 4. Build client-side code for client-side tests `make test-build`\n 5. Run tests in browser (localhost:3000) or `make test-run`","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-04-21T17:18:20.051Z","created":"2012-04-14T07:48:51.934Z","0.2.0":"2012-04-14T07:48:53.997Z","0.2.1":"2012-04-14T08:23:27.850Z","0.3.0":"2012-04-18T17:36:01.095Z","0.3.1":"2012-04-19T14:17:49.145Z","0.3.2":"2012-04-19T14:27:45.702Z","0.3.3":"2012-04-20T10:50:09.606Z","0.3.4":"2012-04-21T16:09:21.301Z","0.3.5":"2012-04-21T16:14:09.906Z","0.3.6":"2012-04-21T16:35:15.666Z","0.3.7":"2012-04-21T17:18:20.051Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"_id":"clientmongo","_rev":"1-eb2a7d2292f22bbd3b6e3b76a5d0ee32"}ÿdocument-storeÿcempl8™{"id":"cempl8","rev":"1-f8ac2e4342c63e74bc5f839feddcf2b5","rev_tree":[{"pos":1,"ids":["f8ac2e4342c63e74bc5f839feddcf2b5",{"status":"available"},[]]}],"rev_map":{"1-f8ac2e4342c63e74bc5f839feddcf2b5":3432},"winningRev":"1-f8ac2e4342c63e74bc5f839feddcf2b5","deleted":false,"seq":3432}ÿby-sequenceÿ0000000000003432ö{"name":"cempl8","description":"JS macros, simple or complex","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"author":{"name":"Jann Horn","email":"jannhorn@googlemail.com"},"name":"cempl8","description":"JS macros, simple or complex","version":"0.1.0","homepage":"http://github.com/thejh/node-cempl8","repository":{"type":"git","url":"git://github.com/thejh/node-cempl8.git"},"dependencies":{"coffee-script":"*"},"bin":{"cempl8":"./bin/cempl8"},"devDependencies":{},"_npmJsonOpts":{"file":"/home/jann/.npm/cempl8/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"cempl8@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.20","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"ea4eba88f6705e9651fbc6b75c05971a882b1013","tarball":"http://registry.npmjs.org/cempl8/-/cempl8-0.1.0.tgz"},"scripts":{},"maintainers":[{"name":"thejh","email":"jannhorn@gmail.com"}],"directories":{}},"0.1.1":{"author":{"name":"Jann Horn","email":"jannhorn@googlemail.com"},"name":"cempl8","description":"JS macros, simple or complex","version":"0.1.1","homepage":"http://github.com/thejh/node-cempl8","repository":{"type":"git","url":"git://github.com/thejh/node-cempl8.git"},"dependencies":{"coffee-script":"*"},"bin":{"cempl8":"./bin/cempl8"},"keywords":["macros","templates","code","macro","template"],"devDependencies":{},"_npmJsonOpts":{"file":"/home/jann/.npm/cempl8/0.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"cempl8@0.1.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.28","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"0da2f1debc08af93e122fffb0e7128b567fd35d5","tarball":"http://registry.npmjs.org/cempl8/-/cempl8-0.1.1.tgz"},"maintainers":[{"name":"thejh","email":"jannhorn@gmail.com"}]}},"maintainers":[{"name":"thejh","email":"jannhorn@gmail.com"}],"time":{"modified":"2011-09-16T20:34:02.327Z","created":"2011-08-21T14:31:08.656Z","0.1.0":"2011-08-21T14:31:11.903Z","0.1.1":"2011-09-16T19:00:28.142Z"},"author":{"name":"Jann Horn","email":"jannhorn@googlemail.com"},"repository":{"type":"git","url":"git://github.com/thejh/node-cempl8.git"},"_id":"cempl8","_rev":"1-f8ac2e4342c63e74bc5f839feddcf2b5"}!ÿdocument-storeÿcat-testing-npm¢{"id":"cat-testing-npm","rev":"1-a90576b8e0abe031cbfbb3953d48d161","rev_tree":[{"pos":1,"ids":["a90576b8e0abe031cbfbb3953d48d161",{"status":"available"},[]]}],"rev_map":{"1-a90576b8e0abe031cbfbb3953d48d161":3431},"winningRev":"1-a90576b8e0abe031cbfbb3953d48d161","deleted":false,"seq":3431}ÿby-sequenceÿ0000000000003431±{"name":"cat-testing-npm","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"cat-testing-npm","author":{"name":"Catherine","email":"catherine@catherine-tan.com"},"version":"0.0.1","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"catherinettt","email":"llt3@sfu.ca"},"_id":"cat-testing-npm@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d2048ff12a445969685f4c9178266c0d13b884c2","tarball":"http://registry.npmjs.org/cat-testing-npm/-/cat-testing-npm-0.0.1.tgz"},"readme":"","maintainers":[{"name":"catherinettt","email":"llt3@sfu.ca"}]},"0.0.2":{"name":"cat-testing-npm","author":{"name":"Catherine","email":"catherine@catherine-tan.com"},"version":"0.0.2","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"catherinettt","email":"llt3@sfu.ca"},"_id":"cat-testing-npm@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1182d066c1a483dd1aeb1d848338c8e75ca9dbf6","tarball":"http://registry.npmjs.org/cat-testing-npm/-/cat-testing-npm-0.0.2.tgz"},"readme":"","maintainers":[{"name":"catherinettt","email":"llt3@sfu.ca"}]},"0.0.3":{"name":"cat-testing-npm","author":{"name":"Catherine","email":"catherine@catherine-tan.com"},"version":"0.0.3","dependencies":{"express":">=2.5.10"},"_npmUser":{"name":"catherinettt","email":"llt3@sfu.ca"},"_id":"cat-testing-npm@0.0.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"4a7f771f424afc2a5676809f7039e748c67d25bc","tarball":"http://registry.npmjs.org/cat-testing-npm/-/cat-testing-npm-0.0.3.tgz"},"readme":"","maintainers":[{"name":"catherinettt","email":"llt3@sfu.ca"}]}},"readme":"","maintainers":[{"name":"catherinettt","email":"llt3@sfu.ca"}],"time":{"modified":"2012-06-18T20:03:14.916Z","created":"2012-06-18T19:54:46.886Z","0.0.1":"2012-06-18T19:54:47.928Z","0.0.2":"2012-06-18T20:02:34.839Z","0.0.3":"2012-06-18T20:03:14.916Z"},"author":{"name":"Catherine","email":"catherine@catherine-tan.com"},"_id":"cat-testing-npm","_rev":"1-a90576b8e0abe031cbfbb3953d48d161"}ÿdocument-storeÿcardinalityž{"id":"cardinality","rev":"1-00999793dba825dfa6c27778384d2ee3","rev_tree":[{"pos":1,"ids":["00999793dba825dfa6c27778384d2ee3",{"status":"available"},[]]}],"rev_map":{"1-00999793dba825dfa6c27778384d2ee3":3430},"winningRev":"1-00999793dba825dfa6c27778384d2ee3","deleted":false,"seq":3430}ÿby-sequenceÿ0000000000003430”*{"name":"cardinality","description":"Set cardinality estimates using HyperLogLog implementation","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"mattbornski"},"name":"cardinality","description":"Set cardinality estimates using LogLog and HyperLogLog implementations","version":"0.0.1","main":"lib/index.js","directories":{"lib":"lib","test":"test"},"homepage":"https://github.com/mattbornski/cardinality","keywords":["log","loglog","hyper","hyperloglog","cardinality","estimate","estimation","algorithm","set","flajolet","durand","gandouet","jean-marie","fusy","meunier"],"dependencies":{"bit-array":"0.1.2","murmurhash3":"0.0.9"},"repository":{"type":"git","url":"git://github.com/mattbornski/cardinality.git"},"engines":{"node":">= 0.6"},"devDependencies":{"mocha":"1.x"},"scripts":{"test":"mocha"},"_npmUser":{"name":"mattbornski","email":"matt@bornski.com"},"_id":"cardinality@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"1510e78ac7956365caf3c5ef31af4feedec9ad1d","tarball":"http://registry.npmjs.org/cardinality/-/cardinality-0.0.1.tgz"},"maintainers":[{"name":"mattbornski","email":"matt@bornski.com"}]},"0.0.2":{"author":{"name":"mattbornski"},"name":"cardinality","description":"Set cardinality estimates using HyperLogLog implementation","version":"0.0.2","main":"lib/index.js","directories":{"lib":"lib","test":"test"},"homepage":"https://github.com/mattbornski/cardinality","keywords":["log","loglog","hyper","hyperloglog","cardinality","estimate","estimation","algorithm","set","flajolet","durand","gandouet","jean-marie","fusy","meunier"],"dependencies":{"bit-array":"0.1.2","fibers":"0.6.7","murmurhash3":"0.0.9"},"repository":{"type":"git","url":"git://github.com/mattbornski/cardinality.git"},"engines":{"node":">= 0.6"},"devDependencies":{"mocha":"1.x"},"scripts":{"test":"mocha"},"_npmUser":{"name":"mattbornski","email":"matt@bornski.com"},"_id":"cardinality@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"75a940096639bb20ece63138141f94a387cd9707","tarball":"http://registry.npmjs.org/cardinality/-/cardinality-0.0.2.tgz"},"maintainers":[{"name":"mattbornski","email":"matt@bornski.com"}]}},"readme":"# LogLog and HyperLogLog algorithms implementation\n\nThese two algorithms calculate the cardinality of the data set (i.e. number of distinct elements in the data set).\n\nHyperLogLog is further development of LogLog. They both work very fast and use small amount of memory, but they are prediction algorithms, so there is always error.\n\n## Fields of application\n\nAny task which requires fast calculation of unique items in huge data set with limited memory usage and tolerant to non 100% precision.\n\n## Idea\n\nThe main idea is to map all elements in the set with hash function and divide all elements by offset of 1bit in hashed value.\n\nFor example, hash function returns fixed-length values `m = 8bits`, param `2^k = m`, so `k = 3`\n\n`elements[0] → hash(elements[0]) = 00010101`\n\n`elements[1] → hash(elements[1]) = 01000110`\n\nSet `M = [0, 0, 0, 0, 0, 0, 0, 0], M.length = m`\n\nFirst `k` bits of hashed value will be the index (bucket) in `M`, and get offset of a first 1bit in others bits of hashed value.\n\nSo, for `elements[0]` `index = 0` and `scan1 = 1`, `elements[1]` `index = 2` and `scan1 = 3`.\n\nThen `M[index] = max(M[index], scan1)`\n\nAfter all you have M with smallest hashes for each bucket.\n\nThen you need to somehow summarize elements in M and multiply it on coefficients which depends on hash length. And the result will be estimation of cardinality of the data set.\n\nAs you can see, algorithms use small amount of memory because they keep only `M` while execution and `M` has fixed length itself.\nAlso it's clear that range of hash values must be greater than number of unique elements in the data set, otherwise some elements will have same hash.\n\n### Sources\n\n1. Marianne Durand and Philippe Flajolet. Loglog Counting of Large Cardinalities. G. Di Battista and U. Zwick (Eds.): ESA 2003, LNCS 2832, pp. 605–617, 2003.\n[http://algo.inria.fr/flajolet/Publications/DuFl03-LNCS.pdf](http://algo.inria.fr/flajolet/Publications/DuFl03-LNCS.pdf)\n\n2. Olivier Gandouet and Alain Jean-Marie. LogLog counting for the estimation of IP trafï¬c. Fourth Colloquium on Mathematics and Computer Science, DMTCS proc. AG, pp. 119–128, 2006. \n[http://mathinfo06.iecn.u-nancy.fr/papers/dmAG119-128.pdf](http://mathinfo06.iecn.u-nancy.fr/papers/dmAG119-128.pdf)\n\n3. Philippe Flajolet, Éric Fusy, Olivier Gandouet and Frédéric Meunier. HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm. 2007 Conference on Analysis of Algorithms, DMTCS proc. AH, pp. 127–146, 2007.\n[http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf](http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf)","maintainers":[{"name":"mattbornski","email":"matt@bornski.com"}],"time":{"modified":"2012-05-18T02:48:18.621Z","created":"2012-05-10T02:25:32.418Z","0.0.1":"2012-05-10T02:25:33.731Z","0.0.2":"2012-05-18T02:48:18.621Z"},"author":{"name":"mattbornski"},"repository":{"type":"git","url":"git://github.com/mattbornski/cardinality.git"},"_id":"cardinality","_rev":"1-00999793dba825dfa6c27778384d2ee3"}ÿdocument-storeÿbox–{"id":"box","rev":"1-46392c9c6edcc0588c6a20a29d81d292","rev_tree":[{"pos":1,"ids":["46392c9c6edcc0588c6a20a29d81d292",{"status":"available"},[]]}],"rev_map":{"1-46392c9c6edcc0588c6a20a29d81d292":3429},"winningRev":"1-46392c9c6edcc0588c6a20a29d81d292","deleted":false,"seq":3429}ÿby-sequenceÿ0000000000003429Þ1{"name":"box","description":"Powerful key -> value storage for the CLI.","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.0":{"name":"box","version":"0.0.0","description":"Powerful key -> value storage for the CLI.","keywords":["cli storage","storage","cli"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2"},"repository":{"type":"git","url":"git://github.com/vesln/box.git"},"homepage":"http://github.com/vesln/box","scripts":{"test":"make test"},"main":"./lib/index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"box@0.0.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"6f7aa4292ba5a6e03b843003ce645807978375f4","tarball":"http://registry.npmjs.org/box/-/box-0.0.0.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"directories":{}},"0.0.1":{"name":"box","version":"0.0.1","description":"Powerful key -> value storage for the CLI.","keywords":["cli storage","storage","cli"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"flatiron":"~0.1.7"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2","sinon":"1.3.1"},"repository":{"type":"git","url":"git://github.com/vesln/box.git"},"homepage":"http://github.com/vesln/box","scripts":{"test":"make test"},"main":"./lib/cli","bin":{"box":"./bin/box"},"engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"box@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"5fd761663f3539adb7e62b617796bc46a166885b","tar~æøíùball":"http://registry.npmjs.org/box/-/box-0.0.1.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"directories":{}},"0.0.2":{"name":"box","version":"0.0.2","description":"Powerful key -> value storage for the CLI.","keywords":["cli storage","storage","cli"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"flatiron":"~0.1.7"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2","sinon":"1.3.1"},"repository":{"type":"git","url":"git://github.com/vesln/box.git"},"homepage":"http://github.com/vesln/box","scripts":{"test":"make test"},"main":"./lib/cli","bin":{"box":"./bin/box"},"engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"box@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"b843c63adfe0b27494a97435dc73d62fae2f996a","tarball":"http://registry.npmjs.org/box/-/box-0.0.2.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"directories":{}},"0.0.3":{"name":"box","version":"0.0.3","description":"Powerful key -> value storage for the CLI.","keywords":["cli storage","storage","cli"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"flatiron":"~0.1.7"},"devDependencies":{"mocha":"0.3.3","should":"0.3.2","sinon":"1.3.1"},"repository":{"type":"git","url":"git://github.com/vesln/box.git"},"homepage":"http://github.com/vesln/box","scripts":{"test":"make test","postinstall":"make init"},"main":"./lib/cli","bin":{"box":"./bin/box"},"engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"vesln","email":"hi@vesln.com"},"_id":"box@0.0.3","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"1870f7f19da4636c7cd22e79fe338c376fb2fb28","tarball":"http://registry.npmjs.org/box/-/box-0.0.3.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}]},"0.0.4":{"name":"box","version":"0.0.4","description":"Powerful key -> value storage for the CLI.","keywords":["cli storage","storage","cli"],"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"dependencies":{"flatiron":"~0.1.7"},"devDependencies":{"mocha":"*","chai":"*","sinon":"1.3.1"},"repository":{"type":"git","url":"http://github.com/vesln/box.git"},"homepage":"http://github.com/vesln/box","scripts":{"test":"make test","postinstall":"make init"},"main":"./lib/cli","bin":{"box":"./bin/box"},"engines":{"node":">= 0.6.0"},"_id":"box@0.0.4","dist":{"shasum":"3143784d9c99237a637233a1b73a76e2ee31761b","tarball":"http://registry.npmjs.org/box/-/box-0.0.4.tgz"},"maintainers":[{"name":"vesln","email":"hi@vesln.com"}]}},"readme":"[![Build Status](https://secure.travis-ci.org/vesln/box.png)](http://travis-ci.org/vesln/box)\n\n# box - Powerful key -> value storage for the CLI.\n\n## Description\n\n## Features\n\n## Synopsis\n\n## Requirements\n\n- NPM (http://npmjs.org/)\n- Node.js 0.6 (http://nodejs.org/)\n\n## Install\n\n```\n$ npm install box\n```\n\n## Tests\n\n```\n$ npm install\n$ make test\n```\n\n## License\n\nMIT License\n\nCopyright (C) 2012 Veselin Todorov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","maintainers":[{"name":"vesln","email":"hi@vesln.com"}],"time":{"modified":"2012-06-25T18:12:50.191Z","created":"2012-01-28T17:07:11.838Z","0.0.0":"2012-01-28T17:07:13.629Z","0.0.1":"2012-01-28T21:45:09.163Z","0.0.2":"2012-01-28T21:49:49.139Z","0.0.3":"2012-01-28T22:09:30.435Z","0.0.4":"2012-06-25T18:12:50.191Z"},"author":{"name":"Veselin Todorov","email":"hi@vesln.com"},"repository":{"type":"git","url":"http://github.com/vesln/box.git"},"_id":"box","_rev":"1-46392c9c6edcc0588c6a20a29d81d292"}ÿdocument-storeÿbootstylus{"id":"bootstylus","rev":"1-14cd617ff559b005382417477510f6ad","rev_tree":[{"pos":1,"ids":["14cd617ff559b005382417477510f6ad",{"status":"available"},[]]}],"rev_map":{"1-14cd617ff559b005382417477510f6ad":3428},"winningRev":"1-14cd617ff559b005382417477510f6ad","deleted":false,"seq":3428}ÿby-sequenceÿ0000000000003428»{"name":"bootstylus","description":"Twitter Bootstrap using Stylus instead of the default Less.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"author":{"name":"David Ed Mellum","email":"david@edmellum.com","url":"edmellum.com"},"name":"bootstylus","description":"Twitter Bootstrap using Stylus instead of the default Less.","version":"0.1.0","repository":{"type":"git","url":"github.com/edmellum/bootstylus.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"edmellum","email":"david@edmellum.com"},"_id":"bootstylus@0.1.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"1a015dac3769f2a2f2821eaec9c7c3cae5e09046","tarball":"http://registry.npmjs.org/bootstylus/-/bootstylus-0.1.0.tgz"},"maintainers":[{"name":"edmellum","email":"david@edmellum.com"}]},"0.2.0":{"author":{"name":"David Ed Mellum","email":"david@edmellum.com","url":"edmellum.com"},"name":"bootstylus","description":"Twitter Bootstrap using Stylus instead of the default Less.","version":"0.2.0","repository":{"type":"git","url":"github.com/edmellum/bootstylus.git"},"bugs":{"url":"http://github.com/edmellum/bootstylus/issues"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"edmellum","email":"david@edmellum.com"},"_id":"bootstylus@0.2.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3e698bb0de3892673b531503d6142b7f85513d3a","tarball":"http://registry.npmjs.org/bootstylus/-/bootstylus-0.2.0.tgz"},"maintainers":[{"name":"edmellum","email":"david@edmellum.com"}]}},"readme":"Bootstylus\n=================\n\nA port of [Twitter Bootstrap](http://twitter.github.com/bootstrap) from Less to Stylus.\n\n\nInstallation\n------------\n`$ npm install bootstylus`\n\n\nJavaScript API\n--------------\n\nWith a connect compatible framework, like express:\n```javascript\nvar connect = require('connect')\n , stylus = require('stylus')\n , bootstrap = require('bootstylus');\n\nvar server = connect();\n\nfunction compile(str, path) {\n return stylus(str)\n .set('filename', path)\n .set('compress', true)\n .use(nib());\n}\n\nserver.use(stylus.middleware({\n src: __dirname\n , compile: compile\n}));\n```\n\n\nStylus API\n----------\nTo get everything(except the responsive grid)\n`@import 'bootstylus'`\nUsing individual parts:\n`@import 'bootstylus/grid'\nIf you need the responsive grid:\n`@import 'bootstylus/responsive'\n\n\nTodo\n----\n- Use Nib for gradients and the like\n- Get rid of Stylus warnings\n- Clean up the Less to Stylus converter\n\n\nCopyright and license\n---------------------\n\nCopyright 2012 Twitter, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this work except in compliance with the License.\nYou may obtain a copy of the License in the LICENSE file, or at:\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","maintainers":[{"name":"edmellum","email":"david@edmellum.com"}],"time":{"modified":"2012-04-21T14:54:45.953Z","created":"2012-04-21T14:46:21.501Z","0.1.0":"2012-04-21T14:46:23.825Z","0.2.0":"2012-04-21T14:54:45.953Z"},"author":{"name":"David Ed Mellum","email":"david@edmellum.com","url":"edmellum.com"},"repository":{"type":"git","url":"github.com/edmellum/bootstylus.git"},"_id":"bootstylus","_rev":"1-14cd617ff559b005382417477510f6ad"}ÿdocument-storeÿbm-generatorŸ{"id":"bm-generator","rev":"1-7c8adfebe4b125126b8ebc269d83e3e0","rev_tree":[{"pos":1,"ids":["7c8adfebe4b125126b8ebc269d83e3e0",{"status":"available"},[]]}],"rev_map":{"1-7c8adfebe4b125126b8ebc269d83e3e0":3427},"winningRev":"1-7c8adfebe4b125126b8ebc269d83e3e0","deleted":false,"seq":3427}ÿby-sequenceÿ0000000000003427Ý{"name":"bm-generator","description":"Generate bookmarklet project","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"author":{"name":"Temnov Kirill, @selead"},"name":"bm-generator","description":"Generate bookmarklet project","version":"0.2.0","repository":{"type":"git","url":"git://github.com/selead/bm-generator.git"},"bin":{"bm-generator":"./bin/bm-generator"},"main":"index.coffee","engines":{"node":"0.6.x"},"dependencies":{"optimist":"*"},"_npmUser":{"name":"selead","email":"allselead@gmail.com"},"_id":"bm-generator@0.2.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"1f43a5482198f5d2d36cdfb9751ee35b75e6d259","tarball":"http://registry.npmjs.org/bm-generator/-/bm-generator-0.2.0.tgz"},"maintainers":[{"name":"selead","email":"allselead@gmail.com"}]}},"readme":"# Bookmarklet project generator\n\nQuick way to create bookmarklet from command line.\n\n## Install via `npm`\n\nAdd `-g` for enable package shell command.\n\n ```bash\n npm install bm-genarator -g\n ```\n \n## Usage\n\n### Create project\n\n Go to target folder and type\n \n ```bash\n bm-generator myproject -u http://example.com/js/bm.js\n ```\n\n Set `-u` option to actual bookmarklet position\n \n File `bm.js.copy` will contain bookmarklet content that must be inserted \n into browser's bookmarklets.\n\n Add options to extend functionality:\n \n - `-z` - include zepto.js framework\n - `-g` - enable git for project\n - `-S` - path to Amazon S3 bucket and folder, where bookmarklet will putted.\n You'll need `s3cmd` for use this option.\n \n### Use project\n \n Update bookmarklet.coffee and run\n \n ```bash\n ./generator\n ```\n \n This create bookmarklet file in `./out/bm.js`. Copy it to destignation.\n If `-S` option was set on creating project, bm.js will be pushed to Amazon S3.\n \n## Licence\n\n(The MIT License)\n\nCopyright (c) 2012 Temnov Kirill \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"selead","email":"allselead@gmail.com"}],"time":{"modified":"2012-06-19T03:30:28.776Z","created":"2012-06-19T03:30:26.996Z","0.2.0":"2012-06-19T03:30:28.776Z"},"author":{"name":"Temnov Kirill, @selead"},"repository":{"type":"git","url":"git://github.com/selead/bm-generator.git"},"_id":"bm-generator","_rev":"1-7c8adfebe4b125126b8ebc269d83e3e0"}ÿdocument-storeÿbloom-sqlœ{"id":"bloom-sql","rev":"1-ba98d9fb5f070546fdd1f7f3759c0793","rev_tree":[{"pos":1,"ids":["ba98d9fb5f070546fdd1f7f3759c0793",{"status":"available"},[]]}],"rev_map":{"1-ba98d9fb5f070546fdd1f7f3759c0793":3426},"winningRev":"1-ba98d9fb5f070546fdd1f7f3759c0793","deleted":false,"seq":3426}ÿby-sequenceÿ0000000000003426£d{"name":"bloom-sql","description":"Chained functions for building SQL strings for node-postgres.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"bloom-sql","version":"0.0.1","description":"Chained functions for building SQL strings for node-postgres.","main":"index.js","scripts":{"test":"./node_modules/mocha/bin/mocha"},"repository":{"type":"git","url":"git@github.com:bloomtime/bloom-sql-js.git"},"keywords":["sql","pg","postgres"],"author":{"name":"Tom Carden"},"license":"MIT","devDependencies":{"mocha":"~1.3.0","should":"~0.6.3"},"readme":"# What are you?\n\nI am an __overly simple__ library to make it a bit easier to build simple SQL statements for [node-postgres](https://github.com/brianc/node-postgres/) (affectionaly known as `pg`). I generate the `{ text: '...', values: [] }` objects that you typically pass to `client.query(...)`.\n\nIt gets tedious matching up `$1, $2` etc. and building the right kind of values array. My functions help you do this and get the place-holder numbers right, even for `UPDATE/SET/WHERE` and for `WHERE IN` clauses which require a flattened array of arguments.\n\nI have some tests written in Mocha. Of course I could use more!\n\n_No really_. __Overly simple__. \n\n# Like what?\n\n```\nvar SQL = require('bloom-sql'),\n INSERT = SQL.INSERT,\n SELECT = SQL.SELECT,\n UPDATE = SQL.UPDATE,\n DELETE = SQL.DELETE;\n```\n\nSelecting stuff:\n\n```\n> SELECT().FROM('foo').WHERE({ a: [1,2,3], b: 4 });\n{ text: 'SELECT * FROM foo WHERE a IN ($1, $2, $3) AND b = $4',\n values: [ 1, 2, 3, 4 ] }\n```\n\nDeleting stuff:\n\n```\n> DELETE('foo').WHERE({ a: 1, b: 2 });\n{ text: 'DELETE FROM foo WHERE a = $1 AND b = $2',\n values: [ 1, 2 ] }\n```\n\nInserting stuff:\n\n```\n> INSERT('foo').VALUES({ a: null, b: null, c: null });\n{ text: 'INSERT INTO foo(a, b, c) VALUES($1, $2, $3)',\n values: [ null, null, null ] }\n```\n\nUpdating stuff:\n\n```\n> UPDATE('foo').SET({ a: 1, b: 2, c: 3 }).WHERE({ d: 4, e: 5 }).RETURNING('*');\n{ text: 'UPDATE foo SET a = $1, b = $2, c = $3 WHERE d = $4 AND e = $5 RETURNING *',\n values: [ 1, 2, 3, 4, 5 ] }\n```\n\n__This code does not talk to the database.__ Connect to `pg` as normal as pass one of the resulting query objects to the db to run it:\n\n```\nvar pg = require('pg'),\n SELECT = require('bloom-sql').SELECT;\n\nvar db = new pg.Client('YOUR_DB_URL');\ndb.connect();\n\nvar query = SELECT('*').FROM('users').WHERE({id:1}).LIMIT(1);\ndb.query(query, function(err,results){\n // ensure !err\n // check results.rowCount === 1 \n // do stuff with results.rows[0]\n});\n```\n\n# TODO\n\n * complex conjunctions `(a = 1 AND b = 2) OR (c = 3 AND d = 4)`\n * comparisons in where clauses `(a > 1 AND b < 2)`\n * any hint of `JOIN`, sub-select, etc.\n * the other 90% of SQL?\n\n# Installation\n\n`npm install bloom-sql --save`\n\n(`--save` automatically updates your `package.json` file, tell your friends)\n\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 Bloom Studio, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bloom-sql@0.0.1","dist":{"shasum":"03e03086829eb407108f522bb2bd5eb881de9d6b","tarball":"http://registry.npmjs.org/bloom-sql/-/bloom-sql-0.0.1.tgz"},"maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}]},"0.0.2":{"name":"bloom-sql","version":"0.0.2","description":"Chained functions for building SQL strings for node-postgres.","main":"index.js","scripts":{"test":"./node_modules/mocha/bin/mocha"},"repository":{"type":"git","url":"git@github.com:bloomtime/bloom-sql-js.git"},"keywords":["sql","pg","postgres"],"author":{"name":"Tom Carden"},"license":"MIT","devDependencies":{"mocha":"~1.3.0","should":"~0.6.3"},"readme":"# What are you?\n\nI am an __overly simple__ library to make it a bit easier to build simple SQL statements for [node-postgres](https://github.com/brianc/node-postgres/) (affectionaly known as `pg`). I generate the `{ text: '...', values: [] }` objects that you typically pass to `client.query(...)`.\n\nIt gets tedious matching up `$1, $2` etc. and building the right kind of values array. My functions help you do this and get the place-holder numbers right, even for `UPDATE/SET/WHERE` and for `WHERE IN` clauses and Postgres `ARRAY[]` values which require a flattened array of arguments.\n\nI have some tests written in Mocha. Of course I could use more!\n\n_No really_. __Overly simple__. \n\n# Like what?\n\n```\nvar SQL = require('bloom-sql'),\n INSERT = SQL.INSERT,\n SELECT = SQL.SELECT,\n UPDATE = SQL.UPDATE,\n DELETE = SQL.DELETE;\n```\n\nSelecting stuff:\n\n```\n> SELECT().FROM('foo').WHERE({ a: [1,2,3], b: 4 });\n{ text: 'SELECT * FROM foo WHERE a IN ($1, $2, $3) AND b = $4',\n values: [ 1, 2, 3, 4 ] }\n```\n\nDeleting stuff:\n\n```\n> DELETE('foo').WHERE({ a: 1, b: 2 });\n{ text: 'DELETE FROM foo WHERE a = $1 AND b = $2',\n values: [ 1, 2 ] }\n```\n\nInserting stuff:\n\n```\n> INSERT('foo').VALUES({ a: null, b: null, c: null });\n{ text: 'INSERT INTO foo(a, b, c) VALUES($1, $2, $3)',\n values: [ null, null, null ] }\n```\n\nUpdating stuff:\n\n```\n> UPDATE('foo').SET({ a: 1, b: 2, c: 3 }).WHERE({ d: 4, e: 5 }).RETURNING('*');\n{ text: 'UPDATE foo SET a = $1, b = $2, c = $3 WHERE d = $4 AND e = $5 RETURNING *',\n values: [ 1, 2, 3, 4, 5 ] }\n```\n\n__This code does not talk to the database.__ Connect to `pg` as normal as pass one of the resulting query objects to the db to run it:\n\n```\nvar pg = require('pg'),\n SELECT = require('bloom-sql').SELECT;\n\nvar db = new pg.Client('YOUR_DB_URL');\ndb.connect();\n\nvar query = SELECT('*').FROM('users').WHERE({id:1}).LIMIT(1);\ndb.query(query, function(err,results){\n // ensure !err\n // check results.rowCount === 1 \n // do stuff with results.rows[0]\n});\n```\n\n# TODO\n\n * complex conjunctions `(a = 1 AND b = 2) OR (c = 3 AND d = 4)`\n * comparisons in where clauses `(a > 1 AND b < 2)`\n * any hint of `JOIN`, sub-select, etc.\n * the other 90% of SQL?\n * it would be nice to support Postgres `ARRAY` operators in `WHERE` clauses, but this probably requires a different way of doing `IN` queries. Right now:\n * in `UPDATE` and `INSERT`, a JS Array `[1,2,3]` will be converted into a Postgres `ARRAY[$1,$2,$3]` and the values flattened appropriately for the prepared statement\n * in `WHERE` clauses, a JS Array `[1,2,3]` will be converted into a SQL `IN ($1,$2,$3)` and the values flattened appropriately for the prepared statement\n\n# Installation\n\n`npm install bloom-sql --save`\n\n(`--save` automatically updates your `package.json` file, tell your friends)\n\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 Bloom Studio, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bloom-sql@0.0.2","dist":{"shasum":"c77ee83a6f85e805629a547241cc3d127a4a168a","tarball":"http://registry.npmjs.org/bloom-sql/-/bloom-sql-0.0.2.tgz"},"maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}]}},"readme":"# What are you?\n\nI am an __overly simple__ library to make it a bit easier to build simple SQL statements for [node-postgres](https://github.com/brianc/node-postgres/) (affectionaly known as `pg`). I generate the `{ text: '...', values: [] }` objects that you typically pass to `client.query(...)`.\n\nIt gets tedious matching up `$1, $2` etc. and building the right kind of values array. My functions help you do this and get the place-holder numbers right, even for `UPDATE/SET/WHERE` and for `WHERE IN` clauses which require a flattened array of arguments.\n\nI have some tests written in Mocha. Of course I could use more!\n\n_No really_. __Overly simple__. \n\n# Like what?\n\n```\nvar SQL = require('bloom-sql'),\n INSERT = SQL.INSERT,\n SELECT = SQL.SELECT,\n UPDATE = SQL.UPDATE,\n DELETE = SQL.DELETE;\n```\n\nSelecting stuff:\n\n```\n> SELECT().FROM('foo').WHERE({ a: [1,2,3], b: 4 });\n{ text: 'SELECT * FROM foo WHERE a IN ($1, $2, $3) AND b = $4',\n values: [ 1, 2, 3, 4 ] }\n```\n\nDeleting stuff:\n\n```\n> DELETE('foo').WHERE({ a: 1, b: 2 });\n{ text: 'DELETE FROM foo WHERE a = $1 AND b = $2',\n values: [ 1, 2 ] }\n```\n\nInserting stuff:\n\n```\n> INSERT('foo').VALUES({ a: null, b: null, c: null });\n{ text: 'INSERT INTO foo(a, b, c) VALUES($1, $2, $3)',\n values: [ null, null, null ] }\n```\n\nUpdating stuff:\n\n```\n> UPDATE('foo').SET({ a: 1, b: 2, c: 3 }).WHERE({ d: 4, e: 5 }).RETURNING('*');\n{ text: 'UPDATE foo SET a = $1, b = $2, c = $3 WHERE d = $4 AND e = $5 RETURNING *',\n values: [ 1, 2, 3, 4, 5 ] }\n```\n\n__This code does not talk to the database.__ Connect to `pg` as normal as pass one of the resulting query objects to the db to run it:\n\n```\nvar pg = require('pg'),\n SELECT = require('bloom-sql').SELECT;\n\nvar db = new pg.Client('YOUR_DB_URL');\ndb.connect();\n\nvar query = SELECT('*').FROM('users').WHERE({id:1}).LIMIT(1);\ndb.query(query, function(err,results){\n // ensure !err\n // check results.rowCount === 1 \n // do stuff with results.rows[0]\n});\n```\n\n# TODO\n\n * complex conjunctions `(a = 1 AND b = 2) OR (c = 3 AND d = 4)`\n * comparisons in where clauses `(a > 1 AND b < 2)`\n * any hint of `JOIN`, sub-select, etc.\n * the other 90% of SQL?\n\n# Installation\n\n`npm install bloom-sql --save`\n\n(`--save` automatically updates your `package.json` file, tell your friends)\n\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 Bloom Studio, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}],"time":{"modified":"2012-07-17T01:16:04.929Z","created":"2012-07-12T23:27:14.165Z","0.0.1":"2012-07-12T23:27:16.919Z","0.0.2":"2012-07-17T01:16:04.929Z"},"author":{"name":"Tom Carden"},"repository":{"type":"git","url":"git@github.com:bloomtime/bloom-sql-js.git"},"_id":"bloom-sql","_rev":"1-ba98d9fb5f070546fdd1f7f3759c0793"}ÿdocument-storeÿblam—{"id":"blam","rev":"1-bf207571848b48387ffdafa6acce45c4","rev_tree":[{"pos":1,"ids":["bf207571848b48387ffdafa6acce45c4",{"status":"available"},[]]}],"rev_map":{"1-bf207571848b48387ffdafa6acce45c4":3425},"winningRev":"1-bf207571848b48387ffdafa6acce45c4","deleted":false,"seq":3425}ÿby-sequenceÿ0000000000003425·C{"name":"blam","description":"Simple, inline, functional html templating.","dist-tags":{"latest":"0.5.4"},"versions":{"0.4.2":{"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"name":"blam","description":"Simple, inline, functional html templating.","version":"0.4.2","homepage":"http://darthapo.github.com/blam.js/","repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"main":"blam.js","engines":{"node":"~0.6"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"elucidata","email":"matt@elucidata.net"},"_id":"blam@0.4.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"76e6fffc3926d141c10c697fe5798dff1ad5b436","tarball":"http://registry.npmjs.org/blam/-/blam-0.4.2.tgz"},"maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}]},"0.5.1":{"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"name":"blam","description":"Simple, inline, functional html templating.","version":"0.5.1","homepage":"http://darthapo.github.com/blam.js/","repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"main":"blam.js","engines":{"node":"~0.6"},"dependencies":{},"devDependencies":{"chai":"~1.0.4"},"optionalDependencies":{},"_npmUser":{"name":"elucidata","email":"matt@elucidata.net"},"_id":"blam@0.5.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"53dd5c9e9757d0d2a3971ba46a834028581ce783","tarball":"http://registry.npmjs.org/blam/-/blam-0.5.1.tgz"},"maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}]},"0.5.2":{"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"name":"blam","description":"Simple, inline, functional html templating.","version":"0.5.2","homepage":"http://darthapo.github.com/blam.js/","repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"main":"blam.js","engines":{"node":"~0.6"},"dependencies":{},"devDependencies":{"chai":"~1.0.4"},"optionalDependencies":{},"_npmUser":{"name":"elucidata","email":"matt@elucidata.net"},"_id":"blam@0.5.2","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"bf8331db60ea9f7438b17035a4440591cb0e0172","tarball":"http://registry.npmjs.org/blam/-/blam-0.5.2.tgz"},"maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}]},"0.5.3":{"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"name":"blam","description":"Simple, inline, functional html templating.","version":"0.5.3","homepage":"http://darthapo.github.com/blam.js/","repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"main":"blam.js","engines":{"node":"~0.6"},"dependencies":{},"devDependencies":{"chai":"~1.0.4"},"optionalDependencies":{},"_npmUser":{"name":"elucidata","email":"matt@elucidata.net"},"_id":"blam@0.5.3","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"2b5a951b94d5d2c19503552039221da7f6e2afb6","tarball":"http://registry.npmjs.org/blam/-/blam-0.5.3.tgz"},"maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}]},"0.5.4":{"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"name":"blam","description":"Simple, inline, functional html templating.","version":"0.5.4","homepage":"http://darthapo.github.com/blam.js/","repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"main":"blam.js","engines":{"node":"~0.6"},"dependencies":{},"devDependencies":{"chai":"~1.0.4"},"optionalDependencies":{},"_npmUser":{"name":"elucidata","email":"matt@elucidata.net"},"_id":"blam@0.5.4","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"98494cbaf1984a41a9d9d7762cbca5b99a171df2","tarball":"http://registry.npmjs.org/blam/-/blam-0.5.4.tgz"},"maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}]}},"readme":"blam.js\n=======\n\n**Simple, Tiny, Fast** (enough)\n\nExample usage (in CoffeeScript):\n\n```coffeescript\nblam(->\n html(\n head(\n title( \"Hello\" )\n script( src:\"/my-script.js\" )\n link(\n rel:\"stylesheet\"\n type:\"text/css\"\n href:\"/my-styles.css\"\n )\n )\n body(\n article( id:\"main\",\n section.content(\n p(\"Loading...\")\n )\n aside.sidebar( \"Nav here\" )\n )\n )\n )\n)\n```\n\nYou can use it in JavaScript too (but it's much prettier in CoffeeScript):\n\n```javascript\nblam(function(){\n return html(\n head(\n title( \"Hello\" ), \n script({ src: \"/my-script.js\" }),\n link({ rel: \"stylesheet\", type: \"text/css\", href: \"/my-styles.css\" })), \n body(\n article({ id: \"main\" }, \n section.content(\n p(\"Loading...\")\n ), \n aside.sidebar( \"Nav here\")\n )\n )\n )\n});\n```\n\n## New \"Fancy\" Mode\n\nUsing the fancy mode, now enabled by default, during the compilation phase it adds support for assigning classnames via a dot syntax like slim or haml. Example:\n\n```coffeescript\nhtml= blam ->\n div.container(\n div.header( \n id:'my-header'\n h1(\"Header\")\n )\n div.content(\n \"Content\"\n )\n div.footer.hidden (\n \"Multiple classes too\"\n )\n )\n```\n\nWill generate:\n\n```html\n

Header

Content
Multiple classes too
\n```\n\nNote: The lack of extra whitespace/indentation is intentional, blam generates html for the browser to read, humans not so much.\n\n\n## Notes\n\nClocks in at ~1K minified and gzipped.\n\nSupports adding custom tags:\n\n```coffeescript\nblam.define 'jqmpage', (args...)->\n div 'data-role':'page',\n div 'data-role':'header', args...\n```\n\nPasses initial arguments on to markup block:\n\n```coffeescript\nblam name:'Matt', (user)->\n div( id:'user-block',\n p(\"Hello \", user.name)\n )\n```\n\nCan be \"compiled\" into an executable function (good for often repeated bits of code):\n\n```coffeescript\ntemplate= blam.compile (user)->\n div( id:'user-block',\n p(\"Hello \", user.name)\n )\n\nhtml+= template(user) for user in all_users\n```\n\nFor array elements you can useý¸Êù the `each` tag:\n\n```coffeescript\ntemplate= blam.compile (users)->\n div( id:'user-block',\n each(users, (user)->\n p(\"Hello \", user.name)\n )\n )\n\nhtml+= template(all_users)\n```\n\n\n## BackBone Example\n\n```coffeescript\nclass TweetListView extends Backbone.View\n className: 'tweet-list'\n\n initialize: ->\n # bind to @collection changes to add/remove TweetViews\n \n render: ->\n @collection.each (tweet)-> \n tweetView= new TweetView( model:tweet )\n @el.append tweetView.render().el\n\n\nclass TweetView extends Backbone.View\n className: 'tweet'\n \n events:\n \"click .reply\": \"doReply\"\n \n doReply: (e)=>\n alert \"Do reply code here...\"\n \n render: ->\n @el.attr 'id', @model.get(id)\n @el.append blam(@model, (model)->\n div.body(\n div.actions(\n button.reply( \"Reply...\" )\n button.retweet( \"Retweet...\" )\n )\n model.get('body')\n )\n )\n```\n\n## Todo\n\n- Would like to support all the modern browsers and possibly as far back as IE8? (run tests!!!)\n\n- Need to test AMD support.\n\n- Extract and expose tag building helpers.\n\n- Dasherize attributes? (dataRole:\"page\" would expand to 'data-role=\"page\"')\n\n\n## Aren't `eval` and `with` Evil?\n\nNo! They're just misunderstood. This is exactly why they are useful as a language feature. They allow excellent DSL generation.\n\nThat said, it *is* a good rule of thumb that if you don't know when is best to use them; don't.\n","maintainers":[{"name":"elucidata","email":"matt@elucidata.net"}],"time":{"modified":"2012-06-25T00:44:07.575Z","created":"2012-06-22T20:36:21.284Z","0.4.2":"2012-06-22T20:36:22.684Z","0.5.1":"2012-06-23T23:04:09.357Z","0.5.2":"2012-06-24T03:28:07.978Z","0.5.3":"2012-06-24T18:49:13.180Z","0.5.4":"2012-06-25T00:44:07.575Z"},"author":{"name":"Matt McCray","email":"matt@elucidata.net","url":"http://www.elucidata.net"},"repository":{"type":"git","url":"git://github.com/darthapo/blam.js.git"},"_id":"blam","_rev":"1-bf207571848b48387ffdafa6acce45c4"}!ÿdocument-storeÿbenchmark-pages¢{"id":"benchmark-pages","rev":"1-abcf62b4aa19591a22c9304089e3c560","rev_tree":[{"pos":1,"ids":["abcf62b4aa19591a22c9304089e3c560",{"status":"available"},[]]}],"rev_map":{"1-abcf62b4aa19591a22c9304089e3c560":3424},"winningRev":"1-abcf62b4aa19591a22c9304089e3c560","deleted":false,"seq":3424}ÿby-sequenceÿ0000000000003424”#{"name":"benchmark-pages","description":"Benchmarks the response time of your web pages under a different loads; allows comparing response times for different servers","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"penartur","url":"https://github.com/penartur/"},"name":"benchmark-pages","description":"Benchmarks the response time of your web pages under a different loads; allows comparing response times for different servers","version":"0.0.1","homepage":"https://github.com/penartur/node-benchmark-pages","keywords":["benchmark","benchmarking","performance","speed","timing","test"],"repository":{"type":"git","url":"git://github.com/penartur/node-benchmark-pages.git"},"main":"lib/benchmark.js","dependencies":{"request":">= 2.9.202","capisce":">= 0.4.3","cli-table":">= 0.0.1"},"devDependencies":{},"optionalDependencies":{"cli-table":">= 0.0.1"},"engines":{"node":">= 0.6.15"},"_npmUser":{"name":"penartur","email":"penartur@yandex.ru"},"_id":"benchmark-pages@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"102e29b2a59816eaac62ec363fc8f3fcc5d19e47","tarball":"http://registry.npmjs.org/benchmark-pages/-/benchmark-pages-0.0.1.tgz"},"maintainers":[{"name":"penartur","email":"penartur@yandex.ru"}]}},"readme":"node-benchmark-pages\r\n====================\r\n\r\nA library for benchmarking your web service.\r\n\r\nSuppose you want to measure the average response time of your service under a typical load scenario.\r\nThis library allows you to declare such a scenario (in terms of pages and their frequency) and then measure their average response time under a different loads (different simultaneous requests limits).\r\nVarious statistical methods are available for the raw measurements data; the library may also output the statistical data into the console in the convenient form if you like.\r\n\r\nAnother use case is when you have more than one version of the same service and want to compare their response time or maximum load.\r\n\r\n# Examples\r\n\r\nSee the [example](https://github.com/penartur/node-benchmark-pages/tree/master/example) directory.\r\n\r\n# Installation\r\n\r\n```bash\r\n$ npm install cacheio\r\n```\r\n\r\n# Notes\r\n\r\nIt makes little sense to measure the remote services, as the result will generally depend of your network connection and not of your service performance.\r\n\r\nAlso, the library assumes service responses are consistent.\r\nThat is, it assumes that, for any given engine and page, the response length will not change over the time.\r\nIf suddenly your service sent a response of a different length, the library assumes something went wrong, writes an error into your console, and does not use this data when computing statistics.\r\n\r\nCurrently, you're only limited to a single running benchmark per process.\r\nIt is related to a global `http.globalAgent.maxSockets` variable.\r\n\r\n# License\r\n\r\n(The MIT License)\r\n\r\nCopyright (C) 2012 penartur \r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n","maintainers":[{"name":"penartur","email":"penartur@yandex.ru"}],"time":{"modified":"2012-05-11T06:03:40.117Z","created":"2012-05-11T06:03:37.065Z","0.0.1":"2012-05-11T06:03:40.117Z"},"author":{"name":"penartur","url":"https://github.com/penartur/"},"repository":{"type":"git","url":"git://github.com/penartur/node-benchmark-pages.git"},"_id":"benchmark-pages","_rev":"1-abcf62b4aa19591a22c9304089e3c560"} ÿdocument-storeÿbase-framework¡{"id":"base-framework","rev":"1-14ce8b7553b9562c0129bc2aaee0b6c5","rev_tree":[{"pos":1,"ids":["14ce8b7553b9562c0129bc2aaee0b6c5",{"status":"available"},[]]}],"rev_map":{"1-14ce8b7553b9562c0129bc2aaee0b6c5":3423},"winningRev":"1-14ce8b7553b9562c0129bc2aaee0b6c5","deleted":false,"seq":3423}ÿby-sequenceÿ0000000000003423Ò {"name":"base-framework","description":"An object prototype building framework","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"base-framework","description":"An object prototype building framework","keywords":["objects","prototyping","framework"],"version":"1.0.0","homepage":"https://CharlotteGore@github.com/CharlotteGore/Base.git","author":{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"},"contributors":[{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"}],"dependencies":{"underscore":"1.3.x"},"devDependencies":{"mocha":"*","should":"*"},"main":"lib/base","directories":{"lib":"lib"},"repository":{"type":"git","url":"git://github.com/CharlotteGore/Base.git"},"engines":{"node":"*"},"_npmUser":{"name":"CharlotteGore","email":"conspiracygore@gmail.com"},"_id":"base-framework@1.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"ad5f38a9cf3c6c818196bf46f04fe3f982729c8a","tarball":"http://registry.npmjs.org/base-framework/-/base-framework-1.0.0.tgz"},"maintainers":[{"name":"CharlotteGore","email":"conspiracygore@gmail.com"}]},"1.0.1":{"name":"base-framework","description":"An object prototype building framework","keywords":["objects","prototyping","framework"],"version":"1.0.1","homepage":"https://CharlotteGore@github.com/CharlotteGore/Base.git","author":{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"},"contributors":[{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"}],"dependencies":{"underscore":"1.3.x"},"devDependencies":{"mocha":"*","should":"*"},"main":"lib/base","directories":{"lib":"lib"},"repository":{"type":"git","url":"git://github.com/CharlotteGore/Base.git"},"engines":{"node":"*"},"_npmUser":{"name":"CharlotteGore","email":"conspiracygore@gmail.com"},"_id":"base-framework@1.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"7336163860b4edbb33e40ac7a708d6375775c253","tarball":"http://registry.npmjs.org/base-framework/-/base-framework-1.0.1.tgz"},"maintainers":[{"name":"CharlotteGore","email":"conspiracygore@gmail.com"}]}},"readme":"## The summary\n\nBase is a lightweight framework for creating consistent, highly readable, chainable and inheritable object prototypes in Javascript. This git repo is for an NPM module for use with Node. It can be used in the browser so long as you manually satisfy the [Underscore](http://documentcloud.github.com/underscore/) dependency. You're already using Underscore though, anyway, right?\n\n## The detail\n\n### Example\n\n\t// Require base...\n\tvar base = require('base');\n \n\t// create a base child. Add the default 'init' constructor which is\n\t// executed automatically when the object is invoked, and another \n\t// instance method.\n\n\tvar MyFactory = base.createChild()\n\t\t.AddInstanceMethods({\n\t\t\tinit : function( args ){\n\t\t\t\tthis.args = args;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tspewArgs : function(){\n\t\t\t\tconsole.log(this.args);\n\t\t\t}\n\t\t});\n\n\tvar myInstance = MyFactory({ hello : 'world'}).spewArgs() // outputs {hello : 'world'} to the console\n\nObjects created with `base.createChild()` have a number of static methods which are used to build your factory.\n\n### addStaticMethods\n\n\tvar Foo = base.createChild();\n\n\tFoo.addStaticMethods({\n\t\tsecretOfLifeUniverseAndEverything : function(){\n\t\t\treturn 42;\n\t\t}\n\t});\n\n\tFoo.secretOfLifeTheUniverseAndEverything() === 42 // TRUE\n\n\n","maintainers":[{"name":"CharlotteGore","email":"conspiracygore@gmail.com"}],"time":{"modified":"2012-04-21T15:19:29.886Z","created":"2012-04-21T15:03:22.228Z","1.0.0":"2012-04-21T15:03:23.937Z","1.0.1":"2012-04-21T15:19:29.886Z"},"author":{"name":"Charlotte Gore","email":"conspiracygore@gmail.com","url":"http://charlottegore.com/"},"repository":{"type":"git","url":"git://github.com/CharlotteGore/Base.git"},"_id":"base-framework","_rev":"1-14ce8b7553b9562c0129bc2aaee0b6c5"}ÿdocument-storeÿbadass™{"id":"badass","rev":"1-6cc85eaf859f35136e72361e7a7b5423","rev_tree":[{"pos":1,"ids":["6cc85eaf859f35136e72361e7a7b5423",{"status":"available"},[]]}],"rev_map":{"1-6cc85eaf859f35136e72361e7a7b5423":3422},"winningRev":"1-6cc85eaf859f35136e72361e7a7b5423","deleted":false,"seq":3422}ÿby-sequenceÿ0000000000003422œ&{"name":"badass","description":"the proxy that breaks all the rules","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"badass","version":"0.0.0","description":"the proxy that breaks all the rules","homepage":"http://github.com/dominictarr/badass","repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"dependencies":{},"devDependencies":{},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"badass@0.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6d4d5679b8db88d6cf0545c23a0078b8b5944087","tarball":"http://registry.npmjs.org/badass/-/badass-0.0.0.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.1":{"name":"badass","version":"0.0.1","description":"the proxy that breaks all the rules","homepage":"http://github.com/dominictarr/badass","repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"dependencies":{"event-stream":"~2"},"devDependencies":{"request":"~2.9"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"badass@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"826d5fe7ac2a2b99ff46aa30ff7acd4a0bee53a0","tarball":"http://registry.npmjs.org/badass/-/badass-0.0.1.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.0":{"name":"badass","version":"0.1.0","description":"the proxy that breaks all the rules","homepage":"http://github.com/dominictarr/badass","repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"dependencies":{"event-stream":"~2"},"devDependencies":{"request":"~2.9"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"badass@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e62535d14dd9b13271ff2fab8c38bf6c943fb6e2","tarball":"http://registry.npmjs.org/badass/-/badass-0.1.0.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.1":{"name":"badass","version":"0.1.1","description":"the proxy that breaks all the rules","homepage":"http://github.com/dominictarr/badass","repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"dependencies":{"event-stream":"~2"},"devDependencies":{"request":"~2.9"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"license":["MIT","Apache2"],"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"badass@0.1.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"cc8885affe360796f680d0c0c7733eca9371d73c","tarball":"http://registry.npmjs.org/badass/-/badass-0.1.1.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.2.0":{"name":"badass","version":"0.2.0","description":"the proxy that breaks all the rules","homepage":"http://github.com/dominictarr/badass","repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"dependencies":{"event-stream":"~2"},"devDependencies":{"request":"~2.9","tap":"~2.5"},"scripts":{"test":"tap test/"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"license":["MIT","Apache2"],"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"badass@0.2.0","_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7398b5b2f57f25c2001c6a1135cd4d66c775ee73","tarball":"http://registry.npmjs.org/badass/-/badass-0.2.0.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-08-07T14:38:24.858Z","created":"2012-06-15T12:54:10.487Z","0.0.0":"2012-06-15T12:54:24.284Z","0.0.1":"2012-06-15T13:45:54.195Z","0.1.0":"2012-06-15T15:00:33.937Z","0.1.1":"2012-06-15T15:11:55.455Z","0.2.0":"2012-06-18T14:49:14.331Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/badass.git"},"users":{},"_id":"badass","_rev":"1-6cc85eaf859f35136e72361e7a7b5423"}ÿdocument-storeÿbackdroidœ{"id":"backdroid","rev":"1-b0b19b65a1810cdfc333a0e049722d99","rev_tree":[{"pos":1,"ids":["b0b19b65a1810cdfc333a0e049722d99",{"status":"available"},[]]}],"rev_map":{"1-b0b19b65a1810cdfc333a0e049722d99":3421},"winningRev":"1-b0b19b65a1810cdfc333a0e049722d99","deleted":false,"seq":3421}ÿby-sequenceÿ0000000000003421æ{"name":"backdroid","description":"it's a backdoor for Android formed by a client written in JavaScript, with the help of http://onx.ms/, and a server written in NodeJS.","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"backdroid","version":"1.0.0","author":{"name":"yeikos"},"description":"it's a backdoor for Android formed by a client written in JavaScript, with the help of http://onx.ms/, and a server written in NodeJS.","homepage":"https://github.com/yeikos/backdroid","main":"server.js","dependencies":{"express":"2.5.x","socket.io":"0.9.x"},"_npmUser":{"name":"yeikos","email":"yeikos@gmail.com"},"_id":"backdroid@1.0.0","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"3fcb6b4dde072e58e7038611328e1f717a6c22d9","tarball":"http://registry.npmjs.org/backdroid/-/backdroid-1.0.0.tgz"},"maintainers":[{"name":"yeikos","email":"yeikos@gmail.com"}]},"1.0.1":{"name":"backdroid","version":"1.0.1","author":{"name":"yeikos"},"description":"it's a backdoor for Android formed by a client written in JavaScript, with the help of http://onx.ms/, and a server written in NodeJS.","homepage":"https://github.com/yeikos/backdroid","main":"server.js","dependencies":{"express":"2.5.x","socket.io":"0.9.x"},"_npmUser":{"name":"yeikos","email":"yeikos@gmail.com"},"_id":"backdroid@1.0.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1e204daddb787f273ad6a7e138460c7e97612ca9","tarball":"http://registry.npmjs.org/backdroid/-/backdroid-1.0.1.tgz"},"maintainers":[{"name":"yeikos","email":"yeikos@gmail.com"}]}},"readme":"Backdroid v1.0.0 BETA\r\n==================================================\r\n\r\nWhat is this?\r\n--------------------------------------\r\n\r\nit's a backdoor for Android formed by a client written in JavaScript, with the help of http://onx.ms/, and a server written in NodeJS.\r\n\r\nFeatures\r\n--------------------------------------\r\n\r\n\tEncrypted connection in AES-256\r\n\tWeb panel control\r\n\tVery flexible and scalable to add new features\r\n\r\nHow to install?\r\n--------------------------------------\r\n\r\n1º Download and install NodeJS (http://nodejs.org/).\r\n2º Install backdroid with npm by the console (npm install -g backdroid).\r\n3º Download and install Onx App for Android (https://play.google.com/store/apps/details?id=com.microsoft.onx.app).\r\n4º Login in https://www.onx.ms/.\r\n5º Download backdroid proyect.\r\n6º Copy client.js source code (https://github.com/yeikos/nodejs.backdroid/blob/master/client.js) and paste it into https://www.onx.ms/#!createScriptPage (new rule).\r\n7º Go to examples project folder and launch each example by the console (node SCRIPTNAME).\r\n\r\nExample\r\n--------------------------------------\r\n\t\r\n\tvar backdroid = require('backdroid');\r\n\r\n\tbackdroid.setCommand('location', { provider: 'CELL' }, function(command, value) {\r\n\r\n\t\tconsole.log('[sent]', command, value);\r\n\r\n\t}, function(command, value, response) {\r\n\r\n\t\tconsole.log('[response]', command, value, response);\r\n\r\n\t});\r\n\r\n\tbackdroid.createCommandServer({\r\n\r\n\t\tpassword: 'secret',\r\n\t\tpassword_encryptation: 'secret123',\r\n\t\t\r\n\t\tport: 8888\r\n\r\n\t});","maintainers":[{"name":"yeikos","email":"yeikos@gmail.com"}],"time":{"modified":"2012-06-25T08:31:57.512Z","created":"2012-06-25T08:16:14.314Z","1.0.0":"2012-06-25T08:16:21.514Z","1.0.1":"2012-06-25T08:31:57.512Z"},"author":{"name":"yeikos"},"_id":"backdroid","_rev":"1-b0b19b65a1810cdfc333a0e049722d99"}!ÿdocument-storeÿbackbone-define¢{"id":"backbone-define","rev":"1-50a76d8c5f37cedd51231380d7e61a1e","rev_tree":[{"pos":1,"ids":["50a76d8c5f37cedd51231380d7e61a1e",{"status":"available"},[]]}],"rev_map":{"1-50a76d8c5f37cedd51231380d7e61a1e":3420},"winningRev":"1-50a76d8c5f37cedd51231380d7e61a1e","deleted":false,"seq":3420}ÿby-sequenceÿ0000000000003420Ì#{"name":"backbone-define","description":"ExtJS style class definition for name aware Classes","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"backbone-define","version":"0.0.1","author":{"name":"Morgan 'ARR!' Allen"},"description":"ExtJS style class definition for name aware Classes","contributors":[{"name":"Morgan 'ARR!' Allen","email":"morganrallen@gmail.com"}],"scripts":{"test":"node ./node_modules/qunit/bin/cli.js -t ./test/tests.js -c ./lib/BackboneDefine.js"},"repository":{"type":"git","url":""},"dependencies":{"backbone":"0.9.2","underscore":"1.3.3","qunit":"0.5.2"},"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"morganrallen","email":"morganrallen@gmail.com"},"_id":"backbone-define@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2fe609eb8f50ab2c53db57deeebc9fa062e3547c","tarball":"http://registry.npmjs.org/backbone-define/-/backbone-define-0.0.1.tgz"},"maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}],"directories":{}},"0.0.2":{"name":"backbone-define","version":"0.0.2","author":{"name":"Morgan 'ARR!' Allen"},"description":"ExtJS style class definition for name aware Classes","contributors":[{"name":"Morgan 'ARR!' Allen","email":"morganrallen@gmail.com"}],"scripts":{"test":"node ./node_modules/qunit/bin/cli.js -t ./test/tests.js -c ./lib/BackboneDefine.js"},"repository":{"type":"git","url":"git://github.com/morganrallen/backbone-define.git"},"dependencies":{"backbone":"0.9.2","underscore":"1.3.3","qunit":"0.5.2"},"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"morganrallen","email":"morganrallen@gmail.com"},"_id":"backbone-define@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"ec2615e73a272696a9b0830db0d5bd97305ab443","tarball":"http://registry.npmjs.org/backbone-define/-/backbone-define-0.0.2.tgz"},"maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}],"directories":{}},"0.0.3":{"name":"backbone-define","version":"0.0.3","author":{"name":"Morgan 'ARR!' Allen"},"description":"ExtJS style class definition for name aware Classes","contributors":[{"name":"Morgan 'ARR!' Allen","email":"morganrallen@gmail.com"}],"keywords":["backbone","plugin"],"scripts":{"test":"node ./node_modules/qunit/bin/cli.js -t ./test/tests.js -c ./lib/BackboneDefine.js"},"repository":{"type":"git","url":"git://github.com/morganrallen/backbone-define.git"},"dependencies":{"backbone":"0.9.2","underscore":"1.3.3"},"devDependencies":{"qunit":"0.5.2"},"license":"MIT","engine":{"node":">=0.6"},"_npmUser":{"name":"morganrallen","email":"morganrallen@gmail.com"},"_id":"backbone-define@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"be1632096422952ce70686dc1f8ae0079d56a844","tarball":"http://registry.npmjs.org/backbone-define/-/backbone-define-0.0.3.tgz"},"maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}]}},"readme":"Add ExtJS style class definition to Backbone.\nUseful for being able to iterate available classes such as when defining classes server side and sharing with client.\nThis can be done without knowing to code in names on both sides.\n\nBy default store Classes on Backbone.Collections, Backbone.Models, etc;\n\n```javascript\nBackbone.Model.define(\"Person\", {\n\tinitialize: function(attributes) {\n\t\tBackbone.Model.prototype.initialize.call(this, attributes);\n\t}\n}, {\n\tsomeClassProperty: \"withvalue\"\n});\n\nvar zaphod = new Backbone.Models.Person({\n\tname: \"Zap\"\n});\n```\n\nIncluding in the browser will automatically bootstrap Backbone with the Class Objects and adding .define to available extensible Classes.\n\nUse in Node\n```javascript\nvar Backbone = require(\"Backbone\");\nrequire(\"backbone-define\")(Backbone);\n```\n","maintainers":[{"name":"morganrallen","email":"morganrallen@gmail.com"}],"time":{"modified":"2012-06-12T17:38:53.728Z","created":"2012-06-06T04:52:34.695Z","0.0.1":"2012-06-06T04:52:48.588Z","0.0.2":"2012-06-06T04:57:17.137Z","0.0.3":"2012-06-07T12:18:32.137Z"},"author":{"name":"Morgan 'ARR!' Allen"},"repository":{"type":"git","url":"git://github.com/morganrallen/backbone-define.git"},"users":{},"_id":"backbone-define","_rev":"1-50a76d8c5f37cedd51231380d7e61a1e"}ÿdocument-storeÿautorequirež{"id":"autorequire","rev":"1-18a38f89367561dd561ca8b583c73ff7","rev_tree":[{"pos":1,"ids":["18a38f89367561dd561ca8b583c73ff7",{"status":"available"},[]]}],"rev_map":{"1-18a38f89367561dd561ca8b583c73ff7":3419},"winningRev":"1-18a38f89367561dd561ca8b583c73ff7","deleted":false,"seq":3419}ÿby-sequenceÿ0000000000003419îÁ{"name":"autorequire","description":"Automatically requires source for a module/project, provided you follow a convention.","dist-tags":{"latest":"0.3.4"},"versions":{"0.1.1":{"name":"autorequire","version":"0.1.1","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"~v0.4.11"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/coffee-script/bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/docco/bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/coffee-script/bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/vows/bin/vows test/*_test.coffee --isolate --spec"},"_npmJsonOpts":{"file":"/Users/ian/.npm/autorequire/0.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"autorequire@0.1.1","_engineSupported":true,"_npmVersion":"1.0.26","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"c968734c1a9b99c572c34c54ffa07b739f5bf41b","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.1.1.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"_npmUser":{"name":"nevir","email":"ian@nevir.net"}},"0.1.2":{"name":"autorequire","version":"0.1.2","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.3 - v0.4.11"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"scripts/test-all"},"_npmJsonOpts":{"file":"/Users/ian/.npm/autorequire/0.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"autorequire@0.1.2","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.3","_defaultsLoaded":true,"dist":{"shasum":"2969cfed4fa330508d9dab5a37513a8602c1bd59","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.1.2.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"_npmUser":{"name":"nevir","email":"ian@nevir.net"}},"0.2.0":{"name":"autorequire","version":"0.2.0","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.3 - v0.4.11"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"scripts/test-all"},"_npmJsonOpts":{"file":"/Users/ian/.npm/autorequire/0.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"autorequire@0.2.0","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"7c15488ad0cd1c2d31c645bb2ba9c24f8b5524c0","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.0.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"_npmUser":{"name":"nevir","email":"ian@nevir.net"}},"0.2.1":{"name":"autorequire","version":"0.2.1","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.3 - v0.4.11"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"scripts/test-all"},"_npmJsonOpts":{"file":"/Users/ian/.npm/autorequire/0.2.1/pack•·rùage/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"autorequire@0.2.1","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"ecf5311b3cdb25416672a6eedaef13cf44700c5e","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.1.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"_npmUser":{"name":"nevir","email":"ian@nevir.net"}},"0.2.2":{"name":"autorequire","version":"0.2.2","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.3 - v0.4.11"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"scripts/test-all"},"_npmJsonOpts":{"file":"/Users/ian/.npm/autorequire/0.2.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"autorequire@0.2.2","_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"b9aae16bc1e0ed0b360f92aa01e2e300e9ead11f","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.2.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"_npmUser":{"name":"nevir","email":"ian@nevir.net"}},"0.2.3":{"name":"autorequire","version":"0.2.3","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.3","_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"aa1ff619e6f09b24e53cb4d32a6d96ec267d95c9","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.3.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.4":{"name":"autorequire","version":"0.2.4","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12 || v0.5.0 - v0.5.10"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","vows":"~0.5.11"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.4","_engineSupported":false,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"9539c70509f31e9aa6e14cb63d6a49454911185c","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.4.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.5":{"name":"autorequire","version":"0.2.5","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12 || v0.5.0 - v0.5.10 || v0.6.0"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.5","_engineSupported":false,"_npmVersion":"1.0.103","_nodeVersion":"v0.5.1","_defaultsLoaded":true,"dist":{"shasum":"e75cff8884e00356da6607167a701729b4d9b6c5","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.5.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.6":{"name":"autorequire","version":"0.2.6","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12 || v0.5.0 - v0.5.10 || v0.6.0"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build":"npm run-script build-lib && npm run-script build-doc","build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","pretest":"npm run-script build-lib","test":"node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.6","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"1a0241da0c525528ddb9e1f686cced561e2981dd","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.6.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.7":{"name":"autorequire","version":"0.2.7","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12 || v0.5.0 - v0.5.10 || v0.6.0"},"dependencies":{},"devDependencies":{"coffee-script":"~1.1.2","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","prepublish":"scripts/prepublish","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.7","_engineSupported":false,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"902912251b0c6439605e0b5d34da8fec6f0a2774","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.7.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.8":{"name":"autorequire","version":"0.2.8","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":"v0.4.0 - v0.4.12 || v0.5.0 - v0.5.10 || v0.6.0 - v0.6.2"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","docco":"https://github.com/nevir/docco/tarball/recursive_dirs","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && node_modules/.bin/docco src/","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","prepublish":"scripts/prepublish","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.8","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"fe6c397ba35a5fb97b749e05e9f3c87c5e2187f8","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.8.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.9":{"name":"autorequire","version":"0.2.9","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.5"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","prepublish":"scripts/prepublish","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.9","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"8e7391dd9f51089507682716224312fb1424c100","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.9.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.2.10":{"name":"autorequire","version":"0.2.10","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"engines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.6"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","prepublish":"scripts/prepublish","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.2.10","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"109d41b42aa015f03baee8cd2c39ff0b94afe25b","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.2.10.tgz"},"readme":"# Autorequire\n\n[![Build Status](https://secure.travis-ci.org/nevir/node-autorequire.png)](http://travis-ci.org/nevir/node-autorequire)\n\nAutorequire provides a means of defining a consistent file and directory structure for your Node.js\npackages. It does not force any one structure upon you - instead, it provides common\nconventions, and the ability to define your own if they do not suit.\n\nAt its heart, autorequire is an extensible replacement for Node's `require()`. It also provides a\nsimple way of navigating a node package (from within and out), using the package's directory\nstructure as a guide, and the convention to assist in naming modules.\n\nWhen interacting with an autorequired Node package, each module and directory is lazy-loaded and\nthen memoized upon reference. This ensures that it is a minimal performance hit.\n\n\n## Usage\n\nTo use autorequire for your package, at its most basic, is just the following in your index:\n\n module.exports = require('autorequire')('./lib');\n\nThat's it! You no longer need to require the core Node modules in any of your project's source\nfiles, nor do they need to require each other. Consumers of your Node.js package require it\nnormally, and should not notice a difference.\n\n\n## Defining Custom Conventions\n\nShould the default convention not suit your needs, there are [several more defined]\n(https://github.com/nevir/node-autorequire/tree/master/src/conventions). You can specify a\nbuilt-in convention by passing its name as the second argument to autorequire:\n\n module.exports = require('autorequire')('./lib', 'Classical');\n\nOr, should you want to override a specific piece of the convention, you can inherit from the default\nconvention. Or, for ease, you can simply pass a hash of instance methods, and autorequire will\nmanage the inheritance for you:\n\n module.exports = require('autorequire')('./lib', {\n directoryToProperty: function(directoryName, parentPath) {\n return this.underscore(directoryName);\n }\n });\n\nFor a full reference of the methods that a convention can define, see the docs for the default\nconvention.\n\n\n## Notes\n\n__The caveat__ to autorequire is that every autorequired module is loaded within a sandboxed\nenvironment via `vm`'s `runInNewContext`. This is so that lazy-loaded modules do not pollute the\nglobal context for everyone. It's also a good practice for Node.js projects to adhere to.\n","maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.3.0":{"name":"autorequire","version":"0.3.0","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"git://github.com/nevir/node-autorequire.git"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"testedEngines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.7"},"engines":{"node":">= 0.4.0 < 0.7.0"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","prepublish":"scripts/prepublish","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"_npmUser":{"name":"nevir","email":"ian@nevir.net"},"_id":"autorequire@0.3.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"d82a9c0766353ac3bd351291ae681ee0fce457cf","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.3.0.tgz"},"readme":"# Autorequire [![Build Status](https://secure.travis-ci.org/nevir/node-autorequire.png)](http://travis-ci.org/nevir/node-autorequire)\n\nAutorequire provides a means of defining a consistent file and directory structure for your Node.js\npackages. It does not force any one structure upon you - instead, it provides common\nconventions, and the ability to define your own if they do not suit.\n\nAt its heart, autorequire is an extensible replacement for Node's `require()`. It also provides a\nsimple way of navigating a node package (from within and out), using the package's directory\nstructure as a guide, and the convention to assist in naming modules.\n\nWhen interacting with an autorequired Node package, each module and directory is lazy-loaded and\nthen memoized upon reference. This ensures that it is a minimal performance hit.\n\n\n## Usage\n\nTo use autorequire for your package, at its most basic, is just the following in your index:\n\n module.exports = require('autorequire')('./lib');\n\nThat's it! You no longer need to require the core Node modules in any of your project's source\nfiles, nor do they need to require each other. Consumers of your Node.js package require it\nnormally, and should not notice a difference.\n\n\n## Defining Custom Conventions\n\nShould the default convention not suit your needs, there are [several more defined]\n(https://github.com/nevir/node-autorequire/tree/master/src/conventions). You can specify a\nbuilt-in convention by passing its name as the second argument to autorequire:\n\n module.exports = require('autorequire')('./lib', 'Classical');\n\nOr, should you want to override a specific piece of the convention, you can inherit from the default\nconvention. Or, for ease, you can simply pass a hash of instance methods, and autorequire will\nmanage the inheritance for you:\n\n module.exports = require('autorequire')('./lib', {\n directoryToProperty: function(directoryName, parentPath) {\n return this.underscore(directoryName);\n }\n });\n\nFor a full reference of the methods that a convention can define, see the docs for the default\nconvention.\n\n\n## Notes\n\n__The caveat__ to autorequire is that every autorequired module is loaded within a sandboxed\nenvironment via `vm`'s `runInNewContext`. This is so that lazy-loaded modules do not pollute the\nglobal context for everyone. It's also a good practice for Node.js projects to adhere to.\n","maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.3.1":{"name":"autorequire","version":"0.3.1","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"https://github.com/nevir/node-autorequire"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"testedEngines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.19 || >= 0.7.0 <= 0.7.12 || >= 0.8.0"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"readme":"# Autorequire [![Build Status](https://secure.travis-ci.org/nevir/node-autorequire.png)](http://travis-ci.org/nevir/node-autorequire)\n\nAutorequire provides a means of defining a consistent file and directory structure for your Node.js\npackages. It does not force any one structure upon you - instead, it provides common\nconventions, and the ability to define your own if they do not suit.\n\nAt its heart, autorequire is an extensible replacement for Node's `require()`. It also provides a\nsimple way of navigating a node package (from within and out), using the package's directory\nstructure as a guide, and the convention to assist in naming modules.\n\nWhen interacting with an autorequired Node package, each module and directory is lazy-loaded and\nthen memoized upon reference. This ensures that it is a minimal performance hit.\n\n\n## Usage\n\nTo use autorequire for your package, at its most basic, is just the following in your index:\n\n module.exports = require('autorequire')('./lib');\n\nThat's it! You no longer need to require the core Node modules in any of your project's source\nfiles, nor do they need to require each other. Consumers of your Node.js package require it\nnormally, and should not notice a difference.\n\n\n## Defining Custom Conventions\n\nShould the default convention not suit your needs, there are [several more defined]\n(https://github.com/nevir/node-autorequire/tree/master/src/conventions). You can specify a\nbuilt-in convention by passing its name as the second argument to autorequire:\n\n module.exports = require('autorequire')('./lib', 'Classical');\n\nOr, should you want to override a specific piece of the convention, you can inherit from the default\nconvention. Or, for ease, you can simply pass a hash of instance methods, and autorequire will\nmanage the inheritance for you:\n\n module.exports = require('autorequire')('./lib', {\n directoryToProperty: function(directoryName, parentPath) {\n return this.underscore(directoryName);\n }\n });\n\nFor a full reference of the methods that a convention can define, see the docs for the default\nconvention.\n\n\n## Notes\n\n__The caveat__ to autorequire is that every autorequired module is loaded within a sandboxed\nenvironment via `vm`'s `runInNewContext`. This is so that lazy-loaded modules do not pollute the\nglobal context for everyone. It's also a good practice for Node.js projects to adhere to.\n","_id":"autorequire@0.3.1","dist":{"shasum":"210b6436fa3c901576ffaddfb4fbd1cb77cfc8a6","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.3.1.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.3.2":{"name":"autorequire","version":"0.3.2","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"https://github.com/nevir/node-autorequire"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"testedEngines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.19 || >= 0.7.0 <= 0.7.12 || >= 0.8.0"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"readme":"# Autorequire [![Build Status](https://secure.travis-ci.org/nevir/node-autorequire.png)](http://travis-ci.org/nevir/node-autorequire)\n\nAutorequire provides a means of defining a consistent file and directory structure for your Node.js\npackages. It does not force any one structure upon you - instead, it provides common\nconventions, and the ability to define your own if they do not suit.\n\nAt its heart, autorequire is an extensible replacement for Node's `require()`. It also provides a\nsimple way of navigating a node package (from within and out), using the package's directory\nstructure as a guide, and the convention to assist in naming modules.\n\nWhen interacting with an autorequired Node package, each module and directory is lazy-loaded and\nthen memoized upon reference. This ensures that it is a minimal performance hit.\n\n\n## Usage\n\nTo use autorequire for your package, at its most basic, is just the following in your index:\n\n module.exports = require('autorequire')('./lib');\n\nThat's it! You no longer need to require the core Node modules in any of your project's source\nfiles, nor do they need to require each other. Consumers of your Node.js package require it\nnormally, and should not notice a difference.\n\n\n## Defining Custom Conventions\n\nShould the default convention not suit your needs, there are [several more defined]\n(https://github.com/nevir/node-autorequire/tree/master/src/conventions). You can specify a\nbuilt-in convention by passing its name as the second argument to autorequire:\n\n module.exports = require('autorequire')('./lib', 'Classical');\n\nOr, should you want to override a specific piece of the convention, you can inherit from the default\nconvention. Or, for ease, you can simply pass a hash of instance methods, and autorequire will\nmanage the inheritance for you:\n\n module.exports = require('autorequire')('./lib', {\n directoryToProperty: function(directoryName, parentPath) {\n return this.underscore(directoryName);\n }\n });\n\nFor a full reference of the methods that a convention can define, see the docs for the default\nconvention.\n\n\n## Notes\n\n__The caveat__ to autorequire is that every autorequired module is loaded within a sandboxed\nenvironment via `vm`'s `runInNewContext`. This is so that lazy-loaded modules do not pollute the\nglobal context for everyone. It's also a good practice for Node.js projects to adhere to.\n","_id":"autorequire@0.3.2","dist":{"shasum":"0bffa46eeeac091adea35baa5a4c3bf5b9f770e2","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.3.2.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]},"0.3.4":{"name":"autorequire","version":"0.3.4","description":"Automatically requires source for a module/project, provided you follow a convention.","keywords":["require","autorequire","autoload","modules","load","loader"],"homepage":"https://github.com/nevir/node-autorequire","author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"licenses":[{"type":"MIT","url":"https://github.com/nevir/node-autorequire/MIT-LICENSE.txt"}],"repository":{"type":"git","url":"https://github.com/nevir/node-autorequire"},"main":"./lib/autorequire","directories":{"lib":"./lib"},"testedEngines":{"node":">= 0.4.0 <= 0.4.12 || >= 0.5.0 <= 0.5.10 || >= 0.6.0 <= 0.6.19 || >= 0.7.0 <= 0.7.12 || >= 0.8.0"},"engines":{"node":">= 0.4.0"},"dependencies":{},"devDependencies":{"coffee-script":"1.1.3","semver":"~1.0.10","underscore":"~1.2.1","vows":"~0.5.13"},"scripts":{"build-lib":"rm -rf lib && node_modules/.bin/coffee -c -o lib/ src/","build-doc":"rm -rf doc && rm -rf doc && groc","console":"npm run-script build-lib && rlwrap --always-readline node_modules/.bin/coffee","test":"npm run-script build-lib && node_modules/.bin/vows test/*_test.coffee --isolate --spec","test-all":"npm run-script build-lib && scripts/test"},"readme":"# Autorequire [![Build Status](https://secure.travis-ci.org/nevir/node-autorequire.png)](http://travis-ci.org/nevir/node-autorequire)\n\nAutorequire provides a means of defining a consistent file and directory structure for your Node.js\npackages. It does not force any one structure upon you - instead, it provides common\nconventions, and the ability to define your own if they do not suit.\n\nAt its heart, autorequire is an extensible replacement for Node's `require()`. It also provides a\nsimple way of navigating a node package (from within and out), using the package's directory\nstructure as a guide, and the convention to assist in naming modules.\n\nWhen interacting with an autorequired Node package, each module and directory is lazy-loaded and\nthen memoized upon reference. This ensures that it is a minimal performance hit.\n\n\n## Usage\n\nTo use autorequire for your package, at its most basic, is just the following in your index:\n\n module.exports = require('autorequire')('./lib');\n\nThat's it! You no longer need to require the core Node modules in any of your project's source\nfiles, nor do they need to require each other. Consumers of your Node.js package require it\nnormally, and should not notice a difference.\n\n\n## Defining Custom Conventions\n\nShould the default convention not suit your needs, there are [several more defined]\n(https://github.com/nevir/node-autorequire/tree/master/src/conventions). You can specify a\nbuilt-in convention by passing its name as the second argument to autorequire:\n\n module.exports = require('autorequire')('./lib', 'Classical');\n\nOr, should you want to override a specific piece of the convention, you can inherit from the default\nconvention. Or, for ease, you can simply pass a hash of instance methods, and autorequire will\nmanage the inheritance for you:\n\n module.exports = require('autoà·ùrequire')('./lib', {\n directoryToProperty: function(directoryName, parentPath) {\n return this.underscore(directoryName);\n }\n });\n\nFor a full reference of the methods that a convention can define, see the docs for the default\nconvention.\n\n\n## Notes\n\n__The caveat__ to autorequire is that every autorequired module is loaded within a sandboxed\nenvironment via `vm`'s `runInNewContext`. This is so that lazy-loaded modules do not pollute the\nglobal context for everyone. It's also a good practice for Node.js projects to adhere to.\n","_id":"autorequire@0.3.4","dist":{"shasum":"bbbb3c0e7a48cf43667d7bba22759f0de38e110a","tarball":"http://registry.npmjs.org/autorequire/-/autorequire-0.3.4.tgz"},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}]}},"maintainers":[{"name":"nevir","email":"ian@nevir.net"}],"time":{"modified":"2012-07-17T01:59:31.749Z","created":"2011-08-25T09:56:18.372Z","0.1.0":"2011-08-25T09:56:19.519Z","0.1.1":"2011-12-07T03:32:14.376Z","0.1.2":"2011-12-07T03:32:14.376Z","0.2.0":"2011-12-07T03:32:14.376Z","0.2.1":"2011-12-07T03:32:14.376Z","0.2.2":"2011-12-07T03:32:14.376Z","0.2.3":"2011-10-30T20:03:10.233Z","0.2.4":"2011-10-31T01:40:52.230Z","0.2.5":"2011-11-06T08:34:17.474Z","0.2.6":"2011-11-06T21:33:06.989Z","0.2.7":"2011-11-10T05:28:38.989Z","0.2.8":"2011-11-22T03:46:34.250Z","0.2.9":"2011-12-07T04:44:44.412Z","0.2.10":"2011-12-21T00:43:14.665Z","0.3.0":"2012-01-10T03:43:23.602Z","0.3.1":"2012-06-27T18:46:53.503Z","0.3.2":"2012-07-11T18:24:08.089Z","0.3.3":"2012-07-17T01:47:25.332Z","0.3.4":"2012-07-17T01:58:32.397Z"},"author":{"name":"Ian MacLeod","email":"ian@nevir.net","url":"https://github.com/nevir"},"repository":{"type":"git","url":"https://github.com/nevir/node-autorequire"},"_id":"autorequire","_rev":"1-18a38f89367561dd561ca8b583c73ff7"}ÿdocument-storeÿaudit˜{"id":"audit","rev":"1-11ac4067de688de00ee3d98ed9b9b23e","rev_tree":[{"pos":1,"ids":["11ac4067de688de00ee3d98ed9b9b23e",{"status":"available"},[]]}],"rev_map":{"1-11ac4067de688de00ee3d98ed9b9b23e":3418},"winningRev":"1-11ac4067de688de00ee3d98ed9b9b23e","deleted":false,"seq":3418}ÿby-sequenceÿ0000000000003418Íb{"name":"audit","description":"Generate performance statistics for async or sync functions","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"audit","version":"0.0.1","description":"Generate performance statistics for async or sync functions","keywords":["bench","audit","performance"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"main":"lib/audit.js","engines":{"node":">= 0.5.0"},"readme":"","_id":"audit@0.0.1","dist":{"shasum":"d1c192dd0adeb8faa52991a25a21a9be60d130e2","tarball":"http://registry.npmjs.org/audit/-/audit-0.0.1.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.0.2":{"name":"audit","version":"0.0.2","description":"Generate performance statistics for async or sync functions","keywords":["bench","audit","performance"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"dependencies":{"vows":"0.6.3","should":"1.0.0"},"main":"lib/audit.js","scripts":"make test","engines":{"node":">= 0.5.0"},"readme":"\n# Audit\n\n`npm install audit`\n\n`npm test audit`\n\nAudit is a benchmarking tool for asynchronous or synchronous functions. It generates the following statistics:\n\n* elapsed time\n* iterations\n* operations per second\n* mean\n* median\n* mode\n* max\n* min\n\n\n## Basic usage\n\n```js\nvar audit = require('audit')({\n iterations:100\n})\n\naudit.on('complete', function(stats) {\n console.log(stats)\n})\n\naudit.on('auditing', function(name) {\n console.log('Auditing', name, '...')\n})\n\naudit.on('auditcomplete', function(stats) {\n console.log('Completed', stats.name)\n})\n\naudit.async(function(next) {\n return next()\n})\n\naudit.sync(function() {\n return 1\n})\n\naudit.run()\n```\n\n## Stats\n\nThe stats object contains the following properties:\n\n* `name`\n* `elapsed`\n* `iterations`\n* `opsPerSecond`\n* `mode`\n* `median`\n* `mean`\n* `max`\n* `min`\n\nSample output:\n\n```\nBenching musicmetadata...\nmusicmetadata 23.12673450508788\nBenching child-ffmpeg...\nchild-ffmpeg 7.58150113722517\n{\n \"musicmetadata\": {\n \"name\": \"musicmetadata\",\n \"elapsed\": \"4324ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 23.12673450508788,\n \"mode\": [ \"19ms\", \"1occ\" ],\n \"median\": \"45ms\",\n \"mean\": \"43.676767676767675ms\",\n \"max\": [ \"61ms\", \"7ind\" ],\n \"min\": [ \"19ms\", \"0ind\" ]\n},\n \"child-ffmpeg\": {\n \"name\": \"child-ffmpeg\",\n \"elapsed\": \"13190ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 7.58150113722517,\n \"mode\": [ \"128ms\", \"1occ\" ],\n \"median\": \"131ms\",\n \"mean\": \"133.23232323232324ms\",\n \"max\": [ \"221ms\", \"0ind\" ],\n \"min\": [ \"128ms\", \"19ind\" ]\n }\n}\n\n```\n\n## Options\n\nPass options to the audit constructor function in an object. Options and their default values follow.\n\n* `iterations` **Number** *1000*\n\nNumber of times to execute the provided functions\n\n* `pause` **Number** *100*\n\nNumber of milliseconds to pause between audits.\n","_id":"audit@0.0.2","dist":{"shasum":"31dc6b91878caccb22d11ad78d7e6d02a4b757d9","tarball":"http://registry.npmjs.org/audit/-/audit-0.0.2.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.0.3":{"name":"audit","version":"0.0.3","description":"Generate performance statistics for async or sync functions","keywords":["bench","audit","performance"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"dependencies":{"vows":"0.6.3","should":"1.0.0"},"main":"lib/audit.js","scripts":"make test","engines":{"node":">= 0.5.0"},"readme":"\n# Audit\n\n`npm install audit`\n\n`npm test audit`\n\nAudit is a benchmarking tool for asynchronous or synchronous functions. It generates the following statistics:\n\n* elapsed time\n* iterations\n* operations per second\n* mean\n* median\n* mode\n* max\n* min\n\n\n## Basic usage\n\n```js\nvar audit = require('audit')({\n iterations:100\n})\n\naudit.on('complete', function(stats) {\n console.log(stats)\n})\n\naudit.on('auditing', function(name) {\n console.log('Auditing', name, '...')\n})\n\naudit.on('auditcomplete', function(stats) {\n console.log('Completed', stats.name)\n})\n\naudit.async(function(next) {\n return next()\n})\n\naudit.sync(function() {\n return 1\n})\n\naudit.run()\n```\n\n## Stats\n\nThe stats object contains the following properties:\n\n* `name`\n* `elapsed`\n* `iterations`\n* `opsPerSecond`\n* `mode`\n* `median`\n* `mean`\n* `max`\n* `min`\n\nSample output:\n\n```\nBenching musicmetadata...\nmusicmetadata 23.12673450508788\nBenching child-ffmpeg...\nchild-ffmpeg 7.58150113722517\n{\n \"musicmetadata\": {\n \"name\": \"musicmetadata\",\n \"elapsed\": \"4324ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 23.12673450508788,\n \"mode\": [ \"19ms\", \"1occ\" ],\n \"median\": \"45ms\",\n \"mean\": \"43.676767676767675ms\",\n \"max\": [ \"61ms\", \"7ind\" ],\n \"min\": [ \"19ms\", \"0ind\" ]\n},\n \"child-ffmpeg\": {\n \"name\": \"child-ffmpeg\",\n \"elapsed\": \"13190ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 7.58150113722517,\n \"mode\": [ \"128ms\", \"1occ\" ],\n \"median\": \"131ms\",\n \"mean\": \"133.23232323232324ms\",\n \"max\": [ \"221ms\", \"0ind\" ],\n \"min\": [ \"128ms\", \"19ind\" ]\n }\n}\n\n```\n\n## Options\n\nPass options to the audit constructor function in an object. Options and their default values follow.\n\n* `iterations` **Number** *1000*\n\nNumber of times to execute the provided functions\n\n* `pause` **Number** *100*\n\nNumber of milliseconds to pause between audits.\n","_id":"audit@0.0.3","dist":{"shasum":"e8252ebc93f2660f41628ea22ca7970bef8c2335","tarball":"http://registry.npmjs.org/audit/-/audit-0.0.3.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.0.4":{"name":"audit","version":"0.0.4","description":"Generate performance statistics for async or sync functions","keywords":["bench","audit","performance"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"dependencies":{"vows":"0.6.3","should":"1.0.0"},"main":"lib/audit.js","scripts":{"test":"make test"},"engines":{"node":">= 0.5.0"},"readme":"\n# Audit\n\n`npm install audit`\n\n`npm test audit`\n\nAudit is a benchmarking tool for asynchronous or synchronous functions. It generates the following statistics:\n\n* elapsed time\n* iterations\n* operations per second\n* mean\n* median\n* mode\n* max\n* min\n\n\n## Basic usage\n\n```js\nvar audit = require('audit')({\n iterations:100\n})\n\naudit.on('complete', function(stats) {\n console.log(stats)\n})\n\naudit.on('auditing', function(name) {\n console.log('Auditing', name, '...')\n})\n\naudit.on('auditcomplete', function(stats) {\n console.log('Completed', stats.name)\n})\n\naudit.async(function(next) {\n return next()\n})\n\naudit.sync(function() {\n return 1\n})\n\naudit.run()\n```\n\n## Stats\n\nThe stats object contains the following properties:\n\n* `name`\n* `elapsed`\n* `iterations`\n* `opsPerSecond`\n* `mode`\n* `median`\n* `mean`\n* `max`\n* `min`\n\nSample output:\n\n```\nBenching musicmetadata...\nmusicmetadata 23.12673450508788\nBenching child-ffmpeg...\nchild-ffmpeg 7.58150113722517\n{\n \"musicmetadata\": {\n \"name\": \"musicmetadata\",\n \"elapsed\": \"4324ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 23.12673450508788,\n \"mode\": [ \"19ms\", \"1occ\" ],\n \"median\": \"45ms\",\n \"mean\": \"43.676767676767675ms\",\n \"max\": [ \"61ms\", \"7ind\" ],\n \"min\": [ \"19ms\", \"0ind\" ]\n},\n \"child-ffmpeg\": {\n \"name\": \"child-ffmpeg\",\n \"elapsed\": \"13190ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 7.58150113722517,\n \"mode\": [ \"128ms\", \"1occ\" ],\n \"median\": \"131ms\",\n \"mean\": \"133.23232323232324ms\",\n \"max\": [ \"221ms\", \"0ind\" ],\n \"min\": [ \"128ms\", \"19ind\" ]\n }\n}\n\n```\n\n## Options\n\nPass options to the audit constructor function in an object. Options and their default values follow.\n\n* `iterations` **Number** *1000*\n\nNumber of times to execute the provided functions\n\n* `pause` **Number** *100*\n\nNumber of milliseconds to pause between audits.\n","_id":"audit@0.0.4","dist":{"shasum":"eb777068c9eaee39b4e7e9036496d0f9160e92a9","tarball":"http://registry.npmjs.org/audit/-/audit-0.0.4.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.0.6":{"name":"audit","version":"0.0.6","description":"Generate performance statistics for async or sync functions","keywords":["bench","audit","performance"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"devDependencies":{"vows":"0.6.3","should":"1.0.0"},"main":"lib/audit.js","scripts":{"test":"make test"},"engines":{"node":">= 0.5.0"},"readme":"\n# Audit\n\n`npm install audit`\n\nAudit is a benchmarking tool for asynchronous or synchronous functions. It generates the following statistics:\n\n* elapsed time\n* iterations\n* operations per second\n* mean\n* median\n* mode\n* max\n* min\n\n\n## Basic usage\n\n```js\nvar Audit = require('audit')\nvar audit = new Audit({\n iterations:100\n})\n\naudit.on('complete', function(stats) {\n console.log(stats)\n})\n\naudit.on('auditing', function(name) {\n console.log('Auditing', name, '...')\n})\n\naudit.on('auditcomplete', function(stats) {\n console.log('Completed', stats.name)\n})\n\naudit.async(function(next) {\n return next()\n})\n\naudit.sync(function() {\n return 1\n})\n\naudit.run()\n```\n\n## Chaining\n\n```js\nvar Audit = require('audit')\nvar audit = new Audit()\n\naudit.on('complete', console.log)\n\naudit\n.async('mytestname', function(next) {\n return next()\n})\n.async('mytestname2', function(next) {\n return next()\n})\n.async('mytestname3', function(next) {\n return next()\n})\n.run()\n\n```\n\n## Stats\n\nThe stats object contains the following properties:\n\n* `name`\n* `elapsed`\n* `iterations`\n* `opsPerSecond`\n* `mode`\n* `median`\n* `mean`\n* `max`\n* `min`\n\nSample output:\n\n```\nBenching musicmetadata...\nmusicmetadata 23.12673450508788\nBenching child-ffmpeg...\nchild-ffmpeg 7.58150113722517\n{\n \"musicmetadata\": {\n \"name\": \"musicmetadata\",\n \"elapsed\": \"4324ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 23.12673450508788,\n \"mode\": [ \"19ms\", \"1occ\" ],\n \"median\": \"45ms\",\n \"mean\": \"43.676767676767675ms\",\n \"max\": [ \"61ms\", \"7ind\" ],\n \"min\": [ \"19ms\", \"0ind\" ]\n},\n \"child-ffmpeg\": {\n \"name\": \"child-ffmpeg\",\n \"elapsed\": \"13190ms\",\n \"iterations\": 100,\n \"opsPerSecond\": 7.58150113722517,\n \"mode\": [ \"128ms\", \"1occ\" ],\n \"median\": \"131ms\",\n \"mean\": \"133.23232323232324ms\",\n \"max\": [ \"221ms\", \"0ind\" ],\n \"min\": [ \"128ms\", \"19ind\" ]\n }\n}\n\n```\n\n## Options\n\nPass options to the audit constructor function in an object. Options and their default values follow.\n\n* `iterations` **Number** *1000*\n\nNumber of times to execute the provided functions\n\n* `pause` **Number** *100*\n\nNumber of milliseconds to pause between audits.\n","_id":"audit@0.0.6","dist":{"shasum":"fef17dd84af1dcd2a5633fd46d3b1adcb084bf3b","tarball":"http://registry.npmjs.org/audit/-/audit-0.0.6.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]}},"readme":"","maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}],"time":{"modified":"2012-08-02T13:44:36.811Z","created":"2012-07-19T00:29:14.198Z","0.0.1":"2012-07-19T00:29:14.493Z","0.0.2":"2012-07-21T19:50:25.699Z","0.0.3":"2012-07-21T19:54:50.648Z","0.0.4":"2012-07-21T19:56:50.640Z","0.0.6":"2012-07-23T18:56:21.840Z"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"repository":{"type":"git","url":"git://github.com/Weltschmerz/Audit.git"},"users":{"fgribreau":true},"_id":"audit","_rev":"1-11ac4067de688de00ee3d98ed9b9b23e"}%ÿdocument-storeÿarchitect-validator¦{"id":"architect-validator","rev":"1-a5a543bf94d3ddf05152161c41e7b61d","rev_tree":[{"pos":1,"ids":["a5a543bf94d3ddf05152161c41e7b61d",{"status":"available"},[]]}],"rev_map":{"1-a5a543bf94d3ddf05152161c41e7b61d":3417},"winningRev":"1-a5a543bf94d3ddf05152161c41e7b61d","deleted":false,"seq":3417}ÿby-sequenceÿ0000000000003417ù{"name":"architect-validator","description":"Validator for Architect","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-validator","description":"Validator for Architect","version":"0.0.1","main":"index.js","author":{"name":"Nujii Labs","email":"developer@nujii.com"},"contributors":[{"name":"Cameron Bytheway","email":"cameron@nujii.com"}],"repository":{"type":"git","url":"git://github.com/nujii/architect-validator.git"},"license":"MIT","dependencies":{"validator":"~0.4.11","underscore":"~1.3.3"},"plugin":{"provides":["validator"],"consumes":[]},"readme":"# architect-validator\n\n[validator](https://github.com/chriso/node-validator) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-validator\",\n \"sanitize\": true\n}\n```\n\n## Usage\n\nValidate that ssssshtuff\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var validator = imports.validator;\n\n var obj = {\n email: \"this isn't an email\",\n name: \"My name can be whatever\"\n }\n\n validator(obj, function(key, value){\n // throw an exception or return false\n if (key == 'email') {\n return isEmail(value);\n }\n }, function(errors){\n // Errors come back as a list of kv's\n // errors == [{key: 'email', \"My name can be whatever\"}]\n });\n\n};\n```\n","_id":"architect-validator@0.0.1","dist":{"shasum":"4b84143c1b49436ec74325a0d349b2c08e77488a","tarball":"http://registry.npmjs.org/architect-validator/-/architect-validator-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-validator\n\n[validator](https://github.com/chriso/node-validator) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-validator\",\n \"sanitize\": true\n}\n```\n\n## Usage\n\nValidate that ssssshtuff\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var validator = imports.validator;\n\n var obj = {\n email: \"this isn't an email\",\n name: \"My name can be whatever\"\n }\n\n validator(obj, function(key, value){\n // throw an exception or return false\n if (key == 'email') {\n return isEmail(value);\n }\n }, function(errors){\n // Errors come back as a list of kv's\n // errors == [{key: 'email', \"My name can be whatever\"}]\n });\n\n};\n```\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-22T16:38:25.577Z","created":"2012-08-22T16:38:24.583Z","0.0.1":"2012-08-22T16:38:25.577Z"},"author":{"name":"Nujii Labs","email":"developer@nujii.com"},"repository":{"type":"git","url":"git://github.com/nujii/architect-validator.git"},"_id":"architect-validator","_rev":"1-a5a543bf94d3ddf05152161c41e7b61d"}"ÿdocument-storeÿarchitect-stylus£{"id":"architect-stylus","rev":"1-b738a2971dfdfce369b44216b3ccede9","rev_tree":[{"pos":1,"ids":["b738a2971dfdfce369b44216b3ccede9",{"status":"available"},[]]}],"rev_map":{"1-b738a2971dfdfce369b44216b3ccede9":3416},"winningRev":"1-b738a2971dfdfce369b44216b3ccede9","deleted":false,"seq":3416}ÿby-sequenceÿ0000000000003416›{"name":"architect-stylus","description":"Stylus plugin for Architect","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-stylus","description":"Stylus plugin for Architect","version":"0.0.1","main":"index.js","author":{"name":"Nujii Labs","email":"developer@nujii.com"},"contributors":[{"name":"Cameron Bytheway","email":"cameron@nujii.com"}],"repository":{"type":"git","url":"git://github.com/nujii/architect-stylus.git"},"license":"MIT","dependencies":{"stylus":"~0.29.0","nib":"~0.8.1","architect-express":"~0.0.1","architect-logger":"~0.0.1"},"plugin":{"consumes":["logger","express"]},"readme":"# architect-stylus\n\n[stylus](https://github.com/LearnBoost/stylus) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-stylus\",\n \"src\": __dirname+\"/assets\",\n \"dest\": __dirname+\"/target\",\n // Compress the output\n \"compress\": true,\n // Forces recompilation for every request\n \"force\": true\n}\n```\n\n## Usage\n\nNow we mount /target as a static path and we can access our\nstylesheets at `http://0.0.0.0:{port}/{cssFolder}/{file.css}`\nand it will be compiled on the fly\n\n## TODO\n\n- Provide some tests\n","_id":"architect-stylus@0.0.1","dist":{"shasum":"549d31addc5bff2cb99f4d062cbb00d58f483c13","tarball":"http://registry.npmjs.org/architect-stylus/-/architect-stylus-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-stylus\n\n[stylus](https://github.com/LearnBoost/stylus) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-stylus\",\n \"src\": __dirname+\"/assets\",\n \"dest\": __dirname+\"/target\",\n // Compress the output\n \"compress\": true,\n // Forces recompilation for every request\n \"force\": true\n}\n```\n\n## Usage\n\nNow we mount /target as a static path and we can access our\nstylesheets at `http://0.0.0.0:{port}/{cssFolder}/{file.css}`\nand it will be compiled on the fly\n\n## TODO\n\n- Provide some tests\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-22T16:20:22.571Z","created":"2012-08-22T16:20:21.558Z","0.0.1":"2012-08-22T16:20:22.571Z"},"author":{"name":"Nujii Labs","email":"developer@nujii.com"},"repository":{"type":"git","url":"git://github.com/nujii/architect-stylus.git"},"_id":"architect-stylus","_rev":"1-b738a2971dfdfce369b44216b3ccede9"}"ÿdocument-storeÿarchitect-logger£{"id":"architect-logger","rev":"1-87314c7711fffecbc5330775f9f815ee","rev_tree":[{"pos":1,"ids":["87314c7711fffecbc5330775f9f815ee",{"status":"available"},[]]}],"rev_map":{"1-87314c7711fffecbc5330775f9f815ee":3415},"winningRev":"1-87314c7711fffecbc5330775f9f815ee","deleted":false,"seq":3415}ÿby-sequenceÿ0000000000003415ý{"name":"architect-logger","description":"Winston plugin for Architect","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-logger","description":"Winston plugin for Architect","version":"0.0.1","main":"index.js","author":{"name":"Nujii Labs","email":"developer@nujii.com"},"contributors":[{"name":"Cameron Bytheway","email":"cameron@nujii.com"}],"repository":{"type":"git","url":"git://github.com/nujii/architect-logger.git"},"license":"MIT","dependencies":{"winston":"~0.6.2"},"plugin":{"provides":["logger"]},"readme":"# architect-logger\n\nThis plugin uses [winston](https://github.com/flatiron/winston) \nas a logging backend\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-logger\",\n \"exitOnError\": false,\n \"transports\": {\n \"console\": {\n \"colorize\": true,\n \"level\": \"verbose\"\n },\n \"file\": {\n \"filename\": \"./logs/errors.log\",\n \"level\": \"warn\"\n }\n }\n}\n```\n\n## Usage\n\nLet's use that puppy in our plugin\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var log = imports.logger;\n\n logger.info(\"Hello!\");\n logger.warn(\"Uh oh! There's an error coming...\");\n logger.error(\"We're going down\");\n\n};\n```\n\n## TODO\n- Support for multiple categories\n","_id":"architect-logger@0.0.1","dist":{"shasum":"f2a2de4e42d1365379ae0bea3a726b89554e3a83","tarball":"http://registry.npmjs.org/architect-logger/-/architect-logger-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-logger\n\nThis plugin uses [winston](https://github.com/flatiron/winston) \nas a logging backend\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-logger\",\n \"exitOnError\": false,\n \"transports\": {\n \"console\": {\n \"colorize\": true,\n \"level\": \"verbose\"\n },\n \"file\": {\n \"filename\": \"./logs/errors.log\",\n \"level\": \"warn\"\n }\n }\n}\n```\n\n## Usage\n\nLet's use that puppy in our plugin\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var log = imports.logger;\n\n logger.info(\"Hello!\");\n logger.warn(\"Uh oh! There's an error coming...\");\n logger.error(\"We're going down\");\n\n};\n```\n\n## TODO\n- Support for multiple categories\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-22T16:40:11.232Z","created":"2012-08-22T16:40:10.195Z","0.0.1":"2012-08-22T16:40:11.232Z"},"author":{"name":"Nujii Labs","email":"developer@nujii.com"},"repository":{"type":"git","url":"git://github.com/nujii/architect-logger.git"},"_id":"architect-logger","_rev":"1-87314c7711fffecbc5330775f9f815ee"}*ÿdocument-storeÿarchitect-express-static«{"id":"architect-express-static","rev":"1-8dbc2e7564ea430afa19068efc092b48","rev_tree":[{"pos":1,"ids":["8dbc2e7564ea430afa19068efc092b48",{"status":"available"},[]]}],"rev_map":{"1-8dbc2e7564ea430afa19068efc092b48":3414},"winningRev":"1-8dbc2e7564ea430afa19068efc092b48","deleted":false,"seq":3414}ÿby-sequenceÿ0000000000003414¥{"name":"architect-express-static","description":"Static folder configuration for Express/Architect","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-express-static","description":"Static folder configuration for Express/Architect","version":"0.0.1","main":"index.js","author":{"name":"Nujii Labs","email":"developer@nujii.com"},"contributors":[{"name":"Cameron Bytheway","email":"cameron@nujii.com"}],"repository":{"type":"git","url":"git://github.com/nujii/architect-express-static.git"},"license":"MIT","dependencies":{"express":"~2.5.11","architect-express":"~0.0.1","architect-logger":"~0.0.1"},"plugin":{"consumes":["logger","express"],"provides":[]},"readme":"# architect-express-static\n\nThis plugin adds a static folder configuration to an express/architect system\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-express-static\",\n \"path\": \"./assets/js\",\n \"mount\": \"/js\"\n}\n```\n\n## TODO\n- Allow plugins to register path\n","_id":"architect-express-static@0.0.1","dist":{"shasum":"f8cc5d857470b65218bf2f742bd2671d13513bf8","tarball":"http://registry.npmjs.org/architect-express-static/-/architect-express-static-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-express-static\n\nThis plugin adds a static folder configuration to an express/architect system\n\n## Config Format\n\n```json\n{\n \"packagePath\": \"./node_modules/architect-express-static\",\n \"path\": \"./assets/js\",\n \"mount\": \"/js\"\n}\n```\n\n## TODO\n- Allow plugins to register path\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-22T16:36:23.585Z","created":"2012-08-22T16:36:22.629Z","0.0.1":"2012-08-22T16:36:23.585Z"},"author":{"name":"Nujii Labs","email":"developer@nujii.com"},"repository":{"type":"git","url":"git://github.com/nujii/architect-express-static.git"},"_id":"architect-express-static","_rev":"1-8dbc2e7564ea430afa19068efc092b48"},ÿdocument-storeÿarchitect-express-resource­{"id":"architect-express-resource","rev":"1-939f56903ecefb12f4f3da970069ca89","rev_tree":[{"pos":1,"ids":["939f56903ecefb12f4f3da970069ca89",{"status":"available"},[]]}],"rev_map":{"1-939f56903ecefb12f4f3da970069ca89":3413},"winningRev":"1-939f56903ecefb12f4f3da970069ca89","deleted":false,"seq":3413}ÿby-sequenceÿ0000000000003413Â{"name":"architect-express-resource","description":"Allows other architect plugins to create resources through sub apps","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-express-resource","version":"0.0.1","main":"index.js","author":{"name":"Cameron Bytheway"},"license":"MIT","dependencies":{"express":"2.5.11","express-resource":"~0.2.4"},"plugin":{"provides":["resource"],"consumes":[]},"readme":"# architect-express-resource\n\nAllows other architect plugins to create resources through sub apps\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-express-resource\",\n // This can be anything\n \"viewEngine\": require('eco')\n}\n```\n\n## Usage\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var resource = imports.resource;\n\n var app = resource(require('./pathToResource'), __dirname+'/views');\n\n imports.express.use(options.mount, app);\n};\n```\n\n## TODO\n- Tests\n","_id":"architect-express-resource@0.0.1","description":"Allows other architect plugins to create resources through sub apps","dist":{"shasum":"d19269adf2d53fe814fe4bb4530e2185cc5a04de","tarball":"http://registry.npmjs.org/architect-express-resource/-/architect-express-resource-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-express-resource\n\nAllows other architect plugins to create resources through sub apps\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-express-resource\",\n // This can be anything\n \"viewEngine\": require('eco')\n}\n```\n\n## Usage\n\n```js\nmodule.exports = function (options, imports, register) {\n\n var resource = imports.resource;\n\n var app = resource(require('./pathToResource'), __dirname+'/views');\n\n imports.express.use(options.mount, app);\n};\n```\n\n## TODO\n- Tests\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-22T20:45:34.595Z","created":"2012-08-22T20:45:33.510Z","0.0.1":"2012-08-22T20:45:34.595Z"},"author":{"name":"Cameron Bytheway"},"_id":"architect-express-resource","_rev":"1-939f56903ecefb12f4f3da970069ca89"}&ÿdocument-storeÿarchitect-browserify§{"id":"architect-browserify","rev":"1-69c8d977392053492d64cf3ceb7923c4","rev_tree":[{"pos":1,"ids":["69c8d977392053492d64cf3ceb7923c4",{"status":"available"},[]]}],"rev_map":{"1-69c8d977392053492d64cf3ceb7923c4":3412},"winningRev":"1-69c8d977392053492d64cf3ceb7923c4","deleted":false,"seq":3412}ÿby-sequenceÿ0000000000003412­{"name":"architect-browserify","description":"Browserify plugin for Architect","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"architect-browserify","description":"Browserify plugin for Architect","version":"0.0.1","main":"index.js","author":{"name":"Nujii Labs","email":"developer@nujii.com"},"contributors":[{"name":"Cameron Bytheway","email":"cameron@nujii.com"}],"repository":{"type":"git","url":"git://github.com/nujii/architect-browserify.git"},"license":"MIT","dependencies":{"browserify":"~1.15.2","uglify-js":"~1.3.3","mkdirp":"~0.3.4","architect-express":"~0.0.1","architect-logger":"~0.0.1"},"plugin":{"consumes":["logger","express"],"provides":[]},"readme":"# architect-browseriy\n\n[browserify](https://github.com/substack/node-browserify) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-browserify\",\n \"src\": __dirname+\"/assets\",\n \"dest\": __dirname+\"/target\",\n // Compress the output using uglify-js\n \"compress\": true,\n // Forces recompilation for every request\n \"force\": true\n}\n```\n\n## Usage\n\nNow we mount /target as a static path and we can access our\njavascripts at `http://0.0.0.0:{port}/{jsFolder}/{file.js}`\nand it will be compiled on the fly\n\n## TODO\n\n- Provide some tests\n","_id":"architect-browserify@0.0.1","dist":{"shasum":"e64ae254c977e492dc90d7614617890b07d1d685","tarball":"http://registry.npmjs.org/architect-browserify/-/architect-browserify-0.0.1.tgz"},"_npmVersion":"1.1.52","_npmUser":{"name":"camshaft","email":"cameron@nujii.com"},"maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}]}},"readme":"# architect-browseriy\n\n[browserify](https://github.com/substack/node-browserify) plugin for \n[architect](https://github.com/c9/architect)\n\n## Config Format\n\n```js\n{\n \"packagePath\": \"./node_modules/architect-browserify\",\n \"src\": __dirname+\"/assets\",\n \"dest\": __dirname+\"/target\",\n // Compress the output using uglify-js\n \"compress\": true,\n // Forces recompilation for every request\n \"force\": true\n}\n```\n\n## Usage\n\nNow we mount /target as a static path and we can access our\njavascripts at `http://0.0.0.0:{port}/{jsFolder}/{file.js}`\nand it will be compiled on the fly\n\n## TODO\n\n- Provide some tests\n","maintainers":[{"name":"camshaft","email":"cameron@nujii.com"}],"time":{"modified":"2012-08-23T00:21:59.289Z","created":"2012-08-23T00:21:58.243Z","0.0.1":"2012-08-23T00:21:59.289Z"},"author":{"name":"Nujii Labs","email":"developer@nujii.com"},"repository":{"type":"git","url":"git://github.com/nujii/architect-browserify.git"},"_id":"architect-browserify","_rev":"1-69c8d977392053492d64cf3ceb7923c4"}ÿdocument-storeÿantlr3™{"id":"antlr3","rev":"1-3e08f900988e4c5a0872db006f758fd8","rev_tree":[{"pos":1,"ids":["3e08f900988e4c5a0872db006f758fd8",{"status":"available"},[]]}],"rev_map":{"1-3e08f900988e4c5a0872db006f758fd8":3411},"winningRev":"1-3e08f900988e4c5a0872db006f758fd8","deleted":false,"seq":3411}ÿby-sequenceÿ000000000000341"›tÓù1î{"name":"antlr3","description":"ANTLR3 JavaScript Runtime Library","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"antlr3","version":"0.0.1","description":"ANTLR3 JavaScript Runtime Library","main":"antlr3.js","keywords":["antlr","antlr3","runtime"],"repository":{"type":"git","url":"git://github.com/herry13/npm-antlr3.git"},"_npmUser":{"name":"herry13","email":"herry13@gmail.com"},"_id":"antlr3@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"61d78bccdd6e3f24c58625b217a79779788e670e","tarball":"http://registry.npmjs.org/antlr3/-/antlr3-0.0.1.tgz"},"maintainers":[{"name":"herry13","email":"herry13@gmail.com"}]},"0.0.2":{"name":"antlr3","version":"0.0.2","description":"ANTLR3 JavaScript Runtime Library","main":"index.js","keywords":["antlr","antlr3","runtime"],"repository":{"type":"git","url":"git://github.com/herry13/npm-antlr3.git"},"_npmUser":{"name":"herry13","email":"herry13@gmail.com"},"_id":"antlr3@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"13d8b26ccd003759ba1074e830d9c23a14404bf6","tarball":"http://registry.npmjs.org/antlr3/-/antlr3-0.0.2.tgz"},"maintainers":[{"name":"herry13","email":"herry13@gmail.com"}]},"0.0.3":{"name":"antlr3","version":"0.0.3","description":"ANTLR3 JavaScript Runtime Library","main":"antlr3.js","author":{"name":"Herry","email":"herry13@gmail.com","url":"http://github.com/herry13/"},"keywords":["antlr","antlr3","runtime"],"repository":{"type":"git","url":"git://github.com/herry13/npm-antlr3.git"},"_npmUser":{"name":"herry13","email":"herry13@gmail.com"},"_id":"antlr3@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"29eafeaa23022ac4470bf2a3c251901f01740a63","tarball":"http://registry.npmjs.org/antlr3/-/antlr3-0.0.3.tgz"},"maintainers":[{"name":"herry13","email":"herry13@gmail.com"}]}},"readme":"npm-antlr3\n==========\n\nNPM package of ANTLR3 JavaScript Runtime Library","maintainers":[{"name":"herry13","email":"herry13@gmail.com"}],"time":{"modified":"2012-06-12T15:15:16.857Z","created":"2012-06-11T02:18:09.033Z","0.0.1":"2012-06-11T02:18:10.441Z","0.0.2":"2012-06-11T02:20:42.291Z","0.0.3":"2012-06-12T15:15:16.857Z"},"repository":{"type":"git","url":"git://github.com/herry13/npm-antlr3.git"},"author":{"name":"Herry","email":"herry13@gmail.com","url":"http://github.com/herry13/"},"_id":"antlr3","_rev":"1-3e08f900988e4c5a0872db006f758fd8"}ÿdocument-storeÿahr2—{"id":"ahr2","rev":"1-f44cfb27dc9c0210099ec465f9149c01","rev_tree":[{"pos":1,"ids":["f44cfb27dc9c0210099ec465f9149c01",{"status":"available"},[]]}],"rev_map":{"1-f44cfb27dc9c0210099ec465f9149c01":3410},"winningRev":"1-f44cfb27dc9c0210099ec465f9149c01","deleted":false,"seq":3410}ÿby-sequenceÿ0000000000003410„ò{"name":"ahr2","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","dist-tags":{"latest":"2.3.2"},"versions":{"2.0.2":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (httpClient) and the Browser (XMLHttpRequeuest2)","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"require-kiss":">= 1.0.5","futures":">= 1.9.4","bufferjs":">= 0.0.0","file-api":">= 0.0.0"},"lib":"lib","directories":{"lib":"lib"},"main":"./lib/ahr2","version":"2.0.2","_id":"ahr2@2.0.2","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.7","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"a8ee851c4b01ab6cbb0d51944e64be86403cddf7","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.0.2.tgz"}},"2.0.3":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (httpClient) and the Browser (XMLHttpRequeuest2)","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"require-kiss":">= 1.0.5","futures":">= 1.9.4","bufferjs":">= 0.0.0","file-api":">= 0.0.0"},"lib":"lib","directories":{"lib":"lib"},"main":"./lib/ahr2","version":"2.0.3","devDependencies":{},"_id":"ahr2@2.0.3","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"160f479b70e59f0f7577c11153eff0e79a4c3340","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.0.3.tgz"},"scripts":{}},"2.0.4":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (httpClient) and the Browser (XMLHttpRequeuest2)","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"require-kiss":">= 1.0.5","futures":">= 1.9.4","bufferjs":">= 0.0.0","file-api":">= 0.0.0"},"lib":"lib","directories":{"lib":"lib"},"main":"./lib/ahr2","version":"2.0.4","_id":"ahr2@2.0.4","_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.4.7","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"beca573ad7c7be15bcdea1805101f9e27452bfc1","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.0.4.tgz"}},"2.1.0":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr.node` for Node and `ender install ahr2` for Ender. 'ahr2'. In both cases it should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","url":">= 0.0.0","events.node":">= 0.4.0","ahr.browser":">= 2.1.0","ahr.options":">= 2.1.0","ahr.utils":">= 2.1.0"},"lib":".","directories":{"lib":"."},"main":"ahr","version":"2.1.0","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/ahr2/2.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ahr2@2.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"079d52aaf164160f158e9f1ec6a4e0635daaab34","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.1.0.tgz"},"scripts":{}},"2.1.1":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr.node` for Node and `ender install ahr2` for Ender. 'ahr2'. In both cases it should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","url":">= 0.0.0","events.node":">= 0.4.0","ahr.browser":">= 2.1.0","ahr.options":">= 2.1.0","ahr.utils":">= 2.1.0"},"lib":".","directories":{"lib":"."},"main":"ahr","version":"2.1.1","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/ahr2/2.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ahr2@2.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"aace5dbc5da1b0f81f6a3aa1a528b818ae5180e6","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.1.1.tgz"},"scripts":{}},"2.1.2":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr.node` for Node and `ender install ahr2` for Ender. 'ahr2'. In both cases it should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"future":">= 2.1.0","querystring":">= 0.0.0","join":">= 2.1.0","url":">= 0.0.0","events.node":">= 0.4.0","ahr.browser":">= 2.1.0","ahr.options":">= 2.1.0","ahr.utils":">= 2.1.0"},"lib":".","directories":{"lib":"."},"main":"ahr","version":"2.1.2","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/ahr2/2.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ahr2@2.1.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"a542db3beec4871299cfdc238497342a099d89e0","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.1.2.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.1.3":{"name":"ahr2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr.node` for Node and `ender install ahr2` for Ender. 'ahr2'. In both cases it should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"dependencies":{"future":">= 2.1.0","querystring":">= 0.0.0","join":">= 2.1.0","url":">= 0.0.0","events.node":">= 0.4.0","ahr.browser":">= 2.1.0","ahr.options":">= 2.1.0","ahr.utils":">= 2.1.0"},"lib":".","directories":{"lib":"."},"main":"ahr","version":"2.1.3","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/ahr2/2.1.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ahr2@2.1.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"bff2008caf326f1abe6faec7275b84084c7730d7","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.1.3.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.0":{"name":"ahr2","main":"index","version":"2.2.0","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"5b7c5505acbcbfab418674d359dec78f8378caad","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.0.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.1":{"name":"ahr2","main":"index","version":"2.2.1","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"13f3085c1dbd854b4926ff1928f071ce515e5c29","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.1.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.2":{"name":"ahr2","main":"index","version":"2.2.2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"9cfdff076876df4d6eb1fe5a6aee62b209127323","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.2.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.3":{"name":"ahr2","main":"index","version":"2.2.3","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"5edef78e1d5bcb87c1da8847b60dc79986e5d6f7","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.3.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.4":{"name":"ahr2","main":"index","version":"2.2.4","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"f517554187bf7b4572a60130ce0063485529b797","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.4.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.5":{"name":"ahr2","main":"index","version":"2.2.5","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"300db9d2d52bbf619be1bf7aee5d54676a53d2a0","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.5.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.6":{"name":"ahr2","main":"index","version":"2.2.6","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","atob":"1.0.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"61882a6ff22b342ae50c7cbe798b7447f72c2ebf","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.6.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.8":{"name":"ahr2","main":"index","version":"2.2.8","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","btoa":"1.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.8","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"23c9e40cbc333a3c66bbb781568dfa327fc732f2","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.8.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.10":{"name":"ahr2","main":"index","version":"2.2.10","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","btoa":"1.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.10","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9cebf21c85ee507ced88e72c2ff5939e89c519ae","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.10.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.11":{"name":"ahr2","main":"index","version":"2.2.11","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","btoa":"1.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.11","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"857c0268fa29a545df6d8cfb54e5bd5acbee680c","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.11.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.2.12":{"name":"ahr2","main":"index","version":"2.2.12","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">= 2.1.0","join":">= 2.1.0","btoa":"1.x","bufferjs":"1.0.x","File":">= 0.0.0","FileList":">= 0.0.0","FormData":">= 0.0.0","navigator":">= 0.0.0","location":">= 0.0.0"},"lib":".","directories":{"lib":"."},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"ahr2@2.2.12","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"78cca0cae8fc11851932be277187c11fdb55b443","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.2.12.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.3.0":{"name":"ahr2","main":"index","version":"2.3.0","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">=2.3.1 <2.4.0","join":">=2.3.1 <3.0.0","btoa":"1.x","bufferjs":"1.0.x","File":">=0.10.0 <0.11.0","FileList":">=0.10.0 <0.11.0","FormData":">=0.10.0 <0.11.0","navigator":">=1.0.1 <2.0.0","location":"=0.0.1"},"lib":".","directories":{"lib":"."},"_id":"ahr2@2.3.0","dist":{"shasum":"84c84ce1d8f723bfa071f84851d66376808ddb05","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.3.0.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.3.1":{"name":"ahr2","main":"index","version":"2.3.1","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">=2.3.1 <2.4.0","join":">=2.3.1 <3.0.0","btoa":"1.x","bufferjs":"1.0.x","File":">=0.10.0 <0.11.0","FileList":">=0.10.0 <0.11.0","FormData":">=0.10.0 <0.11.0","navigator":">=1.0.1 <2.0.0","location":"=0.0.1"},"lib":".","directories":{"lib":"."},"_id":"ahr2@2.3.1","dist":{"shasum":"64a68cb455508072aad442e26eb53b4e3fc866f5","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.3.1.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"2.3.2":{"name":"ahr2","main":"index","version":"2.3.2","homepage":"https://github.com/coolaj86/abstract-http-request","description":"An Abstract Http Request for Node.JS (http/https) and the Browser (XMLHttpRequeuest2). For `npm install ahr2` for Node and `pakmanager build` for Ender / Pakmanager. It should be required as `var request = require('ahr2')`","repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"keywords":["xhr","ahr","xmlhttprequest","http","https","file","browser","xhr2","cors","xdm","jsonp"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"contributors":[{"name":"T. Jameson Little","email":"beatgammit@gmail.com"}],"engines":{"node":">= 0.4.0"},"browserDependencies":{"events.node":">= 0.4.0","url":">= 0.0.0","querystring":">= 0.0.0","future":">= 2.1.0","join":">= 2.1.0"},"dependencies":{"future":">=2.3.1 <2.4.0","join":">=2.3.1 <3.0.0","btoa":"1.x","bufferjs":"1.0.x","File":">=0.10.0 <0.11.0","FileList":">=0.10.0 <0.11.0","FormData":">=0.10.0 <0.11.0","navigator":">=1.0.1 <2.0.0","location":"=0.0.1"},"lib":".","directories":{"lib":"."},"devDependencies":{},"optionalDependencies":{},"_id":"ahr2@2.3.2","dist":{"shasum":"c74cbef881bd62c10fbb88a8261d11240c198010","tarball":"http://registry.npmjs.org/ahr2/-/ahr2-2.3.2.tgz"},"rea’’ª­ùdme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-08-02T13:44:37.104Z","created":"2011-05-26T02:03:16.260Z","2.0.0":"2011-05-26T02:03:16.518Z","2.0.1":"2011-05-26T18:07:32.543Z","2.0.2":"2011-05-26T21:46:03.879Z","2.0.3":"2011-05-27T18:02:56.722Z","2.0.4":"2011-06-23T19:18:57.405Z","2.1.0":"2011-07-15T22:53:33.541Z","2.1.1":"2011-07-25T21:01:52.833Z","2.1.2":"2011-08-04T22:34:22.630Z","2.1.3":"2011-09-08T17:32:46.943Z","2.2.0":"2011-12-22T00:14:58.222Z","2.2.1":"2011-12-22T00:37:46.570Z","2.2.2":"2011-12-22T02:48:02.830Z","2.2.3":"2012-01-06T23:18:41.098Z","2.2.4":"2012-01-17T00:23:41.906Z","2.2.5":"2012-02-16T00:06:05.533Z","2.2.6":"2012-02-17T21:51:23.660Z","2.2.7":"2012-02-20T21:37:47.466Z","2.2.8":"2012-02-20T21:50:13.411Z","2.2.9":"2012-02-23T22:41:29.133Z","2.2.10":"2012-03-23T19:38:42.185Z","2.2.11":"2012-03-27T00:40:47.739Z","2.2.12":"2012-05-26T21:02:14.744Z","2.3.0":"2012-06-19T21:02:43.778Z","2.3.1":"2012-06-21T22:38:54.458Z","2.3.2":"2012-07-23T17:53:32.213Z"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"repository":{"type":"git","url":"git://github.com/coolaj86/abstract-http-request.git"},"users":{"fgribreau":true},"_id":"ahr2","_rev":"1-f44cfb27dc9c0210099ec465f9149c01"}ÿdocument-storeÿaggregateœ{"id":"aggregate","rev":"1-a671404465c23ca5737254bbcd4e69f4","rev_tree":[{"pos":1,"ids":["a671404465c23ca5737254bbcd4e69f4",{"status":"available"},[]]}],"rev_map":{"1-a671404465c23ca5737254bbcd4e69f4":3409},"winningRev":"1-a671404465c23ca5737254bbcd4e69f4","deleted":false,"seq":3409}ÿby-sequenceÿ0000000000003409Ç {"name":"aggregate","description":"Aggregate function calls accross a tick","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"aggregate","version":"0.0.1","description":"Aggregate function calls accross a tick","author":{"name":"Peter Kolloch","email":"kolloch.kpj@gmail.com"},"repository":{"type":"git","url":"git://github.com/kolloch/aggregate.git"},"license":"MIT/X11","scripts":{"test":"./node_modules/.bin/mocha --compilers coffee:coffee-script"},"dependencies":{"coffee-script":"*","winston":"*"},"devDependencies":{"mocha":"*","expect.js":"*"},"_npmUser":{"name":"pkolloch","email":"kolloch.kpj@gmail.com"},"_id":"aggregate@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"78b879eb96f2ab054ace7cfdfdee09cd304f2bb0","tarball":"http://registry.npmjs.org/aggregate/-/aggregate-0.0.1.tgz"},"readme":"","maintainers":[{"name":"pkolloch","email":"kolloch.kpj@gmail.com"}]},"0.0.2":{"name":"aggregate","version":"0.0.2","description":"Aggregate function calls accross a tick","author":{"name":"Peter Kolloch","email":"kolloch.kpj@gmail.com"},"repository":{"type":"git","url":"git://github.com/kolloch/aggregate.git"},"license":"MIT/X11","scripts":{"test":"./node_modules/.bin/mocha --compilers coffee:coffee-script"},"dependencies":{"coffee-script":"*","winston":"*"},"devDependencies":{"mocha":"*","expect.js":"*"},"_npmUser":{"name":"pkolloch","email":"kolloch.kpj@gmail.com"},"_id":"aggregate@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0b30e590b24eeba1cdae5983bfcc84b599ca93d4","tarball":"http://registry.npmjs.org/aggregate/-/aggregate-0.0.2.tgz"},"readme":"","maintainers":[{"name":"pkolloch","email":"kolloch.kpj@gmail.com"}]},"0.0.3":{"name":"aggregate","version":"0.0.3","description":"Aggregate function calls accross a tick","author":{"name":"Peter Kolloch","email":"kolloch.kpj@gmail.com"},"repository":{"type":"git","url":"git://github.com/kolloch/aggregate.git"},"license":"MIT/X11","scripts":{"test":"./node_modules/.bin/mocha --compilers coffee:coffee-script"},"dependencies":{"coffee-script":"*","winston":"*"},"devDependencies":{"mocha":"*","expect.js":"*"},"_npmUser":{"name":"pkolloch","email":"kolloch.kpj@gmail.com"},"_id":"aggregate@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b4a9ce9d99897d28591f83599cccafe31f6ae018","tarball":"http://registry.npmjs.org/aggregate/-/aggregate-0.0.3.tgz"},"readme":"","maintainers":[{"name":"pkolloch","email":"kolloch.kpj@gmail.com"}]},"0.1.0":{"name":"aggregate","version":"0.1.0","description":"Aggregate function calls accross a tick","author":{"name":"Peter Kolloch","email":"kolloch.kpj@gmail.com"},"repository":{"type":"git","url":"git://github.com/kolloch/aggregate.git"},"license":"MIT/X11","scripts":{"test":"./node_modules/.bin/mocha --compilers coffee:coffee-script"},"dependencies":{"coffee-script":"*","winston":"*"},"devDependencies":{"mocha":"*","expect.js":"*"},"_npmUser":{"name":"pkolloch","email":"kolloch.kpj@gmail.com"},"_id":"aggregate@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3bd3fd7aefb25d5c982a94fad92a7e2aebf36e0c","tarball":"http://registry.npmjs.org/aggregate/-/aggregate-0.1.0.tgz"},"readme":"","maintainers":[{"name":"pkolloch","email":"kolloch.kpj@gmail.com"}]}},"readme":"","maintainers":[{"name":"pkolloch","email":"kolloch.kpj@gmail.com"}],"time":{"modified":"2012-04-21T17:25:35.899Z","created":"2012-04-19T20:17:53.987Z","0.0.1":"2012-04-19T20:17:56.931Z","0.0.2":"2012-04-19T20:21:28.809Z","0.0.3":"2012-04-20T06:27:01.476Z","0.1.0":"2012-04-21T17:25:35.899Z"},"author":{"name":"Peter Kolloch","email":"kolloch.kpj@gmail.com"},"repository":{"type":"git","url":"git://github.com/kolloch/aggregate.git"},"_id":"aggregate","_rev":"1-a671404465c23ca5737254bbcd4e69f4"}ÿdocument-storeÿadb–{"id":"adb","rev":"1-1a72f5e9cbf82030a7fcfc7ec7243380","rev_tree":[{"pos":1,"ids":["1a72f5e9cbf82030a7fcfc7ec7243380",{"status":"available"},[]]}],"rev_map":{"1-1a72f5e9cbf82030a7fcfc7ec7243380":3408},"winningRev":"1-1a72f5e9cbf82030a7fcfc7ec7243380","deleted":false,"seq":3408}ÿby-sequenceÿ0000000000003408â {"name":"adb","description":"A node.js module which implement pure javascript adb protocol to control Android device","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"adb","version":"0.2.0","main":"./adb.js","description":"A node.js module which implement pure javascript adb protocol to control Android device","keywords":["android","adb"],"author":{"name":"Flier Lu","email":"flier.lu@gmail.com","url":"http://flier.lu"},"license":{"type":"MIT"},"repository":{"type":"git","url":"http://github.com/flier/adb.js.git"},"engines":{"node":"*"},"readme":"adb.js\n======\n\nA node.js module which implement pure javascript adb protocol to control Android device","_id":"adb@0.2.0","dist":{"shasum":"622d803b3fcc0d004751fc07661856442e3eb3c1","tarball":"http://registry.npmjs.org/adb/-/adb-0.2.0.tgz"},"maintainers":[{"name":"flier","email":"flier.lu@gmail.com"}]}},"readme":"adb.js\n======\n\nA node.js module which implement pure javascript adb protocol to control Android device","maintainers":[{"name":"flier","email":"flier.lu@gmail.com"}],"time":{"modified":"2012-07-10T07:38:42.816Z","created":"2012-07-10T07:38:35.031Z","0.2.0":"2012-07-10T07:38:42.816Z"},"author":{"name":"Flier Lu","email":"flier.lu@gmail.com","url":"http://flier.lu"},"repository":{"type":"git","url":"http://github.com/flier/adb.js.git"},"_id":"adb","_rev":"1-1a72f5e9cbf82030a7fcfc7ec7243380"}ÿdocument-storeÿacid—{"id":"acid","rev":"1-3e4dd674e7e17ee9a5bdaa538b0556a7","rev_tree":[{"pos":1,"ids":["3e4dd674e7e17ee9a5bdaa538b0556a7",{"status":"available"},[]]}],"rev_map":{"1-3e4dd674e7e17ee9a5bdaa538b0556a7":3407},"winningRev":"1-3e4dd674e7e17ee9a5bdaa538b0556a7","deleted":false,"seq":3407}ÿby-sequenceÿ0000000000003407éG{"name":"acid","description":"A rails flavored asset pipeline based on piler","dist-tags":{"latest":"0.2.6"},"versions":{"0.2.0":{"name":"acid","version":"0.2.0","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"17e9255ed2cb7a5f106c5a64c76db23434c0d4ea","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.0.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.1":{"name":"acid","version":"0.2.1","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"01f1653694b3e06d79ad098b1ab1a3c8c30e62b3","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.1.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.2":{"name":"acid","version":"0.2.2","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e5acdebc60d4ad8d9dac401d6a5c9fa048c7b2a6","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.2.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.3":{"name":"acid","version":"0.2.3","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"c8785e28ef0b679e6697ef27afc98426c58602b2","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.3.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.4":{"name":"acid","version":"0.2.4","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7b821c7535302e067fcc01054752d2e2905a8492","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.4.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.5":{"name":"acid","version":"0.2.5","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"0f90ce29e34ac8b31754b7eb1062bd88cf5cdd41","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.5.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]},"0.2.6":{"name":"acid","version":"0.2.6","description":"A rails flavored asset pipeline based on piler","dependencies":{"coffee-script":"","underscore":"","piler":"","handlebars-precompiler":"git://github.com/phreax/node-handlebars-precompiler.git","watch":""},"main":"./lib/index","repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_npmUser":{"name":"phreax","email":"m.thomas@networksec.de"},"_id":"acid@0.2.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"b7364c499df541b08ec4025f5f247975a23695e1","tarball":"http://registry.npmjs.org/acid/-/acid-0.2.6.tgz"},"maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}]}},"readme":"Acid\n====\n\nAcid is rails flavored asset pipeline that makes your assets fly... Based on the excellent\n[piler](https://github.com/epeli/piler), it adds some extra spice on top of it, like global definition\nfiles, precompilation of client-side templates, hot code pushes, and more..\n\nIt was developed for the use with express, backbone.js and handlebars.\n\n\nInstallation\n------------\n\n npm install https://github.com/phreax/acid.git \n\nUsage\n-----\n\nFirst create a configuration file to define all your assets:\n\nconfig.coffee:\n\n```coffee\nmodule.exports = \n assets:\n dir: 'public'\n\n javascripts: [\n\n (require: 'vendor/jquery-1.7.1.min.js')\n (require: 'vendor/underscore.js')\n (require: 'vendor/backbone.js')\n \n (require_tree: 'lib/models')\n (require_tree: 'lib/collections')\n (require_tree: 'lib/views')\n\n (require: 'lib/app.js')\n ]\n\n stylesheets: [\n (require: 'style.css') \n ]\n\n templates:\n dir: 'templates'\n engine: 'handlebars'\n lib: 'vendor/handlebars.runtime.js'\n watch: true\n```\n\nKeys:\n\n* `require`: load single file\n* `require_tree`: load directory recursive\n\nAcid assumes that you have your asset directory structured like this, if not specified:\n\n javascripts/\n stylesheets/\n templates/\n\n### Setup Application\n\nRequire acid:\n\n acid = require 'acid'\n\nLoad the configuration file:\n\n config = require 'config'\n\nBind it to your app:\n\n acid.bind app, acid: config\n\nFor hot code push and live templating you should\nalso add io, otherwise it will be loaded by default.\n\n acid.bind app, acid: config, io: io\n\n### Setup View\n\nIn your main view you need to add following line, so piler can inject \nthe resources:\n\nindex.jade:\n\n !{renderScriptTags()}\n\n### Live Templating \n\nAcid will compile all clientside templates for you. Currently only **Handlebars** is supported, which is\na great clientside template engine based on **mustache.js**.\nBut the real kick is, that it will also watch your template directory for changes, and push the code directly\nto the browser, so it will be instantly viewed. Just bind a Backbone event to the Handlebars.set method:\n\n```javascript\n // set up observer on handlebar templates\n Handlebars.templates = Handlebars.templates || {};\n _.extend(Handlebars, Backbone.Events);\n\n Handlebars.set = _.bind(function(name,template) {\n _.extend(template,Backbone.Events);\n this.templates[name] = template;\n this.trigger('changed',name);\n this.trigger('changed:'+name);\n },Handlebars);\n```\n \nNo you can listen to changes of templates and rerender your view!\n\n\n### Supported compilers\n\nhandlebars, coffee-script, less\n\n\n## Depenencies\n\n* express\n* [piler](https://github.com/epeli/piler)\n* [handlebars-precompiler](https://github.com/phreax/node-handlebars-precompiler)\n* socket.io \n\n## Development\n\nAcid is still under heavy development. Contribution is always welcome!\n\n\n","maintainers":[{"name":"phreax","email":"m.thomas@networksec.de"}],"time":{"modified":"2012-06-24T23:21:26.801Z","created":"2012-06-24T19:43:40.209Z","0.2.0":"2012-06-24T19:43:41.494Z","0.2.1":"2012-06-24T20:49:41.931Z","0.2.2":"2012-06-24T20:51:55.857Z","0.2.3":"2012-06-24T21:35:52.141Z","0.2.4":"2012-06-24T22:30:14.736Z","0.2.5":"2012-06-24T23:13:27.543Z","0.2.6":"2012-06-24T23:21:26.801Z"},"repository":{"type":"git","url":"git://github.com/phreax/acid.git"},"_id":"acid","_rev":"1-3e4dd674e7e17ee9a5bdaa538b0556a7"}ÿdocument-storeÿacequiaš{"id":"acequia","rev":"1-cb89180b33a3f83857060c732934fcea","rev_tree":[{"pos":1,"ids":["cb89180b33a3f83857060c732934fcea",{"status":"available"},[]]}],"rev_map":{"1-cb89180b33a3f83857060c732934fcea":3406},"winningRev":"1-cb89180b33a3f83857060c732934fcea","deleted":false,"seq":3406}ÿby-sequenceÿ0000000000003406ï{"name":"acequia","description":"Message router for node supporting multiple protocols","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"acequia","version":"0.1.0","description":"Message router for node supporting multiple protocols","main":"index.js","preferGlobal":"true","directories":{"lib":"./lib"},"scripts":{"start":"node ."},"engines":{"node":">=0.6"},"dependencies":{"log4js":">=0.4.1","socket.io":">=0.9.6","socket.io-client":">=0.9.6","uglify-js":">=1.2.5","mdns":"0.0.x"},"homepage":"https://github.com/prgsmall/acequia","repository":{"type":"git","url":"git://github.com/prgsmall/acequia.git"},"author":{"name":"Peter R. G. Small","email":"prgsmall@gmail.com"},"_npmUser":{"name":"prgsmall","email":"prgsmall@gmail.com"},"_id":"acequia@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"84de0c41fed4504daf97b109d526a755eeda2e27","tarball":"http://registry.npmjs.org/acequia/-/acequia-0.1.0.tgz"},"maintainers":[{"name":"prgsmall","email":"prgsmall@gmail.com"}]},"0.2.0":{"name":"acequia","version":"0.2.0","description":"Message router for node supporting multiple protocols","main":"index.js","preferGlobal":"true","directories":{"lib":"./lib"},"scripts":{"start":"node server.js"},"engines":{"node":">=0.6"},"dependencies":{"log4js":">=0.4.1","express":">=2.5.8","socket.io":">=0.9.6","socket.io-client":">=0.9.6","uglify-js":">=1.2.5","buffertools":">=1.0.9"},"homepage":"https://github.com/prgsmall/acequia","repository":{"type":"git","url":"git://github.com/prgsmall/acequia.git"},"author":{"name":"Peter R. G. Small","email":"prgsmall@gmail.com"},"_npmUser":{"name":"prgsmall","email":"prgsmall@gmail.com"},"_id":"acequia@0.2.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"8fc57d7de482c8de7fff23476c1a90d573405416","tarball":"http://registry.npmjs.org/acequia/-/acequia-0.2.0.tgz"},"maintainers":[{"name":"prgsmall","email":"prgsmall@gmail.com"}]}},"readme":"#acequia\n\nA node-js message router supporting multiple connection protocols.\n\nCurrently supports:\n\n* Open Sound Control (OSC)\n* WebSockets via socket.io\n* TCP connection\n\nTo initialize acequia:\n\n```shell\ngit clone git@github.com:prgsmall/acequia.git\n\ncd acequia\n\nnpm install\n```","maintainers":[{"name":"prgsmall","email":"prgsmall@gmail.com"}],"time":{"modified":"2012-07-10T14:51:29.754Z","created":"2012-05-10T02:20:40.643Z","0.1.0":"2012-05-10T02:20:42.146Z","0.2.0":"2012-07-10T14:51:29.754Z"},"author":{"name":"Peter R. G. Small","email":"prgsmall@gmail.com"},"repository":{"type":"git","url":"git://github.com/prgsmall/acequia.git"},"_id":"acequia","_rev":"1-cb89180b33a3f83857060c732934fcea"}ÿdocument-storeÿTSN–{"id":"TSN","rev":"1-06ca646c1a204359e1ba891ccbfc27d4","rev_tree":[{"pos":1,"ids":["06ca646c1a204359e1ba891ccbfc27d4",{"status":"available"},[]]}],"rev_map":{"1-06ca646c1a204359e1ba891ccbfc27d4":3405},"winningRev":"1-06ca646c1a204359e1ba891ccbfc27d4","deleted":false,"seq":3405}ÿby-sequenceÿ0000000000003405ûa{"name":"TSN","description":"Templating System for NodeJS","dist-tags":{"latest":"2.3.1"},"versions":{"2.3.1":{"name":"TSN","description":"Templating System for NodeJS","version":"2.3.1","homepage":"https://github.com/B-Vladi/TSN","author":{"name":"Влад Куркин, Email: b-vladi@cs-console.ru"},"main":"TSN.js","_npmUser":{"name":"B~Vladi","email":"b-vladi@cs-console.ru"},"_id":"TSN@2.3.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e10ac6373cc6945e83b5625b369347943d1fb267","tarball":"http://registry.npmjs.org/TSN/-/TSN-2.3.1.tgz"},"maintainers":[{"name":"B~Vladi","email":"b-vladi@cs-console.ru"}]}},"readme":"# TSN 2.3.1 #\nhttps://github.com/B-Vladi/TSN/\n\nTemplating System for Node.JS.\n\n## ЛицензиÑ\nMIT: https://github.com/appendto/amplify/blob/master/MIT-LICENSE.txt\n\n## ОпиÑание\nTSN - Ñинхронный шаблонизатор, реализован в виде
Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð´Ð»Ñ NodeJS.\n\nЗавиÑимоÑти:\n* Path\n* File System\n* Events\n\nОÑновные характериÑтики:\n* ПроÑтота - управлÑющие конÑтрукции имеют Ñтандартный XML-ÑинтакÑиÑ. ВыражениÑ, иÑпользуемые в значениÑÑ… атрибутов тегов TSN, ÑвлÑÑŽÑ‚ÑÑ JavaScript-выражениÑми.\n* СкороÑть - теÑÑ‚ производительноÑти показывает, что TSN быÑтрее похожего шаблонизатора Fest от Mail.ru, который в Ñвою очередь быÑтрее извеÑтного шаблонизатора CTPP. Так же TSN выигрывает в производительноÑти Dust, но Ñтот теÑÑ‚ не ÑохранилÑÑ.\n* ГибкоÑть шаблонов - доÑтигаетÑÑ Ð·Ð° Ñчет подключаемых шаблонов, динамичеÑкого контекÑта и многого другого.\n* РаÑширÑемоÑть - Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð»Ð¾Ð³Ð¸ÐºÐ¸ тегов вынеÑена в отдельный файл, в который легко можно добавлÑть ÑобÑтвенные теги, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ API TSN. Ð’ Ñкором будущем поÑвитÑÑ ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ñтраница в wiki.\n* Поддержка IDE - Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ XML-ÑинтакÑиÑу управлÑющих конÑтрукций шаблонизатора, можно иÑпользовать приемущеÑтва редакторов кода, как то: подÑветка ÑинтакÑиÑа и Zen Coding. Так же легко наÑтроить валидацию и автокомплит, еÑли IDE поддерживает подключение пользовательÑких DTD-файлов. Ð’ Ñтом Ñлучае доÑтаточно наÑтроить IDE на иÑпользование DTD-файла тегов TSN и объÑвить Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð¿Ñ€Ð¾ÑтранÑтва имен в шаблоне.\n\n###ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð°Ñ€Ñинга шаблонов.\nÐ’ вики: https://github.com/B-Vladi/TSN/wiki/Configuration\n\n###ИнициализациÑ.\n```js\nvar TSN = require('TSN');\n```\n\n###Примеры компилÑции шаблона.\nКомпилÑÑ†Ð¸Ñ Ð¸Ð· файла:\n\n```js\nvar template = TSN.load('path/to/template.xml'); // КомпилÑÑ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñительно TSN.config.templateRoot.\n```\n\nИÑпользование имени шаблона:\n\n```js\nvar template = TSN.load('path/to/template.xml', 'My name');\n\nconsole.log(template.cacheName === 'My name'); // true\nconsole.log(TSN.cache['My name'] === template); // true\n```\n\nКомпилÑÑ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ñ Ð¸Ñпользованием ÑобÑтвенных наÑтроек. Параметры, которые не были указаны в Ñтом объекте, будут унаÑледованы от `TSN.config`.\n\n```js\nvar template = TSN.load('path/to/template.xml', null, {\n\ttemplateRoot: 'path/to/new/template/root'\n});\n```\n\nКомпилÑÑ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° из данных:\n\n```js\nTSN.compile('Text data');\n```\n\n###Примеры рендеринга шаблона.\n\nС иÑпользованием API:\n\n```js\nvar result = TSN.render(template, data);\n```\n\nБез иÑпользованиÑ:\n\n```js\nvar result = template.call(data);\n```\n\nЗапиÑÑŒ результата в поток:\n\n```js\ntemplate.call(data, response);\n```\n\nÐ”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ API находитÑÑ Ð² вики: https://github.com/B-Vladi/TSN/wiki/API.\n
\nТак же вы можете Ñгенерировать JSDoc документацию по API из иÑходников (файл TSN.js).\n\n###КонтекÑÑ‚ данных.\nÐ’ JavaScript-выражениÑÑ…, иÑпользуемых в значениÑÑ… атрибутов тегов TSN, переданные данные доÑтупны в виде контекÑта через ключевое Ñлово this.\n
\nЕÑли TSN тег влиÑет на контекÑÑ‚, Ñто затрагивает только его дочерних Ñлементов.\n\n###Теги\nУправлÑющие конÑтрукци TSN-шаблона предÑтавлÑÑŽÑ‚ Ñобой XML-теги Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑом проÑтранÑтва имен `TSN`. ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¼Ð¾Ð¶ÐµÑ‚ иÑпользоватьÑÑ Ð»ÑŽÐ±Ð¾Ð¹ и наÑтраиваетÑÑ Ð² конфигурационном файле, либо через API.\nTSN-парÑер не учитывает XML-окружение, поÑтому Ñвно региÑтрировать Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ð¿Ð¾ÑтранÑтва имен `TSN` не обÑзательно, но рекоммендуетÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ñ„Ð¾Ñ€Ñ‚Ð½Ð¾Ð¹ работы в IDE.\n\nÐ’ значениÑÑ… атрибутов тегов TSN могут иÑпользоватьÑÑ Ñледующие XML-ÑущноÑти: `& < > " '`.\n\nОпиÑание тегов Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ð¼Ð¸ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² вики: https://github.com/B-Vladi/TSN/wiki/Tags\n
\n\n###Пример Web-приложениÑ\nФайл page_name.xml:\n\n```xml\n\n\n\n \n \n \n \n\n \n \n\n \n \n \n

Hello, !\n

\n
\n\n \n \n \n \n\n \n \n
\n```\n
\nФайл base.xml:\n\n```xml\n\n\n \n \n \n \n <tsn:echo text=\"this.title\" /> - Hostname\n \n\n \n\n \n \n\n \n \n \n \n
\n \n \n\n \n \n \n \n \n \n \n \n
\n\n \n \n \n
\n\n```\n
\nJavaScript-код приложениÑ:\n\n```js\n/* Подключение завиÑимоÑтей */\nvar http = require('http');\nvar queryString = require('querystring');\nvar TSN = require('TSN');\n\n/* Уберём комментарии из результата */\nTSN.config.saveComments = false;\n\n/* КомпилÑÑ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° */\nTSN.load('page_name.xml', 'page_name', {\n\tindent: 4\n});\n\n/* Создание Ñервера */\nhttp.Server(\n\tfunction (request, response) {\n\t\t/* Формирование данных Ð´Ð»Ñ Ñ€ÐµÐ½Ð´ÐµÑ€Ð¸Ð½Ð³Ð° */\n\t\tvar data = {\n\t\t\trequest: {\n\t\t\t\tGET: queryString.parse(request.url.substring(2))\n\t\t\t}\n\t\t};\n\n\t\t/* Рендеринг шаблона Ñ Ð·Ð°Ð¿Ð¸Ñью результата в поток */\n\t\tTSN.cache['page_name'].call(data, response);\n\t}).listen(80, '127.0.0.1');\n```\n
\nЗапроÑ:\n\n`http://127.0.0.1/?userName=Vasya`\n\n
\n
\nРезультат:\n```html\n\n\n\n My name - Hostname\n \n\n \n\n \n\n\n\n\n
\n\n

Hello, Vasya!\n

\n
\n\n\n\n\n```\n\n\n\n
\nПо вÑеÒM ùм вопроÑам отвечу по почте: b-vladi@cs-console.ru.","maintainers":[{"name":"B~Vladi","email":"b-vladi@cs-console.ru"}],"time":{"modified":"2012-05-11T14:13:47.089Z","created":"2012-05-11T14:13:44.007Z","2.3.1":"2012-05-11T14:13:47.089Z"},"author":{"name":"Влад Куркин, Email: b-vladi@cs-console.ru"},"_id":"TSN","_rev":"1-06ca646c1a204359e1ba891ccbfc27d4"}ÿdocument-storeÿNoobHTTP›{"id":"NoobHTTP","rev":"1-5c49db19ae360d7a65cbdc967dd82d5e","rev_tree":[{"pos":1,"ids":["5c49db19ae360d7a65cbdc967dd82d5e",{"status":"available"},[]]}],"rev_map":{"1-5c49db19ae360d7a65cbdc967dd82d5e":3404},"winningRev":"1-5c49db19ae360d7a65cbdc967dd82d5e","deleted":false,"seq":3404}ÿby-sequenceÿ0000000000003404ý‹{"name":"NoobHTTP","description":"Simple Nodejs HTTP server","dist-tags":{"latest":"0.5.2"},"versions":{"0.3.0":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.0","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"11a456aa81a45a2ac87c18faf09574e1899e963d","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.0.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.1":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.1","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"65fcaab3233d62d3e592f390a27cada6eb4f846b","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.1.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.2":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.2","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"a7f5df0cf1dbdd366b6a6b5e7a01a1b256368877","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.2.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.3":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.3","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"634c04fc233978cedbf557c7c8e1991235c7cf83","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.3.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.4":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.4","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"9f10ea37dae8a1fbf55c4b93697b1c9ce496b280","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.4.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.5":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.5","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"84040c717d846a00aa958b40b1f635fc4a341519","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.5.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.3.6":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple"],"version":"0.3.6","homepage":"https://github.com/Bwen/NoobHTTP","repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"NoobConfig":">=0.2.0","mime":">=1.2.5"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.3.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"d34093f517bae11e76c65937e01a71729e93ce76","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.3.6.tgz"},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.4.0":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple","webapp"],"version":"0.4.0","homepage":"https://github.com/Bwen/NoobHTTP","licenses":[{"type":"MIT"}],"repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"mime":">=1.2.5","eventemitter2":">=0.4.9"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"da3912576b4c683e165e2049fdb2673b3d0c07e8","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.4.0.tgz"},"readme":"## NoobHTTP\nThis is meant to be a simple static files http server. It is geared towards\nwebapps with socket.io. The reason why the http server __offers__ a hook,\nand thus optional, via web sockets is to be able dynamically load files cross domains.\n\nFor example if you are on domain1.com and you add a script tag to include a js script\nfrom domain2.com the js script will not be able to load files with XMLHttpRequest from\nits domain2.com.\n\nFor client side utils that I use with NoobHTTP visit: https://github.com/Bwen/NoobUtils\n\n## Features\n - HTTP & HTTPS\n - BasicAuth\n - Regex for forbidden files\n - Property system, a bit like .htaccess\n - Emit logs, which can be turned off\n - More to come...\n\n## Using NoobHTTP\nThe way to instantiate the NoobHTTP is done by passing an options object as parameter.\n\nAll the posibilities are below:\n```javascript\n var http_server = require('http').createServer(function (req, res) {\n }),\n io = require('socket.io').listen(http_server),\n server = require('NoobHTTP').createServer({\n home: './public/',\n port: 80,\n logEmit: true,\n serverInfo: \"NoobHTTP/1.0\",\n http_server: http_server,\n socketio: io,\n files: {\n forbidden: \"^\\.\",\n property: \".noob.json\"\n },\n ssl: {\n key: fs.readFileSync('./ssl/privatekey.pem'),\n cert: fs.readFileSync('./ssl/certificate.pem')\n }\n replacements: {\n '.js,.css,.html': {\n \"__hostUrl__\": \"https://domain2.com:9000/\"\n }\n }\n });\n```\n\n```javascript\n home: './public/'\n```\nThis property is __optional__ and defaults to `./public/`.\nDefines the root of the server.\n\n\n```javascript\n port: 80\n```\nThis property is __optional__ and defaults to 80 or 443 if the property \"ssl\" exists in the options\n\n\n```javascript\n logEmit: true\n```\nThis property is __optional__ and defaults to `true`.\nGives the posibility to have no logs being emitted.\n\n\n```javascript\n serverInfo: \"NoobHTTP/1.0\"\n```\nThis property is __optional__ and defaults to `NoobHTTP/` and the version in the package.json.\nIt is put in every response headers as the key 'Server:'.\n\n\n```javascript\n http_server: require('https')\n```\nThis property is __optional__ and defaults to null.\nIf this option is specified the NoobHTTP will not instantiate a new http server\nand will not bind itself to it.\n\n\n```javascript\n socketio: require('socket.io')\n```\nThis property is __optional__ and defaults to null.\nIf this option is specified it will make a new namespace \"noobhttp\" and listen\nevents \"request\" with a file parameter. It will reponse with an emit of the file\nname that was requested with either the content of the file or an error object.\n\n\n```javascript\n files: {\n forbidden: \"^\\.\",\n property: \".noob.json\"\n }\n```\nTheses two options are __optionals__ and defaults to null.\nThe forbidden regexp option will default to false. If provided as the example all the\nfiles that starts with a dot will be responded with a 403.\n\nThe property option will default to false. If provided as the example every time the\nNoobHTTP receives a request for a file it will crawl the directory up to its home\ndirectory and look for this property file name. Right now the property file name is of\njson type and supports only 2 options. {\"auth\": true} which forces a directory to request\nfor a BasicAuth and {\"https\":\"https://domain2.com/\"} which enforces the url to be in https\nand thus redirects the browser with a 301.\n\n\n```javascript\n ssl: {\n key: fs.readFileSync('./ssl/privatekey.pem'),\n cert: fs.readFileSync('./ssl/certificate.pem')\n }\n```\nThis property is __optional__ and will default to null.\nIf you want the server to be ssl this is ofcourse required.\n\n\n```javascript\n replacements: {\n '.js,.css,.html': {\n \"__hostUrl__\": \"https://domain2.com:9000/\"\n }\n }\n```\nThis option is __optional__ and defaults to null.\nThis gives the chance to specify markers to be replaced in certain extensions. Like\nmentioned in the beginning when including js script cross domains you want to be able\nto load static files (html templates) from the domain where the js comes from. Instead\nof hardcoding certain values this can be used.\n","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.4.1":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple nodejs HTTP server for static files","keywords":["static","server","nodejs","http","simple","webapp"],"version":"0.4.1","homepage":"https://github.com/Bwen/NoobHTTP","licenses":[{"type":"MIT"}],"repository":{"type":"git","url":"git://github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.6.11"},"dependencies":{"mime":">=1.2.5","eventemitter2":">=0.4.9"},"devDependencies":{},"main":"index","_npmUser":{"name":"bwen","email":"philippe.guilbault@gmail.com"},"_id":"NoobHTTP@0.4.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"2b6be520c01f6c5f1b25fee7bd1816acb7ecec17","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.4.1.tgz"},"readme":"## NoobHTTP\nThis is meant to be a simple static files http server. It is geared towards\nwebapps with socket.io. The reason why the http server __offers__ a hook,\nand thus optional, via web sockets is to be able dynamically load files cross domains.\n\nFor example if you are on domain1.com and you add a script tag to include a js script\nfrom domain2.com the js script will not be able to load files with XMLHttpRequest from\nits domain2.com.\n\nFor client side utils that I use with NoobHTTP visit: https://github.com/Bwen/NoobUtils\n\n## Features\n - HTTP & HTTPS\n - BasicAuth\n - Regex for forbidden files\n - Property system, a bit like .htaccess\n - Emit logs, which can be turned off\n - More to come...\n\n## Using NoobHTTP\nThe way to instantiate the NoobHTTP is done by passing an options object as parameter.\n\nAll the posibilities are below:\n```javascript\n var http_server = require('http').createServer(function (req, res) {\n }),\n io = require('socket.io').listen(http_server),\n server = require('NoobHTTP').createServer({\n home: './public/',\n port: 80,\n logEmit: true,\n serverInfo: \"NoobHTTP/1.0\",\n http_server: http_server,\n socketio: io,\n files: {\n forbidden: \"^\\.\",\n property: \".noob.json\"\n },\n ssl: {\n key: fs.readFileSync('./ssl/privatekey.pem'),\n cert: fs.readFileSync('./ssl/certificate.pem')\n }\n replacements: {\n '.js,.css,.html': {\n \"__hostUrl__\": \"https://domain2.com:9000/\"\n }\n }\n });\n```\n\n```javascript\n home: './public/'\n```\nThis property is __optional__ and defaults to `./public/`.\nDefines the root of the server.\n\n\n```javascript\n port: 80\n```\nThis property is __optional__ and defaults to 80 or 443 if the property \"ssl\" exists in the options\n\n\n```javascript\n logEmit: true\n```\nThis property is __optional__ and defaults to `true`.\nGives the posibility to have no logs being emitted.\n\n\n```javascript\n serverInfo: \"NoobHTTP/1.0\"\n```\nThis property is __optional__ and defaults to `NoobHTTP/` and the version in the package.json.\nIt is put in every response headers as the key 'Server:'.\n\n\n```javascript\n http_server: require('https')\n```\nThis property is __optional__ and defaults to null.\nIf this option is specified the NoobHTTP will not instantiate a new http server\nand will not bind itself to it.\n\n\n```javascript\n socketio: require('socket.io')\n```\nThis property is __optional__ and defaults to null.\nIf this option is specified it will make a new namespace \"noobhttp\" and listen\nevents \"request\" with a file parameter. It will reponse with an emit of the file\nname that was requested with either the content of the file or an error object.\n\n\n```javascript\n files: {\n forbidden: \"^\\.\",\n property: \".noob.json\"\n }\n```\nTheses two options are __optionals__ and defaults to null.\nThe forbidden regexp option will default to false. If provided as the example all the\nfiles that starts with a dot will be responded with a 403.\n\nThe property option will default to false. If provided as the example every time the\nNoobHTTP receives a request for a file it will crawl the directory up to its home\ndirectory and look for this property file name. Right now the property file name is of\njson type and supports only 2 options. {\"auth\": true} which forces a directory to request\nfor a BasicAuth and {\"https\":\"https://domain2.com/\"} which enforces the url to be in https\nand thus redirects the browser with a 301.\n\n\n```javascript\n ssl: {\n key: fs.readFileSync('./ssl/privatekey.pem'),\n cert: fs.readFileSync('./ssl/certificate.pem')\n }\n```\nThis property is __optional__ and will default to null.\nIf you want the server to be ssl this is ofcourse required.\n\n\n```javascript\n replacements: {\n '.js,.css,.html': {\n \"__hostUrl__\": \"https://domain2.com:9000/\"\n }\n }\n```\nThis option is __optional__ and defaults to null.\nThis gives the chance to specify markers to be replaced in certain extensions. Like\nmentioned in the beginning when including js script cross domains you want to be able\nto load static files (html templates) from the domain where the js comes from. Instead\nof hardcoding certain values this can be used.\n","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.5.0":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple Nodejs HTTP server","keywords":["noob","newb","static","server","nodejs","http","https","ssl","simple","webapp","eventemitter2","template","i18n","cache","websocket","socketio","socket.io","if-modified-since","range","video","etag"],"version":"0.5.0","homepage":"https://github.com/Bwen/NoobHTTP","licenses":[{"type":"MIT"}],"repository":{"type":"git","url":"https://git@github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.8.0"},"dependencies":{"mkdirp":"~0.3.3","mime":"~1.2.5","eventemitter2":"~0.4.9","cookies":"~0.3.0","node-uuid":"~1.3.3"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.5"},"main":"index","readme":"# NoobHTTP\nThe version 0.5.0 breaks backward compatibility. I remade the whole thing from scratch to take full advantage of the EventEmitter2.\n\nThe module NoobHTTP as just one property and its `.Server`, which is an object. Its constructor accepts one argument. The possible options for that argument are as follow with their default values:\n\n```javascript\n{\n serverInfo: \"NoobHTTP/0.5.0\", // Sent as the HTTP header Server.\n home: \"./public\", // defines where all the public files resides.\n port: 80, // The port the server is to listen on. Defaults to 80 /443 depending on ssl config property.\n ssl: { // key & cert required for an HTTPs server.\n key: null,\n cert: null,\n },\n parsableExtensions: [\".html\"], // extensions that should be parsed for the mini-templating system.\n availableLanguages: [\"en\"], // available languages for negociating a language with the browser.\n cache: {\n dir: \"/tmp/noobhttp/cache\", // where to put the mini-templating complied files.\n days: 2 // this will be sent as the HTTP header Expires, adding it to the mtime of the file.\n },\n http_server: http_server // Already initiated HTTP Server, will not try to listen or initiate a server.\n}\n```\n\nThe first thing to know is that for every request NoobHTTP will add a property `.noobhttp` to the *ClientRequest* object as follow:\n```javascript\nClientRequest.noobhttp = {\n homedir: this.home,\n eventString: eventString,\n cookies: new Cookies(req, res),\n language: this.getRequestLanguage(req),\n data: null, // contains the data/body of the request\n error: {\n headers: {}, // headers that will be used to send the error page\n data: '' // body of the error response\n },\n response: {\n file: \"/var/www/domain.com/directory/file.html\", // absolute path of the file found\n data: '', // Body of the response\n },\n auth: {\n realm: 'Noob Realm',\n request: false,\n authorized: false\n }\n}\n```\nAnother important thing to know is that the property `ClientRequest.url` is parsed and replaced by the module `url`.\n`ClientRequest.url = url.parse(ClientRequest.url, true);`\n\nAlso the `req.headers.host` is modified to always include the port to be consistent, since its used for all event strings.\n\nAll files that are greater than 1 MegaByte will be streamed.\n\nThe server will also serve shared files, in the file `sharedFiles.js` that resides at the root of the module you can add files as follow:\n```javascript\nmodule.exports = {\n 'Class.js': 'Class.js',\n 'EventEmitter2.js': 'node_modules/eventemitter2/lib/eventemitter2.js',\n 'uuid.js': 'node_modules/node-uuid/uuid.js'\n};\n```\nYou can specify files that you want to serve without having them be in the public directory.\n\n# 4 types of events\n\n### Requests\nFor every request sent to the server an event will be emitted in the following syntax `request/domain.com:80/GET/directory/file.html`. The way the server checks if the file exists on the server is as follow: `var file = path.normalize(req.noobhttp.homedir + req.url.pathname);`; The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server.\n\nFor example, if we wanted to make all requests that starts with `/video` point to a different folder than the home we would do something like:\n```javascript\nserver.on('request/*/GET/video/**', function (req) {\n req.noobhttp.homedir = '/media/videos';\n req.url.pathname = req.url.pathname.replace(/\\/video/, '');\n});\n```\n\nAnother interesting example would be to prefix the requests' url with its domain name, giving the possibility to host more than one domain/site with the server.\n```javascript\nserver.on('request/**', function (req) {\n req.url.pathname = \"/\" + req.headers.host.split(':')[0] + req.url.pathname;\n});\n```\nOne should be cautious with the order of the events...\n\n### Responses\nFor every response the server will emit an event in the following syntax: `response/domain.com:80/GET/directory/file.html`. The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.response` is added. It contains the following:\n```javascript\n{\n file: \"/var/www/domain.com/directory/file.html\", // The absolute path to the file that was found\n data: Buffer // The buffer that was returned by the fs.readFile()\n}\n```\n\n### Errors\nFor every error the server encounters it will emit an event in the following syntax: `error/domain.com:80/404`. The event receives two arguments the first one is for the error code and the second is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.error` is added. It contains the following:\n```javascript\n{\n headers: {'content-type': 'text/plain'},\n data: '404 File Not Found'\n}\n```\n\nThis can be useful to have personalized error pages, like so:\n```javascript\nserver.on('error/**', function (code, req) {\n req.response.headers = {'content-type': 'text/html'};\n req.response.data = '

' + code + \" \" +req.response.data + '

';\n});\n```\n\n### Authentications\nWhen a event for a request is emitted the callback as the opportunity to change the following property `ClientRequest.noobhttp.auth.request` to `true`. Doing so will make the server request a basic authentication to the browser and emit an auth event in the following syntax: `auth/domain.com:80/directory/file.html`. It will pass 3 arguments, the first is the `ClientRequest`, the second is the username and the third is the password.\n\nThe event MUST validate the username & password and change the following property `ClientRequest.noobhttp.auth.authorized` to `true` otherwise the server will keep prompting for the browser to authenticate itself.\n\nExample where we want every request to be authenticated:\n```javascript\nserver.on('request/**', function (req) {\n req.noobhttp.auth.request = true;\n});\n\nserver.on('auth/**', function (req, username, password) {\n req.noobhttp.auth.authorized = myAuthFunction(username, password);\n});\n```\n\n# HTTP Methods\nThe server supports the HTTP method \"OPTIONS\", which queries the server to see which methods are available for a given resource. For now the only methods that are not implemented are \"TRACE\" and \"CONNECT\", and will return a 501 (Not Implemented) code if ever requested.\n\nThe only methods that are available for __files__ are \"OPTIONS\" and \"GET\", any other methods requested for a __file__ will get 405 (Method Not Allowed).\n\nThe methods available for __directories__ are \"OPTIONS\", \"GET\", \"POST\", \"DELETE\" and \"PUT\". When requesting a __directory__ resource the server will check if it can find the following files in the directory: `.get.js`, `.post.js`, `.delete.js` and `.put.js` and will compile a list of methods supported for the requested directory and will return it as the HTTP header \"Allow\" if the method is OPTIONS. If the method requested for the directory does not have a file for it the server will return a 405 (Method Not Allowed).\n\nOtherwise it will require that file and call its export as a function passing it 3 arguments. The first one is the `ClientRequest`, second is the `ClientResponse` and the third is a reference to a `setTimeout(,2000);` that needs to be cleared by the module. Otherwise an 500 (Internal Error) will be sent to the browser.\n\nIf the method requested for a __directory__ is \"GET\" and the file `.get.js` is not present in the directory the server will check to see if the file `index.html` is present and alter the requested file for it.\n\nThe server supports the method \"HEAD\".\n\n# HTTP Headers\nTypical headers sent from the server for a simple request\n```\nserver: NoobHTTP/0.5.0\ncontent-type: text/html\ncontent-length: 908\nlast-modified: Sun, 08 Jul 2012 21:24:01 GMT\netag: \"516162-908-1341782641000\"\naccept-ranges: bytes\ncache-control: public, must-revalidate\nexpires: Tue, 10 Jul 2012 21:24:01 GMT\nx-powered-by: Node.js/0.8.0\nx-generated-by: a noob... xD\nx-xss-protection: 1; mode=block\nx-content-type-options: nosniff\n```\n\nIt supports the following headers sent from the client: `if-modified-since`, `if-none-match`, `range`, `if-range`, `cache-control`.\n\n\n# Mini-Templating system\nThis is a very simple file include system for files that have a parsable extension. The server will crawl the directories up to the `.home` and identifies `.templates` folders for the request. If the requested file has a marker `{noobhttp-layout}` it will find the nearest `layout.html`. It will do the same for the markers `{noobhttp-include file=header.html}`. It will always crawl the directories from the requested file's folder and will always take the first file it finds.\n\nWhen a parsable extension is compiled it is saved in the `cache.dir` config and the http headers are modified accordingly.\n\nExample,\nrequested file `/dir1/dir2/index.html`\n```html\n{noobhttp-layout}\n
hullo world
\n```\n\nfile `/.templates/layout.html`\n```html\n\n\n \n hullo world\n \n \n\n{noobhttp-include file=header.html}\n{noobhttp-content}\n{noobhttp-include file=footer.html}\n\n\n```\n\nfile `/dir1/.templates/header.html`\n```html\n
hullo header
\n```\n\n__the result would give__:\n\n```html\n\n\n \n hullo world\n \n \n\n
hullo header
\n
hullo world
\n\n\n```\n","_id":"NoobHTTP@0.5.0","dist":{"shasum":"b796b34ff2de99fca31ae0b7eacf6d54314e1652","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.5.0.tgz"},"maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.5.1":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple Nodejs HTTP server","keywords":["noob","newb","static","server","nodejs","http","https","ssl","simple","webapp","eventemitter2","template","i18n","cache","websocket","socketio","socket.io","if-modified-since","range","video","etag"],"version":"0.5.1","homepage":"https://github.com/Bwen/NoobHTTP","licenses":[{"type":"MIT"}],"repository":{"type":"git","url":"https://git@github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.8.0"},"dependencies":{"mkdirp":"~0.3.3","mime":"~1.2.5","eventemitter2":"~0.4.9","cookies":"~0.3.0","node-uuid":"~1.3.3"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.5"},"main":"index","readme":"# NoobHTTP\nThe version 0.5.0 breaks backward compatibility. I remade the whole thing from scratch to take full advantage of the EventEmitter2.\n\nThe module NoobHTTP as just one property and its `.Server`, which is an object. Its constructor accepts one argument. The possible options for that argument are as follow with their default values:\n\n```javascript\n{\n serverInfo: \"NoobHTTP/0.5.0\", // Sent as the HTTP header Server.\n home: \"./public\", // defines where all the public files resides.\n port: 80, // The port the server is to listen on. Defaults to 80 /443 depending on ssl config property.\n ssl: { // key & cert required for an HTTPs server.\n key: null,\n cert: null,\n },\n parsableExtensions: [\".html\"], // extensions that should be parsed for the mini-templating system.\n availableLanguages: [\"en\"], // available languages for negociating a language with the browser.\n cache: {\n dir: \"/tmp/noobhttp/cache\", // where to put the mini-templating complied files.\n days: 2 // this will be sent as the HTTP header Expires, adding it to the mtime of the file.\n },\n http_server: http_server // Already initiated HTTP Server, will not try to listen or initiate a server.\n}\n```\n\nThe first thing to know is that for every request NoobHTTP will add a property `.noobhttp` to the *ClientRequest* object as follow:\n```javascript\nClientRequest.noobhttp = {\n homedir: this.home,\n eventString: eventString,\n cookies: new Cookies(req, res),\n language: this.getRequestLanguage(req),\n data: null, // contains the data/body of the request\n error: {\n headers: {}, // headers that will be used to send the error page\n data: '' // body of the error response\n },\n response: {\n file: \"/var/www/domain.com/directory/file.html\", // absolute path of the file found\n data: '', // Body of the response\n },\n auth: {\n realm: 'Noob Realm',\n request: false,\n authorized: false\n }\n}\n```\nAnother important thing to know is that the property `ClientRequest.url` is parsed and replaced by the module `url`.\n`ClientRequest.url = url.parse(ClientRequest.url, true);`\n\nAlso the `req.headers.host` is modified to always include the port to be consistent, since its used for all event strings.\n\nAll files that are greater than 1 MegaByte will be streamed.\n\nThe server will also serve shared files, in the file `sharedFiles.js` that resides at the root of the module you can add files as follow:\n```javascript\nmodule.exports = {\n 'Class.js': 'Class.js',\n 'EventEmitter2.js': 'node_modules/eventemitter2/lib/eventemitter2.js',\n 'uuid.js': 'node_modules/node-uuid/uuid.js'\n};\n```\nYou can specify files that you want to serve without having them be in the public directory.\n\n# 4 types of events\n\n### Requests\nFor every request sent to the server an event will be emitted in the following syntax `request/domain.com:80/GET/directory/file.html`. The way the server checks if the file exists on the server is as follow: `var file = path.normalize(req.noobhttp.homedir + req.url.path±–®iùname);`; The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server.\n\nFor example, if we wanted to make all requests that starts with `/video` point to a different folder than the home we would do something like:\n```javascript\nserver.on('request/*/GET/video/**', function (req) {\n req.noobhttp.homedir = '/media/videos';\n req.url.pathname = req.url.pathname.replace(/\\/video/, '');\n});\n```\n\nAnother interesting example would be to prefix the requests' url with its domain name, giving the possibility to host more than one domain/site with the server.\n```javascript\nserver.on('request/**', function (req) {\n req.url.pathname = \"/\" + req.headers.host.split(':')[0] + req.url.pathname;\n});\n```\nOne should be cautious with the order of the events...\n\n### Responses\nFor every response the server will emit an event in the following syntax: `response/domain.com:80/GET/directory/file.html`. The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.response` is added. It contains the following:\n```javascript\n{\n file: \"/var/www/domain.com/directory/file.html\", // The absolute path to the file that was found\n data: Buffer // The buffer that was returned by the fs.readFile()\n}\n```\n\n### Errors\nFor every error the server encounters it will emit an event in the following syntax: `error/domain.com:80/404`. The event receives two arguments the first one is for the error code and the second is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.error` is added. It contains the following:\n```javascript\n{\n headers: {'content-type': 'text/plain'},\n data: '404 File Not Found'\n}\n```\n\nThis can be useful to have personalized error pages, like so:\n```javascript\nserver.on('error/**', function (code, req) {\n req.response.headers = {'content-type': 'text/html'};\n req.response.data = '

' + code + \" \" +req.response.data + '

';\n});\n```\n\n### Authentications\nWhen a event for a request is emitted the callback as the opportunity to change the following property `ClientRequest.noobhttp.auth.request` to `true`. Doing so will make the server request a basic authentication to the browser and emit an auth event in the following syntax: `auth/domain.com:80/directory/file.html`. It will pass 3 arguments, the first is the `ClientRequest`, the second is the username and the third is the password.\n\nThe event MUST validate the username & password and change the following property `ClientRequest.noobhttp.auth.authorized` to `true` otherwise the server will keep prompting for the browser to authenticate itself.\n\nExample where we want every request to be authenticated:\n```javascript\nserver.on('request/**', function (req) {\n req.noobhttp.auth.request = true;\n});\n\nserver.on('auth/**', function (req, username, password) {\n req.noobhttp.auth.authorized = myAuthFunction(username, password);\n});\n```\n\n# HTTP Methods\nThe server supports the HTTP method \"OPTIONS\", which queries the server to see which methods are available for a given resource. For now the only methods that are not implemented are \"TRACE\" and \"CONNECT\", and will return a 501 (Not Implemented) code if ever requested.\n\nThe only methods that are available for __files__ are \"OPTIONS\" and \"GET\", any other methods requested for a __file__ will get 405 (Method Not Allowed).\n\nThe methods available for __directories__ are \"OPTIONS\", \"GET\", \"POST\", \"DELETE\" and \"PUT\". When requesting a __directory__ resource the server will check if it can find the following files in the directory: `.get.js`, `.post.js`, `.delete.js` and `.put.js` and will compile a list of methods supported for the requested directory and will return it as the HTTP header \"Allow\" if the method is OPTIONS. If the method requested for the directory does not have a file for it the server will return a 405 (Method Not Allowed).\n\nOtherwise it will require that file and call its export as a function passing it 3 arguments. The first one is the `ClientRequest`, second is the `ClientResponse` and the third is a reference to a `setTimeout(,2000);` that needs to be cleared by the module. Otherwise an 500 (Internal Error) will be sent to the browser.\n\nIf the method requested for a __directory__ is \"GET\" and the file `.get.js` is not present in the directory the server will check to see if the file `index.html` is present and alter the requested file for it.\n\nThe server supports the method \"HEAD\".\n\n# HTTP Headers\nTypical headers sent from the server for a simple request\n```\nserver: NoobHTTP/0.5.0\ncontent-type: text/html\ncontent-length: 908\nlast-modified: Sun, 08 Jul 2012 21:24:01 GMT\netag: \"516162-908-1341782641000\"\naccept-ranges: bytes\ncache-control: public, must-revalidate\nexpires: Tue, 10 Jul 2012 21:24:01 GMT\nx-powered-by: Node.js/0.8.0\nx-generated-by: a noob... xD\nx-xss-protection: 1; mode=block\nx-content-type-options: nosniff\n```\n\nIt supports the following headers sent from the client: `if-modified-since`, `if-none-match`, `range`, `if-range`, `cache-control`.\n\n\n# Mini-Templating system\nThis is a very simple file include system for files that have a parsable extension. The server will crawl the directories up to the `.home` and identifies `.templates` folders for the request. If the requested file has a marker `{noobhttp-layout}` it will find the nearest `layout.html`. It will do the same for the markers `{noobhttp-include file=header.html}`. It will always crawl the directories from the requested file's folder and will always take the first file it finds.\n\nWhen a parsable extension is compiled it is saved in the `cache.dir` config and the http headers are modified accordingly.\n\nExample,\nrequested file `/dir1/dir2/index.html`\n```html\n{noobhttp-layout}\n
hullo world
\n```\n\nfile `/.templates/layout.html`\n```html\n\n\n \n hullo world\n \n \n\n{noobhttp-include file=header.html}\n{noobhttp-content}\n{noobhttp-include file=footer.html}\n\n\n```\n\nfile `/dir1/.templates/header.html`\n```html\n
hullo header
\n```\n\n__the result would give__:\n\n```html\n\n\n \n hullo world\n \n \n\n
hullo header
\n
hullo world
\n\n\n```\n","_id":"NoobHTTP@0.5.1","dist":{"shasum":"a5db5142dbd248d0aa9be60d82619aeaf88db814","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.5.1.tgz"},"maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]},"0.5.2":{"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"name":"NoobHTTP","description":"Simple Nodejs HTTP server","keywords":["noob","newb","static","server","nodejs","http","https","ssl","simple","webapp","eventemitter2","template","i18n","cache","websocket","socketio","socket.io","if-modified-since","range","video","etag"],"version":"0.5.2","homepage":"https://github.com/Bwen/NoobHTTP","licenses":[{"type":"MIT"}],"repository":{"type":"git","url":"https://git@github.com:Bwen/NoobHTTP.git"},"engines":{"node":"~0.8.0"},"dependencies":{"mkdirp":"~0.3.3","mime":"~1.2.5","eventemitter2":"~0.4.9","cookies":"~0.3.0","node-uuid":"~1.3.3"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.5"},"main":"index","readme":"# NoobHTTP\nThe version 0.5.0 breaks backward compatibility. I remade the whole thing from scratch to take full advantage of the EventEmitter2.\n\nThe module NoobHTTP as just one property and its `.Server`, which is an object. Its constructor accepts one argument. The possible options for that argument are as follow with their default values:\n\n```javascript\n{\n serverInfo: \"NoobHTTP/0.5.0\", // Sent as the HTTP header Server.\n home: \"./public\", // defines where all the public files resides.\n port: 80, // The port the server is to listen on. Defaults to 80 /443 depending on ssl config property.\n ssl: { // key & cert required for an HTTPs server.\n key: null,\n cert: null,\n },\n parsableExtensions: [\".html\"], // extensions that should be parsed for the mini-templating system.\n availableLanguages: [\"en\"], // available languages for negociating a language with the browser.\n cache: {\n dir: \"/tmp/noobhttp/cache\", // where to put the mini-templating complied files.\n days: 2 // this will be sent as the HTTP header Expires, adding it to the mtime of the file.\n },\n http_server: http_server // Already initiated HTTP Server, will not try to listen or initiate a server.\n}\n```\n\nThe first thing to know is that for every request NoobHTTP will add a property `.noobhttp` to the *ClientRequest* object as follow:\n```javascript\nClientRequest.noobhttp = {\n homedir: this.home,\n eventString: eventString,\n cookies: new Cookies(req, res),\n language: this.getRequestLanguage(req),\n data: null, // contains the data/body of the request\n error: {\n headers: {}, // headers that will be used to send the error page\n data: '' // body of the error response\n },\n response: {\n file: \"/var/www/domain.com/directory/file.html\", // absolute path of the file found\n data: '', // Body of the response\n },\n auth: {\n realm: 'Noob Realm',\n request: false,\n authorized: false\n }\n}\n```\nAnother important thing to know is that the property `ClientRequest.url` is parsed and replaced by the module `url`.\n`ClientRequest.url = url.parse(ClientRequest.url, true);`\n\nAlso the `req.headers.host` is modified to always include the port to be consistent, since its used for all event strings.\n\nAll files that are greater than 1 MegaByte will be streamed.\n\nThe server will also serve shared files, in the file `sharedFiles.js` that resides at the root of the module you can add files as follow:\n```javascript\nmodule.exports = {\n 'Class.js': 'Class.js',\n 'EventEmitter2.js': 'node_modules/eventemitter2/lib/eventemitter2.js',\n 'uuid.js': 'node_modules/node-uuid/uuid.js'\n};\n```\nYou can specify files that you want to serve without having them be in the public directory.\n\n# 4 types of events\n\n### Requests\nFor every request sent to the server an event will be emitted in the following syntax `request/domain.com:80/GET/directory/file.html`. The way the server checks if the file exists on the server is as follow: `var file = path.normalize(req.noobhttp.homedir + req.url.pathname);`; The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server.\n\nFor example, if we wanted to make all requests that starts with `/video` point to a different folder than the home we would do something like:\n```javascript\nserver.on('request/*/GET/video/**', function (req) {\n req.noobhttp.homedir = '/media/videos';\n req.url.pathname = req.url.pathname.replace(/\\/video/, '');\n});\n```\n\nAnother interesting example would be to prefix the requests' url with its domain name, giving the possibility to host more than one domain/site with the server.\n```javascript\nserver.on('request/**', function (req) {\n req.url.pathname = \"/\" + req.headers.host.split(':')[0] + req.url.pathname;\n});\n```\nOne should be cautious with the order of the events...\n\n### Responses\nFor every response the server will emit an event in the following syntax: `response/domain.com:80/GET/directory/file.html`. The only argument passed to the event is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.response` is added. It contains the following:\n```javascript\n{\n file: \"/var/www/domain.com/directory/file.html\", // The absolute path to the file that was found\n data: Buffer // The buffer that was returned by the fs.readFile()\n}\n```\n\n### Errors\nFor every error the server encounters it will emit an event in the following syntax: `error/domain.com:80/404`. The event receives two arguments the first one is for the error code and the second is the `ClientRequest` which can be altered to change the behavior of the server. Before emitting this event the property `ClientRequest.noobhttp.error` is added. It contains the following:\n```javascript\n{\n headers: {'content-type': 'text/plain'},\n data: '404 File Not Found'\n}\n```\n\nThis can be useful to have personalized error pages, like so:\n```javascript\nserver.on('error/**', function (code, req) {\n req.response.headers = {'content-type': 'text/html'};\n req.response.data = '

' + code + \" \" +req.response.data + '

';\n});\n```\n\n### Authentications\nWhen a event for a request is emitted the callback as the opportunity to change the following property `ClientRequest.noobhttp.auth.request` to `true`. Doing so will make the server request a basic authentication to the browser and emit an auth event in the following syntax: `auth/domain.com:80/directory/file.html`. It will pass 3 arguments, the first is the `ClientRequest`, the second is the username and the third is the password.\n\nThe event MUST validate the username & password and change the following property `ClientRequest.noobhttp.auth.authorized` to `true` otherwise the server will keep prompting for the browser to authenticate itself.\n\nExample where we want every request to be authenticated:\n```javascript\nserver.on('request/**', function (req) {\n req.noobhttp.auth.request = true;\n});\n\nserver.on('auth/**', function (req, username, password) {\n req.noobhttp.auth.authorized = myAuthFunction(username, password);\n});\n```\n\n# HTTP Methods\nThe server supports the HTTP method \"OPTIONS\", which queries the server to see which methods are available for a given resource. For now the only methods that are not implemented are \"TRACE\" and \"CONNECT\", and will return a 501 (Not Implemented) code if ever requested.\n\nThe only methods that are available for __files__ are \"OPTIONS\" and \"GET\", any other methods requested for a __file__ will get 405 (Method Not Allowed).\n\nThe methods available for __directories__ are \"OPTIONS\", \"GET\", \"POST\", \"DELETE\" and \"PUT\". When requesting a __directory__ resource the server will check if it can find the following files in the directory: `.get.js`, `.post.js`, `.delete.js` and `.put.js` and will compile a list of methods supported for the requested directory and will return it as the HTTP header \"Allow\" if the method is OPTIONS. If the method requested for the directory does not have a file for it the server will return a 405 (Method Not Allowed).\n\nOtherwise it will require that file and call its export as a function passing it 3 arguments. The first one is the `ClientRequest`, second is the `ClientResponse` and the third is a reference to a `setTimeout(,2000);` that needs to be cleared by the module. Otherwise an 500 (Internal Error) will be sent to the browser.\n\nIf the method requested for a __directory__ is \"GET\" and the file `.get.js` is not present in the directory the server will check to see if the file `index.html` is present and alter the requested file for it.\n\nThe server supports the method \"HEAD\".\n\n# HTTP Headers\nTypical headers sent from the server for a simple request\n```\nserver: NoobHTTP/0.5.0\ncontent-type: text/html\ncontent-length: 908\nlast-modified: Sun, 08 Jul 2012 21:24:01 GMT\netag: \"516162-908-1341782641000\"\naccept-ranges: bytes\ncache-control: public, must-revalidate\nexpires: Tue, 10 Jul 2012 21:24:01 GMT\nx-powered-by: Node.js/0.8.0\nx-generated-by: a noob... xD\nx-xss-protection: 1; mode=block\nx-content-type-options: nosniff\n```\n\nIt supports the following headers sent from the client: `if-modified-since`, `if-none-match`, `range`, `if-range`, `cache-control`.\n\n\n# Mini-Templating system\nThis is a very simple file include system for files that have a parsable extension. The server will crawl the directories up to the `.home` and identifies `.templates` folders for the request. If the requested file has a marker `{noobhttp-layout}` it will find the nearest `layout.html`. It will do the same for the markers `{noobhttp-include file=header.html}`. It will always crawl the directories from the requested file's folder and will always take the first file it finds.\n\nWhen a parsable extension is compiled it is saved in the `cache.dir` config and the http headers are modified accordingly.\n\nExample,\nrequested file `/dir1/dir2/index.html`\n```html\n{noobhttp-layout}\n
hullo world
\n```\n\nfile `/.templates/layout.html`\n```html\n\n\n \n hullo world\n \n \n\n{noobhttp-include file=header.html}\n{noobhttp-content}\n{noobhttp-include file=footer.html}\n\n\n```\n\nfile `/dir1/.templates/header.html`\n```html\n
hullo header
\n```\n\n__the result would give__:\n\n```html\n\n\n \n hullo world\n \n \n\n
hullo header
\n
hullo world
\n\n\n```\n","_id":"NoobHTTP@0.5.2","dist":{"shasum":"61f7c3c1365e407b5127bc821f2ff352a7424668","tarball":"http://registry.npmjs.org/NoobHTTP/-/NoobHTTP-0.5.2.tgz"},"maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}]}},"readme":"","maintainers":[{"name":"bwen","email":"philippe.guilbault@gmail.com"}],"time":{"modified":"2012-07-16T21:13:29.311Z","created":"2012-04-19T11:25:57.177Z","0.3.0":"2012-04-19T11:25:58.022Z","0.3.1":"2012-04-24T22:12:26.890Z","0.3.2":"2012-04-27T13:50:46.804Z","0.3.3":"2012-04-27T19:54:52.418Z","0.3.4":"2012-04-28T16:38:39.515Z","0.3.5":"2012-04-28T23:44:47.358Z","0.3.6":"2012-04-29T01:25:37.401Z","0.4.0":"2012-05-01T23:08:18.315Z","0.4.1":"2012-05-01T23:12:55.234Z","0.5.0":"2012-07-13T11:07:51.002Z","0.5.1":"2012-07-13T13:28:39.507Z","0.5.2":"2012-07-16T21:13:29.311Z"},"author":{"name":"Philippe Guilbault","email":"philippe.guilbault@gmail.com"},"repository":{"type":"git","url":"https://git@github.com:Bwen/NoobHTTP.git"},"_id":"NoobHTTP","_rev":"1-5c49db19ae360d7a65cbdc967dd82d5e"}ÿdocument-storeÿFrog—{"id":"Frog","rev":"1-e9a31d4b81bca8174a62a5addecb35b2","rev_tree":[{"pos":1,"ids":["e9a31d4b81bca8174a62a5addecb35b2",{"status":"available"},[]]}],"rev_map":{"1-e9a31d4b81bca8174a62a5addecb35b2":3403},"winningRev":"1-e9a31d4b81bca8174a62a5addecb35b2","deleted":false,"seq":3403}ÿby-sequenceÿ0000000000003403Œ{"name":"Frog","description":"Provides support for require()'ing Google Dart source files (.dart).","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"Frog","version":"0.1.0","description":"Provides support for require()'ing Google Dart source files (.dart).","keywords":["dart","google","frog","compiler"],"homepage":"https://github.com/kaisellgren/Frog","author":{"name":"Kai Sellgren"},"contributors":[{"name":"Kai Sellgren"}],"bugs":{"url":"https://github.com/kaisellgren/Frog/issues"},"licenses":[{"type":"MIT","url":"http://github.com/kaisellgren/Frog/raw/master/LICENSE"}],"main":"lib/Frog.js","repository":{"type":"git","url":"git://github.com/kaisellgren/Frog.git"},"dependencies":{},"devDependencies":{},"engines":{"node":">=0.6.15"},"_npmUser":{"name":"kaisellgren","email":"kaisellgren@gmail.com"},"_id":"Frog@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ebe17738227a5a9d96b86c874cb02cff18b41878","tarball":"http://registry.npmjs.org/Frog/-/Frog-0.1.0.tgz"},"maintainers":[{"name":"kaisellgren","email":"kaisellgren@gmail.com"}]}},"readme":"What's Frog?\r\n==\r\nFrog is a NodeJS module that enables Google Dart support. You may now write server-side Dart enabled NodeJS applications.\r\n\r\n## How to install\r\nIt's not yet released, but when it is:\r\n\r\n```\r\nnpm install Frog\r\n```\r\n\r\nFor now, clone the repo.\r\n\r\nYou also need to have Dart SDK installed: http://www.dartlang.org/docs/getting-started/sdk/#download\r\n\r\nMake sure the installation bin folder is in your environment ```$PATH```.\r\n\r\n## Examples\r\n\r\n#####app.js\r\n```javascript\r\n// Include the Frog compiler.\r\nrequire('./../lib/Frog.js');\r\n\r\n// Now just run Dart like a boss.\r\nconsole.log('I am about to run some Dart...');\r\n\r\nrequire('./test.dart');\r\n\r\nconsole.log('I just ran Dart!');\r\n```\r\n#####test.dart\r\n```dart\r\nclass Point {\r\n Point(this.x, this.y);\r\n\r\n distanceTo(Point other) {\r\n var dx = x - other.x;\r\n var dy = y - other.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n }\r\n\r\n var x, y;\r\n}\r\n\r\nmain() {\r\n Point p = new Point(2, 3);\r\n Point q = new Point(3, 4);\r\n\r\n print('distance from p to q = ${p.distanceTo(q)}');\r\n}\r\n```\r\n\r\n#####Run it\r\n```\r\n$ node app.js\r\nI am about to run some Dart...\r\ndistance from p to q = 1.4142135623730951\r\nI just ran Dart!\r\n```\r\n\r\n## Status\r\n\r\nThis project is not yet production ready! It's also quite slow. I'm planning to take another approach to this.","maintainers":[{"name":"kaisellgren","email":"kaisellgren@gmail.com"}],"time":{"modified":"2012-04-21T18:06:23.863Z","created":"2012-04-21T18:06:21.711Z","0.1.0":"2012-04-21T18:06:23.863Z"},"author":{"name":"Kai Sellgren"},"repository":{"type":"git","url":"git://github.com/kaisellgren/Frog.git"},"_id":"Frog","_rev":"1-e9a31d4b81bca8174a62a5addecb35b2"}ÿdocument-storeÿDirWatcher{"id":"DirWatcher","rev":"1-94cbb3ca72d6524a9c06d76264df0c2f","rev_tree":[{"pos":1,"ids":["94cbb3ca72d6524a9c06d76264df0c2f",{"status":"available"},[]]}],"rev_map":{"1-94cbb3ca72d6524a9c06d76264df0c2f":3402},"winningRev":"1-94cbb3ca72d6524a9c06d76264df0c2f","deleted":false,"seq":3402}ÿby-sequenceÿ0000000000003402ž{"name":"DirWatcher","description":"A simple tool for you to watch a directory","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"DirWatcher","description":"A simple tool for you to watch a directory","version":"1.0.0","author":{"name":"Neekey","email":"ni184775761@gmail.com"},"keywords":["DirWatcher","directory"],"main":"DirWatcher.js","repository":{"type":"git","url":"git@github.com:neekey/dirwatcher.git"},"_npmUser":{"name":"neekey","email":"ni184775761@gmail.com"},"_id":"DirWatcher@1.0.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"682fa84cb74ddbd5313e112b5154e015a4b81446","tarball":"http://registry.npmjs.org/DirWatcher/-/DirWatcher-1.0.0.tgz"},"maintainers":[{"name":"neekey","email":"ni184775761@gmail.com"}]}},"readme":"##DirWatcher 监视你的目录\n\n监控指定目录中文件的增加,删除,修改,å­ç›®å½•的增加,删除等\n\n安装 `npm install DirWatcher`\n\n### USAGE 使用\n\n\tvar dw = require( './DirWatcher' );\n\tdw.watchDir( 'path', function( ifDir, path, cur, pre ){\n\t\t\n\t\t// ifDir 是å¦ä¸ºç›®å½•\n\t\t// path 文件或者目录的路径\n\t\t// type å˜æ›´ç±»åž‹ 'modify' 'remove' 'add'\n\t\t// cur å½“æ–‡ä»¶å˜æ›´æ—¶ï¼ŒåŒ…å«å½“剿–‡ä»¶çš„ä¿¡æ¯\n\t\t// pre å½“æ–‡ä»¶å˜æ›´æ—¶ï¼ŒåŒ…å«å˜æ›´å‰æ–‡ä»¶ä¿¡æ¯\t\n\t});\n\t\n###API\n\n####watchDir( path, next )\n\n* `path`: 目录的路径\n* `next`: 回调,包å«äº”ä¸ªä¸ªå‚æ•°`ifDir`, `path`, `type`, `cur`, `pre`\n\n####readDir( path, next )\n\n对制定目录进行递归便利,对æ¯ä¸€ä¸ªæœ‰æ•ˆè·¯å¾„执行一次回调\n\n* `path`: 目录的路径\n* `next`: 回调,为目录下的æ¯ä¸€ä¸ªæ–‡ä»¶æˆ–者å­ç›®å½•执行一次回调。回调包å«\n* * err\n* * path: 路径\n* * ifDir: 是å¦ä¸ºç›®å½•\n\n###Exception é…置例外\n\nå¯ä»¥é€šè¿‡åœ¨éœ€è¦æ·»åŠ ä¾‹å¤–çš„ç›®å½•ä¸‹æ·»åŠ å为`.nowatch`æ–‡ä»¶ï¼Œæ¥æ·»åР例外. 例外添加的规则:\n\n* æ¯ä¸€è¡Œä¸ºä¸€æ¡ä¾‹å¤–\n* 一行中若出现空格,空格åŽçš„内容将被忽略\n* 使用`#`进行注释\n* 以`/`结尾的例外将被视为目录,å¦åˆ™ä¸ºå…·ä½“的文件å\n\n###存在的问题\n\n* 当watch的文件和目录过多,将报错`EMFILE`的错误\n* 当一个路径被删除,然åŽå†æ–°å»ºåŒåè·¯å¾„æ—¶å°†æ— æ³•é‡æ–°`watch`该路径(对于目录应该问题ä¸å¤§ï¼Œä½†æ˜¯å¯¹äºŽæ–‡ä»¶ï¼Œæš‚时无法解决)\nhah","maintainers":[{"name":"neekey","email":"ni184775761@gmail.com"}],"time":{"modified":"2012-03-22T12:22:19.635Z","created":"2012-03-22T12:22:04.756Z","1.0.0":"2012-03-22T12:22:19.635Z"},"author":{"name":"Neekey","email":"ni184775761@gmail.com"},"repository":{"type":"git","url":"git@github.com:neekey/dirwatcher.git"},"_id":"DirWatcher","_rev":"1-94cbb3ca72d6524a9c06d76264df0c2f"} ÿdocument-storeÿCouchDBChanges¡{"id":"CouchDBChanges","rev":"1-47575edf2c1c5d903f39b01e163aa249","rev_tree":[{"pos":1,"ids":["47575edf2c1c5d903f39b01e163aa249",{"status":"available"},[]]}],"rev_map":{"1-47575edf2c1c5d903f39b01e163aa249":3401},"winningRev":"1-47575edf2c1c5d903f39b01e163aa249","deleted":false,"seq":3401}ÿby-sequenceÿ0000000000003401¹E{"name":"CouchDBChanges","description":"Write CouchDB Changes Handlers. Easy.","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"CouchDBChanges","version":"0.0.1","author":{"name":"Jan Lehnardt","email":"jan@apache.org"},"description":"Write CouchDB Changes Handlers. Easy.","keywords":["couchdb","changes"],"homepage":"http://github.com/janl/couchdb-external-CouchDBChanges","repository":{"type":"git","url":"git://github.com/janl/couchdb-external-CouchDBChanges.git"},"engines":["node"],"main":"./CouchDBChanges.js","_npmUser":{"name":"jan","email":"jan@apache.org"},"_id":"CouchDBChanges@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"af98dc891185ac42047b33d725173e40d1e6a815","tarball":"http://registry.npmjs.org/CouchDBChanges/-/CouchDBChanges-0.0.1.tgz"},"maintainers":[{"name":"jan","email":"jan@apache.org"}]},"0.0.2":{"name":"CouchDBChanges","version":"0.0.2","author":{"name":"Jan Lehnardt","email":"jan@apache.org"},"description":"Write CouchDB Changes Handlers. Easy.","keywords":["couchdb","changes"],"homepage":"http://github.com/janl/couchdb-external-CouchDBChanges","repository":{"type":"git","url":"git://github.com/janl/couchdb-external-CouchDBChanges.git"},"engines":["node"],"main":"./CouchDBChanges.js","dependencies":{"follow":"0.8.0"},"_npmUser":{"name":"jan","email":"jan@apache.org"},"_id":"CouchDBChanges@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"93ead46d4dd1a96e4e3a809fe008ac80dfc1f108","tarball":"http://registry.npmjs.org/CouchDBChanges/-/CouchDBChanges-0.0.2.tgz"},"maintainers":[{"name":"jan","email":"jan@apache.org"}]},"0.0.3":{"name":"CouchDBChanges","version":"0.0.3","author":{"name":"Jan Lehnardt","email":"jan@apache.org"},"description":"Write CouchDB Changes Handlers. Easy.","keywords":["couchdb","changes"],"homepage":"http://github.com/janl/couchdb-external-CouchDBChanges","repository":{"type":"git","url":"git://github.com/janl/couchdb-external-CouchDBChanges.git"},"engines":["node"],"main":"./CouchDBChanges.js","dependencies":{"follow":"0.8.0"},"_npmUser":{"name":"jan","email":"jan@apache.org"},"_id":"CouchDBChanges@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"154c733f09ddfa9565355e6ed2090ad71a7d60bc","tarball":"http://registry.npmjs.org/CouchDBChanges/-/CouchDBChanges-0.0.3.tgz"},"maintainers":[{"name":"jan","email":"jan@apache.org"}]},"0.1.0":{"name":"CouchDBChanges","version":"0.1.0","author":{"name":"Jan Lehnardt","email":"jan@apache.org"},"description":"Write CouchDB Changes Handlers. Easy.","keywords":["couchdb","changes"],"homepage":"http://github.com/janl/couchdb-external-CouchDBChanges","repository":{"type":"git","url":"git://github.com/janl/couchdb-external-CouchDBChanges"},"engines":["node"],"main":"./CouchDBChanges.js","dependencies":{"follow":"0.8.0"},"scripts":{"test":"mocha"},"devDependencies":{"mocha":"*","groc":"*"},"readme":"# Write CouchDB Changes Listeners. Easy.\n\n var CouchDBChanges = require(\"CouchDBChanges\");\n var config = {\n url: \"http://127.0.0.1:5984/mydb\",\n filter: \"pommes\",\n persistent_since: true\n };\n\n var changes = new CouchDBChanges(config, function(error, change) {\n // do dat change!\n });\n\nWow, easy!\n\nCouchDB, The Definitive Guide has\n[a chapter on the Changes feed](http://guide.couchdb.org/draft/notifications.html).\n\n\n## Wha?\n\nCouchDB has this amazing feature called the “Changes Feedâ€. Think of\n`git log` for your database. There’s all sorts of awesome you can do\nwith this. For example, have a database called `outbox` and connect\na CouchDB changes listener to it and whenever your application creates\na new document, say\n\n {\n \"from\": \"me@example.com\",\n \"to\": \"you@example.com\",\n \"subject\": \"Hey there!\",\n \"body\": \"I think you get the idea\"\n }\n\nthe changes listener then gets notified right when the document gets\ncreated, but asynchronously from your application and send the email\nthat is described. When the email is sent, it can write back a new field\n\n \"status\": \"sent\"\n\nor, if anything went wrong:\n\n \"status\": \"error\",\n \"error_message\": \"that email address is bogus you twat!\"\n\nthat the application can then use again to update the user interface accordingly.\n\nSo yeah, quick example, but there’s tons of things you can do with this.\nWe should collect nice examples, but for now you can check out\n.\n\n## API\n\n`CouchDBChanges(config, change_cb)`\n\n * `config`\n * `url`: string or url-object: URL to the database. Can include\n a username and password.\n * All parameters for the [follow library](follow)\n * All parameters for the CouchDB Changes API.\n * `follow_options`: (object) configurations for following {\n * `persistent_since`: (bool) false whether or not to persist the\n latest `seq_id` from the server. This allows us\n to avoid processing a change more than once.\n\n * `change_cb`: (callable) function to call for each change\n\n\n## Next?\n\n* Make `persistent_since` storage configurable.\n\n\n## Thanks\n\nThis is just a very thin wrapper around Jason Smith’s / Iris Couch’s\nexcellent [`follow` library](follow).\n\nThanks Jason!\n\n[follow]: https://github.com/iriscouch/follow\n\n## License & Copyright\n\n(c) 2012 Jan Lehnardt \nLicensed under the Apache License 2.0.\n","_id":"CouchDBChanges@0.1.0","dist":{"shasum":"f123a7f322e975bf5afb13ec800ea827e4d5541f","tarball":"http://registry.npmjs.org/CouchDBChanges/-/CouchDBChanges-0.1.0.tgz"},"maintainers":[{"name":"jan","email":"jan@apache.org"}]}},"readme":"# Write CouchDB Changes Listeners. Easy.\n\n var changes = require(\"CouchDBChanges\");\n changes.follow(\"database\", function(change) {\n // do whatever you want with the change.\n });\n\nWow, easy!\n\nCouchDB, The Definitive Guide has\n[a chapter on the Changes feed](http://guide.couchdb.org/draft/notifications.html).\n\n\n## Wha?\n\nCouchDB has this amazing feature called the “Changes Feedâ€. Think of\n`git log` for your database. There’s all sorts of awesome you can do\nwith this. For example, have a database called `outbox` and connect\na CouchDB changes listener to it and whenever your application creates\na new document, say\n\n {\n \"from\": \"me@example.com\",\n \"to\": \"you@example.com\",\n \"subject\": \"Hey there!\",\n \"body\": \"I think you get the idea\"\n }\n\nthe changes listener then gets notified right when the document gets\ncreated, but asynchronously from your application and send the email\nthat is described. When the email is sent, it can write back a new field\n\n \"status\": \"sent\"\n\nor, if anything went wrong:\n\n \"status\": \"error\",\n \"error_message\": \"that email address is?6Í8k bogus you twat!\"\n\nSo yeah, quick example, but there’s tons of things you can do with this.\nWe should collect nice examples, but for now you can check out\n.\n\n## API\n\n`follow(database, change_cb, follow_options, changes_options)`\n\n * `database`: (string) name of the database\n * `change_cb`: (callable) function to call for each change\n * `follow_options`: (object) configurations for following {\n persistent_since: (bool) false whether or not to persist the latest\n `seq_id` from the server. This allows us to avoid processing a\n change more than once.\n }\n * `changes_options`: (object) parameters for CouchDB’s `_changes` API.\n See .\n\n\n## Next?\n\n* Make `persistent_since` storage configurable.\n\n\n## Thanks\n\nThis is just a very thin wrapper around Jason Smith’s / Iris Couch’s\nexcellent [`follow` library](https://github.com/iriscouch/follow).\n\nThanks Jason!\n\n\n## License & Copyright\n\n(c) 2012 Jan Lehnardt \nLicensed under the Apache License 2.0.\n","maintainers":[{"name":"jan","email":"jan@apache.org"}],"time":{"modified":"2012-07-16T12:08:33.136Z","created":"2012-02-18T14:02:49.853Z","0.0.1":"2012-02-18T14:02:51.628Z","0.0.2":"2012-07-11T11:37:53.429Z","0.0.3":"2012-07-11T11:39:38.400Z","0.1.0":"2012-07-16T12:08:33.136Z"},"author":{"name":"Jan Lehnardt","email":"jan@apache.org"},"repository":{"type":"git","url":"git://github.com/janl/couchdb-external-CouchDBChanges"},"_id":"CouchDBChanges","_rev":"1-47575edf2c1c5d903f39b01e163aa249"}-Ý£.W.ÿlocal-storeÿ_local/sglXb3MFmOfPL53d8dzLhQ==ð{"session_id":"3f1f785a-b36d-42b6-bc3c-932af29d2215","_id":"_local/sglXb3MFmOfPL53d8dzLhQ==","history":[{"last_seq":3822,"session_id":"3f1f785a-b36d-42b6-bc3c-932af29d2215"}],"replicator":"pouchdb","version":1,"last_seq":3822,"_rev":"0-18"}"9tRxX’ÿmeta-storeÿ_local_doc_count3800$ÿmeta-storeÿ_local_last_update_seq3800ÿdocument-storeÿzlog—{"id":"zlog","rev":"1-18c0b39382095093f1617f6db14a6519","rev_tree":[{"pos":1,"ids":["18c0b39382095093f1617f6db14a6519",{"status":"available"},[]]}],"rev_map":{"1-18c0b39382095093f1617f6db14a6519":3800},"winningRev":"1-18c0b39382095093f1617f6db14a6519","deleted":false,"seq":3800}ÿby-sequenceÿ0000000000003800 {"name":"zlog","description":"A lazy log design for node.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"zlog","version":"0.0.1","description":"A lazy log design for node.js","main":"zlog.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":"","author":"","license":"BSD","_id":"zlog@0.0.1","readme":"ERROR: No README.md file found!","dist":{"shasum":"04d3396aff6a539623d467efb0b7ae075b1ee4a4","tarball":"http://registry.npmjs.org/zlog/-/zlog-0.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"guileen","email":"guileen@gmail.com"},"maintainers":[{"name":"guileen","email":"guileen@gmail.com"}]}},"readme":"ERROR: No README.md file found!","maintainers":[{"name":"guileen","email":"guileen@gmail.com"}],"time":{"modified":"2012-08-23T06:08:38.933Z","created":"2012-08-23T06:08:34.941Z","0.0.1":"2012-08-23T06:08:38.933Z"},"_id":"zlog","_rev":"1-18c0b39382095093f1617f6db14a6519"}ÿdocument-storeÿzeptoify›{"id":"zeptoify","rev":"1-c6046aeb5b03470f4aa9f047a4253217","rev_tree":[{"pos":1,"ids":["c6046aeb5b03470f4aa9f047a4253217",{"status":"available"},[]]}],"rev_map":{"1-c6046aeb5b03470f4aa9f047a4253217":3799},"winningRev":"1-c6046aeb5b03470f4aa9f047a4253217","deleted":false,"seq":3799}ÿby-sequenceÿ0000000000003799ª {"name":"zeptoify","description":"Zepto library for browsers","dist-tags":{"latest":"1.0.0rc1"},"versions":{"1.0.0rc1":{"author":{"name":"Matthew Lehner","email":"matthewlehner@gmail.com"},"name":"zeptoify","description":"Zepto library for browsers","version":"1.0.0rc1","homepage":"http://zeptojs.com","repository":{"type":"git","url":"git://github.com/matthewlehner/zeptoify.git"},"main":"./index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"matthewlehner","email":"matthewlehner@gmail.com"},"_id":"zeptoify@1.0.0rc1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a8422746c3caabf2845fd0464407a08ab8503e9b","tarball":"http://registry.npmjs.org/zeptoify/-/zeptoify-1.0.0rc1.tgz"},"readme":"","maintainers":[{"name":"matthewlehner","email":"matthewlehner@gmail.com"}]}},"readme":"","maintainers":[{"name":"matthewlehner","email":"matthewlehner@gmail.com"}],"time":{"modified":"2012-06-13T07:32:36.459Z","created":"2012-06-13T07:32:35.064Z","1.0.0rc1":"2012-06-13T07:32:36.459Z"},"author":{"name":"Matthew Lehner","email":"matthewlehner@gmail.com"},"repository":{"type":"git","url":"git://github.com/matthewlehner/zeptoify.git"},"_id":"zeptoify","_rev":"1-c6046aeb5b03470f4aa9f047a4253217"}ÿdocument-storeÿzcore˜{"id":"zcore","rev":"1-ca3d677ff01ae8ce700007b316ffe8c6","rev_tree":[{"pos":1,"ids":["ca3d677ff01ae8ce700007b316ffe8c6",{"status":"available"},[]]}],"rev_map":{"1-ca3d677ff01ae8ce700007b316ffe8c6":3798},"winningRev":"1-ca3d677ff01ae8ce700007b316ffe8c6","deleted":false,"seq":3798}ÿby-sequenceÿ0000000000003798Û5{"name":"zcore","description":"A library for object manipulation and differential operations, prototypal inheritance, and more.","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.1":{"name":"zcore","version":"0.1.1","description":"","homepage":"","keywords":["utility","util","core","functions"],"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"main":"zcore.js","_npmUser":{"name":"nickfargo","email":"nick.fargo@gmail.com"},"_id":"zcore@0.1.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"4c8e9f9598c02ecf6428fab98fb94a638c1c289d","tarball":"http://registry.npmjs.org/zcore/-/zcore-0.1.1.tgz"},"maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}],"directories":{}},"0.1.2":{"name":"zcore","version":"0.1.2","description":"","homepage":"","keywords":["utility","util","core","functions"],"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"main":"zcore.js","_npmJsonOpts":{"file":"/Users/nick/.npm/zcore/0.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"zcore@0.1.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"925068d267c534e25bfe99290f911c3dc09f36c5","tarball":"http://registry.npmjs.org/zcore/-/zcore-0.1.2.tgz"},"maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}],"directories":{}},"0.1.3":{"name":"zcore","version":"0.1.3","description":"","homepage":"","keywords":["utility","util","core","functions"],"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"main":"zcore.js","_npmJsonOpts":{"file":"/Users/nick/.npm/zcore/0.1.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"zcore@0.1.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"1df3fa54476613e0ab9732383c2e7d1d14011aec","tarball":"http://registry.npmjs.org/zcore/-/zcore-0.1.3.tgz"},"maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}]},"0.1.4":{"name":"zcore","version":"0.1.4","description":"","homepage":"","keywords":["utility","util","core","functions"],"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"main":"zcore.js","_npmJsonOpts":{"file":"/Users/nick/.npm/zcore/0.1.4/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"zcore@0.1.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"f4ea9bdf07b2f9c943e57d91788ba35eb83fe303","tarball":"http://registry.npmjs.org/zcore/-/zcore-0.1.4.tgz"},"maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}]},"0.1.5":{"name":"zcore","version":"0.1.5","description":"A library for object manipulation and differential operations, prototypal inheritance, and more.","homepage":"http://github.com/zvector/zcore","keywords":["utility","util","core","functions"],"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"main":"zcore.js","_npmUser":{"name":"nickfargo","email":"nick.fargo@gmail.com"},"_id":"zcore@0.1.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"7c23acc42b78a9cdf8cb5e791fd2c38778f41241","tarball":"http://registry.npmjs.org/zcore/-/zcore-0.1.5.tgz"},"maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}]}},"readme":"# Zcore\r\n\r\n## Caching\r\n\r\n### hasOwn\r\n\r\n`Object.prototype.hasOwnProperty`\r\n\r\n### toString\r\n\r\n`Object.prototype.toString`\r\n\r\n### slice\r\n\r\n`Array.prototype.slice`\r\n\r\n### trim\r\n\r\n`String.prototype.trim`\r\n\r\n## Nothing\r\n\r\n### noop\r\n\r\nReturns `undefined`.\r\n\r\n### getThis\r\n\r\nReturns `this`.\r\n\r\n## Typing\r\n\r\n### type( obj )\r\n\r\nReturns type reported by `toString`.\r\n\r\n### isNumber( number )\r\n\r\n### isArray( array )\r\n\r\n### isFunction( fn )\r\n\r\n### isPlainObject( obj )\r\n\r\n### isEmpty( obj [, andPrototype ] )\r\n\r\nSet `andPrototype` to something truthy and `obj` will have to be empty all the way through.\r\n\r\n## Iterating\r\n\r\n### each( obj, callback )\r\n\r\nLike jQuery, with a `callback` signature of `key, value, obj`.\r\n\r\n### forEach\r\n\r\nLike ES5 `forEach`, with a `callback` signature of `value, key, obj`.\r\n\r\n## Extending\r\n\r\n### extend( [ flags, ] target, source, [ ...sourceN ] )\r\n\r\nLike jQuery, with an option flags string.\r\n\r\n * 'deep' : Same as the optional Boolean flag in jQuery\r\n * 'own' : Restricts extended properties to those filtered by `Object.hasOwnProperty`\r\n * 'all' : Includes keys with undefined values\r\n\r\n## Array/Object Composition\r\n\r\n### flatten\r\n\r\nExtracts elements of nested arrays.\r\n\r\n### keys( obj )\r\n\r\nReturns an object's keys in an ordered string array.\r\n\r\n### invert( array )\r\n\r\nFor an `array` whose values are unique key strings, this returns an object that is a key-value inversion of `array`.\r\n\r\n### setAll( obj, value )\r\n\r\nSet every key in `obj` to `value`.\r\n\r\n### nullify( obj )\r\n\r\nSet every key in `obj` to `null`.\r\n\r\n### nullHash( array )\r\n\r\nGiven an `array` of keys, return an object with those keys all set to `null`.\r\n\r\n## Miscellaneous\r\n\r\n### stringFunction( fn )\r\n\r\nReturn the function `fn`, with its `toString` method set to itself. Might break stuff, like `type`, but can be useful for, say, devtools-inspecting the value of a getter.\r\n\r\n### valueFunction( fn )\r\n\r\nSame as above, but for `valueOf` instead of `toString`.\r\n\r\n### noConflict\r\n","maintainers":[{"name":"nickfargo","email":"nick.fargo@gmail.com"}],"time":{"modified":"2012-06-25T20:27:34.606Z","created":"2011-12-27T21:46:31.121Z","0.1.1":"2011-12-27T21:46:33.209Z","0.1.2":"2012-01-25T20:08:10.103Z","0.1.3":"2012-02-24T15:13:20.169Z","0.1.4":"2012-03-02T01:13:20.238Z","0.1.5":"2012-06-25T20:27:34.606Z"},"author":{"name":"Nick Fargo","email":"nick@zvector.com"},"repository":{"type":"git","url":"git://github.com/zvector/zcore.git"},"_id":"zcore","_rev":"1-ca3d677ff01ae8ce700007b316ffe8c6"}ÿdocument-storeÿyubico™{"id":"yubico","rev":"1-0bd3a16b7d10d6b485437943e3cde495","rev_tree":[{"pos":1,"ids":["0bd3a16b7d10d6b485437943e3cde495",{"status":"available"},[]]}],"rev_map":{"1-0bd3a16b7d10d6b485437943e3cde495":3797},"winningRev":"1-0bd3a16b7d10d6b485437943e3cde495","deleted":false,"seq":3797}ÿby-sequenceÿ0000000000003797µ{"name":"yubico","description":"Node library for validating Yubico One Time Passwords (OTPs) based on the validation protocol version 2.0.","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"yubico","description":"Node library for validating Yubico One Time Passwords (OTPs) based on the validation protocol version 2.0.","version":"0.1.1","author":{"name":"Tomaz Muraus","email":"tomaz+npm@tomaz.me"},"keywords":["yubikey","yubico","otp","one-time password"],"homepage":"https://github.com/Kami/node-yubico","repository":{"type":"git","url":"https://github.com/Kami/node-yubico.git"},"modules":{"yubico":"./lib/yubico"},"directories":{"lib":"./lib","example":["./example/example.js"]},"engines":{"node":">= 0.2.0 < 0.3.0"},"main":"index","_id":"yubico@0.1.1","_nodeSupported":false,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.3.2","dist":{"shasum":"19dc7b3131c6740c18f9e1c72ecfb1cdff01d2d8","tarball":"http://registry.npmjs.org/yubico/-/yubico-0.1.1.tgz"}},"0.1.2":{"name":"yubico","description":"Node library for validating Yubico One Time Passwords (OTPs) based on the validation protocol version 2.0.","version":"0.1.2","author":{"name":"Tomaz Muraus","email":"tomaz+npm@tomaz.me"},"keywords":["yubikey","yubico","otp","one-time password"],"homepage":"https://github.com/Kami/node-yubico","repository":{"type":"git","url":"https://github.com/Kami/node-yubico.git"},"modules":{"yubico":"./lib/yubico"},"directories":{"lib":"./lib","example":["./example/example.js"]},"scripts":{"test":"make test"},"engines":{"node":">= 0.2.0"},"main":"index","_id":"yubico@0.1.2","_engineSupported":true,"_npmVersion":"0.2.13-3","_nodeVersion":"v0.3.2","dist":{"shasum":"2074abcea2434ac0e09d8e67ad4719fd5919ece2","tarball":"http://registry.npmjs.org/yubico/-/yubico-0.1.2.tgz"}}},"maintainers":[{"name":"Kami","email":"tomaz@tomaz.me"},{"name":"kami","email":"tomaz+npm@tomaz.me"}],"time":{"modified":"2012-05-11T23:16:39.048Z","created":"2011-01-02T03:08:59.788Z","0.1.1":"2011-01-02T03:09:00.292Z","0.1.2":"2011-01-02T21:16:59.753Z"},"author":{"name":"Tomaz Muraus","email":"tomaz+npm@tomaz.me"},"repository":{"type":"git","url":"https://github.com/Kami/node-yubico.git"},"_id":"yubico","_rev":"1-0bd3a16b7d10d6b485437943e3cde495"}#ÿdocument-storeÿyaml-config-azure¤{"id":"yaml-config-azure","rev":"1-f80b43dc50fe00a12f3dd149b9fe966e","rev_tree":[{"pos":1,"ids":["f80b43dc50fe00a12f3dd149b9fe966e",{"status":"available"},[]]}],"rev_map":{"1-f80b43dc50fe00a12f3dd149b9fe966e":3796},"winningRev":"1-f80b43dc50fe00a12f3dd149b9fe966e","deleted":false,"seq":3796}ÿby-sequenceÿ0000000000003796õ{"name":"yaml-config-azure","description":"Manage your node.js app configuration based on NODE_ENV, all configuration defined in yaml and stored in Windows Azure blob storage","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"yaml-config-azure","version":"0.1.0","description":"Manage your node.js app configuration based on NODE_ENV, all configuration defined in yaml and stored in Windows Azure blob storage","keywords":["yaml","azure","configuration"],"author":{"name":"Matias Woloski","email":"matiasw@gmail.com"},"dependencies":{"azure":"","js-yaml":""},"main":"./lib/yaml-config-azure","engines":{"node":">= 0.6.15"},"_npmUser":{"name":"woloski","email":"matiasw@gmail.com"},"_id":"yaml-config-azure@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"094793398404abcd309bda68ead503a8c2f2d23f","tarball":"http://registry.npmjs.org/yaml-config-azure/-/yaml-config-azure-0.1.0.tgz"},"maintainers":[{"name":"woloski","email":"matiasw@gmail.com"}]}},"readme":"yaml-config-azure\n=================\n\n\n# yaml-config-azure\n\nManage your configuration based on NODE_ENV, all configuration defined with yaml and stored in Windows Azure storage. Shared configuration can be put under `default` key, different settings under each enviroment name.\n\nBased on \n\n## Installation\n\n $ npm install yaml-config-azure\n\n## Usage\n\nCreate a blob inside a container on azure blob storage\n\n```yaml\ndefault:\n redis:\n port: 6379 # redis server port\n host: '127.0.0.1' # redis host\n password: '' # to use with AUTH\n db: 1 # the test db\n options: {}\ntest:\n redis:\n db: 12\nproduction:\n redis:\n db: 0\n new_prop:\n hello: 'world'\n```\n\nIn your source code\n\n```javascript\nvar config = require('yaml-config-azure');\nvar settings;\nconfig.load('myappconfig.yml', 'mycontainer', null, function(error, result) {\n settings = result;\n});\n\nconsole.log(settings.redis.db); // if NODE_ENV is development, prints 1\n```\n\nThe `readConfig()` function takes a second parameter as enviroment name, for example\n\n```javascript\nconfig.load('myappconfig.yml', 'mycontainer', 'test', function(error, result) {\n settings = result;\n});\n\nconsole.log(settings.redis.db); // prints 12\n```\n\nSince the library uses Windows Azure blob storage through the 'azure' package, it will expect that process.env.AZURE_STORAGE_ACCOUNT and process.env.AZURE_STORAGE_ACCESS_KEY be set.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Matias Woloski <matiasw@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"woloski","email":"matiasw@gmail.com"}],"time":{"modified":"2012-06-13T13:08:11.169Z","created":"2012-06-13T13:08:08.657Z","0.1.0":"2012-06-13T13:08:11.169Z"},"author":{"name":"Matias Woloski","email":"matiasw@gmail.com"},"_id":"yaml-config-azure","_rev":"1-f80b43dc50fe00a12f3dd149b9fe966e"}ÿdocument-storeÿxmcd-readerž{"id":"xmcd-reader","rev":"1-02c91c3d4e22117172fcb58cbe94e316","rev_tree":[{"pos":1,"ids":["02c91c3d4e22117172fcb58cbe94e316",{"status":"available"},[]]}],"rev_map":{"1-02c91c3d4e22117172fcb58cbe94e316":3795},"winningRev":"1-02c91c3d4e22117172fcb58cbe94e316","deleted":false,"seq":3795}ÿby-sequenceÿ0000000000003795Î4{"name":"xmcd-reader","description":"node library for reading xmcd formatted file","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"xmcd-reader","version":"0.1.0","author":{"name":"Atsuya Takagi","email":"atsuya.takagi@gmail.com"},"description":"node library for reading xmcd formatted file","contributors":[],"scripts":{"test":"make"},"main":"","repository":{"type":"git","url":"https://github.com/atsuya/xmcd-reader"},"keywords":["xmcd"],"dependencies":{"wrench":"~1.3.9","underscore":"~1.3.3"},"devDependencies":{"mocha":"~1.3.2","should":"~1.1.0"},"license":"MIT","engine":{"node":">=0.8"},"readme":"xmcd-reader\n===========\n\n[![Build\nStatus](https://secure.travis-ci.org/atsuya/xmcd-reader.png)](http://travis-ci.org/atsuya/xmcd-reader)\n\nXMCD format file reader for node.\n\n\ninstall\n========\n```\n$ npm install xmcd-reader\n```\n\n\nexamples\n========\n```\nvar XmcdReader = require('../lib/xmcd-reader');\n\nvar xmcdReader = new XmcdReader();\nxmcdReader.parse('test/fixtures/example', function(error, xmcd) {\n console.log('Disc:');\n console.log('\\tArtist: %s', xmcd.artist());\n console.log('\\tTitle: %s', xmcd.discTitle());\n\n console.log('Tracks:');\n xmcd.tracks().forEach(function(track) {\n console.log('\\t%d: %s', track.number(), track.title());\n });\n});\n```\n\n\nMethods\n=======\n\nXmcdReader\n----------\n\n### Constructor\n\nCreates a new instance of XmcdReader.\n\n### #parse(pathToTheXmcdFile, callback)\n\nParses an xmcd file. ``callback`` takes ``error`` and ``xmcd`` parameters,\nwhich is an Error object and Xmcd object respectively.\n\nXmcd\n----\n\n### #artist()\n\nReturns a disc artist.\n\n### #discTitle()\n\nReturns a disc title.\n\n### #year()\n\nReturns a year.\n\n### #genre()\n\nReturns a genre.\n\n### #tracks()\n\nReturns a list of tracks. An element of the list is ``Track`` object.\n\n### #extendedData()\n\nReturns a disc extended data.\n\n### #playOrder()\n\nReturns a play order.\n\n### #revision()\n\nReturns a revision.\n\nTrack\n-----\n\n### #number()\n\nReturns a track number.\n\n### #title()\n\nReturns a track title.\n\n### #extendedData()\n\nReturns a track extended data.\n\n\nLicense\n========\n\nMIT\n","_id":"xmcd-reader@0.1.0","dist":{"shasum":"fff1a3d436321d830deecee7ced79783ddec344a","tarball":"http://registry.npmjs.org/xmcd-reader/-/xmcd-reader-0.1.0.tgz"},"maintainers":[{"name":"atsuya","email":"atsuya.takagi@gmail.com"}]},"0.1.1":{"name":"xmcd-reader","version":"0.1.1","author":{"name":"Atsuya Takagi","email":"atsuya.takagi@gmail.com"},"description":"node library for reading xmcd formatted file","contributors":[],"scripts":{"test":"make"},"main":"","repository":{"type":"git","url":"https://github.com/atsuya/xmcd-reader"},"keywords":["xmcd"],"dependencies":{"wrench":"~1.3.9","underscore":"~1.3.3"},"devDependencies":{"mocha":"~1.3.2","should":"~1.1.0"},"license":"MIT","engine":{"node":">=0.8"},"readme":"xmcd-reader\n===========\n\n[![Build\nStatus](https://secure.travis-ci.org/atsuya/xmcd-reader.png)](http://travis-ci.org/atsuya/xmcd-reader)\n\nXMCD format file reader for node.\n\n\ninstall\n========\n```\n$ npm install xmcd-reader\n```\n\n\nexamples\n========\n```\nvar XmcdReader = require('../lib/xmcd-reader');\n\nvar xmcdReader = new XmcdReader();\nxmcdReader.parse('test/fixtures/example', function(error, xmcd) {\n console.log('Disc:');\n console.log('\\tArtist: %s', xmcd.artist());\n console.log('\\tTitle: %s', xmcd.discTitle());\n\n console.log('Tracks:');\n xmcd.tracks().forEach(function(track) {\n console.log('\\t%d: %s', track.number(), track.title());\n });\n});\n```\n\n\nMethods\n=======\n\nXmcdReader\n----------\n\n### Constructor\n\nCreates a new instance of XmcdReader.\n\n### #parse(pathToTheXmcdFile, callback)\n\nParses an xmcd file. ``callback`` takes ``error`` and ``xmcd`` parameters,\nwhich is an Error object and Xmcd object respectively.\n\nXmcd\n----\n\n### #artist()\n\nReturns a disc artist.\n\n### #discTitle()\n\nReturns a disc title.\n\n### #year()\n\nReturns a year.\n\n### #genre()\n\nReturns a genre.\n\n### #tracks()\n\nReturns a list of tracks. An element of the list is ``Track`` object.\n\n### #extendedData()\n\nReturns a disc extended data.\n\n### #playOrder()\n\nReturns a play order.\n\n### #revision()\n\nReturns a revision.\n\nTrack\n-----\n\n### #number()\n\nReturns a track number.\n\n### #title()\n\nReturns a track title.\n\n### #extendedData()\n\nReturns a track extended data.\n\n\nLicense\n========\n\nMIT\n","_id":"xmcd-reader@0.1.1","dist":{"shasum":"93da746b3e5092fbf44c3734b9d9d5f0a52dab8d","tarball":"http://registry.npmjs.org/xmcd-reader/-/xmcd-reader-0.1.1.tgz"},"maintainers":[{"name":"atsuya","email":"atsuya.takagi@gmail.com"}]}},"readme":"xmcd-reader\n===========\n\n[![Build\nStatus](https://secure.travis-ci.org/atsuya/xmcd-reader.png)](http://travis-ci.org/atsuya/xmcd-reader)\n\nXMCD format file reader for node.\n\n\ninstall\n========\n```\n$ npm install xmcd-reader\n```\n\n\nexamples\n========\n```\nvar XmcdReader = require('../lib/xmcd-reader');\n\nvar xmcdReader = new XmcdReader();\nxmcdReader.parse('test/fixtures/example', function(error, xmcd) {\n console.log('Disc:');\n console.log('\\tArtist: %s', xmcd.artist());\n console.log('\\tTitle: %s', xmcd.discTitle());\n\n console.log('Tracks:');\n xmcd.tracks().forEach(function(track) {\n console.log('\\t%d: %s', track.number(), track.title());\n });\n});\n```\n\n\nMethods\n=======\n\nXmcdReader\n----------\n\n### Constructor\n\nCreates a new instance of XmcdReader.\n\n### #parse(pathToTheXmcdFile, callback)\n\nParses an xmcd file. ``callback`` takes ``error`` and ``xmcd`` parameters,\nwhich is an Error object and Xmcd object respectively.\n\nXmcd\n----\n\n### #artist()\n\nReturns a disc artist.\n\n### #discTitle()\n\nReturns a disc title.\n\n### #year()\n\nReturns a year.\n\n### #genre()\n\nReturns a genre.\n\n### #tracks()\n\nReturns a list of tracks. An element of the list is ``Track`` object.\n\n### #extendedData()\n\nReturns a disc extended data.\n\n### #playOrder()\n\nReturns a play order.\n\n### #revision()\n\nReturns a revision.\n\nTrack\n-----\n\n### #number()\n\nReturns a track number.\n\n### #title()\n\nReturns a track title.\n\n### #extendedData()\n\nReturns a track extended data.\n\n\nLicense\n========\n\nMIT\n","maintainers":[{"name":"atsuya","email":"atsuya.takagi@gmail.com"}],"time":{"modified":"2012-08-19T06:40:08.810Z","created":"2012-08-19T06:37:32.870Z","0.1.0":"2012-08-19T06:37:34.119Z","0.1.1":"2012-08-19T06:40:08.810Z"},"author":{"name":"Atsuya Takagi","email":"atsuya.takagi@gmail.com"},"repository":{"type":"git","url":"https://github.com/atsuya/xmcd-reader"},"_id":"xmcd-reader","_rev":"1-02c91c3d4e22117172fcb58cbe94e316"} ÿdocument-storeÿwstrust-client¡{"id":"wstrust-client","rev":"1-bb67c3964ac0382e8e55d3158f198708","rev_tree":[{"pos":1,"ids":["bb67c3964ac0382e8e55d3158f198708",{"status":"available"},[]]}],"rev_map":{"1-bb67c3964ac0382e8e55d3158f198708":3794},"winningRev":"1-bb67c3964ac0382e8e55d3158f198708","deleted":false,"seq":3794}ÿby-sequenceÿ0000000000003794¿{"name":"wstrust-client","description":"Simple WS-Trust Client for Node.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"wstrust-client","author":{"name":"Leandro Boffi","email":"lboffi@gmail.com"},"description":"Simple WS-Trust Client for Node.js","version":"0.0.1","repository":{"type":"git","url":"git://github.com/leandrob/wstrust-client.git"},"keywords":["node.js","ws-trust","wstrust","adfs","identity","federation"],"main":"./lib/wsTrustClient.js","_npmUser":{"name":"leandrob","email":"lboffi@gmail.com"},"_id":"wstrust-client@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ed6b657aac0feacf01fc42d85cd8853b78ecd1ec","tarball":"http://registry.npmjs.org/wstrust-client/-/wstrust-client-0.0.1.tgz"},"maintainers":[{"name":"leandrob","email":"lboffi@gmail.com"}]}},"readme":"\n# WS-Trust Client 0.1\n\n> Simple WS-Trust Client for Node.js\n\n### Installation\n\n```bash\n$ npm install wstrust-client\n```\n\n### Example Code\n\n```javascript\n\nvar trustClient = require('wstrust-client');\n\ntrustClient.requestSecurityToken({\n scope: 'https://yourapp.com',\n username: 'Your Username Here',\n password: 'Your Password Here',\n endpoint: 'https://your-ws-trust-endpoint-address-here'\n}, function (rstr) {\n\n\t// Access the token and enjoy it!\n\tvar rawToken = rstr.token;\n\n\tconsole.log(rawToken);\n\n}, function (error) {\n\t\n\t// Error Callback\n\tconsole.log(error)\n\n}\n\n```\n\n### License (MIT)\n\nCopyright (c) 2012, Leandro Boffi.\n\n**\n\n### Author: [Leandro Boffi][0]\n\n[0]: http://github.com/leandrob/\n","maintainers":[{"name":"leandrob","email":"lboffi@gmail.com"}],"time":{"modified":"2012-06-25T21:42:42.654Z","created":"2012-06-25T21:41:38.308Z","0.0.1":"2012-06-25T21:42:42.654Z"},"author":{"name":"Leandro Boffi","email":"lboffi@gmail.com"},"repository":{"type":"git","url":"git://github.com/leandrob/wstrust-client.git"},"_id":"wstrust-client","_rev":"1-bb67c3964ac0382e8e55d3158f198708"}ÿdocument-storeÿwordgenerator {"id":"wordgenerator","rev":"1-71da32fea0ce62b6c281986df010aec2","rev_tree":[{"pos":1,"ids":["71da32fea0ce62b6c281986df010aec2",{"status":"available"},[]]}],"rev_map":{"1-71da32fea0ce62b6c281986df010aec2":3793},"winningRev":"1-71da32fea0ce62b6c281986df010aec2","deleted":false,"seq":3793}ÿby-sequenceÿ0000000000003793Ú{"name":"wordgenerator","description":"Quick and dirty wordlist based word generator for inspiration when naming shit","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Jesse Ditson","email":"jesse.ditson@gmail.com","url":"http://jesseditson.com"},"name":"wordgenerator","description":"Quick and dirty wordlist based word generator for inspiration when naming shit","version":"0.0.1","homepage":"http://jesseditson.com","repository":{"type":"git","url":"git://github.com/jesseditson/node-wordgenerator.git"},"main":"wordgenerator.js","engines":{"node":"0.6.x"},"dependencies":{"fibers":"~0.6.8"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"jesseditson","email":"jesse.ditson@gmail.com"},"_id":"wordgenerator@0.0.1","_engineSupported":true,"_npmVersion":"1.1.2","_nodeVersion":"v0.6.12-pre","_defaultsLoaded":true,"dist":{"shasum":"40c810731a081ec0fe6e6e4f59153dd5cf2ed8ff","tarball":"http://registry.npmjs.org/wordgenerator/-/wordgenerator-0.0.1.tgz"},"maintainers":[{"name":"jesseditson","email":"jesse.ditson@gmail.com"}]}},"readme":"node-wordgenerator\n==================\n\nQuick and dirty wordlist based word generator for inspiration when naming shit\n\nWorks like the github repo name generator, making things like:\n\nbaroque-macrology-gophers\nnaivest-jello-nastygram\ngunning-studly-quarters\n\nUsage:\n---\n\ninstall it\n\n npm install wordgenerator\n\nin your codes:\n\n var WordGenerator = require('wordgenerator')\n\nNow you can\n\n new WordGenerator({num : 3, separator : '-'},function(err,words){\n var randomWords = words\n })\n\nIf you want to use it more than once, it's smarter to:\n\n var generator = new WordGenerator()\n\nThat way the lists will be cached and all that goodness. Now you can\n\n generator.generate({num : 3, separator : '-'},function(err,words){\n var randomWords = words\n })\n\nThe options can just be a boolean to take defaults, which are `{num : 3, separator : '-'}`:\n\n generator.generate(true,function(err,words){\n var randomWords = words\n })\n\n\nBonus:\n---\n\nAdd your own words from a file:\n\n var wg = new WordGenerator()\n wg.addFile(__dirname + '/relative/path/to/file.lst')\n\nWords are stored on the generator, so go nuts:\n\n wg.words.push('someword')\n\nHowever, the length is cached, so you must update it too.\n\n wg.numWords ++\n\nHate my words? Well whatever, just clear them out and replace them\n\n wg.words = ['coffin']\n wg.numWords = 1\n\nNow the only word it generates is \"coffin\", and calling it is a waste of cpu.","maintainers":[{"name":"jesseditson","email":"jesse.ditson@gmail.com"}],"time":{"modified":"2012-06-26T03:36:14.012Z","created":"2012-06-26T03:36:12.649Z","0.0.1":"2012-06-26T03:36:14.012Z"},"author":{"name":"Jesse Ditson","email":"jesse.ditson@gmail.com","url":"http://jesseditson.com"},"repository":{"type":"git","url":"git://github.com/jesseditson/node-wordgenerator.git"},"_id":"wordgenerator","_rev":"1-71da32fea0ce62b6c281986df010aec2"}ÿdocument-storeÿwinstond›{"id":"winstond","rev":"1-6d9d5c48a022a5428d321fa1b14c9765","rev_tree":[{"pos":1,"ids":["6d9d5c48a022a5428d321fa1b14c9765",{"status":"available"},[]]}],"rev_map":{"1-6d9d5c48a022a5428d321fa1b14c9765":3792},"winningRev":"1-6d9d5c48a022a5428d321fa1b14c9765","deleted":false,"seq":3792}ÿby-sequenceÿ0000000000003792ë{"name":"winstond","description":"A winston-powered logging daemon","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"name":"winstond","description":"A winston-powered logging daemon","version":"0.0.2","author":{"name":"Nodejitsuév×[ù Inc.","email":"info@nodejitsu.com"},"contributors":[{"name":"Christopher Jeffrey","email":"chjj@nodejitsu.com"},{"name":"Charlie Robbins","email":"charlie@nodejitsu.com"}],"repository":{"type":"git","url":"git://github.com/flatiron/winstond.git"},"keywords":["logging","sysadmin","tools"],"dependencies":{"flatiron":"0.2.0","union":"0.3.2","nssocket":"0.3.8","winston":">= 0.6.1","optimist":">= 0.3.4"},"devDependencies":{"vows":"0.5.x >=0.5.11"},"main":"./lib/winstond","scripts":{"test":"vows --spec --isolate"},"engines":{"node":">= 0.6.12"},"_npmUser":{"name":"chjj","email":"chjjeffrey@gmail.com"},"_id":"winstond@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"03f64b9c533213f5494bda2c8159f05203079963","tarball":"http://registry.npmjs.org/winstond/-/winstond-0.0.2.tgz"},"maintainers":[{"name":"chjj","email":"chjjeffrey@gmail.com"}]}},"readme":"# winstond\n\nA logging server built on top of winston, capable of receiving, querying,\nand streaming logs.\n\n## Services\n\nEach winstond server can utilize up to 3 different services, which leverage\nthe main capabilities of a winston transport.\n\n- `collect` - log collection\n- `query` - querying logs\n- `stream` - streaming logs\n\n## Usage\n\n### Creating a winstond server\n\n``` js\nvar winstond = require('winstond');\n\nvar server = winstond.nssocket.createServer({\n services: ['collect', 'query', 'stream'],\n port: 9003\n});\n\nserver.add(winstond.transports.File, {\n filename: __dirname + '/foo.log'\n});\n\nserver.listen();\n```\n\n### Communicating with a winstond server\n\n``` js\nvar winston = require('winston');\n\nwinston.add(require('winston-nssocket').Nssocket, {\n host: 'localhost',\n port: 9003\n});\n\nwinston.log('info', 'Hello world!', {\n foo: 'bar'\n});\n\nwinston.stream().on('log', function(log) {\n console.log(log);\n});\n\nwinston.query({ start: 10 }, function(err, results) {\n if (err) throw err;\n console.log(results);\n});\n```\n\n## Backends\n\nwinstond supports http and [nssocket][1] backends.\n\n## Installation\n\n``` bash\n$ npm install winstond -g\n```\n\n#### Author: [Nodejitsu Inc.](http://nodejitsu.com)\n#### Contributors: [Christopher Jeffrey](http://github.com/chjj), [Charlie Robbins](http://github.com/indexzero)\n#### License: **MIT**\n\n[1]: https://github.com/nodejitsu/nssocket\n","maintainers":[{"name":"chjj","email":"chjjeffrey@gmail.com"}],"time":{"modified":"2012-07-31T22:46:01.220Z","created":"2012-06-07T06:31:49.913Z","0.0.2":"2012-06-07T06:31:50.763Z"},"author":{"name":"Nodejitsu Inc.","email":"info@nodejitsu.com"},"repository":{"type":"git","url":"git://github.com/flatiron/winstond.git"},"users":{"blakmatrix":true},"_id":"winstond","_rev":"1-6d9d5c48a022a5428d321fa1b14c9765"}ÿdocument-storeÿwiki-check{"id":"wiki-check","rev":"1-d74ea457381d93e8b3b467c3180ab8bd","rev_tree":[{"pos":1,"ids":["d74ea457381d93e8b3b467c3180ab8bd",{"status":"available"},[]]}],"rev_map":{"1-d74ea457381d93e8b3b467c3180ab8bd":3791},"winningRev":"1-d74ea457381d93e8b3b467c3180ab8bd","deleted":false,"seq":3791}ÿby-sequenceÿ0000000000003791ã{"name":"wiki-check","description":"Checks if a wiki has an entry.","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"wiki-check","version":"1.0.0","main":"index.js","directories":{"test":"test"},"scripts":{"test":"tap test/*.js"},"author":{"name":"Michael Nowack","email":"syranez@minaga-church.de","url":"https://github.com/syranez"},"license":"MIT","description":"Checks if a wiki has an entry.","repository":{"type":"git","url":"git@github.com:syranez/wiki-checks.git"},"keywords":["wiki","check"],"dependencies":{"request":"~2.10.0"},"devDependencies":{"tap":"~0.3.0"},"readme":"","_id":"wiki-check@1.0.0","dist":{"shasum":"abac2dbfb6c54365c15787d649a8cf0535a9a9cc","tarball":"http://registry.npmjs.org/wiki-check/-/wiki-check-1.0.0.tgz"},"maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}]},"2.0.0":{"name":"wiki-check","version":"2.0.0","main":"index.js","directories":{"test":"test"},"scripts":{"test":"tap test/*.js"},"author":{"name":"Michael Nowack","email":"syranez@minaga-church.de","url":"https://github.com/syranez"},"license":"MIT","description":"Checks if a wiki has an entry.","repository":{"type":"git","url":"git@github.com:syranez/wiki-checks.git"},"keywords":["wiki","check"],"dependencies":{"request":"~2.10.0"},"devDependencies":{"tap":"~0.3.0"},"readme":"","_id":"wiki-check@2.0.0","dist":{"shasum":"894393dc694a57698c9f5a4df9b233bd5d7576a4","tarball":"http://registry.npmjs.org/wiki-check/-/wiki-check-2.0.0.tgz"},"maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}]}},"readme":"","maintainers":[{"name":"syranez","email":"syranez@minaga-church.de"}],"time":{"modified":"2012-08-19T13:40:05.982Z","created":"2012-08-16T20:20:23.158Z","1.0.0":"2012-08-16T20:20:25.216Z","2.0.0":"2012-08-19T13:40:05.982Z"},"author":{"name":"Michael Nowack","email":"syranez@minaga-church.de","url":"https://github.com/syranez"},"repository":{"type":"git","url":"git@github.com:syranez/wiki-checks.git"},"_id":"wiki-check","_rev":"1-d74ea457381d93e8b3b467c3180ab8bd"}ÿdocument-storeÿweakcacheœ{"id":"weakcache","rev":"1-bfdb86ebb661e8b9c520d8de8f390aed","rev_tree":[{"pos":1,"ids":["bfdb86ebb661e8b9c520d8de8f390aed",{"status":"available"},[]]}],"rev_map":{"1-bfdb86ebb661e8b9c520d8de8f390aed":3790},"winningRev":"1-bfdb86ebb661e8b9c520d8de8f390aed","deleted":false,"seq":3790}ÿby-sequenceÿ0000000000003790ß{"name":"weakcache","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"name":"weakcache","version":"0.0.0","main":"index.js","dependencies":{"weak":"~0.2.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tellnes","email":"christian@tellnes.no"},"_id":"weakcache@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0761e70d260b30ad3e0d0eeb93f2ada94161ba0e","tarball":"http://registry.npmjs.org/weakcache/-/weakcache-0.0.0.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]}},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}],"time":{"modified":"2012-08-01T13:46:50.084Z","created":"2012-05-28T03:32:43.644Z","0.0.0":"2012-05-28T03:32:45.220Z"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"users":{"tellnes":true},"_id":"weakcache","_rev":"1-bfdb86ebb661e8b9c520d8de8f390aed"}ÿdocument-storeÿwalkbufš{"id":"walkbuf","rev":"1-82b1c5a31a381b8cef4a715c2cf3e5ee","rev_tree":[{"pos":1,"ids":["82b1c5a31a381b8cef4a715c2cf3e5ee",{"status":"available"},[]]}],"rev_map":{"1-82b1c5a31a381b8cef4a715c2cf3e5ee":3789},"winningRev":"1-82b1c5a31a381b8cef4a715c2cf3e5ee","deleted":false,"seq":3789}ÿby-sequenceÿ0000000000003789ë{"name":"walkbuf","description":"Walk a buffer, much like traditional C file I/O.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"walkbuf","version":"0.0.1","keywords":["walk","iterate","buffer"],"description":"Walk a buffer, much like traditional C file I/O.","repository":{"type":"git","url":"https://github.com/stephank/walkbuf.git"},"main":"index.js","author":{"name":"Stéphan Kochen","email":"stephan@kochen.nl"},"license":"MIT","readme":"## WalkBuf\n\nWalk a buffer, as you read or write to it. Much like traditional file I/O in\nC, where a handle keeps track of the current position.\n\n var WalkBuf = require('walkbuf');\n\n var buf = new Buffer(16);\n var walker = new WalkBuf(buf);\n\n walker.writeUInt32BE(0xcafebabe);\n walker.write('Hello!');\n walker.skip(4);\n walker.writeUInt16BE(9000);\n\n walker.rewind();\n\n walker.readUInt32BE(); // => 3405691582\n walker.toString('utf-8', 6); // => 'Hello!'\n walker.skip(4);\n walker.readUInt16BE(); // => 9000\n\nMIT licensed.\n","_id":"walkbuf@0.0.1","dist":{"shasum":"160861bae604dbd7704db6cd47d8ea358acf6b9c","tarball":"http://registry.npmjs.org/walkbuf/-/walkbuf-0.0.1.tgz"},"maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}]},"0.0.2":{"name":"walkbuf","version":"0.0.2","keywords":["walk","iterate","buffer"],"description":"Walk a buffer, much like traditional C file I/O.","repository":{"type":"git","url":"https://github.com/stephank/walkbuf.git"},"main":"index.js","author":{"name":"Stéphan Kochen","email":"stephan@kochen.nl"},"license":"MIT","readme":"## WalkBuf\n\nWalk a buffer, as you read or write to it. Much like traditional file I/O in\nC, where a handle keeps track of the current position.\n\n var WalkBuf = require('walkbuf');\n\n var buf = new Buffer(16);\n var walker = new WalkBuf(buf);\n\n walker.writeUInt32BE(0xcafebabe);\n walker.write('Hello!');\n walker.skip(4);\n walker.writeUInt16BE(9000);\n\n walker.rewind();\n\n walker.readUInt32BE(); // => 3405691582\n walker.toString('utf-8', 6); // => 'Hello!'\n walker.skip(4);\n walker.readUInt16BE(); // => 9000\n\nMIT licensed.\n","_id":"walkbuf@0.0.2","dist":{"shasum":"7f0b8220eb313e2497dfa3e80724d39f73f4e373","tarball":"http://registry.npmjs.org/walkbuf/-/walkbuf-0.0.2.tgz"},"maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}]}},"readme":"## WalkBuf\n\nWalk a buffer, as you read or write to it. Much like traditional file I/O in\nC, where a handle keeps track of the current position.\n\n var WalkBuf = require('walkbuf');\n\n var buf = new Buffer(16);\n var walker = new WalkBuf(buf);\n\n walker.writeUInt32BE(0xcafebabe);\n walker.write('Hello!');\n walker.skip(4);\n walker.writeUInt16BE(9000);\n\n walker.rewind();\n\n walker.readUInt32BE(); // => 3405691582\n walker.toString('utf-8', 6); // => 'Hello!'\n walker.skip(4);\n walker.readUInt16BE(); // => 9000\n\nMIT licensed.\n","maintainers":[{"name":"stephank","email":"stephan@kochen.nl"}],"time":{"modified":"2012-08-02T22:16:05.284Z","created":"2012-08-02T17:38:19.819Z","0.0.1":"2012-08-02T17:38:21.224Z","0.0.2":"2012-08-02T22:16:05.284Z"},"author":{"name":"Stéphan Kochen","email":"stephan@kochen.nl"},"repository":{"type":"git","url":"https://github.com/stephank/walkbuf.git"},"_id":"walkbuf","_rev":"1-82b1c5a31a381b8cef4a715c2cf3e5ee"}ÿdocument-storeÿvitruvia›{"id":"vitruvia","rev":"1-e6af5beb56ddca25f1dc0c7ed8b92844","rev_tree":[{"pos":1,"ids":["e6af5beb56ddca25f1dc0c7ed8b92844",{"status":"available"},[]]}],"rev_map":{"1-e6af5beb56ddca25f1dc0c7ed8b92844":3788},"winningRev":"1-e6af5beb56ddca25f1dc0c7ed8b92844","deleted":false,"seq":3788}ÿby-sequenceÿ0000000000003788Ò{"name":"vitruvia","description":"Collection of physiological, medical, bio- and neuromechanical calculations, regressions and functions","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Martijn Swaagman","email":"martijn@prestar.nl"},"name":"vitruvia","description":"Collection of physiological, medical, bio- and neuromechanical calculations, regressions and functions","version":"0.0.1","repository":{"type":"git","url":"git://github.com/Swaagie/vitruvia.git"},"keywords":["medical","human","mechanical","neurological","biomechanical","research","health","nutrition","movement","behavior","behaviour"],"engines":{"node":"~0.6.12"},"dependencies":{"underscore":"1.3.3","sylvester":"git://github.com/jcoglan/sylvester.git","devnull":"0.0.9"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"Swaagie","email":"martijn@prestar.nl"},"_id":"vitruvia@0.0.1","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.12-pre","_defaultsLoaded":true,"dist":{"shasum":"6637690bd29a05b1bdde3170a5f5dd95a493d6db","tarball":"http://registry.npmjs.org/vitruvia/-/vitruvia-0.0.1.tgz"},"maintainers":[{"name":"Swaagie","email":"martijn@prestar.nl"}]}},"readme":"vitruvia.js\n========\n\n_Human architecture and geometry_\n\nVitruvia is a collection of bio- and neuromechanical calculations, functions and methods\nrelated to human movement, health, nutrition and behavior.\n\nThe javascript library was written to support development of (para)medical applications in the \ngrowing share of web technologies.\n\n## Modules\n\nThe following modules are currently available, using a particular module and it's widgets\ncan be done as follows:\n\n```\nvar nutrition = require('vitruvia').provide('nutrition')\n , joule = nutrition.energy.calToJoule(1000);\n```\n\n### Nutrition\n\n* Energy - methods related to energy expenditure and intake.","maintainers":[{"name":"Swaagie","email":"martijn@prestar.nl"}],"time":{"modified":"2012-06-25T21:10:15.330Z","created":"2012-06-25T21:10:13.377Z","0.0.1":"2012-06-25T21:10:15.330Z"},"author":{"name":"Martijn Swaagman","email":"martijn@prestar.nl"},"repository":{"type":"git","url":"git://github.com/Swaagie/vitruvia.git"},"_id":"vitruvia","_rev":"1-e6af5beb56ddca25f1dc0c7ed8b92844"}ÿdocument-storeÿvimeo-clientŸ{"id":"vimeo-client","rev":"1-209409f27e4c77d9a2dd236ad88719e3","rev_tree":[{"pos":1,"ids":["209409f27e4c77d9a2dd236ad88719e3",{"status":"available"},[]]}],"rev_map":{"1-209409f27e4c77d9a2dd236ad88719e3":3787},"winningRev":"1-209409f27e4c77d9a2dd236ad88719e3","deleted":false,"seq":3787}ÿby-sequenceÿ0000000000003787óD{"name":"vimeo-client","description":"Client for vimeo api","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.5":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.1.5","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":"~0.4.11"},"dependencies":{"oauth":"","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.1.5","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"fe9405c016594972bcd71684fec88993b4ef7a08","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.1.5.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]},"0.1.6":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.1.6","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":"~0.4.11"},"dependencies":{"oauth":"~0.9.5","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.1.6","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"19fc71330aaf68816ac56a57fbfe831e31d1865d","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.1.6.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]},"0.1.7":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.1.7","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":">= 0.4.1 < 0.7.0"},"dependencies":{"oauth":"~0.9.5","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.1.7","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"865ed1a6c17bf24dd329913b0e3641549a79cc85","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.1.7.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]},"0.1.8":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.1.8","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":">= 0.4.1 < 0.7.0"},"dependencies":{"oauth":"~0.9.5","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.1.8","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"69eb544dd239765c64e83ed61d4e0678402425b0","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.1.8.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]},"0.1.9":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.1.9","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":">= 0.4.1 < 0.8.5"},"dependencies":{"oauth":"~0.9.5","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.1.9","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"a64c04a48d6b6a79f79546abfbff900f79a351b2","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.1.9.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]},"0.2.0":{"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"name":"vimeo-client","description":"Client for vimeo api","version":"0.2.0","keywords":["api","vimeo","oauth"],"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"main":"video-client","engines":{"node":">= 0.4.1 <= 0.8.6"},"dependencies":{"oauth":"~0.9.5","colorlog":""},"devDependencies":{},"_npmUser":{"name":"andriy","email":"andriy.bazyuta@gmail.com"},"_id":"vimeo-client@0.2.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"0ddc81fee0e4dd2b5b947c0c987a7d0d849426d3","tarball":"http://registry.npmjs.org/vimeo-client/-/vimeo-client-0.2.0.tgz"},"maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}]}},"readme":"vimeo-client\n=============\n\nVimeo Advanced API Client library for Node.js\nThe library works with all methods provided by Vimeo API and allows you to authenticate via Vimeo.\nYou will first need to sign up for a [developer application](http://vimeo.com/api/applications) to get the consumer key and secret.\n\n## Installation\n $ npm install vimeo-client\n\n## Quick Start\nYou can use Express or Connect with vimeo-client\n\n1. **Add the vimeo-client middleware to Express**\n\n ```javascript\n var vimeo = require('vimeo-client');\n \n var app = module.exports = express.createServer();\n \n app.configure(function(){\n\t \n\t // Some your code\n app.use(express.bodyParser());\n app.use(express.cookieParser());\n app.use(express.session({ secret: 'secret'}));\n app.use(vimeo.middleware({\n consumerKey: 'YOUR CONSUMER KEY',\n consumerSecret: \"YOUR CONSUMER SECRET\",\n baseURL: 'http://localhost:3000',\n logging: 'debug', //Set logging: false to disable console logs\n afterLogin: '/helloVimeo',\n afterLogout: '/goodbyeVimeo',\n permission: 'write' // Vimeo API provide 3 level of permissions 'read, write, delete'\n }));\n });\n\t\n2. **Use vimeo API**\n\n ```javascript\n app.get('/hello', function(req, res){\n\t\n vimeo.post({ \n\t method: \"vimeo.albums.create\", \n description: \"My Music Videos\", \n title: \"My Music Videos\", \n video_id: \"29020150\", \n videos: \"15877632, 29020150, 16097839\"\n\n }, req, function(err, data, response) {\n\t\t res.send(data);\n\t\t });\n\t\t \n });\n\n**About options**\n - `method:` - Some Vimeo API method, a description of all methods can be found on [Vimeo API Method list](http://vimeo.com/api/docs/methods)\nThe `method:` must be the first since you can specify other options, like `video_id:.....etc`.\n\n### License\n(The MIT License)\n\nCopyright (c) 2011 Andriy Bazyuta <andriy.bazyuta@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n---\n### Author\nAndriy Bazyuta","maintainers":[{"name":"andriy","email":"andriy.bazyuta@gmail.com"}],"time":{"modified":"2012-08-07T22:42:39.254Z","created":"2011-11-19T00:52:16.010Z","0.1.5":"2011-11-19T00:52:17.878Z","0.1.6":"2011-12-19T22:28:08.129Z","0.1.7":"2011-12-31T13:35:56.869Z","0.1.8":"2012-02-06T18:21:27.826Z","0.1.9":"2012-08-06T22:44:17.002Z","0.2.0":"2012-08-07T22:42:39.254Z"},"author":{"name":"Andriy Bazyuta","email":"andriy.bazyuta@gmail.com","url":"https://github.com/tih-ra/"},"repository":{"type":"git","url":"git://github.com/tih-ra/vimeo-client.git"},"_id":"vimeo-client","_rev":"1-209409f27e4c77d9a2dd236ad88719e3"}ÿdocument-storeÿupy–{"id":"upy","rev":"1-66da22e13b99614b0e906ad6a8759bfe","rev_tree":[{"pos":1,"ids":["66da22e13b99614b0e906ad6a8759bfe",{"status":"available"},[]]}],"rev_map":{"1-66da22e13b99614b0e906ad6a8759bfe":3786},"winningRev":"1-66da22e13b99614b0e906ad6a8759bfe","deleted":false,"seq":3786}ÿby-sequenceÿ0000000000003786Õ5{"name":"upy","description":"Upy is a easy to use machine uptime module for node.js build C++","dist-tags":{"latest":"2.0.3"},"versions":{"2.0.1":{"name":"upy","description":"Upy is a easy to use machine uptime module for node.js build C++","tags":["uptime","system","util","utility"],"version":"2.0.1","author":{"name":"Fredrik Forsmo","email":"fredrik.forsmo@gmail.com"},"repository":{"type":"git","url":"git://github.com/frozzare/upy.git"},"devDependencies":{"should":"0.6.x","mocha":"1.0.x"},"bugs":{"url":"http://github.com/frozzare/upy/issues"},"scripts":{"test":"mocha test/values.js","preinstall":"node-waf clean || (exit 0); node-waf configure build"},"main":"./index","_npmUser":{"name":"frozzare","email":"fredrik.forsmo@gmail.com"},"_id":"upy@2.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"5eb7c65d45eeee9f36c300208c44c38d7a34b485","tarball":"http://registry.npmjs.org/upy/-/upy-2.0.1.tgz"},"readme":"# Upy\n\n`upy` is a easy to use machine uptime module for node.js build C++.\nHave been tested under Mac and Linux system. Don't have any Windows support.\n\n# installation\n1. install npm `curl http://npmjs.org/install.sh | sh`\n2. `npm install upy`\n\n# build\n\tnode-waf configure build\n\n# test the installation\n1. `npm install -g mocha`\n2. `mocha test/values.js`\n\n# usage\nQuick example using `upy`,\n\n\tvar upy = require('./upy');\n\t\n\tconsole.log( upy.uptime() ); // Uptime x day(s), x hour(s), x minute(s), x second(s)\n\n# functions\n\tupy.uptime()\t\t\t// returns a string telling you the uptime\n\tupy.days()\t\t\t\t// returns uptime in days\n\tupy.hours()\t\t\t\t// returns uptime in hours\n\tupy.minutes()\t\t\t// returns uptime in minute\n\tupy.seconds()\t\t\t// returns uptime in seconds\n\tupy.timestamp()\t\t\t// returns uptime as a timestamp (seconds)\n\n\n# copyright and license \n`upy` is release under [MIT license](http://frozzare.mit-license.org/).\n\nCopyright 2011 [Fredrik Forsmo](http://forsmo.me)\n","maintainers":[{"name":"frozzare","email":"fredrik.forsmo@gmail.com"}],"directories":{}},"2.0.2":{"name":"upy","description":"Upy is a easy to use machine uptime module for node.js build C++","tags":["uptime","system","util","utility"],"version":"2.0.2","author":{"name":"Fredrik Forsmo","email":"fredrik.forsmo@gmail.com"},"repository":{"type":"git","url":"git://github.com/frozzare/upy.git"},"devDependencies":{"should":"0.6.x","mocha":"1.0.x"},"bugs":{"url":"http://github.com/frozzare/upy/issues"},"scripts":{"test":"make test","preinstall":"node-waf clean || (exit 0); node-waf configure build"},"main":"./index","_npmUser":{"name":"frozzare","email":"fredrik.forsmo@gmail.com"},"_id":"upy@2.0.2","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"374b9bcd1f626a194bdfcb0363d34f3b7f20e46e","tarball":"http://registry.npmjs.org/upy/-/upy-2.0.2.tgz"},"readme":"# Upy\n\n`upy` is a easy to use machine uptime module for node.js build C++.\nHave been tested under Mac and Linux system. Don't have any Windows support.\n\n# installation\n1. install npm `curl http://npmjs.org/install.sh | sh`\n2. `npm install upy`\n\n# build\n\tnode-waf configure build\n\n# test the installation\n1. `npm install -g mocha`\n2. `mocha test/values.js`\n\n# usage\nQuick example using `upy`,\n\n\tvar upy = require('./upy');\n\t\n\tconsole.log( upy.uptime() ); // Uptime x day(s), x hour(s), x minute(s), x second(s)\n\n# functions\n\tupy.uptime()\t\t\t// returns a string telling you the uptime\n\tupy.days()\t\t\t\t// returns uptime in days\n\tupy.hours()\t\t\t\t// returns uptime in hours\n\tupy.minutes()\t\t\t// returns uptime in minute\n\tupy.seconds()\t\t\t// returns uptime in seconds\n\tupy.timestamp()\t\t\t// returns uptime as a timestamp (seconds)\n\n\n# copyright and license \n`upy` is release under [MIT license](http://frozzare.mit-license.org/).\n\nCopyright 2011 [Fredrik Forsmo](http://forsmo.me)\n","maintainers":[{"name":"frozzare","email":"fredrik.forsmo@gmail.com"}],"directories":{}},"2.0.3":{"name":"upy","description":"Upy is a easy to use machine uptime module for node.js build C++","tags":["uptime","system","util","utility"],"version":"2.0.3","author":{"name":"Fredrik Forsmo","email":"fredrik.forsmo@gmail.com"},"repository":{"type":"git","url":"git://github.com/frozzare/upy.git"},"devDependencies":{"should":"0.6.x","mocha":"1.0.x"},"bugs":{"url":"http://github.com/frozzare/upy/issues"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"main":"./index","_npmUser":{"name":"frozzare","email":"fredrik.forsmo@gmail.com"},"_id":"upy@2.0.3","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8c976b3a51e1d0639932cf482bce7916aba29359","tarball":"http://registry.npmjs.org/upy/-/upy-2.0.3.tgz"},"readme":"# Upy\n\n`upy` is a easy to use machine uptime module for node.js build C++.\nHave been tested under Mac and Linux system. Don't have any Windows support.\n\n# installation\n1. install npm `curl http://npmjs.org/install.sh | sh`\n2. `npm install upy`\n\n# build\n\tnpm install node-gyp -g\n\tnode-gyp configure build\n\nor on older node.js versions\n\n\tnode-waf configure build\n\n# test the installation\n1. `npm install -g mocha`\n2. `mocha test/values.js`\n\n# usage\nQuick example using `upy`,\n\n\tvar upy = require('./upy');\n\t\n\tconsole.log( upy.uptime() ); // Uptime x day(s), x hour(s), x minute(s), x second(s)\n\n# functions\n\tupy.uptime()\t\t\t// returns a string telling you the uptime\n\tupy.days()\t\t\t\t// returns uptime in days\n\tupy.hours()\t\t\t\t// returns uptime in hours\n\tupy.minutes()\t\t\t// returns uptime in minute\n\tupy.seconds()\t\t\t// returns uptime in seconds\n\tupy.timestamp()\t\t\t// returns uptime as a timestamp (seconds)\n\n\n# copyright and license \n`upy` is release under [MIT license](http://frozzare.mit-license.org/).\n\nCopyright 2011 [Fredrik Forsmo](http://forsmo.me)\n","maintainers":[{"name":"frozzare","email":"fredrik.forsmo@gmail.com"}]}},"maintainers":[{"name":"frozzare","email":"fredrik.forsmo@gmail.com"}],"time":{"modified":"2012-05-11T20:47:42.630Z","created":"2011-08-24T09:11:06.778Z","0.1.0":"2011-08-24T09:11:07.357Z","0.1.1":"2011-09-02T23:18:45.868Z","0.1.2":"2011-11-05T23:11:57.113Z","2.0.0":"2012-05-04T10:28:41.996Z","2.0.1":"2012-05-04T10:29:32.078Z","2.0.2":"2012-05-05T18:01:38.411Z","2.0.3":"2012-05-11T20:47:42.630Z"},"author":{"name":"Fredrik Forsmo","email":"fredrik.forsmo@gmail.com"},"repository":{"type":"git","url":"git://github.com/frozzare/upy.git"},"_id":"upy","_rev":"1-66da22e13b99614b0e906ad6a8759bfe"}ÿdocument-storeÿttpapi™{"id":"ttpapi","rev":"1-07e67fdbe454f833680334f3a8e44637","rev_tree":[{"pos":1,"ids":["07e67fdbe454f833680334f3a8e44637",{"status":"available"},[]]}],"rev_map":{"1-07e67fdbe454f833680334f3a8e44637":3785},"winningRev":"1-07e67fdbe454f833680334f3a8e44637","deleted":false,"seq":3785}ÿby-sequenceÿ0000000000003785Ä {"name":"ttpapi","description":"An API for communicating with Turntable Plus (TT+) clients.","dist-tags":{"latest":"0.9.0"},"versions":{"0.9.0":{"author":{"name":"Michael Frick","email":"frick@turntableplus.fm","url":"http://turntableplus.fm"},"name":"ttpapi","version":"0.9.0","description":"An API for communicating with Turntable Plus (TT+) clients.","keywords":["turntable.fm","turntable","turntable plus","tt+"],"homepage":"http://turntableplus.fm","repository":{"type":"git","url":"git://github.com/Frick/ttpapi.git"},"main":"index.js","dependencies":{"socket.io":"git://github.com/LearnBoost/socket.io.git#dbe6d5f740bcd8e2c93f2607ca699c0ac0a55cd8"},"engines":{"node":">= v0.4.0"},"_npmUser":{"name":"Frick","email":"mdfrick@gmail.com"},"_id":"ttpapi@0.9.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e89f183f5ec13a99ac0f97d360ccc95913d9b175","tarball":"http://registry.npmjs.org/ttpapi/-/ttpapi-0.9.0.tgz"},"maintainers":[{"name":"Frick","email":"mdfrick@gmail.com"}]}},"maintainers":[{"name":"Frick","email":"mdfrick@gmail.com"}],"time":{"modified":"2012-06-13T09:50:13.637Z","created":"2012-06-13T09:50:11.888Z","0.9.0":"2012-06-13T09:50:13.637Z"},"author":{"name":"Michael Frick","email":"frick@turntableplus.fm","url":"http://turntableplus.fm"},"repository":{"type":"git","url":"git://github.com/Frick/ttpapi.git"},"_id":"ttpapi","_rev":"1-07e67fdbe454f833680334f3a8e44637"}ÿdocument-storeÿtresterš{"id":"trester","rev":"1-aab46b8bee80843fb45d247fee50f54a","rev_tree":[{"pos":1,"ids":["aab46b8bee80843fb45d247fee50f54a",{"status":"available"},[]]}],"rev_map":{"1-aab46b8bee80843fb45d247fee50f54a":3784},"winningRev":"1-aab46b8bee80843fb45d247fee50f54a","deleted":false,"seq":3784}ÿby-sequenceÿ0000000000003784·"{"name":"trester","description":"RESTful tester","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"trester","description":"RESTful tester","main":"./build/trester.js","version":"0.1.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"dependencies":{"request":"2.9.x","should":"0.6.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/trester.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"trester@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"835a07ddd48b505d075701d1c8e12d2bdde89cab","tarball":"http://registry.npmjs.org/trester/-/trester-0.1.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.0":{"name":"trester","description":"RESTful tester","main":"./build/trester.js","version":"0.2.0","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"dependencies":{"request":"2.9.x","should":"0.6.x"},"dev5ů§ùDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/trester.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"trester@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"60ce5e5df3b32ccc1044ed45ad1149a71acb4d0d","tarball":"http://registry.npmjs.org/trester/-/trester-0.2.0.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.1":{"name":"trester","description":"RESTful tester","main":"./build/trester.js","version":"0.2.1","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"dependencies":{"request":"2.9.x","should":"0.6.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/trester.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"trester@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"30f433a0fb1d93c8a6e3679ce8b139478c35e431","tarball":"http://registry.npmjs.org/trester/-/trester-0.2.1.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.2":{"name":"trester","description":"RESTful tester","main":"./build/trester.js","version":"0.2.2","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"dependencies":{"request":"2.9.x","should":"0.6.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/trester.coffee"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"trester@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b0fe7ef9b33b83e33ba8c349799eee9eeecb9331","tarball":"http://registry.npmjs.org/trester/-/trester-0.2.2.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]},"0.2.3":{"name":"trester","description":"RESTful tester","main":"./build/trester.js","version":"0.2.3","author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"engines":{"node":">=0.6.0"},"dependencies":{"request":"2.9.x","should":"0.6.x"},"devDependencies":{"coffee-script":"1.3.x"},"scripts":{"prepublish":"coffee -c -o build src/trester.coffee"},"readme":"trester\n=======","_id":"trester@0.2.3","dist":{"shasum":"c6a1c820885d2c5b1118546ca2817cfed3e31b8d","tarball":"http://registry.npmjs.org/trester/-/trester-0.2.3.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]}},"readme":"trester\n=======","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}],"time":{"modified":"2012-08-23T07:06:11.828Z","created":"2012-06-14T19:57:00.005Z","0.1.0":"2012-06-14T19:57:01.539Z","0.2.0":"2012-06-14T21:16:23.114Z","0.2.1":"2012-06-21T16:28:56.636Z","0.2.2":"2012-06-21T16:32:10.903Z","0.2.3":"2012-08-23T07:06:11.828Z"},"author":{"name":"Jakob Mattsson","email":"jakob.mattsson@gmail.com","url":"jakobmattsson.se"},"_id":"trester","_rev":"1-aab46b8bee80843fb45d247fee50f54a"}ÿdocument-storeÿtraverserœ{"id":"traverser","rev":"1-c590dac1f1f84b35fddd9170202a424c","rev_tree":[{"pos":1,"ids":["c590dac1f1f84b35fddd9170202a424c",{"status":"available"},[]]}],"rev_map":{"1-c590dac1f1f84b35fddd9170202a424c":3783},"winningRev":"1-c590dac1f1f84b35fddd9170202a424c","deleted":false,"seq":3783}ÿby-sequenceÿ0000000000003783“_{"name":"traverser","description":"lib for traversing trees and graphs","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.0","homepage":"https://github.com/dominictarr/traverser","repository":"git://github.com/dominictarr/traverser.git","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./index","directories":{"lib":"."},"devDependencies":{"expresso":">=0.6.0","nodeunit":">=0.5.0"},"dependencies":{"curry":"*"},"engines":{"node":"*"},"scripts":{"test":"expresso test/*.expresso.js && nodeunit test/*.asynct.js"},"_id":"traverser@0.0.0","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.0","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"b828dad6d39834b9e8880659f7ba22a4d68fe864","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.0.tgz"}},"0.0.1":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.1","homepage":"https://github.com/dominictarr/traverser","repository":"git://github.com/dominictarr/traverser.git","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./index","directories":{"lib":"."},"devDependencies":{"expresso":">=0.6.0","nodeunit":">=0.5.0"},"dependencies":{"curry":"*"},"engines":{"node":"*"},"scripts":{"test":"expresso test/*.expresso.js && nodeunit test/*.asynct.js"},"_id":"traverser@0.0.1","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.3.0","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0cb72bf7a68291d1c960979bf75fae62c497d34a","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.1.tgz"}},"0.0.2-1":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.2-1","homepage":"https://github.com/dominictarr/traverser","repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./index","directories":{"lib":".","example":"examples"},"dependencies":{"curry":"0.0.x"},"engines":{"node":"*"},"devDependencies":{},"_id":"traverser@0.0.2-1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"2cfd45b2040f37f887c2ff9c265dda27393ad49b","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.2-1.tgz"},"scripts":{}},"0.0.2-2":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.2-2","homepage":"https://github.com/dominictarr/traverser","repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./index","directories":{"lib":".","example":"examples"},"dependencies":{"curry":"0.0.x"},"engines":{"node":"*"},"devDependencies":{},"_id":"traverser@0.0.2-2","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"8945eb79410c008730694dc58fec96f09470c1ff","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.2-2.tgz"},"scripts":{}},"1.0.0":{"name":"traverser","description":"lib for traversing trees and graphs","version":"1.0.0","homepage":"https://github.com/dominictarr/traverser","repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./traverser.sync","directories":{"lib":".","example":"examples"},"dependencies":{"curry":"0.0.x"},"engines":{"node":"*"},"_npmJsonOpts":{"file":"/home/dominic/.npm/traverser/1.0.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"traverser@1.0.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"6f59e5813759aeeab3646b8f4513fd4a62e4fe20","tarball":"http://registry.npmjs.org/traverser/-/traverser-1.0.0.tgz"},"scripts":{}},"0.0.4":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.4","homepage":"https://github.com/dominictarr/traverser","repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"main":"./traverser.sync","directories":{"lib":".","example":"examples"},"dependencies":{"curry":"0.0.x"},"engines":{"node":"*"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"traverser@0.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d3b6eb3da89a896463088385ecd7e53b9bbce5ac","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.4.tgz"},"readme":"\n#Traverser#\n\nsearch through a complex object (nearly) as easily as forEach\n\nall the nitty-gritty stuff is taken care of.\n\nincluding:\n # checking for repeats.\n # checking for cycles.\n # getting the path the the current object. etc!\n\n#simple example#\ncollect all branches in a tree.\n\n var traverser = require('traverser')\n , branches = []\n\n function branch(props){\n if(!props.reference) //since we check for references with will work in cyclic graphs, without stackoverflows.\n branches.push(props.value)\n\n props.each()//continue working through the children of this object.\n }\n\n traverser([1,2,{},3,[\"x\"]],{branch: branch})\n \n console.log(branches)\n\n#simple example2#\ncollect all leaves in a tree. (only functions and primitives)\n\n var traverser = require('traverser')\n\n exports.leaves = leaves\n\n function leaves (obj){\n var leaves = []\n\n function leaf(props){\n leaves.push(props.value)\n }\n\n traverser(obj,{leaf: leaf})\n return leaves\n }\n\n traverser([1,2,{},3,[\"x\"]],{leaf: leaves})\n\n console.log(leaves([1,2,{},3,[\"x\"]]))\n //[1,2,3,'x']\n \n#complex example#\neven quite complex things like a topological sort are now achivable in ~30 lines.\nsee `traverser/examples/topo-sort`\n\n\n#API#\n\n `traverser (obj, options)`\n \n obj: graph/tree to traverse\n \n options: (each of the following is optional)\n {\n branch: function to call on a branch of the tree (by default, where typeof == 'object'\n , leaf: function to call on primitives and functions\n , isBranch: return true if current value should be treated as a branch\n }\n \neach function is passed one arg, a properties object which describes the state of the traverse.\n \n {\n value: this object\n , parent: object which this item is a property of. (null if your on the root object)\n , key: key of this item on parent. (null if your on the root object)\n , path: [list of keys from root object to current item]\n , reference: true if this object is a repeat\n , circular: true if this object is in the ancestors list.\n , seen: list of objects seen so far\n , ancestors: list of objects between value and root object.\n\n //when your in the branch function, you need to call one of the following to iterate over the children.\n //none of these require an argument.\n\n , each: iterate over each property\n , find: iterate untill the first truthy return, returns the item.\n , map: collects return values into an Array\n , copy: copies objects, preserving whether it's a {} or a []\n , max: iterate over all properties and return max return value\n , min: iterate over all properties and return min return value\n }\n\n###feel free to ask me questions if you need help!###\n\n###see https://github.com/dominictarr/trees for more examples.###\n\n##License\n\nMit/Apache2\n","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.5":{"name":"traverser","description":"lib for traversing trees and graphs","version":"0.0.5","homepage":"https://github.com/dominictarr/traverser","repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"dependencies":{"curry":"0.0.x"},"engines":{"node":"*"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"traverser@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c66f38c456a0c21a88014b1223580c7ebe0631eb","tarball":"http://registry.npmjs.org/traverser/-/traverser-0.0.5.tgz"},"readme":"\n#Traverser#\n\nsearch through a complex object (nearly) as easily as forEach\n\nall the nitty-gritty stuff is taken care of.\n\nincluding:\n # checking for repeats.\n # checking for cycles.\n # getting the path the the current object. etc!\n\n#simple example#\ncollect all branches in a tree.\n\n var traverser = require('traverser')\n , branches = []\n\n function branch(props){\n if(!props.reference) //since we check for references with will work in cyclic graphs, without stackoverflows.\n branches.push(props.value)\n\n props.each()//continue working through the children of this object.\n }\n\n traverser([1,2,{},3,[\"x\"]],{branch: branch})\n \n console.log(branches)\n\n#simple example2#\ncollect all leaves in a tree. (only functions and primitives)\n\n var traverser = require('traverser')\n\n exports.leaves = leaves\n\n function leaves (obj){\n var leaves = []\n\n function leaf(props){\n leaves.push(props.value)\n }\n\n traverser(obj,{leaf: leaf})\n return leaves\n }\n\n traverser([1,2,{},3,[\"x\"]],{leaf: leaves})\n\n console.log(leaves([1,2,{},3,[\"x\"]]))\n //[1,2,3,'x']\n \n#complex example#\neven quite complex things like a topological sort are now achivable in ~30 lines.\nsee `traverser/examples/topo-sort`\n\n\n#API#\n\n `traverser (obj, options)`\n \n obj: graph/tree to traverse\n \n options: (each of the following is optional)\n {\n branch: function to call on a branch of the tree (by default, where typeof == 'object'\n , leaf: function to call on primitives and functions\n , isBranch: return true if current value should be treated as a branch\n }\n \neach function is passed one arg, a properties object which describes the state of the traverse.\n \n {\n value: this object\n , parent: object which this item is a property of. (null if your on the root object)\n , key: key of this item on parent. (null if your on the root object)\n , path: [list of keys from root object to current item]\n , reference: true if this object is a repeat\n , circular: true if this object is in the ancestors list.\n , seen: list of objects seen so far\n , ancestors: list of objects between value and root object.\n\n //when your in the branch function, you need to call one of the following to iterate over the children.\n //none of these require an argument.\n\n , each: iterate over each property\n , find: iterate untill the first truthy return, returns the item.\n , map: collects return values into an Array\n , copy: copies objects, preserving whether it's a {} or a []\n , max: iterate over all properties and return max return value\n , min: iterate over all properties and return min return value\n }\n\n###feel free to ask me questions if you need help!###\n\n###see https://github.com/dominictarr/trees for more examples.###\n\n##License\n\nMit/Apache2\n","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-06-13T03:29:28.023Z","created":"2011-02-07T11:07:09.785Z","0.0.0":"2011-02-07T11:07:10.532Z","0.0.1":"2011-02-07T11:08:18.951Z","0.0.2-1":"2011-05-24T06:25:56.241Z","0.0.2-2":"2011-05-24T16:59:26.419Z","1.0.0":"2011-06-25T16:27:48.336Z","0.0.4":"2012-06-13T03:24:35.007Z","0.0.5":"2012-06-13T03:29:28.023Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/traverser.git"},"_id":"traverser","_rev":"1-c590dac1f1f84b35fddd9170202a424c"}ÿdocument-storeÿtolmey™{"id":"tolmey","rev":"1-2cb1ed69d3e746498a855208c5b9259b","rev_tree":[{"pos":1,"ids":["2cb1ed69d3e746498a855208c5b9259b",{"status":"available"},[]]}],"rev_map":{"1-2cb1ed69d3e746498a855208c5b9259b":3782},"winningRev":"1-2cb1ed69d3e746498a855208c5b9259b","deleted":false,"seq":3782}ÿby-sequenceÿ0000000000003782ûr{"name":"tolmey","description":"easy mapping tile downloading","dist-tags":{"latest":"0.6.1"},"versions":{"0.0.1":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.0.1","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.0.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"8fe0165e3351b4ebc919ccb9bd9c232ffa8698eb","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.0.1.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.1.1":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.1.1","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.1.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"4d27b3a695bf7162bc02970fac92e057e7ca8259","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.1.1.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.2.0":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.2.0","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.2.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"8c9658185949a52667323cefbf2364f82bcfdd29","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.2.0.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.2.1":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.2.1","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.2.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e283989a7965c32535538b21f64b9ba762103e37","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.2.1.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.3.0":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.3.0","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"9b504294b6c9c894289fa31ded44067c39313d26","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.3.0.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.4.0":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.4.0","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.4.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2d0548788a33f60d3fc2b622458ebdeb95c954e1","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.4.0.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.5.0":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.5.0","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.5.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"0dc5e7c0ff4827d69d8685f7417feecfc1683b03","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.5.0.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.5.1":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.5.1","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.5.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"acb008a5c5a1797d72e038ef4953b5eeaedd99ad","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.5.1.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.5.2":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.5.2","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"jergason","email":"jergason@gmail.com"},"_id":"tolmey@0.5.2","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"3f360078ace2838df174c47c9e1d395714569604","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.5.2.tgz"},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"}]},"0.6.0":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.6.0","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"tolmey@0.6.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"284692922377cd6c5b344d15e3ab200b55800fae","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.6.0.tgz"},"readme":"#Tolmey README\n\n`Tolmey` is a little library for getting mapping images\nfrom latitdue and longitudes.\n\nIt works for mapping systems using the EPSG:3857 or \n\"Spherical Mercator\" coordinate system.\n\nThis is the coordinate system used by\nmost online mapping applications (OpenStreetMap, Google Maps, and a\nfew others). The means that you can convert from a latitude and\nlongitude to a map tile URL, to download or do whatever you want with.\n\nThe code for transforming the coordinates was heavily inspired by the\n[FoxtrotGPS](http://foxtrotgps.org) code for doing so.\n\n##Installation\n\nTolmey uses [Ender](http://ender.no.de), a client-side library manager.\nFollow the instructions on the website for installing ender, and then\nnavigate to the directory where you keep your javascript files.\n\nInstall Tolmey from NPM:\n\n ender build tolmey\n\nThis produces an ender.js file, which includes the Tolmey library. Then\nadd the `ender.js` file to your project like you would any other\nJavascript file.\n\nOr, if you already have an `ender.js` file, run:\n\n ender add path/to/Tolmey\n\n##Usage Examples\n\n###Getting X and Y Tile Coordinates From Latitude And Longitude:\n\n var Tolmey = require('tolmey');\n var converter = new Tolmey();\n var lat = 40.6789;\n var long = -111.6879;\n //need a zoom level as well. Higher numbers zoom in more.\n var zoom = 15.0;\n var tile_coordinates = converter.getMercatorFromGPS(lat, long, zoom);\n // { x: 6217, y: 12324 }\n\n###Getting A URL for an OpenStreetMap Tile:\n\n var url = converter.getTileURL(openstreetmap', tile_coordinates.x, tile_coordinates.y,zoom);\n // \"http://tile.openstreetmap.org/15/6217/12324.png\"\n\n##Example App\n\nThere is a small skeleton HTML page along with some javascript that\ndemonstrates how you could use Tolmey.\n\nTo build it, run `ender build jeesh path/to/tolmey`, and then open the\nindex.html file in a browser.\n\n##Tolmey and Google Maps\nI used FoxtrotGPS and OpenStreetMap to build this, but Google Maps\napprears to use a very similar coordinate system and URL scheme, so\nTolmey might be useful for obtaining URLs to Google Map tiles as well.\n\nFeel free to bug me if you want more info on this.\n\n##Why the name Tolmey?\n\"Tolmey\" is my horrible misspelling of [Ptolemy](http://en.wikipedia.org/wiki/Ptolemy),\na famous Roman scientist. Among many other things, he was a famous\ncartographer and mapper.\n","maintainers":[{"name":"jergason","email":"jergason@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.1":{"name":"tolmey","description":"easy mapping tile downloading","version":"0.6.1","homepage":"https://github.com/jergason/Tolmey","author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"main":"./tolmey.js","keywords":["mapping","gps","ender"],"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"tolmey@0.6.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"09207f6894062fab47e72d83a1779c2dffe017d1","tarball":"http://registry.npmjs.org/tolmey/-/tolmey-0.6.1.tgz"},"readme":"#Tolmey README\n\n`Tolmey` is a little library for getting mapping images\nfrom latitdue and longitudes.\n\nIt works for mapping systems using the EPSG:3857 or \n\"Spherical Mercator\" coordinate system.\n\nThis is the coordinate system used by\nmost online mapping applications (OpenStreetMap, Google Maps, and a\nfew others). The means that you can convert from a latitude and\nlongitude to a map tile URL, to download or do whatever you want with.\n\nThe code for transforming the coordinates was heavily inspired by the\n[FoxtrotGPS](http://foxtrotgps.org) code for doing so.\n\n##Installation\n\nTolmey uses [Ender](http://ender.no.de), a client-side library manager.\nFollow the instructions on the website for installing ender, and then\nnavigate to the directory where you keep your javascript files.\n\nInstall Tolmey from NPM:\n\n ender build tolmey\n\nThis produces an ender.js file, which includes the Tolmey library. Then\nadd the `ender.js` file to your project like you would any other\nJavascript file.\n\nOr, if you already have an `ender.js` file, run:\n\n ender add path/to/Tolmey\n\n##Usage Examples\n\n###Getting X and Y Tile Coordinates From Latitude And Longitude:\n\n var Tolmey = require('tolmey');\n var converter = new Tolmey();\n var lat = 40.6789;\n var long = -111.6879;\n //need a zoom level as well. Higher numbers zoom in more.\n var zoom = 15.0;\n var tile_coordinates = converter.getMercatorFromGPS(lat, long, zoom);\n // { x: 6217, y: 12324 }\n\n###Getting A URL for an OpenStreetMap Tile:\n\n var url = converter.getTileURL(openstreetmap', tile_coordinates.x, tile_coordinates.y,zoom);\n // \"http://tile.openstreetmap.org/15/6217/12324.png\"\n\n##Example App\n\nThere is a small skeleton HTML page along with some javascript that\ndemonstrates how you could use Tolmey.\n\nTo build it, run `ender build jeesh path/to/tolmey`, and then open the\nindex.html file in a browser.\n\n##Tolmey and Google Maps\nI used FoxtrotGPS and OpenStreetMap to build this, but Google Maps\napprears to use a very similar coordinate system and URL scheme, so\nTolmey might be useful for obtaining URLs to Google Map tiles as well.\n\nFeel free to bug me if you want more info on this.\n\n##Why the name Tolmey?\n\"Tolmey\" is my horrible misspelling of [Ptolemy](http://en.wikipedia.org/wiki/Ptolemy),\na famous Roman scientist. Among many other things, he was a famous\ncartographer and mapper.\n","maintainers":[{"name":"jergason","email":"jergason@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"maintainers":[{"name":"jergason","email":"jergason@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-05-11T22:08:18.060Z","created":"2011-10-28T06:29:42.670Z","0.0.1":"2011-10-28T06:33:10.363Z","0.1.1":"2011-11-04T18:14:57.639Z","0.2.0":"2011-11-16T22:17:35.856Z","0.2.1":"2011-11-20T03:20:20.115Z","0.3.0":"2011-11-21T22:05:14.636Z","0.4.0":"2011-11-28T23:40:55.904Z","0.5.0":"2011-12-13T00:11:10.111Z","0.5.1":"2011-12-13T00:15:32.711Z","0.5.2":"2011-12-13T23:25:13.544Z","0.6.0":"2012-04-20T21:46:22.861Z","0.6.1":"2012-05-11T22:08:18.060Z"},"author":{"name":"Jamison Dance","email":"jergason@gmail.com","url":"http://jamisondance.com"},"repository":{"type":"git","url":"git://github.com/jergason/Tolmey.git"},"_id":"tolmey","_rev":"1-2cb1ed69d3e746498a855208c5b9259b"}ÿdocument-storeÿtodolist›{"id":"todolist","rev":"1-39c5070b2d1ff3c4aea630b16869e51e","rev_tree":[{"pos":1,"ids":["39c5070b2d1ff3c4aea630b16869e51e",{"status":"available"},[]]}],"rev_map":{"1-39c5070b2d1ff3c4aea630b16869e51e":3781},"winningRev":"1-39c5070b2d1ff3c4aea630b16869e51e","deleted":false,"seq":3781}ÿby-sequenceÿ0000000000003781È {"name":"todolist","description":"take an argument list of files and scan for TODO/HACK/FIXME commands","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Mark Willis","email":"mark.w@immat.co.uk"},"name":"todolist","description":"take an argument list of files and scan for TODO/HACK/FIXME commands","version":"0.0.1","repository":{"type":"git","url":"git://github.com/markwillis82/todolist.git"},"engines":{"node":"~0.6.6"},"bin":{"todolist":"./bin/todolist"},"keywords":["git","todolist","todo"],"dependencies":{"nodegrep":"*","optimist":"*","cli-color":"*"},"devDependencies":{},"_npmUser":{"name":"markwillis82","email":"mark.w@immat.co.uk"},"_id":"todolist@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"2c1f8dd239a619d931db5bbe43d98140ab52acdd","tarball":"http://registry.npmjs.org/todolist/-/todolist-0.0.1.tgz"},"maintainers":[{"name":"markwillis82","email":"mark.w@immat.co.uk"}]}},"readme":"todolist\n========\n\ntake an argument list of files and scan for TODO/HACK/FIXME commands","maintainers":[{"name":"markwillis82","email":"mark.w@immat.co.uk"}],"time":{"modified":"2012-04-22T22:29:39.907Z","created":"2012-04-22T22:29:38.080Z","0.0.1":"2012-04-22T22:29:39.907Z"},"author":{"name":"Mark Willis","email":"mark.w@immat.co.uk"},"repository":{"type":"git","url":"git://github.com/markwillis82/todolist.git"},"_id":"todolist","_rev":"1-39c5070b2d1ff3c4aea630b16869e51e"}ÿdocument-storeÿtipsy˜{"id":"tipsy","rev":"1-2a73bac836a59d36ef51d63188cb428c","rev_tree":[{"pos":1,§t1Üù"ids":["2a73bac836a59d36ef51d63188cb428c",{"status":"available"},[]]}],"rev_map":{"1-2a73bac836a59d36ef51d63188cb428c":3780},"winningRev":"1-2a73bac836a59d36ef51d63188cb428c","deleted":false,"seq":3780}ÿby-sequenceÿ0000000000003780«{"name":"tipsy","description":"Tipsy tool-tip component","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"tipsy","description":"Tipsy tool-tip component","version":"1.0.0","repository":{"type":"git","url":"git://github.com/visionmedia/tipsy.git"},"component":{"scripts":{"tipsy":"src/javascripts/jquery.tipsy.js"},"styles":["src/stylesheets/tipsy.css"]},"dependencies":{"jquery-component":"*"},"_npmUser":{"name":"tjholowaychuk","email":"tj@vision-media.ca"},"_id":"tipsy@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"87d2ed96d413bbcadf3d167bcda2c9b8c4e30921","tarball":"http://registry.npmjs.org/tipsy/-/tipsy-1.0.0.tgz"},"maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}]}},"readme":"# tipsy\n\nFacebook-style tooltip plugin for jQuery\n\n(c) 2008-2010 Jason Frame (jason@onehackoranother.com)\n\nReleased under The MIT License.\n\n## Description:\n\ntipsy is a simple jQuery plugin for generating Facebook-style tooltips.\n\nIt's used by Twitter, Github, Slideshare and Bitbucket, amongst others.\n\n## Homepage:\n\nhttp://onehackoranother.com/projects/jquery/tipsy\n\n## Source:\n\nHosted at GitHub; browse at:\n\n http://github.com/jaz303/tipsy/tree/master\n\nOr clone from:\n\n git://github.com/jaz303/tipsy.git\n\n## Usage:\n\n1. Copy the contents of src/{images,javascripts,stylesheets} to the corresponding asset directories in your project. \n If the relative path of your images directory from your stylesheets directory is not \"../images\", you'll need to adjust tipsy.css appropriately.\n\n2. Insert the neccesary elements in your document's `` section, e.g.:\n \n \n \n\n Remember to include jquery.tipsy.js *after* including the main jQuery library.\n\n3. Initialise Tipsy in your document.onload, e.g.:\n\n \n\nPlease refer to the docs directory for more examples and documentation.\n\n## A note on forking:\n\nBy forking this project you hereby grant permission for any commits to your fork to be\nmerged back into this repository and, with attribution, be released under the terms of\nthe MIT License.\n","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2012-06-13T17:55:32.807Z","created":"2012-06-13T17:55:31.153Z","1.0.0":"2012-06-13T17:55:32.807Z"},"repository":{"type":"git","url":"git://github.com/visionmedia/tipsy.git"},"_id":"tipsy","_rev":"1-2a73bac836a59d36ef51d63188cb428c"} ÿdocument-storeÿtilemill-easey¡{"id":"tilemill-easey","rev":"1-b687da9e5aec3dec52b5253d53b65249","rev_tree":[{"pos":1,"ids":["b687da9e5aec3dec52b5253d53b65249",{"status":"available"},[]]}],"rev_map":{"1-b687da9e5aec3dec52b5253d53b65249":3779},"winningRev":"1-b687da9e5aec3dec52b5253d53b65249","deleted":false,"seq":3779}ÿby-sequenceÿ0000000000003779‘{"name":"tilemill-easey","description":"Smooth zooming and panning with Easey in TileMill.","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"tilemill-easey","description":"Smooth zooming and panning with Easey in TileMill.","version":"0.0.1","engines":{"tilemill":"0.9.x"},"keywords":["tilemill"],"license":"BSD","repository":{"type":"git","url":"git://github.com/aibram/tilemill-easey.git"},"_npmUser":{"name":"aibram","email":"ansis.brammanis@gmail.com"},"_id":"tilemill-easey@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":false,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"19f14f5c24c567e04b0d2195c687eb9a046e3b6d","tarball":"http://registry.npmjs.org/tilemill-easey/-/tilemill-easey-0.0.1.tgz"},"scripts":{},"maintainers":[{"name":"aibram","email":"ansis.brammanis@gmail.com"}],"directories":{}},"0.1.0":{"name":"tilemill-easey","description":"Smooth zooming and panning with Easey in TileMill.","version":"0.1.0","engines":{"tilemill":">=0.9.0 <0.11.0"},"keywords":["tilemill"],"license":"BSD","repository":{"type":"git","url":"git://github.com/aibram/tilemill-easey.git"},"_npmUser":{"name":"aibram","email":"ansis.brammanis@gmail.com"},"_id":"tilemill-easey@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"4f5908312f6a70aec9882ea90458673fb4e4a9db","tarball":"http://registry.npmjs.org/tilemill-easey/-/tilemill-easey-0.1.0.tgz"},"maintainers":[{"name":"aibram","email":"ansis.brammanis@gmail.com"}]}},"readme":"# Easey Handler Plugin for TileMill\n\nThis plugin uses [Easey](https://github.com/mapbox/easey) to add **smooth dragging, mousewheeling, and doubleclicking** to [TileMill](https://github.com/mapbox/tilemill).\n\n### Installation\n\nClone this repository into your TileMill plugins directory.\n","maintainers":[{"name":"ansis","email":"ansis.brammanis@gmail.com"}],"time":{"modified":"2012-08-02T00:32:28.298Z","created":"2012-05-09T10:40:03.273Z","0.0.1":"2012-05-09T10:40:04.001Z","0.1.0":"2012-07-10T15:07:19.994Z"},"repository":{"type":"git","url":"git://github.com/aibram/tilemill-easey.git"},"_id":"tilemill-easey","_rev":"1-b687da9e5aec3dec52b5253d53b65249"}*ÿdocument-storeÿtilemill-browser-preview«{"id":"tilemill-browser-preview","rev":"1-8a87c6bd2ef4a481a5699a8a666d18f0","rev_tree":[{"pos":1,"ids":["8a87c6bd2ef4a481a5699a8a666d18f0",{"status":"available"},[]]}],"rev_map":{"1-8a87c6bd2ef4a481a5699a8a666d18f0":3778},"winningRev":"1-8a87c6bd2ef4a481a5699a8a666d18f0","deleted":false,"seq":3778}ÿby-sequenceÿ0000000000003778Ë {"name":"tilemill-browser-preview","description":"Preview map in default browser.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"tilemill-browser-preview","description":"Preview map in default browser.","version":"0.0.1","engines":{"tilemill":"0.10.0"},"keywords":["tilemill"],"_npmUser":{"name":"aibram","email":"ansis.brammanis@gmail.com"},"_id":"tilemill-browser-preview@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"91c06ec98498b636e505bfcfa7ff6ffbd3fbe992","tarball":"http://registry.npmjs.org/tilemill-browser-preview/-/tilemill-browser-preview-0.0.1.tgz"},"maintainers":[{"name":"aibram","email":"ansis.brammanis@gmail.com"}]}},"readme":"# TileMill Browser Preview\n\nThis tiny plugin adds a button to open the map in your default browser. It can be useful for previewing legends before exporting.\n","maintainers":[{"name":"ansis","email":"ansis.brammanis@gmail.com"}],"time":{"modified":"2012-08-02T01:08:44.708Z","created":"2012-07-11T17:09:16.622Z","0.0.1":"2012-07-11T17:09:17.211Z"},"_id":"tilemill-browser-preview","_rev":"1-8a87c6bd2ef4a481a5699a8a666d18f0"}ÿdocument-storeÿtextiled›{"id":"textiled","rev":"1-581a8af5d9e3bf0b387750cf3ad4d308","rev_tree":[{"pos":1,"ids":["581a8af5d9e3bf0b387750cf3ad4d308",{"status":"available"},[]]}],"rev_map":{"1-581a8af5d9e3bf0b387750cf3ad4d308":3777},"winningRev":"1-581a8af5d9e3bf0b387750cf3ad4d308","deleted":false,"seq":3777}ÿby-sequenceÿ0000000000003777Ä{"name":"textiled","description":"A textile parser.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"textiled","version":"0.1.0","description":"A textile parser.","author":{"name":"Christian Perfect, Yulian Kuncheff"},"contributors":{"name":"Yulian Kuncheff","email":"yulian@kuncheff.com"},"keywords":["textile"],"main":"./textiled","engines":{"node":">=0.6"},"repository":{"type":"git","url":"http: //github.com/Daegalus/textiled.git"},"_npmUser":{"name":"Daegalus","email":"yulian@kuncheff.com"},"_id":"textiled@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"e113abb44af3a06317932732526c17ef8d199f26","tarball":"http://registry.npmjs.org/textiled/-/textiled-0.1.0.tgz"},"maintainers":[{"name":"Daegalus","email":"yulian@kuncheff.com"}]}},"readme":"Since I couldn't find a good Textile parser for Node.js, I repurposed this one.\r\n\r\nVery little input was provided by me, all the hard work was done by Christian P. @ https://github.com/christianp/jstextile\r\n\r\nI have forked it, add the package.json, and made sure it still worked in browser and in Node.\r\n\r\n### Usage:\r\n\r\n\ttextiled.parse(inputString [, options]);\r\n\r\nAs for options, this is the only usage of options I could find:\r\n\r\n### Options:\r\n\r\n\t{\r\n\t\tnowrapPlainBlocks: true; // Not exactly sure what it does, but its the only option.\r\n\t}\r\n\r\n\r\nOriginal Readme by Christian Perfect:\r\n\r\n\tA better javascript textile converter, because I couldn't find one.\r\n","maintainers":[{"name":"Daegalus","email":"yulian@kuncheff.com"}],"time":{"modified":"2012-05-18T03:38:26.942Z","created":"2012-05-18T03:38:25.577Z","0.1.0":"2012-05-18T03:38:26.942Z"},"author":{"name":"Christian Perfect, Yulian Kuncheff"},"repository":{"type":"git","url":"http: //github.com/Daegalus/textiled.git"},"_id":"textiled","_rev":"1-581a8af5d9e3bf0b387750cf3ad4d308"}ÿdocument-storeÿteller™{"id":"teller","rev":"1-eb90a01d52a578b0f70565c4c4c91888","rev_tree":[{"pos":1,"ids":["eb90a01d52a578b0f70565c4c4c91888",{"status":"available"},[]]}],"rev_map":{"1-eb90a01d52a578b0f70565c4c4c91888":3776},"winningRev":"1-eb90a01d52a578b0f70565c4c4c91888","deleted":false,"seq":3776}ÿby-sequenceÿ0000000000003776¸€{"name":"teller","description":"Simple node.js webserver.","dist-tags":{"latest":"0.9.0"},"versions":{"0.1.0":{"name":"teller","description":"Basic node.js webserver.","version":"0.1.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","formidable":"1.0.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"ccabfe7f8460abf49aa9b9e743b533cd17dde084","tarball":"http://registry.npmjs.org/teller/-/teller-0.1.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.2.0":{"name":"teller","description":"Basic node.js webserver.","version":"0.2.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","formidable":"1.0.9","node-static":"0.5.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"cfdb41abfead061ae12efd1aa904ce73a8449cda","tarball":"http://registry.npmjs.org/teller/-/teller-0.2.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.3.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.3.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","formidable":"1.0.9","node-static":"0.5.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"eb16a23caef6dca70441086f28d61e13fc1ca746","tarball":"http://registry.npmjs.org/teller/-/teller-0.3.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.4.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.4.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","mime":"1.2.5","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"80f8e983b536c4462d2eb6f7971cb17b0f3150d3","tarball":"http://registry.npmjs.org/teller/-/teller-0.4.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.5.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.5.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","filed":"0.0.6","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.5.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"388e077f33327e8712e143e034e622202b7929c4","tarball":"http://registry.npmjs.org/teller/-/teller-0.5.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.6.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.6.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","filed":"0.0.6","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.6.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"be86fffbe8c4b6cccd0b7e0d26e8394c8eb27cb2","tarball":"http://registry.npmjs.org/teller/-/teller-0.6.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.7.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.7.0","main":"./index.js","repository":{"type":"git","url":"git://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","filed":"0.0.6","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"craigr_","email":"hello@crai.gr"},"_id":"teller@0.7.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"27785af120926089d829252a6ec348260c048f2d","tarball":"http://registry.npmjs.org/teller/-/teller-0.7.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.8.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.8.0","main":"./index.js","repository":{"type":"git","url":"https://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","filed":"0.0.6","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.8.0"},"readme":"#teller\nSimple node.js webserver. \nDependencies: [crossroads](http://millermedeiros.github.com/crossroads.js/), [ejs](https://github.com/visionmedia/ejs), [filed](https://github.com/mikeal/filed), [formidable](https://github.com/felixge/node-formidable), [wrench](https://github.com/ryanmcgrath/wrench-js).\n\n[![Build Status](https://secure.travis-ci.org/twentyrogersc/teller.png)](http://travis-ci.org/twentyrogersc/teller)\n\n## Installation\n\n```javascript\nnpm install teller\n```\n\n```javascript\nvar app = require('teller')\napp.get('/', function(req, res) {\n res.json({ foo: 'bar' })\n}).listen(1234)\n```\n\n## Routing\n\nSee [crossroads.addRoute](http://millermedeiros.github.com/crossroads.js/#crossroads-add_route) for more documentation on route patterns. Teller only supports string patterns, and named variables are available in [req.route](#reqroute).\n\n### app.get(route, callback)\n\nAdd an GET route with callback.\n\n```javascript\napp.get('/', function(req, res) {\n res.send('

Hello world!

')\n})\n```\n\n### app.post(route, callback)\n\nAdd a POST route with callback.\n\n```javascript\napp.post('/add', function(req, res) {\n res.json(req.body)\n})\n```\n\n### app.delete(route, callback)\n\nAdd a DELETE route with callback.\n\n```javascript\napp.delete('/image', function(req, res) {\n res.json(req.body)\n})\n```\n\n### app.settings(settings)\n\nSettings for template rendering and static file serving.\n\n```javascript\napp.settings({\n template: { dir: __dirname+'/templates' },\n static: { route: '/public', dir: __dirname+'/public' }\n})\n```\n\n### app.listen(port)\n\nBegin accepting connections on the specified port.\n\n```javascript\napp.listen(1234)\n```\n\n## Request\n\n### req.route\n\nContains named variables (see [Routing](#routing)) as key-value pairs.\n\n```javascript\napp.get('/:foo:', function(req, res) {\n console.log(req.route.foo)\n // GET /bar would log 'bar'\n})\n```\n\n### req.query\n\nContains a parsed query string for GET requests.\n\n```javascript\napp.get('/qs', function(req, res) {\n console.log(req.query.foo)\n // GET /qs?foo=bar would log 'bar'\n})\n```\n\n### req.body\n\nContains a parsed form body for POST & DELETE requests.\n\n```javascript\napp.post('/form', function(req, res) {\n console.log(req.body.foo)\n // POST /form foo=bar would log 'bar'\n})\n```\n\n## Response\n\n### res.json(obj [, statusCode])\n\nRender the object as json.\n\n```javascript\napp.get(route, function(req, res) {\n res.json({ foo: bar })\n})\n```\n\n### res.redirect(url [, statusCode])\n\nRedirect to another url.\n\n```javascript\napp.get(route, function(req, res) {\n res.redirect('/login')\n})\n```\n\n### res.render(template [, data [, statusCode]])\n\nRender the specified template. Template directory must be specified in [app.settings()](#appsettingssettings).\n\n```javascript\napp\n .settings({ dir: __dirname+'/templates' })\n .get(route, function(req, res) {\n res.render('template.ejs', data, statusCode)\n })\n```\n\n### res.send(data [, contentType [, statusCode]])\n\nRenders a string, with optional Content-Type header and status code.\n\n```javascript\napp.get(route, function(req, res) {\n res.send('

hello

')\n})\n```\n\n### res.show404()\n\nSends the default 404 page.\n\n```javascript\napp.get(route, function(req, res) {\n res.show404()\n})\n```","_id":"teller@0.8.0","dist":{"shasum":"20fd4877ca06a4e1973a02abffdd35288c71c496","tarball":"http://registry.npmjs.org/teller/-/teller-0.8.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]},"0.9.0":{"name":"teller","description":"Simple node.js webserver.","version":"0.9.0","main":"./index.js","repository":{"type":"git","url":"https://github.com/twentyrogersc/teller.git"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"dependencies":{"crossroads":"0.8.0","ejs":"0.7.1","filed":"0.0.6","formidable":"1.0.9","wrench":"1.3.9"},"devDependencies":{"mocha":"*","request":"*","should":"*"},"scripts":{"test":"make test"},"engines":{"node":">= 0.8.0"},"readme":"#teller\nSimple node.js webserver. \nDependencies: [crossroads](http://millermedeiros.github.com/crossroads.js/), [ejs](https://github.com/visionmedia/ejs), [filed](https://github.com/mikeal/filed), [formidable](https://github.com/felixge/node-formidable), [wrench](https://github.com/ryanmcgrath/wrench-js).\n\n[![Build Status](https://secure.travis-ci.org/twentyrogersc/teller.png)](http://travis-ci.org/twentyrogersc/teller)\n\n## Installation\n\n```javascript\nnpm install teller\n```\n\n```javascript\nvar app = require('teller')\napp.get('/', function(req, res) {\n res.json({ foo: 'bar' })\n}).listen(1234)\n```\n\n## Routing\n\nSee [crossroads.addRoute](http://millermedeiros.github.com/crossroads.js/#crossroads-add_route) for more documentation on route patterns. Teller only supports string patterns, and named variables are available in [req.route](#reqroute).\n\n### app.get(route, callback)\n\nAdd an GET route with callback.\n\n```javascript\napp.get('/', function(req, res) {\n res.send('

Hello world!

')\n})\n```\n\n### app.post(route, callback)\n\nAdd a POST route with callback.\n\n```javascript\napp.post('/add', function(req, res) {\n res.json(req.body)\n})\n```\n\n### app.delete(route, callback)\n\nAdd a DELETE route with callback.\n\n```javascript\napp.delete('/image', function(req, res) {\n res.json(req.body)\n})\n```\n\n### app.settings(settings)\n\nSettings for template rendering and static file serving.\n\n```javascript\napp.settings({\n template: { dir: __dirname+'/templates', 404: '404.ejs' },\n static: { route: '/public', dir: __dirname+'/public' }\n})\n```\n\n### app.listen(port)\n\nBegin accepting connections on the specified port.\n\n```javascript\napp.listen(1234)\n```\n\n## Request\n\n### req.route\n\nContains named variables (see [Routing](#routing)) as key-value pairs.\n\n```javascript\napp.get('/:foo:', function(req, res) {\n console.log(req.route.foo)\n // GET /bar would log 'bar'\n})\n```\n\n### req.query\n\nContains a parsed query string for GET requests.\n\n```javascript\napp.get('/qs', function(req, res) {\n console.log(req.query.foo)\n // GET /qs?foo=bar would log 'bar'\n})\n```\n\n### req.body\n\nContains a parsed form body for POST & DELETE requests.\n\n```javascript\napp.post('/form', function(req, res) {\n console.log(req.body.foo)\n // POST /form foo=bar would log 'bar'\n})\n```\n\n## Response\n\n### res.json(obj [, statusCode])\n\nRender the object as json.\n\n```javascript\napp.get(route, function(req, res) {\n res.json({ foo: bar })\n})\n```\n\n### res.redirect(url [, statusCode])\n\nRedirect to another url.\n\n```javascript\napp.get(route, function(req, res) {\n res.redirect('/login')\n})\n```\n\n### res.render(template [, data [, statusCode]])\n\nRender the specified template. Template directory must be specified in [app.settings()](#appsettingssettings).\n\n```javascript\napp\n .settings({ dir: __dirname+'/templates' })\n .get(route, function(req, res) {\n res.render('template.ejs', data, statusCode)\n })\n```\n\n### res.send(data [, contentType [, statusCode]])\n\nRenders a string, with optional Content-Type header and status code.\n\n```javascript\napp.get(route, function(req, res) {\n res.send('

hello

')\n})\n```\n\n### res.show404()\n\nIf ```settings.template['404']``` is supplied, renders a custom 404 page, otherwise sends the default 404 page.\n\n```javascript\napp.get(route, function(req, res) {\n res.show404(data)\n})\n```","_id":"teller@0.9.0","dist":{"shasum":"99e3d87228a9289f7c74cd39ca0a4674003a4dd9","tarball":"http://registry.npmjs.org/teller/-/teller-0.9.0.tgz"},"maintainers":[{"name":"craigr_","email":"hello@crai.gr"}]}},"readme":"#teller\nSimple node.js webserver.\n\n[![Build Status](https://secure.travis-ci.org/twentyrogersc/teller.png)](http://travis-ci.org/twentyrogersc/teller)\n\n## Installation\n\n```javascript\nnpm install teller\n```\n\n```javascript\nvar app = require('teller')\napp.get('/', function(req, res) {\n res.json({ foo: 'bar' })\n}).listen(1234)\n```\n\n## Request\n\n### app.get()\n\nAdd an GET route with callback. The query string will be parsed and available in req.query.\n\n```javascript\napp.get(route, function(req, res) {\n console.log(req.query)\n})\n```\n\n### app.post()\n\nAdd a POST route with callback. The body and files in the request will be parsed and available in req.body and req.files.\n\n```javascript\napp.post(route, function(req, res) {\n console.log(req.body)\n})\n```\n\n### app.listen()\n\nBegin accepting connections on the specified port.\n\n```javascript\napp.listen(1234)\n```\n\n## Response\n\n### res.render\n\nRender the specified template. In order to call this, app.setTemplateDir() is required to set the directory of the templates. Data and statusCode are not required.\n\n```javascript\napp.setTemplateDir(__dirname)\napp.get(route, function(req, res) {\n res.render('template.ejs', data, statusCode)\n})\n```\n\n### res.json\n\nRender the object as json. StatusCode is not required.\n\n```javascript\napp.get(route, function(req, res) {\n res.json({ foo: bar }, statusCode)\n})\n```\n\n### res.redirect\n\nRedirect to another url. StatusCode is not required.\n\n```javascript\napp.get(route, function(req, res) {\n res.redirect('/login', statusCode)\n})\n```","maintainers":[{"name":"craigr_","email":"hello@crai.gr"}],"time":{"modified":"2012-08-02T14:57:14.366Z","created":"2012-05-15T11:21:45.395Z","0.1.0":"2012-05-15T11:21:46.844Z","0.2.0":"2012-05-16T14:17:46.668Z","0.3.0":"2012-05-16T14:30:05.135Z","0.4.0":"2012-05-17T23:09:50.629Z","0.5.0":"2012-05-19T11:13:01.871Z","0.6.0":"2012-05-24T14:32:11.488Z","0.7.0":"2012-06-07T12:13:30.328Z","0.8.0":"2012-07-13T14:22:35.488Z","0.9.0":"2012-08-02T14:57:14.366Z"},"author":{"name":"Craig Rogers","email":"hello@crai.gr"},"repository":{"type":"git","url":"https://github.com/twentyrogersc/teller.git"},"_id":"teller","_rev":"1-eb90a01d52a578b0f70565c4c4c91888"}ÿdocument-storeÿsystem3š{"id":"system3","rev":"1-03e422b618038b97ed7d0bec7aa94ec5","rev_tree":[{"pos":1,"ids":["03e422b618038b97ed7d0bec7aa94ec5",{"status":"available"},[]]}],"rev_map":{"1-03e422b618038b97ed7d0bec7aa94ec5":3775},"winningRev":"1-03e422b618038b97ed7d0bec7aa94ec5","deleted":false,"seq":3775}ÿby-sequenceÿ0000000000003775${"name":"system3","description":"system(3) emulation for node.js","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"system3","version":"1.0.0","description":"system(3) emulation for node.js","main":"index.js","directories":{"example":"examples","test":"tests"},"dependencies":{},"devDependencies":{"tap":"~0.3.0"},"scripts":{"test":"tap test/*.js","install":"node-gyp rebuild"},"repository":{"type":"git","url":"git://github.com/tokuhirom/node-system3.git"},"keywords":["execSync","system"],"author":{"name":"tokuhirom"},"license":"MIT","gypfile":true,"readme":"node-system3\n============\n\nExecutes shell commands synchronously.\n\nSYNOPSIS\n--------\n\n var system3 = require('system3');\n\n system3.system('ls');\n\n // capture stdout\n var out = system3.qx('ls');\n console.log(out);\n\nINSTALLATION\n------------\n\n npm install system3\n\nMETHODS\n-------\n\n### system3.system(command)\n\nRun the command with shell. This method doesn't pipes any input/output.\n\n### var out = system3.qx(command)\n\nRun the command with shell. This method captures stdout from the command. And return it.\n\nPORTABILITY\n-----------\n\nThis module uses popen(3), pclose(3). It's in POSIX.1-2001.\n\nSEE ALSO\n--------\n\n### https://github.com/hecomi/node-execSync\n\nIt does not contain english docs.\n\n### https://github.com/mgutz/execSync\n\nIt works. But it depended on ffi. And .code does not works.\n\n","_id":"system3@1.0.0","dist":{"shasum":"4ca0da276a0331e086bc8e877205c974306b848f","tarball":"http://registry.npmjs.org/system3/-/system3-1.0.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"tokuhirom","email":"tokuhirom@gmail.com"},"maintainers":[{"name":"tokuhirom","email":"tokuhirom@gmail.com"}]},"1.0.1":{"name":"system3","version":"1.0.1","description":"system(3) emulation for node.js","main":"index.js","directories":{"example":"examples","test":"tests"},"dependencies":{},"devDependencies":{"tap":"~0.3.0"},"scripts":{"test":"tap test/*.js","install":"node-gyp rebuild"},"repository":{"type":"git","url":"git://github.com/tokuhirom/node-system3.git"},"keywords":["execSync","system"],"author":{"name":"tokuhirom"},"license":"MIT","gypfile":true,"readme":"node-system3\n============\n\nExecutes shell commands synchronously.\n\nSYNOPSIS\n--------\n\n var system3 = require('system3');\n\n system3.system('ls');\n\n // capture stdout\n var out = system3.qx('ls');\n console.log(out);\n\nINSTALLATION\n------------\n\n npm install system3\n\nMETHODS\n-------\n\n### system3.system(command)\n\nRun the command with shell. This method doesn't pipes any input/output.\n\n### var out = system3.qx(command)\n\nRun the command with shell. This method captures stdout from the command. And return it.\n\nPORTABILITY\n-----------\n\nThis module uses popen(3), pclose(3). It's in POSIX.1-2001.\n\nSEE ALSO\n--------\n\n### https://github.com/hecomi/node-execSync\n\nIt does not contain english docs.\n\n### https://github.com/mgutz/execSync\n\nIt works. But it depended on ffi. And .code does not works.\n\n","_id":"system3@1.0.1","dist":{"shasum":"edcfc64a91d0b651529150da1f42f49c6d09add9","tarball":"http://registry.npmjs.org/system3/-/system3-1.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"tokuhirom","email":"tokuhirom@gmail.com"},"maintainers":[{"name":"tokuhirom","email":"tokuhirom@gmail.com"}]}},"readme":"node-system3\n============\n\nExecutes shell commands synchronously.\n\nSYNOPSIS\n--------\n\n var system3 = require('system3');\n\n system3.system('ls');\n\n // capture stdout\n var out = system3.qx('ls');\n console.log(out);\n\nINSTALLATION\n------------\n\n npm install system3\n\nMETHODS\n-------\n\n### system3.system(command)\n\nRun the command with shell. This method doesn't pipes any input/output.\n\n### var out = system3.qx(command)\n\nRun the command with shell. This method captures stdout from the command. And return it.\n\nPORTABILITY\n-----------\n\nThis module uses popen(3), pclose(3). It's in POSIX.1-2001.\n\nSEE ALSO\n--------\n\n### https://github.com/hecomi/node-execSync\n\nIt does not contain english docs.\n\n### https://github.com/mgutz/execSync\n\nIt works. But it depended on ffi. And .code does not works.\n\n","maintainers":[{"name":"tokuhirom","email":"tokuhirom@gmail.com"}],"time":{"modified":"2012-08-23T01:42:49.879Z","created":"2012-08-23T00:26:39.295Z","1.0.0":"2012-08-23T00:26:42.032Z","1.0.1":"2012-08-23T01:42:49.879Z"},"author":{"name":"tokuhirom"},"repository":{"type":"git","url":"git://github.com/tokuhirom/node-system3.git"},"_id":"system3","_rev":"1-03e422b618038b97ed7d0bec7aa94ec5"}ÿdocument-storeÿsysstatš{"id":"sysstat","rev":"1-99c3abe76ffdaf67287e9c01d270ff12","rev_tree":[{"pos":1,"ids":["99c3abe76ffdaf67287e9c01d270ff12",{"status":"available"},[]]}],"rev_map":{"1-99c3abe76ffdaf67287e9c01d270ff12":3774},"winningRev":"1-99c3abe76ffdaf67287e9c01d270ff12","deleted":false,"seq":3774}ÿby-sequenceÿ0000000000003774ÛŸ{"name":"sysstat","description":"A parser around sar (sysstat) to monitor performance statistics.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"description":"A parser around sar (sysstat) to monitor performance statistics.","name":"sysstat","version":"0.1.0","dependencies":{"underscore":"~1.3.3"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"sysstat":"bin/sar-to-csv"},"main":"lib/index","licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"_npmUser":{"name":"Filirom1","email":"filirom1@gmail.com"},"_id":"sysstat@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"85974814f574f01dfe1e859259b11e22e4c93035","tarball":"http://registry.npmjs.org/sysstat/-/sysstat-0.1.0.tgz"},"maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"}]},"0.2.±:xûù0":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"description":"A parser around sar (sysstat) to monitor performance statistics.","name":"sysstat","version":"0.2.0","dependencies":{"underscore":"~1.3.3"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"sysstat":"bin/sar-to-csv"},"main":"lib/index","licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"readme":"# node-sysstat\n\nParse sar output into a JavaScript object.\n\n## Usage\n\n var sar = require('sysstat');\n\n sar(['-A', '1']).on('stats', function(o){\n console.log(o);\n });\n\n## Output\n\n { date: '18:45:33',\n 'CPU_all_%usr': '0.97',\n 'CPU_all_%nice': '0.00',\n 'CPU_all_%sys': '0.97',\n 'CPU_all_%iowait': '0.00',\n 'CPU_all_%steal': '0.00',\n 'CPU_all_%irq': '0.00',\n 'CPU_all_%soft': '0.00',\n 'CPU_all_%guest': '0.00',\n 'CPU_all_%idle': '98.06',\n 'CPU_0_%usr': '0.00',\n 'CPU_0_%nice': '0.00',\n 'CPU_0_%sys': '1.02',\n 'CPU_0_%iowait': '0.00',\n 'CPU_0_%steal': '0.00',\n 'CPU_0_%irq': '0.00',\n 'CPU_0_%soft': '0.00',\n 'CPU_0_%guest': '0.00',\n 'CPU_0_%idle': '98.98',\n 'CPU_1_%usr': '0.00',\n 'CPU_1_%nice': '0.00',\n 'CPU_1_%sys': '1.98',\n 'CPU_1_%iowait': '0.00',\n 'CPU_1_%steal': '0.00',\n 'CPU_1_%irq': '0.00',\n 'CPU_1_%soft': '0.00',\n 'CPU_1_%guest': '0.00',\n 'CPU_1_%idle': '98.02',\n 'CPU_2_%usr': '2.63',\n 'CPU_2_%nice': '0.00',\n 'CPU_2_%sys': '0.88',\n 'CPU_2_%iowait': '0.00',\n 'CPU_2_%steal': '0.00',\n 'CPU_2_%irq': '0.00',\n 'CPU_2_%soft': '0.00',\n 'CPU_2_%guest': '0.00',\n 'CPU_2_%idle': '96.49',\n 'CPU_3_%usr': '0.00',\n 'CPU_3_%nice': '0.00',\n 'CPU_3_%sys': '1.00',\n 'CPU_3_%iowait': '0.00',\n 'CPU_3_%steal': '0.00',\n 'CPU_3_%irq': '0.00',\n 'CPU_3_%soft': '0.00',\n 'CPU_3_%guest': '0.00',\n 'CPU_3_%idle': '99.00',\n 'proc/s': '0.00',\n 'cswch/s': '690.82',\n 'INTR_sum_intr/s': '431.63',\n 'INTR_0_intr/s': '0.00',\n 'INTR_1_intr/s': '0.00',\n 'INTR_2_intr/s': '0.00',\n 'INTR_3_intr/s': '0.00',\n 'INTR_4_intr/s': '0.00',\n 'INTR_5_intr/s': '0.00',\n 'INTR_6_intr/s': '0.00',\n 'INTR_7_intr/s': '0.00',\n 'INTR_8_intr/s': '0.00',\n 'INTR_9_intr/s': '0.00',\n 'INTR_10_intr/s': '0.00',\n 'INTR_11_intr/s': '0.00',\n 'INTR_12_intr/s': '0.00',\n 'INTR_13_intr/s': '0.00',\n 'INTR_14_intr/s': '0.00',\n 'INTR_15_intr/s': '0.00',\n 'INTR_16_intr/s': '0.00',\n 'INTR_17_intr/s': '0.00',\n 'INTR_18_intr/s': '0.00',\n 'INTR_19_intr/s': '15.31',\n 'INTR_20_intr/s': '0.00',\n 'INTR_21_intr/s': '0.00',\n 'INTR_22_intr/s': '0.00',\n 'INTR_23_intr/s': '0.00',\n 'INTR_24_intr/s': '0.00',\n 'INTR_25_intr/s': '0.00',\n 'INTR_26_intr/s': '0.00',\n 'INTR_27_intr/s': '0.00',\n 'INTR_28_intr/s': '0.00',\n 'INTR_29_intr/s': '0.00',\n 'INTR_30_intr/s': '0.00',\n 'INTR_31_intr/s': '0.00',\n 'INTR_32_intr/s': '0.00',\n 'INTR_33_intr/s': '0.00',\n 'INTR_34_intr/s': '0.00',\n 'INTR_35_intr/s': '0.00',\n 'INTR_36_intr/s': '0.00',\n 'INTR_37_intr/s': '0.00',\n 'INTR_38_intr/s': '0.00',\n 'INTR_39_intr/s': '0.00',\n 'INTR_40_intr/s': '0.00',\n 'INTR_41_intr/s': '0.00',\n 'INTR_42_intr/s': '0.00',\n 'INTR_43_intr/s': '0.00',\n 'INTR_44_intr/s': '0.00',\n 'INTR_45_intr/s': '0.00',\n 'INTR_46_intr/s': '0.00',\n 'INTR_47_intr/s': '0.00',\n 'INTR_48_intr/s': '0.00',\n 'INTR_49_intr/s': '0.00',\n 'INTR_50_intr/s': '0.00',\n 'INTR_51_intr/s': '0.00',\n 'INTR_52_intr/s': '0.00',\n 'INTR_53_intr/s': '0.00',\n 'INTR_54_intr/s': '0.00',\n 'INTR_55_intr/s': '0.00',\n 'INTR_56_intr/s': '0.00',\n 'INTR_57_intr/s': '0.00',\n 'INTR_58_intr/s': '0.00',\n 'INTR_59_intr/s': '0.00',\n 'INTR_60_intr/s': '0.00',\n 'INTR_61_intr/s': '0.00',\n 'INTR_62_intr/s': '0.00',\n 'INTR_63_intr/s': '0.00',\n 'INTR_64_intr/s': '0.00',\n 'INTR_65_intr/s': '0.00',\n 'INTR_66_intr/s': '0.00',\n 'INTR_67_intr/s': '0.00',\n 'INTR_68_intr/s': '0.00',\n 'INTR_69_intr/s': '0.00',\n 'INTR_70_intr/s': '0.00',\n 'INTR_71_intr/s': '0.00',\n 'INTR_72_intr/s': '0.00',\n 'INTR_73_intr/s': '0.00',\n 'INTR_74_intr/s': '0.00',\n 'INTR_75_intr/s': '0.00',\n 'INTR_76_intr/s': '0.00',\n 'INTR_77_intr/s': '0.00',\n 'INTR_78_intr/s': '0.00',\n 'INTR_79_intr/s': '0.00',\n 'INTR_80_intr/s': '0.00',\n 'INTR_81_intr/s': '0.00',\n 'INTR_82_intr/s': '0.00',\n 'INTR_83_intr/s': '0.00',\n 'INTR_84_intr/s': '0.00',\n 'INTR_85_intr/s': '0.00',\n 'INTR_86_intr/s': '0.00',\n 'INTR_87_intr/s': '0.00',\n 'INTR_88_intr/s': '0.00',\n 'INTR_89_intr/s': '0.00',\n 'INTR_90_intr/s': '0.00',\n 'INTR_91_intr/s': '0.00',\n 'INTR_92_intr/s': '0.00',\n 'INTR_93_intr/s': '0.00',\n 'INTR_94_intr/s': '0.00',\n 'INTR_95_intr/s': '0.00',\n 'INTR_96_intr/s': '0.00',\n 'INTR_97_intr/s': '0.00',\n 'INTR_98_intr/s': '0.00',\n 'INTR_99_intr/s': '0.00',\n 'INTR_100_intr/s': '0.00',\n 'INTR_101_intr/s': '0.00',\n 'INTR_102_intr/s': '0.00',\n 'INTR_103_intr/s': '0.00',\n 'INTR_104_intr/s': '0.00',\n 'INTR_105_intr/s': '0.00',\n 'INTR_106_intr/s': '0.00',\n 'INTR_107_intr/s': '0.00',\n 'INTR_108_intr/s': '0.00',\n 'INTR_109_intr/s': '0.00',\n 'INTR_110_intr/s': '0.00',\n 'INTR_111_intr/s': '0.00',\n 'INTR_112_intr/s': '0.00',\n 'INTR_113_intr/s': '0.00',\n 'INTR_114_intr/s': '0.00',\n 'INTR_115_intr/s': '0.00',\n 'INTR_116_intr/s': '0.00',\n 'INTR_117_intr/s': '0.00',\n 'INTR_118_intr/s': '0.00',\n 'INTR_119_intr/s': '0.00',\n 'INTR_120_intr/s': '0.00',\n 'INTR_121_intr/s': '0.00',\n 'INTR_122_intr/s': '0.00',\n 'INTR_123_intr/s': '0.00',\n 'INTR_124_intr/s': '0.00',\n 'INTR_125_intr/s': '0.00',\n 'INTR_126_intr/s': '0.00',\n 'INTR_127_intr/s': '0.00',\n 'INTR_128_intr/s': '0.00',\n 'INTR_129_intr/s': '0.00',\n 'INTR_130_intr/s': '0.00',\n 'INTR_131_intr/s': '0.00',\n 'INTR_132_intr/s': '0.00',\n 'INTR_133_intr/s': '0.00',\n 'INTR_134_intr/s': '0.00',\n 'INTR_135_intr/s': '0.00',\n 'INTR_136_intr/s': '0.00',\n 'INTR_137_intr/s': '0.00',\n 'INTR_138_intr/s': '0.00',\n 'INTR_139_intr/s': '0.00',\n 'INTR_140_intr/s': '0.00',\n 'INTR_141_intr/s': '0.00',\n 'INTR_142_intr/s': '0.00',\n 'INTR_143_intr/s': '0.00',\n 'INTR_144_intr/s': '0.00',\n 'INTR_145_intr/s': '0.00',\n 'INTR_146_intr/s': '0.00',\n 'INTR_147_intr/s': '0.00',\n 'INTR_148_intr/s': '0.00',\n 'INTR_149_intr/s': '0.00',\n 'INTR_150_intr/s': '0.00',\n 'INTR_151_intr/s': '0.00',\n 'INTR_152_intr/s': '0.00',\n 'INTR_153_intr/s': '0.00',\n 'INTR_154_intr/s': '0.00',\n 'INTR_155_intr/s': '0.00',\n 'INTR_156_intr/s': '0.00',\n 'INTR_157_intr/s': '0.00',\n 'INTR_158_intr/s': '0.00',\n 'INTR_159_intr/s': '0.00',\n 'INTR_160_intr/s': '0.00',\n 'INTR_161_intr/s': '0.00',\n 'INTR_162_intr/s': '0.00',\n 'INTR_163_intr/s': '0.00',\n 'INTR_164_intr/s': '0.00',\n 'INTR_165_intr/s': '0.00',\n 'INTR_166_intr/s': '0.00',\n 'INTR_167_intr/s': '0.00',\n 'INTR_168_intr/s': '0.00',\n 'INTR_169_intr/s': '0.00',\n 'INTR_170_intr/s': '0.00',\n 'INTR_171_intr/s': '0.00',\n 'INTR_172_intr/s': '0.00',\n 'INTR_173_intr/s': '0.00',\n 'INTR_174_intr/s': '0.00',\n 'INTR_175_intr/s': '0.00',\n 'INTR_176_intr/s': '0.00',\n 'INTR_177_intr/s': '0.00',\n 'INTR_178_intr/s': '0.00',\n 'INTR_179_intr/s': '0.00',\n 'INTR_180_intr/s': '0.00',\n 'INTR_181_intr/s': '0.00',\n 'INTR_182_intr/s': '0.00',\n 'INTR_183_intr/s': '0.00',\n 'INTR_184_intr/s': '0.00',\n 'INTR_185_intr/s': '0.00',\n 'INTR_186_intr/s': '0.00',\n 'INTR_187_intr/s': '0.00',\n 'INTR_188_intr/s': '0.00',\n 'INTR_189_intr/s': '0.00',\n 'INTR_190_intr/s': '0.00',\n 'INTR_191_intr/s': '0.00',\n 'INTR_192_intr/s': '0.00',\n 'INTR_193_intr/s': '0.00',\n 'INTR_194_intr/s': '0.00',\n 'INTR_195_intr/s': '0.00',\n 'INTR_196_intr/s': '0.00',\n 'INTR_197_intr/s': '0.00',\n 'INTR_198_intr/s': '0.00',\n 'INTR_199_intr/s': '0.00',\n 'INTR_200_intr/s': '0.00',\n 'INTR_201_intr/s': '0.00',\n 'INTR_202_intr/s': '0.00',\n 'INTR_203_intr/s': '0.00',\n 'INTR_204_intr/s': '0.00',\n 'INTR_205_intr/s': '0.00',\n 'INTR_206_intr/s': '0.00',\n 'INTR_207_intr/s': '0.00',\n 'INTR_208_intr/s': '0.00',\n 'INTR_209_intr/s': '0.00',\n 'INTR_210_intr/s': '0.00',\n 'INTR_211_intr/s': '0.00',\n 'INTR_212_intr/s': '0.00',\n 'INTR_213_intr/s': '0.00',\n 'INTR_214_intr/s': '0.00',\n 'INTR_215_intr/s': '0.00',\n 'INTR_216_intr/s': '0.00',\n 'INTR_217_intr/s': '0.00',\n 'INTR_218_intr/s': '0.00',\n 'INTR_219_intr/s': '0.00',\n 'INTR_220_intr/s': '0.00',\n 'INTR_221_intr/s': '0.00',\n 'INTR_222_intr/s': '0.00',\n 'INTR_223_intr/s': '0.00',\n 'INTR_224_intr/s': '0.00',\n 'INTR_225_intr/s': '0.00',\n 'INTR_226_intr/s': '0.00',\n 'INTR_227_intr/s': '0.00',\n 'INTR_228_intr/s': '0.00',\n 'INTR_229_intr/s': '0.00',\n 'INTR_230_intr/s': '0.00',\n 'INTR_231_intr/s': '0.00',\n 'INTR_232_intr/s': '0.00',\n 'INTR_233_intr/s': '0.00',\n 'INTR_234_intr/s': '0.00',\n 'INTR_235_intr/s': '0.00',\n 'INTR_236_intr/s': '0.00',\n 'INTR_237_intr/s': '0.00',\n 'INTR_238_intr/s': '0.00',\n 'INTR_239_intr/s': '0.00',\n 'INTR_240_intr/s': '0.00',\n 'INTR_241_intr/s': '0.00',\n 'INTR_242_intr/s': '0.00',\n 'INTR_243_intr/s': '0.00',\n 'INTR_244_intr/s': '0.00',\n 'INTR_245_intr/s': '0.00',\n 'INTR_246_intr/s': '0.00',\n 'INTR_247_intr/s': '0.00',\n 'INTR_248_intr/s': '0.00',\n 'INTR_249_intr/s': '0.00',\n 'INTR_250_intr/s': '0.00',\n 'INTR_251_intr/s': '0.00',\n 'INTR_252_intr/s': '0.00',\n 'INTR_253_intr/s': '0.00',\n 'INTR_254_intr/s': '0.00',\n 'INTR_255_intr/s': '0.00',\n 'pswpin/s': '0.00',\n 'pswpout/s': '0.00',\n 'pgpgin/s': '0.00',\n 'pgpgout/s': '0.00',\n 'fault/s': '460.20',\n 'majflt/s': '0.00',\n 'pgfree/s': '114.29',\n 'pgscank/s': '0.00',\n 'pgscand/s': '0.00',\n 'pgsteal/s': '0.00',\n '%vmeff': '0.00',\n tps: '0.00',\n rtps: '0.00',\n wtps: '0.00',\n 'bread/s': '0.00',\n 'bwrtn/s': '0.00',\n 'frmpg/s': '-347.96',\n 'bufpg/s': '0.00',\n 'campg/s': '0.00',\n kbmemfree: '219080',\n kbmemused: '1728044',\n '%memused': '88.75',\n kbbuffers: '21708',\n kbcached: '532184',\n kbcommit: '968884',\n '%commit': '21.36',\n kbswpfree: '2586916',\n kbswpused: '1748',\n '%swpused': '0.07',\n kbswpcad: '180',\n '%swpcad': '10.30',\n dentunusd: '5397',\n 'file-nr': '1792',\n 'inode-nr': '10402',\n 'pty-nr': '8',\n 'runq-sz': '0',\n 'plist-sz': '224',\n 'ldavg-1': '0.00',\n 'ldavg-5': '0.00',\n 'ldavg-15': '0.04',\n 'DEV_dev8-0_tps': '0.00',\n 'DEV_dev8-0_rd_sec/s': '0.00',\n 'DEV_dev8-0_wr_sec/s': '0.00',\n 'DEV_dev8-0_avgrq-sz': '0.00',\n 'DEV_dev8-0_avgqu-sz': '0.00',\n 'DEV_dev8-0_await': '0.00',\n 'DEV_dev8-0_svctm': '0.00',\n 'DEV_dev8-0_%util': '0.00',\n 'DEV_dev253-0_tps': '0.00',\n 'DEV_dev253-0_rd_sec/s': '0.00',\n 'DEV_dev253-0_wr_sec/s': '0.00',\n 'DEV_dev253-0_avgrq-sz': '0.00',\n 'DEV_dev253-0_avgqu-sz': '0.00',\n 'DEV_dev253-0_await': '0.00',\n 'DEV_dev253-0_svctm': '0.00',\n 'DEV_dev253-0_%util': '0.00',\n 'DEV_dev253-1_tps': '0.00',\n 'DEV_dev253-1_rd_sec/s': '0.00',\n 'DEV_dev253-1_wr_sec/s': '0.00',\n 'DEV_dev253-1_avgrq-sz': '0.00',\n 'DEV_dev253-1_avgqu-sz': '0.00',\n 'DEV_dev253-1_await': '0.00',\n 'DEV_dev253-1_svctm': '0.00',\n 'DEV_dev253-1_%util': '0.00',\n 'DEV_dev253-2_tps': '0.00',\n 'DEV_dev253-2_rd_sec/s': '0.00',\n 'DEV_dev253-2_wr_sec/s': '0.00',\n 'DEV_dev253-2_avgrq-sz': '0.00',\n 'DEV_dev253-2_avgqu-sz': '0.00',\n 'DEV_dev253-2_await': '0.00',\n 'DEV_dev253-2_svctm': '0.00',\n 'DEV_dev253-2_%util': '0.00',\n 'IFACE_lo_rxpck/s': '0.00',\n 'IFACE_lo_txpck/s': '0.00',\n 'IFACE_lo_rxkB/s': '0.00',\n 'IFACE_lo_txkB/s': '0.00',\n 'IFACE_lo_rxcmp/s': '0.00',\n 'IFACE_lo_txcmp/s': '0.00',\n 'IFACE_lo_rxmcst/s': '0.00',\n 'IFACE_eth0_rxpck/s': '11.22',\n 'IFACE_eth0_txpck/s': '14.29',\n 'IFACE_eth0_rxkB/s': '0.84',\n 'IFACE_eth0_txkB/s': '15.95',\n 'IFACE_eth0_rxcmp/s': '0.00',\n 'IFACE_eth0_txcmp/s': '0.00',\n 'IFACE_eth0_rxmcst/s': '0.00',\n 'IFACE_lo_rxerr/s': '0.00',\n 'IFACE_lo_txerr/s': '0.00',\n 'IFACE_lo_coll/s': '0.00',\n 'IFACE_lo_rxdrop/s': '0.00',\n 'IFACE_lo_txdrop/s': '0.00',\n 'IFACE_lo_txcarr/s': '0.00',\n 'IFACE_lo_rxfram/s': '0.00',\n 'IFACE_lo_rxfifo/s': '0.00',\n 'IFACE_lo_txfifo/s': '0.00',\n 'IFACE_eth0_rxerr/s': '0.00',\n 'IFACE_eth0_txerr/s': '0.00',\n 'IFACE_eth0_coll/s': '0.00',\n 'IFACE_eth0_rxdrop/s': '0.00',\n 'IFACE_eth0_txdrop/s': '0.00',\n 'IFACE_eth0_txcarr/s': '0.00',\n 'IFACE_eth0_rxfram/s': '0.00',\n 'IFACE_eth0_rxfifo/s': '0.00',\n 'IFACE_eth0_txfifo/s': '0.00',\n 'call/s': '0.00',\n 'retrans/s': '0.00',\n 'read/s': '0.00',\n 'write/s': '0.00',\n 'access/s': '0.00',\n 'getatt/s': '0.00',\n 'scall/s': '0.00',\n 'badcall/s': '0.00',\n 'packet/s': '0.00',\n 'udp/s': '0.00',\n 'tcp/s': '0.00',\n 'hit/s': '0.00',\n 'miss/s': '0.00',\n 'sread/s': '0.00',\n 'swrite/s': '0.00',\n 'saccess/s': '0.00',\n 'sgetatt/s': '0.00',\n totsck: '113',\n tcpsck: '11',\n udpsck: '7',\n rawsck: '0',\n 'ip-frag': '0',\n 'tcp-tw': '0',\n 'irec/s': '11.22',\n 'fwddgm/s': '0.00',\n 'idel/s': '11.22',\n 'orq/s': '12.24',\n 'asmrq/s': '0.00',\n 'asmok/s': '0.00',\n 'fragok/s': '0.00',\n 'fragcrt/s': '0.00',\n 'ihdrerr/s': '0.00',\n 'iadrerr/s': '0.00',\n 'iukwnpr/s': '0.00',\n 'idisc/s': '0.00',\n 'odisc/s': '0.00',\n 'onort/s': '0.00',\n 'asmf/s': '0.00',\n 'fragf/s': '0.00',\n 'imsg/s': '0.00',\n 'omsg/s': '0.00',\n 'iech/s': '0.00',\n 'iechr/s': '0.00',\n 'oech/s': '0.00',\n 'oechr/s': '0.00',\n 'itm/s': '0.00',\n 'itmr/s': '0.00',\n 'otm/s': '0.00',\n 'otmr/s': '0.00',\n 'iadrmk/s': '0.00',\n 'iadrmkr/s': '0.00',\n 'oadrmk/s': '0.00',\n 'oadrmkr/s': '0.00',\n 'ierr/s': '0.00',\n 'oerr/s': '0.00',\n 'idstunr/s': '0.00',\n 'odstunr/s': '0.00',\n 'itmex/s': '0.00',\n 'otmex/s': '0.00',\n 'iparmpb/s': '0.00',\n 'oparmpb/s': '0.00',\n 'isrcq/s': '0.00',\n 'osrcq/s': '0.00',\n 'iredir/s': '0.00',\n 'oredir/s': '0.00',\n 'active/s': '0.00',\n 'passive/s': '0.00',\n 'iseg/s': '11.22',\n 'oseg/s': '12.24',\n 'atmptf/s': '0.00',\n 'estres/s': '0.00',\n 'isegerr/s': '0.00',\n 'orsts/s': '0.00',\n 'idgm/s': '0.00',\n 'odgm/s': '0.00',\n 'noport/s': '0.00',\n 'idgmerr/s': '0.00',\n tcp6sck: '20',\n udp6sck: '4',\n raw6sck: '0',\n 'ip6-frag': '0',\n 'irec6/s': '0.00',\n 'fwddgm6/s': '0.00',\n 'idel6/s': '0.00',\n 'orq6/s': '0.00',\n 'asmrq6/s': '0.00',\n 'asmok6/s': '0.00',\n 'imcpck6/s': '0.00',\n 'omcpck6/s': '0.00',\n 'fragok6/s': '0.00',\n 'fragcr6/s': '0.00',\n 'ihdrer6/s': '0.00',\n 'iadrer6/s': '0.00',\n 'iukwnp6/s': '0.00',\n 'i2big6/s': '0.00',\n 'idisc6/s': '0.00',\n 'odisc6/s': '0.00',\n 'inort6/s': '0.00',\n 'onort6/s': '0.00',\n 'asmf6/s': '0.00',\n 'fragf6/s': '0.00',\n 'itrpck6/s': '0.00',\n 'imsg6/s': '0.00',\n 'omsg6/s': '0.00',\n 'iech6/s': '0.00',\n 'iechr6/s': '0.00',\n 'oechr6/s': '0.00',\n 'igmbq6/s': '0.00',\n 'igmbr6/s': '0.00',\n 'ogmbr6/s': '0.00',\n 'igmbrd6/s': '0.00',\n 'ogmbrd6/s': '0.00',\n 'irtsol6/s': '0.00',\n 'ortsol6/s': '0.00',\n 'irtad6/s': '0.00',\n 'inbsol6/s': '0.00',\n 'onbsol6/s': '0.00',\n 'inbad6/s': '0.00',\n 'onbad6/s': '0.00',\n 'ierr6/s': '0.00',\n 'idtunr6/s': '0.00',\n 'odtunr6/s': '0.00',\n 'itmex6/s': '0.00',\n 'otmex6/s': '0.00',\n 'iprmpb6/s': '0.00',\n 'oprmpb6/s': '0.00',\n 'iredir6/s': '0.00',\n 'oredir6/s': '0.00',\n 'ipck2b6/s': '0.00',\n 'opck2b6/s': '0.00',\n 'idgm6/s': '0.00',\n 'odgm6/s': '0.00',\n 'noport6/s': '0.00',\n 'idgmer6/s': '0.00',\n CPU_all_MHz: '2364.36',\n CPU_0_MHz: '2364.36',\n CPU_1_MHz: '2364.36',\n CPU_2_MHz: '2364.36',\n CPU_3_MHz: '2364.36' }\n","_id":"sysstat@0.2.0","dist":{"shasum":"063a755dcbcca8c5dbff5056f950959ed25f0566","tarball":"http://registry.npmjs.org/sysstat/-/sysstat-0.2.0.tgz"},"maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"},{"name":"filirom1","email":"filirom1@gmail.com"}]}},"readme":"# node-sysstat\n\nParse sar output into a JavaScript object.\n\n## Usage\n\n var sar = require('sysstat');\n\n sar(['-A', '1']).on('stats', function(o){\n console.log(o);\n });\n\n## Output\n\n { date: '18:45:33',\n 'CPU_all_%usr': '0.97',\n 'CPU_all_%nice': '0.00',\n 'CPU_all_%sys': '0.97',\n 'CPU_all_%iowait': '0.00',\n 'CPU_all_%steal': '0.00',\n 'CPU_all_%irq': '0.00',\n 'CPU_all_%soft': '0.00',\n 'CPU_all_%guest': '0.00',\n 'CPU_all_%idle': '98.06',\n 'CPU_0_%usr': '0.00',\n 'CPU_0_%nice': '0.00',\n 'CPU_0_%sys': '1.02',\n 'CPU_0_%iowait': '0.00',\n 'CPU_0_%steal': '0.00',\n 'CPU_0_%irq': '0.00',\n 'CPU_0_%soft': '0.00',\n 'CPU_0_%guest': '0.00',\n 'CPU_0_%idle': '98.98',\n 'CPU_1_%usr': '0.00',\n 'CPU_1_%nice': '0.00',\n 'CPU_1_%sys': '1.98',\n 'CPU_1_%iowait': '0.00',\n 'CPU_1_%steal': '0.00',\n 'CPU_1_%irq': '0.00',\n 'CPU_1_%soft': '0.00',\n 'CPU_1_%guest': '0.00',\n 'CPU_1_%idle': '98.02',\n 'CPU_2_%usr': '2.63',\n 'CPU_2_%nice': '0.00',\n 'CPU_2_%sys': '0.88',\n 'CPU_2_%iowait': '0.00',\n 'CPU_2_%steal': '0.00',\n 'CPU_2_%irq': '0.00',\n 'CPU_2_%soft': '0.00',\n 'CPU_2_%guest': '0.00',\n 'CPU_2_%idle': '96.49',\n 'CPU_3_%usr': '0.00',\n 'CPU_3_%nice': '0.00',\n 'CPU_3_%sys': '1.00',\n 'CPU_3_%iowait': '0.00',\n 'CPU_3_%steal': '0.00',\n 'CPU_3_%irq': '0.00',\n 'CPU_3_%soft': '0.00',\n 'CPU_3_%guest': '0.00',\n 'CPU_3_%idle': '99.00',\n 'proc/s': '0.00',\n 'cswch/s': '690.82',\n 'INTR_sum_intr/s': '431.63',\n 'INTR_0_intr/s': '0.00',\n 'INTR_1_intr/s': '0.00',\n 'INTR_2_intr/s': '0.00',\n 'INTR_3_intr/s': '0.00',\n 'INTR_4_intr/s': '0.00',\n 'INTR_5_intr/s': '0.00',\n 'INTR_6_intr/s': '0.00',\n 'INTR_7_intr/s': '0.00',\n 'INTR_8_intr/s': '0.00',\n 'INTR_9_intr/s': '0.00',\n 'INTR_10_intr/s': '0.00',\n 'INTR_11_intr/s': '0.00',\n 'INTR_12_intr/s': '0.00',\n 'INTR_13_intr/s': '0.00',\n 'INTR_14_intr/s': '0.00',\n 'INTR_15_intr/s': '0.00',\n 'INTR_16_intr/s': '0.00',\n 'INTR_17_intr/s': '0.00',\n 'INTR_18_intr/s': '0.00',\n 'INTR_19_intr/s': '15.31',\n 'INTR_20_intr/s': '0.00',\n 'INTR_21_intr/s': '0.00',\n 'INTR_22_intr/s': '0.00',\n 'INTR_23_intr/s': '0.00',\n 'INTR_24_intr/s': '0.00',\n 'INTR_25_intr/s': '0.00',\n 'INTR_26_intr/s': '0.00',\n 'INTR_27_intr/s': '0.00',\n 'INTR_28_intr/s': '0.00',\n 'INTR_29_intr/s': '0.00',\n 'INTR_30_intr/s': '0.00',\n 'INTR_31_intr/s': '0.00',\n 'INTR_32_intr/s': '0.00',\n 'INTR_33_intr/s': '0.00',\n 'INTR_34_intr/s': '0.00',\n 'INTR_35_intr/s': '0.00',\n 'INTR_36_intr/s': '0.00',\n 'INTR_37_intr/s': '0.00',\n 'INTR_38_intr/s': '0.00',\n 'INTR_39_intr/s': '0.00',\n 'INTR_40_intr/s': '0.00',\n 'INTR_41_intr/s': '0.00',\n 'INTR_42_intr/s': '0.00',\n 'INTR_43_intr/s': '0.00',\n 'INTR_44_intr/s': '0.00',\n 'INTR_45_intr/s': '0.00',\n 'INTR_46_intr/s': '0.00',\n 'INTR_47_intr/s': '0.00',\n 'INTR_48_intr/s': '0.00',\n 'INTR_49_intr/s': '0.00',\n 'INTR_50_intr/s': '0.00',\n 'INTR_51_intr/s': '0.00',\n 'INTR_52_intr/s': '0.00',\n 'INTR_53_intr/s': '0.00',\n 'INTR_54_intr/s': '0.00',\n 'INTR_55_intr/s': '0.00',\n 'INTR_56_intr/s': '0.00',\n 'INTR_57_intr/s': '0.00',\n 'INTR_58_intr/s': '0.00',\n 'INTR_59_intr/s': '0.00',\n 'INTR_60_intr/s': '0.00',\n 'INTR_61_intr/s': '0.00',\n 'INTR_62_intr/s': '0.00',\n 'INTR_63_intr/s': '0.00',\n 'INTR_64_intr/s': '0.00',\n 'INTR_65_intr/s': '0.00',\n 'INTR_66_intr/s': '0.00',\n 'INTR_67_intr/s': '0.00',\n 'INTR_68_intr/s': '0.00',\n 'INTR_69_intr/s': '0.00',\n 'INTR_70_intr/s': '0.00',\n 'INTR_71_intr/s': '0.00',\n 'INTR_72_intr/s': '0.00',\n 'INTR_73_intr/s': '0.00',\n 'INTR_74_intr/s': '0.00',\n 'INTR_75_intr/s': '0.00',\n 'INTR_76_intr/s': '0.00',\n 'INTR_77_intr/s': '0.00',\n 'INTR_78_intr/s': '0.00',\n 'INTR_79_intr/s': '0.00',\n 'INTR_80_intr/s': '0.00',\n 'INTR_81_intr/s': '0.00',\n 'INTR_82_intr/s': '0.00',\n 'INTR_83_intr/s': '0.00',\n 'INTR_84_intr/s': '0.00',\n 'INTR_85_intr/s': '0.00',\n 'INTR_86_intr/s': '0.00',\n 'INTR_87_intr/s': '0.00',\n 'INTR_88_intr/s': '0.00',\n 'INTR_89_intr/s': '0.00',\n 'INTR_90_intr/s': '0.00',\n 'INTR_91_intr/s': '0.00',\n 'INTR_92_intr/s': '0.00',\n 'INTR_93_intr/s': '0.00',\n 'INTR_94_intr/s': '0.00',\n 'INTR_95_intr/s': '0.00',\n 'INTR_96_intr/s': '0.00',\n 'INTR_97_intr/s': '0.00',\n 'INTR_98_intr/s': '0.00',\n 'INTR_99_intr/s': '0.00',\n 'INTR_100_intr/s': '0.00',\n 'INTR_101_intr/s': '0.00',\n 'INTR_102_intr/s': '0.00',\n 'INTR_103_intr/s': '0.00',\n 'INTR_104_intr/s': '0.00',\n 'INTR_105_intr/s': '0.00',\n 'INTR_106_intr/s': '0.00',\n 'INTR_107_intr/s': '0.00',\n 'INTR_108_intr/s': '0.00',\n 'INTR_109_intr/s': '0.00',\n 'INTR_110_intr/s': '0.00',\n 'INTR_111_intr/s': '0.00',\n 'INTR_112_intr/s': '0.00',\n 'INTR_113_intr/s': '0.00',\n 'INTR_114_intr/s': '0.00',\n 'INTR_115_intr/s': '0.00',\n 'INTR_116_intr/s': '0.00',\n 'INTR_117_intr/s': '0.00',\n 'INTR_118_intr/s': '0.00',\n 'INTR_119_intr/s': '0.00',\n 'INTR_120_intr/s': '0.00',\n 'INTR_121_intr/s': '0.00',\n 'INTR_122_intr/s': '0.00',\n 'INTR_123_intr/s': '0.00',\n 'INTR_124_intr/s': '0.00',\n 'INTR_125_intr/s': '0.00',\n 'INTR_126_intr/s': '0.00',\n 'INTR_127_intr/s': '0.00',\n 'INTR_128_intr/s': '0.00',\n 'INTR_129_intr/s': '0.00',\n 'INTR_130_intr/s': '0.00',\n 'INTR_131_intr/s': '0.00',\n 'INTR_132_intr/s': '0.00',\n 'INTR_133_intr/s': '0.00',\n 'INTR_134_intr/s': '0.00',\n 'INTR_135_intr/s': '0.00',\n 'INTR_136_intr/s': '0.00',\n 'INTR_137_intr/s': '0.00',\n 'INTR_138_intr/s': '0.00',\n 'INTR_139_intr/s': '0.00',\n 'INTR_140_intr/s': '0.00',\n 'INTR_141_intr/s': '0.00',\n 'INTR_142_intr/s': '0.00',\n 'INTR_143_intr/s': '0.00',\n 'INTR_144_intr/s': '0.00',\n 'INTR_145_intr/s': '0.00',\n 'INTR_146_intr/s': '0.00',\n 'INTR_147_intr/s': '0.00',\n 'INTR_148_intr/s': '0.00',\n 'INTR_149_intr/s': '0.00',\n 'INTR_150_intr/s': '0.00',\n 'INTR_151_intr/s': '0.00',\n 'INTR_152_intr/s': '0.00',\n 'INTR_153_intr/s': '0.00',\n 'INTR_154_intr/s': '0.00',\n 'INTR_155_intr/s': '0.00',\n 'INTR_156_intr/s': '0.00',\n 'INTR_157_intr/s': '0.00',\n 'INTR_158_intr/s': '0.00',\n 'INTR_159_intr/s': '0.00',\n 'INTR_160_intr/s': '0.00',\n 'INTR_161_intr/s': '0.00',\n 'INTR_162_intr/s': '0.00',\n 'INTR_163_intr/s': '0.00',\n 'INTR_164_intr/s': '0.00',\n 'INTR_165_intr/s': '0.00',\n 'INTR_166_intr/s': '0.00',\n 'INTR_167_intr/s': '0.00',\n 'INTR_168_intr/s': '0.00',\n 'INTR_169_intr/s': '0.00',\n 'INTR_170_intr/s': '0.00',\n 'INTR_171_intr/s': '0.00',\n 'INTR_172_intr/s': '0.00',\n 'INTR_173_intr/s': '0.00',\n 'INTR_174_intr/s': '0.00',\n 'INTR_175_intr/s': '0.00',\n 'INTR_176_intr/s': '0.00',\n 'INTR_177_intr/s': '0.00',\n 'INTR_178_intr/s': '0.00',\n 'INTR_179_intr/s': '0.00',\n 'INTR_180_intr/s': '0.00',\n 'INTR_181_intr/s': '0.00',\n 'INTR_182_intr/s': '0.00',\n 'INTR_183_intr/s': '0.00',\n 'INTR_184_intr/s': '0.00',\n 'INTR_185_intr/s': '0.00',\n 'INTR_186_intr/s': '0.00',\n 'INTR_187_intr/s': '0.00',\n 'INTR_188_intr/s': '0.00',\n 'INTR_189_intr/s': '0.00',\n 'INTR_190_intr/s': '0.00',\n 'INTR_191_intr/s': '0.00',\n 'INTR_192_intr/s': '0.00',\n 'INTR_193_intr/s': '0.00',\n 'INTR_194_intr/s': '0.00',\n 'INTR_195_intr/s': '0.00',\n 'INTR_196_intr/s': '0.00',\n 'INTR_197_intr/s': '0.00',\n 'INTR_198_intr/s': '0.00',\n 'INTR_199_intr/s': '0.00',\n 'INTR_200_intr/s': '0.00',\n 'INTR_201_intr/s': '0.00',\n 'INTR_202_intr/s': '0.00',\n 'INTR_203_intr/s': '0.00',\n 'INTR_204_intr/s': '0.00',\n 'INTR_205_intr/s': '0.00',\n 'INTR_206_intr/s': '0.00',\n 'INTR_207_intr/s': '0.00',\n 'INTR_208_intr/s': '0.00',\n 'INTR_209_intr/s': '0.00',\n 'INTR_210_intr/s': '0.00',\n 'INTR_211_intr/s': '0.00',\n 'INTR_212_intr/s': '0.00',\n 'INTR_213_intr/s': '0.00',\n 'INTR_214_intr/s': '0.00',\n 'INTR_215_intr/s': '0.00',\n 'INTR_216_intr/s': '0.00',\n 'INTR_217_intr/s': '0.00',\n 'INTR_218_intr/s': '0.00',\n 'INTR_219_intr/s': '0.00',\n 'INTR_220_intr/s': '0.00',\n 'INTR_221_intr/s': '0.00',\n 'INTR_222_intr/s': '0.00',\n 'INTR_223_intr/s': '0.00',\n 'INTR_224_intr/s': '0.00',\n 'INTR_225_intr/s': '0.00',\n 'INTR_226_intr/s': '0.00',\n 'INTR_227_intr/s': '0.00',\n 'INTR_228_intr/s': '0.00',\n 'INTR_229_intr/s': '0.00',\n 'INTR_230_intr/s': '0.00',\n 'INTR_231_intr/s': '0.00',\n 'INTR_232_intr/s': '0.00',\n 'INTR_233_intr/s': '0.00',\n 'INTR_234_intr/s': '0.00',\n 'INTR_235_intr/s': '0.00',\n 'INTR_236_intr/s': '0.00',\n 'INTR_237_intr/s': '0.00',\n 'INTR_238_intr/s': '0.00',\n 'INTR_239_intr/s': '0.00',\n 'INTR_240_intr/s': '0.00',\n 'INTR_241_intr/s': '0.00',\n 'INTR_242_intr/s': '0.00',\n 'INTR_243_intr/s': '0.00',\n 'INTR_244_intr/s': '0.00',\n 'INTR_245_intr/s': '0.00',\n 'INTR_246_intr/s': '0.00',\n 'INTR_247_intr/s': '0.00',\n 'INTR_248_intr/s': '0.00',\n 'INTR_249_intr/s': '0.00',\n 'INTR_250_intr/s': '0.00',\n 'INTR_251_intr/s': '0.00',\n 'INTR_252_intr/s': '0.00',\n 'INTR_253_intr/s': '0.00',\n 'INTR_254_intr/s': '0.00',\n 'INTR_255_intr/s': '0.00',\n 'pswpin/s': '0.00',\n 'pswpout/s': '0.00',\n 'pgpgin/s': '0.00',\n 'pgpgout/s': '0.00',\n 'fault/s': '460.20',\n 'majflt/s': '0.00',\n 'pgfree/s': '114.29',\n 'pgscank/s': '0.00',\n 'pgscand/s': '0.00',\n 'pgsteal/s': '0.00',\n '%vmeff': '0.00',\n tps: '0.00',\n rtps: '0.00',\n wtps: '0.00',\n 'bread/s': '0.00',\n 'bwrtn/s': '0.00',\n 'frmpg/s': '-347.96',\n 'bufpg/s': '0.00',\n 'campg/s': '0.00',\n kbmemfree: '219080',\n kbmemused: '1728044',\n '%memused': '88.75',\n kbbuffers: '21708',\n kbcached: '532184',\n kbcommit: '968884',\n '%commit': '21.36',\n kbswpfree: '2586916',\n kbswpused: '1748',\n '%swpused': '0.07',\n kbswpcad: '180',\n '%swpcad': '10.30',\n dentunusd: '5397',\n 'file-nr': '1792',\n 'inode-nr': '10402',\n 'pty-nr': '8',\n 'runq-sz': '0',\n 'plist-sz': '224',\n 'ldavg-1': '0.00',\n 'ldavg-5': '0.00',\n 'ldavg-15': '0.04',\n 'DEV_dev8-0_tps': '0.00',\n 'DEV_dev8-0_rd_sec/s': '0.00',\n 'DEV_dev8-0_wr_sec/s': '0.00',\n 'DEV_dev8-0_avgrq-sz': '0.00',\n 'DEV_dev8-0_avgqu-sz': '0.00',\n 'DEV_dev8-0_await': '0.00',\n 'DEV_dev8-0_svctm': '0.00',\n 'DEV_dev8-0_%util': '0.00',\n 'DEV_dev253-0_tps': '0.00',\n 'DEV_dev253-0_rd_sec/s': '0.00',\n 'DEV_dev253-0_wr_sec/s': '0.00',\n 'DEV_dev253-0_avgrq-sz': '0.00',\n 'DEV_dev253-0_avgqu-sz': '0.00',\n 'DEV_dev253-0_await': '0.00',\n 'DEV_dev253-0_svctm': '0.00',\n 'DEV_dev253-0_%util': '0.00',\n 'DEV_dev253-1_tps': '0.00',\n 'DEV_dev253-1_rd_sec/s': '0.00',\n 'DEV_dev253-1_wr_sec/s': '0.00',\n 'DEV_dev253-1_avgrq-sz': '0.00',\n 'DEV_dev253-1_avgqu-sz': '0.00',\n 'DEV_dev253-1_await': '0.00',\n 'DEV_dev253-1_svctm': '0.00',\n 'DEV_dev253-1_%util': '0.00',\n 'DEV_dev253-2_tps': '0.00',\n 'DEV_dev253-2_rd_sec/s': '0.00',\n 'DEV_dev253-2_wr_sec/s': '0.00',\n 'DEV_dev253-2_avgrq-sz': '0.00',\n 'DEV_dev253-2_avgqu-sz': '0.00',\n 'DEV_dev253-2_await': '0.00',\n 'DEV_dev253-2_svctm': '0.00',\n 'DEV_dev253-2_%util': '0.00',\n 'IFACE_lo_rxpck/s': '0.00',\n 'IFACE_lo_txpck/s': '0.00',\n 'IFACE_lo_rxkB/s': '0.00',\n 'IFACE_lo_txkB/s': '0.00',\n 'IFACE_lo_rxcmp/s': '0.00',\n 'IFACE_lo_txcmp/s': '0.00',\n 'IFACE_lo_rxmcst/s': '0.00',\n 'IFACE_eth0_rxpck/s': '11.22',\n 'IFACE_eth0_txpck/s': '14.29',\n 'IFACE_eth0_rxkB/s': '0.84',\n 'IFACE_eth0_txkB/s': '15.95',\n 'IFACE_eth0_rxcmp/s': '0.00',\n 'IFACE_eth0_txcmp/s': '0.00',\n 'IFACE_eth0_rxmcst/s': '0.00',\n 'IFACE_lo_rxerr/s': '0.00',\n 'IFACE_lo_txerr/s': '0.00',\n 'IFACE_lo_coll/s': '0.00',\n 'IFACE_lo_rxdrop/s': '0.00',\n 'IFACE_lo_txdrop/s': '0.00',\n 'IFACE_lo_txcarr/s': '0.00',\n 'IFACE_lo_rxfram/s': '0.00',\n 'IFACE_lo_rxfifo/s': '0.00',\n 'IFACE_lo_txfifo/s': '0.00',\n 'IFACE_eth0_rxerr/s': '0.00',\n 'IFACE_eth0_txerr/s': '0.00',\n 'IFACE_eth0_coll/s': '0.00',\n 'IFACE_eth0_rxdrop/s': '0.00',\n 'IFACE_eth0_txdrop/s': '0.00',\n 'IFACE_eth0_txcarr/s': '0.00',\n 'IFACE_eth0_rxfram/s': '0.00',\n 'IFACE_eth0_rxfifo/s': '0.00',\n 'IFACE_eth0_txfifo/s': '0.00',\n 'call/s': '0.00',\n 'retrans/s': '0.00',\n 'read/s': '0.00',\n 'write/s': '0.00',\n 'access/s': '0.00',\n 'getatt/s': '0.00',\n 'scall/s': '0.00',\n 'badcall/s': '0.00',\n 'packet/s': '0.00',\n 'udp/s': '0.00',\n 'tcp/s': '0.00',\n 'hit/s': '0.00',\n 'miss/s': '0.00',\n 'sread/s': '0.00',\n 'swrite/s': '0.00',\n 'saccess/s': '0.00',\n 'sgetatt/s': '0.00',\n totsck: '113',\n tcpsck: '11',\n udpsck: '7',\n rawsck: '0',\n 'ip-frag': '0',\n 'tcp-tw': '0',\n 'irec/s': '11.22',\n 'fwddgm/s': '0.00',\n 'idel/s': '11.22',\n 'orq/s': '12.24',\n 'asmrq/s': '0.00',\n 'asmok/s': '0.00',\n 'fragok/s': '0.00',\n 'fragcrt/s': '0.00',\n 'ihdrerr/s': '0.00',\n 'iadrerr/s': '0.00',\n 'iukwnpr/s': '0.00',\n 'idisc/s': '0.00',\n 'odisc/s': '0.00',\n 'onort/s': '0.00øœM*ù',\n 'asmf/s': '0.00',\n 'fragf/s': '0.00',\n 'imsg/s': '0.00',\n 'omsg/s': '0.00',\n 'iech/s': '0.00',\n 'iechr/s': '0.00',\n 'oech/s': '0.00',\n 'oechr/s': '0.00',\n 'itm/s': '0.00',\n 'itmr/s': '0.00',\n 'otm/s': '0.00',\n 'otmr/s': '0.00',\n 'iadrmk/s': '0.00',\n 'iadrmkr/s': '0.00',\n 'oadrmk/s': '0.00',\n 'oadrmkr/s': '0.00',\n 'ierr/s': '0.00',\n 'oerr/s': '0.00',\n 'idstunr/s': '0.00',\n 'odstunr/s': '0.00',\n 'itmex/s': '0.00',\n 'otmex/s': '0.00',\n 'iparmpb/s': '0.00',\n 'oparmpb/s': '0.00',\n 'isrcq/s': '0.00',\n 'osrcq/s': '0.00',\n 'iredir/s': '0.00',\n 'oredir/s': '0.00',\n 'active/s': '0.00',\n 'passive/s': '0.00',\n 'iseg/s': '11.22',\n 'oseg/s': '12.24',\n 'atmptf/s': '0.00',\n 'estres/s': '0.00',\n 'isegerr/s': '0.00',\n 'orsts/s': '0.00',\n 'idgm/s': '0.00',\n 'odgm/s': '0.00',\n 'noport/s': '0.00',\n 'idgmerr/s': '0.00',\n tcp6sck: '20',\n udp6sck: '4',\n raw6sck: '0',\n 'ip6-frag': '0',\n 'irec6/s': '0.00',\n 'fwddgm6/s': '0.00',\n 'idel6/s': '0.00',\n 'orq6/s': '0.00',\n 'asmrq6/s': '0.00',\n 'asmok6/s': '0.00',\n 'imcpck6/s': '0.00',\n 'omcpck6/s': '0.00',\n 'fragok6/s': '0.00',\n 'fragcr6/s': '0.00',\n 'ihdrer6/s': '0.00',\n 'iadrer6/s': '0.00',\n 'iukwnp6/s': '0.00',\n 'i2big6/s': '0.00',\n 'idisc6/s': '0.00',\n 'odisc6/s': '0.00',\n 'inort6/s': '0.00',\n 'onort6/s': '0.00',\n 'asmf6/s': '0.00',\n 'fragf6/s': '0.00',\n 'itrpck6/s': '0.00',\n 'imsg6/s': '0.00',\n 'omsg6/s': '0.00',\n 'iech6/s': '0.00',\n 'iechr6/s': '0.00',\n 'oechr6/s': '0.00',\n 'igmbq6/s': '0.00',\n 'igmbr6/s': '0.00',\n 'ogmbr6/s': '0.00',\n 'igmbrd6/s': '0.00',\n 'ogmbrd6/s': '0.00',\n 'irtsol6/s': '0.00',\n 'ortsol6/s': '0.00',\n 'irtad6/s': '0.00',\n 'inbsol6/s': '0.00',\n 'onbsol6/s': '0.00',\n 'inbad6/s': '0.00',\n 'onbad6/s': '0.00',\n 'ierr6/s': '0.00',\n 'idtunr6/s': '0.00',\n 'odtunr6/s': '0.00',\n 'itmex6/s': '0.00',\n 'otmex6/s': '0.00',\n 'iprmpb6/s': '0.00',\n 'oprmpb6/s': '0.00',\n 'iredir6/s': '0.00',\n 'oredir6/s': '0.00',\n 'ipck2b6/s': '0.00',\n 'opck2b6/s': '0.00',\n 'idgm6/s': '0.00',\n 'odgm6/s': '0.00',\n 'noport6/s': '0.00',\n 'idgmer6/s': '0.00',\n CPU_all_MHz: '2364.36',\n CPU_0_MHz: '2364.36',\n CPU_1_MHz: '2364.36',\n CPU_2_MHz: '2364.36',\n CPU_3_MHz: '2364.36' }\n","maintainers":[{"name":"Filirom1","email":"filirom1@gmail.com"},{"name":"filirom1","email":"filirom1@gmail.com"}],"time":{"modified":"2012-07-01T18:27:07.128Z","created":"2012-06-22T16:50:29.013Z","0.1.0":"2012-06-22T16:50:29.730Z","0.2.0":"2012-07-01T18:27:07.128Z"},"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"_id":"sysstat","_rev":"1-99c3abe76ffdaf67287e9c01d270ff12"}ÿdocument-storeÿsyndicateœ{"id":"syndicate","rev":"1-6e8c2ff8ba18c778faa5211cd228c2f6","rev_tree":[{"pos":1,"ids":["6e8c2ff8ba18c778faa5211cd228c2f6",{"status":"available"},[]]}],"rev_map":{"1-6e8c2ff8ba18c778faa5211cd228c2f6":3773},"winningRev":"1-6e8c2ff8ba18c778faa5211cd228c2f6","deleted":false,"seq":3773}ÿby-sequenceÿ0000000000003773ä]{"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","dist-tags":{"latest":"0.10.7"},"versions":{"0.10.1":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.1","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"e7ebf08878c92a5960c2f233b7a1ba9b67c7f069","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.1.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.10.2":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.2","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"b7ee18df60b544ba2447ed7d0e1925b753252520","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.2.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.10.3":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.3","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.3","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"fcade8762c645467ce49093640a839fb8e729e28","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.3.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.10.4":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.4","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"9091051851aaa9495a839509e0eddf6202ed6ffd","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.4.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.10.5":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.5","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"4c9b41fc5bd8e8dbef3f427f0f4501de146862e1","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.5.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.10.6":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.6","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.10.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"70654f9284106a95fd00dd484ac9a701dd50ce7e","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.6.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.11.0":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.11.0","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","bufferjs":"1.x","navigator":"1.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"syndicate@0.11.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c4d660c5ec6ad515f3cb1dd84bb672aa1a7fe39c","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.11.0.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.11.1":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.11.1","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","bufferjs":"1.x","navigator":"1.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"kywe665","email":"kywe665@gmail.com"},"_id":"syndicate@0.11.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"dd8aa613d96ddc5fd2be95a900785bc5137185e2","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.11.1.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"kywe665","email":"kywe665@gmail.com"}]},"0.10.8":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.8","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","bufferjs":"1.x","navigator":"1.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_id":"syndicate@0.10.8","dist":{"shasum":"7e638f9a32e064ff6b016644797edfaeb89321de","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.8.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"kywe665","email":"kywe665@gmail.com"}]},"0.10.7":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"name":"syndicate","description":"A peer-ish pubsub-ish module for updates over http, tcp, and udp","version":"0.10.7","homepage":"http://github.com/coolaj86/node-syndicate","repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"main":"index","engines":{"node":">= 0.4.0"},"nativeDependencies":"path, events, fs, url","note":"the ahr deps are from ahr2 to FormData","dependencies":{"ahr2":"2.x","ahr.node":"2.2.x","ahr.utils":"2.1.x","bufferjs":"1.0.x","navigator":"1.0.x","location":"0.0.x","FileList":"0.10.x","File":"0.10.x","FormData":"0.10.x","node-uuid":"*","steve":"0.5.x"},"devDependencies":{},"_id":"syndicate@0.10.7","dist":{"shasum":"734c80bcf3d2a579744d42a5e1429aadbd4ae5c1","tarball":"http://registry.npmjs.org/syndicate/-/syndicate-0.10.7.tgz"},"readme":"","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"kywe665","email":"kywe665@gmail.com"}]}},"readme":null,"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"kywe665","email":"kywe665@gmail.com"}],"time":{"modified":"2012-06-26T00:04:14.052Z","created":"2011-12-17T20:01:29.511Z","0.10.1":"2011-12-17T20:01:30.575Z","0.10.2":"2011-12-21T20:12:50.913Z","0.10.3":"2011-12-24T01:24:00.439Z","0.10.4":"2012-02-10T18:11:21.891Z","0.10.5":"2012-02-16T00:20:18.805Z","0.10.6":"2012-02-29T23:01:53.402Z","0.11.0":"2012-05-19T00:20:05.751Z","0.11.1":"2012-06-07T17:59:46.202Z","0.10.8":"2012-06-22T16:53:06.819Z","0.10.7":"2012-06-26T00:04:14.051Z"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-syndicate.git"},"_id":"syndicate","_rev":"1-6e8c2ff8ba18c778faa5211cd228c2f6"}ÿdocument-storeÿsxdj_modulesŸ{"id":"sxdj_modules","rev":"1-5d8293606d9065acca0e713718a372bd","rev_tree":[{"pos":1,"ids":["5d8293606d9065acca0e713718a372bd",{"status":"available"},[]]}],"rev_map":{"1-5d8293606d9065acca0e713718a372bd":3772},"winningRev":"1-5d8293606d9065acca0e713718a372bd","deleted":false,"seq":3772}ÿby-sequenceÿ0000000000003772å{"name":"sxdj_modules","description":"项目公共库","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"author":{"name":"cwj","email":"cwj172@163.com"},"name":"sxdj_modules","description":"项目公共库","version":"1.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"cwj","email":"cwj172@163.com"},"_id":"sxdj_modules@1.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ff6e97744f1c25f39a37f9873964f718d4338dd8","tarball":"http://registry.npmjs.org/sxdj_modules/-/sxdj_modules-1.0.0.tgz"},"readme":"","maintainers":[{"name":"cwj","email":"cwj172@163.com"}]}},"readme":"","maintainers":[{"name":"cwj","email":"cwj172@163.com"}],"time":{"modified":"2012-06-13T01:49:48.378Z","created":"2012-06-13T01:49:43.480Z","1.0.0":"2012-06-13T01:49:48.378Z"},"author":{"name":"cwj","email":"cwj172@163.com"},"_id":"sxdj_modules","_rev":"1-5d8293606d9065acca0e713718a372bd"}ÿdocument-storeÿsuggestš{"id":"suggest","rev":"1-33d06a36ba0fd6418a36f876c6007098","rev_tree":[{"pos":1,"ids":["33d06a36ba0fd6418a36f876c6007098",{"status":"available"},[]]}],"rev_map":{"1-33d06a36ba0fd6418a36f876c6007098":3771},"winningRev":"1-33d06a36ba0fd6418a36f876c6007098","deleted":false,"seq":3771}ÿby-sequenceÿ0000000000003771Ó {"name":"suggest","description":"Print out suggested queries from Google","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"suggest","version":"0.0.1","description":"Print out suggested queries from Google","repository":{"type":"git","url":"git://github.com/gaving/suggest.git"},"author":{"name":"Gavin Gilmour","email":"gavin@brokentrain.net"},"directories":{"lib":"."},"engines":{"node":"0.6"},"dependencies":{"node.io":"*","colors":"*","underscore":"*","restler":"*","optimist":"*","coffee-script":"*","charm":"*","async":"*"},"devDependencies":{"vows":"*"},"bin":{"suggest":"./bin/suggest"},"_npmUser":{"name":"gaving","email":"gavin.gilmour@gmail.com"},"_id":"suggest@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"40c28736502ad81844ea25034239d68c1c8bb6b9","tarball":"http://registry.npmjs.org/suggest/-/suggest-0.0.1.tgz"},"maintainers":[{"name":"gaving","email":"gavin.gilmour@gmail.com"}]}},"readme":"# Suggest\n\n![screen](https://github.com/gaving/suggest/raw/master/site/1.png)\n\n## Usage\n\n % suggest\n Suggest queries from Google.\n Usage: suggest [query]\n\n Options:\n -i, --interactive Search as you type\n","maintainers":[{"name":"gaving","email":"gavin.gilmour@gmail.com"}],"time":{"modified":"2012-03-24T19:01:13.627Z","created":"2012-03-24T19:01:11.898Z","0.0.1":"2012-03-24T19:01:13.627Z"},"author":{"name":"Gavin Gilmour","email":"gavin@brokentrain.net"},"repository":{"type":"git","url":"git://github.com/gaving/suggest.git"},"_id":"suggest","_rev":"1-33d06a36ba0fd6418a36f876c6007098"}ÿdocument-storeÿstyle˜{"id":"style","rev":"1-af5a3a8f37fdfb14c957bcfa03981922","rev_tree":[{"pos":1,"ids":["af5a3a8f37fdfb14c957bcfa03981922",{"status":"available"},[]]}],"rev_map":{"1-af5a3a8f37fdfb14c957bcfa03981922":3770},"winningRev":"1-af5a3a8f37fdfb14c957bcfa03981922","deleted":false,"seq":3770}ÿby-sequenceÿ0000000000003770²{"name":"style","description":"color in your node.js console, without monkeypatching","dist-tags":{"latest":"0.0.3"},"versions":{"0.1.0":{"name":"style","description":"simple colourizer in a functional style","version":"0.1.0","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":"http://github.com/dominictarr/style.git","engine":["node >=0.2.0"],"main":"./style","engines":{"node":">=0.2.0"},"devDependencies":{"expresso":">=0.6.0"},"directories":{"lib":"."},"homepage":"https://github.com/dominictarr/style","scripts":{"test":"expresso test/*.js"},"_id":"style@0.1.0","_engineSupported":true,"_npmVersion":"0.2.17","_nodeVersion":"v0.4.0","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"04b5c93cf1f9b2527a4813eac21f7dad20a36761","tarball":"http://registry.npmjs.org/style/-/style-0.1.0.tgz"}},"0.0.2":{"name":"style","description":"color in your node.js console, without monkeypatching","version":"0.0.2","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/colors.js.git"},"engine":["node >=0.2.0"],"main":"style","engines":{"node":">=0.2.0"},"devDependencies":{"expresso":">=0.6.0"},"directories":{"lib":""},"files":[""],"homepage":"https://github.com/dominictarr/style","scripts":{"test":"expresso test/*.js"},"_id":"style@0.0.2","_engineSupported":true,"_npmVersion":"0.3.0-10","_nodeVersion":"v0.4.0","_defaultsLoaded":true,"dist":{"shasum":"2d853fba29b0b3cb4e267ddb0c0de4a043614893","tarball":"http://registry.npmjs.org/style/-/style-0.0.2.tgz"}},"0.1.1":{"name":"style","description":"color in your node.js console, without monkeypatching","version":"0.1.1","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/style.git"},"engine":["node >=0.2.0"],"main":"./style","engines":{"node":">=0.2.0"},"dependencies":{"curry":"0.0.x"},"devDependencies":{"expresso":">=0.6.0"},"directories":{"lib":"."},"homepage":"https://github.com/dominictarr/style","scripts":{"test":"expresso test/*.js"},"_id":"style@0.1.1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"e2fab65b1b81d3e00ebcad854cc584ba231f256d","tarball":"http://registry.npmjs.org/style/-/style-0.1.1.tgz"}},"0.0.3":{"name":"style","description":"color in your node.js console, without monkeypatching","version":"0.0.3","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/colors.js.git"},"engine":["node >=0.2.0"],"main":"style","engines":{"node":">=0.2.0"},"devDependencies":{"synct":"1","should":"*"},"directories":{"lib":""},"files":[""],"homepage":"https://github.com/dominictarr/style","scripts":{"test":"expresso test/*.js"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"style@0.0.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a2d7989a9e010101f2bc4d287cff3b45cfbb5837","tarball":"http://registry.npmjs.org/style/-/style-0.0.3.tgz"},"readme":"# Style #\n\nfunctional terminal colours.\n\n\n/*\ntypesetting functions:\n\nalign\n\nfor an array of arrays, count length of each line and allign each column.\n\n[[1,2,3,4], ['one', 'two', 'three','four']]\nbecomes\n1 2 3 4\none two three four\n\n\n\n*/\n\n\n","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-06-26T12:59:35.875Z","created":"2011-02-19T04:01:56.286Z","0.1.0":"2011-02-19T04:01:57.443Z","0.0.2":"2011-02-19T06:10:31.371Z","0.1.1":"2011-05-31T04:04:59.526Z","0.0.3":"2012-06-26T12:59:35.875Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/colors.js.git"},"_id":"style","_rev":"1-af5a3a8f37fdfb14c957bcfa03981922"}ÿdocument-storeÿsshey˜{"id":"sshey","rev":"1-77321591d5194e578fb04b82d32fd617","rev_tree":[{"pos":1,"ids":["77321591d5194e578fb04b82d32fd617",{"status":"available"},[]]}],"rev_map":{"1-77321591d5194e578fb04b82d32fd617":3769},"winningRev":"1-77321591d5194e578fb04b82d32fd617","deleted":false,"seq":3769}ÿby-sequenceÿ0000000000003769£{"name":"sshey","description":"simple node wrapper for interactive ssh sessions.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.0":{"name":"sshey","description":"simple node wrapper for interactive ssh sessions.","version":"0.0.0","main":"./ssh.js","bin":{},"dependencies":{},"engines":{"node":"<=0.6.x"},"devDependencies":{},"optionalDependencies":{},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"homepage":"http://github.com/soldair/node-sshey","repository":{"type":"git","url":"git://github.com/soldair/node-sshey.git"},"_npmUser":{"name":"soldair","email":"soldair@gmail.com"},"_id":"sshey@0.0.0","_engineSupported":false,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"4068e1321a3f126b41076d207fae6ecc47e689c6","tarball":"http://registry.npmjs.org/sshey/-/sshey-0.0.0.tgz"},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}]},"0.0.1":{"name":"sshey","description":"simple node wrapper for interactive ssh sessions.","version":"0.0.1","main":"./ssh.js","bin":{},"dependencies":{},"engines":{"node":"< 0.7"},"devDependencies":{},"optionalDependencies":{},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"homepage":"http://github.com/soldair/node-sshey","repository":{"type":"git","url":"git://github.com/soldair/node-sshey.git"},"_npmUser":{"name":"soldair","email":"soldair@gmail.com"},"_id":"sshey@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a758a20e52b038cb410e6c5506b2a7363a38f9bb","tarball":"http://registry.npmjs.org/sshey/-/sshey-0.0.1.tgz"},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}]},"0.0.2":{"name":"sshey","description":"simple node wrapper for interactive ssh sessions.","version":"0.0.2","main":"./ssh.js","bin":{},"dependencies":{},"engines":{"node":"< 0.7"},"devDependencies":{},"optionalDependencies":{},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"homepage":"http://github.com/soldair/node-sshey","repository":{"type":"git","url":"git://github.com/soldair/node-sshey.git"},"_npmUser":{"name":"soldair","email":"soldair@gmail.com"},"_id":"sshey@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"49a25ad88fe9f09cdaf316b940be5f50d6dc6c29","tarball":"http://registry.npmjs.org/sshey/-/sshey-0.0.2.tgz"},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}]},"0.0.3":{"name":"sshey","description":"simple node wrapper for interactive ssh sessions.","version":"0.0.3","main":"./ssh.js","bin":{},"dependencies":{},"engines":{"node":">=0.6"},"devDependencies":{},"optionalDependencies":{},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"homepage":"http://github.com/soldair/node-sshey","repository":{"type":"git","url":"git://github.com/soldair/node-sshey.git"},"_npmUser":{"name":"soldair","email":"soldair@gmail.com"},"_id":"sshey@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.12","_defaultsLoaded":true,"dist":{"shasum":"5cf5d6394b637a037523e88624f7e48a541eeea3","tarball":"http://registry.npmjs.org/sshey/-/sshey-0.0.3.tgz"},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}]}},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}],"time":{"modified":"2012-06-25T18:39:47.219Z","created":"2012-06-16T16:56:09.049Z","0.0.0":"2012-06-16T16:56:10.649Z","0.0.1":"2012-06-18T17:37:19.992Z","0.0.2":"2012-06-18T21:06:32.737Z","0.0.3":"2012-06-25T18:39:47.219Z"},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"repository":{"type":"git","url":"git://github.com/soldair/node-sshey.git"},"_id":"sshey","_rev":"1-77321591d5194e578fb04b82d32fd617"}ÿdocument-storeÿsqliteormœ{"id":"sqliteorm","rev":"1-a9e40e90d27a67b386ad0f2b7c41d0c3","rev_tree":[{"pos":1,"ids":["a9e40e90d27a67b386ad0f2b7c41d0c3",{"status":"available"},[]]}],"rev_map":{"1-a9e40e90d27a67b386ad0f2b7c41d0c3":3768},"winningRev":"1-a9e40e90d27a67b386ad0f2b7c41d0c3","deleted":false,"seq":3768}ÿby-sequenceÿ0000000000003768‡D{"name":"sqliteorm","description":"Another ORM for Node, supporting sqlite and postgres","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"sqliteorm","version":"0.0.1","description":"Another ORM for Node, supporting sqlite and postgres","repository":{"type":"git","url":"git@github.com:calidion/sqliteorm.git"},"keywords":["node-pg","sqlite","orm"],"dependencies":{"coffee-script":"X.X.X"},"author":{"name":"Chris Dickinson, Calidion"},"directories":{"lib":"./lib"},"license":["New BSD License"],"main":"./index","_npmUser":{"name":"calidion","email":"calidion@gmail.com"},"_id":"sqliteorm@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"0c9fce36a56d666f4b3b1be9c4c31359f880135e","tarball":"http://registry.npmjs.org/sqliteorm/-/sqliteorm-0.0.1.tgz"},"maintainers":[{"name":"calidion","email":"calidion@gmail.com"}]}},"readme":"SQLiteORM\n=========\n\nSQLiteORM is designed to be a database-agnostic ORM that interfaces nicely with various templating libraries\nand existing JavaScript code, with an eye towards being beautiful to read and write code for using CoffeeScript.\n\nThe API design is largely borrowed from [Django's ORM](https://docs.djangoproject.com/en/1.3/topics/db/models/); while\nnot 100% similar the general theme should be familiar to anyone who has worked with Django before. \n\nThere are currently adapters for [brianc's node-postgres](https://github.com/brianc/node-postgres) and [developmentseed's node-sqlite3](https://github.com/developmentseed/node-sqlite3).\n\nWhat Does It Look Like?\n-----------------------\n\nThe three major types of objects are `namespace`s (otherwise known as `Scope`s), `Model`s, and `QuerySet`s.\nNamespaces may contain one or more model definitions; these model definitions may refer to models from other namespaces.\nNamespaces are (currently) responsible for creation of database tables for their constituent models. The schema and metadata\nof a model may only be set within a namespace.\n\nLet's take a look at what the average `models.js` file might look like:\n\n````javascript\nvar models = require('sqliteorm').models;\n\nexports.ns = \nmodels.namespace('blog', function(ns) {\n var Post = ns.create('Post');\n\n Post.schema({\n // field definitions need not be explictly called,\n // uncalled fields will be instantiated with the default options.\n 'title':models.CharField,\n 'slug':models.CharField({regex:/^[\\w\\d\\-_]*$/g, unique:true}),\n 'pub_date':models.DateField({default:function() { return new Date(); }}),\n 'description':models.TextField\n });\n\n Post.meta({\n 'order_by':['-pub_date']\n });\n\n // models returned by `ns.create` are class constructor functions, just like in vanilla JS.\n // all instances of that model will have anything you throw onto their `prototype` available to them.\n Post.prototype.toString = function() {\n return '';\n };\n\n var Section = ns.create('Section');\n\n Section.schema({\n 'post':models.ForeignKey(Post),\n 'header':models.CharField({nullable:true, default:null}),\n 'subhead':models.CharField({nullable:true, default:null}),\n 'content':models.TextField,\n 'ordering':models.PositiveIntegerField\n });\n\n Section.meta({\n 'order_by':['ordering'],\n 'unique_together':['ordering', 'post']\n });\n\n var Tag = ns.create('Tag');\n\n Tag.schema({\n 'name':models.CharField({max_length:100}),\n 'posts':models.ManyToMany(Post, {related_name:'tags'})\n });\n\n exports.Post = Post;\n exports.Section = Section;\n exports.Tag = Tag;\n});\n````\n\nIn this schema, a `Post` has many `Section`s, and `Tag`s may be associated with many `Post`s. Note that models are just plain-old function constructors,\nlike any JavaScript class. Also note that the `namespace` callback is executed immediately -- `export`ing models from within the namespace is encouraged.\nOutside of the namespace closure, the `schema` and `meta` methods will be unavailable and your models will be ready to use.\n\nQuerying Using Models\n---------------------\n\nBuilding on the previous example, let's look at how we might query the above objects.\n\n````javascript\nvar models = require('./models'),\n Post = models.Post,\n Section = models.Section,\n Tag = models.Tag;\n\n// Model classes are automatically assigned a `Manager` (available under 'Model._default_manager' as well as 'Model.objects') which is responsible for starting queries, like so:\n_\n\n// query all of the posts.\nvar posts = Post.objects.all()\n\n// queries emit either 'data' or 'error', and nothing else.\n// when 'data' is emitted, the query has completed.\nposts.on('data', function(posts) {\n posts.forEach(function() {\n console.log('Got '+post);\n });\n});\n\nposts.on('error', function(err) {\n // handle your error, sir.\n});\n\n// you may also call posts as if it was a function taking a callback:\n// no casting necessary.\nposts(function(err, p̸J¸ùosts) {\n // do something with posts.\n});\n\n// you may filter on the fields available to 'post'.\n// multiple arguments in one filter call will be 'AND'd together.\nvar other_posts = Post.objects.filter({title__contains:'something', slug:'something-else'});\n\n// filters may be chained, and excluded.\n// chained filters will be 'AND'd together as well.\n// exclude will produce NOT(arg AND arg AND arg)\nother_posts.filter({pub_date__lte:new Date()}).exclude({slug__startswith:'butts'});\n\n// you may use a filter to delete objects as well:\nother_posts.delete()\n\nother_posts(function(err) {\n // if there's no 'err', your filter has run successfully\n});\n\n// if you only need one specific row, use 'get':\n\nPost.objects.get({title:'something'})(function(err, post) {\n // if more than one 'Post' was returned, err will be an instance of Post.MultipleObjectsReturned.\n // if no 'Post's were returned, err will be an instance of Post.DoesNotExist, \n\n // otherwise post will be a single Post object.\n\n});\n\n\n// creation is pretty easy as well:\nvar my_post = Post.objects.create({\n 'title':'Introducing SQLiteORM',\n 'slug':'introducing-sqliteorm',\n 'pub_date':new Date(),\n 'description':'SQLiteORM'\n});\n\nmy_post.on('data', function(post) {\n // our post object exists!\n});\n\n// you may also use this format:\nvar post = new Post({\n 'title':'Introducing SQLiteORM',\n 'slug':'introducing-sqliteorm',\n 'pub_date':new Date(),\n 'description':'SQLiteORM'\n});\n\npost.save().on('data', function(post) {\n // my post!\n});\n\n// you may pass querysets to other querysets as arguments without waiting for them to return, as well:\n\nsection = Section.objects.create({\n 'content':'whoa',\n 'ordering':0,\n 'post':Post.objects.create({\n 'title':'Introducing SQLiteORM',\n 'slug':'introducing-sqliteorm',\n 'pub_date':new Date(),\n 'description':'SQLiteORM'\n })\n});\n\n// errors from inner queries such as the above will be bubbled up through the 'section' queryset.\n\n// you may query across related tables, as well:\n\nsection.objects.filter({post__title__contains:'hats'});\n\n// or in reverse (the default reverse relation name is the name of the model with the foreign key, lowercased, plus '_set'):\nPost.objects.filter({section_set__content:'whoa'});\n\n// the above statement about being able to pass querysets applies to filtering, as well\nSection.objects.filter({post:Post.objects.get({pk:3})})\nSection.objects.filter({post__in:Post.objects.filter({title__contains:'something'})})\n\n// related filtered works with M2M relations:\nTag.objects.filter({post__title:'Yeah!'})\n\n// note that we configured the related name for Tags in the models above.\nPost.objects.filter({tags__name__contains:'bowser'})\n\n// filters may be limited and ordered:\n// \"give me three posts, ordered by title ASC, id DESC\"\nPost.objects.filter({pk:3}).order_by('title', '-id').limit(3)\n\n// \"give me 20 posts starting at 10.\"\nPost.objects.filter({pk:3}).limit(10, 20);\n\n````\n\nFilters execute as soon as the current stack is exhausted. \n\nLicense\n-------\nnew BSD\n\n","maintainers":[{"name":"calidion","email":"calidion@gmail.com"}],"time":{"modified":"2012-04-22T18:54:53.833Z","created":"2012-04-22T18:54:49.128Z","0.0.1":"2012-04-22T18:54:53.833Z"},"author":{"name":"Chris Dickinson, Calidion"},"repository":{"type":"git","url":"git@github.com:calidion/sqliteorm.git"},"_id":"sqliteorm","_rev":"1-a9e40e90d27a67b386ad0f2b7c41d0c3"}ÿdocument-storeÿsmoke˜{"id":"smoke","rev":"1-1c963a93f5ec75650ee46b5d796bf2db","rev_tree":[{"pos":1,"ids":["1c963a93f5ec75650ee46b5d796bf2db",{"status":"available"},[]]}],"rev_map":{"1-1c963a93f5ec75650ee46b5d796bf2db":3767},"winningRev":"1-1c963a93f5ec75650ee46b5d796bf2db","deleted":false,"seq":3767}ÿby-sequenceÿ0000000000003767¡{"name":"smoke","description":"JS Build Tool","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"smoke","description":"JS Build Tool","author":{"name":"Damon Oehlman","email":"damon.oehlman@sidelab.com"},"tags":["build"],"version":"0.0.0","engines":{"node":">= 0.4.x < 0.7.0"},"main":"./lib/smoke.js","dependencies":{"async":"0.1.x","debug":"*","findit":"0.1.x","minimatch":"0.2.x","mkdirp":"0.3.x","nopt":"1.x.x","pipeline":"git://github.com/DamonOehlman/pipeline.git","out":"*","sniff":"0.1.x"},"devDependencies":{"expect.js":"0.1.x","mocha":"1.x.x","rigger":"0.2.x"},"optionalDepencies":{},"repository":{"type":"git","url":"git://github.com/DamonOehlman/smoke.git"},"bugs":{"url":"http://github.com/DamonOehlman/smoke/issues"},"scripts":{"test":"mocha --reporter spec -t 10000"},"contributors":[],"optionalDependencies":{},"_npmUser":{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"},"_id":"smoke@0.0.0","_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"954312e92cdc5d49dd536d847eb7767c15a881a9","tarball":"http://registry.npmjs.org/smoke/-/smoke-0.0.0.tgz"},"maintainers":[{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"}]}},"readme":"# Smoke\n\nSmoke will be a JS build tool that will replace [Interleave](https://github.com/DamonOehlman/interleave). A lot has been learned over the last six months and it's time to start with a clean slate and create a tool that make it a breeze to build re-usable, tested JS for as many environments as possible.\n\n__CURRENT STATUS:__ [Call for Issues](https://github.com/DamonOehlman/smoke/issues)\n\nYou know best what you need in a build tool. I only know what I need. To make sure what is developed meets the broadest possible requirements please [log issues](https://github.com/DamonOehlman/smoke/issues/new) and engage in discussion.\n\n## Use Grunt\n\nAfter working with the [Grunt API](https://github.com/cowboy/grunt/blob/master/docs/api.md) and successfully integrating Rigger with grunt (via the [grunt-rigger plugin](https://github.com/DamonOehlman/grunt-rigger)) it's highly unlikely that I'm going to put any effort into building __yet another build tool__. Grunt will likely to exactly what you need, and it's got some great features already baked in that make it a whole pile of JS build yumminess. You should definitely try it out!\n\n## General Design Goals\n\n1. Very [Stream](http://nodejs.org/docs/latest/api/stream.html) centric.\n2. Pluggable API\n3. Do as little as possible in the core, with composition through streams (1) and an API (2) this should be absolutely fine.\n\n## Component Pieces\n\nSome of the component pieces required to build smoke have already been built:\n\n1. [Rigger](/DamonOehlman/rigger) - Include files in other files\n2. [StreamClean](/DamonOehlman/streamclean) - Remove or change lines in a stream\n3. [Pipeline](/pgte/pipeline) or [event-stream](/dominictarr/event-stream) - useful helpers for combining streams, and in event event-stream's case nice helpers for making an async function slot into a piped stream simply.\n4. [jshint](https://github.com/jshint/node-jshint)\n5. [UglifyJS](https://github.com/mishoo/UglifyJS)","maintainers":[{"name":"damonoehlman","email":"damon.oehlman@sidelab.com"}],"time":{"modified":"2012-04-23T07:35:26.256Z","created":"2012-04-23T07:35:21.453Z","0.0.0":"2012-04-23T07:35:26.256Z"},"author":{"name":"Damon Oehlman","email":"damon.oehlman@sidelab.com"},"repository":{"type":"git","url":"git://github.com/DamonOehlman/smoke.git"},"_id":"smoke","_rev":"1-1c963a93f5ec75650ee46b5d796bf2db"}ÿdocument-storeÿslickbackœ{"id":"slickback","rev":"1-e2e51589c6f694d85e4e453fb8530a2b","rev_tree":[{"pos":1,"ids":["e2e51589c6f694d85e4e453fb8530a2b",{"status":"available"},[]]}],"rev_map":{"1-e2e51589c6f694d85e4e453fb8530a2b":3766},"winningRev":"1-e2e51589c6f694d85e4e453fb8530a2b","deleted":false,"seq":3766}ÿby-sequenceÿ0000000000003766©"{"name":"slickback","description":"Slickback brings Backbone and SlickGrid together","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"slickback","version":"0.1.0","description":"Slickback brings Backbone and SlickGrid together","keywords":["backbone","slickgrid","paginate"],"homepage":"http://teleological.github.com/slickback","bugs":{"name":"http://github.com/teleological/slickback/issues"},"author":{"name":"Riley Lynch","email":"oss@teleological.net"},"licences":[{"type":"MIT","url":"http://creativecommons.org/licenses/MIT"}],"repository":{"type":"git","url":"git://github.com/teleological/slickback.git"},"dependencies":{"underscore":">=1.1.7","backbone":">=0.5.3"},"devDependencies":{"jasmine-node":">=1.0.6","buildr":">=0.5.3"},"lib":"lib","main":"pkg/slickback.min.js","scripts":{"prepublish":"buildr && rmdir pkg/slickback","test":"jasmine-node test"},"_npmJsonOpts":{"file":"/Users/riley/.npm/slickback/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"slickback@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.24","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"aceecf5c9105f1a9ff2072efca3d8f17e51334b0","tarball":"http://registry.npmjs.org/slickback/-/slickback-0.1.0.tgz"},"maintainers":[{"name":"teleological","email":"oss@teleological.net"}],"directories":{}},"0.2.1":{"name":"slickback","version":"0.2.1","description":"Slickback brings Backbone and SlickGrid together","keywords":["backbone","slickgrid","paginate"],"homepage":"http://teleological.github.com/slickback","bugs":{"name":"http://github.com/teleological/slickback/issues"},"author":{"name":"Riley Lynch","email":"oss@teleological.net"},"licences":[{"type":"MIT","url":"http://creativecommons.org/licenses/MIT"}],"repository":{"type":"git","url":"git://github.com/teleological/slickback.git"},"dependencies":{"underscore":">=1.1.x","backbone":">=0.5.x"},"devDependencies":{"jasmine-node":">=1.0.x","buildr":">=0.5.x","jsdom":">=0.2.x"},"directories":{"lib":"./lib","test":"./spec"},"main":"./index.js","scripts":{"prepublish":"buildr && rmdir dist/slickback","test":"jasmine-node spec"},"_npmJsonOpts":{"file":"/Users/riley/.npm/slickback/0.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"slickback@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.24","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"9b545104ea2b23746ca66cd2a7450492551d8ae2","tarball":"http://registry.npmjs.org/slickback/-/slickback-0.2.1.tgz"},"maintainers":[{"name":"teleological","email":"oss@teleological.net"}]},"0.3.1":{"name":"slickback","version":"0.3.1","description":"Slickback brings Backbone and SlickGrid together","keywords":["backbone","slickgrid","paginate"],"homepage":"http://teleological.github.com/slickback","bugs":{"name":"http://github.com/teleological/slickback/issues"},"author":{"name":"Riley Lynch","email":"oss@teleological.net"},"licences":[{"type":"MIT","url":"http://creativecommons.org/licenses/MIT"}],"repository":{"type":"git","url":"git://github.com/teleological/slickback.git"},"dependencies":{"underscore":">=1.3.x","backbone":">=0.9.x"},"devDependencies":{"jasmine-node":">=1.0.8","buildr":">=0.8.x","jsdom":">=0.2.13"},"directories":{"lib":"./lib","test":"./spec"},"main":"./index.js","scripts":{"prepublish":"buildr","test":"jasmine-node spec"},"_npmJsonOpts":{"file":"/Users/riley/.npm/slickback/0.3.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"slickback@0.3.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.24","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"1cf991633fc5c5d55e2d1b36c224ad2f5c01b06c","tarball":"http://registry.npmjs.org/slickback/-/slickback-0.3.1.tgz"},"maintainers":[{"name":"teleological","email":"oss@teleological.net"}]}},"maintainers":[{"name":"teleological","email":"oss@teleological.net"}],"time":{"modified":"2012-04-22T17:08:05.724Z","created":"2011-08-23T09:34:43.350Z","0.1.0":"2011-08-23T09:34:45.122Z","0.2.0":"2011-09-06T02:04:19.972Z","0.2.1":"2011-09-06T02:05:59.583Z","0.3.1":"2012-04-22T17:08:05.724Z"},"author":{"name":"Riley Lynch","email":"oss@teleological.net"},"repository":{"type":"git","url":"git://github.com/teleological/slickback.git"},"_id":"slickback","_rev":"1-e2e51589c6f694d85e4e453fb8530a2b"}%ÿdocument-storeÿsite-manager-mobile¦{"id":"site-manager-mobile","rev":"1-c9ca12d11826b53381b15c982b6618ac","rev_tree":[{"pos":1,"ids":["c9ca12d11826b53381b15c982b6618ac",{"status":"available"},[]]}],"rev_map":{"1-c9ca12d11826b53381b15c982b6618ac":3765},"winningRev":"1-c9ca12d11826b53381b15c982b6618ac","deleted":false,"seq":3765}ÿby-sequenceÿ0000000000003765¤?{"name":"site-manager-mobile","description":"Mobile Skins for the Site-Manager applications","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"site-manager-mobile","version":"0.0.1","description":"Mobile Skins for the Site-Manager applications","keywords":["site","html5","mobile"],"contributors":[{"name":"Joachim Kainz","email":"jfk@jolira.com","url":"http://www.jolira.com"}],"repository":{"url":"git://github.com/jolira/site-manager-mobile.git","type":"git"},"dependencies":{},"devDependencies":{"debug":"*","horaa":"*","vows":"*","jake":"*","uglify-js":"*"},"scripts":{"test":"jake test","prepublish":"npm prune"},"bugs":{"email":"dev@jolira.com","url":"http://github.com/jolira/site-manager-mobile/issues"},"main":"index","engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"jfk","email":"jfk@jolira.com"},"_id":"site-manager-mobile@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"202e97f694bc1f1c96621d7bef6f9357a16d88ab","tarball":"http://registry.npmjs.org/site-manager-mobile/-/site-manager-mobile-0.0.1.tgz"},"maintainers":[{"name":"jfk","email":"jfk@jolira.com"}]}},"readme":"site-manager [](http://travis-ci.org/#!/jolira/site-manager)\n========================================\n\nA simple server for developing single-page applictions quickly in a team environment.\n\nThe core of the server are handlebar templates. Here is one handlebar template that comes with the site-manager at\n[``public/index.html``](https://github.com/jolira/site-manager/blob/master/public/index.html).\n\n\nA Very Simple Example\n-----------------------------\n\nCreate a new directory demo appliation in a new directory, such as\n\n```\nmkdir mydemoapp\ncd mydemoapp\n```\n\nCreate a new ``package.json`` declaring site-manager as a dependency.\n\n```\n{\n \"name\": \"mydemoapp\",\n \"version\": \"0.0.1\",\n \"dependencies\": {\n \"site-manager\": \"*\"\n },\n \"main\":\"index\",\n \"engines\":{\n \"node\":\">= 0.6.0 < 0.7.0\"\n }\n}\n```\n\nDeclaring the site-manager is not strictly required, but makes deploying to many systems such as Heroku much\neasier. Instead of declaring the dependency, one case also install the site-manager globally using\n``npm install -g site-manager``.\n\n\nNext, we need a ``index.js`` file:\n\n```\n(function (__dirname, module) {\n \"use strict\";\n var path = require(\"path\");\n module.exports = function (defaults, cb, properties, app) {\n defaults.useRequireJS = false; // disable the site-manager support for requireJS\n defaults.hostname = \"mydemoapp.jolira.com\"; // define the name of the site\n defaults.title = \"My Demo App\"; // The title to be displayed in the titlebar\n defaults.htmlFiles = [\n path.join(__dirname, \"content.html\") // add some content\n ];\n return cb(undefined, defaults);\n };\n})(__dirname, module);\n```\n\nNow, all that is remaining is to specify the html-fragment to be displayed when we run the site-manager.\n\n```\n

Hello World!!!

\n```\n\nTo install the dependencies:\n\n```\nnpm install -d\n```\n\nTo run the example:\n\n```\nnode_modules/.bin/site-manager --debug --port=3000 .\n```\n\nTo run the example on Heroku you need the folowing ``Procfile`.\n\n```\nweb: node_modules/.bin/site-manager --debug --port=$PORT --watch-dirs=false .\n```\n\nGo to ``http://localhost:3000/`` to the example running.\n\nConfiguring a Site\n------------------------\n\nAs shown in the example, every site-manager site has configures the site by exporting a function. This function\nlooks like this:\n\n```\n \"use strict\";\n module.exports = function (defaults, cb, properties, app) {\n // configure the defaults object here\n return cb(undefined, defaults);\n };\n```\n\nThe default object takes the following parameters:\n\n* ``defaults``: The defaults object to be configured. A detailed description of the properties\n of this object can be found at\n [``lib/defaults.json``](https://github.com/jolira/site-manager/blob/master/lib/defaults.js).\n The [``public/index.html``](https://github.com/jolira/site-manager/blob/master/public/index.html) shows\n how may of these values are used.\n* ``cb`` the the callback function, which takes two parameters ``cb(err, vals)``. The first parameter\n should be set to ``undefined``unless there is an error to report. The second parameter should be used\n to pass the configured default object back to the site-manager.\n* ``properties`` loaded from a ``.config.json`` file in the project directory.\n* ``app`` the [express.js](http://expressjs.com/) object used by the site-manager.\n\nOther Features\n------------------------\n\nKey features of this package are:\n\n* _Teams_: Break the the app into many html fragments to make team development easier.\n* _HTML5Boilerplate_: Our default templates incorporate the latest & greatest boilerplate.\n* _RequireJS_: Teams can (optionally) use [Asynchronous Module Definition](https://github.com/amdjs/amdjs-api/wiki/AMD)\n to organize their JavaScript.\n* _Auto Reloads_: The site-manager watches the file system for changes and automatically reloads a site when a\n change is detected.\n* _Less_: Automatically compiles .less files to ``text/css using``.\n* _Properties_: The site-manager loads ``.config.json`` files from the site directory. The site-manager also loads\n properties from a ``~/.sitemanager.json`` file and passes the data to the different sites it serves.\n* _Manifest_: The site-manager automatically updates [html5\n manifest](http://www.html5rocks.com/en/tutorials/appcache/beginner/) when changes are detected the require reloading\n the site.\n* _Developer Support_: The server monitors files and automatically restarts when changes are detected.\n\n### Multi-Site Mode\n\nThe site-manager can run in multi-site mode, which creates virtual hosts for each module. The hostname is defined in\nthe site is used as the server name of the vhost.\n\nIn order to run in multi-site mode, point the site-manager to a directory that contains mutiple sites, such as in\n\n```\nsite-manager examples # use the examples directory from the repo\n```\n\nTo test sites you have to define the correct hostname. In order to do so, you have to add these names to `/etc/hosts`.\nTo define the hostames used by examples from the site-manager github repo, add the following line to `/etc/hosts`\n(assuming you are running the site-manager on your machine):\n\n```\n127.0.0.1\tsimple.jolira.com advanced.jolira.com\n```\n\nOnce this entry has been added, you can access the advanced example as `http://advanced.jolira.com:3000` and the simple\nexample at `http://simple.jolira.com:3000`.\n\n### Single-Site Mode\n\nWhen running in single-site mode, there is no vhosting (as only one site is served). To run the site-manager in\nsingle-site mode, point it to a site directory as in:\n\n```\nsite-manager examples/simple # use the examples directory from the repo\n```\n\nAs there is no virtual hosting, we do not have to define any entry in `/etc/hosts` and can access the example at\n`http://localhost:3000`.\n\n### Enable Debug Output\n\nDebug output is generated when the string `site-manager` is part of the value of the ``NODE_DEBUG`` environment\nvariable.\n\n```\nexport NODE_DEBUG=site-manager\n```\n\nTesting\n-----------------\n\nInstall jake: `npm install -g jake`\n\nNote that Jake is a system-level tool, and wants to be installed globally.\n\nTo execute tests execute: `jake test`\n\nLicense\n-----------------\n\n[MIT License](https://raw.github.com/jolira/site-manager/master/LICENSE.txt)\n\n","maintainers":[{"name":"jfk","email":"jfk@jolira.com"}],"time":{"modified":"2012-06-05T23:20:35.852Z","created":"2012-06-05T23:20:34.030Z","0.0.1":"2012-06-05T23:20:35.852Z"},"repository":{"url":"git://github.com/jolira/site-manager-mobile.git","type":"git"},"_id":"site-manager-mobile","_rev":"1-c9ca12d11826b53381b15c982b6618ac"}1ÿdocument-storeÿsite-manager-bootstrap-backbone²{"id":"site-manager-bootstrap-backbone","rev":"1-468df415f713b5a1c791b9da268d6b51","rev_tree":[{"pos":1,"ids":["468df415f713b5a1c791b9da268d6b51",{"status":"available"},[]]}],"rev_map":{"1-468df415f713b5a1c791b9da268d6b51":3764},"winningRev":"1-468df415f713b5a1c791b9da268d6b51","deleted":false,"seq":3764}ÿby-sequenceÿ0000000000003764Ô'{"name":"site-manager-bootstrap-backbone","description":"Reusable components for Web-Apps using Backbone and Twitter Bootstrap","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"site-manager-bootstrap-backbone","version":"0.0.1","description":"Reusable components for Web-Apps using Backbone and Twitter Bootstrap","keywords":["site-manager","webapp"],"contributors":[{"name":"Joachim Kainz","email":"jfk@jolira.com","url":"http://www.jolira.com"}],"repository":{"url":"git://github.com/jolira/site-manager-bootstrap-backbone.git","type":"git"},"bin":{},"devDependencies":{"jake":"*"},"dependencies":{"site-manager-bootstrap":"*"},"bugs":{"email":"dev@jolira.com","url":"http://github.com/jolira/site-manager-bootstrap-backbone/issues"},"main":"index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"jfk","email":"jfk@jolira.com"},"_id":"site-manager-bootstrap-backbone@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ea0f4a800632bb433d567bccb87500e82ba106a8","tarball":"http://registry.npmjs.org/site-manager-bootstrap-backbone/-/site-manager-bootstrap-backbone-0.0.1.tgz"},"maintainers":[{"name":"jfk","email":"jfk@jolira.com"}]},"0.0.2":{"name":"site-manager-bootstrap-backbone","version":"0.0.2","description":"Reusable components for Web-Apps using Backbone and Twitter Bootstrap","keywords":["site-manager","webapp"],"contributors":[{"name":"Joachim Kainz","email":"jfk@jolira.com","url":"http://www.jolira.com"}],"repository":{"url":"git://github.com/jolira/site-manager-bootstrap-backbone.git","type":"git"},"bin":{},"devDependencies":{"jake":"*"},"dependencies":{"site-manager-bootstrap":"*"},"bugs":{"email":"dev@jolira.com","url":"http://github.com/jolira/site-manager-bootstrap-backbone/issues"},"main":"index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"jfk","email":"jfk@jolira.com"},"_id":"site-manager-bootstrap-backbone@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d30f6c196657030f57df1ef60f07b045f3925990","tarball":"http://registry.npmjs.org/site-manager-bootstrap-backbone/-/site-manager-bootstrap-backbone-0.0.2.tgz"},"maintainers":[{"name":"jfk","email":"jfk@jolira.com"}]},"0.0.3":{"name":"site-manager-bootstrap-backbone","version":"0.0.3","description":"Reusable components for Web-Apps using Backbone and Twitter Bootstrap","keywords":["site-manager","webapp"],"contributors":[{"name":"Joachim Kainz","email":"jfk@jolira.com","url":"http://www.jolira.com"}],"repository":{"url":"git://github.com/jolira/site-manager-bootstrap-backbone.git","type":"git"},"bin":{},"devDependencies":{"jake":"*"},"dependencies":{"site-manager-bootstrap":"*"},"bugs":{"email":"dev@jolira.com","url":"http://github.com/jolira/site-manager-bootstrap-backbone/issues"},"main":"index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"jfk","email":"jfk@jolira.com"},"_id":"site-manager-bootstrap-backbone@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c8b863e04dfd95152910496506b4ce27483cf983","tarball":"http://registry.npmjs.org/site-manager-bootstrap-backbone/-/site-manager-bootstrap-backbone-0.0.3.tgz"},"maintainers":[{"name":"jfk","email":"jfk@jolira.com"}]},"0.0.4":{"name":"site-manager-bootstrap-backbone","version":"0.0.4","description":"Reusable components for Web-Apps using Backbone and Twitter Bootstrap","keywords":["site-manager","webapp"],"contributors":[{"name":"Joachim Kainz","email":"jfk@jolira.com","url":"http://www.jolira.com"}],"repository":{"url":"git://github.com/jolira/site-manager-bootstrap-backbone.git","type":"git"},"bin":{},"devDependencies":{"jake":"*"},"dependencies":{"site-manager-bootstrap":"*"},"bugs":{"email":"dev@jolira.com","url":"http://github.com/jolira/site-manager-bootstrap-backbone/issues"},"main":"index","engines":{"node":">= 0.6.0 < 0.7.0"},"_npmUser":{"name":"jfk","email":"jfk@jolira.com"},"_id":"site-manager-bootstrap-backbone@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c768a47a2a6aa042cb19c451319c2e69ad7213d6","tarball":"http://registry.npmjs.org/site-manager-bootstrap-backbone/-/site-manager-bootstrap-backbone-0.0.4.tgz"},"maintainers":[{"name":"jfk","email":"jfk@jolira.com"}]}},"readme":"stite-manager-bootstrap-backbone\n================================\n\nBuilding Scalable WebApps for the Site-Manager","maintainers":[{"name":"jfk","email":"jfk@jolira.com"}],"time":{"modified":"2012-05-18T18:51:13.065Z","created":"2012-05-17T20:06:36.759Z","0.0.1":"2012-05-17T20:06:39.317Z","0.0.2":"2012-05-17T21:04:41.311Z","0.0.3":"2012-05-17T21:56:33.100Z","0.0.4":"2012-05-18T18:51:13.065Z"},"repository":{"url":"git://github.com/jolira/site-manager-bootstrap-backbone.git","type":"git"},"_id":"site-manager-bootstrap-backbone","_rev":"1-468df415f713b5a1c791b9da268d6b51"}ÿdocument-storeÿsiq-mesh›{"id":"siq-mesh","rev":"1-8ab036b2a8843a2fef9d82d86423ad64","rev_tree":[{"pos":1,"ids":["8ab036b2a8843a2fef9d82d86423ad64",{"status":"available"},[]]}],"rev_map":{"1-8ab036b2a8843a2fef9d82d86423ad64":3763},"winningRev":"1-8ab036b2a8843a2fef9d82d86423ad64","deleted":false,"seq":3763}ÿby-sequenceÿ0000000000003763š/{"name":"siq-mesh","description":"a declarative RESTful API framework","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.1","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/testMiddleware.js"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8661f59a02dc66e9352ce36be7e3ae7af18fef1b","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.1.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.2":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.2","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/middleware.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.2","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e863a407dc53c0becf1b7aec32df7d5f0f51afd1","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.2.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.3":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.3","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/middleware.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.3","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"8aa1e90611008010d810b6f9846accdcf686bb95","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.3.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.4":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.4","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/middleware.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.4","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b6339522dc873273001c54df9ff5dd0e300e68d4","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.4.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.5":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.5","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/middleware.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.5","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"590acc8a37da618d05251b7e6daac131e7ad95cf","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.5.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]},"0.0.6":{"name":"siq-mesh","description":"a declarative RESTful API framework","contributors":[{"name":"Jordan McCoy"},{"name":"Elias Ponvert"},{"name":"Aaron Stacy","email":"astacy@storediq.com"}],"version":"0.0.6","dependencies":{"js-yaml":"0.3.x","siq-vendor-js":"0.0.x","csi":"0.0.x","bedrockjs":"0.0.x"},"component":{"name":"mesh","sourceDirectory":"js","testTemplate":"js/tests/testTemplate.html","testMiddleware":"js/tests/middleware.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"},"_id":"siq-mesh@0.0.6","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"483869b8e8615cbbec78de4e9659c289bfcda5a6","tarball":"http://registry.npmjs.org/siq-mesh/-/siq-mesh-0.0.6.tgz"},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}]}},"readme":"","maintainers":[{"name":"aaronj1335","email":"aaron.r.stacy@gmail.com"}],"time":{"modified":"2012-06-25T23:30:24.654Z","created":"2012-05-24T16:11:27.532Z","0.0.1":"2012-05-24T16:11:29.773Z","0.0.2":"2012-06-04T13:03:32.451Z","0.0.3":"2012-06-13T13:57:02.015Z","0.0.4":"2012-06-19T22:16:18.037Z","0.0.5":"2012-06-22T19:02:37.434Z","0.0.6":"2012-06-25T23:30:24.654Z"},"_id":"siq-mesh","_rev":"1-8ab036b2a8843a2fef9d82d86423ad64"}ÿdocument-storeÿsioe-demoœ{"id":"sioe-demo","rev":"1-7a037a959c56f326b9facbea1044e051","rev_tree":[{"pos":1,"ids":["7a037a959c56f326b9facbea1044e051",{"status":"available"},[]]}],øôdeù"rev_map":{"1-7a037a959c56f326b9facbea1044e051":3762},"winningRev":"1-7a037a959c56f326b9facbea1044e051","deleted":false,"seq":3762}ÿby-sequenceÿ0000000000003762Ù{"name":"sioe-demo","description":"socket.io and Express. Tying it all together. Demo Application","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Daniel Baulig","email":"daniel.baulig@gmx.de","url":"http://www.danielbaulig.de"},"name":"sioe-demo","description":"socket.io and Express. Tying it all together. Demo Application","version":"0.0.1","homepage":"http://www.danielbaulig.de/socket-ioexpress/","repository":{"type":"git","url":"git://github.com/DanielBaulig/sioe-demo.git"},"main":"app.js","dependencies":{"socket.io":"*","express":"*","jade":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"dev0","email":"daniel.baulig@gmx.de"},"_id":"sioe-demo@0.0.1","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"e635bfb23d9bf97b499132430538f03559c5ca38","tarball":"http://registry.npmjs.org/sioe-demo/-/sioe-demo-0.0.1.tgz"},"maintainers":[{"name":"dev0","email":"daniel.baulig@gmx.de"}]}},"readme":"# _socket.io and Express. Tying it all together. Demo Application_\n\nThis is a demo application demonstrating how the two popular frameworks socket.io and Express can be effectively used together.\n\nPlease read my article [socket.io and Express. Tying it all together._](http://www.danielbaulig.de/spcket-ioexpress) for details on what is going on.\n\n# Installation\n\n npm install sioe-demo\n\n# Run\n\n make run\n","maintainers":[{"name":"dev0","email":"daniel.baulig@gmx.de"}],"time":{"modified":"2012-03-22T20:15:16.751Z","created":"2012-03-22T20:15:14.780Z","0.0.1":"2012-03-22T20:15:16.751Z"},"author":{"name":"Daniel Baulig","email":"daniel.baulig@gmx.de","url":"http://www.danielbaulig.de"},"repository":{"type":"git","url":"git://github.com/DanielBaulig/sioe-demo.git"},"_id":"sioe-demo","_rev":"1-7a037a959c56f326b9facbea1044e051"}ÿdocument-storeÿshuriken›{"id":"shuriken","rev":"1-19ea06a3e83d0f6d989a2621448581c3","rev_tree":[{"pos":1,"ids":["19ea06a3e83d0f6d989a2621448581c3",{"status":"available"},[]]}],"rev_map":{"1-19ea06a3e83d0f6d989a2621448581c3":3761},"winningRev":"1-19ea06a3e83d0f6d989a2621448581c3","deleted":false,"seq":3761}ÿby-sequenceÿ0000000000003761Ç{"name":"shuriken","description":"an accelerated graphics framework","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"shuriken","version":"0.0.0","description":"an accelerated graphics framework","dependencies":{"montage":">= 0.7.0"},"_npmUser":{"name":"kriskowal","email":"kris.kowal@cixar.com"},"_id":"shuriken@0.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"467a5531660b90654952507d2c688b126bc77221","tarball":"http://registry.npmjs.org/shuriken/-/shuriken-0.0.0.tgz"},"readme":"","maintainers":[{"name":"kriskowal","email":"kris.kowal@cixar.com"}]}},"readme":"","maintainers":[{"name":"kriskowal","email":"kris.kowal@cixar.com"}],"time":{"modified":"2012-07-10T20:39:00.221Z","created":"2012-07-10T20:38:58.913Z","0.0.0":"2012-07-10T20:39:00.221Z"},"_id":"shuriken","_rev":"1-19ea06a3e83d0f6d989a2621448581c3"}ÿdocument-storeÿshpaml™{"id":"shpaml","rev":"1-3b00355063e5df600a8c52af4288480c","rev_tree":[{"pos":1,"ids":["3b00355063e5df600a8c52af4288480c",{"status":"available"},[]]}],"rev_map":{"1-3b00355063e5df600a8c52af4288480c":3760},"winningRev":"1-3b00355063e5df600a8c52af4288480c","deleted":false,"seq":3760}ÿby-sequenceÿ0000000000003760{"name":"shpaml","description":"the unHaml haml","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"shpaml","description":"the unHaml haml","homepage":"http://shpaml.webfactional.com","keywords":["html simple"],"version":"0.0.1","author":{"name":"Rickey Visinski"},"contributor":["Steve Howell <>"],"bin":{"shpaml":"./bin/shpaml.js"},"main":"./lib/shpaml.js","dependencies":{"nopt":"~1.0.0"},"engines":{"node":">=0.4.12"},"directories":{"lib":"./lib"},"repository":{"type":"git","url":"git://github.com/rickeyski/node-shpaml.git"},"bugs":{"url":"https://github.com/rickeyski/node-shpaml/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rickeyski/node-shpaml/blob/master/LICENSE"}],"readme":"# node-shpaml\n\nA command line interface and npm package for shpaml.\nA context free and simplified fork of Haml\n\n## Install\n\nTo use shpaml from any location (for npm v1.x) you need to install using the global (-g) flag.\n\n npm install -g shpaml\n\n## Usage\n\n shpaml --outfile? files...\n\nYou can also require shpaml itself as a module.\n\n var shpaml = require('shpaml');\n\nThe outfile option creates a file with the same name but with .html,\notherwise, default writes to stdout\n\n","_id":"shpaml@0.0.1","dist":{"shasum":"a4e80e2f0731534bfaa4558797daa01f552db308","tarball":"http://registry.npmjs.org/shpaml/-/shpaml-0.0.1.tgz"},"maintainers":[{"name":"rickeyski","email":"rickeyvisinski@gmail.com"}]}},"readme":"# node-shpaml\n\nA command line interface and npm package for shpaml.\nA context free and simplified fork of Haml\n\n## Install\n\nTo use shpaml from any location (for npm v1.x) you need to install using the global (-g) flag.\n\n npm install -g shpaml\n\n## Usage\n\n shpaml --outfile? files...\n\nYou can also require shpaml itself as a module.\n\n var shpaml = require('shpaml');\n\nThe outfile option creates a file with the same name but with .html,\notherwise, default writes to stdout\n\n","maintainers":[{"name":"rickeyski","email":"rickeyvisinski@gmail.com"}],"time":{"modified":"2012-07-11T01:08:52.412Z","created":"2012-07-11T01:08:51.748Z","0.0.1":"2012-07-11T01:08:52.412Z"},"author":{"name":"Rickey Visinski"},"repository":{"type":"git","url":"git://github.com/rickeyski/node-shpaml.git"},"_id":"shpaml","_rev":"1-3b00355063e5df600a8c52af4288480c"}'ÿdocument-storeÿserver-backbone-redis¨{"id":"server-backbone-redis","rev":"1-8f23fbbcac1771190e65bc40b9759250","rev_tree":[{"pos":1,"ids":["8f23fbbcac1771190e65bc40b9759250",{"status":"available"},[]]}],"rev_map":{"1-8f23fbbcac1771190e65bc40b9759250":3759},"winningRev":"1-8f23fbbcac1771190e65bc40b9759250","deleted":false,"seq":3759}ÿby-sequenceÿ0000000000003759úÞ{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.1":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":"0.3.1","underscore":">=1.0.7"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.1","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"2da0106ba12f3503a9526be5ae47826760514a73","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.1.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.2":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.2","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"3cd96bec6fbdc4d13cd2dfaa068b27b39044b6db","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.2.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.3":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.3","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"74f96162b5034d4cfe236b179fcbfafa5caa3f3a","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.3.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.4":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.4","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.4/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"abac120010f00f9337f9d7bada8e5103f14755e1","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.4.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.5":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.5","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.5/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"28bb44f668a46297d2b8c3e63a2e65c1bf90b59b","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.5.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.6":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.6","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.6/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.6","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"d370b109a99cf3da6d39464dede4702aaf61214f","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.6.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.7":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.7","_npmJsonOpts":{"file":"/home/jparadis/.npm/server-backbone-redis/0.0.7/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"server-backbone-redis@0.0.7","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"6179127030287ec5d640771a0ff69c08afc5ca06","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.7.tgz"},"scripts":{},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.8":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.8","_npmUser":{"name":"jeromeparadis","email":"paradis.jerome+npm@gmail.com"},"_id":"server-backbone-redis@0.0.8","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"b0c16e18c2f6510ced79a7768c58e78bf4c7242b","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.8.tgz"},"readme":"# Why?\r\n\r\nI created this module because in a socket.io app I'm working on, all data is created, processed and persisted on the server. By having the models on the server-side with a Redis data store, it is easy to persist the data. With the export/import to JSON from JSON functionality, I can easily push data to clients connected through socket.io. Then, on the client-side, I continue to use the backbone models within views to update the UI.\r\n\r\n# Documentation\r\n\r\n* For up-to-date documentation, see the [Wiki](https://github.com/JeromeParadis/server-backbone-redis/wiki)\r\n* I sometimes update the doc at the bottom of this README\r\n\r\n# Dependencies\r\n\r\n\tnpm install underscore\r\n\tnpm install backbone\r\n\tnpm install redis\r\n\r\n# Install Latest version\r\n\r\n\tnpm install server-backbone-redis\r\n\t\r\n# Howto\r\n\r\n## Documentation\r\n\r\nThis module does two things:\r\n\r\n* sharing of models through server and client for a single code base\r\n* using Redis on the server-side as a data store to Backbone\r\n\r\n## Backbone Models\r\nYou can share your Backbone models for a single definition on the server and the client. Example of a ./models/models.js file. It uses CommonJS to include the right stuff when included in a node application. On the server side and client side, you will always use models.Backbone instead of Backbone.\r\n\r\nCreate the name property in your models to define the object name. This name will be reused to generate Redis keys. Example:\r\n\r\n* Model name = \"user\", ID=2 -> Redis key = \"user:2\"\r\n\t\r\n\t (function () {\r\n\t var server = false, models;\r\n\t if (typeof exports !== 'undefined') {\r\n\t\tBackbone = require('../../../server-backbone-redis');\r\n\r\n\t\tmodels = exports;\r\n\t\tserver = true;\r\n\r\n\t } else {\r\n\t\tmodels = this.models = {};\r\n\t }\r\n\r\n\t\tmodels.Backbone = Backbone;\r\n\r\n\t //\r\n\t //models\r\n\t //\r\n\t\tmodels.User = Backbone.Model.extend({\r\n\t\t\tdefaults: {\r\n\t\t\t\t\"id\":\t\tnull,\r\n\t\t\t\t\"name\":\t\tnull,\r\n\t\t\t\t\"entry\": null\r\n\t\t\t},\r\n\t\t\tinitialize: function() {\r\n\t\t\t\tvar time = new Date();\r\n\t\t\t\tif (!this.get(\"entry\"))\r\n\t\t\t\t\tthis.set({entry: time});\r\n\t\t\t},\r\n\t\t\tname: \"testuser\"\r\n\t\t});\r\n\r\n\t\tmodels.UsersCollection = Backbone.Collection.extend({\r\n\t\t model: models.User\r\n\t\t});\r\n\r\n\t\tmodels.Wrapper = Backbone.Model.extend({});\r\n\r\n\r\n\r\n\t })()\r\n\r\n## New JSON export/import model methods (available on server and client)\r\n### xport()\r\nExports object to JSON.\r\n### mport()\r\nImport data into object from JSON.\r\nEJS example:\r\n\r\n var user1 = new models.User();\r\n user1.mport('<%- user1.xport() %>');\r\n \r\n\r\n## New server-side Backbone properties/methods\r\n### search(model_class,pattern,cb,err_cb)\r\n\r\nExample:\r\n\r\n models.Backbone.search(models.User,\"*\",function(results) {\r\n // follow the fetch collections results where results are an array of Backbone model attributes and not Backbone model objects\r\n // NOTE: if (new models.User()).name === \"user\", then Redis is searched with \"keys user:*\" command\r\n // So, we can load the collections ourselves\r\n var users = new models.UsersCollection(results);\r\n ... do something with users Backbone collection\r\n },function(err) { console.log(err); });\r\n\r\n### search_delete(model_class,keypattern,cb,cb_err)\r\nSame as search() but will delete the objects of model_class who's IDs match the keypattern\r\n### setClient(rc)\r\nSetup Redis client to avoid creating a second Redis connection.\r\n### initServer(app)\r\nSetup a connect/express app with a handler to add a new server route the xport/mport script to the client. Script can be then include on the client:\r\n \r\n### debug\r\nSet this property to true to show debugging information.\r\n\r\n## Typical usage on the server:\r\nOnce your models.js file is defined like above to include the server-side redis stuff. You simply include your models:\r\n\r\n var models = require('./models/models');\r\nYou can access Backbone through models.Backbone.\r\n\r\n## Typical includes on the client:\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n## Redis data store\r\nServer-side, you can use standard Backbone methods to save/persist to redis. The store uses the xport() and mport() methods to save and fetch the objects content in Redis. You can use the usual Backbone model and collections methods such as:\r\n\r\n* model.fetch()\r\n* model.save()\r\n* collection.fetch()\r\n\r\nYou can supply your own Backbone IDs through the id property/attributes in Backbone models. If not supplied, the record will be incremented through a Redis incr counter. For example, the User model with it's name=\"user\" will internally use these Redis keys:\r\n\r\n Record keys -> user:[ID] (i.e.: \"user:1\", \"user:2\", \"user:3\", etc.\r\n Counter key -> \"next.user.id\"\r\n\r\nYou can specify your own keys to manually create relationship records. For example:\r\n\tmodels.User = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull,\r\n\t\t\t\"name\":\t\tnull\r\n\t\t},\r\n\t\tname: \"user\"\r\n\t});\r\n\r\n\t\t\r\n\tmodels.Group = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull\r\n\t\t\t\"name\":\t\tnull\r\n\t\t},\r\n\t\tname: \"group\"\r\n\t});\r\n\r\n\tmodels.UserGroup = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull\r\n\t\t\t\"specs\":\tnull\r\n\t\t},\r\n\t\tname: \"usergroup\"\r\n\t});\r\n\t...\r\n\t// user is loaded or fetched and has an id = 1 (Redis key: \"user:1\")\r\n\t//\r\n\t// group1 and group2 are fetched/saved and have ids 1 and 2 (Redis keys \"group:1\" & \"group:2\"\r\n\t...\r\n\tvar usergroup1 = new models.UserGroup({userid:user.id,groupid:group1.id});\r\n\tusergroup1.id = \"group:\" + group1.id + \":user:\" + user.id;\r\n\tusergroup1.save({},{success: function(saved) {\r\n\t\tconsole.log(\"Saved usergroup1: \" + saved.xport());\r\n\t}});\r\n\tvar usergroup2 = new models.UserGroup({userid:user.id,groupid:group2.id});\r\n\tusergroup2.id = \"group:\" + group2.id + \":user:\" + user.id;\r\n\tusergroup2.save({},{success: function(saved) {\r\n\t\tconsole.log(\"Saved usergroup2: \" + saved.xport());\r\n\r\n\t}});\r\n\t// Will create the user group records with Redis keys= \"usergroup:group:1:user:1\" and \"usergroup:group:2:user:1\"\r\n\r\n\r\n# Acknowledgments\r\n \r\n* xport()/mport() code taken from this fine article: http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/\r\n* This article inspired me to add Node.js server-side Redis support to backbone\r\n\r\n# Disclaimer / To Do\r\n\r\n* Use at your own risk\r\n* Some code is redundant. Some cleanup to do.\r\n* Haven't tested for Redis injection vulnerability. Sanitize/check IDs on server before doing any fetch/create, etc.\r\n* It was created to do everything on the server and push some updates to the client through socket.io. Could add some express routes and backbone.js code on client-side to make calls from the client.\r\n* No Redis pub/sub features\r\n\r\n# MIT License\r\n\r\nCopyright (c) 2011 Jerome Paradis\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n","maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]},"0.0.9":{"name":"server-backbone-redis","description":"Server-side backbone redis store for node.js. Also supports object/JSON export/import for server-side and client-side.","url":"http://github.com/JeromeParadis/server-backbone-redis/","keywords":["server-side","backbone","redis","store","data","model"],"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"contributors":[],"dependencies":{"redis":">=0.6.7","underscore":">=1.1.2","backbone":">=0.5.3"},"lib":"./lib","main":"server-backbone-redis.js","version":"0.0.9","_npmUser":{"name":"jeromeparadis","email":"paradis.jerome+npm@gmail.com"},"_id":"server-backbone-redis@0.0.9","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"b489178359536066333ba1dfb8fcdfa5c0df5b79","tarball":"http://registry.npmjs.org/server-backbone-redis/-/server-backbone-redis-0.0.9.tgz"},"readme":"# Why?\r\n\r\nI created this module because in a socket.io app I'm working on, all data is created, processed and persisted on the server. By having the models on the server-side with a Redis data store, it is easy to persist the data. With the export/import to JSON from JSON functionality, I can easily push data to clients connected through socket.io. Then, on the client-side, I continue to use the backbone models within views to update the UI.\r\n\r\n# Documentation\r\n\r\n* For up-to-date documentation, see the [Wiki](https://github.com/JeromeParadis/server-backbone-redis/wiki)\r\n* I sometimes update the doc at the bottom of this README\r\n\r\n# Dependencies\r\n\r\n\tnpm install underscore\r\n\tnpm install backbone\r\n\tnpm install redis\r\n\r\n# Install Latest version\r\n\r\n\tnpm install server-backbone-redis\r\n\t\r\n# Howto\r\n\r\n## Documentation\r\n\r\nThis module does two things:\r\n\r\n* sharing of models through server and client for a single code base\r\n* using Redis on the server-side as a data store to Backbone\r\n\r\n## Backbone Models\r\nYou can share your Backbone models for a single definition on the server and the client. Example of a ./models/models.js file. It uses CommonJS to include the right stuff when included in a node application. On the server side and client side, you will always use models.Backbone instead of Backbone.\r\n\r\nCreate the name property in your models to define the object name. This name will be reused to generate Redis keys. Example:\r\n\r\n* Model name = \"user\", ID=2 -> Redis key = \"user:2\"\r\n\t\r\n\t (function () {\r\n\t var server = false, models;\r\n\t if (typeof exports !== 'undefined') {\r\n\t\tBackbone = require('../../../server-backbone-redis');\r\n\r\n\t\tmodels = exports;\r\n\t\tserver = true;\r\n\r\n\t } else {\r\n\t\tmodels = this.models = {};\r\n\t }\r\n\r\n\t\tmodels.Backbone = Backbone;\r\n\r\n\t //\r\n\t //models\r\n\t //\r\n\t\tmodels.User = Backbone.Model.extend({\r\n\t\t\tdefaults: {\r\n\t\t\t\t\"id\":\t\tnull,\r\n\t\t\t\t\"name\":\t\tnull,\r\n\t\t\t\t\"entry\": null\r\n\t\t\t},\r\n\t\t\tinitialize: function() {\r\n\t\t\t\tvar time = new Date();\r\n\t\t\t\tif (!this.get(\"entry\"))\r\n\t\t\t\t\tthis.set({entry: time});\r\n\t\t\t},\r\n\t\t\tname: \"testuser\"\r\n\t\t});\r\n\r\n\t\tmodels.UsersCollection = Backbone.Collection.extend({\r\n\t\t model: models.User\r\n\t\t});\r\n\r\n\t\tmodels.Wrapper = Backbone.Model.extend({});\r\n\r\n\r\n\r\n\t })()\r\n\r\n## New JSON export/import model methods (available on server and client)\r\n### xport()\r\nExports object to JSON.\r\n### mport()\r\nImport data into object from JSON.\r\nEJS example:\r\n\r\n var user1 = new models.User();\r\n user1.mport('<%- user1.xport() %>');\r\n \r\n\r\n## New server-side Backbone properties/methods\r\n### search(model_class,pattern,cb,err_cb)\r\n\r\nExample:\r\n\r\n models.Backbone.search(models.User,\"*\",function(results) {\r\n // follow the fetch collections results where results are an array of Backbone model attributes and not Backbone model objects\r\n // NOTE: if (new models.User()).name === \"user\", then Redis is searched with \"keys user:*\" command\r\n // So, we can load the collections ourselves\r\n var users = new models.UsersCollection(results);\r\n ... do something with users Backbone collection\r\n },function(err) { console.log(err); });\r\n\r\n### search_delete(model_class,keypattern,cb,cb_err)\r\nSame as search() but will delete the objects of model_class who's IDs match the keypattern\r\n### setClient(rc)\r\nSetup Redis client to avoid creating a second Redis connection.\r\n### initServer(app)\r\nSetup a connect/express app with a handler to add a new server route the xport/mport script to the client. Script can be then include on the client:\r\n \r\n### debug\r\nSet this property to true to show debugging information.\r\n\r\n## Typical usage on the server:\r\nOnce your models.js file is defined like above to include the server-side redis stuff. You simply include your models:\r\n\r\n var models = require('./models/models');\r\nYou can access Backbone through models.Backbone.\r\n\r\n## Typical includes on the client:\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n## Redis data store\r\nServer-side, you can use standard Backbone methods to save/persist to redis. The store uses the xport() and mport() methods to save and fetch the objects content in Redis. You can use the usual Backbone model and collections methods such as:\r\n\r\n* model.fetch()\r\n* model.save()\r\n* collection.fetch()\r\n\r\nYou can supply your own Backbone IDs through the id property/attributes in Backbone models. If not supplied, the record will be incremented through a Redis incr counter. For example, the User model with it's name=\"user\" will internally use these Redis keys:\r\n\r\n Record keys -> user:[ID] (i.e.: \"user:1\", \"user:2\", \"user:3\", etc.\r\n Counter key -> \"next.user.id\"\r\n\r\nYou can specify your own keys to manually create relationship records. For example:\r\n\tmodels.User = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull,\r\n\t\t\t\"name\":\t\tnull\r\n\t\t},\r\n\t\tname: \"user\"\r\n\t});\r\n\r\n\t\t\r\n\tmodels.Group = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull\r\n\t\t\t\"name\":\t\tnull\r\n\t\t},\r\n\t\tname: \"group\"\r\n\t});\r\n\r\n\tmodels.UserGroup = Backbone.Model.extend({\r\n\t\tdefaults: {\r\n\t\t\t\"id\":\t\tnull\r\n\t\t\t\"specs\":\tnull\r\n\t\t},\r\n\t\tname: \"usergroup\"\r\n\t});\r\n\t...\r\n\t// user is loaded or fetched and has an id = 1 (Redis key: \"user:1\")\r\n\t//\r\n\t// group1 and group2 are fetched/saved and have ids 1 and 2 (Redis keys \"group:1\" & \"group:2\"\r\n\t...\r\n\tvar usergroup1 = new models.UserGroup({userid:user.id,groupid:group1.id});\r\n\tusergroup1.id = \"group:\" + group1.id + \":user:\" + user.id;\r\n\tusergroup1.save({},{success: function(saved) {\r\n\t\tconsole.log(\"Saved usergroup1: \" + saved.xport());\r\n\t}});\r\n\tvar usergroup2 = new models.UserGroup({userid:user.id,groupid:group2.id});\r\n\tusergroup2.id = \"group:\" + group2.id + \":user:\" + user.id;\r\n\tusergroup2.save({},{success: function(saved) {\r\n\t\tconsole.log(\"Saved usergroup2: \" + saved.xport());\r\n\r\n\t}});\r\n\t// Will create the user group records with Redis keys= \"usergroup:group:1:user:1\" and \"usergroup:group:2:user:1\"\r\n\r\n\r\n# Acknowledgments\r\n \r\n* xport()/mport() code taken from this fine article: http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/\r\n* This article inspired me to add Node.js server-side Redis support to backbone\r\n\r\n# Disclaimer / To Do\r\n\r\n* Use at your own risk\r\n* Some code is redundant. Some cleanup to do.\r\n* Haven't tested for Redi>Xqùs injection vulnerability. Sanitize/check IDs on server before doing any fetch/create, etc.\r\n* It was created to do everything on the server and push some updates to the client through socket.io. Could add some express routes and backbone.js code on client-side to make calls from the client.\r\n* No Redis pub/sub features\r\n\r\n# MIT License\r\n\r\nCopyright (c) 2011 Jerome Paradis\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n","maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}]}},"maintainers":[{"name":"jeromeparadis","email":"jparadis@paradivision.com"}],"time":{"modified":"2012-06-06T14:29:50.180Z","created":"2011-09-10T23:17:39.977Z","0.0.1":"2011-09-10T23:17:40.899Z","0.0.2":"2011-09-10T23:22:43.963Z","0.0.3":"2011-09-10T23:29:25.904Z","0.0.4":"2011-09-12T22:44:47.442Z","0.0.5":"2011-09-19T23:59:18.132Z","0.0.6":"2011-09-20T15:49:12.338Z","0.0.7":"2011-10-01T17:31:02.942Z","0.0.8":"2012-04-24T20:57:10.732Z","0.0.9":"2012-06-06T14:29:50.180Z"},"author":{"name":"Jerome Paradis","email":"jparadis@paradivision.com"},"_id":"server-backbone-redis","_rev":"1-8f23fbbcac1771190e65bc40b9759250"} ÿdocument-storeÿseed-filestore¡{"id":"seed-filestore","rev":"1-d80b27fa17e07f6d2d7f7f51ca5d154a","rev_tree":[{"pos":1,"ids":["d80b27fa17e07f6d2d7f7f51ca5d154a",{"status":"available"},[]]}],"rev_map":{"1-d80b27fa17e07f6d2d7f7f51ca5d154a":3758},"winningRev":"1-d80b27fa17e07f6d2d7f7f51ca5d154a","deleted":false,"seq":3758}ÿby-sequenceÿ0000000000003758ùa{"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","dist-tags":{"latest":"0.3.0"},"versions":{"0.0.1":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.4.8"},"dependencies":{"tea":"0.1.x","oath":"0.0.x"},"devDependencies":{"sherlock":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.0.1","_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b5412f5f3070065e8bccb5d46ba3205a7e436505","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.0.1.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.0.2":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.0.2","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.4.8"},"dependencies":{"tea":"0.1.x","oath":"0.0.x"},"devDependencies":{"sherlock":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.0.2","_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"615add26d93642b56448bb81baa705f7d29a59a8","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.0.2.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.0.3":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.0.3","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.4.8 < 0.7.0"},"dependencies":{"tea":"0.1.x","oath":"0.0.x"},"devDependencies":{"sherlock":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.0.3","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"caab01666447cbf56d231508a17f36f2c401d87f","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.0.3.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.0.4":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.0.4","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.4.0"},"dependencies":{"tea":"0.1.x","oath":"0.1.x"},"devDependencies":{"sherlock":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.0.4","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"636766758b85164dae7f152ae1ee29eb4eda1617","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.0.4.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.1.0":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.1.0","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"a507e48ee2601cc1704b65367be8e905fff4b9cb","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.1.0.tgz"},"readme":"# Seed Filestore\n\nFor use with [Seed](http://github.com/logicalparadox/seed). Documentation coming soon.","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.1.1":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.1.1","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.1.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"55ac97d0b543c9ba61f928724fe094ea83565b7c","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.1.1.tgz"},"readme":"# Seed Filestore\n\nFor use with [Seed](http://github.com/logicalparadox/seed). Documentation coming soon.","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.0":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.2.0","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"ee3c6cc038947e69fea7f9269d5fcc69723a57aa","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.2.0.tgz"},"readme":"# Seed Filestore\n\nFor use with [Seed](http://github.com/logicalparadox/seed). Documentation coming soon.","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.1":{"author":{"name":"Jake Luer","email":"@jakeluer"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.2.1","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"b15b4a97628f534aeffbe92b3dc4f498dfa05f66","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.2.1.tgz"},"readme":"# Seed Filestore\n\nFor use with [Seed](http://github.com/logicalparadox/seed). Documentation coming soon.","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.3.0":{"author":{"name":"Jake Luer","email":"jake@qualiancy.com"},"name":"seed-filestore","description":"Store Seed datasets in a JSON file structure.","version":"0.3.0","repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"main":"index","engines":{"node":">= 0.6.0"},"dependencies":{"fsagent":"0.3.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.4.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-filestore@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"a0953ef3b39c2fffe347b0a4a0581adc72b8453f","tarball":"http://registry.npmjs.org/seed-filestore/-/seed-filestore-0.3.0.tgz"},"readme":"# Seed Filestore\n\nThis module provides a storage addon for [Seed](http://github.com/qualiancy/seed) that allows for\ndatasets to be stored in JSON files.\n\n## Installation\n\nModule is available through npm. To use it in your project you must also have `seed` installed,\nas it is not provided as `package.json` requirement.\n\n npm install seed seed-filestore\n\n## What is Seed?\n\n[Seed](http://github.com/qualiancy/seed), which stands for _storage-agnostic, event emitting datasets_, \nis a library of components that provide a common API for working with data, no matter the source. \nThese compoents are Hash, Model, Graph, and Schema. Redis can be one the many sources used in \nthe construction eventful, data-centric applications.\n\n[Visit the Seed project page](http://github.com/qualiancy/seed) to learn more.\n\n## Usage\n\nThis storage engine can be used for both models and collections. \n\n```js\nvar Seed = require('seed')\n , RedisStore = require('seed-filestore')\n , dir = require('path').join(__dirname, 'data')\n , store = new FileStore(dir);\n\nvar Person = Seed.Model.extend('person', {\n store: store\n});\n\nvar arthur = new Person({\n id: 'arthur'\n , name: 'Arthur Dent'\n , occupation: 'Traveller'\n});\n\narthur.save(function (err) {\n if (err) return console.error(err);\n console.log('Arthur has been saved!');\n});\n```\n\n## Querying\n\nIn short, 'querying' takes place in-process.\n\nWhen fetching from a Graph, seed-filestore will load all documents of the requested type into memory\nthen filter the result-set given a provided query. Queries must be written in using seed's included\nquery language (which is very similiar to MongoDb's query style). For more information on constructing\nwell-formed queries, check out Seed's documentation on [query language](http://github.com/qualiancy/seed).\n\n```js\nvar HitchhikersGuide = Seed.Graph.extend({\n store: store\n , initialize: function () {\n this.define(Person);\n }\n});\n\nvar myGuide = new HitchhikersGuide();\nmyGuide.fetch('person', { 'name': 'Arthur Dent' }, function (err) {\n var arthur = self.get('/person/arthur');\n});\n```\n\n## Tests\n\nTests are writting in [Mocha](http://github.com/visionmedia/mocha) using the [Chai](http://chaijs.com)\n`should` BDD assertion library. Make sure you have that installed, clone this repo, install dependacies using `npm install`.\n\n $ make test\n\n## Getting Help\n\nAll issues related to this project should be posted in [seed-filestore GitHub Issues](https://github.com/qualiancy/seed-filestore/issues).\nFor all general seed related issues, please visit [seed's GitHub Issues](https://github.com/qualiancy/seed/issues).\nThere is also a community forum is available at the [Seed Google Group](https://groups.google.com/group/seedjs-orm).\n\n## Contributors\n\nInterested in contributing? Fork to get started. Contact [@logicalparadox](http://github.com/logicalparadox) \nif you are interested in being regular contributor.\n\n* Jake Luer ([@logicalparadox](http://github.com/logicalparadox))\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Jake Luer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]}},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"time":{"modified":"2012-07-11T00:14:53.187Z","created":"2011-10-26T01:06:51.868Z","0.0.1":"2011-10-26T01:06:52.524Z","0.0.2":"2011-10-26T23:25:47.874Z","0.0.3":"2011-11-11T15:18:52.548Z","0.0.4":"2011-12-14T09:34:25.372Z","0.1.0":"2012-01-09T05:57:45.031Z","0.1.1":"2012-01-12T01:47:01.986Z","0.2.0":"2012-01-27T12:09:02.202Z","0.2.1":"2012-01-27T13:52:13.164Z","0.3.0":"2012-07-11T00:14:53.187Z"},"author":{"name":"Jake Luer","email":"jake@qualiancy.com"},"repository":{"type":"git","url":"git://github.com/logicalparadox/seed-filestore.git"},"_id":"seed-filestore","_rev":"1-d80b27fa17e07f6d2d7f7f51ca5d154a"} ÿdocument-storeÿseaport-stream¡{"id":"seaport-stream","rev":"1-2ce5c04b1d7265976ad0aa0f97f44c90","rev_tree":[{"pos":1,"ids":["2ce5c04b1d7265976ad0aa0f97f44c90",{"status":"available"},[]]}],"rev_map":{"1-2ce5c04b1d7265976ad0aa0f97f44c90":3757},"winningRev":"1-2ce5c04b1d7265976ad0aa0f97f44c90","deleted":false,"seq":3757}ÿby-sequenceÿ0000000000003757Ç{"name":"seaport-stream","description":"Create streams over seaport","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"seaport-stream","version":"0.0.1","description":"Create streams over seaport","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-stream.git"},"main":"index","homepage":"https://github.com/Raynos/seaport-stream","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/seaport-stream/issues","email":"raynos2@gmail.com"},"dependencies":{"seaport":"~0.8.0","deck":"0.0.4","pause-stream":"0.0.3","request":"~2.10.0","through":"~0.1.4","event-stream":"~2.2.0"},"devDependencies":{"testling":"git://github.com/Raynos/testling#master","testem":"git://github.com/Raynos/testem#master","sinon":"git://github.com/Raynos/Sinon.JS.git","tap":"0.2.5"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/seaport-stream/raw/master/LICENSE"}],"scripts":{},"readme":"# seaport-stream [![build status][1]][2]\n\nCreate streams over seaport\n\nBasically seaport but allows you to get streams and service streams rather then mess with the details of the IO protocol\n\n## Example Client\n\n``` js\nvar seaport = require(\"seaport-stream\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar stream = ports.get(\"magic@1.2.x\")\n\nstream.on(\"data\", function (data) {\n console.log(\"[CLIENT]\", data.toString())\n})\nstream.write(\"hello from client!\")\n```\n\n## Example Server\n\n``` js\nvar seaport = require(\"seaport-stream\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", handleStream)\n\nfunction handleStream(stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n}\n```\n\n## Installation\n\n`npm install seaport-stream`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-stream.png\n [2]: http://travis-ci.org/Raynos/seaport-stream","_id":"seaport-stream@0.0.1","dist":{"shasum":"b409ef65ccbf9e880e59c99b17649f6956b384f3","tarball":"http://registry.npmjs.org/seaport-stream/-/seaport-stream-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# seaport-stream [![build status][1]][2]\n\nCreate streams over seaport\n\nBasically seaport but allows you to get streams and service streams rather then mess with the details of the IO protocol\n\n## Example Client\n\n``` js\nvar seaport = require(\"seaport-stream\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar stream = ports.get(\"magic@1.2.x\")\n\nstream.on(\"data\", function (data) {\n console.log(\"[CLIENT]\", data.toString())\n})\nstream.write(\"hello from client!\")\n```\n\n## Example Server\n\n``` js\nvar seaport = require(\"seaport-stream\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", handleStream)\n\nfunction handleStream(stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n}\n```\n\n## Installation\n\n`npm install seaport-stream`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-stream.png\n [2]: http://travis-ci.org/Raynos/seaport-stream","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-08-08T07:42:17.185Z","created":"2012-08-08T07:42:15.705Z","0.0.1":"2012-08-08T07:42:17.185Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-stream.git"},"_id":"seaport-stream","_rev":"1-2ce5c04b1d7265976ad0aa0f97f44c90"}ÿdocument-storeÿseaport-proxy {"id":"seaport-proxy","rev":"1-294820cc99119b7d085b2c40ee946355","rev_tree":[{"pos":1,"ids":["294820cc99119b7d085b2c40ee946355",{"status":"available"},[]]}],"rev_map":{"1-294820cc99119b7d085b2c40ee946355":3756},"winningRev":"1-294820cc99119b7d085b2c40ee946355","deleted":false,"seq":3756}ÿby-sequenceÿ0000000000003756ØQ{"name":"seaport-proxy","description":"Seaport in the browser!","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"seaport-proxy","version":"0.1.0","description":"Seaport in the browser!","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-proxy.git"},"main":"index","homepage":"https://github.com/Raynos/seaport-proxy","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/seaport-proxy/issues","email":"raynos2@gmail.com"},"browserify":"browser.js","dependencies":{"pause-stream":"0.0.3","deck":"0.0.4","ap":"~0.1.0","through":"~0.1.3","seaport":"~0.8.0"},"devDependencies":{"boot":"~0.6.0","browserify":"~1.14.5","ecstatic":"~0.1.6","routes":"~0.1.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/seaport-proxy/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# seaport-proxy [![build status][1]][2]\n\nSeaport in the browser!\n\n## Client Example\n\n``` js\nvar boot = require(\"boot\")\n , mdm = boot(\"/boot\")\n , seaport = require(\"seaport-proxy\")\n , ports = seaport(mdm)\n\nvar stream = ports.get(\"magic@1.2.x\")\nstream.on(\"data\", console.log.bind(console, \"[BROWSER]\"))\n\nstream.write(\"hello from browser!\")\n```\n\n## Server example\n\n``` js\nvar boot = require(\"boot\")\n , seaport = require(\"seaport\")\n , Router = require(\"routes\").Router\n , seaport = require(\"../..\")\n\nvar sock = boot(streamHandler)\nsock.install(someHttpServer, '/boot')\nconsole.log(\"sock hooked on\", \"/boot\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar streamRouter = new Router()\nstreamRouter.addRoute(\"/seaport/get/:service\", ports.get)\n\nfunction streamHandler(stream) {\n var route = streamRouter.match(stream.meta)\n if (route) {\n route.fn(stream, route.params)\n }\n}\n```\n\n## Magic service\n\n``` js\nvar seaport = require(\"seaport\")\n , net = require(\"net\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", createMagic)\n\nfunction createMagic(port, done) {\n var server = net.createServer(function (stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n })\n server.listen(port, done)\n console.log(\"magic service hooked on port\", port)\n}\n```\n\n## Installation\n\n`npm install seaport-proxy`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-proxy.png\n [2]: http://travis-ci.org/Raynos/seaport-proxy","_id":"seaport-proxy@0.1.0","dist":{"shasum":"1e7de346b4d9b07734e9717f4cc0f7b6e5f6b058","tarball":"http://registry.npmjs.org/seaport-proxy/-/seaport-proxy-0.1.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.2.0":{"name":"seaport-proxy","version":"0.2.0","description":"Seaport in the browser!","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-proxy.git"},"main":"index","homepage":"https://github.com/Raynos/seaport-proxy","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/seaport-proxy/issues","email":"raynos2@gmail.com"},"browserify":"browser.js","dependencies":{"pause-stream":"0.0.3","deck":"0.0.4","ap":"~0.1.0","through":"~0.1.3","seaport":"~0.8.0"},"devDependencies":{"boot":"~0.6.0","browserify":"~1.14.5","ecstatic":"~0.1.6","routes":"~0.1.1","browserify-server":"0.0.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/seaport-proxy/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# seaport-proxy\n\nSeaport in the browser!\n\n## Client Example\n\n``` js\nvar boot = require(\"boot\")\n , mdm = boot(\"/boot\")\n , seaport = require(\"seaport-proxy\")\n , ports = seaport(mdm)\n\nvar stream = ports.get(\"magic@1.2.x\")\nstream.on(\"data\", console.log.bind(console, \"[BROWSER]\"))\n\nstream.write(\"hello from browser!\")\n```\n\n## Server example\n\n``` js\nvar boot = require(\"boot\")\n , seaport = require(\"seaport\")\n , Router = require(\"routes\").Router\n , seaport = require(\"../..\")\n\nvar sock = boot(streamHandler)\nsock.install(someHttpServer, '/boot')\nconsole.log(\"sock hooked on\", \"/boot\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar streamRouter = new Router()\nstreamRouter.addRoute(\"/seaport/get/:service\", ports.get)\n\nfunction streamHandler(stream) {\n var route = streamRouter.match(stream.meta)\n if (route) {\n route.fn(stream, route.params)\n }\n}\n```\n\n## Magic service\n\n``` js\nvar seaport = require(\"seaport\")\n , net = require(\"net\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", createMagic)\n\nfunction createMagic(port, done) {\n var server = net.createServer(function (stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n })\n server.listen(port, done)\n console.log(\"magic service hooked on port\", port)\n}\n```\n\n## Installation\n\n`npm install seaport-proxy`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-proxy.png\n [2]: http://travis-ci.org/Raynos/seaport-proxy","_id":"seaport-proxy@0.2.0","dist":{"shasum":"96d7c8c36aeeb32b99a3c676279ce982310d214f","tarball":"http://registry.npmjs.org/seaport-proxy/-/seaport-proxy-0.2.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]},"0.3.0":{"name":"seaport-proxy","version":"0.3.0","description":"Seaport in the browser!","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-proxy.git"},"main":"index","homepage":"https://github.com/Raynos/seaport-proxy","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/seaport-proxy/issues","email":"raynos2@gmail.com"},"browserify":"browser.js","dependencies":{"pause-stream":"0.0.3","deck":"0.0.4","ap":"~0.1.0","through":"~0.1.3","seaport":"~0.8.0"},"devDependencies":{"boot":"~0.6.0","browserify":"~1.14.5","ecstatic":"~0.1.6","routes":"~0.1.1","browserify-server":"0.0.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/seaport-proxy/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# seaport-proxy\n\nSeaport in the browser!\n\n## Client Example\n\n``` js\nvar boot = require(\"boot\")\n , mdm = boot(\"/boot\")\n , seaport = require(\"seaport-proxy\")\n , ports = seaport(mdm)\n\nvar stream = ports.get(\"magic@1.2.x\")\nstream.on(\"data\", console.log.bind(console, \"[BROWSER]\"))\n\nstream.write(\"hello from browser!\")\n```\n\n## Server example\n\n``` js\nvar boot = require(\"boot\")\n , Router = require(\"routes\").Router\n , seaport = require(\"seaport-proxy\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar sock = boot(ports)\nsock.install(someHttpServer, '/boot')\nconsole.log(\"sock hooked on\", \"/boot\")\n```\n\n## Magic service\n\n``` js\nvar seaport = require(\"seaport\")\n , net = require(\"net\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", createMagic)\n\nfunction createMagic(port, done) {\n var server = net.createServer(function (stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n })\n server.listen(port, done)\n console.log(\"magic service hooked on port\", port)\n}\n```\n\n## Installation\n\n`npm install seaport-proxy`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-proxy.png\n [2]: http://travis-ci.org/Raynos/seaport-proxy","_id":"seaport-proxy@0.3.0","dist":{"shasum":"ad8cceae3a16c27407b81c844d6a7c9d5fc019c7","tarball":"http://registry.npmjs.org/seaport-proxy/-/seaport-proxy-0.3.0.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# seaport-proxy [![build status][1]][2]\n\nSeaport in the browser!\n\n## Client Example\n\n``` js\nvar boot = require(\"boot\")\n , mdm = boot(\"/boot\")\n , seaport = require(\"seaport-proxy\")\n , ports = seaport(mdm)\n\nvar stream = ports.get(\"magic@1.2.x\")\nstream.on(\"data\", console.log.bind(console, \"[BROWSER]\"))\n\nstream.write(\"hello from browser!\")\n```\n\n## Server example\n\n``` js\nvar boot = require(\"boot\")\n , seaport = require(\"seaport\")\n , Router = require(\"routes\").Router\n , seaport = require(\"../..\")\n\nvar sock = boot(streamHandler)\nsock.install(someHttpServer, '/boot')\nconsole.log(\"sock hooked on\", \"/boot\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nvar streamRouter = new Router()\nstreamRouter.addRoute(\"/seaport/get/:service\", ports.get)\n\nfunction streamHandler(stream) {\n var route = streamRouter.match(stream.meta)\n if (route) {\n route.fn(stream, route.params)\n }\n}\n```\n\n## Magic service\n\n``` js\nvar seaport = require(\"seaport\")\n , net = require(\"net\")\n\nvar ports = seaport.connect(\"localhost\", 9093)\n\nports.service(\"magic@1.2.3\", createMagic)\n\nfunction createMagic(port, done) {\n var server = net.createServer(function (stream) {\n stream.write(\"hello from magic!\")\n stream.on(\"data\", function (data) {\n console.log(\"[MAGIC]\", data.toString())\n })\n })\n server.listen(port, done)\n console.log(\"magic service hooked on port\", port)\n}\n```\n\n## Installation\n\n`npm install seaport-proxy`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/seaport-proxy.png\n [2]: http://travis-ci.org/Raynos/seaport-proxy","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-08-08T07:01:24.222Z","created":"2012-08-07T06:37:39.999Z","0.1.0":"2012-08-07T06:37:41.467Z","0.2.0":"2012-08-08T05:35:06.993Z","0.3.0":"2012-08-08T07:01:24.222Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/seaport-proxy.git"},"_id":"seaport-proxy","_rev":"1-294820cc99119b7d085b2c40ee946355"}ÿdocument-storeÿsaxtojsonœ{"id":"saxtojson","rev":"1-68744b029a016314da89cb62f35815b2","rev_tree":[{"pos":1,"ids":["68744b029a016314da89cb62f35815b2",{"status":"available"},[]]}],"rev_map":{"1-68744b029a016314da89cb62f35815b2":3755},"winningRev":"1-68744b029a016314da89cb62f35815b2","deleted":false,"seq":3755}ÿby-sequenceÿ0000000000003755ðQ{"name":"saxtojson","description":"Converts sax file into json","dist-tags":{"latest":"0.0.10"},"versions":{"0.0.1":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.1","repository":{"type":"git","url":"git://github.com/fragphace/sax2json.git"},"main":"lib/sax2json.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"edffc1c4ad79e36981229c806d58d3f02700ce85","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.1.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.2":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.2","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"sax2json":"bin/saxtojson"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fe7984a0f010ccc896f2d0e33acc378d9db355e1","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.2.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.3":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.3","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"sax2json":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"918df7619c63426edc9ac5ee481b4ace9069865c","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.3.tgz"},"maintainers":[{"name":"fragï %ùphace","email":"fragphace@gmail.com"}]},"0.0.4":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.4","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"sax2json":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.4","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"df71a2f6407b0f0cc44d64d58028ec418b6a41f3","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.4.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.5":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.5","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.5","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fb108fbad51ea6192cae05d7e17f7aaf44a0dad7","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.5.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.6":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.6","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4","nodeunit":">=0.7.4"},"scripts":{"test":"./test/saxtojson"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.6","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"474e815f7b4b5bb8a22afef83c237891ba9a96e3","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.6.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.7":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.7","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4","nodeunit":">=0.7.4"},"scripts":{"test":"./test/saxtojson"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.7","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"bfe7b8cc0fc9b6b33faccb6641e779d78480694d","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.7.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.8":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.8","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"scripts":{"pretest":"node_modules/jshint/bin/hint bin/* lib/*.js test/*.js","test":"./test/saxtojson"},"devDependencies":{"nodeunit":">=0.7.4","jshint":">=0.7.1"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.8","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b326ffeeb9899fef6e4fd2b4a70ec6186d072f96","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.8.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.9":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.9","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"scripts":{"pretest":"node_modules/jshint/bin/hint bin/* lib/*.js test/*.js","test":"./test/saxtojson"},"devDependencies":{"nodeunit":">=0.7.4","jshint":">=0.7.1"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.9","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"32a8a68e7b5696a3ac329516cf8e58de8e792f40","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.9.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]},"0.0.10":{"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"name":"saxtojson","description":"Converts sax file into json","version":"0.0.10","repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"main":"lib/saxtojson.js","bin":{"saxtojson":"bin/saxtojson"},"dependencies":{"optimist":">=0.3.4"},"scripts":{"pretest":"node_modules/jshint/bin/hint bin/* lib/*.js test/*.js","test":"./test/saxtojson"},"devDependencies":{"nodeunit":">=0.7.4","jshint":">=0.7.1"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"fragphace","email":"fragphace@gmail.com"},"_id":"saxtojson@0.0.10","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7c1a022bdbb9badc86a3db193c041b980af847b9","tarball":"http://registry.npmjs.org/saxtojson/-/saxtojson-0.0.10.tgz"},"maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}]}},"readme":"sax2json\n========\n\nConverts .sax file (yes, I made up this format) into json.\n\n\"Epic\n\n## Installation\n\nDon't have one. Just clone this repository.\n\n## Usage\n\nBrace yourself... execute `bin/sax2json` or require `lib/sax2jsonjs`.\n\n## Sax definition\n\n**Sax file** is a collection of *commands*.\n\n**Command**:\n\n * collection of *arguments* separated by white space. First argument must be a string.\n Block can only be the last argument.\n\n * comment (line starting with `#` and optional trailing white spaces)\n\n * empty line\n\n\n**Argument** is a *string* or *block*.\n\n**String** is a set of chars enclosed by double quotation marks. Quotation\nmarks can be ommited.\n\n**Block** is a set equally indented commands.\n\n## Parsing\n\n### Input\n\n\tclick \"a[name=b]\" \n\t\tequal \"title\" \"foo\"\n\t\tok 2 > 1\n\n### Output\n\n\t[[\n\t\t\"click\", \"a[name=b]\", [[\n\t\t\t\"equal\",\n\t\t\t\"title\",\n\t\t\t\"foo\"\n\t\t], [\n\t\t\t\"ok\":\n\t\t\t\"2\",\n\t\t\t\">\",\n\t\t\t\"1\"\n\t\t]]\n\t]]\n\n\n\n## Tests\n\n\tnodeunit test/sax2json.js \t","maintainers":[{"name":"fragphace","email":"fragphace@gmail.com"}],"time":{"modified":"2012-08-02T20:04:51.306Z","created":"2012-07-16T12:30:00.944Z","0.0.1":"2012-07-16T12:30:03.054Z","0.0.2":"2012-07-16T14:46:45.384Z","0.0.3":"2012-07-16T14:49:51.068Z","0.0.4":"2012-07-16T14:59:56.044Z","0.0.5":"2012-07-16T15:01:44.425Z","0.0.6":"2012-07-19T20:04:48.474Z","0.0.7":"2012-07-19T20:29:53.502Z","0.0.8":"2012-07-24T19:55:21.038Z","0.0.9":"2012-08-02T19:36:33.473Z","0.0.10":"2012-08-02T20:04:51.306Z"},"author":{"name":"fragphace","email":"fragphace@gmail.com","url":"fragphace.pl"},"repository":{"type":"git","url":"git://github.com/fragphace/saxtojson.git"},"users":{"fgribreau":true},"_id":"saxtojson","_rev":"1-68744b029a016314da89cb62f35815b2"}ÿdocument-storeÿs4•{"id":"s4","rev":"1-4bf0e76414ca4c417974f984bd8a4fd2","rev_tree":[{"pos":1,"ids":["4bf0e76414ca4c417974f984bd8a4fd2",{"status":"available"},[]]}],"rev_map":{"1-4bf0e76414ca4c417974f984bd8a4fd2":3754},"winningRev":"1-4bf0e76414ca4c417974f984bd8a4fd2","deleted":false,"seq":3754}ÿby-sequenceÿ0000000000003754ƒ={"name":"s4","description":"super simple storage solution: aws s3 client","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.0","repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"4be9572bd02a231210c515ab943e78ace2a11a54","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.0.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.1":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.1","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"eb389ca4b4aed32f173e1775bd08f82e4a6360da","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.1.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.2":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.2","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"6cfdb2d7b43b776baa9abeaf91eea56f68b20c5e","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.2.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.3":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.3","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"fe2fb4dfdff96db11472f5352c7f9fc55bb1c3da","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.3.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.4":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.4","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"51826d51802843677a20192c89c1b4f7e13275ad","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.4.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.5":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.5","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"3c51b9ff9469b19d8845b264166d18235b0fc05c","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.5.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]},"0.1.6":{"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"name":"s4","description":"super simple storage solution: aws s3 client","version":"0.1.6","license":"MIT","keywords":["aws","s3","s4","amazon"],"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"main":"client","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{"guid":"0.0.10","knox":"0.0.9","sax":"0.4.0","xml2js":"0.1.14","underscore":"1.3.3"},"devDependencies":{"coffee-script":"1.3.1","should":"0.6.3"},"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"_id":"s4@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"e40622aecd5e443aad06407d125904821e15e2b7","tarball":"http://registry.npmjs.org/s4/-/s4-0.1.6.tgz"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"}]}},"readme":"# super simple storage solution client\n\nSuper high level wrapper client for Amazon S3.\n\n## Why?\n\nWanted something cleaner to quickly fuck around w/ S3 without diving into lower level and more verbose http business. Especially decent in the terminal. If you want to be close to the metal I suggest Knox and/or just using Mikeals Request. \n\n## Install\n\n npm install s4\n\n## Usage\n\n var config = {key:'', secret:'', bucket:'io.brian.photos', folder:'funny'}\n , photos = require('s4').create(config)\n , pic = require('path').join(__dirname, 'funny.jpg')\n\n photos.save(pic, function(err, key) {\n console.log('key to pic: ' + key)\n })\n\n### API\n\n create(config)\n\n save(path, callback)\n\n keys(callback)\n keys(options, callback)\n\n all(callback)\n all(options, callback)\n\n nuke(callback)\n\n destroy(callback)\n","maintainers":[{"name":"brianleroux","email":"b@brian.io"}],"time":{"modified":"2012-05-18T10:09:20.246Z","created":"2012-05-16T09:23:08.997Z","0.1.0":"2012-05-16T09:23:10.405Z","0.1.1":"2012-05-16T09:31:01.038Z","0.1.2":"2012-05-17T16:54:55.381Z","0.1.3":"2012-05-17T17:33:24.669Z","0.1.4":"2012-05-18T09:51:43.401Z","0.1.5":"2012-05-18T10:00:59.241Z","0.1.6":"2012-05-18T10:09:20.246Z"},"author":{"name":"Brian LeRoux","email":"b@brian.io","url":"brian.io"},"repository":{"type":"git","url":"github.com:brianleroux/s4.git"},"_id":"s4","_rev":"1-4bf0e76414ca4c417974f984bd8a4fd2"}ÿdocument-storeÿrpcio˜{"id":"rpcio","rev":"1-7741e9dd483c8ae186e519c79de15fd1","rev_tree":[{"pos":1,"ids":["7741e9dd483c8ae186e519c79de15fd1",{"status":"available"},[]]}],"rev_map":{"1-7741e9dd483c8ae186e519c79de15fd1":3753},"winningRev":"1-7741e9dd483c8ae186e519c79de15fd1","deleted":false,"seq":3753}ÿby-sequenceÿ0000000000003753ó{"name":"rpcio","description":"rpc.io let's you do remote procedure calls between the browser and node.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"rpcio","version":"0.0.1","description":"rpc.io let's you do remote procedure calls between the browser and node.js","main":"index.js","dependencies":{"sockjs":"0.3.1","node-uuid":"1.3.3"},"readme":"rpc.io\n======\n\nrpc.io let's you do remote procedure calls between the browser and node.js","_id":"rpcio@0.0.1","dist":{"shasum":"ac7f1ea368db113a70268672bad298ef7d631cc3","tarball":"http://registry.npmjs.org/rpcio/-/rpcio-0.0.1.tgz"},"maintainers":[{"name":"mstumpp","email":"mstumpp@gmail.com"}]}},"readme":"rpc.io\n======\n\nrpc.io let's you do remote procedure calls between the browser and node.js","maintainers":[{"name":"mstumpp","email":"mstumpp@gmail.com"}],"time":{"modified":"2012-08-23T10:00:17.809Z","created":"2012-08-23T10:00:15.989Z","0.0.1":"2012-08-23T10:00:17.809Z"},"_id":"rpcio","_rev":"1-7741e9dd483c8ae186e519c79de15fd1"} ÿdocument-storeÿroutil-methods¡{"id":"routil-methods","rev":"1-0667d91f10629755955a41fd7b228d28","rev_tree":[{"pos":1,"ids":["0667d91f10629755955a41fd7b228d28",{"status":"available"},[]]}],"rev_map":{"1-0667d91f10629755955a41fd7b228d28":3752},"winningRev":"1-0667d91f10629755955a41fd7b228d28","deleted":false,"seq":3752}ÿby-sequenceÿ0000000000003752{"name":"routil-methods","description":"Handle multiple methods elegantly","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"routil-methods","version":"0.0.1","description":"Handle multiple methods elegantly","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-methods.git"},"main":"index","homepage":"https://github.com/Raynos/routil-methods","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/routil-methods/issues","email":"raynos2@gmail.com"},"dependencies":{"routil-body":"0.0.2","ap":"~0.1.0","xtend":"~1.0.3","error-page":"0.0.4","routil-contenttypes":"0.0.1"},"devDependencies":{"tap":"0.2.5","test-server":"0.0.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/routil-methods/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# routil-methods [![build status][1]][2]\n\nHandle multiple methods elegantly\n\n## Example\n\n## Installation\n\n`npm install routil-methods`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-methods.png\n [2]: http://travis-ci.org/Raynos/routil-methods","_id":"routil-methods@0.0.1","dist":{"shasum":"545a0f3319bd51732f55f307390c3f180e775f89","tarball":"http://registry.npmjs.org/routil-methods/-/routil-methods-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# routil-methods [![build status][1]][2]\n\nHandle multiple methods elegantly\n\n## Example\n\n## Installation\n\n`npm install routil-methods`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-methods.png\n [2]: http://travis-ci.org/Raynos/routil-methods","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-07-17T06:00:42.654Z","created":"2012-07-17T06:00:31.766Z","0.0.1":"2012-07-17T06:00:42.654Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-methods.git"},"_id":"routil-methods","_rev":"1-0667d91f10629755955a41fd7b228d28"}%ÿdocument-storeÿroutil-contenttypes¦{"id":"routil-contenttypes","rev":"1-af6238ea803e33f5292eeeb420726829","rev_tree":[{"pos":1,"ids":["af6238ea803e33f5292eeeb420726829",{"status":"available"},[]]}],"rev_map":{"1-af6238ea803e33f5292eeeb420726829":3751},"winningRev":"1-af6238ea803e33f5292eeeb420726829","deleted":false,"seq":3751}ÿby-sequenceÿ0000000000003751†{"name":"routil-contenttypes","description":"handle multiple content types","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"routil-contenttypes","version":"0.0.1","description":"handle multiple content types","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-contenttypes.git"},"main":"index","homepage":"https://github.com/Raynos/routil-contenttypes","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/routil-contenttypes/issues","email":"raynos2@gmail.com"},"dependencies":{"iterators":"~0.1.0"},"devDependencies":{"testling":"git://github.com/Raynos/testling#master","testem":"git://github.com/Raynos/testem#master","sinon":"git://github.com/Raynos/Sinon.JS.git","tap":"0.2.5","test-server":"0.0.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/routil-contenttypes/raw/master/LICENSE"}],"scripts":{"test":"make node-test"},"readme":"# routil-contentTypes [![build status][1]][2]\n\nhandle multiple content types\n\n## Example\n\n var http = create(\"http\")\n , contentTypes = require(\"routil-contentTypes\")\n\n http.createServer(function () {\n contentTypes(req, {\n \"text/html\": returnHtml\n , \"application/javascript\": returnJson\n })(req, res)\n }).listen(8080)\n\n function returnHtml(req, res) {\n res.end(\"
  • foo
  • bar
\")\n }\n\n function returnJson(req, res) {\n res.end(JSON.stringify([\"foo\", \"bar\"]))\n }\n\n## Installation\n\n`npm install routil-contentTypes`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-contentTypes.png\n [2]: http://travis-ci.org/Raynos/routil-contentTypes","_id":"routil-contenttypes@0.0.1","dist":{"shasum":"8d7668e587d1388e3554f00beffe17271568e013","tarball":"http://registry.npmjs.org/routil-contenttypes/-/routil-contenttypes-0.0.1.tgz"},"maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}]}},"readme":"# routil-contentTypes [![build status][1]][2]\n\nhandle multiple content types\n\n## Example\n\n var http = create(\"http\")\n , contentTypes = require(\"routil-contentTypes\")\n\n http.createServer(function () {\n contentTypes(req, {\n \"text/html\": returnHtml\n , \"application/javascript\": returnJson\n })(req, res)\n }).listen(8080)\n\n function returnHtml(req, res) {\n res.end(\"
  • foo
  • bar
\")\n }\n\n function returnJson(req, res) {\n res.end(JSON.stringify([\"foo\", \"bar\"]))\n }\n\n## Installation\n\n`npm install routil-contentTypes`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/routil-contentTypes.png\n [2]: http://travis-ci.org/Raynos/routil-contentTypes","maintainers":[{"name":"raynos","email":"raynos2@gmail.com"}],"time":{"modified":"2012-07-17T05:18:13.023Z","created":"2012-07-17T05:18:04.624Z","0.0.1":"2012-07-17T05:18:13.023Z"},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/routil-contenttypes.git"},"_id":"routil-contenttypes","_rev":"1-af6238ea803e33f5292eeeb420726829"}ÿdocument-storeÿrexnameš{"id":"rexname","rev":"1-897e58ff176ecfb9f3bf6862005c6fa0","rev_tree":[{"pos":1,"ids":["897e58ff176ecfb9f3bf6862005c6fa0",{"status":"available"},[]]}],"rev_map":{"1-897e58ff176ecfb9f3bf6862005c6fa0":3750},"winningRev":"1-897e58ff176ecfb9f3bf6862005c6fa0","deleted":false,"seq":3750}ÿby-sequenceÿ0000000000003750Œ4{"name":"rexname","description":"Utility to rename files/folders using regular expressions.","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"rexname","version":"0.1.0","description":"Utility to rename files/folders using regular expressions.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"rexname":"bin/rexname"},"repository":{"type":"git","url":"git://github.com/glenAshley/rexname.git"},"keywords":["rename","regex","utility","file","folder"],"author":{"name":"Glen Ashley Peterson"},"license":"BSD","dependencies":{"coffee-script":"~1.3.3"},"readme":"rexname\n=======\n\nNPM utility module to rename files using regular expressions.\n\n## Installation\n\nInstall globally via NPM\n\n npm install -g rexname\n\n## Usage\n\n\n rexname \n\n\n\n\n- **search**:\n a string or regular expression to match files on.\n e.g. `.txt` or `'/(.*)\\.\\d{4}/i'`\n (Use quotes when for special characters or spaces)\n- **replace**:\n a string used to replace file names.\n Use `$1 $2...` for matched text.\n e.g. `'new $1.$2'`\n\n### Example\n\nfilenames\n\n file1_201208.txt\n file2_201209.txt\n\nrexname command\n\n rexname '/file(\\d+)_(\\d{4})(\\d{2}).txt/i' '$3-$2-module-$1.js'\n\nresult\n\n 2012-08-module-1.js\n 2012-09-module-2.js\n\n","_id":"rexname@0.1.0","dist":{"shasum":"4afa63777b1e41decdeb139fa28b3318fabf9970","tarball":"http://registry.npmjs.org/rexname/-/rexname-0.1.0.tgz"},"maintainers":[{"name":"glenashley","email":"glen@screenrev.com"}]},"0.1.1":{"name":"rexname","version":"0.1.1","description":"Utility to rename files/folders using regular expressions.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"rexname":"bin/rexname"},"repository":{"type":"git","url":"git://github.com/glenAshley/rexname.git"},"keywords":["rename","regex","utility","file","folder"],"author":{"name":"Glen Ashley Peterson"},"license":"BSD","dependencies":{"coffee-script":"~1.3.3"},"readme":"rexname\n=======\n\nNPM utility module to rename files using regular expressions.\n\n## Installation\n\nInstall globally via NPM\n\n npm install -g rexname\n\n## Usage\n\n\n rexname \n\n\n\n\n- **search**:\n a string or regular expression to match files on.\n e.g. `.txt` or `'/(.*)\\.\\d{4}/i'`\n (Use quotes when for special characters or spaces)\n- **replace**:\n a string used to replace file names.\n Use `$1 $2...` for matched text.\n e.g. `'new $1.$2'`\n\n### Example\n\nfilenames\n\n file1_201208.txt\n file2_201209.txt\n\nrexname command\n\n rexname '/file(\\d+)_(\\d{4})(\\d{2}).txt/i' '$3-$2-module-$1.js'\n\nresult\n\n 2012-08-module-1.js\n 2012-09-module-2.js\n\n","_id":"rexname@0.1.1","dist":{"shasum":"108a16becc73c8a1a2825cac6d298ac6c6996522","tarball":"http://registry.npmjs.org/rexname/-/rexname-0.1.1.tgz"},"maintainers":[{"name":"glenashley","email":"glen@screenrev.com"}]},"0.1.2":{"name":"rexname","version":"0.1.2","description":"Utility to rename files/folders using regular expressions.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"rexname":"bin/rexname"},"repository":{"type":"git","url":"git://github.com/glenAshley/rexname.git"},"keywords":["rename","regex","utility","file","folder"],"author":{"name":"Glen Ashley Peterson"},"license":"BSD","dependencies":{"coffee-script":"~1.3.3"},"readme":"rexname\n=======\n\nNPM utility module to rename files using regular expressions.\n\n## Installation\n\nInstall globally via NPM\n\n npm install -g rexname\n\n## Usage\n\n\n rexname \n\n\n\n\n- **search**:\n a string or regular expression to match files on.\n e.g. `.txt` or `'/(.*)\\.\\d{4}/i'`\n (Use quotes when for special characters or spaces)\n- **replace**:\n a string used to replace file names.\n Use `$1 $2...` for matched text.\n e.g. `'new $1.$2'`\n\n### Example\n\nfilenames\n\n file1_201208.txt\n file2_201209.txt\n\nrexname command\n\n rexname '/file(\\d+)_(\\d{4})(\\d{2}).txt/i' '$3-$2-module-$1.js'\n\nresult\n\n 2012-08-module-1.js\n 2012-09-module-2.js\n\n","_id":"rexname@0.1.2","dist":{"shasum":"a3861e4c998b17fe54182c50b284595b57678855","tarball":"http://registry.npmjs.org/rexname/-/rexname-0.1.2.tgz"},"maintainers":[{"name":"glenashley","email":"glen@screenrev.com"}]}},"readme":"rexname\n=======\n\nNPM utility module to rename files using regular expressions.\n\n## Installation\n\nInstall globally via NPM\n\n npm install -g rexname\n\n## Usage\n\n\n rexname \n\n\n\n\n- **search**:\n a string or regular expression to match files on.\n e.g. `.txt` or `'/(.*)\\.\\d{4}/i'`\n (Use quotes when for special characters or spaces)\n- **replace**:\n a string used to replace file names.\n Use `$1 $2...` for matched text.\n e.g. `'new $1.$2'`\n\n### Example\n\nfilenames\n\n file1_201208.txt\n file2_201209.txt\n\nrexname command\n\n rexname '/file(\\d+)_(\\d{4})(\\d{2}).txt/i' '$3-$2-module-$1.js'\n\nresult\n\n 2012-08-module-1.js\n 2012-09-module-2.js\n\n","maintainers":[{"name":"glenashley","email":"glen@screenrev.com"}],"time":{"modified":"2012-08-18T13:45:53.689Z","created":"2012-08-18T13:06:33.227Z","0.1.0":"2012-08-18T13:06:34.613Z","0.1.1":"2012-08-18T13:35:33.431Z","0.1.2":"2012-08-18T13:45:53.689Z"},"author":{"name":"Glen Ashley Peterson"},"repository":{"type":"git","url":"git://github.com/glenAshley/rexname.git"},"_id":"rexname","_rev":"1-897e58ff176ecfb9f3bf6862005c6fa0"}ÿdocument-storeÿreqdir™{"id":"reqdir","rev":"1-757dc4c0892b78b2324c39694bfd7d52","rev_tree":[{"pos":1,"ids":["757dc4c0892b78b2324c39694bfd7d52",{"status":"available"},[]]}],"rev_map":{"1-757dc4c0892b78b2324c39694bfd7d52":3749},"winningRev":"1-757dc4c0892b78b2324c39694bfd7d52","deleted":false,"seq":3749}ÿby-sequenceÿ0000000000003749·{"name":"reqdir","description":"require everything in a directory and bind them to a object","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Christopher Gross","email":"christopher.gross@zoundfx.com","url":"https://github.com/noXtreme21"},"name":"reqdir","description":"require everything in a directory and bind them to a object","version":"0.0.1","repository":{"type":"git","url":"git://github.com/noxtreme/node-reqdir.git"},"engines":{"node":">=0.6.x"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"noXtreme21","email":"christopher.gross@zoundfx.com"},"_id":"reqdir@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d8a2860c7b8bb7b0b5c6dbb5ee8ff08a21022c42","tarball":"http://registry.npmjs.org/reqdir/-/reqdir-0.0.1.tgz"},"maintainers":[{"name":"noXtreme21","email":"christopher.gross@zoundfx.com"}]},"0.0.2":{"author":{"name":"Christopher Gross","email":"christopher.gross@zoundfx.com","url":"https://github.com/noXtreme21"},"name":"reqdir","description":"require everything in a directory and bind them to a object","version":"0.0.2","repository":{"type":"git","url":"git://github.com/noxtreme/node-reqdir.git"},"engines":{"node":">=0.6.x"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"noXtreme21","email":"christopher.gross@zoundfx.com"},"_id":"reqdir@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum"msÔù:"d8122257841d1c6efe06e9d97429c0a808048e3b","tarball":"http://registry.npmjs.org/reqdir/-/reqdir-0.0.2.tgz"},"maintainers":[{"name":"noXtreme21","email":"christopher.gross@zoundfx.com"}]}},"readme":"# require-directory\n\nNode.js module for require everything in a directory and bind them to a object synchronously.\nIf a file is tried to load with a missing dependency inside the file will load at a second attemp after loading the other files. There are maximum 5 attemps.\n\n## Example\nAny of the below\n\n```javascript\n\n// Return an object hash.\nrequireDirectory = require('reqdir');\n\n// Load all files in a directory.\nmyFiles = null;\nrequireDirectory.load(myFiles, './myPath');\n\n// Load all files in a directory and react of return value.\nmyFiles = null;\nif (requireDirectory.load(myFiles, './myPath') === true) {\n console.log('all files loaded without error');\n}\n\n// Load all files in a directory and call callback on finish.\nmyFiles = null;\nrequireDirectory.load(myFiles, './myPath', function() {\n console.log('all files are loaded');\n});\n\n````\n\n## Installation\n\n`npm install reqdir`\n\n## Usage\n\nrequire('reqdir').load(object, directory, [callback]])\n\n## License\n\nMIT \n\n","maintainers":[{"name":"noXtreme21","email":"christopher.gross@zoundfx.com"}],"time":{"modified":"2012-04-21T23:31:01.691Z","created":"2012-04-21T22:47:27.003Z","0.0.1":"2012-04-21T22:47:28.979Z","0.0.2":"2012-04-21T23:31:01.691Z"},"author":{"name":"Christopher Gross","email":"christopher.gross@zoundfx.com","url":"https://github.com/noXtreme21"},"repository":{"type":"git","url":"git://github.com/noxtreme/node-reqdir.git"},"_id":"reqdir","_rev":"1-757dc4c0892b78b2324c39694bfd7d52"}"ÿdocument-storeÿremotecontrol.js£{"id":"remotecontrol.js","rev":"1-84b2d2faa4f84ec6e32f46ff45af7e9c","rev_tree":[{"pos":1,"ids":["84b2d2faa4f84ec6e32f46ff45af7e9c",{"status":"available"},[]]}],"rev_map":{"1-84b2d2faa4f84ec6e32f46ff45af7e9c":3748},"winningRev":"1-84b2d2faa4f84ec6e32f46ff45af7e9c","deleted":false,"seq":3748}ÿby-sequenceÿ0000000000003748˜ {"name":"remotecontrol.js","description":"Enhance user interaction of an web application by using an additional browsing device and its features like gestures, orientation, etc.","dist-tags":{"latest":"0.9.5"},"versions":{"0.1.0":{"author":{"email":"claus@formatvorlage.de"},"name":"remotecontrol.js","description":"small application to use the touch screen of some device as a controller for another web application","version":"0.1.0","homepage":"https://github.com/juxtapos/remotecontrol.js","keywords":["realtime","websockets","socket.io","touch","gesture","multitouch"],"os":["darwin","linux"],"repository":{"type":"git","url":"git://github.com/juxtapos/remotecontrol.js.git"},"dependencies":{"socket.io":"0.9.6","connect":"2.3.3"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">=0.6"},"license":"BSD","scripts":{"postinstall":"./bin/postinstall.sh","start":"node server.js"},"_npmUser":{"name":"juxtapos","email":"claus@formatvorlage.de"},"_id":"remotecontrol.js@0.1.0","_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a47983171aa137318a3259f9873371c8fec71838","tarball":"http://registry.npmjs.org/remotecontrol.js/-/remotecontrol.js-0.1.0.tgz"},"readme":"","maintainers":[{"name":"juxtapos","email":"claus@formatvorlage.de"}]},"0.1.1":{"author":{"email":"claus@formatvorlage.de"},"name":"remotecontrol.js","description":"small application to use the touch screen of some device as a controller for another web application","version":"0.1.1","homepage":"https://github.com/juxtapos/remotecontrol.js","keywords":["realtime","websockets","socket.io","touch","gesture","multitouch"],"os":["darwin","linux"],"repository":{"type":"git","url":"git://github.com/juxtapos/remotecontrol.js.git"},"dependencies":{"socket.io":"0.9.6","connect":"2.3.3"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">=0.6"},"license":"BSD","scripts":{"postinstall":"./bin/postinstall.sh","start":"node server.js"},"_npmUser":{"name":"juxtapos","email":"claus@formatvorlage.de"},"_id":"remotecontrol.js@0.1.1","_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e551146b401a5a7db4311b6ad3b1df1417fbc3ef","tarball":"http://registry.npmjs.org/remotecontrol.js/-/remotecontrol.js-0.1.1.tgz"},"readme":"","maintainers":[{"name":"juxtapos","email":"claus@formatvorlage.de"}]},"0.9.5":{"author":{"name":"Claus Augusti","email":"claus@formatvorlage.de"},"name":"remotecontrol.js","description":"Enhance user interaction of an web application by using an additional browsing device and its features like gestures, orientation, etc.","version":"0.9.5","homepage":"https://github.com/juxtapos/remotecontrol.js","keywords":["realtime","websockets","socket.io","touch","gesture","multitouch"],"os":["darwin","linux","windows"],"repository":{"type":"git","url":"git://github.com/juxtapos/remotecontrol.js.git"},"dependencies":{"socket.io":"0.9.6","socket.io-client":"0.9.6","winston":"0.6.2"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">=0.8"},"license":"BSD","scripts":{"postinstall":"./bin/postinstall.sh","start":"node server.js"},"_npmUser":{"name":"juxtapos","email":"claus@formatvorlage.de"},"_id":"remotecontrol.js@0.9.5","_engineSupported":false,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e8148cad2e39ba0e112350401d73ca9a1308f415","tarball":"http://registry.npmjs.org/remotecontrol.js/-/remotecontrol.js-0.9.5.tgz"},"readme":"","maintainers":[{"name":"juxtapos","email":"claus@formatvorlage.de"}]}},"readme":"","maintainers":[{"name":"juxtapos","email":"claus@formatvorlage.de"}],"time":{"modified":"2012-08-02T13:44:40.729Z","created":"2012-06-20T03:18:17.944Z","0.1.0":"2012-06-20T03:18:19.454Z","0.1.1":"2012-06-20T03:40:06.964Z","0.9.5":"2012-07-23T00:36:10.182Z"},"author":{"name":"Claus Augusti","email":"claus@formatvorlage.de"},"repository":{"type":"git","url":"git://github.com/juxtapos/remotecontrol.js.git"},"users":{"fgribreau":true},"_id":"remotecontrol.js","_rev":"1-84b2d2faa4f84ec6e32f46ff45af7e9c"}!ÿdocument-storeÿrelative-assets¢{"id":"relative-assets","rev":"1-9313c633e1dcb10a7ecbe27ce90f30a2","rev_tree":[{"pos":1,"ids":["9313c633e1dcb10a7ecbe27ce90f30a2",{"status":"available"},[]]}],"rev_map":{"1-9313c633e1dcb10a7ecbe27ce90f30a2":3747},"winningRev":"1-9313c633e1dcb10a7ecbe27ce90f30a2","deleted":false,"seq":3747}ÿby-sequenceÿ0000000000003747˜{"name":"relative-assets","description":"Converts the assets in an html document to be relative to the root","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"relative-assets","version":"0.0.1","description":"Converts the assets in an html document to be relative to the root","keywords":[],"author":{"name":"Matt Mueller","email":"mattmuelle@gmail.com"},"dependencies":{"cheerio":"*"},"main":"index","engines":{"node":"0.6.x"},"_npmUser":{"name":"mattmueller","email":"mattmuelle@gmail.com"},"_id":"relative-assets@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"b056c848c4123016cc21ad011f552cb3937df97f","tarball":"http://registry.npmjs.org/relative-assets/-/relative-assets-0.0.1.tgz"},"maintainers":[{"name":"mattmueller","email":"mattmuelle@gmail.com"}]}},"readme":"\n# Relative Assets\n\n Converts the assets in an html document to be relative to the root\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 Matt Mueller <mattmuelle@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"mattmueller","email":"mattmuelle@gmail.com"}],"time":{"modified":"2012-06-13T16:43:05.263Z","created":"2012-06-13T16:43:04.541Z","0.0.1":"2012-06-13T16:43:05.263Z"},"author":{"name":"Matt Mueller","email":"mattmuelle@gmail.com"},"_id":"relative-assets","_rev":"1-9313c633e1dcb10a7ecbe27ce90f30a2"}ÿdocument-storeÿreiterateœ{"id":"reiterate","rev":"1-adeaa961de0b84202556132b1d6a6931","rev_tree":[{"pos":1,"ids":["adeaa961de0b84202556132b1d6a6931",{"status":"available"},[]]}],"rev_map":{"1-adeaa961de0b84202556132b1d6a6931":3746},"winningRev":"1-adeaa961de0b84202556132b1d6a6931","deleted":false,"seq":3746}ÿby-sequenceÿ0000000000003746¤>{"name":"reiterate","description":"Construct JSON object trees recursively, asynchronously to join data from multiple data sources.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"reiterate","description":"Construct JSON object trees recursively, asynchronously to join data from multiple data sources.","version":"0.0.0","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"keywords":["json","async","asynchronous","query","database"],"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/reiterate/raw/master/LICENSE"}],"homepage":"https://github.com/bigeasy/reiterate","repository":{"type":"git","url":"http://github.com/bigeasy/reiterate.git"},"scripts":{"test":"proof platform win32 && proof t/*/*.t || t/test"},"devDependencies":{"proof":"0.0.15","uglify-js":"~1.3"},"dependencies":{},"readme":"# Reitrate\n\nEvented construction of JSON objects.\n\n## Synopsis\n\n**Reiterate** creates a JSON object tree asynchronously, interpreting functions\nin the object heirarchy as data methods that accept a callback.\n\nYou can use functions to define the functions that populate the structure.\n\nThe data functions can inject more data functions into the heirarchy, so that\nthe children can be created based on their parents.\n\n```javascript\nvar loadObject = require('reiterate').loadObject,\n datastore = require('acme-datastore').datastore;\n\nfunction getArticleByPerson(personId) {\n function (callback) {\n datastore.select('articles', 'personId', personId, callback);\n }\n}\n\nfunction getPerson (id) {\n function (callback) {\n datastore.select('people', id, function (error, people) {\n if (error) {\n callback(error);\n } else {\n person = people.shift();\n person.articles = getArticleByPerson(person.id);\n callback(null, person);\n }\n });\n }\n}\n\nvar data = { person: getPeople(1) };\nloadObject(data, function (error, data) {\n for (var i = 0; i < data.person.articles.length; i++) {\n article = data.person.articles[i];\n process.stdout.write(article.title + ' by ' + person.name + '\\n');\n }\n});\n```\n\nFor those of you using a NoSQL database, this is an easy way to get a\npseudo-JOIN, to create a psuedo-JOIN across database engines\n\n## API\n\n### `require('reiterate')`\n\nThe `reiterate` module exports the `loadObject` method.\n\n```javascript\nvar loadObject = require('async-object').loadObject;\n```\n\n### `loadObject(object, callback)`\n\n * `object` — The object to populate.\n * `callback` — The callback to invoke when the object has been\n loaded, or when an error occurs.\n\nUse the `loadObject` method to load the `object` and invoke the given `callback`\nwhen the object is loaded or if there is an error.\n\nAny valid JSON type can be passed to `loadObject`. If the type is not an object,\narray or function, the data is simply forwarded to the callback.\n\n`loadObject` will descend the object contents recursively. Any values of type\n`function` found in an object or array are assumed to be methods that accept a\nsingle callback and invoked. The callback is of the form `callback(error,\ndata)`.\n\nIf data generation function invokes the callback is invoked with an error, the\nerror is forwarded to the user callback passed to `loadObject` and loading ends.\nOtherwise, each value in th data passed to the callback descended searching for\nfunctions.\n\nNote that each value of the data given to the is first checked for a function\nthat needs to be expanded, invokes the function if it exists. This means that a\none data function can return a data structure with data functions in it, and\nthose data functions will be be expanded before they are assigned to the tree.\n\nYou can also pass a function as the `object` argument so that the expanded data\ncallback result is given to the user callback.\n\n## Change Log\n\nChanges for each release.\n\n### Version 0.0.0\n\nReleased: Mon Jul 23 02:29:04 UTC 2012\n\n * Build on Travis CI. #4. \n * Rename to `reiterate`. #2.\n","_id":"reiterate@0.0.0","dist":{"shasum":"e2fef75e0e524071af8039017c8aab699aac3516","tarball":"http://registry.npmjs.org/reiterate/-/reiterate-0.0.0.tgz"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}]}},"readme":"# Reitrate\n\nEvented construction of JSON objects.\n\n## Synopsis\n\n**Reiterate** creates a JSON object tree asynchronously, interpreting functions\nin the object heirarchy as data methods that accept a callback.\n\nYou can use functions to define the functions that populate the structure.\n\nThe data functions can inject more data functions into the heirarchy, so that\nthe children can be created based on their parents.\n\n```javascript\nvar loadObject = require('reiterate').loadObject,\n datastore = require('acme-datastore').datastore;\n\nfunction getArticleByPerson(personId) {\n function (callback) {\n datastore.select('articles', 'personId', personId, callback);\n }\n}\n\nfunction getPerson (id) {\n function (callback) {\n datastore.select('people', id, function (error, people) {\n if (error) {\n callback(error);\n } else {\n person = people.shift();\n person.articles = getArticleByPerson(person.id);\n callback(null, person);\n }\n });\n }\n}\n\nvar data = { person: getPeople(1) };\nloadObject(data, function (error, data) {\n for (var i = 0; i < data.person.articles.length; i++) {\n article = data.person.articles[i];\n process.stdout.write(article.title + ' by ' + person.name + '\\n');\n }\n});\n```\n\nFor those of you using a NoSQL database, this is an easy way to get a\npseudo-JOIN, to create a psuedo-JOIN across database engines\n\n## API\n\n### `require('reiterate')`\n\nThe `reiterate` module exports the `loadObject` method.\n\n```javascript\nvar loadObject = require('async-object').loadObject;\n```\n\n### `loadObject(object, callback)`\n\n * `object` — The object to populate.\n * `callback` — The callback to invoke when the object has been\n loaded, or when an error occurs.\n\nUse the `loadObject` method to load the `object` and invoke the given `callback`\nwhen the object is loaded or if there is an error.\n\nAny valid JSON type can be passed to `loadObject`. If the type is not an object,\narray or function, the data is simply forwarded to the callback.\n\n`loadObject` will descend the object contents recursively. Any values of type\n`function` found in an object or array are assumed to be methods that accept a\nsingle callback and invoked. The callback is of the form `callback(error,\ndata)`.\n\nIf data generation function invokes the callback is invoked with an error, the\nerror is forwarded to the user callback passed to `loadObject` and loading ends.\nOtherwise, each value in th data passed to the callback descended searching for\nfunctions.\n\nNote that each value of the data given to the is first checked for a function\nthat needs to be expanded, invokes the function if it exists. This means that a\none data function can return a data structure with data functions in it, and\nthose data functions will be be expanded before they are assigned to the tree.\n\nYou can also pass a function as the `object` argument so that the expanded data\ncallback result is given to the user callback.\n\n## Change Log\n\nChanges for each release.\n\n### Version 0.0.0\n\nReleased: Mon Jul 23 02:29:04 UTC 2012\n\n * Build on Travis CI. #4. \n * Rename to `reiterate`. #2.\n","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"time":{"modified":"2012-08-02T13:44:40.507Z","created":"2012-07-23T02:31:14.948Z","0.0.0":"2012-07-23T02:31:15.831Z"},"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"repository":{"type":"git","url":"http://github.com/bigeasy/reiterate.git"},"users":{"fgribreau":true},"_id":"reiterate","_rev":"1-adeaa961de0b84202556132b1d6a6931"}ÿdocument-storeÿree–{"id":"ree","rev":"1-06f348339a066b6547e8ccd636e024f8","rev_tree":[{"pos":1,"ids":["06f348339a066b6547e8ccd636e024f8",{"status":"available"},[]]}],"rev_map":{"1-06f348339a066b6547e8ccd636e024f8":3745},"winningRev":"1-06f348339a066b6547e8ccd636e024f8","deleted":false,"seq":3745}ÿby-sequenceÿ0000000000003745•"{"name":"ree","description":"a object proxy that emit controls","dist-tags":{"latest":"0.1.1-2"},"versions":{"0.1.0":{"name":"ree","version":"0.1.0","author":{"name":"caasi Huang","email":"caasi.igd@gmail.com"},"description":"a object proxy that emit controls","contributors":[],"scripts":{"test":"nodeunit ./test.js"},"main":"./lib/ree","repository":{"type":"git","url":"https://github.com/caasi/Ree.git"},"keywords":["event tree","bubbling"],"dependencies":{"underscore":"*","eventemitter2":"*"},"devDependencies":{"nodeunit":"*"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"readme":"","_id":"ree@0.1.0","dist":{"shasum":"16e231313933b4672c3076266705479eff2ce99f","tarball":"http://registry.npmjs.org/ree/-/ree-0.1.0.tgz"},"maintainers":[{"name":"caasi","email":"caasi.igd@gmail.com"}]},"0.1.1":{"name":"ree","version":"0.1.1","author":{"name":"caasi Huang","email":"caasi.igd@gmail.com"},"description":"a object proxy that emit controls","contributors":[],"scripts":{"test":"nodeunit ./test.js"},"main":"./lib/ree","repository":{"type":"git","url":"https://github.com/caasi/Ree.git"},"keywords":["event tree","bubbling"],"dependencies":{"underscore":"*","eventemitter2":"*"},"devDependencies":{"nodeunit":"*"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"readme":"","_id":"ree@0.1.1","dist":{"shasum":"1b99a64b0591f76b0451fb41b58d6c6ffb60ab0c","tarball":"http://registry.npmjs.org/ree/-/ree-0.1.1.tgz"},"maintainers":[{"name":"caasi","email":"caasi.igd@gmail.com"}]},"0.1.1-1":{"name":"ree","version":"0.1.1-1","author":{"name":"caasi Huang","email":"caasi.igd@gmail.com"},"description":"a object proxy that emit controls","contributors":[],"scripts":{"test":"nodeunit ./test.js"},"main":"./lib/ree","repository":{"type":"git","url":"https://github.com/caasi/Ree.git"},"keywords":["event tree","bubbling"],"dependencies":{"underscore":"*","eventemitter2":"*"},"devDependencies":{"nodeunit":"*"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"readme":"Ree [![Build Status](https://secure.travis-ci.org/caasi/Ree.png)](http://travis-ci.org/caasi/Ree)\n===\n\nRee is a object proxy that emit your controls.\n\nDepends on\n----------\n\n* [underscore](http://underscorejs.org)\n* [EventEmitter2](https://github.com/hij1nx/EventEmitter2)\n\nTest by\n-------\n\n* [nodeunit](https://github.com/caolan/nodeunit)\n\nToDo\n----\n\n* Think about exec deeply, still buggy when you mix-use object and it's agent.\n","_id":"ree@0.1.1-1","dist":{"shasum":"d38e2df545737709842ba0bd76c040391ae3cfba","tarball":"http://registry.npmjs.org/ree/-/ree-0.1.1-1.tgz"},"maintainers":[{"name":"caasi","email":"caasi.igd@gmail.com"}]},"0.1.1-2":{"name":"ree","version":"0.1.1-2","author":{"name":"caasi Huang","email":"caasi.igd@gmail.com"},"description":"a object proxy that emit controls","contributors":[],"scripts":{"test":"nodeunit ./test.js"},"main":"./lib/ree","repository":{"type":"git","url":"https://github.com/caasi/Ree.git"},"keywords":["event tree","bubbling"],"dependencies":{"underscore":"*","eventemitter2":"*"},"devDependencies":{"nodeunit":"*"},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6"},"readme":"Ree [![Build Status](https://secure.travis-ci.org/caasi/Ree.png)](http://travis-ci.org/caasi/Ree)\n===\n\nRee is a object proxy that emit your controls.\n\nDepends on\n----------\n\n* [underscore](http://underscorejs.org)\n* [EventEmitter2](https://github.com/hij1nx/EventEmitter2)\n\nTest by\n-------\n\n* [nodeunit](https://github.com/caolan/nodeunit)\n\nToDo\n----\n\n* Think about exec deeply, still buggy when you mix-use object and it's agent.\n","_id":"ree@0.1.1-2","dist":{"shasum":"f664a6bfdc64f8fa148d423afe8e13d794bcd624","tarball":"http://registry.npmjs.org/ree/-/ree-0.1.1-2.tgz"},"maintainers":[{"name":"caasi","email":"caasi.igd@gmail.com"}]}},"readme":"","maintainers":[{"name":"caasi","email":"caasi.igd@gmail.com"}],"time":{"modified":"2012-08-02T18:39:16.940Z","created":"2012-07-26T22:42:26.924Z","0.1.0":"2012-07-26T22:42:31.142Z","0.1.1":"2012-07-30T16:54:22.113Z","0.1.1-1":"2012-08-02T11:47:48.674Z","0.1.1-2":"2012-08-02T18:39:16.940Z"},"author":{"name":"caasi Huang","email":"caasi.igd@gmail.com"},"repository":{"type":"git","url":"https://github.com/caasi/Ree.git"},"users":{"fgribreau":true},"_id":"ree","_rev":"1-06f348339a066b6547e8ccd636e024f8"}ÿdocument-storeÿredis-modelž{"id":"redis-model","rev":"1-51302abe84f03cd02b4972fe14dd2759","rev_tree":[{"pos":1,"ids":["51302abe84f03cd02b4972fe14dd2759",{"status":"available"},[]]}],"rev_map":{"1-51302abe84f03cd02b4972fe14dd2759":3744},"winningRev":"1-51302abe84f03cd02b4972fe14dd2759","deleted":false,"seq":3744}ÿby-sequenceÿ0000000000003744Î{"name":"redis-model","description":"A Model wrapper over Redis","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.1","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"ad58a4243e7a16867bdedf024772f05476ee68ec","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.1.tgz"},"maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]},"0.0.2":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.2","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"87b848211be479bf73a2e784298a124af7675ad8","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.2.tgz"},"maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]},"0.0.3":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.3","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9c922f2192c5b2fc590a04f48a96b5a6fb0acd62","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.3.tgz"},"maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]},"0.0.4":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.4","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"5bf1ae4724b61c221069b97af2b0a1e30a07fe1e","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.4.tgz"},"_from":"redis-model@0.0.3","readme":"# redis-model\n\nA simple object wrapper over the hash type in redis.\n\n### Usage\n\nDefine your own models, note the second argument in the super call is used to define the namespace of your model:\n\n```\nredis = (require 'redis').createClient()\nRedisModel = require 'redis-model'\n\nclass Blog extends RedisModel\n\tconstructor: ->\n\t\tsuper redis, 'Blog'\n\t\t@addFields 'url', 'date', 'content'\n```\n\nCreate instances with automatic keys, or use your own:\n\n```\nBlog.newItem (err, blogInstance) ->\n\t# Do stuff with blogInstance with automatic key\n\nBlog.withKey 'akey', (err, blogInstance) ->\n\t# Do stuff with blogInstance with set key\n```\n\t\nNew: Sort command is available on your model to quickly get a list of your items\nfrom a list of keys\n\n```\nBlog.sort 'externalSetOfKeys', { alpha: true, skip: 10, take: 5 }, (err, blogs) ->\n\t# Sort by alphabetical order on the keys, skip 10 records and take 5 records\n\tblogs[0] == { key: 'key', url: 'url', date: 'date', content: 'content' }\n\t\nBlog.sort 'externalSetOfKeys', { byField: 'url', alpha:true, asc: false }, (err, blogs) ->\n\t# Sort the keys by the url field of your blogs, in alphabetical descending order\n\t\nBlog.sort 'externalSetOfKeys', { by: 'nosort', getKey: false }, (err, blogs) ->\n\t# Don't worry about sorting, and don't worry about pulling back the key\n```\n\nGet values simply:\n\n```\nblogInstance.url (err, url) ->\n\tconsole.log url\n\t\nblogInstance.getAll (err, blog) ->\n\tconsole.log blog.url\n\tconsole.log blog.date\n\tconsole.log blog.content\n```\n\nYou can save values one at a time, or lock for full advantage\n\n```\n# Save a value straight away\nblogInstance.url 'http://www.google.com', (err) ->\n\t# Value is saved at this point\n\t\n# Lock and save multiple values at once\nblogInstance.lock()\nblogInstance.url 'url'\nblogInstance.date 'date'\nblogInstance.content 'content'\nblogInstance.unlock (err) ->\n\t# All values saved in one call - this is much faster than saving each individually\n\t\nblogInstance.setAll { url: 'url', date: 'date', content: 'content' }, (err) ->\n\t# All values are saved in one call here too\n```\n\n### Installation\n\n```bash\n$ npm install redis-model\n```\n\n### Benchmark test results\n\n```bash\n1000 normal sequential requests done in 79ms\n✔ Pure redis (read)\n1000 redis-model sequential requests done in 68ms\n✔ Redis-Model (read)\n500 redis-model sequential requests for two fields done in 46ms\n✔ Redis-Model with locking (read)\n1000 normal sequential requests done in 62ms\n✔ Pure redis (save)\n500 redis-model sequential requests for two fields done in 38ms\n✔ Redis-Model with locking (save)\n```\n\n### License\n\n©2012 Felix Jorkowski and available under the [MIT license](http://www.opensource.org/licenses/mit-license.php):\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]},"0.0.5":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.5","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.5","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"54a3c3faf2b75421a859e846e1d80036e98905f2","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.5.tgz"},"_from":"redis-model@0.0.3","readme":"# redis-model\n\nA simple object wrapper over the hash type in redis.\n\n### Usage\n\nDefine your own models, note the second argument in the super call is used to define the namespace of your model:\n\n```\nredis = (require 'redis').createClient()\nRedisModel = require 'redis-model'\n\nclass Blog extends RedisModel\n\tconstructor: ->\n\t\tsuper redis, 'Blog'\n\t\t@addFields 'url', 'date', 'content'\n```\n\nCreate instances with automatic keys, or use your own:\n\n```\nBlog.newItem (err, blogInstance) ->\n\t# Do stuff with blogInstance with automatic key\n\nBlog.withKey 'akey', (err, blogInstance) ->\n\t# Do stuff with blogInstance with set key\n```\n\t\nNew: Sort command is available on your model to quickly get a list of your items\nfrom a list of keys\n\n```\nBlog.sort 'externalSetOfKeys', { alpha: true, skip: 10, take: 5 }, (err, blogs) ->\n\t# Sort by alphabetical order on the keys, skip 10 records and take 5 records\n\tblogs[0] == { key: 'key', url: 'url', date: 'date', content: 'content' }\n\t\nBlog.sort 'externalSetOfKeys', { byField: 'url', alpha:true, asc: false }, (err, blogs) ->\n\t# Sort the keys by the url field of your blogs, in alphabetical descending order\n\t\nBlog.sort 'externalSetOfKeys', { by: 'nosort', getKey: false }, (err, blogs) ->\n\t# Don't worry about sorting, and don't worry about pulling back the key\n```\n\nGet values simply:\n\n```\nblogInstance.url (err, url) ->\n\tconsole.log url\n\t\nblogInstance.getAll (err, blog) ->\n\tconsole.log blog.url\n\tconsole.log blog.date\n\tconsole.log blog.content\n```\n\nYou can save values one at a time, or lock for full advantage\n\n```\n# Save a value straight away\nblogInstance.url 'http://www.google.com', (err) ->\n\t# Value is saved at this point\n\t\n# Lock and save multiple values at once\nblogInstance.lock()\nblogInstance.url 'url'\nblogInstance.date 'date'\nblogInstance.content 'content'\nblogInstance.unlock (err) ->\n\t# All values saved in one call - this is much faster than saving each individually\n\t\nblogInstance.setAll { url: 'url', date: 'date', content: 'content' }, (err) ->\n\t# All values are saved in one call here too\n```\n\nNEW: Has a multi interface that lets you save your data at the same time as\nother keys. It adds two methods to the multi interface, setAll and setField.\n\n```\n# setField example\nblogInstance.multi()\n\t.sadd('AlÔ#ùlBogs', blogInstance.key)\n\t.setField('url', 'www.newUrl.com')\n\t.exec cb\n\t\n# setAll example\nblogInstance.multi()\n\t.sadd('AllBogs', blogInstance.key)\n\t.setAll({ url: 'www.url.com', date: 'date', content: 'content' })\n\t.exec cb\n```\n\n### Installation\n\n```bash\n$ npm install redis-model\n```\n\n### Benchmark test results\n\n```bash\n1000 normal sequential requests done in 79ms\n✔ Pure redis (read)\n1000 redis-model sequential requests done in 68ms\n✔ Redis-Model (read)\n500 redis-model sequential requests for two fields done in 46ms\n✔ Redis-Model with locking (read)\n1000 normal sequential requests done in 62ms\n✔ Pure redis (save)\n500 redis-model sequential requests for two fields done in 38ms\n✔ Redis-Model with locking (save)\n```\n\n### License\n\n©2012 Felix Jorkowski and available under the [MIT license](http://www.opensource.org/licenses/mit-license.php):\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]},"0.0.6":{"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"name":"redis-model","description":"A Model wrapper over Redis","version":"0.0.6","homepage":"https://github.com/ajorkowski/redis-model","repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"main":"lib/redis-model.js","dependencies":{},"devDependencies":{"nodeunit":"*","redis":"*"},"_npmUser":{"name":"ajorkowski","email":"a.jorkowski@gmail.com"},"_id":"redis-model@0.0.6","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7d99ceda0f3409dba612af4f86c4c9adfc2d989d","tarball":"http://registry.npmjs.org/redis-model/-/redis-model-0.0.6.tgz"},"_from":"redis-model@0.0.3","readme":"# redis-model\n\nA simple object wrapper over the hash type in redis.\n\n### Usage\n\nDefine your own models, note the second argument in the super call is used to define the namespace of your model:\n\n```\nredis = (require 'redis').createClient()\nRedisModel = require 'redis-model'\n\nclass Blog extends RedisModel\n\tconstructor: ->\n\t\tsuper redis, 'Blog'\n\t\t@addFields 'url', 'date', 'content'\n```\n\nCreate instances with automatic keys, or use your own:\n\n```\nBlog.newItem (err, blogInstance) ->\n\t# Do stuff with blogInstance with automatic key\n\nBlog.withKey 'akey', (err, blogInstance) ->\n\t# Do stuff with blogInstance with set key\n```\n\t\nNew: Sort command is available on your model to quickly get a list of your items\nfrom a list of keys\n\n```\nBlog.sort 'externalSetOfKeys', { alpha: true, skip: 10, take: 5 }, (err, blogs) ->\n\t# Sort by alphabetical order on the keys, skip 10 records and take 5 records\n\tblogs[0] == { key: 'key', url: 'url', date: 'date', content: 'content' }\n\t\nBlog.sort 'externalSetOfKeys', { byField: 'url', alpha:true, asc: false }, (err, blogs) ->\n\t# Sort the keys by the url field of your blogs, in alphabetical descending order\n\t\nBlog.sort 'externalSetOfKeys', { by: 'nosort', getKey: false }, (err, blogs) ->\n\t# Don't worry about sorting, and don't worry about pulling back the key\n```\n\nGet values simply:\n\n```\nblogInstance.url (err, url) ->\n\tconsole.log url\n\t\nblogInstance.getAll (err, blog) ->\n\tconsole.log blog.url\n\tconsole.log blog.date\n\tconsole.log blog.content\n```\n\nYou can save values one at a time, or lock for full advantage\n\n```\n# Save a value straight away\nblogInstance.url 'http://www.google.com', (err) ->\n\t# Value is saved at this point\n\t\n# Lock and save multiple values at once\nblogInstance.lock()\nblogInstance.url 'url'\nblogInstance.date 'date'\nblogInstance.content 'content'\nblogInstance.unlock (err) ->\n\t# All values saved in one call - this is much faster than saving each individually\n\t\nblogInstance.setAll { url: 'url', date: 'date', content: 'content' }, (err) ->\n\t# All values are saved in one call here too\n```\n\nNEW: Has a multi interface that lets you save your data at the same time as\nother keys. It adds two methods to the multi interface, setAll and setField.\n\n```\n# setField example\nblogInstance.multi()\n\t.sadd('AllBogs', blogInstance.key)\n\t.setField('url', 'www.newUrl.com')\n\t.exec cb\n\t\n# setAll example\nblogInstance.multi()\n\t.sadd('AllBogs', blogInstance.key)\n\t.setAll({ url: 'www.url.com', date: 'date', content: 'content' })\n\t.exec cb\n```\n\n### Installation\n\n```bash\n$ npm install redis-model\n```\n\n### Benchmark test results\n\n```bash\n1000 normal sequential requests done in 79ms\n✔ Pure redis (read)\n1000 redis-model sequential requests done in 68ms\n✔ Redis-Model (read)\n500 redis-model sequential requests for two fields done in 46ms\n✔ Redis-Model with locking (read)\n1000 normal sequential requests done in 62ms\n✔ Pure redis (save)\n500 redis-model sequential requests for two fields done in 38ms\n✔ Redis-Model with locking (save)\n```\n\n### License\n\n©2012 Felix Jorkowski and available under the [MIT license](http://www.opensource.org/licenses/mit-license.php):\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}]}},"readme":null,"maintainers":[{"name":"ajorkowski","email":"a.jorkowski@gmail.com"}],"time":{"modified":"2012-06-13T08:56:39.155Z","created":"2012-03-09T11:14:35.012Z","0.0.1":"2012-03-09T11:14:39.092Z","0.0.2":"2012-03-09T12:11:16.610Z","0.0.3":"2012-03-21T10:08:40.734Z","0.0.4":"2012-04-10T00:09:42.119Z","0.0.5":"2012-06-13T07:06:23.389Z","0.0.6":"2012-06-13T08:56:39.155Z"},"author":{"name":"Felix Jorkowski","url":"http://jorkowski.com"},"repository":{"type":"git","url":"git://github.com/ajorkowski/redis-model.git"},"_id":"redis-model","_rev":"1-51302abe84f03cd02b4972fe14dd2759"}ÿdocument-storeÿreconnectorž{"id":"reconnector","rev":"1-045925cca8c180974f7a14a647017cc6","rev_tree":[{"pos":1,"ids":["045925cca8c180974f7a14a647017cc6",{"status":"available"},[]]}],"rev_map":{"1-045925cca8c180974f7a14a647017cc6":3743},"winningRev":"1-045925cca8c180974f7a14a647017cc6","deleted":false,"seq":3743}ÿby-sequenceÿ0000000000003743ÌF{"name":"reconnector","description":"compatibility layer aroung other websocket compatibility layers","dist-tags":{"latest":"0.1.5"},"versions":{"0.0.1":{"name":"reconnector","version":"0.0.1","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{"sockjs":"~0.3.1"},"devDependencies":{"connect":"~2.3.0","browserify":"~1.11.1"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a8c04ea4ee7fc4f6db50a87cd8c83faeb52dd29c","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.0.1.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.2":{"name":"reconnector","version":"0.0.2","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7900b752de64ef9ef2660d3f50cdd204f8a43458","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.0.2.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.0.3":{"name":"reconnector","version":"0.0.3","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"aa470429e5fdbb6578e8a01c39e35bce6b0cf6f8","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.0.3.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.0":{"name":"reconnector","version":"0.1.0","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7514462ed7b95c6353af9279649404b042861276","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.0.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.1":{"name":"reconnector","version":"0.1.1","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"768a632afa1299a87b0d32736a0b28f83f8c57b7","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.1.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.2":{"name":"reconnector","version":"0.1.2","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"33728eb3b63e0413447826645ccf04a6cc6c9c39","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.2.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.3":{"name":"reconnector","version":"0.1.3","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e71b7ba22bc4e48084ba4d554eefb645bbc62e69","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.3.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.4":{"name":"reconnector","version":"0.1.4","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ca9ba5afbef3b83a39928a57d1d86cdac3ff0891","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.4.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]},"0.1.5":{"name":"reconnector","version":"0.1.5","description":"compatibility layer aroung other websocket compatibility layers","homepage":"http://github.com/dominictarr/reconnector","repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"dependencies":{},"devDependencies":{"connect":"~2.3.0","skates":"0"},"browserify":"./client.js","author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"_id":"reconnector@0.1.5","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c12ab660dccd9acf98ded8a51a9bbd4758d6af38","tarball":"http://registry.npmjs.org/reconnector/-/reconnector-0.1.5.tgz"},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}]}},"readme":"","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2012-06-13T11:24:32.481Z","created":"2012-05-31T12:31:04.502Z","0.0.1":"2012-05-31T12:31:08.757Z","0.0.2":"2012-05-31T15:01:06.722Z","0.0.3":"2012-05-31T16:46:49.167Z","0.1.0":"2012-05-31T17:16:02.653Z","0.1.1":"2012-05-31T17:25:46.567Z","0.1.2":"2012-05-31T17:58:42.091Z","0.1.3":"2012-05-31T19:11:20.846Z","0.1.4":"2012-06-05T08:04:33.680Z","0.1.5":"2012-06-13T11:24:32.481Z"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"dominictarr.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/reconnector.git"},"_id":"reconnector","_rev":"1-045925cca8c180974f7a14a647017cc6"}!ÿdocument-storeÿrawblog-crawler¢{"id":"rawblog-crawler","rev":"1-090e7b9e7477d82e7d6db07e518910a4","rev_tree":[{"pos":1,"ids":["090e7b9e7477d82e7d6db07e518910a4",{"status":"available"},[]]}],"rev_map":{"1-090e7b9e7477d82e7d6db07e518910a4":3742},"winningRev":"1-090e7b9e7477d82e7d6db07e518910a4","deleted":false,"seq":3742}ÿby-sequenceÿ0000000000003742ª{"name":"rawblog-crawler","description":"DEEP BETA. Crawls pages, a bit like Jekyll","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"rawblog-crawler","version":"0.0.1","author":{"name":"Devgru","email":"git@devg.ru"},"description":"DEEP BETA. Crawls pages, a bit like Jekyll","keywords":["blog","crawler"],"main":"index","dependencies":{"coffee-script":">= 1.0.0"},"engines":{"node":"0.6.x"},"_npmUser":{"name":"devgru","email":"npm@devg.ru"},"_id":"rawblog-crawler@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"e22819b843576cbfdf574baee757f69c2f6dd550","tarball":"http://registry.npmjs.org/rawblog-crawler/-/rawblog-crawler-0.0.1.tgz"},"maintainers":[{"name":"devgru","email":"npm@devg.ru"}]},"0.0.2":{"name":"rawblog-crawler","version":"0.0.2","author":{"name":"Devgru","email":"git@devg.ru"},"description":"DEEP BETA. Crawls pages, a bit like Jekyll","keywords":["blog","crawler"],"main":"index","dependencies":{"coffee-script":">= 1.0.0"},"engines":{"node":"0.6.x"},"_npmUser":{"name":"devgru","email":"npm@devg.ru"},"_id":"rawblog-crawler@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"145ea47b69904cd5a642cdecb16b67003cdb4557","tarball":"http://registry.npmjs.org/rawblog-crawler/-/rawblog-crawler-0.0.2.tgz"},"maintainers":[{"name":"devgru","email":"npm@devg.ru"}]}},"readme":"# node-ccl\n\nColored, context-enabled logger.\n\nIt is in beta version.\n\nThe way I use it:\n\n //initial global settings\n var logger = require('node-ccl');\n logger.setDefaultShowDebug(true);\n logger.setPadding(8);\n \n //using it\n var log = require('node-ccl').forContext('RUNNER', 'yellow');\n \n //and then\n log.info('blah-blah');\n log.debug(someJsonObject); //it will use JSON.stringify automaticly\n log.warn('some bad warning');\n\n","maintainers":[{"name":"devgru","email":"npm@devg.ru"}],"time":{"modified":"2012-03-23T21:53:45.842Z","created":"2012-03-16T09:49:09.398Z","0.0.1":"2012-03-16T09:49:10.765Z","0.0.2":"2012-03-23T21:53:45.842Z"},"author":{"name":"Devgru","email":"git@devg.ru"},"_id":"rawblog-crawler","_rev":"1-090e7b9e7477d82e7d6db07e518910a4"}ÿdocument-storeÿpypacker›{"id":"pypacker","rev":"1-47599755bcd1b9aed455e90d055956b8","rev_tree":[{"pos":1,"ids":["47599755bcd1b9aed455e90d055956b8",{"status":"available"},[]]}],"rev_map":{"1-47599755bcd1b9aed455e90d055956b8":3741},"winningRev":"1-47599755bcd1b9aed455e90d055956b8","deleted":false,"seq":3741}ÿby-sequenceÿ0000000000003741ð({"name":"pypacker","description":"Handle binary strings in buffers similar to Python's struct library.","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"pypacker","version":"0.1.0","description":"Handle binary strings in buffers similar to Python's struct library.","author":{"name":"Chris Barna","email":"chris@unbrain.net"},"main":"main.js","dependencies":{},"devDependencies":{"mocha":">=1.3.2","chai":">=1.2.0","coffee-script":">=1.3.3"},"readme":"# Packer\n`packer` is a binary packer and unpacker inspired by Python's [struct\nlibrary](http://docs.python.org/library/struct.html) for node.js.\nCurrently, it packs/unpacks to and from a Buffer object. When unpacking,\nan array is returned with the requested values.\n\nInterfacing is exactly the same as the Python struct python class except\nthere are no 8-byte integers.\n\n## Installation\n\n## Usage\n Packer = require('packer');\n var unpack_array = new Packer('>H')\n .unpack(new Buffer([0x00, 0x01]));\n // unpack_array will be an array containing [1]\n\n var packed_buffer = new Packer('>H')\n .pack(1);\n // packed_buffer will be a Buffer of length 2 containing 00 01\n","_id":"pypacker@0.1.0","dist":{"shasum":"36315f3646f262d02bdb5e0e3aee9c2ffe2bec54","tarball":"http://registry.npmjs.org/pypacker/-/pypacker-0.1.0.tgz"},"maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}]},"0.2.0":{"name":"pypacker","version":"0.2.0","description":"Handle binary strings in buffers similar to Python's struct library.","author":{"name":"Chris Barna","email":"chris@unbrain.net"},"main":"main.js","dependencies":{},"devDependencies":{"mocha":">=1.3.2","chai":">=1.2.0","coffee-script":">=1.3.3"},"repository":{"type":"git","url":"git@github.com:ctbarna/node-packer.git"},"readme":"# PyPacker\n`pypacker` is a binary packer and unpacker inspired by Python's [struct\nlibrary](http://docs.python.org/library/struct.html) for node.js.\nCurrently, it packs/unpacks to and from a Buffer object. When unpacking,\nan array is returned with the requested values.\n\nInterfacing is exactly the same as the Python struct python class except\nthere are no 8-byte integers.\n\n## Installation\n`npm install pypacker`\n\n## Usage\n```JavaScript\nPacker = require('pypacker');\nvar unpack_array = new Packer('>H')\n .unpack(new Buffer([0x00, 0x01]));\n// unpack_array will be an array containing [1]\n\nvar packed_buffer = new Packer('>H')\n .pack(1);\n// packed_buffer will be a Buffer of length 2 containing 00 01\n```\n","_id":"pypacker@0.2.0","dist":{"shasum":"2b3f773272a6d6fc6b1df0f29b5791040a7da555","tarball":"http://registry.npmjs.org/pypacker/-/pypacker-0.2.0.tgz"},"maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}]},"0.2.1":{"name":"pypacker","version":"0.2.1","description":"Handle binary strings in buffers similar to Python's struct library.","author":{"name":"Chris Barna","email":"chris@unbrain.net"},"main":"main.js","dependencies":{},"devDependencies":{"mocha":">=1.3.2","chai":">=1.2.0","coffee-script":">=1.3.3"},"repository":{"type":"git","url":"git@github.com:ctbarna/node-packer.git"},"readme":"# PyPacker\n`pypacker` is a binary packer and unpacker inspired by Python's [struct\nlibrary](http://docs.python.org/library/struct.html) for node.js.\nCurrently, it packs/unpacks to and from a Buffer object. When unpacking,\nan array is returned with the requested values.\n\nInterfacing is exactly the same as the Python struct python class except\nthere are no 8-byte integers.\n\n## Installation\n`npm install pypacker`\n\n## Usage\n```JavaScript\nPacker = require('pypacker');\nvar unpack_array = new Packer('>H')\n .unpack(new Buffer([0x00, 0x01]));\n// unpack_array will be an array containing [1]\n\nvar packed_buffer = new Packer('>H')\n .pack(1);\n// packed_buffer will be a Buffer of length 2 containing 00 01\n```\n","_id":"pypacker@0.2.1","dist":{"shasum":"bf4f50cd960dec5f6b7dafebc899fe936f215706","tarball":"http://registry.npmjs.org/pypacker/-/pypacker-0.2.1.tgz"},"maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}]}},"readme":"# Packer\n`packer` is a binary packer and unpacker inspired by Python's [struct\nlibrary](http://docs.python.org/library/struct.html) for node.js.\nCurrently, it packs/unpacks to and from a Buffer object. When unpacking,\nan array is returned with the requested values.\n\nInterfacing is exactly the same as the Python struct python class except\nthere are no 8-byte integers.\n\n## Installation\n\n## Usage\n Packer = require('packer');\n var unpack_array = new Packer('>H')\n .unpack(new Buffer([0x00, 0x01]));\n // unpack_array will be an array containing [1]\n\n var packed_buffer = new Packer('>H')\n .pack(1);\n // packed_buffer will be a Buffer of length 2 containing 00 01\n","maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}],"time":{"modified":"2012-08-19T04:00:52.498Z","created":"2012-08-19T00:29:30.992Z","0.1.0":"2012-08-19T00:29:32.059Z","0.2.0":"2012-08-19T03:57:09.147Z","0.2.1":"2012-08-19T04:00:52.498Z"},"author":{"name":"Chris Barna","email":"chris@unbrain.net"},"repository":{"type":"git","url":"git@github.com:ctbarna/node-packer.git"},"_id":"pypacker","_rev":"1-47599755bcd1b9aed455e90d055956b8"}ÿdocument-storeÿpwhash™{"id":"pwhash","rev":"1-6306f9d9d3cf3c4edc6fc902ea11dd41","rev_tree":[{"pos":1,"ids":["6306f9d9d3cf3c4edc6fc902ea11dd41",{"status":"available"},[]]}],"rev_map":{"1-6306f9d9d3cf3c4edc6fc902ea11dd41":3740},"winningRev":"1-6306f9d9d3cf3c4edc6fc902ea11dd41","deleted":false,"seq":3740}ÿby-sequenceÿ0000000000003740¾{"name":"pwhash","description":"Generate password hashes from the command line.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"description":"Generate password hashes from the command line.","version":"0.0.1","private":false,"dependencies":{"flatiron":"0.2.5","node_hash":"0.2.x"},"bin":{"pwhash":"./pwhash.js"},"devDependencies":{"cli-easy":"0.1.0","vows":"0.6.1"},"scripts":{"test":"vows --spec","start":"node pwhash.js"},"name":"pwhash","author":{"name":"Farrin Reid","email":"blakmatrix@gmail.com"},"homepage":"http://github.com/blakmatrix/pwhash","_npmUser":{"name":"blakmatrix","email":"blakmatrix@gmail.com"},"_id":"pwhash@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c65727f6be8aabd89afb99aacb74753fbf2747bb","tarball":"http://registry.npmjs.org/pwhash/-/pwhash-0.0.1.tgz"},"readme":"","maintainers":[{"name":"blakmatrix","email":"blakmatrix@gmail.com"}]},"0.0.2":{"description":"Generate password hashes from the command line.","keywords":["md5","sha1","sha256","sha512","mdripe160","command","line","tool","generate","password","hash"],"version":"0.0.2","private":false,"dependencies":{"flatiron":"0.2.5","node_hash":"0.2.x"},"bin":{"pwhash":"./pwhash.js"},"devDependencies":{"cli-easy":"0.1.0","tap":"0.2.x"},"scripts":{"test":"node ./test/test.js","start":"node pwhash.js"},"name":"pwhash","author":{"name":"Farrin Reid","email":"blakmatrix@gmail.com"},"homepage":"http://github.com/blakmatrix/pwhash","_npmUser":{"name":"blakmatrix","email":"blakmatrix@gmail.com"},"_id":"pwhash@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a725d373cef1df8e16db344cbc30b4fac3421614","tarball":"http://registry.npmjs.org/pwhash/-/pwhash-0.0.2.tgz"},"readme":"","maintainers":[{"name":"blakmatrix","email":"blakmatrix@gmail.com"}]}},"readme":"","maintainers":[{"name":"blakmatrix","email":"blakmatrix@gmail.com"}],"time":{"modified":"2012-07-31T22:41:18.724Z","created":"2012-07-18T00:24:02.719Z","0.0.1":"2012-07-18T00:24:03.940Z","0.0.2":"2012-07-18T04:05:15.285Z"},"author":{"name":"Farrin Reid","email":"blakmatrix@gmail.com"},"users":{"blakmatrix":true},"_id":"pwhash","_rev":"1-6306f9d9d3cf3c4edc6fc902ea11dd41"}ÿdocument-storeÿproxiedš{"id":"proxied","rev":"1-e673f1a8f32c5301291e1091c8c5255b","rev_tree":[{"pos":1,"ids":["e673f1a8f32c5301291e1091c8c5255b",{"status":"available"},[]]}],"rev_map":{"1-e673f1a8f32c5301291e1091c8c5255b":3739},"winningRev":"1-e673f1a8f32c5301291e1091c8c5255b","deleted":false,"seq":3739}ÿby-sequenceÿ0000000000003739·{"name":"proxied","description":"http proxy supporting pause()","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Brian M. Carlson","email":"brian@enginode.com","url":"enginode.com"},"name":"proxied","description":"http proxy supporting pause()","version":"0.0.1","repository":{"type":"git","url":"git://github.com/brianc/proxied.git"},"main":"lib/","scripts":{"test":"./node_modules/.bin/mocha"},"dependencies":{"parsley":"*"},"devDependencies":{"express":"3.0.0alpha4","mocha":"*","should":"*","coffee-script":"*"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"brianc","email":"brian.m.carlson@gmail.com"},"_id":"proxied@0.0.1","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"61f3b1d2d25da8a8d1a104326a385c33eb145dbb","tarball":"http://registry.npmjs.org/proxied/-/proxied-0.0.1.tgz"},"maintainers":[{"name":"brianc","email":"brian.m.carlson@gmail.com"}]},"0.0.2":{"author":{"name":"Brian M. Carlson","email":"brian@enginode.com","url":"enginode.com"},"name":"proxied","description":"http proxy supporting pause()","version":"0.0.2","repository":{"type":"git","url":"git://github.com/brianc/proxied.git"},"main":"lib/","scripts":{"test":"./node_modules/.bin/mocha"},"dependencies":{"parsley":"*"},"devDependencies":{"express":"3.0.0alpha4","mocha":"*","should":"*","coffee-script":"*"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"brianc","email":"brian.m.carlson@gmail.com"},"_id":"proxied@0.0.2","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"0aee8527799fba1b6382c19cbf4f0774b00642e0","tarball":"http://registry.npmjs.org/proxied/-/proxied-0.0.2.tgz"},"maintainers":[{"name":"brianc","email":"brian.m.carlson@gmail.com"}]}},"readme":"proxied\n=======\n\nA stream http proxy server with http request pause() support","maintainers":[{"name":"brianc","email":"brian.m.carlson@gmail.com"}],"time":{"modified":"2012-05-18T04:26:28.350Z","created":"2012-05-17T03:54:35.945Z","0.0.1":"2012-05-17T03:54:36.949Z","0.0.2":"2012-05-18T04:26:28.350Z"},"author":{"name":"Brian M. Carlson","email":"brian@enginode.com","url":"enginode.com"},"repository":{"type":"git","url":"git://github.com/brianc/proxied.git"},"_id":"proxied","_rev":"1-e673f1a8f32c5301291e1091c8c5255b"}ÿdocument-storeÿprowl˜{"id":"prowl","rev":"1-62d4c2b295782c927b57a2f7f6c08305","rev_tree":[{"pos":1,"ids":["62d4c2b295782c927b57a2f7f6c08305",{"status":"available"},[]]}],"rev_map":{"1-62d4c2b295782c927b57a2f7f6c08305":3738},"winningRev":"1-62d4c2b295782c927b57a2f7f6c08305","deleted":false,"seq":3738}ÿby-sequenceÿ0000000000003738Ì{"name":"prowl","description":"Wrapprer for prowl, http://prowl.weks.net/.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"prowl","version":"0.0.1","author":{"name":"Gregoire Lejeune","email":"gregoire.lejeune@free.fr"},"description":"Wrapprer for prowl, http://prowl.weks.net/.","homepage":"http://algorithmique.net/","contributors":[{"name":"Gregoire Lejeune","url":"http://algorithmique.net"}],"repository":{"type":"git","url":"http://github.com/glejeune/node-prowl.git"},"keywords":["prowl","dot"],"engines":["node >= 0.3.5"],"directories":{"lib":"./lib"},"main":"lib/prowl","_id":"prowl@0.0.1","_nodeSupported":false,"_npmVersion":"0.2.11-5","_nodeVersion":"v0.2.6","dist":{"shasum":"f8baa6b11e1a01814789f193191daf6acc02443e","tarball":"http://registry.npmjs.org/prowl/-/prowl-0.0.1.tgz"}},"0.0.2":{"name":"prowl","version":"0.0.2","author":{"name":"Gregoire Lejeune","email":"gregoire.lejeune@free.fr"},"description":"Wrapprer for prowl, http://prowl.weks.net/.","homepage":"http://algorithmique.net/","contributors":[{"name":"Gregoire Lejeune","url":"http://algorithmique.net"}],"repository":{"type":"git","url":"http://github.com/glejeune/node-prowl.git"},"keywords":["prowl","dot"],"engines":["node >= 0.3.5"],"directories":{"lib":"./lib"},"main":"lib/prowl","_id":"prowl@0.0.2","_engineSupported":true,"_npmVersion":"0.2.18","_nodeVersion":"v0.4.8","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c0b1734838ab1344a293c974adb448b294fb77b5","tarball":"http://registry.npmjs.org/prowl/-/prowl-0.0.2.tgz"}},"0.0.3":{"name":"prowl","version"::f‰ù"0.0.3","author":{"name":"Gregoire Lejeune","email":"gregoire.lejeune@free.fr"},"description":"Wrapprer for prowl, http://prowl.weks.net/.","homepage":"http://algorithmique.net/","contributors":[{"name":"Gregoire Lejeune","url":"http://algorithmique.net"}],"repository":{"type":"git","url":"git://github.com/glejeune/node-prowl.git"},"keywords":["prowl","dot"],"engines":["node >= 0.3.5"],"directories":{"lib":"./lib"},"main":"lib/prowl","_npmUser":{"name":"greg","email":"gregoire.lejeune@free.fr"},"_id":"prowl@0.0.3","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-7","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"e0c66e126db3889e4eb5aff029044e269856038f","tarball":"http://registry.npmjs.org/prowl/-/prowl-0.0.3.tgz"},"readme":"","maintainers":[{"name":"greg","email":"gregoire.lejeune@free.fr"}]}},"maintainers":[{"name":"greg","email":"gregoire.lejeune@free.fr"}],"time":{"modified":"2012-07-01T19:08:07.188Z","created":"2011-01-24T20:50:37.173Z","0.0.1":"2011-01-24T20:50:37.732Z","0.0.2":"2011-05-27T00:12:04.481Z","0.0.3":"2012-07-01T19:08:07.188Z"},"author":{"name":"Gregoire Lejeune","email":"gregoire.lejeune@free.fr"},"repository":{"type":"git","url":"git://github.com/glejeune/node-prowl.git"},"_id":"prowl","_rev":"1-62d4c2b295782c927b57a2f7f6c08305"}ÿdocument-storeÿpropagit›{"id":"propagit","rev":"1-ccb8a19ab130414484ce925b06fe4363","rev_tree":[{"pos":1,"ids":["ccb8a19ab130414484ce925b06fe4363",{"status":"available"},[]]}],"rev_map":{"1-ccb8a19ab130414484ce925b06fe4363":3737},"winningRev":"1-ccb8a19ab130414484ce925b06fe4363","deleted":false,"seq":3737}ÿby-sequenceÿ0000000000003737Ìã{"name":"propagit","description":"cascading multi-server git deployment","dist-tags":{"latest":"0.6.4"},"versions":{"0.0.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.0.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.0.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"db9032857d8bdef37cf3b3c173ece666218c10f5","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.0.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.1.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.1.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.1.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"61be7c4ad4b6d5d16ac3d20ac3cfab3ade0a4c6c","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.1.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.1.1":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.1.1","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.1.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"de151822ae1c7fee797fe3a9fb115535b72844fc","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.1.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.1.2":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.1.2","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.1.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2fb297bdc38c8714b758fe2eb29d20f1c409c082","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.1.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.1.3":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.1.3","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.1.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"f276a13bce35c4a5603d8f5abdd8b6cefffddc47","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.1.3.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.2.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.2.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.2.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e06ae60ff73a982bd9dbc5f34506b324d1dfe71f","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.2.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"95436de4dd785d3dd27d05690a94a2e7348b72db","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.1":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.1","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x","procstreams":"0.2.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"755ab87199c8e027346af6c16999ca999533761d","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.2":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.2","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"9fdfc39178eda710264e9de193c31458497f45a0","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.3":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.3","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"c26ada1d92aefd2668a7a613165592eaf5ef0b7a","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.3.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.4":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.4","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.4","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d4bd10254c2aa610ed47fa845b46d415c0987e0d","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.4.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.5":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.5","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.5","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a810a72c1b70f19c8c00bee6b232495b049a6489","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.5.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.6":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.6","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.6","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e13c92eb8019babacba5e5576580427a0f758ddb","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.6.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.7":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.7","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.7","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"849ee5626130330d9e3fc63dadfa816b1f59af72","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.7.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.8":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.8","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.8","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"7127a819acc7e6e2c0acef5f39f58950dad4e982","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.8.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.9":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.9","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"0.1.x"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.9","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"9c4ef63a8d69048ad49c344438c1a567d07c9cc5","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.9.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.4.10":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.4.10","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.4.10","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e0e2ba9a3cd68faf5a95f302dc98468731c29024","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.4.10.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.5.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"519578ad25295fb6c3ecee3c57050de9144ff8bb","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.1":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.1","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.5.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"7d3cd2d3f6b90d2ade42c9521b4d3e4da298c7dc","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.2":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.2","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.5.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"831ea639a96848118211be2ff60fb92e4ce7154e","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.3":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.3","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","dnode":"0.9.x","upnode":"0.1.x","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.5.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d23c6cdb71f1a0dc544115f9797d8917143c63c4","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.3.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.4":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.4","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"0.3.x","upnode":"~0.2.0","pushover":"0.1.x","mkdirp":"0.3.x"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"propagit@0.5.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"b0401bf91304f7e96f58e5aae134024b08152b99","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.4.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.5.5":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.5.5","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.5.5","dist":{"shasum":"77a13ba81e1e5dae16cbec0b4c4bb0d90ca1ad49","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.5.5.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.6.0":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.6.0","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.6.0","dist":{"shasum":"feb0c362296579eb2405a67aec82af237cceb30d","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.6.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.6.1":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.6.1","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.6.1","dist":{"shasum":"447b57b4cabd2cce2f826aeb4df82e60fabce656","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.6.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.6.2":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.6.2","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.6.2","dist":{"shasum":"be341e329f5f6c91c734b851f3586c5300e9cc48","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.6.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.6.3":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.6.3","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.6.3","dist":{"shasum":"836546c24ebe1c8de277c00604bfed4d26a62f2b","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.6.3.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.6.4":{"name":"propagit","description":"cascading multi-server git deployment","version":"0.6.4","repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"main":"index.js","bin":{"propagit":"bin/cli.js"},"keywords":["git","deploy","multi-server","cluster"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"tap test/*.js"},"dependencies":{"optimist":"~0.3.4","upnode":"~0.3.1","pushover":"~0.1.4","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.3"},"engines":{"node":">=0.4.0"},"license":"MIT","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"readme":"","_id":"propagit@0.6.4","dist":{"shasum":"95c8ae633185098a324fcf18804105633d99ba83","tarball":"http://registry.npmjs.org/propagit/-/propagit-0.6.4.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"readme":null,"maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2012-08-03T00:16:53.442Z","created":"2012-01-25T14:16:13.320Z","0.0.0":"2012-01-25T14:16:14.730Z","0.1.0":"2012-01-30T11:34:30.697Z","0.1.1":"2012-01-30T11:59:40.188Z","0.1.2":"2012-02-03T15:17:26.740Z","0.1.3":"2012-02-04T07:30:14.439Z","0.2.0":"2012-02-05T13:40:16.409Z","0.4.0":"2012-02-27T11:38:48.728Z","0.4.1":"2012-02-27T12:01:14.874Z","0.4.2":"2012-02-29T22:55:44.963Z","0.4.3":"2012-03-01T00:32:29.609Z","0.4.4":"2012-03-01T01:24:41.990Z","0.4.5":"2012-03-01T01:39:22.242Z","0.4.6":"2012-03-01T01:53:35.232Z","0.4.7":"2012-03-03T05:55:57.546Z","0.4.8":"2012-03-06T00:39:03.349Z","0.4.9":"2012-03-06T09:45:37.663Z","0.4.10":"2012-03-06T12:01:23.504Z","0.5.0":"2012-03-07T03:57:56.372Z","0.5.1":"2012-03-07T04:28:36.559Z","0.5.2":"2012-03-07T19:42:49.977Z","0.5.3":"2012-03-07T20:26:43.007Z","0.5.4":"2012-03-27T03:11:38.284Z","0.5.5":"2012-07-28T11:58:38.444Z","0.6.0":"2012-07-28T12:49:44.437Z","0.6.1":"2012-08-01T06:49:20.483Z","0.6.2":"2012-08-01T11:21:07.569Z","0.6.3":"2012-08-02T23:07:45.889Z","0.6.4":"2012-08-03T00:16:53.442Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/propagit.git"},"users":{"fgribreau":true},"_id":"propagit","_rev":"1-ccb8a19ab130414484ce925b06fe4363"}ÿdocument-storeÿplus—{"id":"plus","rev":"1-260f27896425d606506f59909c871096","rev_tree":[{"pos":1,"ids":["260f27896425d606506f59909c871096",{"status":"available"},[]]}],"rev_map":{"1-260f27896425d606506f59909c871096":3736},"winningRev":"1-260f27896425d606506f59909c871096","deleted":false,"seq":3736}ÿby-sequenceÿ0000000000003736ÎG{"name":"plus","description":"Enhanced Array-like Objects support, Array iteration methods for plain Objects and more","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"plus","version":"0.1.0","description":"Enhanced Array-like Objects support, Array iteration methods for plain Objects and more","keywords":["array","array-like","extend","iteration","object"],"homepage":"https://github.com/creative-area/node-plus","author":{"name":"Julian Aubourg","email":"j@ubourg.net","url":"http://jaubourg.net/"},"repository":{"type":"git","url":"git://github.com/creative-area/node-plus.git"},"main":"lib/plus","devDependencies":{"nodeunit":">=0.5.1"},"engines":{"node":">=0.4.9"},"licenses":[{"type":"GPLv2","url":"http://www.opensource.org/licenses/gpl-2.0.php"},{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"_npmUser":{"name":"jaubourg","email":"j@ubourg.net"},"_id":"plus@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"4b63d82551b49adc81b2190c409dd7791924c33d","tarball":"http://registry.npmjs.org/plus/-/plus-0.1.0.tgz"},"maintainers":[{"name":"jaubourg","email":"j@ubourg.net"}]}},"readme":"node-plus\n=========\nnode-plus (or just __plus__) is a toolbox for nodejs that adds a bunch of functionalities to make node programming easier.\n\n__plus__ is dual licensed under the MIT or GPL Version 2 licenses.\n\n__plus__ is heavily tested internally (more than 160 unique assertions in unit tests) but bugs undoubtedly exist! Don't hesitate to report them and makî•üPùe pull requests if you feel like helping.\n\n## In a Nutshell\n\n### Array Methods Available Where Needed\n\nEver dreamed you could use _arguments.forEach_ and cringed at the acrobatics involved? __plus__ makes all the standard _Array_ methods available to _Array-like_ objects. It also provides two separate means to mark objects or even entire classes as _Array-like_.\n\n__plus__ also introduces the _flatten_ methods for _Arrays_ and _Array-like_ objects, a super useful deep _forEach_/_map_ kind of method.\n\nFurthermore, when it makes sense, __plus__ provides an implementation of _Array_ methods for non-_Array-like_ objects. So you can use _forEach_, _map_, _filter_ and more onto plain objects!\n\n### Proper Type Determination\n\nNever understood why _typeof new String()_ returns _\"object\"_? Fear not, __plus__'s _typeOf( new String() )_ will return _\"string\"_ just like _jQuery.type()_ does!\n\n_Arguments_ object are recognized as _\"arguments\"_, _Regular Expression_ object as _\"regexp\"_, etc.\n\n### New Plain Object Methods\n\n__plus__ adds _extend_, _deepExtend_ and _hiddenExtend_ for all your objects merging needs. Dealing with objects has never been easier. \n\nWith _Array-like_ objects getting so much love, you'll be happy to know you can use _isArrayLike()_ to determine if your object will behave like an _Array_ or not: very useful when a function parameter can be an _Array_, an _Arguments_ object or any other kind of _Array-like_ object!\n\n## Documentation\n\n### Installing\n\nJust use npm: `npm install plus`\n\n### Using\n\nAs soon as possible in your project just put `require( \"plus\" );`.\n\nSince __plus__ will declare the global function `typeOf` and augment `Object` and its prototype, it will \"propagate\" to the rest of your project. Some people may see this as undesirable and, for any other purpose, I would agree, but it's quite unavoidable given the very nature of what __plus__ does.\n\n### Brand New Methods & Functions\n\n__`Object.prototype.extend( obj1, ..., objN )`__\n> will add the properties of `obj1` to `objN` onto the current object. In case of properties already present, they will be overwritten by the newest value.\n\n__`Object.prototype.deepExtend( obj1, ..., objN )`__\n> same as `extend` except that the process is recursive when values of overwritten properties are objects.\n\n__`Object.prototype.flatten( [ false, ] [ callback ] )`__\n> flattens an Array or Array-like object. When called on a non-Array-like object, return the object in an Array:\n> * `[ [ 1, 2 ], 3, [ [ 4 ], [ 5 ] ] ].flatten()` will return `[ 1, 2, 3, 4, 5 ]`\n> * `{}.flatten()` will return `[ {} ]`\n>\n> if `callback` is given it acts as a data filter, the returned value is used to fill the resulting array. If an exception is thrown, the value is simply skipped and left out of the resulting array. For instance, the following code will return `[ 4, 8 ]`:\n>\n> [ [ 1, 2 ], 3, [ [ 4 ], [ 5 ] ] ].flatten(function( value ) {\n> if ( value % 2 ) {\n> throw \"odd\";\n> }\n> return 2 * value;\n> });\n>\n> if `false` is given as first argument, then no array is constructed (`flatten` will return `undefined`) but `callback` will be called nonetheless:\n>\n> var tmp = 0;\n> [ [ 1, 2 ], 3 ].flatten(function( value ) {\n> tmp += value;\n> });\n> console.log( tmp ); // outputs 6\n\n__`Object.prototype.hiddenExtend( obj1, ..., objN )`__\n> same as `extend` except the added properties won't be iterable using a `for..in` statement.\n\n__`Object.prototype.isArrayLike()`__\n> returns true if an Object is an Array or an Array-like Object, false otherwise.\n\n__`typeOf( obj )`__\n> returns the type of `obj`. This is equivalent to the `typeof` operator for non-Objects but will return the correct type for instantiated values. For instance, `typeOf( new String() )` will return `\"string\"` not `\"class\"`.\n\n### Array Methods\n\nThe following table shows for which type of Object each Array method is implemented:\n\n| Method | Array-like Objects | Objects |\n| -------------:|:------------------:|:-------------:|\n| `concat` | __YES__ | _NO_ |\n| `every` | __YES__ | __YES__ |\n| `filter` | __YES__ | __YES__ |\n| `flatten` | __YES__ | __YES__ |\n| `forEach` | __YES__ | __YES__ |\n| `indexOf` | __YES__ | __YES__ |\n| `join` | __YES__ | __YES__ |\n| `lastIndexOf` | __YES__ | __YES__ |\n| `map` | __YES__ | __YES__ |\n| `pop` | __YES__ | _NO_ |\n| `push` | __YES__ | _NO_ |\n| `reduce` | __YES__ | __YES__ |\n| `reduceRight` | __YES__ | __YES__ |\n| `reverse` | __YES__ | __YES__ |\n| `shift` | __YES__ | _NO_ |\n| `slice` | __YES__ | _NO_ |\n| `splice` | __YES__ | _NO_ |\n| `some` | __YES__ | __YES__ |\n| `sort` | __YES__ | __YES__ |\n| `unshift` | __YES__ | _NO_ |\n\nFor those methods rewritten for Plain Objects, the algorithm is as much of a direct translation as possible with the notable exception of `sort` which, while sorting according to the value, will keep the key/value correspondances of the object. For instance, `{ \"a\": 2, \"b\": 1 }.sort();` will change the object into `{ \"b\": 1, \"a\": 2 }`.\n\nPlease note that, [because of a __BUG__ (Google devs can argue all they want, three years and more than a hundred comments later, it is *still* a bug in V8)](http://code.google.com/p/v8/issues/detail?id=164), the engine does not ensure consistent ordering of properties in Objects when one or more keys are numbers (or parsable as numbers, which is even worse). As such, some of the methods will probably not work as you would expect if you use numbers as keys. Let's pray the V8 devs get back to their senses one day. In the meantime, don't use numbers as keys in non-Array-like objects.\n\n### Tagging a Class or Object as \"Array-like\"\n\nThe simplest way to tag a Class as Array-like is to add a `__array_like__` boolean property set to true to its prototype. We recommand using `Object.defineProperty` so that the property is not iterable using a `for...in` statement:\n\n Object.defineProperty( MyConstructor.prototype, \"__array_like__\", { \"value\": true } );\n\nIf your code is not prototype-based (but rather uses Plain Objects created in closures), you can create the property onto the Object itself:\n\n Object.defineProperty( myPlainObject, \"__array_like__\", { \"value\": true } );\n\nIf you're using Objects from a third-party library and can't (or don't want to) change the library's code, look up what value `typeOf` returns for this type of Objects and add an entry on the `Object.arrayTypes` map:\n\n Object.arrayTypes[ \"thetype\" ] = true;\n\n__plus__ will take care of the rest from there! ;)","maintainers":[{"name":"jaubourg","email":"j@ubourg.net"}],"time":{"modified":"2012-04-22T01:52:17.489Z","created":"2012-04-22T01:52:14.995Z","0.1.0":"2012-04-22T01:52:17.489Z"},"author":{"name":"Julian Aubourg","email":"j@ubourg.net","url":"http://jaubourg.net/"},"repository":{"type":"git","url":"git://github.com/creative-area/node-plus.git"},"_id":"plus","_rev":"1-260f27896425d606506f59909c871096"}ÿdocument-storeÿpatience›{"id":"patience","rev":"1-2e8c28cb6156362a652a260e22e3610b","rev_tree":[{"pos":1,"ids":["2e8c28cb6156362a652a260e22e3610b",{"status":"available"},[]]}],"rev_map":{"1-2e8c28cb6156362a652a260e22e3610b":3735},"winningRev":"1-2e8c28cb6156362a652a260e22e3610b","deleted":false,"seq":3735}ÿby-sequenceÿ0000000000003735Ê+{"name":"patience","description":"A little something to help your asserts chill out.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"author":{"name":"Graeme Foster","email":"graemef@gmail.com","url":"http://graemef.com"},"name":"patience","description":"A little something to help your asserts chill out.","scripts":{"test":"node node_modules/tap/bin/tap.js tests"},"version":"0.1.0","main":"patience.js","dependencies":{},"devDependencies":{"tap":"~0.2.4"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_id":"patience@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0b88b21abe426b4f3546e25f798e969db7a51b62","tarball":"http://registry.npmjs.org/patience/-/patience-0.1.0.tgz"},"maintainers":[{"name":"graemef","email":"graemef@gmail.com"}]},"0.1.1":{"author":{"name":"Graeme Foster","email":"graemef@gmail.com","url":"http://graemef.com"},"name":"patience","description":"A little something to help your asserts chill out.","repository":{"type":"git","url":"git://github.com/GraemeF/patience.git"},"scripts":{"test":"node node_modules/tap/bin/tap.js tests"},"version":"0.1.1","main":"patience.js","dependencies":{},"devDependencies":{"tap":"~0.2.4"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_id":"patience@0.1.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"d2e5a460cccc83d6a853c18ff6a202fd1dac1a4c","tarball":"http://registry.npmjs.org/patience/-/patience-0.1.1.tgz"},"maintainers":[{"name":"graemef","email":"graemef@gmail.com"}]},"0.2.0":{"author":{"name":"Graeme Foster","email":"graemef@gmail.com","url":"http://graemef.com"},"name":"patience","description":"A little something to help your asserts chill out.","repository":{"type":"git","url":"git://github.com/GraemeF/patience.git"},"scripts":{"test":"node node_modules/tap/bin/tap.js tests"},"version":"0.2.0","main":"patience.js","dependencies":{},"devDependencies":{"tap":"~0.2.4"},"optionalDependencies":{},"engines":{"node":"*"},"readme":"# Patience\n## A little something to help your asserts chill out\n\nSometimes end-to-end tests talk to external processes and/or servers. Sometimes those external things take a little while to do their stuff. Sometimes you need to assert that stuff happens, eventually.\n\n## Installation\n npm install patience\n\n## Usage\nWhen you want to make sure something happens within a short time period, call `soon(assert, context, callback)`. This will repeatedly check the `assert` until it passes, or gives up trying.\n \n## Example\nHere's something that hopefully gets the idea across. Say I have an assert that looks like this:\n\n```javascript\nthis.browser.users().should.include(name);\ncallback();\n```\n\nThat's great if the users list is updated synchronously. But say I'm testing my code in a child process, and using socket.io to send users back to a zombie browser when they log in? The test will only pass if the assert happens to run after all that communication has finished.\n\nInstead, I can give it a short while to happen:\n\n```javascript\nsoon(function () {\n this.browser.users().should.include(name);\n}, this, callback);\n```\n\nThis makes my test pass reliably, and as quickly as possible.\n\nOr if I need to check that an async function eventually succeeds\n(i.e. calls the callback without passing it an error):\n\n```javascript\nsoon(function (cb) {\n this.browser.get('http://google.com', cb);\n}, this, callback);\n```","_id":"patience@0.2.0","dist":{"shasum":"2d8457f85beb3bc659b056f10dfe4abd750e334b","tarball":"http://registry.npmjs.org/patience/-/patience-0.2.0.tgz"},"maintainers":[{"name":"graemef","email":"graemef@gmail.com"}]}},"readme":"# Patience\n## A little something to help your asserts chill out\n\nSometimes end-to-end tests talk to external processes and/or servers. Sometimes those external things take a little while to do their stuff. Sometimes you need to assert that stuff happens, eventually.\n\n## Installation\n npm install patience\n\n## Usage\nWhen you want to make sure something happens within a short time period, call `soon(assert, context, callback)`. This will repeatedly check the `assert` until it passes, or gives up trying.\n \n## Example\nHere's something that hopefully gets the idea across. Say I have an assert that looks like this:\n\n```javascript\nthis.browser.users().should.include(name);\ncallback();\n```\n\nThat's great if the users list is updated synchronously. But say I'm testing my code in a child process, and using socket.io to send users back to a zombie browser when they log in? The test will only pass if the assert happens to run after all that communication has finished.\n\nInstead, I can give it a short while to happen:\n\n```javascript\nsoon(function () {\n this.browser.users().should.include(name);\n}, this, callback);\n```\n\nThis makes my test pass reliably, and as quickly as possible.","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"time":{"modified":"2012-08-07T20:14:40.820Z","created":"2012-04-22T20:18:31.328Z","0.1.0":"2012-04-22T20:18:32.744Z","0.1.1":"2012-04-22T20:22:52.239Z","0.2.0":"2012-08-07T16:57:53.159Z"},"author":{"name":"Graeme Foster","email":"graemef@gmail.com","url":"http://graemef.com"},"repository":{"type":"git","url":"git://github.com/GraemeF/patience.git"},"users":{"graemef":true},"_id":"patience","_rev":"1-2e8c28cb6156362a652a260e22e3610b"}ÿdocument-storeÿpastiche›{"id":"pastiche","rev":"1-938f1cd8a71c7fb0bec706ce7bde3f6b","rev_tree":[{"pos":1,"ids":["938f1cd8a71c7fb0bec706ce7bde3f6b",{"status":"available"},[]]}],"rev_map":{"1-938f1cd8a71c7fb0bec706ce7bde3f6b":3734},"winningRev":"1-938f1cd8a71c7fb0bec706ce7bde3f6b","deleted":false,"seq":3734}ÿby-sequenceÿ0000000000003734ë {"name":"pastiche","description":"Asynchronous templating for CoffeeScript.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"pastiche","description":"Asynchronous templating for CoffeeScript.","author":{"name":"Alan Gutierrez"},"version":"0.0.1","keywords":["coffeescript","template","html","xml","text"],"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/stencil/raw/master/LICENSE"}],"directories":{"lib":"./lib"},"main":"./lib/compiler.js","repository":{"type":"git","url":"git://github.com/bigeasy/stencil.git"},"scripts":{"test":"proof t/*/*.t"},"devDependencies":{"proof":">=0.0.1"},"dependencies":{"coffee-script":">=1.0.1","streamline":">=0.2.0"},"bin":{"stencil":"./bin/stencil"},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"_id":"pastiche@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8628bdae403535657f35d0958240c16cff6a848e","tarball":"http://registry.npmjs.org/pastiche/-/pastiche-0.0.1.tgz"},"readme":"","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}]}},"readme":"","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"time":{"modified":"2012-06-13T04:10:35.311Z","created":"2012-06-13T04:10:34.469Z","0.0.1":"2012-06-13T04:10:35.311Z"},"author":{"name":"Alan Gutierrez"},"repository":{"type":"git","url":"git://github.com/bigeasy/stencil.git"},"_id":"pastiche","_rev":"1-938f1cd8a71c7fb0bec706ce7bde3f6b"}$ÿdocument-storeÿpassport-statusnet¥{"id":"passport-statusnet","rev":"1-82cdb793efc357a21d5fa63bda578870","rev_tree":[{"pos":1,"ids":["82cdb793efc357a21d5fa63bda578870",{"status":"available"},[]]}],"rev_map":{"1-82cdb793efc357a21d5fa63bda578870":3733},"winningRev":"1-82cdb793efc357a21d5fa63bda578870","deleted":false,"seq":3733}ÿby-sequenceÿ0000000000003733… {"name":"passport-statusnet","description":"StatusNet authentication strategy for Passport.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"ZooWar"},"description":"StatusNet authentication strategy for Passport.","dependencies":{"passport-oauth":">= 0.1.6","pkginfo":">= 0.2.3"},"devDependencies":{"nodelint":"0.6.0"},"engines":{"node":">= 0.6.0"},"keywords":["passport","statusnet","auth","oauth","authentication","identity"],"main":"./lib/passport-statusnet","name":"passport-statusnet","repository":{"type":"git","url":"git://github.com/zoowar/passport-statusnet.git"},"version":"0.1.0","_npmUser":{"name":"zoowar","email":"npm@zoowar.com"},"_id":"passport-statusnet@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"865cb47209ad26de3a10317a314643fe55cf8f8f","tarball":"http://registry.npmjs.org/passport-statusnet/-/passport-statusnet-0.1.0.tgz"},"readme":"","maintainers":[{"name":"zoowar","email":"npm@zoowar.com"}]}},"readme":"","maintainers":[{"name":"zoowar","email":"npm@zoowar.com"}],"time":{"modified":"2012-03-22T23:35:08.928Z","created":"2012-03-22T23:35:07.175Z","0.1.0":"2012-03-22T23:35:08.928Z"},"author":{"name":"ZooWar"},"repository":{"type":"git","url":"git://github.com/zoowar/passport-statusnet.git"},"_id":"passport-statusnet","_rev":"1-82cdb793efc357a21d5fa63bda578870"}ÿdocument-storeÿpassive-model {"id":"passive-model","rev":"1-1b12ddc9f8f759264bbcc4116d5f5688","rev_tree":[{"pos":1,"ids":["1b12ddc9f8f759264bbcc4116d5f5688",{"status":"available"},[]]}],"rev_map":{"1-1b12ddc9f8f759264bbcc4116d5f5688":3732},"winningRev":"1-1b12ddc9f8f759264bbcc4116d5f5688","deleted":false,"seq":3732}ÿby-sequenceÿ0000000000003732‘{"name":"passive-model","description":"Model that can be used on both Client & Server","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"passive-model","main":"./lib/index","version":"0.1.0","homepage":"http://alexeypetrushin.github.com/passive-model","dependencies":{"underscore":"1.3.x"},"devDependencies":{"coffee-script":"1.2.x","mocha":"1.0.x","expect.js":"0.1.x"},"description":"Model that can be used on both Client & Server","keywords":["ODM","ORM","Model","MDD","DDD","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"passive-model@0.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"bb881615d8ec25c4f0e18e136eb18e0120ec42ca","tarball":"http://registry.npmjs.org/passive-model/-/passive-model-0.1.0.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.1.1":{"name":"passive-model","main":"./passive-model","version":"0.1.1","homepage":"http://alexeypetrushin.github.com/passive-model","dependencies":{"underscore":"1.3.x"},"devDependencies":{"backbon":"0.9.x","coffee-script":"1.2.x","mocha":"1.0.x","expect.js":"0.1.x"},"description":"Model that can be used on both Client & Server","keywords":["ODM","ORM","Model","MDD","DDD","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"passive-model@0.1.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"553d45d36f92e61a6b94c7c0608d593213cb255b","tarball":"http://registry.npmjs.org/passive-model/-/passive-model-0.1.1.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.1.2":{"name":"passive-model","main":"./lib/passive-model","version":"0.1.2","homepage":"http://alexeypetrushin.github.com/passive-model","dependencies":{"underscore":"1.3.x"},"devDependencies":{"backbone":"0.9.x"},"description":"Model that can be used on both Client & Server","keywords":["ODM","ORM","Model","MDD","DDD","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"passive-model@0.1.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"eba9b037cdce8a0407c2be925911545450b160be","tarball":"http://registry.npmjs.org/passive-model/-/passive-model-0.1.2.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]}},"readme":"# Model that can be used on both Client & Server","maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}],"time":{"modified":"2012-04-22T21:26:35.604Z","created":"2012-03-31T16:24:24.162Z","0.1.0":"2012-03-31T16:24:42.897Z","0.1.1":"2012-04-11T16:44:49.950Z","0.1.2":"2012-04-22T21:26:35.604Z"},"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"_id":"passive-model","_rev":"1-1b12ddc9f8f759264bbcc4116d5f5688"}ÿdocument-storeÿparseArgsœ{"id":"parseArgs","rev":"1-976eed472d675001d9a493e49b3b68f0","rev_tree":[{"pos":1,"ids":["976eed472d675001d9a493e49b3b68f0",{"status":"available"},[]]}],"rev_map":{"1-976eed472d675001d9a493e49b3b68f0":3731},"winningRev":"1-976eed472d675001d9a493e49b3b68f0","deleted":false,"seq":3731}ÿby-sequenceÿ0000000000003731¤{"name":"parseArgs","description":"A fluent DSL for parsing argument objects.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"author":{"name":"Matt Baker"},"name":"parseArgs","description":"A fluent DSL for parsing argument objects.","version":"0.0.2","repository":{"type":"git","url":"git://github.com/reissbaker/parseArgs.git"},"main":"index.js","scripts":{"test":"node test/"},"engines":{"node":">=0.4.1"},"dependencies":{},"devDependencies":{"mocha":"0.7.1","should":"0.4.2","uglify-js":"1.2.3"},"_npmUser":{"name":"reissbaker","email":"matthew.reiss.baker@gmail.com"},"_id":"parseArgs@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"619a6696dcc4f7fc900859f10ebf126a60930a56","tarball":"http://registry.npmjs.org/parseArgs/-/parseArgs-0.0.2.tgz"},"maintainers":[{"name":"reissbaker","email":"matthew.reiss.baker@gmail.com"}]}},"readme":"parseArgs\n=========\n\nA fluent Javascript DSL for parsing the arguments object. Allows for simple, concise\noptional arguments and repeating numbers of arguments.\n\nReplace your if-else statements today!\n\nExample\n-------\n\n```javascript\nvar updateOrder = function() {\n var args = parseArgs(arguments)\n .required('name')\n .optional('discountCode', -1, {type: 'number'})\n .optional('referrer', null, {instance: User})\n .required('address')\n .end\n \n $('#orderField').text(\n 'Name: ' + args.name + ', discount code: ' + args.discountCode +\n ', referrer: ' + args.referrer + ', address: ' + args.address\n );\n}\n```\n\nAPI\n---\n\nTo start the chain, call `parseArgs(arguments)`, with the `arguments` keyword literally\nbeing passed into the function. You can then continue the chain with the following\nmethods:\n\n* `required(name)`, where `name` is the name of the argument.\n* `optional(name, defaultValue, checker)`, where `name` is the name of the argument,\n`defaultValue` is a default value to assign to the argument if nothing gets passed in,\nand `check` is either an object with a `type` or `instance` field or a function. If `check`\nis an object, the optional argument will have its type checked against the string set in\nthe `type` field (if provided), and check whether it's an instance of the class set\nin the `instance` field (if provided). If it's a function, the function should be of the form\n`function(arg, index, args)`, where `arg` is the current argument being checked, `index` is\nthe index of that argument in the total number of arguments, and `args` the argument object\nprovided as an Array. If the function returns true, the argument will be considered to have\nbeen passed in and the default value will not be set; if it returns false, the default value\nwill be set.\n* `many(name, checker)`, where `name` is the name of the argument, and `checker` is the same\nas the `checker` above. Stores the passed-in values in an array; if none are passed in, the\narray will be empty.\n\nOnce the chain is done, just access the chain's `end` property to finish it off. The parsed\narguments will be stored in the returned object using the names given to each of the argument\nparsing calls.","maintainers":[{"name":"reissbaker","email":"matthew.reiss.baker@gmail.com"}],"time":{"modified":"2012-06-06T06:43:55.250Z","created":"2012-06-06T06:43:53.797Z","0.0.2":"2012-06-06T06:43:55.250Z"},"author":{"name":"Matt Baker"},"repository":{"type":"git","url":"git://github.com/reissbaker/parseArgs.git"},"_id":"parseArgs","_rev":"1-976eed472d675001d9a493e49b3b68f0"}ÿdocument-storeÿparse-apiœ{"id":"parse-api","rev":"1-14bf97c0742cd1868d0d6cc1455d059c","rev_tree":[{"pos":1,"ids":["14bf97c0742cd1868d0d6cc1455d059c",{"status":"available"},[]]}],"rev_map":{"1-14bf97c0742cd1868d0d6cc1455d059c":3730},"winningRev":"1-14bf97c0742cd1868d0d6cc1455d059c","deleted":false,"seq":3730}ÿby-sequenceÿ0000000000003730‹{"name":"parse-api","description":"API for accessing Parse.com applications","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.1":{"name":"parse-api","description":"API for accessing Parse.com applications","version":"0.2.1","author":{"name":"Will Russell","email":"will@31ll.com"},"repository":{"type":"git","url":"git://github.com/willsr/node-parse-api.git"},"main":"index","engines":{"node":">= 0.4.0"},"_npmJsonOpts":{"file":"/Users/will/.npm/parse-api/0.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"parse-api@0.2.1","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.17","_nodeVersion":"v0.5.4","_defaultsLoaded":true,"dist":{"shasum":"b2db18fa4bd3d3e6525c0f6b2dfff2422a20156d","tarball":"http://registry.npmjs.org/parse-api/-/parse-api-0.2.1.tgz"},"scripts":{},"maintainers":[{"name":"willsr","email":"will@31ll.com"}]},"0.3.0":{"name":"parse-api","description":"API for accessing Parse.com applications","version":"0.3.0","author":{"name":"Chris Johnson","email":"tenorviol@yahoo.com"},"repository":{"type":"git","url":"git://github.com/willsr/node-parse-api.git"},"main":"index","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"willsr","email":"will@31ll.com"},"_id":"parse-api@0.3.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d7600bf69b884b3b1bd855a4cf23068c6efb0a9b","tarball":"http://registry.npmjs.org/parse-api/-/parse-api-0.3.0.tgz"},"readme":"Node Parse API\n==============\n\ninstall\n-------\n\n npm install parse-api\n\nexamples\n--------\n\n### setup\n\n var Parse = require('parse-api').Parse;\n \n var APP_ID = ...;\n var MASTER_KEY = ...;\n \n var app = new Parse(APP_ID, MASTER_KEY);\n\n### insert\n\n // add a Foo object, { foo: 'bar' }\n app.insert('Foo', { foo: 'bar' }, function (err, response) {\n console.log(response);\n });\n\n### insert file\n\tvar fs = require('fs'),\n\t\tfileName = 'myMedia.mp3';\n\tfs.readFile(fileName, function (err, data) {\n\t\tif (err) throw err;\n\t\tapp.insertFile(fileName, data, 'audio/mpeg', function(err, response){\n\t\t\tif(err) throw err;\n\t\t\tconsole.log('Name: ' + response.name);\n\t\t\tconsole.log('Url: ' + response.url);\n\t\t});\n\t});\n\t \n### send global push notification\n\tapp.push({channel: \"\", data: {alert: \"Notification \", sound: \"\"}}, function (err, response) {\n\tconsole.log(response);\n\t});\n\n### find one\n\n // the Foo with id = 'someId'\n app.find('Foo', 'someId', function (err, response) {\n console.log(response);\n });\n\n### find many\n\n // all Foo objects with foo = 'bar'\n app.find('Foo', { foo: 'bar' }, function (err, response) {\n console.log(response);\n });\n\n\n### find many with ordered\n\n // all Foo objects with foo = 'bar' and order by 'id'\n app.find('Foo', { foo: 'bar', order: 'id'}, function (err, response) {\n console.log(response);\n });\n\n\n### find many with limited\n\n // all Foo objects with foo = 'bar' and limited by 10\n app.find('Foo', { foo: 'bar', limit: 10}, function (err, response) {\n console.log(response);\n });\n\n\n### update\n\n app.update('Foo', 'someId', { foo: 'fubar' }, function (err, response) {\n console.log(response);\n });\n\n### delete\n\n app.delete('Foo', 'someId', function (err) {\n // nothing to see here\n });\n","maintainers":[{"name":"willsr","email":"will@31ll.com"}]}},"maintainers":[{"name":"willsr","email":"will@31ll.com"}],"time":{"modified":"2012-06-19T14:25:50.199Z","created":"2012-04-14T02:31:48.181Z","0.2.1":"2012-04-14T02:31:52.489Z","0.3.0":"2012-06-19T14:25:50.199Z"},"author":{"name":"Chris Johnson","email":"tenorviol@yahoo.com"},"repository":{"type":"git","url":"git://github.com/willsr/node-parse-api.git"},"_id":"parse-api","_rev":"1-14bf97c0742cd1868d0d6cc1455d059c"}ÿdocument-storeÿoverscoreœ{"id":"overscore","rev":"1-4bfeac213c52ec926794bf199d2c74c3","rev_tree":[{"pos":1,"ids":["4bfeac213c52ec926794bf199d2c74c3",{"status":"available"},[]]}],"rev_map":{"1-4bfeac213c52ec926794bf199d2c74c3":3729},"winningRev":"1-4bfeac213c52ec926794bf199d2c74c3","deleted":false,"seq":3729}ÿby-sequenceÿ0000000000003729Ï2{"name":"overscore","description":"Server-side underscore template builder.","dist-tags":{"latest":"0.2.1-14"},"versions":{"0.2.1-14":{"author":{"name":"Philip Thrasher","email":"philipthrasher@gmail.com","url":"http://philipthrasher.com"},"name":"overscore","keywords":["javascript","underscore","templates","compiler","serverside","server side","server-side"],"description":"Server-side underscore template builder.","version":"0.2.1-14","licenses":[{"type":"MIT","url":"https://raw.github.com/pthrasher/overscore/master/LICENSE"}],"dependencies":{"underscore":"~1.3.3","commander":"~0.6.1","npmlog":"0.0.2"},"devDependencies":{"coffee-script":"~1.3.3","uglify-js":"~1.3.0","semver":"~1.0.14"},"optionalDependencies":{},"engines":{"node":">=0.6.9"},"homepage":"http://pthrasher.github.com/overscore","bugs":{"name":"https://github.com/pthrasher/overscore/issues"},"repository":{"type":"git","url":"git://github.com/pthrasher/overscore.git"},"bin":{"overscore":"./bin/overscore"},"_npmUser":{"name":"pthrasher","email":"philipthrasher@gmail.com"},"_id":"overscore@0.2.1-14","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"b93ac92d2ba31f110aa0f62faa2537dd90440e07","tarball":"http://registry.npmjs.org/overscore/-/overscore-0.2.1-14.tgz"},"maintainers":[{"name":"pthrasher","email":"philipthrasher@gmail.com"}]}},"readme":"Overscore\n=========\n\nOverscore builds underscore.js templates on the server side for you, and\noutputs a javascript you can include in the browser. It even supports AMD\noutput.\n\n $ overscore --help\n\n Usage: overscore [options] \n\n Options:\n\n -h, --help output usage information\n -V, --version output the version number\n -s, --silent Shortcut for --loglevel silent.\n -a, --amd Wrap output with define to make it AMD compatible.\n -n, --namespace Namespace under which templates should live. [Templates]\n -l, --loglevel Minimum log level to display. [info]\n -b, --basedir Base directory to keep out of namespacing.\n\nUsage\n-----\n\n $ npm install -g overscore\n $ overscore -n Templates -b example example/**/*.html > templates.js\n\n### templates.js\n\n```javascript\n/*\n * Safely grab the namespace(s).\n */\nvar Templates = Templates != null ? Templates : {};\n\n/*\n * Individual templates.\n */\nTemplates.Dashboard.base = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='\\n\\n\\n \\n \\n\\n\\n '+( \"Hello, world.\" )+'\\n\\n';}return __p;};\nTemplates.Dashboard.item = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='
\\n \\n \\n \\n
\\n';}return __p;};\nTemplates.Dashboard.stats = function(obj){var __p='';var FçðRùprint=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+=''; if (done) { ;__p+='\\n \\n Clear '+( done )+' completed '+( done == 1 ? 'item' : 'items' )+'\\n \\n'; } ;__p+='\\n\\n
\\n '+( remaining )+' '+( remaining == 1 ? 'item' : 'items' )+' left\\n
';}return __p;};\nTemplates.Profile.admin.base = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='\\n\\n\\n \\n \\n\\n\\n '+( \"Hello, world.\" )+'\\n\\n';}return __p;};\nTemplates.Profile.admin.item = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='
\\n \\n \\n \\n
\\n';}return __p;};\nTemplates.Profile.admin.stats = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+=''; if (done) { ;__p+='\\n \\n Clear '+( done )+' completed '+( done == 1 ? 'item' : 'items' )+'\\n \\n'; } ;__p+='\\n\\n
\\n '+( remaining )+' '+( remaining == 1 ? 'item' : 'items' )+' left\\n
';}return __p;};\nTemplates.Profile.user.base = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='\\n\\n\\n \\n \\n\\n\\n '+( \"Hello, world.\" )+'\\n\\n';}return __p;};\nTemplates.Profile.user.item = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+='
\\n \\n \\n \\n
\\n';}return __p;};\nTemplates.Profile.user.stats = function(obj){var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};with(obj||{}){__p+=''; if (done) { ;__p+='\\n \\n Clear '+( done )+' completed '+( done == 1 ? 'item' : 'items' )+'\\n \\n'; } ;__p+='\\n\\n
\\n '+( remaining )+' '+( remaining == 1 ? 'item' : 'items' )+' left\\n
';}return __p;};\n```\n","maintainers":[{"name":"pthrasher","email":"philipthrasher@gmail.com"}],"time":{"modified":"2012-06-13T17:59:21.920Z","created":"2012-06-13T17:59:21.192Z","0.2.1-14":"2012-06-13T17:59:21.920Z"},"author":{"name":"Philip Thrasher","email":"philipthrasher@gmail.com","url":"http://philipthrasher.com"},"repository":{"type":"git","url":"git://github.com/pthrasher/overscore.git"},"_id":"overscore","_rev":"1-4bfeac213c52ec926794bf199d2c74c3"}&ÿdocument-storeÿollie-github-example§{"id":"ollie-github-example","rev":"1-74cc83b36ad319170efa9cdb47c7eece","rev_tree":[{"pos":1,"ids":["74cc83b36ad319170efa9cdb47c7eece",{"status":"available"},[]]}],"rev_map":{"1-74cc83b36ad319170efa9cdb47c7eece":3728},"winningRev":"1-74cc83b36ad319170efa9cdb47c7eece","deleted":false,"seq":3728}ÿby-sequenceÿ0000000000003728×{"name":"ollie-github-example","description":"Get a list of github user repos","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"name":"ollie-github-example","description":"Get a list of github user repos","version":"0.0.0","main":"github.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"ollieparsley-example-user","email":"ollie+example@ollieparsley.com"},"_id":"ollie-github-example@0.0.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"d773101105cb6ee0c213c7d9319a541b2b6d0bde","tarball":"http://registry.npmjs.org/ollie-github-example/-/ollie-github-example-0.0.0.tgz"},"readme":"","maintainers":[{"name":"ollieparsley-example-user","email":"ollie+example@ollieparsley.com"}]},"0.0.1":{"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"name":"ollie-github-example","description":"Get a list of github user repos","version":"0.0.1","main":"github.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"ollieparsley-example-user","email":"ollie+example@ollieparsley.com"},"_id":"ollie-github-example@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"eb4d252b53b0b9816937c960228e735736ebad76","tarball":"http://registry.npmjs.org/ollie-github-example/-/ollie-github-example-0.0.1.tgz"},"readme":"","maintainers":[{"name":"ollieparsley-example-user","email":"ollie+example@ollieparsley.com"}]}},"readme":"","maintainers":[{"name":"ollieparsley-example-user","email":"ollie+example@ollieparsley.com"}],"time":{"modified":"2012-06-26T11:34:16.712Z","created":"2012-06-26T11:32:30.683Z","0.0.0":"2012-06-26T11:32:32.947Z","0.0.1":"2012-06-26T11:34:16.712Z"},"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"_id":"ollie-github-example","_rev":"1-74cc83b36ad319170efa9cdb47c7eece"}ÿdocument-storeÿobviouslyœ{"id":"obviously","rev":"1-bbb931e9d046c3c6f6a1a325d93c0be7","rev_tree":[{"pos":1,"ids":["bbb931e9d046c3c6f6a1a325d93c0be7",{"status":"available"},[]]}],"rev_map":{"1-bbb931e9d046c3c6f6a1a325d93c0be7":3727},"winningRev":"1-bbb931e9d046c3c6f6a1a325d93c0be7","deleted":false,"seq":3727}ÿby-sequenceÿ0000000000003727ù {"name":"obviously","description":"lightweight type reflection for node.js","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"obviously","description":"lightweight type reflection for node.js","version":"0.0.1","homepage":"https://github.com/Obvious/obviously","authors":["Jeremy Stanley (https://github.com/azulus)"],"keywords":["obviously","types"],"main":"./obviously.js","repository":{"type":"git","url":"git://github.com/Obvious/obviously.git"},"_npmUser":{"name":"azulus","email":"npm@azulus.com"},"_id":"obviously@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"20c2d20970688b07c9a704957a24778fd3727440","tarball":"http://registry.npmjs.org/obviously/-/obviously-0.0.1.tgz"},"readme":"","maintainers":[{"name":"azulus","email":"npm@azulus.com"}]}},"readme":"","maintainers":[{"name":"azulus","email":"npm@azulus.com"}],"time":{"modified":"2012-06-25T20:51:59.132Z","created":"2012-06-25T20:51:54.520Z","0.0.1":"2012-06-25T20:51:59.132Z"},"repository":{"type":"git","url":"git://github.com/Obvious/obviously.git"},"_id":"obviously","_rev":"1-bbb931e9d046c3c6f6a1a325d93c0be7"}ÿdocument-storeÿoauth2-device {"id":"oauth2-device","rev":"1-e0acaf8f9174be27c4cae3206a4c0b5f","rev_tree":[{"pos":1,"ids":["e0acaf8f9174be27c4cae3206a4c0b5f",{"status":"available"},[]]}],"rev_map":{"1-e0acaf8f9174be27c4cae3206a4c0b5f":3726},"winningRev":"1-e0acaf8f9174be27c4cae3206a4c0b5f","deleted":false,"seq":3726}ÿby-sequenceÿ0000000000003726­ {"name":"oauth2-device","description":"Google OAuth 2.0 for Devices","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"oauth2-device","description":"Google OAuth 2.0 for Devices","version":"0.0.1","url":"https://github.com/mimetnet/oauth2-device","keywords":["google","device","authentication","api"],"repository":{"type":"git","url":"git://github.com/mimetnet/oauth2-device.git"},"bugs":{"url":"https://github.com/mimetnet/oauth2-device/issues"},"engines":{"node":">=0.4.1"},"author":{"name":"Matthew Metnetsky","email":"matthew@cowarthill.com","url":"http://cowarthill.com/"},"devDependencies":{"commander":">= 0.6.0"},"licenses":[{"type":"BSD","url":"https://raw.github.com/mimetnet/oauth2-device/master/COPYING"}],"_npmUser":{"name":"mimetnet","email":"matthew@cowarthill.com"},"_id":"oauth2-device@0.0.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"65d884d6059e205a993f32dd6cf7760fa933fb1c","tarball":"http://registry.npmjs.org/oauth2-device/-/oauth2-device-0.0.1.tgz"},"maintainers":[{"name":"mimetnet","email":"matthew@cowarthill.com"}]}},"readme":"oauth2-device\n=============\n\nNode.js Library for using Google's OAuth 2.0 for Devices","maintainers":[{"name":"mimetnet","email":"matthew@cowarthill.com"}],"time":{"modified":"2012-04-22T19:07:29.150Z","created":"2012-04-22T19:07:28.353Z","0.0.1":"2012-04-22T19:07:29.150Z"},"author":{"name":"Matthew Metnetsky","email":"matthew@cowarthill.com","url":"http://cowarthill.com/"},"repository":{"type":"git","url":"git://github.com/mimetnet/oauth2-device.git"},"_id":"oauth2-device","_rev":"1-e0acaf8f9174be27c4cae3206a4c0b5f"}ÿdocument-storeÿnproj˜{"id":"nproj","rev":"1-f9c59a5b349f1cf86b63a2bdfd6c5c8a","rev_tree":[{"pos":1,"ids":["f9c59a5b349f1cf86b63a2bdfd6c5c8a",{"status":"available"},[]]}],"rev_map":{"1-f9c59a5b349f1cf86b63a2bdfd6c5c8a":3725},"winningRev":"1-f9c59a5b349f1cf86b63a2bdfd6c5c8a","deleted":false,"seq":3725}ÿby-sequenceÿ0000000000003725ñ{"name":"nproj","description":"Nodejs module boilerplate generator","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"name":"nproj","description":"Empty node project generator","version":"0.0.1","repository":{"type":"git","url":"git://github.com/aheckmann/nproj.git"},"dependencies":{},"devDependencies":{},"bin":{"nproj":"./bin/nproj"},"_npmUser":{"name":"aaron","email":"aaron.heckmann+github@gmail.com"},"_id":"nproj@0.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d7b7e573dfcccb92c2e99b3edff54503f106992e","tarball":"http://registry.npmjs.org/nproj/-/nproj-0.0.1.tgz"},"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}]},"0.0.2":{"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"name":"nproj","description":"Empty node project generator","version":"0.0.2","repository":{"type":"git","url":"git://github.com/aheckmann/nproj.git"},"dependencies":{},"devDependencies":{},"bin":{"nproj":"./bin/nproj"},"_npmUser":{"name":"aaron","email":"aaron.heckmann+github@gmail.com"},"_id":"nproj@0.0.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"0e46627c285d4ddc01a6fa388671051c48edeba6","tarball":"http://registry.npmjs.org/nproj/-/nproj-0.0.2.tgz"},"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}]},"0.0.3":{"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"name":"nproj","description":"Nodejs module boilerplate generator","version":"0.0.3","dependencies":{},"devDependencies":{},"repository":{"type":"git","url":"http://github.com/aheckmann/nproj.git"},"bin":{"nproj":"./bin/nproj"},"readme":"#nproj\n=======\n\nEmpty node project generator.\n\n## installation\n\n > npm install nproj -g\n\n","_id":"nproj@0.0.3","dist":{"shasum":"eb21008c0848c6b17bdf4991dd4a2170cf9ad51a","tarball":"http://registry.npmjs.org/nproj/-/nproj-0.0.3.tgz"},"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}]}},"readme":null,"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}],"time":{"modified":"2012-08-02T16:04:46.657Z","created":"2012-01-19T15:27:12.252Z","0.0.1":"2012-01-19T15:27:12.909Z","0.0.2":"2012-01-19T15:32:48.015Z","0.0.3":"2012-08-02T16:04:46.657Z"},"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"repository":{"type":"git","url":"http://github.com/aheckmann/nproj.git"},"_id":"nproj","_rev":"1-f9c59a5b349f1cf86b63a2bdfd6c5c8a"}#ÿdocument-storeÿnotifymode-client¤{"id":"notifymode-client","rev":"1-0ddc575047c8c0b21a55f3decbeb1ae4","rev_tree":[{"pos":1,"ids":["0ddc575047c8c0b21a55f3decbeb1ae4",{"status":"available"},[]]}],"rev_map":{"1-0ddc575047c8c0b21a55f3decbeb1ae4":3724},"winningRev":"1-0ddc575047c8c0b21a55f3decbeb1ae4","deleted":false,"seq":3724}ÿby-sequenceÿ0000000000003724¶7{"name":"notifymode-client","description":"Measures the performance of node.js apps. client portion","dist-tags":{"latest":"0.7.0"},"versions":{"0.6.1":{"name":"notifymode-client","version":"0.6.1","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":">=0.2.0","optimist":">=0.3.1","prompt":">=0.1.12","winston":">=0.5.10","colors":">=0.6.0"},"devDependencies":{"expresso":">=0.9.0","redis":">=0.7.1","hiredis":">=0.1.13","express":">=2.5.8"},"engines":{"node":">=0.6","npm":"1"},"_npmUser":{"name":"liangzan","email":"zan@liangzan.net"},"_id":"notifymode-client@0.6.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"dd40ea947ed3e5d075a19abed561aaaa678bc0f9","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.6.1.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]},"0.6.2":{"name":"notifymode-client","version":"0.6.2","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":">=0.2.0","optimist":">=0.3.1","prompt":">=0.1.12","winston":">=0.5.10","colors":">=0.6.0"},"devDependencies":{"expresso":">=0.9.0","redis":">=0.7.1","hiredis":">=0.1.13","express":">=2.5.8"},"engines":{"node":">=0.6","npm":"1"},"_npmUser":{"name":"liangzan","email":"zan@liangzan.net"},"_id":"notifymode-client@0.6.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"942b32c296aea206090e8dbf6c935e126ae8aa44","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.6.2.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]},"0.6.3":{"name":"notifymode-client","version":"0.6.3","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":"~0.2.0","optimist":"~0.3.1","prompt":"~0.1.12","winston":"~0.5.10","colors":"~0.6.0"},"devDependencies":{"expresso":"~0.9.0","redis":"~0.7.1","hiredis":"~0.1.13","express":"~2.5.8"},"engines":{"node":"~0.6","npm":"1"},"_npmUser":{"name":"liangzan","email":"zan@liangzan.net"},"_id":"notifymode-client@0.6.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"eb74e6643e0a8622d3a008b5b412c2af5811d704","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.6.3.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]},"0.6.4":{"name":"notifymode-client","version":"0.6.4","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":"~0.2.0","optimist":"~0.3.1","prompt":"~0.1.12","winston":"~0.5.10","colors":"~0.6.0"},"devDependencies":{"expresso":"~0.9.0","redis":"~0.7.1","hiredis":"~0.1.13","express":"~2.5.8"},"engines":{"node":"~0.6","npm":"1"},"_npmUser":{"name":"liangzan","email":"zan@liangzan.net"},"_id":"notifymode-client@0.6.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5e7620dd252bc621f9298d1c5d53b5ac9f684fae","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.6.4.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]},"0.6.5":{"name":"notifymode-client","version":"0.6.5","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":"~0.2.0","optimist":"~0.3.1","prompt":"~0.1.12","winston":"~0.5.10","colors":"~0.6.0"},"devDependencies":{"expresso":"~0.9.0","redis":"~0.7.1","hiredis":"~0.1.13","express":"~2.5.8"},"engines":{"node":"~0.6","npm":"1"},"_npmUser":{"name":"liangzan","email":"zan@liangzan.net"},"_id":"notifymode-client@0.6.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"e33f58b1f9180dc7c06ce3df37225a46bb12bc70","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.6.5.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]},"0.7.0":{"name":"notifymode-client","version":"0.7.0","description":"Measures the performance of node.js apps. client portion","keywords":["notifymode","notifymode-client","profiler"],"homepage":"http://notifymode.com","bin":{"notifymode":"./bin/notifymode"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"directories":{"lib":"./lib"},"main":"./lib/profiler.js","dependencies":{"microtime":"~0.3.1","optimist":"~0.3.4","prompt":"~0.1.12","winston":"~0.5.11","colors":"~0.6.0-1"},"devDependencies":{"expresso":"~0.9.2","redis":"~0.7.2","hiredis":"~0.1.14","express":"~3.0.0beta4","mocha":"~1.2.1","should":"~0.6.3","pg":"~0.7.1"},"engines":{"node":">=0.6","npm":"1"},"_id":"notifymode-client@0.7.0","dist":{"shasum":"e681bf8f3ca0a34b83902b17d837e2c4ead84c88","tarball":"http://registry.npmjs.org/notifymode-client/-/notifymode-client-0.7.0.tgz"},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}]}},"readme":"","maintainers":[{"name":"liangzan","email":"zan@liangzan.net"}],"time":{"modified":"2012-07-17T07:13:32.428Z","created":"2012-04-08T01:13:15.072Z","0.6.1":"2012-04-08T01:13:19.528Z","0.6.2":"2012-04-08T13:39:00.444Z","0.6.3":"2012-04-08T14:27:27.929Z","0.6.4":"2012-04-09T22:02:15.629Z","0.6.5":"2012-04-15T00:24:25.354Z","0.7.0":"2012-07-17T07:13:32.428Z"},"author":{"name":"Wong Liang Zan","email":"zan@liangzan.net","url":"http://liangzan.net"},"_id":"notifymode-client","_rev":"1-0ddc575047c8c0b21a55f3decbeb1ae4"}ÿdocument-storeÿnodext-create {"id":"nodext-create","rev":"1-7bdc9a5a7f6e4d056842692eeb58a191","rev_tree":[{"pos":1,"ids":["7bdc9a5a7f6e4d056842692eeb58a191",{"status":"available"},[]]}],"rev_map":{"1-7bdc9a5a7f6e4d056842692eeb58a191":3723},"winningRev":"1-7bdc9a5a7f6e4d056842692eeb58a191","deleted":false,"seq":3723}ÿby-sequenceÿ0000000000003723ŸJ{"name":"nodext-create","description":"Create CMS UI extension for nodext","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.1","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"672c818f411d4c1afd2a27c8448192fea25b3bab","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.1.tgz"},"readme":"","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.2":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.2","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"dfc68023fb37b5a97db671bc20c2c6180f32a994","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.2.tgz"},"readme":"nodext-create - Create integration for NodeXT\n=============================================\n\nThis package provides a [NodeXT](https://github.com/bergie/nodext#readme) extension for including the [Create](http://createjs.org/) CMS UI into Node.js web applications.\n\n## Installation\n\n $ npm install nodext-create\n\n## Usage\n\nAdd this extension to your NodeXT application configuration:\n\n \"/create/\": {\n \"name\": \"create\",\n \"location\": \"./node_modules/nodext-create\",\n \"configuration\": {}\n }\n\n...and then include the Create JavaScript files in your template. For example:\n\n \n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.3":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.3","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"020f1aca5464c2032c3256e8cf4043d0d56632e4","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.3.tgz"},"readme":"nodext-create - Create integration for NodeXT\n=============================================\n\nThis package provides a [NodeXT](https://github.com/bergie/nodext#readme) extension for including the [Create](http://createjs.org/) CMS UI into Node.js web applications.\n\n## Installation\n\n $ npm install nodext-create\n\n## Usage\n\nAdd this extension to your NodeXT application configuration:\n\n \"/create/\": {\n \"name\": \"create\",\n \"location\": \"./node_modules/nodext-create\",\n \"configuration\": {}\n }\n\n...and then include the Create JavaScript files in your template. For example:\n\n \n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.4":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.4","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"cb2db0b5144c0711e30a9df76bc005a705a20f29","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.4.tgz"},"readme":"nodext-create - Create integration for NodeXT\n=============================================\n\nThis package provides a [NodeXT](https://github.com/bergie/nodext#readme) extension for including the [Create](http://createjs.org/) CMS UI into Node.js web applications.\n\n## Installation\n\n $ npm install nodext-create\n\n## Usage\n\nAdd this extension to your NodeXT application configuration:\n\n \"/create/\": {\n \"name\": \"create\",\n \"location\": \"./node_modules/nodext-create\",\n \"configuration\": {}\n }\n\n...and then include the Create JavaScript files in your template. For example:\n\n \n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.5":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.5","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"276b320ac1c208831ec5dd924a7e122ec7ea5071","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.5.tgz"},"readme":"nodext-create - Create integration for NodeXT\n=============================================\n\nThis package provides a [NodeXT](https://github.com/bergie/nodext#readme) extension for including the [Create](http://createjs.org/) CMS UI into Node.js web applications.\n\n## Installation\n\n $ npm install nodext-create\n\n## Usage\n\nAdd this extension to your NodeXT application configuration:\n\n \"/create/\": {\n \"name\": \"create\",\n \"location\": \"./node_modules/nodext-create\",\n \"configuration\": {}\n }\n\n...and then include the Create JavaScript files in your template. For example:\n\n \n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.6":{"name":"nodext-create","description":"Create CMS UI extension for nodext","keywords":["nodext","extension","create","createjs","cms"],"author":{"name":"Henri Bergius"},"version":"0.0.6","licenses":[{"type":"MIT","url":"https://github.com/bergie/create/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"nodext":">=0.0.2"},"main":"./index","repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext-create@0.0.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"e01a1e55d13f2c996a921a84d4411b4043ed6a43","tarball":"http://registry.npmjs.org/nodext-create/-/nodext-create-0.0.6.tgz"},"readme":"nodext-create - Create integration for NodeXT\n=============================================\n\nThis package provides a [NodeXT](https://github.com/bergie/nodext#readme) extension for including the [Create](http://createjs.org/) CMS UI into Node.js web applications.\n\n## Installation\n\n $ npm install nodext-create\n\n## Usage\n\nAdd this extension to your NodeXT application configuration:\n\n \"/create/\": {\n \"name\": \"create\",\n \"location\": \"./node_modules/nodext-create\",\n \"configuration\": {}\n }\n\n...and then include the Create JavaScript files in your template. For example:\n\n \n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]}},"readme":"","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}],"time":{"modified":"2012-06-19T17:05:18.169Z","created":"2012-03-13T16:08:09.850Z","0.0.1":"2012-03-13T16:08:11.790Z","0.0.2":"2012-03-13T17:11:09.496Z","0.0.3":"2012-03-13T17:33:45.376Z","0.0.4":"2012-03-13T19:02:25.620Z","0.0.5":"2012-03-30T11:37:41.901Z","0.0.6":"2012-06-19T17:05:18.169Z"},"author":{"name":"Henri Bergius"},"repository":{"type":"git","url":"git://github.com/bergie/nodext-create.git"},"_id":"nodext-create","_rev":"1-7bdc9a5a7f6e4d056842692eeb58a191"}ÿdocument-storeÿnode.jshit{"id":"node.jshit","rev":"1-a2725ccebad44bb8d5d08f6e55ed1099","rev_tree":[{"pos":1,"ids":["a2725ccebad44bb8d5d08f6e55ed1099",{"status":"available"},[]]}],"rev_map":{"1-a2725ccebad44bb8d5d08f6e55ed1099":3722},"winningRev":"1-a2725ccebad44bb8d5d08f6e55ed1099","deleted":false,"seq":3722}ÿby-sequenceÿ0000000000003722{"name":"node.jshit","description":"jshint ext","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"node.jshit","version":"0.0.1","author":{"name":"xunuo","email":"i@xunuo.com","url":"http://www.xunuo.com"},"contributors":[{"name":"dnq","email":"none@none"},{"name":"zzy","email":"none@none"},{"name":"zxx","email":"none@none"}],"keywords":["jshint","js check tool","jslint","jshit"],"description":"jshint ext","homepage":"http://www.xunuo.com","repository":{"type":"git","url":"git://github.com/xunuo/node.jshit.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"xunuo","email":"i@xunuo.com"},"_id":"node.jshit@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c82582625b2dd35a31dbfbe812faa9750093725b","tarball":"http://registry.npmjs.org/node.jshit/-/node.jshit-0.0.1.tgz"},"maintainers":[{"name":"xunuo","email":"i@xunuo.com"}]},"0.0.2":{"name":"node.jshit","version":"0.0.2","author":{"name":"xunuo","email":"i@xunuo.com","url":"http://www.xunuo.com"},"contributors":[{"name":"dnq","email":"none@none"},{"name":"zzy","email":"none@none"},{"name":"zxx","email":"none@none"}],"keywords":["jshint","js check tool","jslint","jshit"],"description":"jshint ext","homepage":"http://www.xunuo.com","repository":{"type":"git","url":"git://github.com/xunuo/node.jshit.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"xunuo","email":"i@xunuo.com"},"_id":"node.jshit@0.0.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"e0c5e6e35e31c7f04642e2d6f9e6c1e0506db8e1","tarball":"http://registry.npmjs.org/node.jshit/-/node.jshit-0.0.2.tgz"},"maintainers":[{"name":"xunuo","email":"i@xunuo.com"}]}},"readme":"jshit\r\n=====\r\n\r\n改造过的jshint","maintainers":[{"name":"xunuo","email":"i@xunuo.com"}],"time":{"modified":"2012-06-19T17:18:22.688Z","created":"2012-06-19T12:05:00.783Z","0.0.1":"2012-06-19T12:05:05.501Z","0.0.2":"2012-06-19T17:18:22.688Z"},"author":{"name":"xunuo","email":"i@xunuo.com","url":"http://www.xunuo.com"},"repository":{"type":"git","url":"git://github.com/xunuo/node.jshit.git"},"_id":"node.jshit","_rev":"1-a2725ccebad44bb8d5d08f6e55ed1099"}ÿdocument-storeÿnode-jsmeterŸ{"id":"node-jsmeter","rev":"1-5a7c49837b2e3dba12373578b796e712","rev_tree":[{"pos":1,"ids":["5a7c49837b2e3dba12373578b796e712",{"status":"available"},[]]}],"rev_map":{"1-5a7c49837b2e3dba12373578b796e712":3721},"winningRev":"1-5a7c49837b2e3dba12373578b796e712","deleted":false,"seq":3721}ÿby-sequenceÿ00000000000038Q7wù721’{"name":"node-jsmeter","description":"Fork of jsmeter by Noah Peters","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"node-jsmeter","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"description":"Fork of jsmeter by Noah Peters","version":"0.1.0","repository":{"type":"git","url":"git://github.com/nearinfinity/node-jsmeter.git"},"main":"./lib/index.js","bin":{"jsmeter":"./bin/jsmeter.js"},"dependencies":{"optimist":"~0.3.4","glob":"~3.1.9","async":"~0.1.18","mkdirp":"~0.3.2"},"_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"node-jsmeter@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"18ebe8602652dfc593cf15bcbbbe22e441b2af20","tarball":"http://registry.npmjs.org/node-jsmeter/-/node-jsmeter-0.1.0.tgz"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]},"0.1.1":{"name":"node-jsmeter","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"description":"Fork of jsmeter by Noah Peters","version":"0.1.1","repository":{"type":"git","url":"git://github.com/joeferner/node-jsmeter.git"},"main":"./lib/index.js","bin":{"jsmeter":"./bin/jsmeter.js"},"dependencies":{"optimist":"~0.3.4","glob":"~3.1.9","async":"~0.1.18","mkdirp":"~0.3.2"},"_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"_id":"node-jsmeter@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"aec2ab99d92c91b5adcff2f8f7334b03fb87d540","tarball":"http://registry.npmjs.org/node-jsmeter/-/node-jsmeter-0.1.1.tgz"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]},"0.1.2":{"name":"node-jsmeter","author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"description":"Fork of jsmeter by Noah Peters","version":"0.1.2","repository":{"type":"git","url":"git://github.com/nearinfinity/node-jsmeter.git"},"main":"./lib/index.js","bin":{"jsmeter":"./bin/jsmeter.js"},"dependencies":{"optimist":"~0.3.4","glob":"~3.1.9","async":"~0.1.18","mkdirp":"~0.3.2"},"readme":"# node-jsmeter\n\nFork of jsmeter by Noah Peters.\n\n# install\n\n```\nnpm install node-jsmeter -g\n```\n\n# help\n\n```\njsmeter --help\n```\n\n# example\n\nThe will run jsmeter on all files in the ./lib directory and place the results in a ./jsmeter directory.\n\n```\njsmeter ./lib\n```\n","_id":"node-jsmeter@0.1.2","dist":{"shasum":"8b36b0543be140b8fec44cfb5365b377fd65dd68","tarball":"http://registry.npmjs.org/node-jsmeter/-/node-jsmeter-0.1.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"joeferner","email":"joe@fernsroth.com"},"maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}]}},"readme":"# node-jsmeter\n\nFork of jsmeter by Noah Peters.\n\n# install\n\n```\nnpm install node-jsmeter -g\n```\n\n# help\n\n```\njsmeter --help\n```\n\n# example\n\nThe will run jsmeter on all files in the ./lib directory and place the results in a ./jsmeter directory.\n\n```\njsmeter ./lib\n```\n","maintainers":[{"name":"joeferner","email":"joe@fernsroth.com"}],"time":{"modified":"2012-08-23T13:57:25.462Z","created":"2012-05-22T20:00:00.597Z","0.1.0":"2012-05-22T20:00:01.447Z","0.1.1":"2012-06-22T17:50:43.256Z","0.1.2":"2012-08-23T13:57:25.462Z"},"author":{"name":"Joe Ferner","email":"joe.ferner@nearinfinity.com"},"repository":{"type":"git","url":"git://github.com/nearinfinity/node-jsmeter.git"},"_id":"node-jsmeter","_rev":"1-5a7c49837b2e3dba12373578b796e712"}ÿdocument-storeÿnixchannel{"id":"nixchannel","rev":"1-6114d461564fcd27e32589c3d1227462","rev_tree":[{"pos":1,"ids":["6114d461564fcd27e32589c3d1227462",{"status":"available"},[]]}],"rev_map":{"1-6114d461564fcd27e32589c3d1227462":3720},"winningRev":"1-6114d461564fcd27e32589c3d1227462","deleted":false,"seq":3720}ÿby-sequenceÿ0000000000003720ú{"name":"nixchannel","description":"Simple standalone nix (www.nixos.org) channel server","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"nixchannel","version":"0.1.0","description":"Simple standalone nix (www.nixos.org) channel server","author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"dependencies":{"coffee-script":"1.3.3","connect":"2.4.2","underscore":"1.3.3"},"bin":{"node-nixchannel":"bin/node-nixchannel"},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","_id":"nixchannel@0.1.0","dist":{"shasum":"25ad08ecb7e6e75d82c6958c8c8de912e33af3d8","tarball":"http://registry.npmjs.org/nixchannel/-/nixchannel-0.1.0.tgz"},"maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}]},"0.1.1":{"name":"nixchannel","version":"0.1.1","description":"Simple standalone nix (www.nixos.org) channel server","author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"dependencies":{"coffee-script":"1.3.3","connect":"2.4.2","underscore":"1.3.3"},"bin":{"node-nixchannel":"bin/node-nixchannel"},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","_id":"nixchannel@0.1.1","dist":{"shasum":"ea12a18e65db015f74253b0fc69bdaa7a7758326","tarball":"http://registry.npmjs.org/nixchannel/-/nixchannel-0.1.1.tgz"},"maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}]},"0.1.2":{"name":"nixchannel","version":"0.1.2","description":"Simple standalone nix (www.nixos.org) channel server","author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"dependencies":{"coffee-script":"1.3.3","connect":"2.4.2","underscore":"1.3.3"},"bin":{"node-nixchannel":"bin/node-nixchannel"},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","_id":"nixchannel@0.1.2","dist":{"shasum":"c1e4a73b782e1b59859a25fac9e643da0124cb20","tarball":"http://registry.npmjs.org/nixchannel/-/nixchannel-0.1.2.tgz"},"maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}]},"0.1.3":{"name":"nixchannel","version":"0.1.3","description":"Simple standalone nix (www.nixos.org) channel server","author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"dependencies":{"coffee-script":"1.3.3","connect":"2.4.2","underscore":"1.3.3"},"bin":{"node-nixchannel":"bin/node-nixchannel"},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","_id":"nixchannel@0.1.3","dist":{"shasum":"6e174c2615ebabd423579340847420fe30cadefc","tarball":"http://registry.npmjs.org/nixchannel/-/nixchannel-0.1.3.tgz"},"maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}]},"0.1.4":{"name":"nixchannel","version":"0.1.4","description":"Simple standalone nix (www.nixos.org) channel server","author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"dependencies":{"coffee-script":"1.3.3","connect":"2.4.2","underscore":"1.3.3"},"bin":{"node-nixchannel":"bin/node-nixchannel"},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","_id":"nixchannel@0.1.4","dist":{"shasum":"47563636d4f1d8da84d3c7fe81fb296549456584","tarball":"http://registry.npmjs.org/nixchannel/-/nixchannel-0.1.4.tgz"},"maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}]}},"readme":"node-nixchannel\n===============\n\nSimple standalone nix (www.nixos.org) channel server","maintainers":[{"name":"bluescreen303","email":"mathijs@bluescreen303.nl"}],"time":{"modified":"2012-08-19T16:03:52.096Z","created":"2012-07-29T12:18:17.285Z","0.1.0":"2012-07-29T12:18:19.757Z","0.1.1":"2012-07-31T12:35:29.895Z","0.1.2":"2012-07-31T14:13:56.216Z","0.1.3":"2012-08-19T15:18:40.387Z","0.1.4":"2012-08-19T16:03:52.096Z"},"author":{"name":"Mathijs Kwik","email":"mathijs@bluescreen303.nl"},"users":{"fgribreau":true},"_id":"nixchannel","_rev":"1-6114d461564fcd27e32589c3d1227462"}ÿdocument-storeÿnil–{"id":"nil","rev":"1-4fb6a259def9ac9e46c76ea3fa3a0ea6","rev_tree":[{"pos":1,"ids":["4fb6a259def9ac9e46c76ea3fa3a0ea6",{"status":"available"},[]]}],"rev_map":{"1-4fb6a259def9ac9e46c76ea3fa3a0ea6":3719},"winningRev":"1-4fb6a259def9ac9e46c76ea3fa3a0ea6","deleted":false,"seq":3719}ÿby-sequenceÿ0000000000003719¹ø{"name":"nil","description":"A falsey object that returns itself for all properties and when invoked.","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"nil","version":"0.0.1","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./nil.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.1","dist":{"shasum":"d1115e610f2f448459e6c8993e525263b827ac0f","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"directories":{}},"0.0.2":{"name":"nil","version":"0.0.2","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./nil.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.2","dist":{"shasum":"3237c435761e1b94a4b5286eaad5adf11a8917a0","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"directories":{}},"0.0.3":{"name":"nil","version":"0.0.3","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./nil.js","update":"node ./nil.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.3","dist":{"shasum":"8cd7634c993c2d9dd1f572c02994fc123b6bf05e","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.3.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"directories":{}},"0.0.4":{"name":"nil","version":"0.0.4","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./binding.js","update":"node ./binding.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.4","dist":{"shasum":"1436f72df597303816b07021dfa1536dc8424d62","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.4.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"directories":{}},"0.0.5":{"name":"nil","version":"0.0.5","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./binding.js","update":"node ./binding.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.5","dist":{"shasum":"dedeecf640052a670c41835de7ee7e3c0b78d2ed","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.5.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"directories":{}},"0.0.6":{"name":"nil","version":"0.0.6","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./binding.js","update":"node ./binding.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil').nil;\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## nilWrap and recursiveNilWrap\nIf run node with the additional flag `--harmony` (as in `node --harmony yourmodule`) two additional features are exported. The purpose of both of these is to create or wrap existing objects and cause them to return __nil__ any place they would usually return `undefined`. The difference between the two is that `nilWrap` only wraps the given object, while `recursiveNilWrap` will wrap all non-primitive values it returns. The latter essentially allows changing the mechanics of JS at large, when accessing things through the portal of nil.\n\n```javascript\n// the basic version is useful for wrapping prototypes and creating nil-returning classes\nvar nilWrap = require('nil').nilWrap;\n\nfunction NilObject(){}\nNilObject.prototype = nilWrap(NilObject.prototype);\n\nvar test = new NilObject;\ntest.whatever = 'some value';\nconsole.log(test.whatever); // 'some value'\nconsole.log(test.x.y.a.z.y.s.g.s); // 'undefined' (nil)\n```\n\n```javascript\nvar recursiveNilWrap = require('nil').recursiveNilWrap;\nvar _global = recursiveNilWrap(global);\nconsole.log(_global.now.everything.returns.nil.instead.of.undefined); // 'undefined' (nil)\nconsole.log(_global.Object.prototype.doesnt.have.cheese.pizzas); // 'undefined' (nil)\nconsole.log(_global.Object.prototype); // {}\n```\n\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.6","dist":{"shasum":"5c8cac1c5d9142af9aaa7d8c396f420a431ae4cf","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.6.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.7":{"name":"nil","version":"0.0.7","author":{"name":"Brandon Benvie"},"description":"A falsey object that returns itself for all properties and when invoked.","main":"nil.js","repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"scripts":{"install":"node ./binding.js","update":"node ./binding.js"},"keywords":["nil"],"dependencies":{},"license":"MIT","gypfile":true,"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## installation\nInstallation via npm is the best route. Bindings for OS X and Windows are included.\n\n npm install nil\n\nYou can also get those bindings [here on github](https://github.com/downloads/Benvie/nil/prebuilt-0.0.6.zip). That folder needs to be in the root nil directory.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil').nil;\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to L,èùstring\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n## nilWrap and recursiveNilWrap\nIf run node with the additional flag `--harmony` (as in `node --harmony yourmodule`) two additional features are exported. The purpose of both of these is to create or wrap existing objects and cause them to return __nil__ any place they would usually return `undefined`. The difference between the two is that `nilWrap` only wraps the given object, while `recursiveNilWrap` will wrap all non-primitive values it returns. The latter essentially allows changing the mechanics of JS at large, when accessing things through the portal of nil.\n\n```javascript\n// the basic version is useful for wrapping prototypes and creating nil-returning classes\nvar nilWrap = require('nil').nilWrap;\n\nfunction NilObject(){}\nNilObject.prototype = nilWrap(NilObject.prototype);\n\nvar test = new NilObject;\ntest.whatever = 'some value';\nconsole.log(test.whatever); // 'some value'\nconsole.log(test.x.y.a.z.y.s.g.s); // 'undefined' (nil)\n```\n\n```javascript\nvar recursiveNilWrap = require('nil').recursiveNilWrap;\nvar _global = recursiveNilWrap(global);\nconsole.log(_global.now.everything.returns.nil.instead.of.undefined); // 'undefined' (nil)\nconsole.log(_global.Object.prototype.doesnt.have.cheese.pizzas); // 'undefined' (nil)\nconsole.log(_global.Object.prototype); // {}\n```\n\n\n## notes\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","_id":"nil@0.0.7","dist":{"shasum":"6a0dd21c3d48e744753ae7ca8825074487fd17ec","tarball":"http://registry.npmjs.org/nil/-/nil-0.0.7.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]}},"readme":"# nil\n__nil__ is nothing. falsey. nada. zero. zip. It's a nothing thing that will eat everything you throw at it and return itself.\n\n## it does.. what?\nIt does a lot of nothing\n\n```javascript\nvar nil = require('nil');\n!nil // is falsey in boolean comparisons\nnil == null // in null/undefined equality class\ntypeof nil == 'undefined' // type is undefined\nnil !== undefined // isn't undefined though\nnil === nil.always.returns.nil // all properties return nil\nnil === nil() // returns nil when called\n(nil+'') == '' // returns empty string when coerced to string\nObject.prototype.toString.call(nil) // '[object Nil]'\nObject.keys(nil).length == 0 // returns empty array when enumerated\nObject.getPrototypeOf(nil) // null\n```\n\n## notes\n\n### toString\nIn order to support coercion to empty string (instead of 'undefined') nil.toString does return a function.\n\n```javascript\nvar nilToString = nil.toString;\n!nilToString === true // is NOT falsey\ntypeof nilToString == 'function' // is type function\nnilToString() == '' // returns empty string\nObject.getPrototypeOf(nilToString) === nil // inherits from nil\nnilToString === nilToString.call // call property returns self\nnilToString === nilToString.apply // apply property returns self\nnilToString === nilToString.bind // bind property returns self\nnilToString === nilToString.toString // toString property returns self\nnilToString.any.other.property === nil // because it inherits from nil\nObject.keys(nilToString).length == 0 // no enumerable keys\nObject.getOwnPropertyNames(nilToString) == 3 // ['call', 'apply', 'bind']\n```\n\n### ToNumber\nBecause nil is `typeof === 'undefined'` coercion to number is unfortunately `NaN`. ES5 spec does not defer to `valueOf` to coerce `undefined` to a number. V8 appears to follow the spec so it seems impossible to influence the outcome of this coercion. Therefore `nil` isn't useful in math operations. The following is useful for this problem (with or without nil);\n\n```javascript\nfunction toFinite(n){\n return isFinite(n *= 1) ? n : 0;\n}\n```\n\n### isObject\nCommon `isObject` functions will fail check for __nil__. This is probably desirable usually, but if not (like in the case of document.all), an alternative can work.\n\n```javascript\nfunction isObject1(o){\n return Object(o) === o;\n}\n\nfunction isObject2(o){\n return o != null && typeof o === 'object' || typeof o === 'function';\n}\n\nfunction isObject3(o){\n return o == null ? o !== null && o !== undefined : typeof o === 'object' || typeof o === 'function';\n}\n\nisObject1(nil) // false\nisObject2(nil) // false\nisObject3(nil) // true\n```\n","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"time":{"modified":"2012-08-18T20:56:49.055Z","created":"2012-08-18T16:37:40.831Z","0.0.1":"2012-08-18T16:37:41.675Z","0.0.2":"2012-08-18T17:18:29.712Z","0.0.3":"2012-08-18T18:36:36.125Z","0.0.4":"2012-08-18T19:56:32.299Z","0.0.5":"2012-08-18T19:57:25.679Z","0.0.6":"2012-08-18T20:13:35.056Z","0.0.7":"2012-08-18T20:56:49.055Z"},"author":{"name":"Brandon Benvie"},"repository":{"type":"git","url":"https://github.com/Benvie/nil.git"},"_id":"nil","_rev":"1-4fb6a259def9ac9e46c76ea3fa3a0ea6"}ÿdocument-storeÿnewrepoš{"id":"newrepo","rev":"1-60a19cd183fc1a20fa4724e3f1db1948","rev_tree":[{"pos":1,"ids":["60a19cd183fc1a20fa4724e3f1db1948",{"status":"available"},[]]}],"rev_map":{"1-60a19cd183fc1a20fa4724e3f1db1948":3718},"winningRev":"1-60a19cd183fc1a20fa4724e3f1db1948","deleted":false,"seq":3718}ÿby-sequenceÿ0000000000003718†'{"name":"newrepo","description":"A handy module to make a new repo directory with common files.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"newrepo","description":"A handy module to make a new repo directory with common files.","version":"0.0.1","author":{"name":"Neekey","email":"ni184775761@gmail.com"},"keywords":["newrepo"],"main":"DirWatcher.js","bin":{"newrepo":"./bin/newrepo"},"repository":{"type":"git","url":"git@github.com:neekey/newrepo.git"},"dependencies":{"commander":"*","mkdirp":"*","debug":"*","mustache":"*","dirreader":"*"},"_npmUser":{"name":"neekey","email":"ni184775761@gmail.com"},"_id":"newrepo@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"541f4bb0ae49eed6dec2214e0151052f9946c23b","tarball":"http://registry.npmjs.org/newrepo/-/newrepo-0.0.1.tgz"},"maintainers":[{"name":"neekey","email":"ni184775761@gmail.com"}]},"0.0.2":{"name":"newrepo","description":"A handy module to make a new repo directory with common files.","version":"0.0.2","author":{"name":"Neekey","email":"ni184775761@gmail.com"},"keywords":["newrepo"],"main":"DirWatcher.js","bin":{"newrepo":"./bin/newrepo"},"repository":{"type":"git","url":"git@github.com:neekey/newrepo.git"},"dependencies":{"commander":"*","mkdirp":"*","debug":"*","mustache":"*","dirreader":"*"},"readme":"newrepo\n=======\n\nA handy command-tool to make a new repo directory with common things you need.\n\n## Install\n```\nnpm install newrepo -g\n```\n\n## Usage\n\n`cd` to the directory you want to make a new repo, and use command: `newrepo`.\n\nThen some questions will be asked to config your repo.\n\nThat's all!\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Neekey ni184775761@gmail.com;\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","_id":"newrepo@0.0.2","dist":{"shasum":"97433d86b9c44c92ca165b00c888f387ffd69e6d","tarball":"http://registry.npmjs.org/newrepo/-/newrepo-0.0.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"neekey","email":"ni184775761@gmail.com"},"maintainers":[{"name":"neekey","email":"ni184775761@gmail.com"}]}},"readme":"newrepo\n=======\n\nA handy command-tool to make a new repo directory with common things you need.\n\n## Install\n```\nnpm install newrepo -g\n```\n\n## Usage\n\n`cd` to the directory you want to make a new repo, and use command: `newrepo`.\n\nThen some questions will be asked to config your repo.\n\nThat's all!\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Neekey ni184775761@gmail.com;\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"neekey","email":"ni184775761@gmail.com"}],"time":{"modified":"2012-08-23T09:11:37.224Z","created":"2012-08-09T04:20:56.764Z","0.0.1":"2012-08-09T04:21:00.190Z","0.0.2":"2012-08-23T09:11:37.224Z"},"author":{"name":"Neekey","email":"ni184775761@gmail.com"},"repository":{"type":"git","url":"git@github.com:neekey/newrepo.git"},"_id":"newrepo","_rev":"1-60a19cd183fc1a20fa4724e3f1db1948"}ÿdocument-storeÿname—{"id":"name","rev":"1-d6a4ff596a3212bc55e9a79ede3a8e6d","rev_tree":[{"pos":1,"ids":["d6a4ff596a3212bc55e9a79ede3a8e6d",{"status":"available"},[]]}],"rev_map":{"1-d6a4ff596a3212bc55e9a79ede3a8e6d":3717},"winningRev":"1-d6a4ff596a3212bc55e9a79ede3a8e6d","deleted":false,"seq":3717}ÿby-sequenceÿ0000000000003717Ý"{"name":"name","description":"ES.next private name objects shim","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"name","id":"name","version":"0.0.1","description":"ES.next private name objects shim","keywords":["private","name","ES6","harmony","shim","polyfill"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"homepage":"https://github.com/Gozala/name","main":"./core.js","repository":{"type":"git","url":"git://github.com/Gozala/name.git","web":"https://github.com/Gozala/name"},"bugs":{"url":"http://github.com/Gozala/name/issues/"},"devDependencies":{"test":">=0.4.4","repl-utils":">=1.0.0","swank-js":">=0.0.1"},"scripts":{"test":"node tests/test-all.js","repl":"node node_modules/repl-utils","swank":"node node_modules/swank-js"},"licenses":[{"type":"MIT","url":"https://github.com/Gozala/name/License.md"}],"_npmUser":{"name":"gozala","email":"rfobic@gmail.com"},"_id":"name@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"fbd784f1843bde0efd35e960e4a31f939eac1892","tarball":"http://registry.npmjs.org/name/-/name-0.0.1.tgz"},"maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}]},"0.0.2":{"name":"name","id":"name","version":"0.0.2","description":"ES.next private name objects shim","keywords":["private","name","ES6","harmony","shim","polyfill"],"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"homepage":"https://github.com/Gozala/name","main":"./core.js","repository":{"type":"git","url":"git://github.com/Gozala/name.git","web":"https://github.com/Gozala/name"},"bugs":{"url":"http://github.com/Gozala/name/issues/"},"devDependencies":{"test":">=0.4.4","repl-utils":">=1.0.0","swank-js":">=0.0.1"},"scripts":{"test":"node tests/test-all.js","repl":"node node_modules/repl-utils","swank":"node node_modules/swank-js"},"licenses":[{"type":"MIT","url":"https://github.com/Gozala/name/License.md"}],"_npmUser":{"name":"gozala","email":"rfobic@gmail.com"},"_id":"name@0.0.2","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"4c276cd8d3801b07686fe3b0ca4d6fe0953dd27e","tarball":"http://registry.npmjs.org/name/-/name-0.0.2.tgz"},"maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}]}},"readme":"# name\n\n[![Build Status](https://secure.travis-ci.org/Gozala/name.png)](http://travis-ci.org/Gozala/name)\n\nPolyfill of ES.next [private name objects][]. This implementation patches ES5\n`Object` methods where possible to emulate private names as much as possible.\nStill in some cases private names can be discovered:\n\n - If `Object` methods from other JS contexts are used.\n - If properties are simply set like shown below, private names will be\n revealed by `for` iteration:\n\n ```js\n object[secret] = value\n ```\n\n It is recommended to use `Object.defineProperty` or\n `Object.defineProperties` for defining private named properties. Those\n methods will make sure to mark property as non-enumerable so that such\n propertes won't be reavealed.\n\n\n## Install\n\n npm install name\n\n## Use\n\n\n```js\nvar Name = require('name')\nvar secret = new Name()\nfunction MyClass(privateData) {\n // do not do `this[secret] = privateData` do following instead\n Object.defineProperty(this, secret, {\n value: privateData\n })\n this.name = 'my'\n}\nMyClass.prototype = {\n doStuff: function() {\n /*...*/ this[secret] /*...*/\n }\n}\n\nvar my = new MyClass()\nObject.keys(my) // => [ 'my' ]\nObject.getOwnPropertyNames(my) // => [ 'my' ]\n\nvar names = []\nfor (var name in my) names.push(name)\nnames // => [ 'my' ]\n```\n\n\n[private name objects]:http://wiki.ecmascript.org/doku.php?id=harmony:private_name_objects\n","maintainers":[{"name":"gozala","email":"rfobic@gmail.com"}],"time":{"modified":"2012-07-17T06:06:06.354Z","created":"2012-06-23T00:36:57.690Z","0.0.1":"2012-06-23T00:36:58.814Z","0.0.2":"2012-07-17T06:06:06.354Z"},"author":{"name":"Irakli Gozalishvili","email":"rfobic@gmail.com","url":"http://jeditoolkit.com"},"repository":{"type":"git","url":"git://github.com/Gozala/name.git","web":"https://github.com/Gozala/name"},"_id":"name","_rev":"1-d6a4ff596a3212bc55e9a79ede3a8e6d"}ÿdocument-storeÿmyconsoleœ{"id":"myconsole","rev":"1-3f0e162de1aeed3a3d22931997c95bec","rev_tree":[{"pos":1,"ids":["3f0e162de1aeed3a3d22931997c95bec",{"status":"available"},[]]}],"rev_map":{"1-3f0e162de1aeed3a3d22931997c95bec":3716},"winningRev":"1-3f0e162de1aeed3a3d22931997c95bec","deleted":false,"seq":3716}ÿby-sequenceÿ0000000000003716Î,{"name":"myconsole","description":"replace the console object to prepend the file and line number, time, show in colors","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"myconsole","version":"0.1.0","description":"replace the console object to prepend the file and line number, time, show in colors","main":"./myconsole","dependencies":{"callsite":"*"},"_npmUser":{"name":"guileen","email":"guileen@gmail.com"},"_id":"myconsole@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"53ed1b1f5bbef91b6c1e2bb6f0fb3aa9a57f06e0","tarball":"http://registry.npmjs.org/myconsole/-/myconsole-0.1.0.tgz"},"maintainers":[{"name":"guileen","email":"guileen@gmail.com"}]},"0.1.2":{"name":"myconsole","version":"0.1.2","description":"replace the console object to prepend the file and line number, time, show in colors","main":"./myconsole","dependencies":{"callsite":"*"},"_npmUser":{"name":"guileen","email":"guileen@gmail.com"},"_id":"myconsole@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ad357233c6032cdbcdc0668ed34e12eda7cfe262","tarball":"http://registry.npmjs.org/myconsole/-/myconsole-0.1.2.tgz"},"maintainers":[{"name":"guileen","email":"guileen@gmail.com"}]},"0.1.3":{"name":"myconsole","version":"0.1.3","description":"replace the console object to prepend the file and line number, time, show in colors","main":"./myconsole","dependencies":{"callsite":"*"},"_npmUser":{"name":"guileen","email":"guileen@gmail.com"},"_id":"myconsole@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"77de51d04452234fe231bf49ddab7b2ba8b562bb","tarball":"http://registry.npmjs.org/myconsole/-/myconsole-0.1.3.tgz"},"maintainers":[{"name":"guileen","email":"guileen@gmail.com"}]},"0.1.4":{"name":"myconsole","version":"0.1.4","description":"replace the console object to prepend the file and line number, time, show in colors","main":"./myconsole","dependencies":{"callsite":"*"},"_npmUser":{"name":"guileen","email":"guileen@gmail.com"},"_id":"myconsole@0.1.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"29ebe2119a2d20bb3600c9c03cc237f93273f48a","tarball":"http://registry.npmjs.org/myconsole/-/myconsole-0.1.4.tgz"},"maintainers":[{"name":"guileen","email":"guileen@gmail.com"}]}},"readme":"\n# console-trace\n\nExtends the native Node.JS `console` object to prefix logging functions\nwith the [CallSite](http://github.com/visionmedia/callsite) information.\n\nTo read more about runtime stack trace introspection you can refer to [this\narticle](http://www.devthought.com/2011/12/22/a-string-is-not-an-error/#beyond).\n\n![](http://club.cnodejs.org/user_data/images/4efc278525fa69ac6900003e/4efc278525fa69ac6900003e1333196595688.png)\n\n## How to use\n\n```js\nvar myconsole = require('myconsole');\nmyconsole.log('my information');\nmyconsole.info('my information');\nmyconsole.warn('my information');\nmyconsole.error('my information');\n```\n\n* traceError\n\nSometimes the err is not a `Error` instance but an object, `console.log(err.stack)` will fail, maybe you want \ninspect this object.\n\n```js\nmyconsole.traceError(new Error('error object'));\nmyconsole.traceError({msg: 'error message'});\n```\n\n* ifError\n\nSometimes, callback function could be very simple, just an dummy function or log function.\n\n```js\nUser.save(user, myconsole.ifError);\n```\n\nYou can replace origin console\n\n```js\nrequire('myconsole').replace();\nconsole.log('replaced with myconsole');\n```\n\nand restore to origin console\n\n```JS\nrequire('myconsole').replace();\nconsole.log('replaced with myconsole');\nconsole.restore();\nconsole.log('restore to origin');\nconsole.replace();\nconsole.log('replaced with myconsole again');\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 Guillermo Rauch <guillermo@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"guileen","email":"guileen@gmail.com"}],"time":{"modified":"2012-08-02T13:43:25.380Z","created":"2012-03-31T12:47:03.416Z","0.1.0":"2012-03-31T12:47:09.513Z","0.1.2":"2012-04-05T10:19:33.087Z","0.1.3":"2012-05-14T15:34:33.061Z","0.1.4":"2012-08-02T10:32:21.680Z"},"users":{"fgribreau":true},"_id":"myconsole","_rev":"1-3f0e162de1aeed3a3d22931997c95bec"}ÿdocument-storeÿmongorestœ{"id":"mongorest","rev":"1-fc52521dce6dbb075433fbc72eef6ea6","rev_tree":[{"pos":1,"ids":["fc52521dce6dbb075433fbc72eef6ea6",{"status":"available"},[]]}],"rev_map":{"1-fc52521dce6dbb075433fbc72eef6ea6":3715},"winningRev":"1-fc52521dce6dbb075433fbc72eef6ea6","deleted":false,"seq":3715}ÿby-sequenceÿ0000000000003715þ{"name":"mongorest","description":"mongorest is Connect/Express middleware that lets you easily provide a REST API for your MongoDB data.","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.0":{"author":{"name":"Matt Bell","email":"mappum@gmail.com","url":"mappum"},"name":"mongorest","description":"mongorest is Connect/Express middleware that lets you easily provide a REST API for your MongoDB data.","version":"0.0.0","main":"index.js","dependencies":{"mongoose":"*","mongodb":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"mappum","email":"mappum@gmail.com"},"_id":"mongorest@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"f6625437fe5225f2c9960e95305d1a58d5f97bae","tarball":"http://registry.npmjs.org/mongorest/-/mongorest-0.0.0.tgz"},"readme":"","maintainers":[{"name":"mappum","email":"mappum@gmail.com"}]},"0.1.0":{"author":{"name":"Matt Bell","email":"mappum@gmail.com","url":"mappum"},"name":"mongorest","description":"mongorest is Connect/Express middleware that lets you easily provide a REST API for your MongoDB data.","version":"0.1.0","main":"index.js","dependencies":{"mongoose":"*","mongodb":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"mappum","email":"mappum@gmail.com"},"_id":"mongorest@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ad83e89fe34704336f72925ebf34356d6f4d0721","tarball":"http://registry.npmjs.org/mongorest/-/mongorest-0.1.0.tgz"},"readme":"","maintainers":[{"name":"mappum","email":"mappum@gmail.com"}]}},"readme":"","maintainers":[{"name":"mappum","email":"mappum@gmail.com"}],"time":{"modified":"2012-05-18T05:16:18.961Z","created":"2012-05-18T02:36:10.939Z","0.0.0":"2012-05-18T02:36:11.693Z","0.1.0":"2012-05-18T05:16:18.961Z"},"author":{"name":"Matt Bell","email":"mappum@gmail.com","url":"mappum"},"_id":"mongorest","_rev":"1-fc52521dce6dbb075433fbc72eef6ea6"}"ÿdocument-storeÿmongoose-plugins£{"id":"mongoose-plugins","rev":"1-19dc442d6924d7d4f60c19dfa4d34343","rev_tree":[{"pos":1,"ids":["19dc442d6924d7d4f60c19dfa4d34343",{"status":"available"},[]]}],"rev_map":{"1-19dc442d6924d7d4f60c19dfa4d34343":3714},"winningRev":"1-19dc442d6924d7d4f60c19dfa4d34343","deleted":false,"seq":3714}ÿby-sequenceÿ0000000000003714ÖT{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","dist-tags":{"latest":"0.3.3"},"versions":{"0.0.1":{"name":"mongoose-plugins","description":"mongoose plugin for CRUD helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.0.1","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.5.11","underscore":">= 1.3.3","mongoose":">= 2.6.2"},"devDependencies":{},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9a871feb29e17d817059268d49cd06cb846122ed","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.0.1.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.0.2":{"name":"mongoose-plugins","description":"mongoose plugin for adding CRUD helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.0.2","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.7","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7a38759a890a99fec568861b87a7c6d2a0080fee","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.0.2.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.1.0":{"name":"mongoose-plugins","description":"mongoose plugin for adding CRUD helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.1.0","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3daec31f36a80bc977155096ac223b46d6322cdc","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.1.0.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.1.1":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.1.1","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"eeda98def933256725c14bc2fc7063f586cb96ae","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.1.1.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.2.0":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.2.0","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3","berry":">= 0.0.4"},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"07a6eaaac16a8afe8f217f213c2e725550072f4d","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.2.0.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.3.0":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.3.0","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3","berry":">= 0.1.0"},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"18e49a8b965950923f6e3437c4817c348f56ed1e","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongy5A:ùoose-plugins-0.3.0.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.3.1":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.3.1","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3","berry":">= 0.1.0"},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.3.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"d53c4d0e337c19aed51f06d765bd9cba8c0c0efd","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.3.1.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.3.2":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.3.2","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","async":">= 0.1.22","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3","berry":">= 0.1.0"},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.3.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"317af4c8e8f9ba82c60612c00cf2ab185de2bad9","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.3.2.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]},"0.3.3":{"name":"mongoose-plugins","description":"mongoose plugins:CRUD,auth helpers","homepage":"https://github.com/truepattern/mongoose-plugins","version":"0.3.3","author":{"name":"truepattern","email":"admin@truepattern.com"},"dependencies":{"winston":">= 0.6.1","underscore":">= 1.3.3","async":">= 0.1.22","mongoose":">= 2.6.2","mongoose-types":"git://github.com/w33ble/mongoose-types.git#bson-patch"},"devDependencies":{"mocha":">= 1.0.3","should":">= 0.6.3","berry":">= 0.1.0"},"keywords":["mongoose","aonx","plugins","REST","CRUD"],"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"main":"index","scripts":{"prepublish":"npm prune"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"truepattern","email":"admin@truepattern.com"},"_id":"mongoose-plugins@0.3.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c11797e687b5b957acbaf8b214732aa3ca276694","tarball":"http://registry.npmjs.org/mongoose-plugins/-/mongoose-plugins-0.3.3.tgz"},"maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}]}},"readme":"# mongoose-plugins\nMongoose (mongodb) plugins\n\n## Todo\n * add pagination support to index\n\n","maintainers":[{"name":"truepattern","email":"admin@truepattern.com"}],"time":{"modified":"2012-07-01T08:48:18.668Z","created":"2012-06-09T11:23:42.826Z","0.0.1":"2012-06-09T11:23:44.046Z","0.0.2":"2012-06-10T07:11:04.688Z","0.1.0":"2012-06-10T09:37:47.442Z","0.1.1":"2012-06-22T05:44:53.173Z","0.2.0":"2012-06-25T06:52:12.985Z","0.3.0":"2012-06-28T08:49:04.772Z","0.3.1":"2012-06-28T09:09:53.298Z","0.3.2":"2012-06-28T22:43:03.648Z","0.3.3":"2012-07-01T08:48:18.668Z"},"author":{"name":"truepattern","email":"admin@truepattern.com"},"repository":{"type":"git","url":"git://github.com/truepattern/mongoose-plugins.git"},"_id":"mongoose-plugins","_rev":"1-19dc442d6924d7d4f60c19dfa4d34343"}ÿdocument-storeÿmongo-modelž{"id":"mongo-model","rev":"1-d2d814ff31ce358a84fd2f79b2f85de3","rev_tree":[{"pos":1,"ids":["d2d814ff31ce358a84fd2f79b2f85de3",{"status":"available"},[]]}],"rev_map":{"1-d2d814ff31ce358a84fd2f79b2f85de3":3713},"winningRev":"1-d2d814ff31ce358a84fd2f79b2f85de3","deleted":false,"seq":3713}ÿby-sequenceÿ0000000000003713ÚT{"name":"mongo-model","description":"Model for MongoDB","dist-tags":{"latest":"0.3.4"},"versions":{"0.1.0":{"name":"mongo-model","main":"./lib/model","version":"0.1.0","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mary":">=0.1"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"ff6a44301501c23a45a83abcad03722accaeda97","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.1.0.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.1.1":{"name":"mongo-model","main":"./lib/model","version":"0.1.1","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mary":">=0.1"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.1.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"9e2baa6b661f4707cb7b16133892e2ea609495fe","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.1.1.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.1.2":{"name":"mongo-model","main":"./lib/model","version":"0.1.2","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mary":">=0.1"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.1.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"7ec9b208e5785abe257d905d8b2eeb69559994aa","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.1.2.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.1.3":{"name":"mongo-model","main":"./lib/model","version":"0.1.3","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mary":">=0.1"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.1.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"ff83b54808ed70c109ac07021ab993c964e6d3f8","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.1.3.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.2.0":{"name":"mongo-model","main":"./lib/model","version":"0.2.0","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mocha":">=0.10","should":">=0.5"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"29ba09b43963470497972ed01caf62763fa57098","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.2.0.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.2.1":{"name":"mongo-model","main":"./lib/model","version":"0.2.1","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":">=0.9","underscore":">=1.2.4"},"devDependencies":{"fibers":">=0.6","coffee-script":">=1.2","mocha":">=0.10","should":">=0.5"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"81bb21e852c287501c898c8091917049a6fdacc5","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.2.1.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.3.0":{"name":"mongo-model","main":"./lib/model","version":"0.3.0","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":"0.9.x","underscore":"1.3.x"},"devDependencies":{"fibers":"0.6.x","coffee-script":"1.2.x","mocha":"1.0.x","should":"0.6.x"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.3.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"aabb187064772c4d7bf15cc34b708f7b06f66392","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.3.0.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.3.1":{"name":"mongo-model","main":"./lib/model","version":"0.3.1","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":"0.9.x","underscore":"1.3.x"},"devDependencies":{"fibers":"0.6.x","coffee-script":"1.2.x","mocha":"1.0.x","should":"0.6.x"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.3.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"237121d9e7a7fbbbde54a124bd353f9cb173d7aa","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.3.1.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.3.2":{"name":"mongo-model","main":"./lib/model","version":"0.3.2","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":"0.9.x","underscore":"1.3.x"},"devDependencies":{"fibers":"0.6.x","coffee-script":"1.2.x","mocha":"1.0.x","should":"0.6.x"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.3.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"3cce9b8a430b7ebdc5307a179347e4f9f01ba9fc","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.3.2.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.3.3":{"name":"mongo-model","main":"./lib/model","version":"0.3.3","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":"0.9.x","underscore":"1.3.x"},"devDependencies":{"fibers":"0.6.x","coffee-script":"1.2.x","mocha":"1.0.x","should":"0.6.x"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.3.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"21bf30642fc65de453a95014aaa488fcd90e567f","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.3.3.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]},"0.3.4":{"name":"mongo-model","main":"./lib/model","version":"0.3.4","homepage":"http://alexeypetrushin.github.com/mongo-model","dependencies":{"mongodb":"0.9.x","underscore":"1.3.x"},"devDependencies":{"fibers":"0.6.x","coffee-script":"1.2.x","mocha":"1.0.x","should":"0.6.x"},"description":"Model for MongoDB","keywords":["NoSQL","MongoDB","ODM","ORM","Model","Business Logic"],"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"license":"MIT","_npmUser":{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"},"_id":"mongo-model@0.3.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"8ca8942437f05f945af3b65c87b4df3ea7f2a6bb","tarball":"http://registry.npmjs.org/mongo-model/-/mongo-model-0.3.4.tgz"},"maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}]}},"readme":"Model for MongoDB (Node.JS)\n\nDocumentation http://alexeypetrushin.github.com/mongo-model\n\nInstallation `npm install mongo-model`\n\nCopyright (c) Alexey Petrushin, http://petrush.in, released under the MIT license.","maintainers":[{"name":"alexey.petrushin","email":"alexey.petrushin@gmail.com"}],"time":{"modified":"2012-07-01T11:37:34.654Z","created":"2012-01-21T20:30:32.991Z","0.1.0":"2012-01-21T20:30:35.135Z","0.1.1":"2012-01-21T20:59:52.742Z","0.1.2":"2012-01-21T21:02:22.536Z","0.1.3":"2012-01-27T00:06:18.885Z","0.2.0":"2012-02-02T07:20:40.764Z","0.2.1":"2012-02-02T07:21:57.280Z","0.3.0":"2012-03-29T18:50:36.801Z","0.3.1":"2012-04-17T23:03:19.569Z","0.3.2":"2012-04-17T23:03:52.137Z","0.3.3":"2012-04-22T00:37:04.760Z","0.3.4":"2012-07-01T11:37:34.654Z"},"author":{"name":"Alexey Petrushin","url":"http://petrush.in"},"_id":"mongo-model","_rev":"1-d2d814ff31ce358a84fd2f79b2f85de3"}ÿdocument-storeÿmodu—{"id":"modu","rev":"1-319d9eac9b07268d0f5ad50d0cf58654","rev_tree":[{"pos":1,"ids":["319d9eac9b07268d0f5ad50d0cf58654",{"status":"available"},[]]}],"rev_map":{"1-319d9eac9b07268d0f5ad50d0cf58654":3712},"winningRev":"1-319d9eac9b07268d0f5ad50d0cf58654","deleted":false,"seq":3712}ÿby-sequenceÿ0000000000003712–{"name":"modu","description":"Modulus command line tool - doesn't work atm","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"description":"Modulus command line tool - doesn't work atm","version":"0.0.0","dependencies":{"flatiron":"0.1.17"},"devDependencies":{"cli-easy":"0.1.0","vows":"0.6.1"},"name":"modu","_id":"modu@0.0.0","dist":{"shasum":"92e2bb7510c7e961100599b925cb058a59653ee9","tarball":"http://registry.npmjs.org/modu/-/modu-0.0.0.tgz"},"readme":"","maintainers":[{"name":"zwigby","email":"ckey@paranoidferret.com"}]}},"readme":"","maintainers":[{"name":"zwigby","email":"ckey@paranoidferret.com"}],"time":{"modified":"2012-08-07T20:56:48.905Z","created":"2012-08-07T20:56:47.103Z","0.0.0":"2012-08-07T20:56:48.905Z"},"_id":"modu","_rev":"1-319d9eac9b07268d0f5ad50d0cf58654"}ÿdocument-storeÿmocha-coverjs {"id":"mocha-coverjs","rev":"1-78b0f8dee6072d14800a1d6e62685a0a","rev_tree":[{"pos":1,"ids":["78b0f8dee6072d14800a1d6e62685a0a",{"status":"available"},[]]}],"rev_map":{"1-78b0f8dee6072d14800a1d6e62685a0a":3711},"winningRev":"1-78b0f8dee6072d14800a1d6e62685a0a","deleted":false,"seq":3711}ÿby-sequenceÿ0000000000003711‹ {"name":"mocha-coverjs","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mocha-coverjs","version":"0.0.1","homepage":"http://github.com/bem/mocha-coverjs","author":{"name":"Sergey Kryzhanovsky","email":"skryzhanovsky@ya.ru","url":"http://github.com/afelix"},"maintainers":[{"name":"afelix","email":"skryzhanovsky@gmail.com"}],"bugs":{"url":"http://github.com/bem/mocha-coverjs/issues"},"repository":{"type":"git","url":"git://github.com/bem/mocha-coverjs.git"},"main":"./lib/mocha-coverjs","engines":{"node":"0.6 | 0.8"},"dependencies":{"jade":"*","mocha":"1.0.x","coverjs":"*"},"_npmUser":{"name":"afelix","email":"skryzhanovsky@gmail.com"},"_id":"mocha-coverjs@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"3060e4def0b712cb9220e7a3a91ffffe63e082f7","tarball":"http://registry.npmjs.org/mocha-coverjs/-/mocha-coverjs-0.0.1.tgz"},"readme":""}},"readme":"","maintainers":[{"name":"afelix","email":"skryzhanovsky@gmail.com"}],"time":{"modified":"2012-07-10T16:19:19.839Z","created":"2012-07-10T16:19:18.018Z","0.0.1":"2012-07-10T16:19:19.838Z"},"author":{"name":"Sergey Kryzhanovsky","email":"skryzhanovsky@ya.ru","url":"http://github.com/afelix"},"repository":{"type":"git","url":"git://github.com/bem/mocha-coverjs.git"},"_id":"mocha-coverjs","_rev":"1-78b0f8dee6072d14800a1d6e62685a0a"}ÿdocument-storeÿmobi—{"id":"mobi","rev":"1-d783820ac415bdabfd618dc984355930","rev_tree":[{"pos":1,"ids":["d783820ac415bdabfd618dc984355930",{"status":"available"},[]]}],"rev_map":{"1-d783820ac415bdabfd618dc984355930":3710},"winningRev":"1-d783820ac415bdabfd618dc984355930","deleted":false,"seq":3710}ÿby-sequenceÿ0000000000003710{"name":"mobi","description":"Parse .mobi files","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mobi","version":"0.0.1","description":"Parse .mobi files","author":{"name":"Chris Barna","email":"chris@unbrain.net"},"main":"main.js","dependencies":{"pypacker":"0.2.1"},"devDependencies":{"mocha":">=1.3.2","chai":">=1.2.0"},"readme":"# node-mobi\n`mobi` is a module for node.js that can parse unencrypted .mobi (Kindle)\nfiles.\n","_id":"mobi@0.0.1","dist":{"shasum":"cc72928ff708f62e4710ef14ba66686e94eb7bab","tarball":"http://registry.npmjs.org/mobi/-/mobi-0.0.1.tgz"},"maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}]}},"readme":"# node-mobi\n`mobi` is a module for node.js that can parse unencrypted .mobi (Kindle)\nfiles.\n","maintainers":[{"name":"ctbarna","email":"chris@unbrain.net"}],"time":{"modified":"2012-08-19T06:17:48.401Z","created":"2012-08-19T06:17:47.278Z","0.0.1":"2012-08-19T06:17:48.401Z"},"author":{"name":"Chris Barna","email":"chris@unbrain.net"},"_id":"mobi","_rev":"1-d783820ac415bdabfd618dc984355930"}ÿdocument-storeÿminj—{"id":"minj","rev":"1-95e1efc8e72c61b70aad02c2f583e6d7","rev_tree":[{"pos":1,"ids":["95e1efc8e72c61b70aad02c2f583e6d7",{"status":"available"},[]]}],"rev_map":{"1-95e1efc8e72c61b70aad02c2f583e6d7":3709},"winningRev":"1-95e1efc8e72c61b70aad02c2f583e6d7","deleted":false,"seq":3709}ÿby-sequenceÿ0000000000003709ï {"name":"minj","description":"A js minifier middleware for connect/express","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"minj","version":"0.0.1","author":{"name":"Ben Gourley"},"description":"A js minifier middleware for connect/express","homepage":"https://github.com/bengourley/minj","repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"engines":{"node":"*"},"main":"./index.js","dependencies":{"uglify-js":"1.0.1"},"devDependencies":{},"_id":"minj@0.0.1","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"5d0afd4fd4ae04fc82241f8ded624ec07e39db4c","tarball":"http://registry.npmjs.org/minj/-/minj-0.0.1.tgz"},"scripts":{},"directories":{},"deprecated":"Now unsupported, use compact instead"},"0.0.2":{"name":"minj","version":"0.0.2","author":{"name":"Ben Gourley"},"description":"A js minifier middleware for connect/express","homepage":"https://github.com/bengourley/minj","repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"engines":{"node":"*"},"main":"./index.js","dependencies":{"uglify-js":"1.0.1"},"devDependencies":{},"_id":"minj@0.0.2","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"f71b6b05ba7120f78be0d487b57693bb3ee278aa","tarball":"http://registry.npmjs.org/minj/-/minj-0.0.2.tgz"},"scripts":{},"directories":{},"deprecated":"Now unsupported, use compact instead"},"0.0.3":{"name":"minj","version":"0.0.3","author":{"name":"Ben Gourley"},"description":"A js minifier middleware for connect/express","homepage":"https://github.com/bengourley/minj","repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"engines":{"node":"*"},"main":"./index.js","dependencies":{"uglify-js":"1.0.1"},"devDependencies":{},"_id":"minj@0.0.3","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"a34dfa9642c98cb2c7419169bfe8678997ac6f5d","tarball":"http://registry.npmjs.org/minj/-/minj-0.0.3.tgz"},"scripts":{},"directories":{},"deprecated":"Now unsupported, use compact instead"},"0.0.4":{"name":"minj","version":"0.0.4","author":{"name":"Ben Gourley"},"description":"A js minifier middleware for connect/express","homepage":"https://github.com/bengourley/minj","repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"engines":{"node":"*"},"main":"./index.js","dependencies":{"uglify-js":"1.0.1"},"devDependencies":{},"_id":"minj@0.0.4","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"fccbb28bbb8f18bd01d7ccb1b66773fa64982b68","tarball":"http://registry.npmjs.org/minj/-/minj-0.0.4.tgz"},"scripts":{},"directories":{},"deprecated":"Now unsupported, use compact instead"},"0.0.5":{"name":"minj","version":"0.0.5","author":{"name":"Ben Gourley"},"description":"A js minifier middleware for connect/express","homepage":"https://github.com/bengourley/minj","repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"engines":{"node":"*"},"main":"./index.js","dependencies":{"uglify-js":"1.1.1"},"_npmJsonOpts":{"file":"/Users/benleighgourley/.npm/minj/0.0.5/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"minj@0.0.5","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.25","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"cad4eca4d80a55c7910d69e7d31d2dea31e0490e","tarball":"http://registry.npmjs.org/minj/-/minj-0.0.5.tgz"},"scripts":{},"maintainers":[{"name":"bengourley","email":"benleighgourley@gmail.com"}],"directories":{},"deprecated":"Now unsupported, use compact instead"}},"maintainers":[{"name":"bengourley","email":"benleighgourley@gmail.com"}],"time":{"modified":"2012-03-22T22:46:00.811Z","created":"2011-05-14T00:34:04.232Z","0.0.1":"2011-05-14T00:34:04.827Z","0.0.2":"2011-05-18T23:19:09.790Z","0.0.3":"2011-05-23T21:05:29.740Z","0.0.4":"2011-05-25T00:22:49.446Z","0.0.5":"2011-10-12T13:07:29.785Z"},"author":{"name":"Ben Gourley"},"repository":{"type":"git","url":"git://github.com/bengourley/minj.git"},"_id":"minj","_rev":"1-95e1efc8e72c61b70aad02c2f583e6d7"}#ÿdocument-storeÿmiddleware-render¤{"id":"middleware-render","rev":"1-2fdd32c07b8e7388c87acd71add12aef","rev_tree":[{"pos":1,"ids":["2fdd32c07b8e7388c87acd71add12aef",{"status":"available"},[]]}],"rev_map":{"1-2fdd32c07b8e7388c87acd71add12aef":3708},"winningRev":"1-2fdd32c07b8e7388c87acd71add12aef","deleted":false,"seq":3708}ÿby-sequenceÿ0000000000003708ê{"name":"middleware-render","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"author":{"name":"Max Krüger, Mark Engel"},"name":"middleware-render","version":"1.0.0","dependencies":{"underscore":"1.3.3"},"main":"lib/render","_npmUser":{"name":"mren","email":"mark.c.engel@gmail.com"},"_id":"middleware-render@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"cf6b744e9172e6935a71528d76fcb2cc9fb8ddeb","tarball":"http://registry.npmjs.org/middleware-render/-/middleware-render-1.0.0.tgz"},"maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}]}},"readme":"render middleware\n=================\n\nmiddleware to render arbitrary views.\nThis middleware can be used with all existing template engines.\n\nUsage\n-----\n\nMiddleware called before `render` should populate the `req.loaded` object\nwith data that the view should present to the client\n`render` will send the output of `view req.loaded` to the client\n\nExample\n-------\n\n jsonView = (params) -> JSON.stringify params\n\n router.get '/resource',\n (req, res, next) ->\n req.loaded =\n foo: 'bar'\n fitz: [1..10]\n next()\n render jsonView\n\n // will render `'{\"foo\":\"bar\",\"fitz\":[1,2,3,4,5,6,7,8,9,10]}'` to the\n // client\n\nCredits\n-------\n\nThis middleware was implemented with [snd](https://github.com/snd) while\nhacking together on a project.\nI cleaned up the code and added some tests.\n","maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}],"time":{"modified":"2012-06-19T12:31:24.404Z","created":"2012-06-19T12:31:19.717Z","1.0.0":"2012-06-19T12:31:24.404Z"},"author":{"name":"Max Krüger, Mark Engel"},"_id":"middleware-render","_rev":"1-2fdd32c07b8e7388c87acd71add12aef"}!ÿdocument-storeÿmiddleware-exec¢{"id":"middleware-exec","rev":"1-7bebf60bfa26219a1eac61ddcaab938b","rev_tree":[{"pos":1,"ids":["7bebf60bfa26219a1eac61ddcaab938b",{"status":"available"},[]]}],"rev_map":{"1-7bebf60bfa26219a1eac61ddcaab938b":3707},"winningRev":"1-7bebf60bfa26219a1eac61ddcaab938b","deleted":false,"seq":3707}ÿby-sequenceÿ0000000000003707É {"name":"middleware-exec","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"author":{"name":"Max Krüger, Mark Engel"},"name":"middleware-exec","version":"1.0.0","dependencies":{},"main":"lib/","_npmUser":{"name":"mren","email":"mark.c.engel@gmail.com"},"_id":"middleware-exec@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"2e0c7b46a6f946b90e28fb5752b881e36fe037b5","tarball":"http://registry.npmjs.org/middleware-exec/-/middleware-exec-1.0.0.tgz"},"maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}]}},"readme":"middleware-exec\n===============\n\nSimple way to create middleware that should not modify the `response`.\n\nTakes care of errors.\n\nUseful for tasks like updating the database.\n\nExample\n-------\n\n```coffeescript\nrouter.post '/user/:id',\n exec (req, next) -> dao.user.update req.params.id, req.body, next\n```\n\nWithout `exec`\n--------------\n\n```coffeescript\nrouter.post '/user/:id',\n dao.user.update req.params.id, req.body, (err) ->\n if err?\n res.writeHead 500\n res.end 'Internal Server Error'\n else\n next()\n```\n\nCredits\n-------\n\n`bind` was developed with [snd](https://github.com/snd) during a project.\nThe initial idea is from snd.\nI refactored the library and provided unit tests.\n","maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}],"time":{"modified":"2012-06-19T16:46:42.457Z","created":"2012-06-19T16:46:36.950Z","1.0.0":"2012-06-19T16:46:42.457Z"},"author":{"name":"Max Krüger, Mark Engel"},"_id":"middleware-exec","_rev":"1-7bebf60bfa26219a1eac61ddcaab938b"}&ÿdocument-storeÿmiddleware-condition§{"id":"middleware-condition","rev":"1-11a0e3f0db3f8a4bc8f6815d6e463256","rev_tree":[{"pos":1,"ids":["11a0e3f0db3f8a4bc8f6815d6e463256",{"status":"available"},[]]}],"rev_map":{"1-11a0e3f0db3f8a4bc8f6815d6e463256":3706},"winningRev":"1-11a0e3f0db3f8a4bc8f6815d6e463256","deleted":false,"seq":3706}ÿby-sequenceÿ0000000000003706õ {"name":"middleware-condition","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"author":{"name":"Mark Engel"},"name":"middleware-condition","version":"1.0.0","dependencies":{},"main":"lib/condition","_npmUser":{"name":"mren","email":"mark.c.engel@gmail.com"},"_id":"middleware-condition@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"04f4b7183d05de835c51b9af4fecb8fef8be3438","tarball":"http://registry.npmjs.org/middleware-condition/-/middleware-condition-1.0.0.tgz"},"maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}]}},"readme":"middleware-condition\n====================\n\n`if-else` statement as a middleware\n\n```coffeescript\n\ncondition = require 'middleware-condition'\n\n# the condition is dependant on the state\n# in this example we use this simplified conditions\nalwaysTrue = (req) -> true\nalwaysFalse = (req) -> false\n\n# this would be a useful condition\nisLoggedIn = (req) -> req.session?.user?\n\nlog = (msg) -> (req, res, next) -> next console.log msg\n\n\nhttp.createServer sequenz [\n condition alwaysTrue log('this middleware is executed'), log('this middleware is ignored')\n condition alwaysFalse log('this middleware is ignored'), log('this middleware is executed')\n condition alwaysFalse log('nothing is shown and the next middleware is executed')\n (req, res, next) -> req.end()\n```\n\n","maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}],"time":{"modified":"2012-06-19T18:08:18.532Z","created":"2012-06-19T18:08:14.830Z","1.0.0":"2012-06-19T18:08:18.532Z"},"author":{"name":"Mark Engel"},"_id":"middleware-condition","_rev":"1-11a0e3f0db3f8a4bc8f6815d6e463256"}!ÿdocument-storeÿmiddleware-bind¢{"id":"middleware-bind","rev":"1-b6e75bd8a73f799f61092ec496cce581","rev_tree":[{"pos":1,"ids":["b6e75bd8a73f799f61092ec496cce581",{"status":"available"},[]]}],"rev_map":{"1-b6e75bd8a73f799f61092ec496cce581":3705},"winningRev":"1-b6e75bd8a73f799f61092ec496cce581","deleted":false,"seq":3705}ÿby-sequenceÿ0000000000003705¶{"name":"middleware-bind","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"middleware-bind","version":"1.0.0","author":{"name":"Mark Engel","email":"mark.c.engel@gmail.com","url":"https://github.com/mren"},"contributors":[{"name":"Maximilian Krüger","email":"kruemaxi@googlemail.com","url":"https://github.com/snd"}],"dependencies":{"underscore":"1.3.3"},"repository":{"type":"git","url":"git://github.com/mren/middleware-bind.git"},"main":"lib/","_npmUser":{"name":"mren","email":"mark.c.engel@gmail.com"},"_id":"middleware-bind@1.0.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"30e8561ac649914b872b877a1b958736b1eb26be","tarball":"http://registry.npmjs.org/middleware-bind/-/middleware-bind-1.0.0.tgz"},"maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}]}},"readme":"middleware-bind\n===============\n\nTransforms an asynchronous function into a middleware.\nThe result of the function will be bound to `request.loaded`.\n\nUse this library if you want to load async data in a clean\nway.\n\nShort Description\n-----------------\n\nTransforms an asynchronous function `f` into a middleware.\nThe middleware will call `f` with `(req, callback)`.\n`f` has to call `callback` with `err, value`\nwhich will cause `value` to be bound to `req.loaded[name]`.\n\nUsage\n-----\n\n```coffeescript\nbind name, (req, next) ->\n # do async stuff and call `n§Üzùext` when you are finished\n error = null\n result = 'result'\n next error, result\n```\n\n`name` is the directive where to save the results from `function`.\n\n```coffeescript\n# will bind the result of asnycMethod to `req.loaded.foo`\nbind 'foo', (req, next) -> asyncMethod next\n```\n\n`name` can be nested.\n\n```coffeescript\n# will bind the result of asyncMethod to `req.loaded.foo.bar`\nbind 'foo.bar', (req, next) -> asyncMethod next\n```\n\nIf the asynchronous method returns an error the process is aborted\nand a Status Code of 500 is returned to the user.\n\nExample\n-------\n\n```coffeescript\nrouter.get '/user',\n bind 'users.all', (req, next) -> dao.user.all next\n (req, res, next) ->\n console.log 'loaded users', req.loaded.users.all\n # will output the result of `dao.user.all`\n next()\n render view.user.all\n\nrouter.get '/user/:id',\n bind 'user.object', (req, next) -> dao.user.byId req.params.id, next\n render view.user.show\n```\n\nCredits\n-------\n\n`bind` was developed with [snd](https://github.com/snd) during a project.\nThe initial idea was from snd.\nI refactored the library and provided unit tests.\n","maintainers":[{"name":"mren","email":"mark.c.engel@gmail.com"}],"time":{"modified":"2012-06-19T17:37:31.518Z","created":"2012-06-19T17:37:25.612Z","1.0.0":"2012-06-19T17:37:31.518Z"},"author":{"name":"Mark Engel","email":"mark.c.engel@gmail.com","url":"https://github.com/mren"},"repository":{"type":"git","url":"git://github.com/mren/middleware-bind.git"},"_id":"middleware-bind","_rev":"1-b6e75bd8a73f799f61092ec496cce581"}ÿdocument-storeÿmetlinkš{"id":"metlink","rev":"1-9836e865055200b8afa7c55aec170d09","rev_tree":[{"pos":1,"ids":["9836e865055200b8afa7c55aec170d09",{"status":"available"},[]]}],"rev_map":{"1-9836e865055200b8afa7c55aec170d09":3704},"winningRev":"1-9836e865055200b8afa7c55aec170d09","deleted":false,"seq":3704}ÿby-sequenceÿ0000000000003704Û"{"name":"metlink","description":"Abstraction of the API backing Metlink's iPhone app","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"metlink","description":"Abstraction of the API backing Metlink's iPhone app","version":"0.0.1","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/metlink","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/metlink.git"},"keywords":["metlink","api"],"main":"./lib/metlink.js","dependencies":{"request":"2.9.x"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"metlink@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ea10d61298a058d366b0494001a42c978eff358f","tarball":"http://registry.npmjs.org/metlink/-/metlink-0.0.1.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]},"0.0.2":{"name":"metlink","description":"Abstraction of the API backing Metlink's iPhone app","version":"0.0.2","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/metlink","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/metlink.git"},"keywords":["metlink","api"],"main":"./lib/metlink.js","dependencies":{"request":"2.9.x"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"metlink@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c25c4bd5a2b56adbc22309f118492cc0ea8286e4","tarball":"http://registry.npmjs.org/metlink/-/metlink-0.0.2.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]},"0.1.1":{"name":"metlink","description":"Abstraction of the API backing Metlink's iPhone app","version":"0.1.1","author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"url":"http://github.com/deoxxa/metlink","license":"BSD","repository":{"type":"git","url":"git://github.com/deoxxa/metlink.git"},"keywords":["metlink","api"],"main":"./lib/metlink.js","dependencies":{"request":"2.9.x"},"_npmUser":{"name":"deoxxa","email":"deoxxa@fknsrs.biz"},"_id":"metlink@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"72d26467aec43c84ea206b3f6d3bbfca394a12a4","tarball":"http://registry.npmjs.org/metlink/-/metlink-0.1.1.tgz"},"maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}]}},"readme":"Metlink\n=======\n\nRemember Metlink? Well it's back! In JS form!\n\nOverview\n--------\n\nMetlink, now PTV, is the public transport provider in Melbourne, Australia.\nThey have seen fit to release an iPhone application that purports to be a\n\"one-stop-shop for Victorian public transport information\". Anybody who has\nused it knows otherwise. Luckily for us, however, there's a nifty API backing\nit up, and thanks to `metlinkapi` on reddit, it's not so hard to decipher.\n\nThis library is an abstraction of that API.\n\nInstallation\n------------\n\nReally easy.\n\n`$ npm install metlink`\n\nOr if you want to live on the edge (of commandeering APIs)\n\n`$ npm install https://github.com/deoxxa/metlink/tarball/master`\n\nDocumentation\n-------------\n\nCheck out `docs/metlink.html`\n\nExample Usage\n-------------\n\n```javascript\nvar Metlink = require(\"./lib/metlink\");\n\nvar m = new Metlink(\"http://iphone.metlinkmelbourne.com.au/services\");\n\nm.get_transport_line_list(\"train\", function(err, res) {\n console.log(res);\n});\n```\n\nLicense\n-------\n\nBSD, 3 clause. A copy is included.\n\nContact\n-------\n\n* [github](http://github.com/deoxxa)\n* [twitter](http://twitter.com/#!/deoxxa)\n* [email](mailto:deoxxa@fknsrs.biz)\n","maintainers":[{"name":"deoxxa","email":"deoxxa@fknsrs.biz"}],"time":{"modified":"2012-04-23T12:40:44.258Z","created":"2012-04-22T11:41:09.718Z","0.0.1":"2012-04-22T11:41:16.010Z","0.0.2":"2012-04-22T11:41:46.220Z","0.1.1":"2012-04-23T12:40:44.258Z"},"author":{"name":"Conrad Pankoff","email":"deoxxa@fknsrs.biz","url":"http://www.fknsrs.biz/"},"repository":{"type":"git","url":"git://github.com/deoxxa/metlink.git"},"_id":"metlink","_rev":"1-9836e865055200b8afa7c55aec170d09"}ÿdocument-storeÿmeta-objectsŸ{"id":"meta-objects","rev":"1-d18b626f1659bc0e73beed89bf63316f","rev_tree":[{"pos":1,"ids":["d18b626f1659bc0e73beed89bf63316f",{"status":"available"},[]]}],"rev_map":{"1-d18b626f1659bc0e73beed89bf63316f":3703},"winningRev":"1-d18b626f1659bc0e73beed89bf63316f","deleted":false,"seq":3703}ÿby-sequenceÿ0000000000003703Ôê {"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","dist-tags":{"latest":"0.2.7"},"versions":{"0.0.1":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","version":"0.0.1","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./lib/index.js","engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.0.1","_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.6.2-pre","_defaultsLoaded":true,"dist":{"shasum":"9c01bf4cd4d8a1357e9f00af13b08f8d4402665d","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.0.1.tgz"},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.7":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","version":"0.0.7","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.0.1","harmony-collections":"0.1.2"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.0.7","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"198026739e26855ebcbbc3c5beb58e3d64cb0793","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.0.7.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of @tvcutsem in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one. For now I'm just copying over the README that I created for that repo until I have more substantial additions.\n\nI've also made some tenative changes that go against the new API but mostly in order to shim in behavior similar to what will eventually be done natively. There's also a couple questionable changes made to do things like allow configurable names on Functions, allow nearly genuine Array proxies, and a few other questionable things.\n\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n\nBetond that it's also currently using WeakMaps and Maps. Maps are implemented in the latest versions of V8 but I don't think are available in Spidermonkey yet. Maps are very similar to WeakMaps but allow for primitive keys so are useful when combined with WeakMaps for storing sets of unknown properties.\n\nI have implemented what's available for the Harmony Collections API and then some extra as a shim that works in any JS environment. Alternatively, uses of Map can probably be replaced with WeakMaps in most cases if you additional checking on the inputs.\n\nhttps://github.com/Benvie/ES6-Harmony-Collections-Shim\n\n\n# Current Exposed Feature Set\nDocumentation for this will a lot of time. Many of these are simple\nfunctions, but the Proxy based APIs have a lot of depth to them\n\n { Dispatcher: [Function: Dispatcher],\n Trace:\n { tracer: [Function: tracer],\n traceDispatcher: [Function: traceDispatcher] },\n Partials: { [Function: FactoryFactory] ___: ___, $$$: $$$ },\n Function:\n { [Function: create],\n callbind: [Function],\n applybind: [Function],\n callapplybind: [Function: callapplybind],\n bindcallapply: [Function: bindcallapply],\n partial: [Function: partialbind],\n source: [Function],\n params: [Function: params],\n noop: [Function: noop],\n noopmap: [Function: noopmap] },\n Array:\n { [Function: create],\n argjoin: [Function: argjoin],\n clone: [Function: clone],\n pushall: [Function: pushall],\n reverse: [Function],\n slice: [Function: slice],\n unique: [Function: unique],\n unzip: [Function: unzip],\n zip: [Function: zip],\n zipwith: [Function: zipwith] },\n Object:\n { [Function: create],\n class: [Function: class],\n clone: [Function: clone],\n define: [Function: define],\n defines: [Function: defines],\n desc: [Function: desc],\n descs: [Function: descs],\n hasOwn: [Function: hasOwn],\n is: [Function: is],\n isArgs: [Function: isArguments],\n isDescriptor: [Function: isDescriptor],\n isPrimitive: [Function: isPrimitive],\n keys: [Function: keys],\n map: [Function: map],\n names: [Function: names],\n proto: [Function: proto] },\n String:\n { [Function: create],\n explode: [Function: explode],\n implode: [Function: implode],\n indent: [Function],\n repeat: [Function: repeat],\n replace: [Function: replace],\n reverse: [Function: reverse],\n strmap: [Function: strmap],\n trim: [Function: trim] },\n Descriptors: { getter: [Function], val: [Function], pfunc: [Function] },\n Reflectable:\n { getOwnPropertyDescriptor: [Function],\n getOwnPropertyNames: [Function],\n defineProperty: [Function],\n delete: [Function],\n freeze: [Function],\n seal: [Function],\n preventExtensions: [Function],\n has: [Function],\n hasOwn: [Function],\n get: [Function],\n set: [Function],\n enumerate: [Function],\n iterate: [Function],\n keys: [Function],\n apply: [Function],\n new: [Function],\n VirtualHandler: [Function] },\n WrapMap: [Function: WrapMap],\n WeakMapSet: [Function: WeakMapSet] }\n\n\n\n\n\n\n# Partials - Using meta objects for partial function factories\n\n\n\n```javascript\n\nvar metaobjects = require('../lib')();\n var Factory = metaobjects.Partials;\n\n\n\nvar sliceFactory = Factory(Array.prototype.slice);\n\nsliceFactory.$this = Factory.$$$;\nconsole.log(sliceFactory+'')\n/* fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n//->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // [ 3 ]\n\n// `new` create a clone snapshot of the factory but they don't share state after\n\nvar factory2 = new sliceFactory\n\nfactory2.$this = Factory.$$$;\nfactory2.$0 = 1;\n\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\n\nvar someFnFactory = Factory(someFn);\nconsole.log(someFnFactory)\n// ->\n { [Function: someFn_factory]\n someArgs: null,\n itWillRead: null,\n andUse: null }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\nsomeFnFactory.itWillRead = Factory.___;\nsomeFnFactory.andUse = Factory.___\n\nconsole.log(someFnFactory)\n//->\n { [Function: someFn_factory]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\nconsole.log(someFnFactory+'')\n//->\n function someFn_factory(){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\nvar somePartial = someFnFactory();\n// copying it before we do anything to it\nvar copied = new somePartial;\n\nconsole.log(somePartial+'')\n//matchs above inner function ->\n function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\n\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\n\nconsole.log(somePartial(Date, 1337));\n// [ \"yeah\", \"whatever\" ]\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial],\n someArgs: [Constructor: Array],\n itWillRead: [Constructor: Date],\n andUse: 1337 }\n\n\n\n// still matches the pre-call values, no shared state\nconsole.log(copied)\n```\n\n\n\n\n\n\n# Direct Proxies API Shim for Node\n\nThis module contains a very minimal amount changes to the reference implementation of the\nnew Direct Proxies API that replaces the old Harmony Proxy proposal as of December 2011.\n\nThe reference source is available here and is, as of now, being updated frequently: [es-lab DirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/DirectProxies.js)\n\nThe reference test source is here: [es-lab testDirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/testDirectProxies.js)\n\nThe official documentation and API is here: [ES Wiki - Direct Proxies](http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies)\n\n\n# Changes from the reference source\n\nChanges have been made for two reasons. First, to be able to load it as a module as needed\nwith an optional context to load it onto. Second, to force returned descriptors to be\nconfigurable to prevent constant errors from being thrown. The new API added support for\nnon-configurable properties on Proxies but this isn't implemented in V8 yet and it causes\nthe new API to be completely unusable instead of mostly usable if you know what you're doing.\nA better way to handle these properties could probably be implemented but the goal for this\nwas the bare minimum changes to make it usable.\n\n\n# Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies')(global); // some context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target,name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n delete,\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n new }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract delete,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n new }\n```\n\n\n# Compatability\n\nNode 0.6.6 upgraded to V8 3.8 release candidate. The 3.7 branch introduced numerous important\nbug fixes to the Proxy and WeakMap implementations and is __required__ to make this work.\n\nIf you are using Node >0.6.6 and are still getting \"Illegal Access\" errors see this:\nhttps://github.com/joyent/node/pull/2109","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.8":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","version":"0.0.8","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.0.2","harmony-collections":"0.1.2"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.0.8","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"3e356f1b52a57e8b48d27e787ce0cb3502e61472","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.0.8.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of @tvcutsem in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one. For now I'm just copying over the README that I created for that repo until I have more substantial additions.\n\nI've also made some tenative changes that go against the new API but mostly in order to shim in behavior similar to what will eventually be done natively. There's also a couple questionable changes made to do things like allow configurable names on Functions, allow nearly genuine Array proxies, and a few other questionable things.\n\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n\nBetond that it's also currently using WeakMaps and Maps. Maps are implemented in the latest versions of V8 but I don't think are available in Spidermonkey yet. Maps are very similar to WeakMaps but allow for primitive keys so are useful when combined with WeakMaps for storing sets of unknown properties.\n\nI have implemented what's available for the Harmony Collections API and then some extra as a shim that works in any JS environment. Alternatively, uses of Map can probably be replaced with WeakMaps in most cases if you additional checking on the inputs.\n\nhttps://github.com/Benvie/ES6-Harmony-Collections-Shim\n\n\n# Current Exposed Feature Set\nDocumentation for this will a lot of time. Many of these are simple\nfunctions, but the Proxy based APIs have a lot of depth to them\n\n { Dispatcher: [Function: Dispatcher],\n Trace:\n { tracer: [Function: tracer],\n traceDispatcher: [Function: traceDispatcher] },\n Partials: { [Function: FactoryFactory] ___: ___, $$$: $$$ },\n Function:\n { [Function: create],\n callbind: [Function],\n applybind: [Function],\n callapplybind: [Function: callapplybind],\n bindcallapply: [Function: bindcallapply],\n partial: [Function: partialbind],\n source: [Function],\n params: [Function: params],\n noop: [Function: noop],\n noopmap: [Function: noopmap] },\n Array:\n { [Function: create],\n argjoin: [Function: argjoin],\n clone: [Function: clone],\n pushall: [Function: pushall],\n reverse: [Function],\n slice: [Function: slice],\n unique: [Function: unique],\n unzip: [Function: unzip],\n zip: [Function: zip],\n zipwith: [Function: zipwith] },\n Object:\n { [Function: create],\n class: [Function: class],\n clone: [Function: clone],\n define: [Function: define],\n defines: [Function: defines],\n desc: [Function: desc],\n descs: [Function: descs],\n hasOwn: [Function: hasOwn],\n is: [Function: is],\n isArgs: [Function: isArguments],\n isDescriptor: [Function: isDescriptor],\n isPrimitive: [Function: isPrimitive],\n keys: [Function: keys],\n map: [Function: map],\n names: [Function: names],\n proto: [Function: proto] },\n String:\n { [Function: create],\n explode: [Function: explode],\n implode: [Function: implode],\n indent: [Function],\n repeat: [Function: repeat],\n replace: [Function: replace],\n reverse: [Function: reverse],\n strmap: [Function: strmap],\n trim: [Function: trim] },\n Descriptors: { getter: [Function], val: [Function], pfunc: [Function] },\n Reflectable:\n { getOwnPropertyDescriptor: [Function],\n getOwnPropertyNames: [Function],\n defineProperty: [Function],\n delete: [Function],\n freeze: [Function],\n seal: [Function],\n preventExtensions: [Function],\n has: [Function],\n hasOwn: [Function],\n get: [Function],\n set: [Function],\n enumerate: [Function],\n iterate: [Function],\n keys: [Function],\n apply: [Function],\n new: [Function],\n VirtualHandler: [Function] },\n WrapMap: [Function: WrapMap],\n WeakMapSet: [Function: WeakMapSet] }\n\n\n\n\n\n\n# Partials - Using meta objects for partial function factories\n\n\n\n```javascript\n\nvar metaobjects = require('../lib')();\n var Factory = metaobjects.Partials;\n\n\n\nvar sliceFactory = Factory(Array.prototype.slice);\n\nsliceFactory.$this = Factory.$$$;\nconsole.log(sliceFactory+'')\n/* fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n//->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // [ 3 ]\n\n// `new` create a clone snapshot of the factory but they don't share state after\n\nvar factory2 = new sliceFactory\n\nfactory2.$this = Factory.$$$;\nfactory2.$0 = 1;\n\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\n\nvar someFnFactory = Factory(someFn);\nconsole.log(someFnFactory)\n// ->\n { [Function: someFn_factory]\n someArgs: null,\n itWillRead: null,\n andUse: null }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\nsomeFnFactory.itWillRead = Factory.___;\nsomeFnFactory.andUse = Factory.___\n\nconsole.log(someFnFactory)\n//->\n { [Function: someFn_factory]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\nconsole.log(someFnFactory+'')\n//->\n function someFn_factory(){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\nvar somePartial = someFnFactory();\n// copying it before we do anything to it\nvar copied = new somePartial;\n\nconsole.log(somePartial+'')\n//matchs above inner function ->\n function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\n\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\n\nconsole.log(somePartial(Date, 1337));\n// [ \"yeah\", \"whatever\" ]\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial],\n someArgs: [Constructor: Array],\n itWillRead: [Constructor: Date],\n andUse: 1337 }\n\n\n\n// still matches the pre-call values, no shared state\nconsole.log(copied)\n```\n\n\n\n\n\n\n# Direct Proxies API Shim for Node\n\nThis module contains a very minimal amount changes to the reference implementation of the\nnew Direct Proxies API that replaces the old Harmony Proxy proposal as of December 2011.\n\nThe reference source is available here and is, as of now, being updated frequently: [es-lab DirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/DirectProxies.js)\n\nThe reference test source is here: [es-lab testDirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/testDirectProxies.js)\n\nThe official documentation and API is here: [ES Wiki - Direct Proxies](http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies)\n\n\n# Changes from the reference source\n\nChanges have been made for two reasons. First, to be able to load it as a module as needed\nwith an optional context to load it onto. Second, to force returned descriptors to be\nconfigurable to prevent constant errors from being thrown. The new API added support for\nnon-configurable properties on Proxies but this isn't implemented in V8 yet and it causes\nthe new API to be completely unusable instead of mostly usable if you know what you're doing.\nA better way to handle these properties could probably be implemented but the goal for this\nwas the bare minimum changes to make it usable.\n\n\n# Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies')(global); // some context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target,name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n delete,\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n new }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract delete,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n new }\n```\n\n\n# Compatability\n\nNode 0.6.6 upgraded to V8 3.8 release candidate. The 3.7 branch introduced numerous important\nbug fixes to the Proxy and WeakMap implementations and is __required__ to make this work.\n\nIf you are using Node >0.6.6 and are still getting \"Illegal Access\" errors see this:\nhttps://github.com/joyent/node/pull/2109","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.0.9":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Pro××Áùxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","version":"0.0.9","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.0.3"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.0.9","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"9238a9c0caa3c741ffd3f4e81625a457d628aa6c","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.0.9.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of @tvcutsem in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one. For now I'm just copying over the README that I created for that repo until I have more substantial additions.\n\nI've also made some tenative changes that go against the new API but mostly in order to shim in behavior similar to what will eventually be done natively. There's also a couple questionable changes made to do things like allow configurable names on Functions, allow nearly genuine Array proxies, and a few other questionable things.\n\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n\nBetond that it's also currently using WeakMaps and Maps. Maps are implemented in the latest versions of V8 but I don't think are available in Spidermonkey yet. Maps are very similar to WeakMaps but allow for primitive keys so are useful when combined with WeakMaps for storing sets of unknown properties.\n\nI have implemented what's available for the Harmony Collections API and then some extra as a shim that works in any JS environment. Alternatively, uses of Map can probably be replaced with WeakMaps in most cases if you additional checking on the inputs.\n\nhttps://github.com/Benvie/ES6-Harmony-Collections-Shim\n\n\n# Current Exposed Feature Set\nDocumentation for this will a lot of time. Many of these are simple\nfunctions, but the Proxy based APIs have a lot of depth to them\n\n { Function:\n { [Function: Function],\n noop: [Function: noop],\n codeToParts: [Function: codeToParts],\n partsToCode: [Function: partsToCode],\n callbind: [Function: callbind],\n applybind: [Function: applybind] },\n Object:\n { [Function: create],\n define: [Function: defineProperty],\n defines: [Function: defines],\n desc: [Function: desc],\n names: [Function: getOwnPropertyNames],\n proto: [Function: proto],\n keys: [Function: keys],\n hasOwn: [Function: hasOwn],\n toClass: [Function: toClass],\n descs: [Function: descs],\n clone: [Function: clone],\n unzip: [Function: unzip],\n map: [Function: map] },\n Descriptor:\n { [Function: Descriptor],\n getter: [Function: getter],\n val: [Function: val],\n pfunc: [Function: pfunc] },\n is:\n { [Function: is],\n Primitive: [Function: isPrimitive],\n Descriptor: [Function: isDescriptor],\n Array: [Function: isArray],\n Arguments: [Function: isArguments] },\n String:\n { char: [Function: char],\n charcode: [Function: charcode],\n concat: [Function: concat],\n fixed: [Function: fixed],\n idx: [Function: idx],\n idxR: [Function: idxR],\n lcompare: [Function: lcompare],\n match: [Function: match],\n replace: [Function: replace],\n search: [Function: search],\n slice: [Function: slice],\n split: [Function: split],\n substr: [Function: substr],\n substring: [Function: substring],\n lcaseL: [Function: lcaseL],\n lcaseU: [Function: lcaseU],\n caseL: [Function: caseL],\n caseU: [Function: caseU],\n trim: [Function: trim],\n trimL: [Function: trimL],\n trimR: [Function: trimR],\n repeat: [Function: repeat] },\n Array:\n { concat: [Function: concat],\n every: [Function: every],\n filter: [Function: filter],\n each: [Function: each],\n idx: [Function: idx],\n join: [Function: join],\n idxR: [Function: idxR],\n map: [Function: map],\n pop: [Function: pop],\n push: [Function: push],\n reduce: [Function: reduce],\n reduceR: [Function: reduceR],\n reverse: [Function: reverse],\n shift: [Function: shift],\n slice: [Function: slice],\n some: [Function: some],\n sort: [Function: sort],\n splice: [Function: splice],\n unshift: [Function: unshift],\n pushall: [Function: pushall],\n flatten: [Function: flatten],\n zipwith: [Function: zipwith],\n unique: [Function: unique],\n zip: [Function: zip] },\n WrapMap: [Function: WrapMap],\n WeakMapSet: [Function: WeakMapSet],\n Reflectable:\n { VirtualHandler: [Function],\n defineProperty: [Function],\n delete: [Function],\n enumerate: [Function],\n freeze: [Function],\n get: [Function],\n getOwnPropertyDescriptor: [Function],\n getOwnPropertyNames: [Function],\n has: [Function],\n hasOwn: [Function],\n iterate: [Function],\n keys: [Function],\n new: [Function],\n preventExtensions: [Function],\n seal: [Function],\n set: [Function] },\n Traps:\n { getOwnPropertyDescriptor: [ \"target\", \"name\" ],\n getOwnPropertyNames: [ \"target\" ],\n defineProperty: [ \"target\", \"name\", \"descriptor\" ],\n preventExtensions: [ \"target\" ],\n freeze: [ \"target\" ],\n seal: [ \"target\" ],\n delete: [ \"target\", \"name\" ],\n hasOwn: [ \"target\", \"name\" ],\n has: [ \"target\", \"name\" ],\n get: [ \"target\", \"name\", \"receiver\" ],\n set: [ \"target\", \"name\", \"value\", \"receiver\" ],\n enumerate: [ \"target\" ],\n iterate: [ \"target\" ],\n keys: [ \"target\" ],\n apply: [ \"target\", \"receiver\", \"args\" ],\n new: [ \"target\", \"args\" ] } }\n\n\n\n\n\n# Partials - Using meta objects for partial function factories\n\n\n\n```javascript\n\nvar metaobjects = require('../lib')();\n var Factory = metaobjects.Partials;\n\n\n\nvar sliceFactory = Factory(Array.prototype.slice);\n\nsliceFactory.$this = Factory.$$$;\nconsole.log(sliceFactory+'')\n/* fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n//->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // [ 3 ]\n\n// `new` create a clone snapshot of the factory but they don't share state after\n\nvar factory2 = new sliceFactory\n\nfactory2.$this = Factory.$$$;\nfactory2.$0 = 1;\n\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\n\nvar someFnFactory = Factory(someFn);\nconsole.log(someFnFactory)\n// ->\n { [Function: someFn_factory]\n someArgs: null,\n itWillRead: null,\n andUse: null }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\nsomeFnFactory.itWillRead = Factory.___;\nsomeFnFactory.andUse = Factory.___\n\nconsole.log(someFnFactory)\n//->\n { [Function: someFn_factory]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\nconsole.log(someFnFactory+'')\n//->\n function someFn_factory(){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\nvar somePartial = someFnFactory();\n// copying it before we do anything to it\nvar copied = new somePartial;\n\nconsole.log(somePartial+'')\n//matchs above inner function ->\n function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\n\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\n\nconsole.log(somePartial(Date, 1337));\n// [ \"yeah\", \"whatever\" ]\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial],\n someArgs: [Constructor: Array],\n itWillRead: [Constructor: Date],\n andUse: 1337 }\n\n\n\n// still matches the pre-call values, no shared state\nconsole.log(copied)\n```\n\n\n\n\n\n\n# Direct Proxies API Shim for Node\n\nThis module contains a very minimal amount changes to the reference implementation of the\nnew Direct Proxies API that replaces the old Harmony Proxy proposal as of December 2011.\n\nThe reference source is available here and is, as of now, being updated frequently: [es-lab DirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/DirectProxies.js)\n\nThe reference test source is here: [es-lab testDirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/testDirectProxies.js)\n\nThe official documentation and API is here: [ES Wiki - Direct Proxies](http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies)\n\n\n# Changes from the reference source\n\nChanges have been made for two reasons. First, to be able to load it as a module as needed\nwith an optional context to load it onto. Second, to force returned descriptors to be\nconfigurable to prevent constant errors from being thrown. The new API added support for\nnon-configurable properties on Proxies but this isn't implemented in V8 yet and it causes\nthe new API to be completely unusable instead of mostly usable if you know what you're doing.\nA better way to handle these properties could probably be implemented but the goal for this\nwas the bare minimum changes to make it usable.\n\n\n# Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies')(global); // some context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target,name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n delete,\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n new }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract delete,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n new }\n```\n\n\n# Compatability\n\nNode 0.6.6 upgraded to V8 3.8 release candidate. The 3.7 branch introduced numerous important\nbug fixes to the Proxy and WeakMap implementations and is __required__ to make this work.\n\nIf you are using Node >0.6.6 and are still getting \"Illegal Access\" errors see this:\nhttps://github.com/joyent/node/pull/2109","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.0":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","function","functional","partial","weakmap","trace"],"version":"0.1.0","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.0.3"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"bd402902ed11ab1a03eac437b0b0adf0b5c3563d","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.0.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of @tvcutsem in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one. For now I'm just copying over the README that I created for that repo until I have more substantial additions.\n\nI've also made some tenative changes that go against the new API but mostly in order to shim in behavior similar to what will eventually be done natively. There's also a couple questionable changes made to do things like allow configurable names on Functions, allow nearly genuine Array proxies, and a few other questionable things.\n\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n\nBetond that it's also currently using WeakMaps and Maps. Maps are implemented in the latest versions of V8 but I don't think are available in Spidermonkey yet. Maps are very similar to WeakMaps but allow for primitive keys so are useful when combined with WeakMaps for storing sets of unknown properties.\n\nI have implemented what's available for the Harmony Collections API and then some extra as a shim that works in any JS environment. Alternatively, uses of Map can probably be replaced with WeakMaps in most cases if you additional checking on the inputs.\n\nhttps://github.com/Benvie/ES6-Harmony-Collections-Shim\n\n\n# Current Exposed Feature Set\nDocumentation for this will a lot of time. Many of these are simple\nfunctions, but the Proxy based APIs have a lot of depth to them\n\n { Function:\n { [Function: Function],\n noop: [Function: noop],\n codeToParts: [Function: codeToParts],\n partsToCode: [Function: partsToCode],\n callbind: [Function: callbind],\n applybind: [Function: applybind] },\n Object:\n { [Function: create],\n define: [Function: defineProperty],\n defines: [Function: defines],\n desc: [Function: desc],\n names: [Function: getOwnPropertyNames],\n proto: [Function: proto],\n keys: [Function: keys],\n hasOwn: [Function: hasOwn],\n toClass: [Function: toClass],\n descs: [Function: descs],\n clone: [Function: clone],\n unzip: [Function: unzip],\n map: [Function: map] },\n Descriptor:\n { [Function: Descriptor],\n getter: [Function: getter],\n val: [Function: val],\n pfunc: [Function: pfunc] },\n is:\n { [Function: is],\n Primitive: [Function: isPrimitive],\n Descriptor: [Function: isDescriptor],\n Array: [Function: isArray],\n Arguments: [Function: isArguments] },\n String:\n { char: [Function: char],\n charcode: [Function: charcode],\n concat: [Function: concat],\n fixed: [Function: fixed],\n idx: [Function: idx],\n idxR: [Function: idxR],\n lcompare: [Function: lcompare],\n match: [Function: match],\n replace: [Function: replace],\n search: [Function: search],\n slice: [Function: slice],\n split: [Function: split],\n substr: [Function: substr],\n substring: [Function: substring],\n lcaseL: [Function: lcaseL],\n lcaseU: [Function: lcaseU],\n caseL: [Function: caseL],\n caseU: [Function: caseU],\n trim: [Function: trim],\n trimL: [Function: trimL],\n trimR: [Function: trimR],\n repeat: [Function: repeat] },\n Array:\n { concat: [Function: concat],\n every: [Function: every],\n filter: [Function: filter],\n each: [Function: each],\n idx: [Function: idx],\n join: [Function: join],\n idxR: [Function: idxR],\n map: [Function: map],\n pop: [Function: pop],\n push: [Function: push],\n reduce: [Function: reduce],\n reduceR: [Function: reduceR],\n reverse: [Function: reverse],\n shift: [Function: shift],\n slice: [Function: slice],\n some: [Function: some],\n sort: [Function: sort],\n splice: [Function: splice],\n unshift: [Function: unshift],\n pushall: [Function: pushall],\n flatten: [Function: flatten],\n zipwith: [Function: zipwith],\n unique: [Function: unique],\n zip: [Function: zip] },\n WrapMap: [Function: WrapMap],\n WeakMapSet: [Function: WeakMapSet],\n Reflectable:\n { VirtualHandler: [Function],\n defineProperty: [Function],\n delete: [Function],\n enumerate: [Function],\n freeze: [Function],\n get: [Function],\n getOwnPropertyDescriptor: [Function],\n getOwnPropertyNames: [Function],\n has: [Function],\n hasOwn: [Function],\n iterate: [Function],\n keys: [Function],\n new: [Function],\n preventExtensions: [Function],\n seal: [Function],\n set: [Function] },\n Traps:\n { getOwnPropertyDescriptor: [ \"target\", \"name\" ],\n getOwnPropertyNames: [ \"target\" ],\n defineProperty: [ \"target\", \"name\", \"descriptor\" ],\n preventExtensions: [ \"target\" ],\n freeze: [ \"target\" ],\n seal: [ \"target\" ],\n delete: [ \"target\", \"name\" ],\n hasOwn: [ \"target\", \"name\" ],\n has: [ \"target\", \"name\" ],\n get: [ \"target\", \"name\", \"receiver\" ],\n set: [ \"target\", \"name\", \"value\", \"receiver\" ],\n enumerate: [ \"target\" ],\n iterate: [ \"target\" ],\n keys: [ \"target\" ],\n apply: [ \"target\", \"receiver\", \"args\" ],\n new: [ \"target\", \"args\" ] } }\n\n\n\n\n\n# Partials - Using meta objects for partial function factories\n\n\n\n```javascript\n\nvar metaobjects = require('../lib')();\n var Factory = metaobjects.Partials;\n\n\n\nvar sliceFactory = Factory(Array.prototype.slice);\n\nsliceFactory.$this = Factory.$$$;\nconsole.log(sliceFactory+'')\n/* fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n//->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // [ 3 ]\n\n// `new` create a clone snapshot of the factory but they don't share state after\n\nvar factory2 = new sliceFactory\n\nfactory2.$this = Factory.$$$;\nfactory2.$0 = 1;\n\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\n\nvar someFnFactory = Factory(someFn);\nconsole.log(someFnFactory)\n// ->\n { [Function: someFn_factory]\n someArgs: null,\n itWillRead: null,\n andUse: null }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\nsomeFnFactory.itWillRead = Factory.___;\nsomeFnFactory.andUse = Factory.___\n\nconsole.log(someFnFactory)\n//->\n { [Function: someFn_factory]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\nconsole.log(someFnFactory+'')\n//->\n function someFn_factory(){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\nvar somePartial = someFnFactory();\n// copying it before we do anything to it\nvar copied = new somePartial;\n\nconsole.log(somePartial+'')\n//matchs above inner function ->\n function someFn_partial(itWillRead, andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\n\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial]\n someArgs: [Constructor: Array],\n itWillRead: ___,\n andUse: ___ }\n\n\nconsole.log(somePartial(Date, 1337));\n// [ \"yeah\", \"whatever\" ]\n\nconsole.log(somePartial)\n//->\n { [Function: someFn_partial],\n someArgs: [Constructor: Array],\n itWillRead: [Constructor: Date],\n andUse: 1337 }\n\n\n\n// still matches the pre-call values, no shared state\nconsole.log(copied)\n```\n\n\n\n\n\n\n# Direct Proxies API Shim for Node\n\nThis module contains a very minimal amount changes to the reference implementation of the\nnew Direct Proxies API that replaces the old Harmony Proxy proposal as of December 2011.\n\nThe reference source is available here and is, as of now, being updated frequently: [es-lab DirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/DirectProxies.js)\n\nThe reference test source is here: [es-lab testDirectProxies.js](http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/testDirectProxies.js)\n\nThe official documentation and API is here: [ES Wiki - Direct Proxies](http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies)\n\n\n# Changes from the reference source\n\nChanges have been made for two reasons. First, to be able to load it as a module as needed\nwith an optional context to load it onto. Second, to force returned descriptors to be\nconfigurable to prevent constant errors from being thrown. The new API added support for\nnon-configurable properties on Proxies but this isn't implemented in V8 yet and it causes\nthe new API to be completely unusable instead of mostly usable if you know what you're doing.\nA better way to handle these properties could probably be implemented but the goal for this\nwas the bare minimum changes to make it usable.\n\n\n# Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies')(global); // some context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target,name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n delete,\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n new }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract delete,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n new }\n```\n\n\n# Compatability\n\nNode 0.6.6 upgraded to V8 3.8 release candidate. The 3.7 branch introduced numerous important\nbug fixes to the Proxy and WeakMap implementations and is __required__ to make this work.\n\nIf you are using Node >0.6.6 and are still getting \"Illegal Access\" errors see this:\nhttps://github.com/joyent/node/pull/2109","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.2":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.2","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.1.0"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.2","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"6e30f4c33d749c46ddbac6ce9ac7eb2a4d6cfbd6","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.2.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of [Tom Van Cutsem](https://github.com/tvcutsem) in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one.\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n# Current Feature Set\n\nUpdated API. Now focusing specifically on Proxy related functionality rather than also having a lot of utilities. More docs to come.\n\n { createPartial: [Function: createPartial],\n createFunction: [Function: createFunction],\n createDispatcher: [Function: createDispatcher],\n WrapMap: [Constructor: WrapMap],\n WeakMapSet: [Constructor: WeakMapSet] }\n\n\n\n# Function.create\n\nNot possible to implemented without Proxies, meta-objects provides the `createFunction` function.\n\n createFunction([name, [onCall, [onConstruct]]]);\n\nAll arguments are optional. This function enables a few unique use-cases:\n\n* Rename existing function. Provide a name and a function and the return is a function that works exactly the same, but has a different `name`, which will faithfully be shown by consoles and other debuggers.\n\n var renamed = createFunction('someName', function(){ return arguments.callee.name });\n\n* Meld a call handler and a constructor into one. Provide two functions, one for calling and one for constructing, and they'll be represented by one single public entity, even in fn.prototype.constructor.\n\n```javascript\nfunction callHandler(){ console.log('called') }\nfunction Ctor(){ this.madeFrom = 'Ctor' }\nCtor.prototype.isWinning = true;\n\nvar myCrazyClass = createFunction('CrazyClass', callHandler, Ctor);\n\nconsole.log(myCrazyClass);\n // -->\n { [Constructor: CrazyClass]\n prototype: { isWinning: true } }\n\nmyCrazyClass();\n // --> 'called';\nnew myCrazyClass;\n // -->\n { madeFrom: 'Ctor',\n [__proto__]: { isWinning: true } };\n```\n\n* Clone a function to give it a new identity without changing it in any other way. Useful for things like WeakMaps (require unique identity) or adding properties without tainting the original.\n\n var newObjectDotCreate = createFunction(Object.create); //[Function: create]\n\n\n\n# Partials - Using meta objects for partial function factories\n\n```javascript\nvar meta = require('../lib')();\n\nvar createPartial = meta.createPartial;\nvar __ = createPartial.__;\nvar ____ = createPartial.____;\nvar $$$ = createPartial.$$$;\n\n\n\nvar sliceFactory = createPartial(Array.prototype.slice);\n\n/*\n fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n\nsliceFactory.$this = $$$;\nconsole.log(sliceFactory+'')\n // ->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // -> [ 3 ]\n\n// `new` creates a clone snapshot of the factory but they don't share state after\nvar factory2 = new sliceFactory;\nfactory2.$0 = 1;\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // -> [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\nèÓXù\nvar someFnFactory = createPartial(someFn);\nconsole.log(someFnFactory)\n // ->\n { [Function: someFn_factory]\n someArgs: __,\n itWillRead: __,\n andUse: __ }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.itWillRead = ____;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\n\nconsole.log(someFnFactory)\n // ->\n { [Function: someFn_factory]\n someArgs: Array,\n itWillRead: ____,\n andUse: __ }\n\nconsole.log(someFnFactory+'')\n // ->\n function someFn_factory(itWillRead){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\n\nvar somePartial = someFnFactory(Date);\n// copying it before we do anything to it\nvar copied = new somePartial;\n\n//matches the corrsponeding inner function above\nconsole.log(somePartial+'')\n // ->\n function someFn_partial(andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\nconsole.log(somePartial)\n // ->\n { [Function: someFn_partial]\n someArgs: Array,\n itWillRead: Date,\n andUse: __ }\n\n\nconsole.log(somePartial(1337));\n // ->\n //[ \"yeah\", \"whatever\" ]\n\n\nconsole.log(somePartial)\n/* identity is refreshed upon fulfillment, the final call isn't saved\n // ->\n { [Function: someFn_partial]\n someArgs: Array,\n itWillRead: Date,\n andUse: __ }\n\n```\n\n# Direct Proxies Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies').shim(); // a context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target, name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n deleteProperty, // name changed\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n construct }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract deleteProperty,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n construct }\n```\n\n\n# Compatability\n\nThe current stable Node.js branch, 0.6.x, uses a version of V8 with bugs that makes it incompatible with this shim. Node's master branch (0.7.x unstable) uses a new V8 which resolves the issue and is **required** to make this work.\n\nIf you are using Node 0.7.x and are still getting \"Illegal Access\" errors I have a pull request that solves this issue (along with greatly improving util.inspect) here https://github.com/joyent/node/pull/2360. It should be integrated into Node's master branch soon and hopefully will be available along with the fixed V8 implementation for Node 0.8.","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.3":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.3","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{"direct-proxies":"0.1.0"},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.3","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.7.0-pre","_defaultsLoaded":true,"dist":{"shasum":"06f8f9e72fd67f64513a167b71507cdfc8eb0245","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.3.tgz"},"readme":"# meta-objects\n\nThis repo is in flux now due to the new revision of the Proxy API approved at the end of november. Direct Proxies make most of the work previously in this repo very easy to do. The API is much easier to work with.\n\n# Basic Usage\n\nAt first only one function is exposed. This function bootstraps a few shims onto the context without which the rest wouldn't work. This function will return the actual module once you run it.\n\n var meta = require('meta-objects')();\n\n\n# Direct Proxy Shim for both Node and Spidermonkey/Firefox\n\nThanks to the hard work of [Tom Van Cutsem](https://github.com/tvcutsem) in both producing the API to begin with along with a shim to provide the functionality on top of existing Proxy functionality, we can start working with the API before browsers implement it. I've created a minimal wrapper around it for use as a node module. All of the work going forward will be based on this API rather than the old one.\n\nhttps://github.com/Benvie/Direct-Proxies-Shim-for-Node\n\n\n# Current Feature Set\n\nUpdated API. Now focusing specifically on Proxy related functionality rather than also having a lot of utilities. More docs to come.\n\n { createPartial: [Function: createPartial],\n createFunction: [Function: createFunction],\n createDispatcher: [Function: createDispatcher],\n WrapMap: [Constructor: WrapMap],\n WeakMapSet: [Constructor: WeakMapSet] }\n\n\n\n# Function.create\n\nNot possible to implemented without Proxies, meta-objects provides the `createFunction` function.\n\n createFunction([name, [onCall, [onConstruct]]]);\n\nAll arguments are optional. This function enables a few unique use-cases:\n\n* Rename existing function. Provide a name and a function and the return is a function that works exactly the same, but has a different `name`, which will faithfully be shown by consoles and other debuggers.\n\n var renamed = createFunction('someName', function(){ return arguments.callee.name });\n\n* Meld a call handler and a constructor into one. Provide two functions, one for calling and one for constructing, and they'll be represented by one single public entity, even in fn.prototype.constructor.\n\n```javascript\nfunction callHandler(){ console.log('called') }\nfunction Ctor(){ this.madeFrom = 'Ctor' }\nCtor.prototype.isWinning = true;\n\nvar myCrazyClass = createFunction('CrazyClass', callHandler, Ctor);\n\nconsole.log(myCrazyClass);\n // -->\n { [Constructor: CrazyClass]\n prototype: { isWinning: true } }\n\nmyCrazyClass();\n // --> 'called';\nnew myCrazyClass;\n // -->\n { madeFrom: 'Ctor',\n [__proto__]: { isWinning: true } };\n```\n\n* Clone a function to give it a new identity without changing it in any other way. Useful for things like WeakMaps (require unique identity) or adding properties without tainting the original.\n\n var newObjectDotCreate = createFunction(Object.create); //[Function: create]\n\n\n\n# Partials - Using meta objects for partial function factories\n\n```javascript\nvar meta = require('../lib')();\n\nvar createPartial = meta.createPartial;\nvar __ = createPartial.__;\nvar ____ = createPartial.____;\nvar $$$ = createPartial.$$$;\n\n\n\nvar sliceFactory = createPartial(Array.prototype.slice);\n\n/*\n fake sources generated by the factory for factory.toString()\n The source is not actually run and the actual internal operation\n runs differently than this code, but it achieves the same end result */\n\nsliceFactory.$this = $$$;\nconsole.log(sliceFactory+'')\n // ->\n function slice_factory($0){\n return (function slice_partial($1){\n return (function slice(){\n [native code]\n }).call($0 || $1 || this);\n });\n }\n\n\nvar slicepartial = sliceFactory();\nconsole.log(slicepartial([1, 2, 3], 2))\n // -> [ 3 ]\n\n// `new` creates a clone snapshot of the factory but they don't share state after\nvar factory2 = new sliceFactory;\nfactory2.$0 = 1;\nvar partial2 = factory2();\nconsole.log(partial2([1, 2, 3]))\n // -> [ 2, 3 ]\n\n\n\n\nfunction someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n}\n\nvar someFnFactory = createPartial(someFn);\nconsole.log(someFnFactory)\n // ->\n { [Function: someFn_factory]\n someArgs: __,\n itWillRead: __,\n andUse: __ }\n\nsomeFnFactory.someArgs = Array;\nsomeFnFactory.itWillRead = ____;\nsomeFnFactory.$this = { someProperty: \"yeah\" };\n\nconsole.log(someFnFactory)\n // ->\n { [Function: someFn_factory]\n someArgs: Array,\n itWillRead: ____,\n andUse: __ }\n\nconsole.log(someFnFactory+'')\n // ->\n function someFn_factory(itWillRead){\n var someArgs = this.someArgs;\n var $this = this.$this;\n return (function someFn_partial(andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n });\n }\n\n\n\nvar somePartial = someFnFactory(Date);\n// copying it before we do anything to it\nvar copied = new somePartial;\n\n//matches the corrsponeding inner function above\nconsole.log(somePartial+'')\n // ->\n function someFn_partial(andUse){\n return (function someFn(someArgs, itWillRead, andUse){\n if (typeof someArgs === 'function') {\n var val = someArgs(this.someProperty, \"whatever\");\n }\n return itWillRead() ? val : andUse;\n }).call($this, someArgs, itWillRead, andUse);\n }\n\nconsole.log(somePartial)\n // ->\n { [Function: someFn_partial]\n someArgs: Array,\n itWillRead: Date,\n andUse: __ }\n\n\nconsole.log(somePartial(1337));\n // ->\n //[ \"yeah\", \"whatever\" ]\n\n\nconsole.log(somePartial)\n/* identity is refreshed upon fulfillment, the final call isn't saved\n // ->\n { [Function: someFn_partial]\n someArgs: Array,\n itWillRead: Date,\n andUse: __ }\n\n```\n\n# Direct Proxies Usage\n\n```javascript\n// initialize on context\nrequire('direct-proxies').shim(); // a context, `global` is default\n\n\n// `Proxy` itself is now the creator for all proxies\nvar proxy = Proxy(target, handler);\n\n\n// all traps now have their first parameter as `target` referencing the real object\n{ getOwnPropertyDescriptor: function(target, name) }\n\n\n// new global `Reflect` contains default traps\nglobal.Reflect:\n { getOwnPropertyDescriptor, // non-own `getProperty[Names|Descriptor]` gone\n getOwnPropertyNames,\n defineProperty,\n deleteProperty, // name changed\n freeze, // freeze/seal/preventExtensions separated\n seal,\n preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n apply, // apply/new are now traps on the handler\n construct }\n\n\n// for virtualized objects you can use this for your handler.prototype\n// it implements some handlers but requires the others, like old fundamental traps\nglobal.Reflect.VirtualHandler.prototype\n abstract { getOwnPropertyDescriptor,\n abstract getOwnPropertyNames,\n abstract defineProperty,\n abstract deleteProperty,\n freeze,\n seal,\n abstract preventExtensions,\n has,\n hasOwn,\n get,\n set,\n enumerate,\n iterate,\n keys,\n abstract apply,\n construct }\n```\n\n\n# Compatability\n\nThe current stable Node.js branch, 0.6.x, uses a version of V8 with bugs that makes it incompatible with this shim. Node's master branch (0.7.x unstable) uses a new V8 which resolves the issue and is **required** to make this work.\n\nIf you are using Node 0.7.x and are still getting \"Illegal Access\" errors I have a pull request that solves this issue (along with greatly improving util.inspect) here https://github.com/joyent/node/pull/2360. It should be integrated into Node's master branch soon and hopefully will be available along with the fixed V8 implementation for Node 0.8.","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.4":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.4","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"356a3aa18f9159826be194f3e746ddd48cf11bf5","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.4.tgz"},"readme":"# meta-objects\n\nReworked for the third time. This time it's actually a bit more useful. Direct-Proxies have been replaced with a similar but much trimmed down meta handler called EasyProxy. The complexity and lack of compatability with Direct Proxies in current v\n\n# Compatability\n\nAll of the functionality should work in Node 0.7-0.8, Chrome 18-19, and Firefox 4-11. It is likely that the library at some point will stop working unless updated to reflect the coming changes to the Proxy API which are not compatible. This will likely happen sometime in the next few months but you can expect this library will be updated to reflect that.\n\nIn Node you must be running node using `node --harmony`. In Chrome you must run with the `Experimental JavaScript` flag on (go to URL \"about:flags\", near the bottom).","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.5":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.5","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"4d5e25163d22448b805386c7ec8f502d03351415","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.5.tgz"},"readme":"# meta-objects\n\nReworked for the third time. This time it's actually a bit more useful. Direct-Proxies have been replaced with a similar but much trimmed down meta handler called EasyProxy. The complexity and lack of compatability with Direct Proxies in current v\n\n# Compatability\n\nAll of the functionality should work in Node 0.7-0.8, Chrome 18-19, and Firefox 4-11. It is likely that the library at some point will stop working unless updated to reflect the coming changes to the Proxy API which are not compatible. This will likely happen sometime in the next few months but you can expect this library will be updated to reflect that.\n\nIn Node you must be running node using `node --harmony`. In Chrome you must run with the `Experimental JavaScript` flag on (go to URL \"about:flags\", near the bottom).","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.6":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.6","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"b1c39fc15c336e36c1a789922fbf8f63c96d257b","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.6.tgz"},"readme":"# meta-objects\n\nReworked for the third time. This time it's actually a bit more useful. Direct-Proxies have been replaced with a similar but much trimmed down meta handler called EasyProxy. The complexity and lack of compatability with Direct Proxies in current v\n\n# Compatability\n\nAll of the functionality should work in Node 0.7-0.8, Chrome 18-19, and Firefox 4-11. It is likely that the library at some point will stop working unless updated to reflect the coming changes to the Proxy API which are not compatible. This will likely happen sometime in the next few months but you can expect this library will be updated to reflect that.\n\nIn Node you must be running node using `node --harmony`. In Chrome you must run with the `Experimental JavaScript` flag on (go to URL \"about:flags\", near the bottom).","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.7":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.7","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"b7069c9b5e8707076bfc1963ca4faf026b737a3c","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.7.tgz"},"readme":"# meta-objects\n\nReworked for the third time. This time it's actually a bit more useful. Direct-Proxies have been replaced with a similar but much trimmed down meta handler called EasyProxy. The complexity and lack of compatability with Direct Proxies in current v\n\n# Compatability\n\nAll of the functionality should work in Node 0.7-0.8, Chrome 18-19, and Firefox 4-11. It is likely that the library at some point will stop working unless updated to reflect the coming changes to the Proxy API which are not compatible. This will likely happen sometime in the next few months but you can expect this library will be updated to reflect that.\n\nIn Node you must be running node using `node --harmony`. In Chrome you must run with the `Experimental JavaScript` flag on (go to URL \"about:flags\", near the bottom).","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.8":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.8","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.7","_defaultsLoaded":true,"dist":{"shasum":"7d6306412ed863d8ae98b73105cec85ea056ca3f","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.8.tgz"},"readme":"# meta-objects\n\nReworked for the third time. This time it's actually a bit more useful. Direct-Proxies have been replaced with a similar but much trimmed down meta handler called EasyProxy.\n\n# install\n\nIt can be used in browsers where Proxy is available or in node. For browsers you'll need to combine the files, but it's set up to be usable as is aside from that. For node:\n```\nnpm install meta-objects\n```\n\n# usage\nThis library has a combination of tools both for creating meta-objects handlers/APIs themselves, as well as some full ready-for-use ones. First up are ready to use tools:\n\n## Multiple Inheritance\nThe __multiInherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiInherit(constructors, parameterNames, [ctorName])__\n\n* __constructors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __parameterNames__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n`__multiInherit([Ctor1, Ctor2, Ctor3], ['name', 'size', 'etc', 'etc2'])`\n* __parameterNames__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n`__multiInherit([Ctor1, Ctor2, Ctor3], [[2,3,4], [1,2], [4,5,6]])`\n* __name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiInherit([Walks, Talks, Fondles], ['name', 'says', 'stride', 'desires']);\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## ObjectEmitter\nObjectEmitter takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast on the emitter. The clone object can be interacted with in any way as if it were the real object. What's more, any sub-object gotten from the clone will also be a clone that broadcasts to the emitter. Any object, whether from property access, or method invocation, or `new` will emit events through the single emitter.\n\n```javascript\nvar emitter = new ObjectEmitter(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect //instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all. \n```javascript\nvar proxied = proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys (fwd, target)\nnames (fwd, target)\nenumerate (fwd, target)\nfix (fwd, target)\nowns (fwd, target, prop)\nhas (fwd, target, prop)\ndelete (fwd, target, prop)\ndescribe (fwd, target, prop)\ndefine (fwd, target, prop, descriptor)\nget (fwd, target, prop, receiver)\nset (fwd, target, prop, value, receiver)\napply (fwd, target, args, receiver)\nconstruct (fwd, target, args)\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but as in browsers, it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance, the `this` binding will be the object you actually did `emitter.on` to, and the target will be the object responsible for emitting the event.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```\n\n\n# Compatability\n\nAll of the functionality should work in Node 0.7-0.8, Chrome 18-19, and Firefox 4-11. It is likely that the library at some point will stop working unless updated to reflect the coming changes to the Proxy API which are not compatible. This will likely happen sometime in the next few months but you can expect this library will be updated to reflect that.\n\nIn Node you must be running node using `node --harmony`. In Chrome you must run with the `Experimental JavaScript` flag on (go to URL \"about:flags\", near the bottom).","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.1.9":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.1.9","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.1.9","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"9b66038b9612b6832a9d0dc16d1c7ed3c5aa09d3","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.1.9.tgz"},"readme":"# meta-objects\n\nTools for making meta-objects.\n\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and muÛR´×ùltiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\nIt can be used in browsers where Proxy is available or in node. \n\n__Browser__\nThis library works in Firefox 4+ or Chrome 18+ with the `experimental javascript` flag enabled.\n```html\n\nconsole.log(meta)\n```\n__Node.js__\nThis library works with Node 0.7+ when run like so `node --harmony`.\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(constructors, parameterNames, [ctorName])__\n\n* __constructors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __parameterNames__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n`__multiherit([Ctor1, Ctor2, Ctor3], ['name', 'size', 'etc', 'etc2'])`\n* __parameterNames__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n`__multiherit([Ctor1, Ctor2, Ctor3], [[2,3,4], [1,2], [4,5,6]])`\n* __name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = meta.multiherit([Walks, Talks, Fondles], ['name', 'says', 'stride', 'desires']);\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but as in browsers, it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance, the `this` binding will be the object you actually did `emitter.on` to, and the target will be the object responsible for emitting the event.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.0":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.0","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"f7fb6288a639171512773e628b0147d152e55365","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.0.tgz"},"readme":"# meta-objects\n\nTools for making meta-objects.\n\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\nIt can be used in browsers where Proxy is available or in node. \n\n__Browser__\nThis library works in Firefox 4+ or Chrome 18+ with the `experimental javascript` flag enabled.\n```html\n\nconsole.log(meta)\n```\n__Node.js__\nThis library works with Node 0.7+ when run like so `node --harmony`.\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but as in browsers, it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance, the `this` binding will be the object you actually did `emitter.on` to, and the target will be the object responsible for emitting the event.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.1":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.1","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"c9a9e3b933b930b506ffc5d4e32a202c7294f388","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.1.tgz"},"readme":"# meta-objects\n\nTools for making meta-objects.\n\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\nIt can be used in browsers where Proxy is available or in node. \n\n__Browser__\nThis library works in Firefox 4+ or Chrome 18+ with the `experimental javascript` flag enabled.\n```html\n\nconsole.log(meta)\n```\n__Node.js__\nThis library works with Node 0.7+ when run like so `node --harmony`.\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but as in browsers, it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance, the `this` binding will be the object you actually did `emitter.on` to, and the target will be the object responsible for emitting the event.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.3":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.3","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"d02ae3119b2d2b57b13609d85109e774088b74d5","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.3.tgz"},"readme":"# Meta-Objects\n\nTools for making meta-objects.\n\n* __callable__ - Takes an object and returns a callable and constructable version of it, which use the __$$call__ and __$$construct__ properties on the object.\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to å^asùand providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\n__This library relies on features from the next version of ECMAScript and isn't going to work in most environments.__\n\n`WeakMap` and `Proxy` are required. This library works in:\n\n* Firefox 4+\n* Chrome 18+ with the `experimental javascript` flag enabled\n* Node 0.7+ when run like so `node --harmony`\n\n__Browser__\n```html\n\nconsole.log(meta)\n```\n\n__Node.js__\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Callable Objects\nA simple to use function that takes an object and returns a mirror of it that is callable and constructable. All changes to one reflect the other so they are in effect the same object, except the returned version is a function and they are not `===`.\n\n__callable(obj)__\n\n* __obj.$$call__ - If present, this function will be called when the callable object is in any manner. `obj()` or `obj.call(x, args...)`. `this` is bound to the object itself so using call, bind, or apply won't have any effect on `this`.\n* __obj.$$construct__ - If preset, this function will be called whenever the object is constructed using `new obj(...args)`. `this` will be a newly created object as if created using `Object.create(obj)` but it will also be callable and not just an object.\n\nIf `obj.$$call` is not present then the call will simply do nothing. If `obj.$$construct` is not present, then the newly created callable child of the object will be returned as is, so it's still useful for creating new instances without any constructor logic.\n\n`obj.$$call` and `obj.$$construct` are completely invisible properties but (currently) are still gettable and settable. It's likely this will be changed so there's some specific procedure for assessing these essentially private properties.\n\n\n```javascript\nvar obj = {\n y: 10,\n $$call: function(){\n return this.y++;\n }\n};\nvar cobj = callable(obj);\n\nconsole.log(obj);\n//-->\n { y: 10, $$call: [Function] }\n\nconsole.log(cobj);\n//-->\n { [Function] y: 10 }\n\ncobj();\nconsole.log(cobj);\n//-->\n { [Function] y: 11 }\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but in some cases it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance inheriting from it, the `this` binding will be the object you registered with using `emitter.on`, and the target will be the object responsible for emitting the event. This is similar to how most DOM frameworks work with event delegation and dispatching.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.5":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.5","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"dfc1aa58a24d829c1062c9ad10fa692db5165fd3","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.5.tgz"},"readme":"# Meta-Objects\n\nTools for making meta-objects.\n\n* __callable__ - Takes an object and returns a callable and constructable version of it, which use the __$$call__ and __$$construct__ properties on the object.\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\n__This library relies on features from the next version of ECMAScript and isn't going to work in most environments.__\n\n`WeakMap` and `Proxy` are required. This library works in:\n\n* Firefox 4+\n* Chrome 18+ with the `experimental javascript` flag enabled\n* Node 0.7+ when run like so `node --harmony`\n\n__Browser__\n```html\n\nconsole.log(meta)\n```\n\n__Node.js__\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Callable Objects\nA simple to use function that takes an object and returns a mirror of it that is callable and constructable. All changes to one reflect the other so they are in effect the same object, except the returned version is a function and they are not `===`.\n\n__callable(obj)__\n\n* __obj.$$call__ - If present, this function will be called when the callable object is in any manner. `obj()` or `obj.call(x, args...)`. `this` is bound to the object itself so using call, bind, or apply won't have any effect on `this`.\n* __obj.$$construct__ - If preset, this function will be called whenever the object is constructed using `new obj(...args)`. `this` will be a newly created object as if created using `Object.create(obj)` but it will also be callable and not just an object.\n\nIf `obj.$$call` is not present then the call will simply do nothing. If `obj.$$construct` is not present, then the newly created callable child of the object will be returned as is, so it's still useful for creating new instances without any constructor logic.\n\n`obj.$$call` and `obj.$$construct` are completely invisible properties but (currently) are still gettable and settable. It's likely this will be changed so there's some specific procedure for assessing these essentially private properties.\n\n\n```javascript\nvar obj = {\n y: 10,\n $$call: function(){\n return this.y++;\n }\n};\nvar cobj = callable(obj);\n\nconsole.log(obj);\n//-->\n { y: 10, $$call: [Function] }\n\nconsole.log(cobj);\n//-->\n { [Function] y: 10 }\n\ncobj();\nconsole.log(cobj);\n//-->\n { [Function] y: 11 }\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but in some cases it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance inheriting from it, the `this` binding will be the object you registered with using `emitter.on`, and the target will be the object responsible for emitting the event. This is similar to how most DOM frameworks work with event delegation and dispatching.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.6":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.6","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"d9d84beb651719ecf9d8856c575bc8066bde65d7","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.6.tgz"},"readme":"# Meta-Objects\n\nTools for making meta-objects.\n\n* __callable__ - Takes an object and returns a callable and constructable version of it, which use the __$$call__ and __$$construct__ properties on the object.\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\n__This library relies on features from the next version of ECMAScript and isn't going to work in most environments.__\n\n`WeakMap` and `Proxy` are required. This library works in:\n\n* Firefox 4+\n* Chrome 18+ with the `experimental javascript` flag enabled\n* Node 0.7+ when run like so `node --harmony`\n\n__Browser__\n```html\n\nconsole.log(meta)\n```\n\n__Node.js__\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Callable Objects\nA simple to use function that takes an object and returns a mirror of it that is callable and constructable. All changes to one reflect the other so they are in effect the same object, except the returned version is a function and they are not `===`.\n\n__callable(obj)__\n\n* __obj.$$call__ - If present, this function will be called when the callable object is in any manner. `obj()` or `obj.call(x, args...)`. `this` is bound to the object itself so using call, bind, or apply won't have any effect on `this`.\n* __obj.$$construct__ - If preset, this function will be called whenever the object is constructed using `new obj(...args)`. `this` will be a newly created object as if created using `Object.create(obj)` but it will also be callable and not just an object.\n\nIf `obj.$$call` is not present then the call will simply do nothing. If `obj.$$construct` is not present, then the newly created callable child of the object will be returned as is, so it's still useful for creating new instances without any constructor logic.\n\n`obj.$$call` and `obj.$$construct` are completely invisible properties but (currently) are still gettable and settable. It's likely this will be changed so there's some specific procedure for assessing these essentially private properties.\n\n\n```javascript\nvar obj = {\n y: 10,\n $$call: function(){\n return this.y++;\n }\n};\nvar cobj = callable(obj);\n\nconsole.log(obj);\n//-->\n { y: 10, $$call: [Function] }\n\nconsole.log(cobj);\n//-->\n { [Function] y: 10 }\n\ncobj();\nconsole.log(cobj);\n//-->\n { [Function] y: 11 }\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(targÑíùet, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but in some cases it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance inheriting from it, the `this` binding will be the object you registered with using `emitter.on`, and the target will be the object responsible for emitting the event. This is similar to how most DOM frameworks work with event delegation and dispatching.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]},"0.2.7":{"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"name":"meta-objects","description":"Utilities and patterns for using Harmony Proxies to meta-program. Proxies as Proxy handlers, catch all forwarders for catch all forwarders, intercession introspection. Now you're thinking with portals.","keywords":["harmony","proxy","meta","objects","membrane","ecmascript","functional","partial","weakmap","trace"],"version":"0.2.7","repository":{"url":"https://github.com/Benvie/meta-objects"},"main":"./index.js","engines":{"node":">=0.6.6"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"benvie","email":"brandon@bbenvie.com"},"_id":"meta-objects@0.2.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.7.8","_defaultsLoaded":true,"dist":{"shasum":"e7fa39d925ffa6cafd0ce38b1ca4feede31e0c6a","tarball":"http://registry.npmjs.org/meta-objects/-/meta-objects-0.2.7.tgz"},"readme":"# Meta-Objects\n\nTools for making meta-objects. These are broken down into two categories. One category is lower level tools that would be used for library authors, people making virtual objects, etc. The other is tools built on top of those, that are ready to use out of the box for easy usage.\n\n### Easy to use interfaces\n\n* __callable__ - Takes an object and returns a callable and constructable version of it, which use the __$$call__ and __$$construct__ properties on the object.\n* __multiherit__ - Creates a meta class from multiple constructors that combines all of them into one. Prototypal inheritance with multiple prototypes and multiple constructors.\n* __tracer__ - Creates a clone object from the provided object that emits __all__ things that happen to it. It's like databinding on crack.\n* __interceptor__ - Turns normal getters/setters on prototypes, get/set/length into indexed properties like buffers, and get/set/has/list into named properties like DOM css objects.\n\n* __proxy__ - Simplifies creation of ES6 proxies by handling everything you don't want to and providing ways to forward and subtly modify a target object.\n* __membrane__ - Accepts the same parameters that would be provided to __proxy__ but returns an object that will automatically wrap and unwrap all sub-objects gotten from property access, function calling, constructors, etc.\n* __deppelgangar__ - An object with mutatable persona. That is, it has a single JavaScript identity (used in `===` for example) but allows you to arbitrarily reassign what object it mirrors, at any time.\n\n\n* __WrapMap__ - Mostly internal use tool for wrapping/unwrapping objects, used by membranes.\n* __Emitter__ - A cross-between Node's emitters and the DOM event system. Used by tracer.\n\n\n# Install\n\n__This library relies on features from the next version of ECMAScript and isn't going to work in most environments.__\n\n`WeakMap` and `Proxy` are required. This library works in:\n\n* Firefox 4+\n* Chrome 18+ with the `experimental javascript` flag enabled\n* Node 0.7+ when run like so `node --harmony`\n\n__Browser__\n```html\n\nconsole.log(meta)\n```\n\n__Node.js__\n```\nnpm install meta-objects\n```\n```javascript\nvar meta = require('meta-objects');\nconsole.log(meta);\n```\n\n## Interceptors\nThe interceptor function turns an existing Constructor and its prototype into a more versatile interface, depending on what methods you provide on the prototype. For any properties that aren't intercepted by the below methods the properties will simply work like normal.\n\nAll of the below are created by just calling `meta.interceptor(Constructor)`. The interface bestowed on your prototype will base based on the methods available on it.\n\n* Interceptor - is the baseline. It simply uses any getter/setters on your prototype and shows instances as having them as own regular properties.\n* IndexedInterceptor - If your prootype has `length`, `get`, and (optionally) `set` functions then the interface will additionally show indexed properties as own normal properties, utilizing those functions to fulfill interaction with numbered properties. This allows you to implement objects with buffer type interfaces that previously would be done in C++.\n* NamedInterceptor - If you provide a `list` and `has` function instead of `length` (along with `get`/optional `set`) your class will be be upgraded to an interface that provides those properties as named own normal properties.\n\nYou will receive a new constructor with a new prototype that will denend on the originally provided ones in order to work, but any objects created will be instances of the new prototype and the new prototype will show have the new constructor as its constructor.\n\n\n## Doppelganger\n\nThe doppelganger is a simple interface. Calling `meta.doppelganger(callable?)` will return a function that changes the identity of your new doppelgagner instance, and also returns it. Whether an object is callable as a function is not mutable after creation, so you have to decide up front. A callable one will be `typeof === 'function'`.\n\n```javascript\nvar changeInto = meta.doppelganger();\n\n// the first call actually provides the object to you\nvar doppel = changeInto(document);\nconsole.log(doppel.location);\n\nchangeInto([1,2, 3]);\nconsole.log(doppel.length);\n\n## Callable Objects\nA simple to use function that takes an object and returns a mirror of it that is callable and constructable. All changes to one reflect the other so they are in effect the same object, except the returned version is a function and they are not `===`.\n\n__callable(obj)__\n\n* __obj.$$call__ - If present, this function will be called when the callable object is in any manner. `obj()` or `obj.call(x, args...)`. `this` is bound to the object itself so using call, bind, or apply won't have any effect on `this`.\n* __obj.$$construct__ - If preset, this function will be called whenever the object is constructed using `new obj(...args)`. `this` will be a newly created object as if created using `Object.create(obj)` but it will also be callable and not just an object.\n\nIf `obj.$$call` is not present then the call will simply do nothing. If `obj.$$construct` is not present, then the newly created callable child of the object will be returned as is, so it's still useful for creating new instances without any constructor logic.\n\n`obj.$$call` and `obj.$$construct` are completely invisible properties but (currently) are still gettable and settable. It's likely this will be changed so there's some specific procedure for assessing these essentially private properties.\n\n\n```javascript\nvar obj = {\n y: 10,\n $$call: function(){\n return this.y++;\n }\n};\nvar cobj = callable(obj);\n\nconsole.log(obj);\n//-->\n { y: 10, $$call: [Function] }\n\nconsole.log(cobj);\n//-->\n { [Function] y: 10 }\n\ncobj();\nconsole.log(cobj);\n//-->\n { [Function] y: 11 }\n```\n\n## Multiple Inheritance\nThe __multiherit__ function provided allows for simple creation of classes that inherit from multiple objects. That is, you provide a set of constructors (and implicitly the `.prototype` for each) and in return you receive a single constructor with a single prototype. The constructor invokes all of the provided constructors in the order provided. The prototype combines all of the properties of the prototypes, in preference to the order provided.\n\n__multiherit(options)__\n\n* __options.ctors__ is an array of constructors that will be composed. The `prototype` property will be used for determining the list of prototypes.\n* __options.params__(strings) is an array of names that will be used to map params given to the combined ctor to each of the individual ctors. The names are matched to the named parameters of each ctor.\n* __options.params__(number arrays) can be used instead to map the parameters by input order to the matching index ctor.\n* __options.name__ optionally sets a specific name for the resulting Ctor. If not provided it will be made from combining the names of the given ctors.\n* __options.onCall__ optionally make instances callable and provide the function to call when they are called\n* __options.onConstruct__ optionally make instances constructable and provide the constructor function\n\n```javascript\nfunction Talks(name, says){\n this.name = name;\n this.says = says;\n}\n\nTalks.prototype = {\n speak: function speak(at){\n at(this.name + ' says: ' + this.says);\n }\n};\n\nfunction Walks(name, stride){\n this.name = name;\n this.stride = stride;\n}\n\nWalks.prototype = {\n move: function move(where){\n var self = this;\n setTimeout(function(){\n where[self.name] = self;\n self.location = where;\n }, this.stride);\n }\n}\n\nfunction Fondles(desires){\n this.desires = desires;\n}\n\nFondles.prototype = {\n touch: function touch(who){\n this.felt = who[this.desires];\n }\n};\n\n// parameter names are used to map the combined ctor's parameters to the set of constructors\nvar WalksTalksFondles = multiherit({\n ctors: [Walks, Talks, Fondles],\n params: ['name', 'says', 'stride', 'desires']\n});\nconsole.log(WalksTalksFondles)\n//-->\n [Function: WalksTalksFondles]\n\n// the combined prototype can also have its own properties separate from any it inherits\nWalksTalksFondles.prototype.type = 'man';\n\n// the inheritance is dynamic, just like normal [[prototypes]]\nWalks.prototype.speed = 1000;\n\nconsole.log(WalksTalksFondles.prototype)\n//-->\n { type: 'man',\n move: [Function: move],\n speed: 1000,\n speak: [Function: speak],\n touch: [Function: touch] }\n\n\nvar bob = new WalksTalksFondles('bob', 'hey guys', 100, 'name');\nbob.touch(Object)\nbob.speak(console.log); //bob says: hey guys\nconsole.log(bob);\n//-->\n { name: 'bob',\n stride: 100,\n says: 'hey guys',\n desires: 'name',\n felt: 'Object' }\n\nconsole.log(bob.constructor)\n//-->\n [Function: WalksTalksFondles]\n\n```\n\n\n## Tracer Objects\nThe `tracer` function takes any object and produces an event emitter along with a clone of the object. All interactions with the cloned version will be broadcast from the emitter. The clone can be interacted with in any way as if it were the real object. Any sub-object gotten from the clone through property access, function calling, constructors, etc. will also be a clone that broadcasts to the emitter.\n\n```javascript\nvar emitter = meta.tracer(function Test(){ this.name = 'bob' }, 'Test');\nemitter.on('*', function(event){\n if (event.property) {\n console.log(event.type, event.path.join('.'), event.property);\n } else {\n console.log(event.type, event.path.join('.'));\n }\n});\n\nvar Test = emitter.Test;\nvar bob = new Test;\n\nconsole.log(bob);\n//-->\n construct Test\n get Test.[[0]] inspect // instances created via construct are indexed and displayed as [[#]]\n keys Test.[[0]]\n describe Test.[[0]] name\n { name: 'bob' }\n\nbob.stuff = { x: ['a',',b','c'] }\nconsole.log(bob.stuff.x[0]);\n\n//-->\n set Test.[[0]] stuff\n get Test.[[0]] stuff\n get Test.[[0]].stuff x\n get Test.[[0]].stuff.x 0\n a\n```\n\n\n## proxy\nA easier to use proxy that's closer to the new Proxy spec than the old one, but with some niceities to make proxy handler creation much simpler. When creating a proxy you provide the object to mirror and the handler. The default action is to forward all actions to the provided target, no traps need be implemented at all.\n```javascript\nvar proxied = meta.proxy(target, handler);\n```\n__Traps__\nSome traps have been renamed because I hate long names. Parameters have been reordered for convenience. The first parameter for all traps is `fwd`, a function that will forward the event to the target. It takes no arguments but has three properties which can be modified. `fwd` can be invoked multiple times, allowing you to, for example, mirror the action against two separate targets.\n\n* __fwd.target__ can be changed to forward the event to something else.\n* __fwd.args__ is an array with the arguments starting after target. For example, to change the property for traps against a specific property, you would do `fwd.args[0] = 'differentProperty'; fwd();`\n* __fwd.trap__ The string name of the trap. Changing this invokes a different forwarding action. For example, in the `keys` trap you could change it to `names` which would then show hidden properties instead of non-hidden ones.\n\n\n```javascript\nkeys [fwd, target]\nnames [fwd, target]\nenumerate [fwd, target]\nfix [fwd, target]\nowns [fwd, target, prop]\nhas [fwd, target, prop]\ndelete [fwd, target, prop]\ndescribe [fwd, target, prop]\ndefine [fwd, target, prop, descriptor]\nget [fwd, target, prop, receiver]\nset [fwd, target, prop, value, receiver]\napply [fwd, target, args, receiver]\nconstruct [fwd, target, args]\n```\n\n## membrane\nTakes a proxy handler designed for the above proxy handler api and makes it into a membrane that automatically wraps all outbound objects and unwraps all inbound objects. The handlers only see unwrapped normal objects so it's no more complicated than creating a normal proxy.\n\n## Emitter\nAn object that's cross between DOM events and Node's EventEmitter. Event objects are either used or created which include information about the current target and type of event. Handlers and meta information aren't stored on the emitter itself which allows for separation of the event process and an objects normal operation. An emitter can \"forward\" all event subscriptions from itself to another object such that doing `obj.on('event', callback)` subscribes to events emitted by `obj2`.\n\nThe `this` binding for all callbacks is the emitter of the event, and the first parameter is and `event` object which includes the target of the event. This is usually the same as the emitter, but in some cases it may be different. If events are forwarded to another object, or if you're listening to a prototype and getting __all__ events for every instance inheriting from it, the `this` binding will be the object you registered with using `emitter.on`, and the target will be the object responsible for emitting the event. This is similar to how most DOM frameworks work with event delegation and dispatching.\n\n## WrapMap\nA utility class for simplifying usage of creating wrapper/unwrappers that use WeakMaps. Simply provide a callback function that accepts an input unwrapped object and returns a wrapped version. The result is a `WrapMap` instance with the following functions\n\n* wrap - Wraps objects if they aren't already wrapped. Returns primitives and wrapped objects unmodified.\n* unwrap - Unwraps wrapped objects and returns primitives and unwrapped objects unmodified.\n* wrapDescriptor - Applies the wrapper to `obj.value`, `obj.set`, and `obj.set` but not the base object itself. Modifies the descriptor.\n* unwrapDescriptor - Unwraps `value`, `set`, and `get`. Modifies the descriptor.\n* remove - Unwrap object and remove from the map, returning the unwrapped object.\n* has - Boolean testing if a given object is wrapped.\n\n```javascript\nvar arrayer = new WrapMap(function(obj){\n return [];\n});\n\nvar test = arrayer.wrap(function test(){});\nconsole.log(test);\n//-->\n []\n\nconsole.log(arrayer.unwrap(test));\n//-->\n [Function: test];\n```","maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}]}},"maintainers":[{"name":"benvie","email":"brandon@bbenvie.com"}],"time":{"modified":"2012-05-18T15:19:35.637Z","created":"2011-11-15T22:58:25.141Z","0.0.1":"2011-11-15T22:58:26.418Z","0.0.7":"2011-12-21T11:57:41.738Z","0.0.8":"2011-12-21T12:19:19.785Z","0.0.9":"2011-12-24T22:58:31.768Z","0.1.0":"2011-12-25T22:12:35.832Z","0.1.2":"2011-12-26T08:00:46.073Z","0.1.3":"2011-12-26T08:08:47.008Z","0.1.4":"2012-04-13T23:17:43.279Z","0.1.5":"2012-04-14T02:02:08.229Z","0.1.6":"2012-04-14T02:03:55.251Z","0.1.7":"2012-04-15T01:37:05.279Z","0.1.8":"2012-04-15T13:28:44.779Z","0.1.9":"2012-04-22T21:25:18.240Z","0.2.0":"2012-04-22T23:24:02.932Z","0.2.1":"2012-04-22T23:40:14.218Z","0.2.3":"2012-05-14T19:21:32.891Z","0.2.5":"2012-05-17T06:29:57.554Z","0.2.6":"2012-05-17T21:01:26.496Z","0.2.7":"2012-05-18T15:19:35.637Z"},"author":{"name":"Brandon Benvie","email":"brandon@bbenvie.com","url":"http://bbenvie.com"},"repository":{"url":"https://github.com/Benvie/meta-objects"},"_id":"meta-objects","_rev":"1-d18b626f1659bc0e73beed89bf63316f"}ÿdocument-storeÿmemoryhogœ{"id":"memoryhog","rev":"1-40f08910570be423995667d144e4ab0b","rev_tree":[{"pos":1,"ids":["40f08910570be423995667d144e4ab0b",{"status":"available"},[]]}],"rev_map":{"1-40f08910570be423995667d144e4ab0b":3702},"winningRev":"1-40f08910570be423995667d144e4ab0b","deleted":false,"seq":3702}ÿby-sequenceÿ0000000000003702í{"name":"memoryhog","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":"","name":"memoryhog","version":"0.0.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"bradleymeck","email":"bradley.meck@gmail.com"},"_id":"memoryhog@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d57799daa0d6f66b2295b73eda4447255887c072","tarball":"http://registry.npmjs.org/memoryhog/-/memoryhog-0.0.0.tgz"},"readme":"","maintainers":[{"name":"bradleymeck","email":"bradley.meck@gmail.com"}]}},"readme":"","maintainers":[{"name":"bradleymeck","email":"bradley.meck@gmail.com"}],"time":{"modified":"2012-07-01T00:33:47.238Z","created":"2012-07-01T00:33:46.386Z","0.0.0":"2012-07-01T00:33:47.238Z"},"_id":"memoryhog","_rev":"1-40f08910570be423995667d144e4ab0b"}ÿdocument-storeÿmemo-isš{"id":"memo-is","rev":"1-6bd9c65e50cc64a560cbcf43fbd3e72f","rev_tree":[{"pos":1,"ids":["6bd9c65e50cc64a560cbcf43fbd3e72f",{"status":"available"},[]]}],"rev_map":{"1-6bd9c65e50cc64a560cbcf43fbd3e72f":3701},"winningRev":"1-6bd9c65e50cc64a560cbcf43fbd3e72f","deleted":false,"seq":3701}ÿby-sequenceÿ0000000000003701ßP{"name":"memo-is","description":"Memoization for Mocha/Jasmine specs (like RSpec's #let)","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"memo-is","version":"0.0.1","homepage":"https://github.com/d11wtq/memo-is","description":"Memoization for Mocha/Jasmine specs (like RSpec's #let)","author":{"name":"Chris Corbyn","email":"chris@w3style.co.uk"},"maintainers":[{"name":"d11wtq","email":"chris@w3style.co.uk"}],"repository":{"type":"git","url":"git://github.com/d11wtq/node-memo-is.git"},"files":["lib","README.md","LICENSE"],"devDependencies":{"mocha":""},"scripts":{},"keywords":["spec","mocha","jasmine","memoize"],"main":"./lib/memo-is","license":"MIT","readme":"# Memoization, like RSpec let for Node.js & Mocha/Jasmine\n\nmemo-is provides a memoization system with the same semantics as `#let` in\nRSpec for Ruby. It allows you to provide a function that should be memoized\nfor the duration of a spec example and reset between examples. It also\nsupports nested overriding, as expected.\n\nIt will work with Jasmine and Mocha out of the box, since it only needs to\nhook into `beforeEach()` and `afterEach()` hooks to work. It may work with\nother testing frameworks (e.g. vows) if you can provide implementations of\n`beforeEach()` and `afterEach()` to do the correct thing.\n\n## Installation\n\nThis should work just fine in a browser, if you include the lib/memo-is.js\nfile via a `\n\nthen:\n\n\tvar t = window.typist;\n\n\t// -> 'number'\n\tt.typeOf(1234);\n\nor as a node package:\n\n\tnpm install typist\n\nthen:\n\n\tvar t = require('typist');\n\n\t// -> 'boolean'\n\tt.typeOf(true);\n\n\n## api\n\n`typeOf(item)`\n\n\tReturns the primitive type of item. \n\tIf item is not a 'string', 'number', 'boolean', 'array', or 'function', return 'object'.\n\n`isString(item)`\n\n\tReturn true if the item is a string.\n\n`isNumber(item)` \n\n\tReturn true if the item is a number.\n\n`isBoolean(item)` \n\n\tReturn true if the item is a boolean.\n\n`isArray(item)` \n\n\tReturn true if the item is an array.\n\n`isFunction(item)`\n\n\tReturn true if the item is a function.\n\n`isObject(item)`\n\n\tReturn true if the item is an object. \n\t`isObject` will return false if the item is another primitive type.\n\n`buildIsType(type, constructor)` \n\n\tTo build an 'isType' function for any type, use buildIsType.\n\tWe can build one for typed arrays of 8 bit signed integers.\n\n\tvar isInt8Array = buildIsType('Int8Array', Int8Array);\n\n\tThe first argument is the name of the type as a string.\n\tIt is used to build to string returned by the call to\n\n\tObject.prototype.toString.call(item);\n\n\tThe case of the type string is corrected automatically.\n\n\t'Int8Array' becomes '[object Int8Array]'\n\t'int8Array' becomes '[object Int8Array]'\n\n\tThe second argument is the constructor function of the type.\n\n\tAs another example, we can construct any of the primitive type\n\tidentifying functions.\n\n\tvar isNumber = buildIsType('number', Number);\n\tvar isArray = buildIsType('array', Array);\n\t \n\tThese constructed versions are less efficient than the ones provided\n\tbelow since the type operator will never succeed (the types you construct \n\twill assume that `typeof yourObj` returns 'object').\n\t \n## tests\n\nExecute `npm test` to run typist's unit tests.\n\n","maintainers":[{"name":"benbscholz","email":"bbscholz@gmail.com"}],"time":{"modified":"2012-07-02T01:44:59.166Z","created":"2012-07-02T01:44:57.660Z","0.1.0":"2012-07-02T01:44:59.166Z"},"author":{"name":"Ben Scholz","email":"bbscholz@gmail.com"},"repository":{"type":"git","url":"git://github.com/benbscholz/typist.git"},"_id":"typist","_rev":"1-e40428fb4fc7b6046e328512693a52fd"}ÿdocument-storeÿtwitter_botž{"id":"twitter_bot","rev":"1-654be8b2d1816c87dd92b3005c1df614","rev_tree":[{"pos":1,"ids":["654be8b2d1816c87dd92b3005c1df614",{"status":"available"},[]]}],"rev_map":{"1-654be8b2d1816c87dd92b3005c1df614":3989},"winningRev":"1-654be8b2d1816c87dd92b3005c1df614","deleted":false,"seq":3989}ÿby-sequenceÿ0000000000003989ï){"name":"twitter_bot","description":"Twitter Bot is parent class for your twitter project that needs to iterate followers eternally (see @listwatcher and @unfollowr)","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"twitter_bot","version":"0.1.0","description":"Twitter Bot is parent class for your twitter project that needs to iterate followers eternally (see @listwatcher and @unfollowr)","main":"index.js","repository":{"type":"git","url":"git://github.com/bobrik/twitter_bot.git"},"dependencies":{"ntwitter":">=0.4.0"},"keywords":["twitter","bot","robot","listwatcher","unfollowr","followers","social"],"author":{"name":"Ian Babrou","email":"ibobrik@gmail.com"},"license":"BSD","readme":"# Twitter Bot - skeleton for twitter robots\n\nIf you need to create twitter bot that will eternally iterate over own followers - this is what you need.\n\n## Installation\n\nInstall it from npm:\n\n```\nnpm install twitter_bot\n```\n\n## Usage\n\n1. Register twitter account for your bot.\n2. Register twitter application for your bot.\n3. Get access tokens for your application from your bot's account.\n4. Write some code\n ```javascript\n var util = require(\"util\"),\n TwitterBot = require(\"twitter_bot\"),\n bot;\n\n // overwrite constructor\n function MyBot(config) {\n TwitterBot.call(this)\n // make something cool in constructor\n this.isCool = true;\n };\n\n util.inherits(MyBot, TwitterBot);\n\n // main function that you must implement\n MyBot.prototype.process = function(id, callback) {\n console.log(\"Processing user with id=\" + id);\n setTimeout(callback, 1000);\n }\n\n // create instance of your bot\n bot = new MyBot({\n consumer_key : \"\",\n consumer_secret : \"\",\n access_token_key : \"\",\n access_token_secret : \"\",\n concurrency : 10 // concurrency level, 10 is default\n });\n\n\n // start processing your followers\n bot.start();\n\n // after 10 seconds stop iterating new followers,\n // but finish processing current ones\n setTimeout(bot.stop.bind(bot), 10000);\n\n // this is it.\n ```\n5. Promote yourself.\n\n## Projects\n\nThis project came from [@listwatcher](https://twitter.com/listwatcher) ([sources](https://github.com/bobrik/ListWatcher))\ncode and is used in [@unfollowr](https://twitter.com/unfollowr) twitter project to manage more than 200K followers.\n\n## Authors\n\n* [Ian Babrou](https://github.com/bobrik)\n","_id":"twitter_bot@0.1.0","dist":{"shasum":"09d1ba96f45925edd40a7f5ea5a6692ff3eea175","tarball":"http://registry.npmjs.org/twitter_bot/-/twitter_bot-0.1.0.tgz"},"maintainers":[{"name":"bobrik","email":"ibobrik@gmail.com"}]}},"readme":"# Twitter Bot - skeleton for twitter robots\n\nIf you need to create twitter bot that will eternally iterate over own followers - this is what you need.\n\n## Installation\n\nInstall it from npm:\n\n```\nnpm install twitter_bot\n```\n\n## Usage\n\n1. Register twitter account for your bot.\n2. Register twitter application for your bot.\n3. Get access tokens for your application from your bot's account.\n4. Write some code\n ```javascript\n var util = require(\"util\"),\n TwitterBot = require(\"twitter_bot\"),\n bot;\n\n // overwrite constructor\n function MyBot(config) {\n TwitterBot.call(this)\n // make something cool in constructor\n this.isCool = true;\n };\n\n util.inherits(MyBot, TwitterBot);\n\n // main function that you must implement\n MyBot.prototype.process = function(id, callback) {\n console.log(\"Processing user with id=\" + id);\n setTimeout(callback, 1000);\n }\n\n // create instance of your bot\n bot = new MyBot({\n consumer_key : \"\",\n consumer_secret : \"\",\n access_token_key : \"\",\n access_token_secret : \"\",\n concurrency : 10 // concurrency level, 10 is default\n });\n\n\n // start processing your followers\n bot.start();\n\n // after 10 seconds stop iterating new followers,\n // but finish processing current ones\n setTimeout(bot.stop.bind(bot), 10000);\n\n // this is it.\n ```\n5. Promote yourself.\n\n## Projects\n\nThis project came from [@listwatcher](https://twitter.com/listwatcher) ([sources](https://github.com/bobrik/ListWatcher))\ncode and is used in [@unfollowr](https://twitter.com/unfollowr) twitter project to manage more than 200K followers.\n\n## Authors\n\n* [Ian Babrou](https://github.com/bobrik)\n","maintainers":[{"name":"bobrik","email":"ibobrik@gmail.com"}],"time":{"modified":"2012-07-17T16:47:09.269Z","created":"2012-07-17T16:47:07.161Z","0.1.0":"2012-07-17T16:47:09.269Z"},"author":{"name":"Ian Babrou","email":"ibobrik@gmail.com"},"repository":{"type":"git","url":"git://github.com/bobrik/twitter_bot.git"},"_id":"twitter_bot","_rev":"1-654be8b2d1816c87dd92b3005c1df614"}ÿdocument-storeÿtwitter-zordŸ{"id":"twitter-zord","rev":"1-6c275315aeebc42e4d48657cfcb67f1d","rev_tree":[{"pos":1,"ids":["6c275315aeebc42e4d48657cfcb67f1d",{"status":"available"},[]]}],"rev_map":{"1-6c275315aeebc42e4d48657cfcb67f1d":3988},"winningRev":"1-6c275315aeebc42e4d48657cfcb67f1d","deleted":false,"seq":3988}ÿby-sequenceÿ0000000000003988½ {"name":"twitter-zord","description":"Twitter API Wrapper for node.js","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Brendan O'Brien","email":"brendanobrienesq@gmail.com","url":"partoftheprocess.ca"},"name":"twitter-zord","description":"Twitter API Wrapper for node.js","version":"0.0.0","repository":{"type":"git","url":"git://github.com/brendanobrienesq/twitter-zord.git"},"engines":{"node":"~0.6.7"},"dependencies":{"request":"2.9.203"},"devDependencies":{},"_npmUser":{"name":"brendanobrienesq","email":"brendanobrienesq@gmail.com"},"_id":"twitter-zord@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"4435a6e017a76250ce4d4d6d675552fa5be9d98a","tarball":"http://registry.npmjs.org/twitter-zord/-/twitter-zord-0.0.0.tgz"},"maintainers":[{"name":"brendanobrienesq","email":"brendanobrienesq@gmail.com"}]}},"readme":"twitter-zord\n============\n\ntwitter api wrapper module for node.js","maintainers":[{"name":"brendanobrienesq","email":"brendanobrienesq@gmail.com"}],"time":{"modified":"2012-08-02T13:43:35.670Z","created":"2012-08-01T13:11:46.385Z","0.0.0":"2012-08-01T13:11:46.616Z"},"author":{"name":"Brendan O'Brien","email":"brendanobrienesq@gmail.com","url":"partoftheprocess.ca"},"repository":{"type":"git","url":"git://github.com/brendanobrienesq/twitter-zord.git"},"users":{"fgribreau":true},"_id":"twitter-zord","_rev":"1-6c275315aeebc42e4d48657cfcb67f1d"}ÿdocument-storeÿttys—{"id":"ttys","rev":"1-32a4fe77eb4f4752919cc5aa78d6aaff","rev_tree":[{"pos":1,"ids":["32a4fe77eb4f4752919cc5aa78d6aaff",{"status":"available"},[]]}],"rev_map":{"1-32a4fe77eb4f4752919cc5aa78d6aaff":3987},"winningRev":"1-32a4fe77eb4f4752919cc5aa78d6aaff","deleted":false,"seq":3987}ÿby-sequenceÿ0000000000003987ò/{"name":"ttys","description":"Guaranteed read and write streams to the terminal","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"ttys","description":"Guaranteed read and write streams to the terminal","keywords":["tty","stdin","stdout","/dev/tty"],"version":"0.0.1","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net","url":"http://tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/ttys.git"},"main":"./index.js","scripts":{"test":"node test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"tootallnate","email":"nathan@tootallnate.net"},"_id":"ttys@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"fdd81d22b24fd73b29b3022a6d23863c05d751de","tarball":"http://registry.npmjs.org/ttys/-/ttys-0.0.1.tgz"},"maintainers":[{"name":"tootallnate","email":"nathan@tootallnate.net"}]},"0.0.2":{"name":"ttys","description":"Guaranteed read and write streams to the terminal","keywords":["tty","stdin","stdout","/dev/tty"],"version":"0.0.2","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net","url":"http://tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/ttys.git"},"main":"./index.js","scripts":{"test":"node test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"tootallnate","email":"nathan@tootallnate.net"},"_id":"ttys@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"6e801a9f8ed5d373f13bd1406b8f4708be7d06df","tarball":"http://registry.npmjs.org/ttys/-/ttys-0.0.2.tgz"},"maintainers":[{"name":"tootallnate","email":"nathan@tootallnate.net"}]},"0.0.3":{"name":"ttys","description":"Guaranteed read and write streams to the terminal","keywords":["tty","stdin","stdout","/dev/tty"],"version":"0.0.3","author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net","url":"http://tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/ttys.git"},"main":"./index.js","scripts":{"test":"node test"},"engines":{"node":">= 0.6.0"},"_npmUser":{"name":"tootallnate","email":"nathan@tootallnate.net"},"_id":"ttys@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.11","_defaultsLoaded":true,"dist":{"shasum":"15bacde7831020de5f2f28f01b1732ef03651f4d","tarball":"http://registry.npmjs.org/ttys/-/ttys-0.0.3.tgz"},"maintainers":[{"name":"tootallnate","email":"nathan@tootallnate.net"}]}},"readme":"ttys\n====\n### Guaranteed read and write streams to the terminal\n\n\nThis micro module provides `tty.ReadStream` and `tty.WriteStream` instances to the\nuser's terminal, even when the regular `stdin` or `stdout` streams are already\nbeing piped to other commands.\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install ttys\n```\n\n\nThe setup\n---------\n\nSuppose you want to provide a `curl | node` command to your users.\n\nThe script could be something as simple as printing \"Hello World\" and exiting.\n\n``` js\n// script.js\nconsole.log('Hello World')\n```\n\nPlace that on your websever and have your users invoke the command:\n\n``` bash\n$ curl aweso.me/script.js | node\nHello World\n```\n\nAwesome!!!\n\nThe problem\n-----------\n\nNow suppose that you wanted to alter `script.js` to prompt the user for their\nname, so that you can personalize it a little bit.\n\nThe problem is that `process.stdin` is used up because it gets piped from the curl\ncommand, and ends before node runs the script. If you try to call\n`process.stdin.resume()` and listen for \"data\" and \"end\" events, you will see that\nthe \"end\" event will be fired immediately.\n\n\n\nThe solution\n------------\n\nUsing `ttys`, you can get guaranteed access to a `stdin` readable stream and\n`stdout` writable stream. It's easy!\n\n``` js\nvar ttys = require('ttys')\nvar readline = require('readline')\n\nvar i = readline.createInterface(ttys.stdin, ttys.stdout)\ni.question('What is your name? ', function (name) {\n console.log('Hello %s', name)\n\n i.close()\n ttys.stdin.pause()\n})\n```\n\nNow when your users run the script, then they will be prompted as you would\nexpect:\n\n``` bash\n$ curl aweso.me/script.js | node\nWhat is your name? Nathan\nHello Nathan\n```\n\nThat's it!\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"tootallnate","email":"nathan@tootallnate.net"}],"time":{"modified":"2012-06-19T21:30:03.343Z","created":"2012-06-16T04:29:13.670Z","0.0.1":"2012-06-16T04:29:14.975Z","0.0.2":"2012-06-16T04:32:26.557Z","0.0.3":"2012-06-19T21:30:03.343Z"},"author":{"name":"Nathan Rajlich","email":"nathan@tootallnate.net","url":"http://tootallnate.net"},"repository":{"type":"git","url":"git://github.com/TooTallNate/ttys.git"},"_id":"ttys","_rev":"1-32a4fe77eb4f4752919cc5aa78d6aaff"}ÿdocument-storeÿtts–{"id":"tts","rev":"1-09ee75460051fb772f7d7fdeaa8adc97","rev_tree":[{"pos":1,"ids":["09ee75460051fb772f7d7fdeaa8adc97",{"status":"available"},[]]}],"rev_map":{"1-09ee75460051fb772f7d7fdeaa8adc97":3986},"winningRev":"1-09ee75460051fb772f7d7fdeaa8adc97","deleted":false,"seq":3986}ÿby-sequenceÿ0000000000003986” {"name":"tts","description":"TTS (Text To Speech) using 'say' for OS X (Darwin). More supported platforms in the future","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"tts","description":"TTS (Text To Speech) using 'say' for OS X (Darwin). More supported platforms in the future","version":"0.1.0","author":{"name":"Patric Nordmark"},"repository":{"type":"git","url":"http://github.com/I-ARE-RIO/node-tts.git"},"engine":["node >=0.1.90"],"main":"tts","readme":"node-tts\n========\n\nTTS (Text To Speech) using 'say' for OS X (Darwin). More supported platforms in the future","_id":"tts@0.1.0","dist":{"shasum":"10685054dac7775e97d2271a7e7d1eca4bb1f6c0","tarball":"http://registry.npmjs.org/tts/-/tts-0.1.0.tgz"},"maintainers":[{"name":"rio","email":"patric.nordmark@gmail.com"}]}},"readme":"node-tts\n========\n\nTTS (Text To Speech) using 'say' for OS X (Darwin). More supported platforms in the future","maintainers":[{"name":"rio","email":"patric.nordmark@gmail.com"}],"time":{"modified":"2012-08-02T13:43:34.385Z","created":"2012-08-01T16:44:23.812Z","0.1.0":"2012-08-01T16:44:25.602Z"},"author":{"name":"Patric Nordmark"},"repository":{"type":"git","url":"http://github.com/I-ARE-RIO/node-tts.git"},"users":{"fgribreau":true},"_id":"tts","_rev":"1-09ee75460051fb772f7d7fdeaa8adc97"}ÿdocument-storeÿtopple™{"id":"topple","rev":"1-c9bf33eb2a401bc8d687f6327e602f6f","rev_tree":[{"pos":1,"ids":["c9bf33eb2a401bc8d687f6327e602f6f",{"status":"available"},[]]}],"rev_map":{"1-c9bf33eb2a401bc8d687f6327e602f6f":3985},"winningRev":"1-c9bf33eb2a401bc8d687f6327e602f6f","deleted":false,"seq":3985}ÿby-sequenceÿ0000000000003985í!{"name":"topple","description":"A toolkit for rate-limiting nodejs processes","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Ryan Ballantyne","url":"http://ryanballantyne.name"},"name":"topple","description":"A toolkit for rate-limiting nodejs processes","version":"0.0.1","homepage":"https://github.com/idottv/Topple","repository":{"type":"git","url":"git://github.com/idottv/Topple.git"},"main":"lib/topple.coffee","dependencies":{"coffee-script":"1.3.1","fjs":"0.4.x"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">= 0.6.x < 0.9"},"_npmUser":{"name":"RyanBallantyne","email":"publico@ryanballantyne.name"},"_id":"topple@0.0.1","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"60782adf2fd2d417dce8b6a00f3666dd4189f2ee","tarball":"http://registry.npmjs.org/topple/-/topple-0.0.1.tgz"},"maintainers":[{"name":"RyanBallantyne","email":"publico@ryanballantyne.name"}]}},"readme":"Topple\n======\n\nToolkit for rate-limiting nodejs processes that make so many asynchronous requests so fast that node runs out of memory. This frequently happens when you're using Node for things that don't really need to be async, and thus should have been written in a synchronous environment. Why would anyone do this? Two reasons: first, the adage about hammers and nails. Second, the desire to keep your technology stack as homogenous as possible.\n\nWhat's with the name?\n---------------------\nVisualize the pending nodejs asynchrounous calls queue like a physical stack that you pile calls onto. If the pile gets to high, it topples. There's a natural limit to how high that pile can grow (in this case, the memory limit is reached). Letting the stack topple naturally can be catastrophic: your program crashes. Topple will let you set an artificial upper bound on the height of the pile, and will topple it gracefully when that limit is hit.\n\nHow does it work?\n-----------------\nThere are two operations that Topple has to know about: firing asynchronous functions that you want rate-limited, and when those functions get resolved (i.e., their callback fires). So, you let Topple take care of those operations, like so (coffeescript example):\n \n Topple = require 'topple'\n topple = new Topple 1000, 0, 100 # ceiling, floor, polling frequency (delay between polls, in ms)\n # all but the first of these is optional. Default values shown.\n # The polling frequency specifies the how often Topple should check to resume processing after toppling\n \n # topple.limitedCallback wraps the given function with code for managing the rate limiting mechanism. The result can be used\n # exactly like the given function would be.\n myAsyncFunctionCallback = topple.limitedCallback (arg1, arg2) ->\n doSpiffyStuff()\n \n # topple.dispatch calls an asynchrounous function, blocking if the stack is full\n # callback - will be called when the stack is empty and we are ready to resume processing.\n If the stack is under the limit, callback is called immediately\n # context - the context (value of 'this') to give to the function. May be null if you don't care.\n # asyncFunction - the function to call\n # arg list - pass the function's arguments here. Not a single parameter; pass them just as you would pass them to the function.\n topple.dispatch callback, context, asyncFunction, argList\n \nEvents\n------\nTopple extends eventEmitter and emits the following events:\n\n 1. stackFull - emitted when we topple the stack\n 2. stackEmpty - emitted when the backlog of asynchrounous functions has cleared (as in, the stack count <= the floor)\n \nThese events allow you to do special processing (like, for example, pausing and resuming a stream) when the stack topples and when it bottoms out.\n","maintainers":[{"name":"RyanBallantyne","email":"publico@ryanballantyne.name"}],"time":{"modified":"2012-07-02T22:01:23.141Z","created":"2012-07-02T22:01:21.910Z","0.0.1":"2012-07-02T22:01:23.141Z"},"author":{"name":"Ryan Ballantyne","url":"http://ryanballantyne.name"},"repository":{"type":"git","url":"git://github.com/idottv/Topple.git"},"_id":"topple","_rev":"1-c9bf33eb2a401bc8d687f6327e602f6f"}ÿdocument-storeÿthe_time.jsž{"id":"the_time.js","rev":"1-05dccfc74168082ecd7c9ca0cc061bde","rev_tree":[{"pos":1,"ids":["05dccfc74168082ecd7c9ca0cc061bde",{"status":"available"},[]]}],"rev_map":{"1-05dccfc74168082ecd7c9ca0cc061bde":3984},"winningRev":"1-05dccfc74168082ecd7c9ca0cc061bde","deleted":false,"seq":3984}ÿby-sequenceÿ0000000000003984Ò¡{"name":"the_time.js","description":"Awesome JS Date wrapper for Node.js and Browser JS","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"the_time.js","version":"1.0.0","description":"Awesome JS Date wrapper for Node.js and Browser JS","main":"./js/the_time.js","dependencies":{},"devDependencies":{"coffee-script":"~1.3.3"},"scripts":{"test":"Moment.o_mori"},"repository":{"type":"git","url":"git://github.com/the-teacher/TheTime.js.git"},"keywords":["Date Wrapper","Wrapper","Calendar","Date Comparison","Time Comparison"],"author":{"name":"Ilya N. Zykin","url":"the-teacher"},"license":"MIT","readme":"## TheTime.js\n\nDate object wrapper for Node.js and Browser JS\n\nMakes work with JS Date object easier and more humane\n\n[Download TheTime.js](https://raw.github.com/the-teacher/TheTime.js/master/js/the_time.js)\n\n## Keywords\n\nJavaScript Date wrapper, JavaScript Date Object, JavaScript Date and Time Functions, JavaScript Date Comparison\n\n## Use with Node.js\n\n```javascript\n\nrequire('/path/to/the_time.js');\n\nconsole.log(Moment.o_mori)\n\n```\n\n## Use with Browser\n\n```html\n\n\n\n\n```\n\n```javascript\nconsole.log(Moment.o_mori)\n```\n\n## Description\n\n**Easy way define Date object with Wrapper**\n\n- with Array of numbers\n- with Hash of numbers\n- with String\n\n**Easy way to convert Date to Wrapper and Wrapper to Date**\n\n- **(new Date).to_m()** and **(new Moment).date**\n\n**Months**\n\n- **stop** working with months with **machine style** - from 0 to 11\n- **start** working with months with **human style** - from 1 to 12\n- forget about Month +1/-1 correction for Date object\n\n**DaysÛÛ› ù**\n\n- **stop** working with day number with **machine style** - from 0 to 6\n- **start** working with day number with **human style** - from 1 to 7\n- **SORRY, but it using Russian meaning of days numbers (1 - Monday, 7 - Sunday)**\n\n**Unix time**\n\n- to forget about Unix time seconds *1000 and /1000 correction (because it is not secs, but ms)\n\n**Calendar function**\n\n- I want to have some functions for ease calendar building\n\n**Easy way to access to date variables**\n\n- usable setters and getters (with Ruby style)\n\n**Easy shift of date**\n\n- usable shift methods\n\n**Easy way to get difference of dates, and date comparison**\n\n- usable difference method and set of comparison methods\n\n**Easy way to create Localization for any Langs**\n\n- En and Ru in preset\n\n**And more...**\n\n## Moment API\n\n**Moment object initialization**\n\nDate to Moment convertion\n\n```javascript\ndate = new Date\nM = date.to_m()\n\nM.date => current Date\n```\n\n**new Moment**\n\n```javascript\nM = new Moment\nM.date => current Date\n```\n\nwith array of numbers\n\n```javascript\n[YEAR, MONTH, DAY, HOURS, MINS, SECS, MS, SHIFT]\n```\n\n```javascript\nM = new Moment([2007, 10, 23, 13, 10, 23])\n\nM.date => Date {Tue Oct 23 2007 13:10:23 GMT+0400}\n```\n\nwith hash of numbers\n\n```javascript\n{ year: YEAR, month: MONTH, day: DAY, hours: HOURS, mins: MINS, secs: SECS, ms: MS, shift: SHIFT }\n```\n\n```javascript\nM = new Moment({ year: 2010, month: 3, day: 12, hours: 14, mins: 52, secs: 13})\n\nM.date => Date {Fri Mar 12 2010 14:52:13 GMT+0400}\n```\n\nwith Date object\n\n```javascript\nxdate = new Date\nM = new Moment(xdate)\n\nM.date => Date {Thu Jun 21 2012 07:36:06 GMT+0400}\n```\n\nwith String\n\n```javascript\nxdate = new Date\nstr = xdate.toString()\nM = new Moment(str)\n\nM.date => Date {Thu Jun 15 2012 08:11:48 GMT+0400}\n```\n\n**Moment API getters**\n\n```javascript\nM = new Moment\nM.date => Date object\nM.year\nM.month\nM.day\nM.hours\nM.mins\nM.secs\nM.ms\nM.shift => GMT shift (Timezone Offset)\nM.unix => seconds from Unix epoch\nM.unix_ms => milliseconds from Unix\n```\n\n**Moment API setters**\n\n```javascript \nM = new Moment\nM.set(Date | [] | {} | String)\nM.set_year(2006)\nM.set_month(5)\nM.set_day(25)\nM.set_hours(23)\nM.set_mins(59)\nM.set_secs(12)\nM.set_ms(126)\nM.set_unix(1234567890) => M.gmt() => Fri, 13 Feb 2009 23:31:30 GMT\nM.set_unix_ms(1234567890 * 1000) => M.gmt() => Fri, 13 Feb 2009 23:31:30 GMT\n```\n\n**Moment API methods**\n\n```javascript\nM = new Moment\nM.to_i()\nM.to_s()\nM.utc()\nM.gmt()\nM.to_a()\nM.to_hash()\nM.dump()\nM.to_gmt_a()\nM.to_gmt_hash()\n```\n\n- M.to_i() - alias of M.unix\n- M.to_s() - M.date.toString()\n- M.utc() - M.date.toUTCString()\n- M.gmt() - M.date.toGMTString()\n- M.to_a() - Array of Moment's instances\n- M.to_hash() - Hash (Object) of Moment's instances\n- M.dump() - Moment's instances DUMP string\n- M.to_gmt_a() - Array of Moment's instances with GMT\n- M.to_gmt_hash() - Hash (Object) of Moment's instances with GMT\n\n**Moment API helpers-methods for Calendars Building**\n\n```javascript\nM = new Moment\nM.today([] | String)\nM.get_month_length()\nM.get_day_of_week()\nM.first_day_of_month()\nM.last_day_of_month()\nM.days_before_month()\nM.days_after_month()\n```\n\n- M.today() - today? [year, month, day] or Moment\n- M.get_month_length() - count of M.month's days\n- M.get_day_of_week() - M.day's position in week (Monday - first [1], Sunday - last [7])\n- M.first_day_of_month() - M.month's first day position in week (Monday - first [1], Sunday - last [7])\n- M.last_day_of_month() - M.month's last day position in week (Monday - first [1], Sunday - last [7])\n- M.days_before_month() - empty day cells at begin of M.month Range[0-6]\n- M.days_after_month() - empty day cells at end of M.month Range[0-~14]\n\n**Moment API Shift methods.** Returns Array[YEAR, MONTH]\n\n```javascript\nM = new Moment\nM.shift_years(INT) => [Year, Month]\nM.shift_months(INT) => [Year, Month]\n```\n\n**Moment API Shift methods.** Shift by Unix time shifting\n\n```javascript\nM = new Moment\nM.shift_weeks(5)\nM.shift_days(7)\nM.shift_hours(1)\nM.shift_mins(25)\nM.shift_secs(13)\n```\n\n**Moment API Comparsions methods**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.less(M2)\nM1.less_or_equal(M2)\nM1.equal(M2)\nM1.greater_or_equal(M2)\nM1.greater(M2)\n```\n\n**Moment API Comparsions shortcut methods**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.l(M2)\nM1.loe(M2)\nM1.e(M2)\nM1.goe(M2)\nM1.g(M2)\n```\n\n**Moment API. Day of week (bool functions)**\n\n```javascript\nM = new Moment\n\nM.is_weekend()\n\nM.is_monday()\nM.is_tuesday()\nM.is_wednesday()\nM.is_thursday()\nM.is_friday()\nM.is_saturday()\nM.is_sunday()\n\nM.is_mon()\nM.is_tue()\nM.is_wed()\nM.is_thu()\nM.is_fri()\nM.is_sat()\nM.is_sun()\n```\n\n**Moment API. Part of day**\n\n```javascript\nM = new Moment\n\nM.is_morning()\nM.is_day()\nM.is_evening()\nM.is_night()\n\nM.part_of_day() => 'morning' | 'day' | 'evening' | 'night'\n```\n\n**Moment API. Extended**\n\n```javascript\nM = new Moment\n\nX = Moment.want(M) => if M is Moment then return M else parse M and create new Moment\n\nM.start_of_day()\nM.end_of_day()\n\nM.start_of_week()\nM.end_of_week()\n\nM.start_of_month()\nM.end_of_month()\n\nM.start_of_year()\nM.end_of_year()\n\nM.day_name()\nM.month_name()\n```\n\n**Moment Diff API**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.diff(M2) => Object with different diff instances\n```\n\n**Moment Localization**\n\n```javascript\n// Add some locales\nMoment.add_locale DefaultMomentLocale.locale_name, DefaultMomentLocale.locale\nMoment.add_locale RuMomentLocale.locale_name, RuMomentLocale.locale\n\n// Use locale by default\nMoment.use_locale 'ru'\n\nM = new Moment\n\n// Use locale for this instances\nM.use_current_locale('ru')\nM.day_name() => 'Среда'\n\nM.use_current_locale('en')\nM.day_name() => 'Wednesday'\n\n```\n\n**Moment Diff object structure**\n\n```javascript\nM1 = new Moment([2010, 10, 26])\nM2 = new Moment([2012, 3, 11])\ndiff = M1.diff(M2)\n\ndiff.days => -502\ndiff.days_abs => 502\n \ndiff.hours => -12048\ndiff.hours_abs => 12048\n \ndiff.mins => -722880\ndiff.mins_abs => 722880\n \ndiff.months => -17\ndiff.months_abs => 17\n \ndiff.ms => -43372800000\ndiff.ms_abs => 43372800000\n \ndiff.secs => -43372800\ndiff.secs_abs => 43372800\n \ndiff.shift => 0\ndiff.unix => -43372800\n \ndiff.unix_ms => -43372800000\n\ndiff.weeks => -71.71428571428571 \ndiff.weeks_abs => 71.71428571428571\n \ndiff.years => -2\ndiff.years_abs => 2\n\n```\n\n## License MIT\n\nCopyright (c) 2012 Ilya N. Zykin\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n## Node.js env install\n \n### Base\n\nsudo apt-get install python-software-properties\n\nsudo apt-add-repository ppa:chris-lea/node.js\n\nsudo apt-get update\n\n### Install Node.js\n\nsudo apt-get install nodejs\n\n### Install NPM\n\nwget http://npmjs.org/install.sh\n\nchmod 777 ./install.sh\n\nsudo ./install.sh\n\n### Install coffee\n\nsudo npm install coffee-script -g # globally\n\nsudo npm install coffee-script # locally\n\n### CoffeeScript compile\n\ncoffee -c -o ./js/ ./coffee/\n\n__The --watch feature depends on Node v0.6.0+__\n\n./node_modules/coffee-script/bin/coffee -cw -o ./js/ ./coffee/\n\n__Compile without security closure__\n\n./node_modules/coffee-scriptin/coffee -cwb -o ./js/ ./coffee/\n\n### Test\n\nnode test.js","_id":"the_time.js@1.0.0","dist":{"shasum":"daad7d8196e27d19136333c8009963086520daf8","tarball":"http://registry.npmjs.org/the_time.js/-/the_time.js-1.0.0.tgz"},"maintainers":[{"name":"the-teacher","email":"zykin-ilya@ya.ru"}]}},"readme":"## TheTime.js\n\nDate object wrapper for Node.js and Browser JS\n\nMakes work with JS Date object easier and more humane\n\n[Download TheTime.js](https://raw.github.com/the-teacher/TheTime.js/master/js/the_time.js)\n\n## Keywords\n\nJavaScript Date wrapper, JavaScript Date Object, JavaScript Date and Time Functions, JavaScript Date Comparison\n\n## Use with Node.js\n\n```javascript\n\nrequire('/path/to/the_time.js');\n\nconsole.log(Moment.o_mori)\n\n```\n\n## Use with Browser\n\n```html\n\n\n\n\n```\n\n```javascript\nconsole.log(Moment.o_mori)\n```\n\n## Description\n\n**Easy way define Date object with Wrapper**\n\n- with Array of numbers\n- with Hash of numbers\n- with String\n\n**Easy way to convert Date to Wrapper and Wrapper to Date**\n\n- **(new Date).to_m()** and **(new Moment).date**\n\n**Months**\n\n- **stop** working with months with **machine style** - from 0 to 11\n- **start** working with months with **human style** - from 1 to 12\n- forget about Month +1/-1 correction for Date object\n\n**Days**\n\n- **stop** working with day number with **machine style** - from 0 to 6\n- **start** working with day number with **human style** - from 1 to 7\n- **SORRY, but it using Russian meaning of days numbers (1 - Monday, 7 - Sunday)**\n\n**Unix time**\n\n- to forget about Unix time seconds *1000 and /1000 correction (because it is not secs, but ms)\n\n**Calendar function**\n\n- I want to have some functions for ease calendar building\n\n**Easy way to access to date variables**\n\n- usable setters and getters (with Ruby style)\n\n**Easy shift of date**\n\n- usable shift methods\n\n**Easy way to get difference of dates, and date comparison**\n\n- usable difference method and set of comparison methods\n\n**Easy way to create Localization for any Langs**\n\n- En and Ru in preset\n\n**And more...**\n\n## Moment API\n\n**Moment object initialization**\n\nDate to Moment convertion\n\n```javascript\ndate = new Date\nM = date.to_m()\n\nM.date => current Date\n```\n\n**new Moment**\n\n```javascript\nM = new Moment\nM.date => current Date\n```\n\nwith array of numbers\n\n```javascript\n[YEAR, MONTH, DAY, HOURS, MINS, SECS, MS, SHIFT]\n```\n\n```javascript\nM = new Moment([2007, 10, 23, 13, 10, 23])\n\nM.date => Date {Tue Oct 23 2007 13:10:23 GMT+0400}\n```\n\nwith hash of numbers\n\n```javascript\n{ year: YEAR, month: MONTH, day: DAY, hours: HOURS, mins: MINS, secs: SECS, ms: MS, shift: SHIFT }\n```\n\n```javascript\nM = new Moment({ year: 2010, month: 3, day: 12, hours: 14, mins: 52, secs: 13})\n\nM.date => Date {Fri Mar 12 2010 14:52:13 GMT+0400}\n```\n\nwith Date object\n\n```javascript\nxdate = new Date\nM = new Moment(xdate)\n\nM.date => Date {Thu Jun 21 2012 07:36:06 GMT+0400}\n```\n\nwith String\n\n```javascript\nxdate = new Date\nstr = xdate.toString()\nM = new Moment(str)\n\nM.date => Date {Thu Jun 15 2012 08:11:48 GMT+0400}\n```\n\n**Moment API getters**\n\n```javascript\nM = new Moment\nM.date => Date object\nM.year\nM.month\nM.day\nM.hours\nM.mins\nM.secs\nM.ms\nM.shift => GMT shift (Timezone Offset)\nM.unix => seconds from Unix epoch\nM.unix_ms => milliseconds from Unix\n```\n\n**Moment API setters**\n\n```javascript \nM = new Moment\nM.set(Date | [] | {} | String)\nM.set_year(2006)\nM.set_month(5)\nM.set_day(25)\nM.set_hours(23)\nM.set_mins(59)\nM.set_secs(12)\nM.set_ms(126)\nM.set_unix(1234567890) => M.gmt() => Fri, 13 Feb 2009 23:31:30 GMT\nM.set_unix_ms(1234567890 * 1000) => M.gmt() => Fri, 13 Feb 2009 23:31:30 GMT\n```\n\n**Moment API methods**\n\n```javascript\nM = new Moment\nM.to_i()\nM.to_s()\nM.utc()\nM.gmt()\nM.to_a()\nM.to_hash()\nM.dump()\nM.to_gmt_a()\nM.to_gmt_hash()\n```\n\n- M.to_i() - alias of M.unix\n- M.to_s() - M.date.toString()\n- M.utc() - M.date.toUTCString()\n- M.gmt() - M.date.toGMTString()\n- M.to_a() - Array of Moment's instances\n- M.to_hash() - Hash (Object) of Moment's instances\n- M.dump() - Moment's instances DUMP string\n- M.to_gmt_a() - Array of Moment's instances with GMT\n- M.to_gmt_hash() - Hash (Object) of Moment's instances with GMT\n\n**Moment API helpers-methods for Calendars Building**\n\n```javascript\nM = new Moment\nM.today([] | String)\nM.get_month_length()\nM.get_day_of_week()\nM.first_day_of_month()\nM.last_day_of_month()\nM.days_before_month()\nM.days_after_month()\n```\n\n- M.today() - today? [year, month, day] or Moment\n- M.get_month_length() - count of M.month's days\n- M.get_day_of_week() - M.day's position in week (Monday - first [1], Sunday - last [7])\n- M.first_day_of_month() - M.month's first day position in week (Monday - first [1], Sunday - last [7])\n- M.last_day_of_month() - M.month's last day position in week (Monday - first [1], Sunday - last [7])\n- M.days_before_month() - empty day cells at begin of M.month Range[0-6]\n- M.days_after_month() - empty day cells at end of M.month Range[0-~14]\n\n**Moment API Shift methods.** Returns Array[YEAR, MONTH]\n\n```javascript\nM = new Moment\nM.shift_years(INT) => [Year, Month]\nM.shift_months(INT) => [Year, Month]\n```\n\n**Moment API Shift methods.** Shift by Unix time shifting\n\n```javascript\nM = new Moment\nM.shift_weeks(5)\nM.shift_days(7)\nM.shift_hours(1)\nM.shift_mins(25)\nM.shift_secs(13)\n```\n\n**Moment API Comparsions methods**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.less(M2)\nM1.less_or_equal(M2)\nM1.equal(M2)\nM1.greater_or_equal(M2)\nM1.greater(M2)\n```\n\n**Moment API Comparsions shortcut methods**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.l(M2)\nM1.loe(M2)\nM1.e(M2)\nM1.goe(M2)\nM1.g(M2)\n```\n\n**Moment API. Day of week (bool functions)**\n\n```javascript\nM = new Moment\n\nM.is_weekend()\n\nM.is_monday()\nM.is_tuesday()\nM.is_wednesday()\nM.is_thursday()\nM.is_friday()\nM.is_saturday()\nM.is_sunday()\n\nM.is_mon()\nM.is_tue()\nM.is_wed()\nM.is_thu()\nM.is_fri()\nM.is_sat()\nM.is_sun()\n```\n\n**Moment API. Part of day**\n\n```javascript\nM = new Moment\n\nM.is_morning()\nM.is_day()\nM.is_evening()\nM.is_night()\n\nM.part_of_day() => 'morning' | 'day' | 'evening' | 'night'\n```\n\n**Moment API. Extended**\n\n```javascript\nM = new Moment\n\nX = Moment.want(M) => if M is Moment then return M else parse M and create new Moment\n\nM.start_of_day()\nM.end_of_day()\n\nM.start_of_week()\nM.end_of_week()\n\nM.start_of_month()\nM.end_of_month()\n\nM.start_of_year()\nM.end_of_year()\n\nM.day_name()\nM.month_name()\n```\n\n**Moment Diff API**\n\n```javascript\nM1 = new Moment\nM2 = new Moment\n\nM1.diff(M2) => Object with different diff instances\n```\n\n**Moment Localization**\n\n```javascript\n// Add some locales\nMoment.add_locale DefaultMomentLocale.locale_name, DefaultMomentLocale.locale\nMoment.add_locale RuMomentLocale.locale_name, RuMomentLocale.locale\n\n// Use locale by default\nMoment.use_locale 'ru'\n\nM = new Moment\n\n// Use locale for this instances\nM.use_current_locale('ru')\nM.day_name() => 'Среда'\n\nM.use_current_locale('en')\nM.day_name() => 'Wednesday'\n\n```\n\n**Moment Diff object structure**\n\n```javascript\nM1 = new Moment([2010, 10, 26])\nM2 = new Moment([2012, 3, 11])\ndiff = M1.diff(M2)\n\ndiff.days => -502\ndiff.days_abs => 502\n \ndiff.hours => -12048\ndiff.hours_abs => 12048\n \ndiff.mins => -722880\ndiff.mins_abs => 722880\n \ndiff.months => -17\ndiff.months_abs => 17\n \ndiff.ms => -43372800000\ndiff.ms_abs => 43372800000\n \ndiff.secs => -43372800\ndiff.secs_abs => 43372800\n \ndiff.shift => 0\ndiff.unix => -43372800\n \ndiff.unix_ms => -43372800000\n\ndiff.weeks => -71.71428571428571 \ndiff.weeks_abs => 71.71428571428571\n \ndiff.years => -2\ndiff.years_abs => 2\n\n```\n\n## License MIT\n\nCopyright (c) 2012 Ilya N. Zykin\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n## Node.js env install\n \n### Base\n\nsudo apt-get install python-software-properties\n\nsudo apt-add-repository ppa:chris-lea/node.js\n\nsudo apt-get update\n\n### Install Node.js\n\nsudo apt-get install nodejs\n\n### Install NPM\n\nwget http://npmjs.org/install.sh\n\nchmod 777 ./install.sh\n\nsudo ./install.sh\n\n### Install coffee\n\nsudo npm install coffee-script -g # globally\n\nsudo npm install coffee-script # locally\n\n### CoffeeScript compile\n\ncoffee -c -o ./js/ ./coffee/\n\n__The --watch feature depends on Node v0.6.0+__\n\n./node_modules/coffee-script/bin/coffee -cw -o ./js/ ./coffee/\n\n__Compile without security closure__\n\n./node_modules/coffee-scriptin/coffee -cwb -o ./js/ ./coffee/\n\n### Test\n\nnode test.js","maintainers":[{"name":"the-teacher","email":"zykin-ilya@ya.ru"}],"time":{"modified":"2012-07-02T14:41:20.884Z","created":"2012-07-02T14:41:14.922Z","1.0.0":"2012-07-02T14:41:20.884Z"},"author":{"name":"Ilya N. Zykin","url":"the-teacher"},"repository":{"type":"git","url":"git://github.com/the-teacher/TheTime.js.git"},"_id":"the_time.js","_rev":"1-05dccfc74168082ecd7c9ca0cc061bde"}ÿdocument-storeÿtemplatify{"id":"templatify","rev":"1-04a66d837c90f65bed68865193d274a5","rev_tree":[{"pos":1,"ids":["04a66d837c90f65bed68865193d274a5",{"status":"available"},[]]}],"rev_map":{"1-04a66d837c90f65bed68865193d274a5":3983},"winningRev":"1-04a66d837c90f65bed68865193d274a5","deleted":false,"seq":3983}ÿby-sequenceÿ0000000000003983Â\{"name":"templatify","description":"Middleware for browserify to load non-js files template as precompiled handlebar template","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"mklabs"},"name":"templatify","description":"Middleware for browserify to load non-js files template as precompiled handlebar template","version":"0.0.1","main":"lib/templatify","bin":{"templatify":"bin/templatify"},"repository":{"type":"git","url":"git://github.com/mklabs/templatify.git"},"dependencies":{"glob":"~3.0.1","handlebars":"~1.0.5beta","underscore":"~1.3.1","nopt":"~1.0.10","hogan":"~1.0.5-dev"},"devDependencies":{"vows":"~0.6.1","browserify":"~1.9.4"},"scripts":{"test":"node node_modules/vows/bin/vows test/*.js --spec"},"_npmUser":{"name":"mklabs","email":"daniel.mickael@gmail.com"},"_id":"templatify@0.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"99cd316818a4a11cbf210d82af52137dbbd54958","tarball":"http://registry.npmjs.org/templatify/-/templatify-0.0.1.tgz"},"maintainers":[{"name":"mklabs","email":"daniel.mickael@gmail.com"}]},"0.0.2":{"author":{"name":"mklabs"},"name":"templatify","description":"Middleware for browserify to load non-js files template as precompiled handlebar template","version":"0.0.2","main":"lib/templatify","bin":{"templatify":"bin/templatify"},"repository":{"type":"git","url":"git://github.com/mklabs/templatify.git"},"dependencies":{"glob":"~3.0.1","handlebars":"~1.0.5beta","underscore":"~1.3.1","nopt":"~1.0.10"},"devDependencies":{"vows":"~0.6.1","browserify":"~1.9.4"},"scripts":{"test":"node node_modules/vows/bin/vows test/*.js --spec"},"_npmUser":{"name":"mklabs","email":"daniel.mickael@gmail.com"},"_id":"templatify@0.0.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"7ee97bc65ecf8bebb0b174424a2c649bc6437cc2","tarball":"http://registry.npmjs.org/templatify/-/templatify-0.0.2.tgz"},"maintainers":[{"name":"mklabs","email":"daniel.mickael@gmail.com"}]}},"readme":"\n# templatify\n\nMiddleware for browserify to load non-js files as precompiled handlebars (or underscore) templates.\n\n[![Build Status](https://secure.travis-ci.org/mklabs/templatify.png)](http://travis-ci.org/mklabs/templatify)\n\nMost of the code base and featureset ot this plugin is based and inspired on\n[require-handlebars-plugin](https://github.com/SlexAxton/require-handlebars-plugin).\n\n## Usage\n\n```javascript\nvar templatify = require('templatify');\n\nvar bundle = browserify()\n .use(templatify('./', {\n files: ['**/*.html'],\n helpers: ['**/*.js']\n }))\n .bundle();\n\nconsole.log(bundle);\n\n// write output to `templates.js`\nrequire('fs').writeFileSync('./templates.js', bundle);\n\n// Use underscore adapater instead of handlebars default one\nvar bundle = browserify()\n .use(templatify('./', { adapter: templatify.adapters.underscore }))\n .bundle();\n\nconsole.log(bundle);\n```\n\nWrite a template ( path: `app/template/one.html` ):\n\n```html\n
\n

{{title}}

\n
\n {{ body }}\n\n {{! To include a partial: }}\n {{! Use underscores instead of slashes in your path, }}\n {{! and leave off the extension. }}\n\n {{> app_template_partial }}\n\n
\n
\n```\n\nHere's the partial (optional) ( path : `app/template/partial.html` )\n\n```html\n
\n {{! This can obviously have it's own partials, etc, etc }}\n I am a partial\n
\n```\n\nThen require your templates like so:\n\n```javascript\nvar tmpl = require('app/template/one');\ndocument.body.innerHTML = tmpl({ title: 'templatify', body: '☺' });\n```\n\nAnd then the output into `body` would be as follows:\n\n```html\n
\n

templatify

\n
\n ☺\n
\n I am a partial\n
\n
\n
\n```\n\n\n\n## Partials\n\nTo include a partial, use underscore instead of slashes in the path\nwithout file extension.\n\n {{> app_template_partial }}\n\nwill include the `app/template/partials.html` file which might have it's own partials, etc, etc\n\n## Helpers\n\nJust put your helpers in `dirname/**/*.js` and they'll automagically get pulled in as long as you write them as modules.\n\n```javascript\n// dirname/yeller.js\nvar Handlebars = require('handlebars');\n\n// exports so that we can require the helper function in our own code\nvar yeller = module.exports = function yeller(context, options) {\n // Assume it's a string for simplicity.\n context = context || '';\n return context.toUpperCase();\n};\n\n// and register as an handlebar helper.\nHandlebars.registerHelper('yeller', yeller);\n```\n\nThen in your templates, you can just do:\n\n```mustache\n{{yell maoow}}\n```\n\nThe system will:\n\n* make sure these modules are pulled in automatically from the `dirname`\n directory\n* register each module as an handlebars helper.\n* register each module as a browserify module available through\n `helper:basename`\n\n```javascript\nvar yeller = require('helper:yeller'),\n assert = require('assert');\n\nassert.equal(yeller('maoow'), 'MAOOW');\n```\n\nIt's just a module that happens to register itself.\n\n## Meta Data\n\nAny template that begins with a comment, with _only_ a valid json object\nin it will be read in as meta data for the template.\n\nThis is advised to list the name of the template and give a description,\nthough these aren't strictly necessary.\n\n## Introspection\n\nIn dev mode a few properties are added to your function (an object in\njavascript) as a helper with debugging and as a testing plug-point.\n\nThose variables look like the following:\n\n```javascript\nvar tmpl = require('app/template/one');\nconsole.log([\n 'Variables referenced in this template: ' + tmpl.vars.join(', '),\n 'Vars/Partials/templates that this file directly depends on: ' + JSON.stringify(tmpl.deps),\n 'Helpers that this template directly depends on: ' + JSON.stringify(tmpl.helpers),\n 'Partials that this template directly depends on: ' + JSON.stringify(tmpl.partials),\n 'The metadata object at the top of the file (if it exists): ' + JSON.stringify(tmpl.meta)\n].join('\\n'));\n\n// Output..\n\n// Variables referenced in this template: title, body\n// Vars/Partials/templates that this file directly depends on: {\"vars\":[\"title\",\"body\"],\"helpers\":[],\"partials\":[\"app_template_partial\"]}\n// Helpers that this template directly depends on: []\n// Partials that this template directly depends on: [\"app_template_partial\"]\n// The metadata object at the top of the file (if it exists): {}\n```\n\nNote: All of these go away after a build if the debug options is set to\nfalse (defaults to `true`) \n\n## Options\n\n```javascript\nvar browserify = require('browserify'),\n templatify = require('templatify');\n\ntemplatify(dirname, options);\n```\n\n`dirname` is the base working directory. Defaults to `$cwd`.\n\n### files\n\nGlob pattern as string or array of strings for template files within\n`dirname`. Each match is then registered as an handlebar template and\navailable through `require('path/to/template')`.\n\nDefaults to `**/*.html`.\n\n### helpers\n\nGlob pattern as string or array of strings for handlebars helpers within\n`dirname`.\n\nDefaults to `**/*.js`\n\n### ext\n\nFile extension to register, should match the `files` option.\n\nDefaults to `.html`\n\n### compile\n\nFunction to call when templates are precompiled.\n\nDefaults to `Handlebars.compile`.\n\n### parse\n\nFunction to call when templates are parsed, should return a list of node\nfor ast traversal.\n\nDefaults to `Handlebars.parse`.\n\n### tmpl\n\nBase template to use for templates registered as commonjs module.\n\nDefaults to:\n\n var Handlebars = require('handlebars');\n\n $helpers\n $partials\n\n var t = module.exports = Handlebars.template($body);\n\n $debugProps\n\n Handlebars.registerPartial('$partial', t);\n\n\n### debug\n\nIndicate wheter or not introspection should be turned off. `true` will\nattach `vars`, `helpers`, `partials` and `meta` as function property.\n\nDefaults to `true`.\n\n### glob\n\nConfiguration object to use for when using `glob.sync`. Refer to [glob\ndocumentation](https://github.com/isaacs/node-glob#readme) for further details.\n\nDefaults to `{}`.\n\n## Motivation\n\nHow templates are used within a webapp is an important question. That's\nusually done by fetching templates from the DOM with inline `...`, or from remote\nfiles with XHR. Both are the most common used ways to fetch template\nfrom client-side JavaScript.\n\nUsing AMD and requirejs, this is slightly better with the `txt!` plugin\nwhich allow templates to be located in their own file while inlined for\nproduction.\n\nAnother elegant approach used by Jammit is to use a `JST` variable (or\nany other namespace) to inline tamplates in a hash object relying on a\nbuild process to process the files. This is also the technique used in\nbackbone-boilerplate.\n\nUsing browerify,\n[node-fileify](https://github.com/substack/node-fileify) which is a\nreally neat tool can be used to achieve that, however it simply returns\nhtml strings into an hash object with keys as filename.\n\nIdeally, I'd like these template files to be compiled into handlebars\nprecompiled template and try to be as close as possible to all the\nreally cool features that \n[require-handlebars-plugin](https://github.com/SlexAxton/require-handlebars-plugin)\noffers (like18n helpers, partials, custom helpers, metadata, introspection...).\n\n## Other Templating Languages\n\nIf you'd like to implement this for your templating language of choice,\nyou'll need:\n\n* A pre-compile type functionality.\n* If it has some concept of partials, that you can register them\n externally\n* For any of the meta-data, you'll need some fancy regex or an AST to\n walk through.\n\nOther templates might be implemented by droping a folder into\n`lib/templates` which name is the template adapter to use. This folder\nmust be a valid npm package, either by droping here an `index.js` or a\ncomplete package with its own `package.json`.\n\n\n## Install\n\n npm install templatify\n\nAppend a `-g` flag if you intend to use the cli tool described below.\n\n## CLI Usage\n\n\n Usage: \n\n templatify files* [options]\n\n\n Options:\n -o, --output Output file, output to stdout if ommited\n -h, --helpers Glob patterns for helper inclusion, usually js files (**/*.js)\n -c, --compress Uglify bundle output (false)\n -a, --adapter Template adapter to use, handlebars or underscore (handlebars)\n --help You're starting at it\n\n## Tests - [![Build Status](https://secure.travis-ci.org/mklabs/templatify.png)](http://travis-ci.org/mklabs/templatify)\n\n npm tests\n\n## Credits\n\nAnd special thanks to\n\n* **@SlexAxton**: Most of the inspiration for this package and the code\n base for ast traversal is based off the fantastic AMD plugin\n [require-handlebars-plugin](https://github.com/SlexAxton/require-handlebars-plugin).\n\n* **@substack**: Reading through\n [node-fileify](https://github.com/substack/node-fileify) sources was\n super handy. And of course, for creating browserify :p\n\n","maintainers":[{"name":"mklabs","email":"daniel.mickael@gmail.com"}],"time":{"modified":"2012-05-12T15:49:17.495Z","created":"2012-03-03T22:41:33.386Z","0.0.1":"2012-03-03T22:41:35.523Z","0.0.2":"2012-05-12T15:49:17.495Z"},"author":{"name":"mklabs"},"repository":{"type":"git","url":"git://github.com/mklabs/templatify.git"},"_id":"templatify","_rev":"1-04a66d837c90f65bed68865193d274a5"}ÿdocument-storeÿtellmecovœ{"id":"tellmecov","rev":"1-be8f0e570fc5d6133901cd4149efad11","rev_tree":[{"pos":1,"ids":["be8f0e570fc5d6133901cd4149efad11",{"status":"available"},[]]}],"rev_map":{"1-be8f0e570fc5d6133901cd4149efad11":3982},"winningRev":"1-be8f0e570fc5d6133901cd4149efad11","deleted":false,"seq":3982}ÿby-sequenceÿ0000000000003982˜{"name":"tellmecov","description":"tell me coverage rank","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"ami44"},"name":"tellmecov","description":"tell me coverage rank","version":"0.0.1","homepage":"https://github.com/ami44/tellmecov","repository":{"type":"git","url":"git://github.com/ami44/tellmecov.git"},"bugs":{"url":"https://github.com/ami44/tellmecov/issues"},"scripts":{"test":"mocha test/*.js"},"engines":{"node":"*"},"dependencies":{"gm":"","commander":"","mkdirp":""},"devDependencies":{"mocha":"","should":"","underscore":""},"optionalDependencies":{},"bin":{"tellmecov":"./bin/tellmecov"},"_npmUser":{"name":"ami44","email":"alban.minassian@free.fr"},"_id":"tellmecov@0.0.1","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"10c3725abd96303a6398e2c3874ae1917cbf0179","tarball":"http://registry.npmjs.org/tellmecov/-/tellmecov-0.0.1.tgz"},"readme":"","maintainers":[{"name":"ami44","email":"alban.minassian@free.fr"}]},"0.0.2":{"author":{"name":"ami44"},"name":"tellmecov","description":"tell me coverage rank","version":"0.0.2","homepage":"https://github.com/ami44/tellmecov","repository":{"type":"git","url":"git://github.com/ami44/tellmecov.git"},"¶ú@Ëùbugs":{"url":"https://github.com/ami44/tellmecov/issues"},"scripts":{"test":"mocha test/*.js"},"engines":{"node":"*"},"dependencies":{"gm":"","commander":"","mkdirp":""},"devDependencies":{"mocha":"","should":"","underscore":""},"optionalDependencies":{},"bin":{"tellmecov":"./bin/tellmecov"},"_npmUser":{"name":"ami44","email":"alban.minassian@free.fr"},"_id":"tellmecov@0.0.2","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"f226ca7686df903e4434180b28a25ef1a767e018","tarball":"http://registry.npmjs.org/tellmecov/-/tellmecov-0.0.2.tgz"},"readme":"","maintainers":[{"name":"ami44","email":"alban.minassian@free.fr"}]}},"readme":"","maintainers":[{"name":"ami44","email":"alban.minassian@free.fr"}],"time":{"modified":"2012-08-03T16:03:40.737Z","created":"2012-08-02T20:02:33.016Z","0.0.1":"2012-08-02T20:02:35.865Z","0.0.2":"2012-08-03T16:03:40.737Z"},"author":{"name":"ami44"},"repository":{"type":"git","url":"git://github.com/ami44/tellmecov.git"},"_id":"tellmecov","_rev":"1-be8f0e570fc5d6133901cd4149efad11"}ÿdocument-storeÿtcp_framer{"id":"tcp_framer","rev":"1-090c82e2ce6921b099647c26ac7a0f57","rev_tree":[{"pos":1,"ids":["090c82e2ce6921b099647c26ac7a0f57",{"status":"available"},[]]}],"rev_map":{"1-090c82e2ce6921b099647c26ac7a0f57":3981},"winningRev":"1-090c82e2ce6921b099647c26ac7a0f57","deleted":false,"seq":3981}ÿby-sequenceÿ0000000000003981¾ {"name":"tcp_framer","description":"Frame TCP messages","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com","url":"https://github.com/santosh79"},"name":"tcp_framer","description":"Frame TCP messages","version":"0.1.0","repository":{"type":"git","url":"git@github.com:santosh79/tcp_framer.git"},"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"mocha":"~1.3.2"},"optionalDependencies":{},"homepage":"https://github.com/santosh79/tcp_framer","main":"index.js","readme":"","_id":"tcp_framer@0.1.0","dist":{"shasum":"6073a37fba23ef59b08698a76ea63c192841af55","tarball":"http://registry.npmjs.org/tcp_framer/-/tcp_framer-0.1.0.tgz"},"maintainers":[{"name":"santosh79","email":"santosh79@gmail.com"}]}},"readme":"","maintainers":[{"name":"santosh79","email":"santosh79@gmail.com"}],"time":{"modified":"2012-08-03T06:07:37.007Z","created":"2012-08-03T06:07:35.829Z","0.1.0":"2012-08-03T06:07:37.007Z"},"author":{"name":"Santosh Kumar","email":"santosh79@gmail.com","url":"https://github.com/santosh79"},"repository":{"type":"git","url":"git@github.com:santosh79/tcp_framer.git"},"_id":"tcp_framer","_rev":"1-090c82e2ce6921b099647c26ac7a0f57"}ÿdocument-storeÿtar-asyncœ{"id":"tar-async","rev":"1-c4430e52691ec6bb1557b7c53c879b51","rev_tree":[{"pos":1,"ids":["c4430e52691ec6bb1557b7c53c879b51",{"status":"available"},[]]}],"rev_map":{"1-c4430e52691ec6bb1557b7c53c879b51":3980},"winningRev":"1-c4430e52691ec6bb1557b7c53c879b51","deleted":false,"seq":3980}ÿby-sequenceÿ0000000000003980‡W{"name":"tar-async","description":"Asynchronous tar and untar","dist-tags":{"latest":"1.2.0"},"versions":{"0.1.0":{"name":"tar-async","description":"Creates tar files asynchronously in chunks","version":"0.1.0","homepage":"http://github.com/beatgammit/node-tar","repository":{"type":"git","url":"git://github.com/beatgammit/node-tar.git"},"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"main":"lib/tar.js","keywords":["tar","asynchronous","server","chunk"],"directories":{"lib":"lib"},"contributors":[{"name":"Tim Caswell"}],"dependencies":{"futures":""},"engines":{"node":"*","futures":"1.9.4"},"_id":"tar-async@0.1.0","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"d84b2916f926e03c3e6a55ba4766b43e329ec6e1","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-0.1.0.tgz"}},"0.2.0":{"name":"tar-async","description":"Creates tar files asynchronously in chunks","version":"0.2.0","homepage":"http://github.com/beatgammit/node-tar-async","repository":{"type":"git","url":"git://github.com/beatgammit/node-tar-async.git"},"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"main":"lib/tar.js","keywords":["tar","asynchronous","server","chunk"],"directories":{"lib":"lib"},"contributors":[{"name":"Tim Caswell"}],"dependencies":{"futures":""},"engines":{"node":"*","futures":"1.9.4"},"_id":"tar-async@0.2.0","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"892dc8dfa167cf1097a7c98ca80fece6b863ad27","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-0.2.0.tgz"}},"0.2.5":{"name":"tar-async","description":"Creates tar files asynchronously in chunks","version":"0.2.5","homepage":"http://github.com/beatgammit/node-tar-async","repository":{"type":"git","url":"git://github.com/beatgammit/node-tar-async.git"},"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"main":"lib/tar.js","keywords":["tar","asynchronous","server","chunk"],"directories":{"lib":"lib"},"contributors":[{"name":"Tim Caswell"}],"dependencies":{"futures":""},"engines":{"node":"*","futures":"1.9.4"},"_id":"tar-async@0.2.5","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"d1379e006d691da971abc74a3b2f01e8ea3cbacf","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-0.2.5.tgz"}},"0.3.0":{"name":"tar-async","description":"Creates tar files asynchronously in chunks","version":"0.3.0","homepage":"http://github.com/beatgammit/node-tar-async","repository":{"type":"git","url":"git://github.com/beatgammit/node-tar-async.git"},"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"main":"lib/tar.js","keywords":["tar","asynchronous","server","chunk"],"directories":{"lib":"lib"},"contributors":[{"name":"Tim Caswell"}],"dependencies":{"futures":""},"engines":{"node":"*","futures":"1.9.4"},"devDependencies":{},"_id":"tar-async@0.3.0","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.2","_defaultsLoaded":true,"dist":{"shasum":"f08953d46c37bdb2639b2869ce64bf13adebb47a","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-0.3.0.tgz"},"scripts":{}},"1.0.0":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","asynchronous","stream","async"],"version":"1.0.0","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/home/jameson/.npm/tar-async/1.0.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"tar-async@1.0.0","_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"c6b95d3f9a26d7cd5f93d908471a85b8f41f5b2b","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.0.0.tgz"},"scripts":{}},"1.0.1":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.0.1","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/home/jameson/.npm/tar-async/1.0.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"tar-async@1.0.1","_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"9b4cc262a265805a12c2f9c7ec45122d1f8630c9","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.0.1.tgz"},"scripts":{}},"1.1.0":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.1.0","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/home/jameson/.npm/tar-async/1.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"tar-async@1.1.0","_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"710c2196ce0f4a11f7c97a0d57641838a2afea4d","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.1.0.tgz"},"scripts":{}},"1.1.1":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.1.1","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmJsonOpts":{"file":"/home/jameson/.npm/tar-async/1.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"tar-async@1.1.1","_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"6b8cfb73cded459a6c705378337fc03b7f0adcd8","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.1.1.tgz"},"scripts":{},"maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"}]},"1.1.2":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.1.2","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"tar-async@1.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b4c0b0a7d69552f5eb4a8beb67fb36c39ec7b12b","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.1.2.tgz"},"readme":"","maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.1.3":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.1.3","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"tar-async@1.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d86c2f7653dfab391c015def7b03d4752379914e","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.1.3.tgz"},"readme":"","maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.1.4":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.1.4","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"beatgammit","email":"t.jameson.little@gmail.com"},"_id":"tar-async@1.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"9c6f0d5891ae6ce927df5449efbcd5b30e85d1b1","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.1.4.tgz"},"readme":"","maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.2.0":{"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"name":"tar-async","description":"Asynchronous tar and untar","keywords":["tar","untar","asynchronous","stream","async","chunk","chunked"],"version":"1.2.0","repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"main":"index.js","directories":{"lib":"."},"engines":{"node":">=0.1.90"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"beatgammit","email":"t.jameson.little@gmail.com"},"_id":"tar-async@1.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e70d179828b788230bccf38da7d6c3b1a87dd838","tarball":"http://registry.npmjs.org/tar-async/-/tar-async-1.2.0.tgz"},"readme":"","maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"maintainers":[{"name":"beatgammit","email":"t.jameson.little@gmail.com"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-06-19T22:15:27.805Z","created":"2011-03-20T07:27:26.729Z","0.1.0":"2011-03-20T07:27:27.219Z","0.2.0":"2011-03-21T17:20:11.823Z","0.2.5":"2011-03-26T05:46:00.075Z","0.3.0":"2011-05-19T06:12:02.231Z","1.0.0":"2011-06-27T08:20:34.304Z","1.0.1":"2011-06-27T16:47:03.747Z","1.1.0":"2011-06-29T06:12:41.999Z","1.1.1":"2011-08-07T02:49:34.661Z","1.1.2":"2012-06-11T22:49:25.243Z","1.1.3":"2012-06-12T01:50:44.050Z","1.1.4":"2012-06-19T18:04:46.262Z","1.2.0":"2012-06-19T22:15:27.805Z"},"author":{"name":"T. Jameson Little","email":"t.jameson.little@gmail.com"},"repository":{"type":"git","url":"git://github.com/beatgammit/tar-async.git"},"_id":"tar-async","_rev":"1-c4430e52691ec6bb1557b7c53c879b51"}ÿdocument-storeÿtailf˜{"id":"tailf","rev":"1-a9d9e1ff2fbf07ad3f8701a32b008131","rev_tree":[{"pos":1,"ids":["a9d9e1ff2fbf07ad3f8701a32b008131",{"status":"available"},[]]}],"rev_map":{"1-a9d9e1ff2fbf07ad3f8701a32b008131":3979},"winningRev":"1-a9d9e1ff2fbf07ad3f8701a32b008131","deleted":false,"seq":3979}ÿby-sequenceÿ0000000000003979¸-{"name":"tailf","description":"Watch file changes like tail -f command","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"tailf","description":"Watch file changes like tail -f command","version":"0.1.0","homepage":"https://github.com/exos/node-tailf","repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"exos","email":"tioscar@gmail.com"},"_id":"tailf@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"c28003e8df8cd2485703acdc80b44374ec417e87","tarball":"http://registry.npmjs.org/tailf/-/tailf-0.1.0.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]},"0.1.1":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"tailf","description":"Watch file changes like tail -f command","version":"0.1.1","homepage":"https://github.com/exos/node-tailf","repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"exos","email":"tioscar@gmail.com"},"_id":"tailf@0.1.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6e425e418b05f4d3f65a9c1b646b9beeb3af4407","tarball":"http://registry.npmjs.org/tailf/-/tailf-0.1.1.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]},"0.1.2":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"tailf","description":"Watch file changes like tail -f command","version":"0.1.2","homepage":"https://github.com/exos/node-tailf","repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"exos","email":"tioscar@gmail.com"},"_id":"tailf@0.1.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d92efe8380b640613e75060e15dcd9f10d3b5a93","tarball":"http://registry.npmjs.org/tailf/-/tailf-0.1.2.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]},"0.1.3":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"tailf","description":"Watch file changes like tail -f command","version":"0.1.3","homepage":"https://github.com/exos/node-tailf","repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"exos","email":"tioscar@gmail.com"},"_id":"tailf@0.1.3","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4232249bbd90bfc395f8cad7cca78d675362adef","tarball":"http://registry.npmjs.org/tailf/-/tailf-0.1.3.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]},"0.2.3":{"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"name":"tailf","description":"Watch file changes like tail -f command","version":"0.2.3","homepage":"https://github.com/exos/node-tailf","repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"exos","email":"tioscar@gmail.com"},"_id":"tailf@0.2.3","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1a5564ee3a8966ed025451139425d5ff9bf77b6c","tarball":"http://registry.npmjs.org/tailf/-/tailf-0.2.3.tgz"},"maintainers":[{"name":"exos","email":"tioscar@gmail.com"}]}},"readme":"\nWatch a file changes and return a buffer with the new added data, for watch logs, etc.\n\nsimpleTailf\n===========\n\nSimple watching file\n\nMethods\n=======\n\nstart()\n-------\n\nStart the watching of file.\n\nstop()\n------\n\nStop the watching of file.\n\non(event_name, callback)\n-----------------------\n\nSubscribe to event\n\nEvents\n======\n\ndata\n----\n\nOn data is added to file\n\nerror\n-----\n\nOn error watching the file\n\nUsage:\n======\n\n```JS\n\nvar tailf = require('node-tailf');\n\nvar watchinglog = new tailf.simpleTailf('my.log');\n\nwatchinglog.on('data', function (data) {\n console.log('Data arrived: ' , data.toString());\n});\n\n```\n\n\n\nblockTailf\n==========\n\nWatching file and emit data splited by a string or regular expresion.\n\nMethods\n=======\n\nstart()\n-------\n\nStart the watching of file.\n\nstop()\n------\n\nStop the watching of file.\n\non(event_name, callback)\n-----------------------\n\nSubscribe to event\n\nEvents\n======\n\ndata\n----\n\nOn data is added to file\n\nerror\n-----\n\nOn error watching the file\n\nUsage:\n======\n\n```JS\n\nvar tailf = require('node-tailf');\n\n// emit a data event for once line\nvar watchinglog = new tailf.blockTailf('my.log',/\\n/);\n\nwatchinglog.on('data', function (data) {\n console.log('Data arrived: ' , data);\n});\n\n```\n","maintainers":[{"name":"exos","email":"tioscar@gmail.com"}],"time":{"modified":"2012-06-20T19:57:36.335Z","created":"2012-06-12T21:51:30.972Z","0.1.0":"2012-06-12T21:51:35.082Z","0.1.1":"2012-06-14T17:56:08.169Z","0.1.2":"2012-06-14T18:01:27.679Z","0.1.3":"2012-06-14T18:35:27.211Z","0.2.3":"2012-06-20T19:57:36.335Z"},"author":{"name":"Oscar Gentilezza","email":"tioscar@gmail.com","url":"http://blog.exodica.com.ar"},"repository":{"type":"git","url":"git://github.com/exos/node-tailf.git"},"_id":"tailf","_rev":"1-a9d9e1ff2fbf07ad3f8701a32b008131"}ÿdocument-storeÿswitch™{"id":"switch","rev":"1-0ff24f2a73b779deabb6af79e5b8cc11","rev_tree":[{"pos":1,"ids":["0ff24f2a73b779deabb6af79e5b8cc11",{"status":"available"},[]]}],"rev_map":{"1-0ff24f2a73b779deabb6af79e5b8cc11":3978},"winningRev":"1-0ff24f2a73b779deabb6af79e5b8cc11","deleted":false,"seq":3978}ÿby-sequenceÿ0000000000003978¯{"name":"switch","description":"Zero dependency routing for the browser and Node.js.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"switch","description":"Zero dependency routing for the browser and Node.js.","author":{"name":"Alan Gutierrez"},"version":"0.0.0","keywords":["router","html5","middleware","async","asynchronous"],"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/switch/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/switch.git"},"scripts":{"test":"proof platform win32 && proof t/*/*.t || t/test"},"devDependencies":{"proof":"0.0.15","uglify-js":"~1.3"},"dependencies":{},"readme":"# Reactor [![Build Status](https://secure.travis-ci.org/bigeasy/reactor.png?branch=master)](http://travis-ci.org/bigeasy/reactor)\n\nZero dependency routing for the browser and Node.js.\n\n## Change Log \n\nChanges for each release.\n\n### Version 0.0.1 — Thu Jul 19 08:14:30 UTC 2012\n\n * Build on Travis CI. #3.\n * Create basic router. #1.\n","_id":"switch@0.0.0","dist":{"shasum":"4a9d225b00799fb16ee0214663b0b0b22ce133cf","tarball":"http://registry.npmjs.org/switch/-/switch-0.0.0.tgz"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}]}},"readme":"# Reactor [![Build Status](https://secure.travis-ci.org/bigeasy/reactor.png?branch=master)](http://travis-ci.org/bigeasy/reactor)\n\nZero dependency routing for the browser and Node.js.\n\n## Change Log \n\nChanges for each release.\n\n### Version 0.0.1 — Thu Jul 19 08:14:30 UTC 2012\n\n * Build on Travis CI. #3.\n * Create basic router. #1.\n","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"time":{"modified":"2012-08-02T13:43:28.860Z","created":"2012-08-02T03:47:49.873Z","0.0.0":"2012-08-02T03:47:50.759Z"},"author":{"name":"Alan Gutierrez"},"repository":{"type":"git","url":"http://github.com/bigeasy/switch.git"},"users":{"fgribreau":true},"_id":"switch","_rev":"1-0ff24f2a73b779deabb6af79e5b8cc11"}ÿdocument-storeÿswimlane›{"id":"swimlane","rev":"1-d8863882c000dcf0809b9f528e5a6075","rev_tree":[{"pos":1,"ids":["d8863882c000dcf0809b9f528e5a6075",{"status":"available"},[]]}],"rev_map":{"1-d8863882c000dcf0809b9f528e5a6075":3977},"winningRev":"1-d8863882c000dcf0809b9f528e5a6075","deleted":false,"seq":3977}ÿby-sequenceÿ0000000000003977Æ{"name":"swimlane","description":"A visual markdown editor.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"swimlane","description":"A visual markdown editor.","author":{"name":"Alan Gutierrez"},"version":"0.0.0","keywords":["markdown","html5","text","cms"],"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/swimlane/raw/master/LICENSE"}],"repository":{"type":"git","url":"git://github.com/bigeasy/swimlane.git"},"scripts":{"test":"proof platform win32 && proof t/*/*.t || t/test","start":"node server.js"},"devDependencies":{"proof":"0.0.15","uglify-js":"~1.3"},"dependencies":{"stencil":"~0.0"},"bin":{"swimlane":"./bin/swimlane"},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"_id":"swimlane@0.0.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"23f300767db6bf6b8ff390b0618b700188ec2f96","tarball":"http://registry.npmjs.org/swimlane/-/swimlane-0.0.0.tgz"},"readme":"","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}]},"0.0.1":{"name":"swimlane","description":"A visual markdown editor.","author":{"name":"Alan Gutierrez"},"version":"0.0.1","keywords":["markdown","html5","text","cms"],"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/swimlane/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/swimlane.git"},"scripts":{"test":"proof platform win32 && proof t/*/*.t || t/test","start":"node server.js"},"devDependencies":{"proof":"0.0.15","uglify-js":"~1.3"},"dependencies":{"connect":"~2.0"},"readme":"","_id":"swimlane@0.0.1","dist":{"shasum":"b29112635d76ef121c28adfac19f0c6db11f4d25","tarball":"http://registry.npmjs.org/swimlane/-/swimlane-0.0.1.tgz"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}]}},"readme":"","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"time":{"modified":"2012-07-18T04:12:37.535Z","created":"2012-07-16T00:34:05.483Z","0.0.0":"2012-07-16T00:34:06.164Z","0.0.1":"2012-07-18T04:12:37.535Z"},"author":{"name":"Alan Gutierrez"},"repository":{"type":"git","url":"http://github.com/bigeasy/swimlane.git"},"_id":"swimlane","_rev":"1-d8863882c000dcf0809b9f528e5a6075"}ÿdocument-storeÿsuper_brokerŸ{"id":"super_broker","rev":"1-a8dd67f1795173b212783b8340c5ee14","rev_tree":[{"pos":1,"ids":["a8dd67f1795173b212783b8340c5ee14",{"status":"available"},[]]}],"rev_map":{"1-a8dd67f1795173b212783b8340c5ee14":3976},"winningRev":"1-a8dd67f1795173b212783b8340c5ee14","deleted":false,"seq":3976}ÿby-sequenceÿ0000000000003976ý {"name":"super_broker","description":"Node.JS / ZeroMQ module for dispatching compute task between workers","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"super_broker","description":"Node.JS / ZeroMQ module for dispatching compute task between workers","version":"0.1.0","author":{"name":"Bertrand Paquet","email":"bertrand.paquet@gmail.com"},"keywords":["zmq","task","compute","nodejs"],"dependencies":{"zmq":"git://github.com/vvo/zeromq.node.git#e670511a6da2982919ea0a9601aa1aa5207e0b2c","node-uuid":"1.3.x"},"main":"./lib/super_broker.js","devDependencies":{"vows":"0.6.x"},"scripts":{"test":"./test-runner.sh"},"engines":{"node":"0.6.19"},"_npmUser":{"name":"bpaquet","email":"bpaquet@octo.com"},"_id":"super_broker@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"26b5e29fdefede4e497d59e3384a49a260c16a98","tarball":"http://registry.npmjs.org/super_broker/-/super_broker-0.1.0.tgz"},"readme":"","maintainers":[{"name":"bpaquet","email":"bpaquet@octo.com"}]}},"readme":"","maintainers":[{"name":"bpaquet","email":"bpaquet@octo.com"}],"time":{"modified":"2012-06-20T12:43:37.578Z","created":"2012-06-20T12:43:35.135Z","0.1.0":"2012-06-20T12:43:37.578Z"},"author":{"name":"Bertrand Paquet","email":"bertrand.paquet@gmail.com"},"_id":"super_broker","_rev":"1-a8dd67f1795173b212783b8340c5ee14"}ÿdocument-storeÿstitcher›{"id":"stitcher","rev":"1-db678da4dca5db12abc229597466be19","rev_tree":[{"pos":1,"ids":["db678da4dca5db12abc229597466be19",{"status":"available"},[]]}],"rev_map":{"1-db678da4dca5db12abc229597466be19":3975},"winningRev":"1-db678da4dca5db12abc229597466be19","deleted":false,"seq":3975}ÿby-sequenceÿ0000000000003975çh{"name":"stitcher","description":"coffee-script,javascript,less,css,javascript template stitcher with commonJs.","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"stitcher","description":"coffee-script less eco commonJs stitcher.","version":"0.1.0","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.1.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"aec6b30de743d991f8da7d55f0a4596a893b5e65","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.1.0.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}],"directories":{}},"0.1.1":{"name":"stitcher","description":"coffee-script less eco commonJs stitcher.","version":"0.1.1","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.1.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"1a332111287d4d34b35048e1ed2fd0ac2c9b1d8a","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.1.1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}],"directories":{}},"0.1.0-1":{"name":"stitcher","description":"coffee-script less eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.1.0-1","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.1.0-1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"d978f348eaed62ace79c68988e7453b2c9490413","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.1.0-1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}],"directories":{}},"0.2.0":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.2.0","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"41fb677185d936058da04d087dda22cd6d87b2bd","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.2.0.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.0":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.0","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"7e1edbac134400835544b8792f2274a9f5ab0a5d","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.0.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.0-rc1":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.0-rc1","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.0-rc1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"15be5÷(›ù56311c6bfa63f4199641365163f9d69408c","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.0-rc1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.0-rc-1":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.0-rc-1","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >=0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.0-rc-1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"4238930eed9abadd80486cf261fd0c39a40d0c3e","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.0-rc-1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.1":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.1","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engine":["node >= 0.6"],"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","uglify-js":">=1.2.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"3a93c12f606a0bdd7cdc569fc5eeeb69a265043b","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.2":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.2","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.6.0"},"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"9196c5033286342afb4138b98e48fe4b2fd414cb","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.2.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.3":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.3","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.6.0"},"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"f35ce21c147d8adf338e92bd51fb5750eb5e3d14","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.3.tgz"},"readme":"","maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.4":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.4","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.6.0"},"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0","wrench":">=1.3.2"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.4","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6bc39bce838b6e8e04f1eea7fce3ce148026c953","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.4.tgz"},"readme":"","maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.3.6":{"name":"stitcher","description":"coffee-script js less css eco commonJs stitcher.","homepage":"https://github.com/sunlt/stitcher","version":"0.3.6","author":{"name":"sunliutao"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.6.0"},"main":"./lib/main.js","bin":{"stitcher":"./bin/stitcher"},"dependencies":{"eco":">=1.1.0-rc-1","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2","eventproxy":">=0.1.0"},"_npmUser":{"name":"sunliutao","email":"sunliutao@foxmail.com"},"_id":"stitcher@0.3.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"9df521be2547eb653b7e30591768e3cc277b86e5","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.3.6.tgz"},"readme":"","maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.5.1":{"name":"stitcher","homepage":"https://github.com/sunlt/stitcher","description":"coffee-script,javascript,less,css,javascript template stitcher with commonJs.","version":"0.5.1","author":{"name":"sunlt"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.8.0"},"main":"./lib/main.js","repository":{"type":"git","url":"https://github.com/sunlt/stitcher.git"},"bin":{"stitcher":"./bin/stitcher"},"dependencies":{"ejs":">=0.7.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2"},"readme":"","_id":"stitcher@0.5.1","dist":{"shasum":"c83615614bd9698fb86ee624ba934ffc92d715d7","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.5.1.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]},"0.5.2":{"name":"stitcher","homepage":"https://github.com/sunlt/stitcher","description":"coffee-script,javascript,less,css,javascript template stitcher with commonJs.","version":"0.5.2","author":{"name":"sunlt"},"email":"sunliutao@foxmail.com","engines":{"node":">=0.8.0"},"main":"./lib/main.js","repository":{"type":"git","url":"https://github.com/sunlt/stitcher.git"},"bin":{"stitcher":"./bin/stitcher"},"dependencies":{"ejs":">=0.7.2","optimist":">=0.3.0","coffee-script":">=1.1.2","less":">=1.1.6","connect":">=1.8.2"},"readme":"","_id":"stitcher@0.5.2","dist":{"shasum":"c47d0a45fa836a5f931cabc527731afeb80e776e","tarball":"http://registry.npmjs.org/stitcher/-/stitcher-0.5.2.tgz"},"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}]}},"readme":null,"maintainers":[{"name":"sunliutao","email":"sunliutao@foxmail.com"}],"time":{"modified":"2012-07-18T09:21:08.523Z","created":"2011-12-23T05:01:02.822Z","0.1.0":"2011-12-23T05:01:07.699Z","0.1.1":"2011-12-26T09:47:13.963Z","0.1.0-1":"2011-12-26T09:49:09.888Z","0.2.0":"2011-12-28T08:37:56.573Z","0.3.0":"2011-12-28T08:40:10.058Z","0.3.0-rc1":"2011-12-28T09:49:07.319Z","0.3.0-rc-1":"2011-12-28T09:49:43.221Z","0.3.1":"2011-12-29T09:58:23.891Z","0.3.2":"2011-12-29T13:17:07.714Z","0.3.3":"2012-01-17T09:02:13.321Z","0.3.4":"2012-02-19T05:58:48.776Z","0.3.6":"2012-03-20T09:27:08.860Z","0.5.1":"2012-07-03T04:01:15.320Z","0.5.2":"2012-07-18T09:21:08.523Z"},"author":{"name":"sunlt"},"repository":{"type":"git","url":"https://github.com/sunlt/stitcher.git"},"_id":"stitcher","_rev":"1-db678da4dca5db12abc229597466be19"}ÿdocument-storeÿstats-arrayž{"id":"stats-array","rev":"1-abe6fb3a9cfa00b5017f33e331f8c921","rev_tree":[{"pos":1,"ids":["abe6fb3a9cfa00b5017f33e331f8c921",{"status":"available"},[]]}],"rev_map":{"1-abe6fb3a9cfa00b5017f33e331f8c921":3974},"winningRev":"1-abe6fb3a9cfa00b5017f33e331f8c921","deleted":false,"seq":3974}ÿby-sequenceÿ0000000000003974«S{"name":"stats-array","description":"array prototype for statistical calculations","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"stats-array","description":"array prototype for statistical calculations","version":"0.1.0","repository":{"url":""},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"main":"stats-array","_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"stats-array@0.1.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f9d1b288236ac7513611f59289b4f59733926f58","tarball":"http://registry.npmjs.org/stats-array/-/stats-array-0.1.0.tgz"},"readme":"","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.1.1":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"stats-array","description":"array prototype for statistical calculations","version":"0.1.1","repository":{"type":"git","url":"git://github.com/tblobaum/stats-array.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"node test/stats-array.js"},"main":"stats-array","_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"stats-array@0.1.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"87d5a22208e457de2842a74a6ba2518cf4dd0208","tarball":"http://registry.npmjs.org/stats-array/-/stats-array-0.1.1.tgz"},"readme":"# stats-array\n\nan array prototype extension for performing statistical calculations\n\n[![Build Status](https://secure.travis-ci.org/tblobaum/stats-array.png)](http://travis-ci.org/tblobaum/stats-array)\n\n## Install\n\n`npm install stats-array`\n\n## Example\n\n```js\n\nvar StatsArray = require('stats-array')\n\nvar arr = [ 50, 40, 30, 20, 30, 40, 50 ]\n\nconsole.log(arr.stdDeviation()) \n// 11.126972805283735\n\nconsole.log(arr.stdDeviation(0.95)) \n// also calculates 95% confidence interval\n// {\n// confidence: 0.95, \n// lower: 7.17014792596768, \n// upper: 24.502329752802414, \n// value: 11.126972805283735, \n// length: 7, \n// alpha: 0.05\n// }\n\n```\n\n## API\n\n### []\n\n### .stdDeviation([confidence], [bool])\ncalculate the standard deviation of the set and return the value, or optionally pass in a confidence interval (0.01-0.99) which will change the return value to an object hash\n\n### .variance([bool])\ncalculate the variance of the set\n\n### .max()\nmaximum value in the set\n\n### .min()\nminimum value in the set\n\n### .sum()\nsum of all values in the set\n\n### .mean()\nreturns the average\n\n### .range()\nreturns the range between the min and max values\n\n### .toMatrix(number)\ndivides the set into a matrix of subarrays\n\n### .sortAsc()\nsort the set with smallest values first\n\n### .sortDesc()\nsort the set with largest values first\n\n### .round()\ncalls Math.round on every value in the set\n\n### .abs()\ncalls Math.abs on every value in the set\n\n### .acos()\ncalls Math.acos on every value in the set\n\n### .asin()\ncalls Math.asin on every value in the set\n\n### .atan()\ncalls Math.atan on every value in the set\n\n### .ceil()\ncalls Math.ceil on every value in the set\n\n### .exp()\ncalls Math.exp on every value in the set\n\n### .floor()\ncalls Math.floor on every value in the set\n\n### .log()\ncalls Math.log on every value in the set\n\n### .pow(number)\ncalls Math.pow on every value in the set\n\n### .sin()\ncalls Math.sin on every value in the set\n\n### .sqrt()\ncalls Math.sqrt on every value in the set\n\n### .tan()\ncalls Math.tan on every value in the set\n\n### .sin()\ncalls Math.sin on every value in the set\n\n### .confidenceInterval(value, length, confidence)\ncalculate the confidence of `value` which was created from a set of `length` using a gaussian (normal) distribution\n\n## Tests\n\n`npm install -g tap && npm test`\n\n## Benchmarks\n\nExtending the Array.prototype causes no significant loss in performance compared with native arrays.\n\n`node bench/stats-array.js`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Thomas Blobaum \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]},"0.1.2":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"stats-array","description":"array prototype for statistical calculations","version":"0.1.2","repository":{"type":"git","url":"https://tblobaum@github.com/tblobaum/stats-array.git"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"scripts":{"test":"node test/stats-array.js"},"main":"stats-array","readme":"# stats-array\n\nan array prototype extension for performing statistical calculations\n\n[![Build Status](https://secure.travis-ci.org/tblobaum/stats-array.png)](http://travis-ci.org/tblobaum/stats-array)\n\n## Install\n\n`npm install stats-array`\n\n## Example\n\n```js\n\nvar StatsArray = require('stats-array')\n\nvar arr = [ 50, 40, 30, 20, 30, 40, 50 ]\n\nconsole.log(arr.stdDeviation()) \n// 11.126972805283735\n\nconsole.log(arr.stdDeviation(0.95)) \n// also calculates 95% confidence interval\n// {\n// confidence: 0.95, \n// lower: 7.17014792596768, \n// upper: 24.502329752802414, \n// value: 11.126972805283735, \n// length: 7, \n// alpha: 0.05\n// }\n\n```\n\n## API\n\n### []\n\n### .stdDeviation([confidence], [bool])\ncalculate the standard deviation of the set and return the value, or optionally pass in a confidence interval (0.01-0.99) which will change the return value to an object hash\n\n### .variance([bool])\ncalculate the variance of the set\n\n### .max()\nmaximum value in the set\n\n### .min()\nminimum value in the set\n\n### .sum()\nsum of all values in the set\n\n### .mean()\nreturns the average\n\n### .range()\nreturns the range between the min and max values\n\n### .toMatrix(number)\ndivides the set into a matrix of subarrays\n\n### .sortAsc()\nsort the set with smallest values first\n\n### .sortDesc()\nsort the set with largest values first\n\n### .round()\ncalls Math.round on every value in the set\n\n### .roundTo(num)\nround every value to `num` places\n\n```js\n\n[ 1.2555, 1.2557, 1.256001 ].roundTo(1000)\n// => [ 1.256, 1.256, 1.256 ]\n\n[ 955642, 443234, 350460.256001 ].roundTo(0.001)\n// => [ 956000, 443000, 350000 ]\n\n[ 1.2555, 1.2557, 1.256001 ].tan().roundTo(100)\n// => [ 3.07, 3.07, 3.07 ]\n\n```\n\n### .abs()\ncalls Math.abs on every value in the set\n\n### .acos()\ncalls Math.acos on every value in the set\n\n### .asin()\ncalls Math.asin on every value in the set\n\n### .atan()\ncalls Math.atan on every value in the set\n\n### .ceil()\ncalls Math.ceil on every value in the set\n\n### .exp()\ncalls Math.exp on every value in the set\n\n### .floor()\ncalls Math.floor on every value in the set\n\n### .log()\ncalls Math.log on every value in the set\n\n### .pow(number)\ncalls Math.pow on every value in the set\n\n### .sin()\ncalls Math.sin on every value in the set\n\n### .sqrt()\ncalls Math.sqrt on every value in the set\n\n### .tan()\ncalls Math.tan on every value in the set\n\n### .sin()\ncalls Math.sin on every value in the set\n\n### .confidenceInterval(value, length, confidence)\ncalculate the confidence of `value` which was created from a set of `length` using a gaussian (normal) distribution\n\n## Tests\n\n`npm install -g tap && npm test`\n\n## Benchmarks\n\nExtending the Array.prototype causes no significant loss in performance compared with native arrays.\n\n`node bench/stats-array.js`\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Thomas Blobaum \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","_id":"stats-array@0.1.2","dist":{"shasum":"221c6bbe934a9697d69c28f47462e05aff78c926","tarball":"http://registry.npmjs.org/stats-array/-/stats-array-0.1.2.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]}},"readme":"","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"time":{"modified":"2012-06-20T20:16:47.605Z","created":"2012-05-05T02:02:17.738Z","0.1.0":"2012-05-05T02:02:19.053Z","0.1.1":"2012-05-11T03:38:47.271Z","0.1.2":"2012-06-20T20:16:47.605Z"},"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"repository":{"type":"git","url":"https://tblobaum@github.com/tblobaum/stats-array.git"},"_id":"stats-array","_rev":"1-abe6fb3a9cfa00b5017f33e331f8c921"}ÿdocument-storeÿsqlparserœ{"id":"sqlparser","rev":"1-340e458de1aa77e3c9ec2b5df4e7892d","rev_tree":[{"pos":1,"ids":["340e458de1aa77e3c9ec2b5df4e7892d",{"status":"available"},[]]}],"rev_map":{"1-340e458de1aa77e3c9ec2b5df4e7892d":3973},"winningRev":"1-340e458de1aa77e3c9ec2b5df4e7892d","deleted":false,"seq":3973}ÿby-sequenceÿ0000000000003973Þ>{"name":"sqlparser","description":"A simple sql parser tool","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.0":{"name":"sqlparser","version":"0.1.0","author":{"name":"Vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0","jscoverage":">=0.1.1"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c5c8293dc55ea253a79ad844de8f530a7bf0100d","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.0.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.1":{"name":"sqlparser","version":"0.1.1","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0","jscoverage":">=0.1.1"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1f943a8e104ae2cc0b4359d2fe679eed9c451683","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.1.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.2":{"name":"sqlparser","version":"0.1.2","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0","jscoverage":">=0.1.1"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"0b34ab0ad48fa1debf4eccecb06d6681e2c9c9c1","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.2.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.3":{"name":"sqlparser","version":"0.1.3","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0","jscoverage":">=0.1.1"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"e550958a5809b4e80af8c6f201f9d505f0868c9f","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.3.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.4":{"name":"sqlparser","version":"0.1.4","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql","parser"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.4","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"923a9cabacdcf063c2f5d110853e23f8784e8c4c","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.4.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.5":{"name":"sqlparser","version":"0.1.5","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql","parser"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d3ca8bcb3acc3c645c5fadc0dfa100843857cd93","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.5.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.6":{"name":"sqlparser","version":"0.1.6","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql","parser"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"17885a0fec86c2b925fc02deea3358ecf1460555","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.6.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]},"0.1.7":{"name":"sqlparser","version":"0.1.7","author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"homepage":"https://github.com/vincent-zhao/sqlparser","description":"A simple sql parser tool","keywords":["sql","parser"],"dependencies":{},"engines":{"node":">=0.6.6"},"main":"lib/sqlParser.js","devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"test":"make test"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"sqlparser@0.1.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"18b88d0b4154c89075789a7d186bf82f8db49c98","tarball":"http://registry.npmjs.org/sqlparser/-/sqlparser-0.1.7.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]}},"readme":"\n# 介ç»\n\n`sql-parser`是一个简å•çš„sqlè§£æžå™¨ã€‚将一å¥å®Œæ•´çš„sql语å¥è§£æžä¸ºä¸€ä¸ªJavaScript对象\n\n* 支æŒselect,insert,delete,update语å¥\n* 除select部分支æŒå­sqlä»¥å¤–ï¼Œéƒ½ä¸æ”¯æŒå­sql嵌套\n* selectçš„from关键字和join关键字åŽï¼Œå¯ä»¥åµŒå¥—å­sql\n* å››ç§sql语å¥çš„è§£æžç»“果对象å¯ä»¥æŸ¥çœ‹test目录下的å•元测试用例æ¥äº†è§£\n\n# 安装\n\n```bash\n$ npm install sqlparser\n```\n\n# 使用\n\nsql-parser的使用éžå¸¸æ–¹ä¾¿\n\n```javascript\nvar sqlParser = require('sqlparser');\n\nvar result = sqlParser.parse('select * from table');\n```\n\n# 测试\n\n* å•元测试:根目录下è¿è¡Œ make test\n* 代ç è¦†ç›–率测试:根目录下è¿è¡Œ make cov,在根目录下获得coverage.html为结果\n\n# è”系方å¼\n\n如有任何æ„è§æˆ–者建议,请和我è”ç³» zzqvincent@gmail.com\n","maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}],"time":{"modified":"2012-05-13T04:49:10.762Z","created":"2012-04-04T20:39:42.074Z","0.1.0":"2012-04-04T20:39:46.216Z","0.1.1":"2012-04-05T17:43:33.262Z","0.1.2":"2012-04-05T17:53:37.718Z","0.1.3":"2012-04-09T13:40:21.187Z","0.1.4":"2012-04-10T03:38:53.143Z","0.1.5":"2012-05-09T07:17:42.472Z","0.1.6":"2012-05-09T08:39:56.858Z","0.1.7":"2012-05-13T04:49:10.762Z"},"author":{"name":"vincent-zhao","url":"zzqvincent@gmail.com"},"_id":"sqlparser","_rev":"1-340e458de1aa77e3c9ec2b5df4e7892d"}ÿdocument-storeÿsnvm—{"id":"snvm","rev":"1-e9ada543d6d6349119f5f4cee72110f7","rev_tree":[{"pos":1,"ids":["e9ada543d6d6349119f5f4cee72110f7",{"status":"available"},[]]}],"rev_map":{"1-e9ada543d6d6349119f5f4cee72110f7":3972},"winningRev":"1-e9ada543d6d6349119f5f4cee72110f7","deleted":false,"seq":3972}ÿby-sequenceÿ0000000000003972…${"name":"snvm","description":"Simple node version management.","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.4":{"author":{"name":"Siddharth Mahendraker","email":"siddharth_mahen@me.com"},"name":"snvm","description":"Simple node version management.","keywords":["simple","node","version","management"],"version":"0.0.4","repository":{"type":"git","url":"git@github.com:siddMahen/snvm.git"},"bin":{"snvm":"./bin/snvm"},"readme":"# snvm\n\nSimple node version management.\n\n## Installation\n\nUsing `npm`, do:\n\n```\n$ npm install -g snvm\n```\n\n## Usage\n\n`snvm` is dead easy to use:\n\n```\nusage: snvm [ install | delete | use | list ] [version]\n\n Easily manage different versions of node.js\n\n snvm install [version] -- installs the specified version of node\n snvm delete [version] -- remove the specified version of node\n snvm use [version] -- switches to a pre-installed version of node\n snvm list -- lists all installed versions of node\n\n Where a [version] is version tag of the for [v]x.x.x, e.g: v0.7.10\n```\n\n## License\n\n(The MIT License)\n\nCopyright (C) 2012 by Siddharth Mahendraker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"snvm@0.0.4","dist":{"shasum":"b0c1881f8715c89cb0e806d8adf8b9c5615a2934","tarball":"http://registry.npmjs.org/snvm/-/snvm-0.0.4.tgz"},"maintainers":[{"name":"siddmahen","email":"siddharth_mahen@me.com"}]}},"readme":"# snvm\n\nSimple node version management.\n\n## Installation\n\nUsing `npm`, do:\n\n```\n$ npm install -g snvm\n```\n\n## Usage\n\n`snvm` is dead easy to use:\n\n```\nusage: snvm [ install | delete | use | list ] [version]\n\n Easily manage different versions of node.js\n\n snvm install [version] -- installs the specified version of node\n snvm delete [version] -- remove the specified version of node\n snvm use [version] -- switches to a pre-installed version of node\n snvm list -- lists all installed versions of node\n\n Where a [version] is version tag of the for [v]x.x.x, e.g: v0.7.10\n```\n\n## License\n\n(The MIT License)\n\nCopyright (C) 2012 by Siddharth Mahendraker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"siddmahen","email":"siddharth_mahen@me.com"}],"time":{"modified":"2012-07-12T12:53:50.538Z","created":"2012-07-12T12:53:48.237Z","0.0.4":"2012-07-12T12:53:50.538Z"},"author":{"name":"Siddharth Mahendraker","email":"siddharth_mahen@me.com"},"repository":{"type":"git","url":"git@github.com:siddMahen/snvm.git"},"_id":"snvm","_rev":"1-e9ada543d6d6349119f5f4cee72110f7"}ÿdocument-storeÿsmartmatch{"id":"smartmatch","rev":"1-274d923a1d6d168a154a919195b9655f","rev_tree":[{"pos":1,"ids":["274d923a1d6d168a154a919195b9655f",{"status":"available"},[]]}],"rev_map":{"1-274d923a1d6d168a154a919195b9655f":3971},"winningRev":"1-274d923a1d6d168a154a919195b9655f","deleted":false,"seq":3971}ÿby-sequenceÿ0000000000003971ú;{"name":"smartmatch","description":"A faux-overloaded equality function for JavaScript.","d,tò0ùist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"J. Thomas Martin","email":"jthomm@yahoo.com"},"name":"smartmatch","description":"A faux-overloaded equality function for JavaScript.","version":"0.1.0","repository":{"type":"git","url":"git://github.com/jthomm/smartmatch.git"},"main":"smartmatch.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jthomm","email":"jthomm@yahoo.com"},"_id":"smartmatch@0.1.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"59ec489df5d342c7ef89db7d2404d03c30dbba9d","tarball":"http://registry.npmjs.org/smartmatch/-/smartmatch-0.1.0.tgz"},"_from":"smartmatch","maintainers":[{"name":"jthomm","email":"jthomm@yahoo.com"}]}},"readme":"# Smartmatch.js\n\n`smartmatch` is a faux-overloaded equality function for JavaScript. For example:\n\n```js\n// Normal comparison\nsmartmatch('I got it!', 'I got it!');\n\n// At least one item in the array smartmatches the second argument\nsmartmatch(['Jenny', '867-5309', 'I got it!'], 'I got it!');\n\n// RegExp comparison\nsmartmatch(['Jenny', '867-5309', 'I got it!'], /\\d{3}-\\d{4}/);\n\n// Common keys smartmatch each other\nsmartmatch({name: 'Jenny', number: '867-5309', date: new Date(1981, 10, 16)}, {date: '16-Nov-1981'});\n\n// Probably...\nsmartmatch('Jenny', function (name) { return bayes.classify(name) === 'female'; });\n```\n\n## Performance\n\nSince JavaScript does not support type checking by default, `smartmatch` does it at run time. Thus, if performance is your top priority, you might want to look elsewhere.\n\nHowever, you may be interested to know that `smartmatch` is no more than 5x slower than direct comparison on a mixed bag of type combinations (see [this unscientific investigation](http://jsperf.com/smartmatch-vs-direct-comparison/2)). In most cases, we're talking less than an order of magnitude performance degradation.\n\n## Rationale\n\nA straightforward use case might involve finding objects inside of a collection. Suppose, for example, you had a collection of objects about NFL running backs:\n\n```js\nvar rbs = [\n {name: 'Arian Foster', age: 25, team: 'HOU', ypc: 4.7},\n {name: 'Ray Rice', age: 25, team: 'BAL', ypc: 4.6},\n {name: 'LeSean McCoy', age: 24, team: 'PHI', ypc: 4.8},\n {name: 'Ryan Mathews', age: 24, team: 'SD', ypc: 4.7},\n {name: 'Chris Johnson', age: 26, team: 'TEN', ypc: 4.8},\n {name: 'Maurice Jones-Drew', age: 27, team: 'JAC', ypc: 4.6},\n {name: 'Matt Forte', age: 26, team: 'CHI', ypc: 4.2},\n {name: 'DeMarco Murray', age: 22, team: 'DAL', ypc: 5.5},\n {name: 'Jonathan Stewart', age: 25, team: 'CAR', ypc: 4.8},\n {name: 'Roy Helu', age: 23, team: 'WAS', ypc: 4.2},\n {name: 'DeAngelo Williams', age: 29, team: 'CAR', ypc: 5.1}\n];\n```\n\nThen you could easily check and see whether any Panthers backs average more than 5 yards-per-carry:\n\n```js\nsmartmatch(rbs, {ypc: function (ypc) { return ypc > 5; }, team: 'CAR'}); // true\n```\n\n...or find all running backs in the NFC East with cool names:\n\n```js\nvar query = {name: /^[A-Z][a-z]+[A-Z]/, team: ['NYG', 'WAS', 'DAL', 'PHI']}, i = rbs.length, rb;\n\nwhile (--i) {\n rb = rbs[i];\n if (smartmatch(rb, query)) {\n console.log(rb);\n }\n}\n\n// {name: 'DeMarco Murray', age: 22, team: 'DAL', ypc: 5.5}\n// {name: 'LeSean McCoy', age: 24, team: 'PHI', ypc: 4.8}\n```\n\n## Behavior Table\n\nIf `smartmatch(x, y)`, the first column denotes `x`'s type and the top row denotes `y`'s:\n\n```js\n+----------+-------------------------------+-----------+--------------+--------------+\n| | Function | Array | Object | RegExp |\n+----------+-------------------------------+-----------+--------------+--------------+\n| Function | x.toString() === y.toString() | !!x(y) | !!x(y) | !!x(y) |\n| Array | !!y(x) | all(x, y) | any(x, y) | any(x, y) |\n| Object | !!y(x) | any(y, x) | values(x, y) | false |\n| RegExp | !!y(x) | any(y, x) | false | srcCmp(x, y) |\n| String | !!y(x) | any(y, x) | false | y.test(x) |\n| Date | !!y(x) | any(y, x) | false | y.test(x) |\n| Number | !!y(x) | any(y, x) | false | y.test(x) |\n| Other | !!y(x) | any(y, x) | false | false |\n+----------+-------------------------------+-----------+--------------+--------------+\n```\n```js\n+----------+---------------------+---------------------+-----------------+-----------+\n| | String | Date | Number | Other |\n+----------+---------------------+---------------------+-----------------+-----------+\n| Function | !!x(y) | !!x(y) | !!x(y) | !!x(y) |\n| Array | any(x, y) | any(x, y) | any(x, y) | any(x, y) |\n| Object | false | false | false | false |\n| RegExp | x.test(y) | x.test(y) | x.test(y) | false |\n| String | x === y | +new Date(x) === +y | x === String(y) | false |\n| Date | +x === +new Date(y) | +x === +y | +x === +y | false |\n| Number | String(x) === y | +x === +y | harmEgal(x, y) | false |\n| Other | false | false | false | x === y |\n+----------+---------------------+---------------------+-----------------+-----------+\n```\n\n...where:\n\n* `all(x, y)` means corresponding elements of `x` and `y` smartmatch one another\n* `any(x, y)` means at least one element of `x` smartmatches `y`\n* `values(x, y)` means the values of keys that `x` and `y` both have smartmatch one another\n* `srcCmp(x, y)` means the source and flags of regexes `x` and `y` are the same\n* `harmEgal(x, y)` stands for `x === y ? (x !== 0 || 1 / x === 1 / y) : x !== x && y !== y`\n\n## License\n\nCopyright (c) 2012 J. Thomas Martin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"jthomm","email":"jthomm@yahoo.com"}],"time":{"modified":"2012-08-03T02:40:25.767Z","created":"2012-08-03T02:40:24.885Z","0.1.0":"2012-08-03T02:40:25.767Z"},"author":{"name":"J. Thomas Martin","email":"jthomm@yahoo.com"},"repository":{"type":"git","url":"git://github.com/jthomm/smartmatch.git"},"_id":"smartmatch","_rev":"1-274d923a1d6d168a154a919195b9655f"}ÿdocument-storeÿskeleton-jsž{"id":"skeleton-js","rev":"1-f979dbae5177acc657af52d695aab14d","rev_tree":[{"pos":1,"ids":["f979dbae5177acc657af52d695aab14d",{"status":"available"},[]]}],"rev_map":{"1-f979dbae5177acc657af52d695aab14d":3970},"winningRev":"1-f979dbae5177acc657af52d695aab14d","deleted":false,"seq":3970}ÿby-sequenceÿ0000000000003970Ó{"name":"skeleton-js","description":"SkeletonJS is a application architecture built in top of BackboneJS","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"skeleton-js","description":"SkeletonJS is a application architecture built in top of BackboneJS","version":"0.0.1","homepage":"https://github.com/wlepinski/skeleton-js","author":{"name":"William Lepinski","email":"willsp@gmail.com"},"repository":{"type":"git","url":"https://github.com/wlepinski/skeleton-js"},"bugs":{"url":"https://github.com/wlepinski/skeleton-js/issues"},"engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"0.3.x"},"devDependencies":{},"keywords":[],"readme":"![SkeletonJS](http://wlepinski.blog.br/skeleton-js/skeleton-js-logo.png)\n\n# An Application Architecture Using Backbone, RequireJS, CoffeScript and QUnit\n\n## Introduction\n\nSkeleton was initially developed to fit the requirements of an client's project in development at [dclick.com.br]. Basically, it is an architecture for JavaScript applications using the [Backbone.js](http://documentcloud.github.com/backbone/), [RequireJS](http://requirejs.org/), [CoffeScript](http://coffeescript.org) and well tested with [QUnit](http://docs.jquery.com/QUnit). The main focus of this bunch of classes is deliver an enterprise single-page application using some of the new libraries and technologies available for Javascript development. ","_id":"skeleton-js@0.0.1","dist":{"shasum":"7dffae4744ca87752b26de77c5f705f0b3364132","tarball":"http://registry.npmjs.org/skeleton-js/-/skeleton-js-0.0.1.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}]}},"readme":"![SkeletonJS](http://wlepinski.blog.br/skeleton-js/skeleton-js-logo.png)\n\n# An Application Architecture Using Backbone, RequireJS, CoffeScript and QUnit\n\n## Introduction\n\nSkeleton was initially developed to fit the requirements of an client's project in development at [dclick.com.br]. Basically, it is an architecture for JavaScript applications using the [Backbone.js](http://documentcloud.github.com/backbone/), [RequireJS](http://requirejs.org/), [CoffeScript](http://coffeescript.org) and well tested with [QUnit](http://docs.jquery.com/QUnit). The main focus of this bunch of classes is deliver an enterprise single-page application using some of the new libraries and technologies available for Javascript development. ","maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"time":{"modified":"2012-07-12T01:26:58.560Z","created":"2012-07-12T01:26:55.939Z","0.0.1":"2012-07-12T01:26:58.560Z"},"author":{"name":"William Lepinski","email":"willsp@gmail.com"},"repository":{"type":"git","url":"https://github.com/wlepinski/skeleton-js"},"_id":"skeleton-js","_rev":"1-f979dbae5177acc657af52d695aab14d"} ÿdocument-storeÿsimple-monitor¡{"id":"simple-monitor","rev":"1-902a7e17d302192d9728391a9ddcfa6e","rev_tree":[{"pos":1,"ids":["902a7e17d302192d9728391a9ddcfa6e",{"status":"available"},[]]}],"rev_map":{"1-902a7e17d302192d9728391a9ddcfa6e":3969},"winningRev":"1-902a7e17d302192d9728391a9ddcfa6e","deleted":false,"seq":3969}ÿby-sequenceÿ0000000000003969æÎ{"name":"simple-monitor","description":"Monitoring for node.js applications","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.0":{"name":"simple-monitor","version":"0.1.0","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"101ca489a014b115a3b268f4ac966e99000d7efb","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.0.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.1":{"name":"simple-monitor","version":"0.1.1","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"5a0b79239c4a5966f8c33e7eb5caed710a6492f6","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.1.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.2":{"name":"simple-monitor","version":"0.1.2","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"bba963afd0e74bbda6dde43ab254582f1779f9d1","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.2.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.3":{"name":"simple-monitor","version":"0.1.3","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"235398d55d332f6922eb328f626d114dd9f002fe","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.3.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.4":{"name":"simple-monitor","version":"0.1.4","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"32ccfedc4fc6ab6edf54893421b224d4d4c1604d","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.4.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.5":{"name":"simple-monitor","version":"0.1.5","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"4c8d398fd11aa82657fa26df5b59993edd912918","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.5.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.6":{"name":"simple-monitor","version":"0.1.6","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"dd1e3e1b7ee662968cd1538e97f917f91a3dd496","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.6.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.7":{"name":"simple-monitor","version":"0.1.7","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"f058822525f5c01df8728102015eb62f2e049047","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.7.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]},"0.1.8":{"name":"simple-monitor","version":"0.1.8","main":"./lib/monitor.js","description":"Monitoring for node.js applications","author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"directories":{"lib":"./lib","test":"./test"},"scripts":{"test":"mocha --ui tdd -R spec"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"dependencies":{"underscore":">=1.3.3","underscore.string":">=2.0.0","nodemailer":">=0.3.20","async":">= 0.1.22"},"devDependencies":{"coffee-script":">= 1.3.3","mocha":">= 0.12.1"},"engines":{"node":">=0.6"},"_npmUser":{"name":"voronchuk","email":"voronchuk@gmail.com"},"_id":"simple-monitor@0.1.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"_from":"simple-monitor@>= 0.1.0","dist":{"shasum":"dfc140af827c1dc094ff91f2b73655f36cf5d3f8","tarball":"http://registry.npmjs.org/simple-monitor/-/simple-monitor-0.1.8.tgz"},"maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}]}},"readme":"node-monitor\n============\n\nRuntime monitoring for node.js applications\n\nIntroduction\n------------\n\nnode-monitor records and gives you access to vital statistics about your \nrunning node.js application.\n\nAs a developer, node-monitor gives you a consistent pattern for exposing \nbusiness events, monitoring exceptions, and managing errors and callbacks\nin your asynchronous code.\n\nDuring configuration and deployment, node-monitor lets you configure \nstandard output logging, or customized logging and alerts. Logging and\nalerts can be defined application-wide, module-wide, or for a specific \nevent or error condition.\n\nThe provided loggers let you log to files, to a CouchDB database, to an email\ndistribution list, an SMS gateway, an internal event, or an external program.\n\nWhen your application exits, node-monitor produces an activity report listing\nactivity for each monitor that fired throughout the lifetime of the application.\n\n\nInstallation & Testing\n----------------------\n\nNode-monitor installs with *npm* and comes with an extensive suite of tests to \nmake sure it performs well in your deployment environment.\n\nTo install and test node-monitor:\n\n $ npm install monitor\n $ npm test monitor\n\n\nEvent Monitoring\n----------------\n\nStart by defining the monitor at the top of your module. Subsequent examples \nuse this *monitor* variable.\n\n var monitor = require('monitor')('Customers');\n\nWhenever you wish to record an event, call *monitor.event()*:\n\n monitor.event('Customer purchase', invoice.amount);\n\nIf you pass a Date object to the monitor, it assumes it's a start of an\ninterval, and records the number of milliseconds from that time. Example:\n\n var beforeDbSave = new Date();\n db.save(customer, function() {\n\n // Monitor the DB save time\n monitor.event('Customer save time, ms.', beforeDbSave);\n\n });\n\nIn the above example, customer database save times are monitored. Logging\ncan be turned on or off at configuration time or at runtime. First, last,\nmaximum, minimum, average, count, and total execution times are maintained for\nthe *Customer save time, ms.* monitor.\n\nError Monitoring\n----------------\n\nNode-monitor lets you keep track of the health of your running node.js\napplication by giving you a consistent pattern for trapping program errors\nand exceptions.\n\nErrors are conditions preventing your function from producing the intended \nresults. Here's an example using the try/catch pattern:\n\n try {\n ... do something\n } catch (e) {\n monitor.error('Customer insertion failure', e);\n ...\n }\n\nIn the above example, if an exception is thrown between the try and catch\nblock, the *Customer insertion failure* monitor will log the error, and keep\ntrack of failure statistics. \n\nUsing the asynchronous callback pattern, you can monitor errors that occur\nin asynchronous functions, easily trapping and forwarding these errors to the\ncallback function. \n\nLong form example:\n\n function saveCustomer(customer, callback) {\n ...\n db.save(customer.id, function(err, dbObject) {\n \n // Forward database errors to our callback\n if (err) {\n monitor.error('Customer db.save error', err);\n if (callback) {\n callback(err);\n }\n return;\n }\n ...\n });\n }\n\nSame, only using the short form:\n\n function saveCustomer(customer, callback) {\n ...\n db.save(customer.id, function(err, dbObject) {\n \n // Forward database errors to our callback\n if (err) return monitor.error('Customer db.save error', err, callback);\n ...\n });\n }\n\nIn these examples, the *Customer db.save error* monitor will log and track the\nerror, and if a callback is specified, it is called with the error object as\nthe first (and only) argument.\n\nLogging & Alerts\n----------------\n\nMonitor loggers are separated into two categories - eventLoggers and \nerrorLoggers. These loggers can be configured application-wide, module-wide,\nor for individual event and error types.\n\nThe default event logger is *require('sys').log*, and the default error logger \nis *require('sys').debug*. Changing these defaults and writing your own loggers\nare done at configuration time (see _Configuration_ below)\n\nExternal alerts are written with loggers, and can be as simple or as complex\nas you desire. For example, you could write a logger which sends an email\nwhen the error occurs. \n\nEmail logger example:\n\n // Email logger\n var fs = require('fs');\n var exec = require('child_process').exec;\n var mail_cmd = \"mail -s 'Program Error' john.doe@example.com\";\n var errorLogger = function(message, value, err, monitor) {\n\n // Write the error message to a temp file\n var tmpfile = \"/tmp/\" + Math.random() + \".out\";\n fs.writeFile(tmpfile, message, function (err) {\n if (err) throw err;\n \n // Mail the message\n exec(mail_cmd + \" < \" + tmpfile, function(err) {\n if (err) throw err;\n \n // Remove the temporary file\n fs.unlink(tmpfile, function(err){\n if (err) throw err;\n });\n });\n });\n }\n \nSee the _Configuration_ section below for attaching loggers to various monitors\nwithin your application.\n\nConfiguration\n-------------\n\nnode-monitor uses the config package for configuration. This allows you to\nspecify configurations in a file or on the command line. See the node-config\npackage for more information about specifying configuration options for your\ndifferent application deployments.\n\nThe following configuration parameters are recognized:\n\n * enabled - (boolean) Should the monitor be enabled? (default: true)\n * eventLogger - Logger[s] to use for events (default: sys.log)\n Can be a single logger, or an array of loggers.\n * errorLogger - Logger[s] to use for errors (default: sys.debug)\n Can be a single logger, or an array of loggers.\n * maxLogSize - Limit the log output to this size (default: 10k)\n\nThese configuration parameters can be specified globally, or as defaults\nfor all monitors in a particular module, or on a monitor by monitor basis\nwithin a module.\n\n_Global_ - specify them as defaults for the 'monitor' module. Example:\n\n // production.js - Configurations for the production deployment\n module.exports = {\n monitor: {\n defaults: {\n eventLogger: null,\n maxLogSize: 4196\n }\n },\n ...\n }\n \nThe above configuration turns off logging for the event logger, and sets the\nmaxLogSize parameter for all monitors (unless overridden).\n\n_Module Defaults_ - specify them as the 'defaults' monitor for your module.\nExample:\n\n // production.js - Configurations for the production deployment\n module.exports = {\n Customer: {\n monitor: {\n defaults: {\n errorLogger: require('monitor/emailLogger'),\n maxLogSize: 4196\n }\n }\n }\n }\n\n // Customer.js - Customer module\n var config = require('config')('Customer'); \n var monitor = require('monitor')('Customer', config.monitor);\n \nThe above configuration defines module-level monitor defaults for *Customer*\n\n_Per Monitor_ - specify per-monitor configurations like per-module (above),\nonly use the monitor name instead of 'default'. Example:\n\n // production.js - Configurations for the production deployment\n module.exports = {\n Customer: {\n monitor: {\n default: {\n errorLogger: null\n },\n 'Customer insertion failure': {\n errorLogger: require('monitor/emailLogger')\n },\n 'Customer save time, ms.': {\n enabled: false\n }\n }\n }\n }\n\n // Customer.js - Customer module\n var config = require('config')('Customer'); \n var monitor = require('monitor')('Customer', config.monitor);\n\nThe above configuration defaults error logging off for monitors within the\n*Customer* module. The the *Customer insertion failure* monitor overrides this\ndefault, and the *Customer save time, ms.* monitor is disabled.\n\nAPI\n---\n\nWhen you run require('monitor')('my-module', config), an instance of a \nModuleMonitor class is returned. Module monitors contain individual monitors\nfor your module, and methods for easily adding to the monitors. \n\nnode-monitor\n\nrequire('monitor')(moduleName, configuration) - This returns a Module monitor\nobject for the specified moduleName, creating it if necessary.\n\n moduleName - The name of your module\n configuration - An object containing these elements:\n enabled - (boolean) Should the monitor be enabled? (default: true)\n eventLogger - Logger[s] to use for events (default: util.log)\n Can be a single logger, or an array of loggers.\n errorLogger - Logger[s] to use for errors (default: util.debug)\n Can be a single logger, or an array of loggers.\n maxLogSize - Limit individual log output to this size (default: 10k)\n\nrequire('monitor').getAllMonitors() - This returns an object containing\nnamed ModuleMonitor objects for each module.\n\nModuleMonitor\n\nInstances of this class contain a dictionary of Monitor objects for each\nnamed monitor in your module. Convenience methods exist for easily adding to \nindividual named monitors.\n\nnew ModuleMonitor(moduleName, configs) - Constructor\n\n Inputs:\n moduleName - Name of your module\n configs - A dictionary of monitor configurations for this module\n key: monitorName, or 'defaults' for the module level defaults\n value: A configuration object for the monitor, possibly including:\n enabled - (boolean) Should the monitor be enabled? (default: true)\n eventLogger - Logger[s] to use for events (default: util.log)\n Can be a single logger, or an array of loggers.\n errorLogger - Logger[s] to use for errors (default: util.debug)\n Can be a single logger, or an array of loggers.\n maxLogSize - Limit individual log output to this size (default: 10k)\n Output:\n A new ModuleMonitor class instance\n\nModuleMonitor.get(monitorName) - Get a named Monitor object. If the Monitor\nobject exists it will be returned, otherwise it will be created.\n\n Inputs:\n monitorName - Name of the monitor\n Output:\n An instance of the Monitor class for the specified monitorName\r\n\nModuleMonitor.getMonitors() - Get the list of Monitor objects for the module.\n\n Inputs: (none)\n Output:\n An object containing all monitor objects for the module, by name.\r\n\nModuleMonitor.event(name, value, data) - Monitor an event. This adds an amount \nto the specified monitor, and logs the event.\n\n Inputs:\n name - The event (monitor) name.\n value - A numeric value to add to the monitor. Default = 1. If this is a\n Date object, the number of milliseconds between the Date object and\n Date.now() is added to the monitor.\n data - An optional object to pass on to the event logger. May be specified\n as the second argument in place of value (in which case value will\n default to 1).\n\n Output:\n The named monitor object (for chaining)\n\nModuleMonitor.error(name, value) - Monitor an error that shouldn't be occurring.\nThis monitors and logs the specified error. It can be used for exception \nprocessing as well as asynchronous error processing. \n\n Input\n name - The error monitor name\n error - An object representing the error\n callback - An optional method to call (passing the error) after logging.\n \n Output:\n monitor - This monitor (for chaining)\n\nMonitor\n\nnew Monitor(name, moduleName, config, moduleConfig) - Constructor.\n\n Inputs:\n name: This monitor name\n moduleName: Name of the containing module\n config: Specific configurations for this monitor:\n enabled - (boolean) Should the monitor be enabled? (default: true)\n eventLogger - Logger[s] to use for events (default: console.log)\n Can be a single logger, or an array of loggers.\n errorLogger - Logger[s] to use for errors (default: console.debug)\n Can be a single logger, or an array of loggers.\n maxLogSize - Limit the ßNÿùlog output to this size (default: 10k)\n moduleConfig: Default monitor configurations for the module\n enabled - (boolean) Should the monitor be enabled? (default: true)\n eventLogger - Logger[s] to use for events (default: console.log)\n Can be a single logger, or an array of loggers.\n errorLogger - Logger[s] to use for errors (default: console.debug)\n Can be a single logger, or an array of loggers.\n maxLogSize - Limit the log output to this size (default: 10k)\n Output:\n A new Monitor object\n\nMonitor.getHits() - Return the number of hits this monitor has recorded. Hits\nare the total number of logEvent() and logError() calls.\n\nMonitor.getTotal() - Return the total values this monitor has accumulated.\nValues are specified on logEvent() calls. logError() calls accumulate a value \nof one (1) for each call.\n\nMonitor.getAvg() - Return the overall average for the monitor. The average is\nthe total amount as reported by getTotal() divided by the number of hits as\nreported by getHits().\n\nMonitor.getMin() - Return the smallest value added via the logEvent() or \nlogError() methods.\n\nMonitor.getMax() - Return the larges value added via the logEvent() or \nlogError() methods.\n\nMonitor.getFirst() - Return the first value added via the logEvent() or \nlogError() methods.\n\nMonitor.getLoggers() - Return an object containing loggers added using \naddLogger(). The keys are the logger IDs, and values are the logger functions.\n\nMonitor.getLast() - Return the last value added via the logEvent() or \nlogError() methods.\n\nMonitor.getConfig() - Return the actual configuration used for this monitor.\nThis is a mixin of the program defaults, module defaults, and monitor configs\npassed in to the constructor.\n\nMonitor.getName() - Return the name of this monitor.\n\nMonitor.getModuleName() - Return the module name this monitor was created under.\n\nMonitor.isEnabled() - Returns true if the monitor is enabled, false if disabled.\n\nMonitor.enable(enabled) - This enables or disables the monitor. Disabling \nprevents the monitor from accumulating values and logging messages.\n\n Input:\n enabled - (boolean) Enable or disable the monitor\n\nMonitor.reset() - Reset the monitor accumulators to their original state.\n\nMonitor.addLogger(loggerFunction) - Attach a logger function at runtime.\n \n Loggers added using addLogger() will be called for all error and event logging\n called on this monitor.\n \n Input:\n loggerFunction(message, value, data, monitor) - A function to run when\n an event or error is logged. The function accepts:\n message - A formatted message for logging\n value - The numeric value of the event\n data - The data object associated with the event\n monitor - A reference to this monitor object for accessing monitor data\n\n Output:\n loggerId - An ID associated with this logger so it can be retrieved using\n getLogger(), and removed using removeLogger().\n \nMonitor.removeLogger(loggerId) - Remove a logger that was added using \n addLogger(). This removes a logger by the ID assigned using addLogger().\n\n Input:\n loggerId - The ID returned by the addLogger function when adding the logger.\n\nMonitor.logEvent(value, data) - Log and accumulate an event.\n\n Input:\n value - An optional numeric value to add to the monitor. Default = 1. \n If this is a Date object, the number of milliseconds between the \n Date object and Date.now() is added to the monitor.\n data - An optional object to pass on to the event logger\n Output:\n monitor - This monitor (for chaining)\n\nMonitor.logError() - Monitor an error that shouldn't be occurring.\n\n Input\n error - An object representing the error\n callback - An optional method to call (passing the err) after logging.\n Output:\n monitor - This monitor (for chaining)\n\nLicense\n-------\n \nReleased under the Apache License 2.0\n \nSee `LICENSE` file.\n \nCopyright (c) 2010 Loren West\n","maintainers":[{"name":"voronchuk","email":"voronchuk@gmail.com"}],"time":{"modified":"2012-07-02T09:38:02.780Z","created":"2012-06-08T13:10:00.547Z","0.1.0":"2012-06-08T13:10:02.521Z","0.1.1":"2012-06-14T12:11:57.478Z","0.1.2":"2012-06-14T12:46:09.860Z","0.1.3":"2012-06-22T13:41:53.317Z","0.1.4":"2012-06-22T13:46:05.693Z","0.1.5":"2012-06-22T14:17:13.988Z","0.1.6":"2012-06-22T14:33:33.026Z","0.1.7":"2012-07-02T09:30:37.404Z","0.1.8":"2012-07-02T09:38:02.780Z"},"author":{"name":"Vyacheslav Voronchuk","email":"voronchuk@gmail.com"},"repository":{"type":"git","url":"git://github.com/Voronchuk/simple-monitor.git"},"_id":"simple-monitor","_rev":"1-902a7e17d302192d9728391a9ddcfa6e"}ÿdocument-storeÿshitty-router {"id":"shitty-router","rev":"1-6162ec501e3776e62e584023c2434b84","rev_tree":[{"pos":1,"ids":["6162ec501e3776e62e584023c2434b84",{"status":"available"},[]]}],"rev_map":{"1-6162ec501e3776e62e584023c2434b84":3968},"winningRev":"1-6162ec501e3776e62e584023c2434b84","deleted":false,"seq":3968}ÿby-sequenceÿ0000000000003968Û {"name":"shitty-router","description":"Another simple regular expression based router","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"shitty-router","version":"0.3.0","author":{"name":"Ian Cox","email":"iancox@dyselon.com"},"description":"Another simple regular expression based router","main":"./lib/shitty-router.js","repository":{"type":"git","url":"git://github.com/dyselon/shitty-router.git"},"keywords":["router"],"devDependencies":{"mocha":"1.1.x"},"license":"MIT","engine":">=0.6.14","_npmUser":{"name":"dyselon","email":"iancox@dyselon.com"},"_id":"shitty-router@0.3.0","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6ece30e23f56e4c8f0d0587ad5c8a27a4dd680b2","tarball":"http://registry.npmjs.org/shitty-router/-/shitty-router-0.3.0.tgz"},"maintainers":[{"name":"dyselon","email":"iancox@dyselon.com"}]}},"readme":"SHITTY-ROUTER\r\n=============\r\n\r\nI needed a really simple url router, that I could make more than one of. All of the options I looked at were a bit too complicated, or weren't reentrant, so I just went ahead and wrote a little one myself. It was pretty straightforward, but I figured it might help someone else.\r\n\r\nUsage\r\n-----\r\n\r\n``` coffeescript\r\nhttp = require 'http'\r\nShittyRouter = require 'shitty-router'\r\n\r\nmyrouter = new ShittyRouter\r\n\r\n# .addRoute is the function you're looking for\r\nmyrouter.addRoute \"GET\", '/posts', (params, extras) ->\r\n extras.res.end(\"Matched to /posts\")\r\nmyrouter.addRoute \"GET\", '/posts/:id', (params, extras) ->\r\n extras.res.end(\"Matched to /posts/\" + params.id)\r\n\r\n# .addRouteRegex takes a regular expression, the names of any parameters,\r\n# and the callback to fire if the expression is matched\r\n#\r\n# The callback takes first any parameters specified in regular expression,\r\n# and second, additional information provided by the matcher\r\n\r\nmyrouter.addRouteRegex \"GET\", /\\/user\\/(?:([^\\/]+?))$/, [\"userid\"], (params, extras) ->\r\n extras.res.end(\"Matched to /user/\" + params.userid)\r\n\r\n# You can skip the parameters if there aren't any\r\n\r\nmyrouter.addRouteRegex \"GET\", /\\/test/, (params, extras) ->\r\n extras.res.end(\"Matched to /test\")\r\n\r\n# .match returns true if it matches any routes, and false if it doesn't\r\n# it also calls the route's callback. You can pass that callback an object with\r\n# anything it needs to know about.\r\nserver = http.createServer (req, res) ->\r\n res.end \"404'd!\" if not myrouter.match req.method, req.url, { req: req, res: res }\r\nserver.listen 8080\r\n```\r\n\r\nLicense\r\n-------\r\n\r\nCopyright (C) 2012 Ian Cox\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n","maintainers":[{"name":"dyselon","email":"iancox@dyselon.com"}],"time":{"modified":"2012-06-14T04:32:44.575Z","created":"2012-06-14T04:32:42.322Z","0.3.0":"2012-06-14T04:32:44.575Z"},"author":{"name":"Ian Cox","email":"iancox@dyselon.com"},"repository":{"type":"git","url":"git://github.com/dyselon/shitty-router.git"},"_id":"shitty-router","_rev":"1-6162ec501e3776e62e584023c2434b84"}ÿdocument-storeÿshellout›{"id":"shellout","rev":"1-0f3f259c3631771045bc8844813782ec","rev_tree":[{"pos":1,"ids":["0f3f259c3631771045bc8844813782ec",{"status":"available"},[]]}],"rev_map":{"1-0f3f259c3631771045bc8844813782ec":3967},"winningRev":"1-0f3f259c3631771045bc8844813782ec","deleted":false,"seq":3967}ÿby-sequenceÿ0000000000003967ó {"name":"shellout","description":"simple shelling out for spawning commands and concatenating the stderr/stdout in a callback","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"shellout","description":"simple shelling out for spawning commands and concatenating the stderr/stdout in a callback","tags":["cli","simple","util","utility"],"version":"0.0.1","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/node-shellout.git"},"bugs":{"url":"http://github.com/maxogden/node-shellout/issues"},"engines":["node >= 0.4.0"],"dependencies":{"concat-stream":"0.0.6"},"scripts":{"test":"node test.js ls"},"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"shellout@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"a29aac8ca0729ae933ac6ff505bca791a9e13d97","tarball":"http://registry.npmjs.org/shellout/-/shellout-0.0.1.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]}},"readme":"# node-shellout\n\n npm install shellout\n\nthen\n\n var concat = require('shellout')\n shellout('ls', function(err, out) {\n // undefined 'index.js\\nnode_modules\\npackage.json\\nreadme.md\\ntest.js\\n'\n })\n\nsee also: [[https://github.com/bahamas10/node-exec]]\n\nMIT LICENSE\n","maintainers":[{"name":"maxogden","email":"max@maxogden.com"}],"time":{"modified":"2012-08-03T17:01:24.901Z","created":"2012-08-03T17:01:22.952Z","0.0.1":"2012-08-03T17:01:24.901Z"},"author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/node-shellout.git"},"_id":"shellout","_rev":"1-0f3f259c3631771045bc8844813782ec"}ÿdocument-storeÿshef—{"id":"shef","rev":"1-875fab9d48fa3cb3a57a78bae3c07db2","rev_tree":[{"pos":1,"ids":["875fab9d48fa3cb3a57a78bae3c07db2",{"status":"available"},[]]}],"rev_map":{"1-875fab9d48fa3cb3a57a78bae3c07db2":3966},"winningRev":"1-875fab9d48fa3cb3a57a78bae3c07db2","deleted":false,"seq":3966}ÿby-sequenceÿ0000000000003966é){"name":"shef","description":"A node.js client for your DIRECTV boxes","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"shef","version":"0.0.1","description":"A node.js client for your DIRECTV boxes","main":"index.js","scripts":{"test":"tap ./tests"},"repository":{"type":"git","url":"git://github.com/kevinohara80/shef.git"},"keywords":["directv","shef","dish","satellite","tv","television","home","automation"],"author":{"name":"Kevin O'Hara"},"license":"MIT","dependencies":{"request":"~2.10.0"},"devDependencies":{"tap":"~0.3.0"},"readme":"shef\n====\n\nA node.js client for your DIRECTV boxes.\n\n## Usage\n\nInstall...\n\n```bash\n$ npm install shef\n```\n\nConnect to one of your boxes and do some stuff...\n\n```js\nvar shef = require('../');\nvar box1 = shef.box('192.168.0.114');\n\nbox1.tune(234, function(err, res) {\n if(!err) console.log('Tuned to channel 234');\n});\n```\n\n## API\n\n### shef.box(host) || shef.box(opts)\n\n### box.getTuned(cb)\n\n### box.getProgInfo(chan, cb) || getProgInfo(opts, cb)\n\n### box.tune(chan, cb) || tune(opts, cb)\n\n### box.key(key_name).up(cb)\n\n### box.key(key_name).down(cb)\n\n### box.key(key_name).press(cb)\n\n### box.getVersion(cb)\n\n### box.getOptions(cb)\n\n### box.getMode(cb)\n\n### box.getLocations(cb)\n\n## More Info\n\n[SHEF API Guide](http://www.satinstalltraining.com/homeautomation/DTV-MD-0359-DIRECTV_SHEF_Command_Set-V1.3.C.pdf)","_id":"shef@0.0.1","dist":{"shasum":"77731cf15a8e90e05b71ce43ace99c681e9a8a7f","tarball":"http://registry.npmjs.org/shef/-/shef-0.0.1.tgz"},"maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}]},"0.0.2":{"name":"shef","version":"0.0.2","description":"A node.js client for your DIRECTV boxes","main":"index.js","scripts":{"test":"tap ./tests"},"repository":{"type":"git","url":"git://github.com/kevinohara80/shef.git"},"keywords":["directv","shef","dish","satellite","tv","television","home","automation"],"author":{"name":"Kevin O'Hara"},"license":"MIT","dependencies":{"request":"~2.10.0"},"devDependencies":{"tap":"~0.3.0"},"readme":"shef\n====\n\nA node.js client for your DIRECTV boxes. This is another module to further enable my ability to control my whole house with node.js.\n\n## Usage\n\nInstall...\n\n```bash\n$ npm install shef\n```\n\nConnect to one of your boxes and do some stuff...\n\n```js\nvar shef = require('../');\nvar box1 = shef.box('192.168.0.114');\n\nbox1.tune(234, function(err, res) {\n if(!err) console.log('Tuned to channel 234');\n});\n```\n\n## Box Setup\n\nYour DIRECTV boxes might need a bit of setup. Here are the steps...\n\n1. Go to `Menu->System Setup->Whole-Home->External Device`\n2. Set `External Access`, `Current Program`, and `Recordings` to \"Allow\"\n\n## API\n\n### shef.box(host) || shef.box(opts)\n\nCreate an instance of a box object to represent one of your DIRECTV boxes\n\n### box.getTuned(cb)\n\nReturn the information about the current tuned channel on the box\n\n### box.getProgInfo(chan, cb) || getProgInfo(opts, cb)\n\nGet information about a program\n\n### box.tune(chan, cb) || tune(opts, cb)\n\nTune your box to a certain channel\n\n### box.key(key_name).up(cb)\n\nSimulate a `key up` event on the remote\n\n### box.key(key_name).down(cb)\n\nSimulate a `key down` event on the remote\n\n### box.key(key_name).press(cb)\n\nSimulate a `key press` event on the remote. This is the equivalent of a key down + key up.\n\n### box.getVersion(cb)\n\nGet version information about the box\n\n### box.getOptions(cb)\n\nGet all of the command options for the box\n\n### box.getMode(cb)\n\nGet the current mode of the box. `0` is standby and `1` is active\n\n### box.getLocations(cb)\n\nGet an array of the locations for the box\n\n## More Info\n\n[SHEF API Guide](http://www.satinstalltraining.com/homeautomation/DTV-MD-0359-DIRECTV_SHEF_Command_Set-V1.3.C.pdf)","_id":"shef@0.0.2","dist":{"shasum":"8841bec651516313820b2589701648c9ca1f4f3a","tarball":"http://registry.npmjs.org/shef/-/shef-0.0.2.tgz"},"maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}]}},"readme":"shef\n====\n\nA node.js client for your DIRECTV boxes.\n\n## Usage\n\nInstall...\n\n```bash\n$ npm install shef\n```\n\nConnect to one of your boxes and do some stuff...\n\n```js\nvar shef = require('../');\nvar box1 = shef.box('192.168.0.114');\n\nbox1.tune(234, function(err, res) {\n if(!err) console.log('Tuned to channel 234');\n});\n```\n\n## API\n\n### shef.box(host) || shef.box(opts)\n\n### box.getTuned(cb)\n\n### box.getProgInfo(chan, cb) || getProgInfo(opts, cb)\n\n### box.tune(chan, cb) || tune(opts, cb)\n\n### box.key(key_name).up(cb)\n\n### box.key(key_name).down(cb)\n\n### box.key(key_name).press(cb)\n\n### box.getVersion(cb)\n\n### box.getOptions(cb)\n\n### box.getMode(cb)\n\n### box.getLocations(cb)\n\n## More Info\n\n[SHEF API Guide](http://www.satinstalltraining.com/homeautomation/DTV-MD-0359-DIRECTV_SHEF_Command_Set-V1.3.C.pdf)","maintainers":[{"name":"kevinohara80","email":"kevinohara80@gmail.com"}],"time":{"modified":"2012-08-19T21:45:25.023Z","created":"2012-08-17T17:43:58.958Z","0.0.1":"2012-08-17T17:43:59.520Z","0.0.2":"2012-08-19T21:45:25.023Z"},"author":{"name":"Kevin O'Hara"},"repository":{"type":"git","url":"git://github.com/kevinohara80/shef.git"},"users":{"kevinohara80":true},"_id":"shef","_rev":"1-875fab9d48fa3cb3a57a78bae3c07db2"}$ÿdocument-storeÿsetup-node-project¥{"id":"setup-node-project","rev":"1-ef789e9069bdbb1dd7e8fc751de87d7f","rev_tree":[{"pos":1,"ids":["ef789e9069bdbb1dd7e8fc751de87d7f",{"status":"available"},[]]}],"rev_map":{"1-ef789e9069bdbb1dd7e8fc751de87d7f":3965},"winningRev":"1-ef789e9069bdbb1dd7e8fc751de87d7f","deleted":false,"seq":3965}ÿby-sequenceÿ0000000000003965º{"name":"setup-node-project","description":"Creates a node project directory","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"setup-node-project","description":"Creates a node project directory","author":{"name":"Chris Khoo"},"version":"0.0.1","main":"src/index.js","bin":{"setup-node-project":"src/index.js"},"dependencies":{"copy-file":"0.0.1"},"licenses":[{"type":"MIT","url":"http://opensource.org/licenses/mit-license.php"}],"engines":{"node":">=0.6.18"},"_npmUser":{"name":"khoomeister","email":"chris.khoo@gmail.com"},"_id":"setup-node-project@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d94ce3447cb0a7d06ce110575d536c0254527b4c","tarball":"http://registry.npmjs.org/setup-node-project/-/setup-node-project-0.0.1.tgz"},"readme":"","maintainers":[{"name":"khoomeister","email":"chris.khoo@gmail.com"}]},"0.0.2":{"name":"setup-node-project","description":"Creates a node project directory","author":{"name":"Chris Khoo"},"version":"0.0.2","main":"src/index.js","bin":{"setup-node-project":"src/index.js"},"dependencies":{"copy-file":"0.0.1"},"licenses":[{"type":"MIT","url":"http://opensource.org/licenses/mit-license.php"}],"engines":{"node":">=0.6.18"},"_npmUser":{"name":"khoomeister","email":"chris.khoo@gmail.com"},"_id":"setup-node-project@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ace7f58b266b52a7fea71daee608f2dced62c875","tarball":"http://registry.npmjs.org/setup-node-project/-/setup-node-project-0.0.2.tgz"},"readme":"","maintainers":[{"name":"khoomeister","email":"chris.khoo@gmail.com"}]}},"readme":"","maintainers":[{"name":"khoomeister","email":"chris.khoo@gmail.com"}],"time":{"modified":"2012-06-07T07:10:45.572Z","created":"2012-06-01T12:52:26.830Z","0.0.1":"2012-06-01T12:52:31.320Z","0.0.2":"2012-06-07T07:10:45.572Z"},"author":{"name":"Chris Khoo"},"_id":"setup-node-project","_rev":"1-ef789e9069bdbb1dd7e8fc751de87d7f"}ÿdocument-storeÿsession-lineŸ{"id":"session-line","rev":"1-be5ba6e78f158f89ed0cf7010d53fc7a","rev_tree":[{"pos":1,"ids":["be5ba6e78f158f89ed0cf7010d53fc7a",{"status":"available"},[]]}],"rev_map":{"1-be5ba6e78f158f89ed0cf7010d53fc7a":3964},"winningRev":"1-be5ba6e78f158f89ed0cf7010d53fc7a","deleted":false,"seq":3964}ÿby-sequenceÿ0000000000003964Ö{"name":"session-line","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"session-line","version":"0.0.1","engines":{"node":">= 0.6"},"dependencies":{"redis":"*","hiredis":"*"},"devDependencies":{"should":"*","mocha":"*"},"optionalDependencies":{},"main":"./lib/index.js","_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"session-line@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"0910815577aa7f325182616d740f4c203fafc56e","tarball":"http://registry.npmjs.org/session-line/-/session-line-0.0.1.tgz"},"readme":"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"session-line","version":"0.0.2","engines":{"node":">= 0.6"},"dependencies":{"redis":"*","hiredis":"*"},"devDependencies":{"should":"*","mocha":"*"},"optionalDependencies":{},"main":"./lib/index.js","_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"session-line@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1999f5d928fc4c854ea3de7d58e089f5260c8164","tarball":"http://registry.npmjs.org/session-line/-/session-line-0.0.2.tgz"},"readme":"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]}},"readme":"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}],"time":{"modified":"2012-07-02T09:23:02.517Z","created":"2012-07-02T08:11:11.443Z","0.0.1":"2012-07-02T08:11:17.999Z","0.0.2":"2012-07-02T09:23:02.517Z"},"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"_id":"session-line","_rev":"1-be5ba6e78f158f89ed0cf7010d53fc7a"}ÿdocument-storeÿservestaticž{"id":"servestatic","rev":"1-a0e72ec04ba98bacb2ccc738b62df5f0","rev_tree":[{"pos":1,"ids":["a0e72ec04ba98bacb2ccc738b62df5f0",{"status":"available"},[]]}],"rev_map":{"1-a0e72ec04ba98bacb2ccc738b62df5f0":3963},"winningRev":"1-a0e72ec04ba98bacb2ccc738b62df5f0","deleted":false,"seq":3963}ÿby-sequenceÿ0000000000003963Ö {"name":"servestatic","description":"Build and serve a static website with support for all the consolidate-build languages.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"servestatic","version":"0.0.0","description":"Build and serve a static website with support for all the consolidate-build languages.","main":"index.js","dependencies":{"consolidate-build":"~0.0.0","q":"~0.8.6"},"devDependencies":{"should":"~1.1.0","mocha":"~1.3.2"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/ForbesLindesay/servestatic.git"},"keywords":["static","content","management","system","cms","static","site","generator","framework","website","builder","compiler","blog","less","sass","jade","ejs","markdown"],"author":{"name":"Forbes Lindesay"},"license":"BSD","readme":"servestatic\r\n===========\r\n\r\nBuild or Serve a static website, including all templates and languages supported by consolidate-build, and a plugin architecture.","_id":"servestatic@0.0.0","dist":{"shasum":"96925806697ec8d6850222f3eae5f42bc0ea65c6","tarball":"http://registry.npmjs.org/servestatic/-/servestatic-0.0.0.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"servestatic\r\n===========\r\n\r\nBuild or Serve a static website, including all templates and languages supported by consolidate-build, and a plugin architecture.","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:27.002Z","created":"2012-08-16T16:35:56.165Z","0.0.0":"2012-08-16T16:35:58.315Z"},"author":{"name":"Forbes Lindesay"},"repository":{"type":"git","url":"https://github.com/ForbesLindesay/servestatic.git"},"_id":"servestatic","_rev":"1-a0e72ec04ba98bacb2ccc738b62df5f0"}ÿdocument-storeÿserverup›{"id":"serverup","rev":"1-9d33388d75816848202df7afd23020b9","rev_tree":[{"pos":1,"ids":["9d33388d75816848202df7afd23020b9",{"status":"available"},[]]}],"rev_map":{"1-9d33388d75816848202df7afd23020b9":3962},"winningRev":"1-9d33388d75816848202df7afd23020b9","deleted":false,"seq":3962}ÿby-sequenceÿ0000000000003962µ{"name":"serverup","description":"chinghi serverup","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"serverup","version":"0.0.1","description":"chinghi serverup","main":"serverup.js","dependencies":{"express":"~3.0.0rc1","stylus":"~0.28.2","optimist":"~0.3.4","nib":"~0.7.0"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":"","author":{"name":"chinghi"},"license":"BSD","_id":"serverup@0.0.1","dist":{"shasum":"5d6498b3824ac8cf46edfaf78236a7d0e17ba231","tarball":"http://registry.npmjs.org/serverup/-/serverup-0.0.1.tgz"},"readme":"","maintainers":[{"name":"chinghi","email":"wuchang1123@163.com"}]}},"readme":"","maintainers":[{"name":"chinghi","email":"wuchang1123@163.com"}],"time":{"modified":"2012-08-03T12:24:11.425Z","created":"2012-08-03T12:24:06.411Z","0.0.1":"2012-08-03T12:24:11.425Z"},"author":{"name":"chinghi"},"_id":"serverup","_rev":"1-9d33388d75816848202df7afd23020b9"}ÿdocument-storeÿsepta˜{"id":"septa","rev":"1-0f24212d1eb030c5013cc847f5a9906c","rev_tree":[{"pos":1,"ids":["0f24212d1eb030c5013cc847f5a9906c",{"status":"available"},[]]}],"rev_map":{"1-0f24212d1eb030c5013cc847f5a9906c":3961},"winningRev":"1-0f24212d1eb030c5013cc847f5a9906c","deleted":false,"seq":3961}ÿby-sequenceÿ0000000000003961×.{"name":"septa","description":"Get information about SEPTA trains, busses, and trolleys.","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"author":{"name":"Justin Walgran","email":"justin@walgran.com"},"name":"septa","description":"Get information about SEPTA trains, busses, and trolleys.","homepage":"http://jwalgran.github.com/septa","tags":["transit","search"],"version":"0.0.1","repository":{"type":"git","url":"git://github.com/jwalgran/septa.git"},"engines":{"node":">= 0.3.6"},"dependencies":{"request":"2.1.1"},"bugs":{"url":"http://github.com/jwalgran/septa/issues"},"main":"./septa","licenses":[{"type":"MIT","url":"http://github.com/jwalgran/septa/raw/master/LICENSE"}],"_npmUser":{"name":"jwalgran","email":"justin@walgran.com"},"_id":"septa@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"20c5840726670e10617bb865d40660667bfe94e2","tarball":"http://registry.npmjs.org/septa/-/septa-0.0.1.tgz"},"maintainers":[{"name":"jwalgran","email":"justin@walgran.com"}]},"0.1.0":{"author":{"name":"Justin Walgran","email":"justin@walgran.com"},"name":"septa","description":"Get information about SEPTA trains, busses, and trolleys.","homepage":"http://jwalgran.github.com/septa","tags":["transit","search"],"version":"0.1.0","repository":{"type":"git","url":"git://github.com/jwalgran/septa.git"},"engines":{"node":">= 0.3.6"},"dependencies":{"request":"2.1.1"},"bugs":{"url":"http://github.com/jwalgran/septa/issues"},"main":"./septa","licenses":[{"type":"MIT","url":"http://github.com/jwalgran/septa/raw/master/LICENSE"}],"_npmUser":{"name":"jwalgran","email":"justin@walgran.com"},"_id":"septa@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"1e377acdf57bc99a3493ebd4ee4615fb31e32d28","tarball":"http://registry.npmjs.org/septa/-/septa-0.1.0.tgz"},"maintainers":[{"name":"jwalgran","email":"justin@walgran.com"}]},"0.1.1":{"author":{"name":"Justin Walgran","email":"justin@walgran.com"},"name":"septa","description":"Get information about SEPTA trains, busses, and trolleys.","homepage":"http://jwalgran.github.com/septa","tags":["transit","search"],"version":"0.1.1","repository":{"type":"git","url":"git://github.com/jwalgran/septa.git"},"engines":{"node":">= 0.3.6"},"dependencies":{"request":"2.1.1"},"bugs":{"url":"http://github.com/jwalgran/septa/issues"},"main":"./septa","licenses":[{"type":"MIT","url":"http://github.com/jwalgran/septa/raw/master/LICENSE"}],"_npmUser":{"name":"jwalgran","email":"justin@walgran.com"},"_id":"septa@0.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"43399883e8b8fef2bf9f839a5025f1ee271eeefe","tarball":"http://registry.npmjs.org/septa/-/septa-0.1.1.tgz"},"maintainers":[{"name":"jwalgran","email":"justin@walgran.com"}]},"0.2.0":{"author":{"name":"Justin Walgran","email":"justin@walgran.com"},"name":"septa","description":"Get information about SEPTA trains, busses, and trolleys.","homepage":"http://jwalgran.github.com/septa","tags":["transit","search"],"version":"0.2.0","repository":{"type":"git","url":"git://github.com/jwalgran/septa.git"},"engines":{"node":">= 0.3.6"},"dependencies":{"request":"2.1.1"},"bugs":{"url":"http://github.com/jwalgran/septa/issues"},"main":"./septa","licenses":[{"type":"MIT","url":"http://github.com/jwalgran/septa/raw/master/LICENSE"}],"_npmUser":{"name":"jwalgran","email":"justin@walgran.com"},"_id":"septa@0.2.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"94b758c2e7bc7e8603917dabd57090b9e20e1ee5","tarball":"http://registry.npmjs.org/septa/-/septa-0.2.0.tgz"},"readme":"# SEPTA - Get information about SEPTA trains, busses, and trolleys in nodejs.\n\n## About\n\nThis module is a wrapper around a collection of REST web services developed by\nSEPTA http://www3.septa.org/hackathon\n\n## API Documentation\n\nJsDoc generated documentation is hosted at [http://jwalgran.github.com/septa]()\n\n## Installation\n\nFrom npm:\n\n npm install septa\n\nFrom source:\n\n git clone git://github.com/jwalgran/septa.git \n cd septa\n npm link\n\n## Usage\n\n### Download detours in effect on a SEPTA bus route:\n\n $ node\n > var septa = require('septa');\n > var bus5 = new septa.BusRoute(5);\n\nHandle the response with a callback\n\n > bus5.fetchDetours(function(err, resp) {console.dir(resp);});\n\nHandle the raw response stream\n\n > bus5.fetchDetours().pipe(process.stdout);\n\n### Download current alerts for a SEPTA bus route:\n\n $ node\n > var septa = require('septa');\n > var bus97 = new septa.BusRoute(97);\n\nHandle the response with a callback\n\n > bus97.fetchAlerts(function(err, resp) {console.dir(resp);});\n\nHandle the raw response stream\n\n > bus97.fetchAlerts().pipe(process.stdout);\n\n### Download the locations of all the buses on a SEPTA bus route:\n\n $ node\n > var septa = require('septa');\n > var bus23 = new septa.BusRoute(23);\n\nHandle the response with a callback\n\n > bus23.fetchLocations(function(err, resp) {console.dir(resp);});\n\nHandle the raw response stream\n\n > bus23.fetchLocations().pipe(process.stdout);\n\n## What's Missing\n\nTrain data","maintainers":[{"name":"jwalgran","email":"justin@walgran.com"}]}},"maintainers":[{"name":"jwalgran","email":"justin@walgran.com"}],"time":{"modified":"2012-07-02T00:35:17.954Z","created":"2011-11-06T01:40:59.956Z","0.0.1":"2011-11-06T01:41:00.287Z","0.1.0":"2011-11-07T03:21:12.512Z","0.1.1":"2011-11-18T12:09:29.003Z","0.2.0":"2012-07-02T00:35:17.954Z"},"author":{"name":"Justin Walgran","email":"justin@walgran.com"},"repository":{"type":"git","url":"git://github.com/jwalgran/septa.git"},"_id":"septa","_rev":"1-0f24212d1eb030c5013cc847f5a9906c"}ÿdocument-storeÿselect-keysž{"id":"select-keys","rev":"1-924d3335eb119424e11ad166fe73af86","rev_tree":[{"pos":1,"ids":["924d3335eb119424e11ad166fe73af86",{"status":"available"},[]]}],"rev_map":{"1-924d3335eb119424e11ad166fe73af86":3960},"winningRev":"1-924d3335eb119424e11ad166fe73af86","deleted":false,"seq":3960}ÿby-sequenceÿ0000000000003960Ö{"name":"select-keys","description":"Select object keys","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"select-keys","description":"Select object keys","version":"0.0.1","author":{"name":"me@mmalecki.com"},"main":"./lib/select-keys","scripts":{"test":"node test/select-keys-test.js"},"readme":"# select-keys [![Build Status](https://secure.travis-ci.org/mmalecki/select-keys.png)](http://travis-ci.org/mmalecki/select-keys)\nAssert that your callback got called.\n\n## Installation\n\n npm install select-keys\n\n## Usage\n```js\nvar selectKeys = require('select-keys');\nselectKeys({ a: 42, b: 'foo', c: 1337 }, ['a', 'c']); // => { a: 42, c: 1337 }\n```\n","_id":"select-keys@0.0.1","dist":{"shasum":"faf235e647ba4632f9673bd68829cc9e3cc8341c","tarball":"http://registry.npmjs.org/select-keys/-/select-keys-0.0.1.tgz"},"m ­ùaintainers":[{"name":"mmalecki","email":"me@mmalecki.com"}]},"0.0.2":{"name":"select-keys","description":"Select object keys","version":"0.0.2","author":{"name":"me@mmalecki.com"},"main":"./lib/select-keys","scripts":{"test":"node test/select-keys-test.js"},"readme":"# select-keys [![Build Status](https://secure.travis-ci.org/mmalecki/select-keys.png)](http://travis-ci.org/mmalecki/select-keys)\nSelect certain keys from an object\n\n## Installation\n\n npm install select-keys\n\n## Usage\n```js\nvar selectKeys = require('select-keys');\nselectKeys({ a: 42, b: 'foo', c: 1337 }, ['a', 'c']); // => { a: 42, c: 1337 }\n```\n","_id":"select-keys@0.0.2","dist":{"shasum":"6ead15a7648fe6edaf0ea7eb5cfee61bc027e236","tarball":"http://registry.npmjs.org/select-keys/-/select-keys-0.0.2.tgz"},"maintainers":[{"name":"mmalecki","email":"me@mmalecki.com"}]}},"readme":"# select-keys [![Build Status](https://secure.travis-ci.org/mmalecki/select-keys.png)](http://travis-ci.org/mmalecki/select-keys)\nAssert that your callback got called.\n\n## Installation\n\n npm install select-keys\n\n## Usage\n```js\nvar selectKeys = require('select-keys');\nselectKeys({ a: 42, b: 'foo', c: 1337 }, ['a', 'c']); // => { a: 42, c: 1337 }\n```\n","maintainers":[{"name":"mmalecki","email":"me@mmalecki.com"}],"time":{"modified":"2012-07-18T00:19:18.653Z","created":"2012-07-09T01:18:57.406Z","0.0.1":"2012-07-09T01:18:59.254Z","0.0.2":"2012-07-18T00:19:18.653Z"},"author":{"name":"me@mmalecki.com"},"_id":"select-keys","_rev":"1-924d3335eb119424e11ad166fe73af86"}ÿdocument-storeÿseed-mongodbŸ{"id":"seed-mongodb","rev":"1-3e3f95141d80479875c3626811bd06ad","rev_tree":[{"pos":1,"ids":["3e3f95141d80479875c3626811bd06ad",{"status":"available"},[]]}],"rev_map":{"1-3e3f95141d80479875c3626811bd06ad":3959},"winningRev":"1-3e3f95141d80479875c3626811bd06ad","deleted":false,"seq":3959}ÿby-sequenceÿ0000000000003959Ís{"name":"seed-mongodb","description":"Seed storage for MongoDB","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.1.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"71e82180787f07748d29721a51e83f9b0734e07b","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.1.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"64cc210e41b38d7be6b8d5427fe845accef0325c","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.1","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"ae9215a4e400e682decd7104053799eb9f98dc7e","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.1.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.2":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.2","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.8","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"03efac709e80d95d6b3f942f525b6808bac61e53","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.2.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.3":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.3","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"68461f64d2db168da92af60c1c48211551db8ac4","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.3.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"directories":{}},"0.2.4":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.4","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"47a70c27f2fb0c621fd6da30cf31f16702d52938","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.4.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.5":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.2.5","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.2.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.2.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"49f1c47d483850a0ff701e6daeb5e575635591e7","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.2.5.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.3.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.3.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"0.9.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.3.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"8bf40f9c995dcf48f32d95131fec5c9c73a3258b","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.3.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.4.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.4.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"mongodb":"1.0.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.4.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.4.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"c73802f828c46c64b1c3e7d1c63bfd39373582ee","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.4.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.5.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.5.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"dragonfly":"0.2.x","mongodb":"1.0.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.4.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.5.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"ec8023a70113d25e9de58d078587176a800c1429","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.5.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.6.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"seed-mongodb","description":"Seed storage for MongoDB","version":"0.6.0","repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":">= 0.6.0"},"dependencies":{"dragonfly":"0.2.x","mongodb":"1.0.x"},"devDependencies":{"mocha":"*","chai":"*","seed":"0.4.x","matcha":"0.1.x"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"seed-mongodb@0.6.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"04b59e4463682f17cfb08fcfb54b1500f59e3099","tarball":"http://registry.npmjs.org/seed-mongodb/-/seed-mongodb-0.6.0.tgz"},"maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]}},"readme":"# Seed MongoDB [![Build Status](https://secure.travis-ci.org/qualiancy/seed-mongodb.png)](http://travis-ci.org/qualiancy/seed-mongodb)\n\nThis module provides a storage engine for [Seed](http://github.com/qualiancy/seed) that allows \ndatasets to be stored in MongoDB.\n\n## Installation\n\nModule is available through npm. To use it in your project you must also have `seed` installed,\nas it is not provided as `package.json` requirement.\n\n npm install seed seed-mongodb\n\n## What is Seed?\n\n[Seed](http://github.com/qualiancy/seed), which stands for _storage-agnostic, event emitting datasets_, \nis a library of components that provide a common API for working with data, no matter the source. \nThese compoents are Hash, Model, Graph, and Schema. MongoDB can be one the many sources used in \nthe construction eventful, data-centric applications.\n\n[Visit the Seed project page](http://github.com/qualiancy/seed) to learn more.\n\n## Usage\n\nThis storage engine can be used for both models and collections. \n\n```js\nvar Seed = require('seed')\n , MongoStore = require('seed-mongodb')\n , store = new MongoStore({\n db: 'hitchhikersguide'\n , host: 'localhost'\n , port: 27017\n });\n\nvar Person = Seed.Model.extend('person', {\n store: store\n});\n\nvar arthur = new Person({\n id: 'arthur'\n , name: 'Arthur Dent'\n , occupation: 'Traveller'\n});\n\narthur.save(function (err) {\n if (err) return console.error(err);\n console.log('Arthur has been saved!');\n});\n```\n\n## Querying\n\nWhen fetching from a Graph, the queries are passed directly to the mongo database, and should\nfollow MongoDB's form. For more information, check out [Mongo's Guide on Querying](http://www.mongodb.org/display/DOCS/Mongo+Query+Language)\nand the awesome [node-mongo-native](https://github.com/christkv/node-mongodb-native) topic \non [queries](https://github.com/christkv/node-mongodb-native/blob/master/docs/queries.md).\n\n```js\nvar HitchhikersGuide = Seed.Graph.extend({\n store: store\n , initialize: function () {\n this.define(Person);\n }\n});\n\nvar myGuide = new HitchhikersGuide();\nmyGuide.fetch('person', { 'name': 'Arthur Dent' }, function (err) {\n var arthur = self.get('/person/arthur');\n});\n```\n\n## Tests\n\nTests are writting in [Mocha](http://github.com/visionmedia/mocha) using the [Chai](http://chaijs.com)\n`should` BDD assertion library. Make sure you have that installed, clone this repo, install dependacies using `npm install`.\n\n $ make test\n\nYou will also need a local installation of MongoDB available on 'localhost:27017' without authentication. Custom\ntest database options are not provided by default. \n\n## Getting Help\n\nAll issues related to this project should be posted in [seed-mongodb GitHub Issues](https://github.com/qualiancy/seed-mongodb/issues).\nFor all general seed related issues, please visit [seed's GitHub Issues](https://github.com/qualiancy/seed/issues).\nThere is also a community forum is available at the [Seed Google Group](https://groups.google.com/group/seedjs-orm).\n\n## Contributors\n\nInterested in contributing? Fork to get started. Contact [@logicalparadox](http://github.com/logicalparadox) \nif you are interested in being regular contributor.\n\n* Jake Luer ([Github: @logicalparadox](http://github.com/logicalparadox)) ([Twitter: @jakeluer](http://twitter.com/jakeluer)) ([Website](http://alogicalparadox.com))\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Jake Luer \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"time":{"modified":"2012-07-17T17:56:41.717Z","created":"2012-01-28T14:09:23.704Z","0.1.0":"2012-01-28T14:09:24.552Z","0.2.0":"2012-02-27T05:21:57.724Z","0.2.1":"2012-03-09T10:16:50.538Z","0.2.2":"2012-03-14T23:01:29.758Z","0.2.3":"2012-03-17T18:52:25.080Z","0.2.4":"2012-03-17T19:14:46.547Z","0.2.5":"2012-03-26T21:30:19.572Z","0.3.0":"2012-05-25T08:09:10.767Z","0.4.0":"2012-06-25T07:33:56.518Z","0.5.0":"2012-06-26T08:13:01.632Z","0.6.0":"2012-07-17T17:56:41.717Z"},"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"repository":{"type":"git","url":"git://github.com/qualiancy/seed-mongodb.git"},"_id":"seed-mongodb","_rev":"1-3e3f95141d80479875c3626811bd06ad"}ÿdocument-storeÿroute-walkerŸ{"id":"route-walker","rev":"1-2f7b3f9fa3758c701e528c32fd7ff3bb","rev_tree":[{"pos":1,"ids":["2f7b3f9fa3758c701e528c32fd7ff3bb",{"status":"available"},[]]}],"rev_map":{"1-2f7b3f9fa3758c701e528c32fd7ff3bb":3958},"winningRev":"1-2f7b3f9fa3758c701e528c32fd7ff3bb","deleted":false,"seq":3958}ÿby-sequenceÿ0000000000003958{"name":"route-walker","description":"Walk a geo route and do stuff.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"route-walker","description":"Walk a geo route and do stuff.","version":"0.0.1","licenses":[{"type":"MIT","url":"TODO"}],"author":{"name":"James Bloomer","url":"https://github.com/jamesbloomer"},"repository":{"type":"git","url":"git://github.com/jamesbloomer/node-walker.git"},"keywords":["geo","route","walk","walker"],"dependencies":{"request":"2.9.x"},"devDependencies":{"mocha":"x.x.x","sinon":"x.x.x"},"main":"./server","scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.4.x"},"_npmUser":{"name":"jamesbloomer","email":"npm@thebloomers.co.uk"},"_id":"route-walker@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"cd6a95f166e5c39d4974a8a8a5b48ffbc7ca018e","tarball":"http://registry.npmjs.org/route-walker/-/route-walker-0.0.1.tgz"},"maintainers":[{"name":"jamesbloomer","email":"npm@thebloomers.co.uk"}]},"0.0.2":{"name":"route-walker","description":"Walk a geo route and do stuff.","version":"0.0.2","licenses":[{"type":"MIT","url":"https://github.com/jamesbloomer/node-walker/blob/master/LICENCE"}],"author":{"name":"James Bloomer","url":"https://github.com/jamesbloomer"},"repository":{"type":"git","url":"git://github.com/jamesbloomer/node-walker.git"},"keywords":["geo","route","walk","walker"],"dependencies":{"request":"2.9.x","async":"0.1.x"},"devDependencies":{"mocha":"x.x.x","sinon":"x.x.x"},"main":"./lib/walker.js","scripts":{"test":"mocha test/*"},"engines":{"node":">= 0.4.x"},"_npmUser":{"name":"jamesbloomer","email":"npm@thebloomers.co.uk"},"_id":"route-walker@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b8a9030cd75d2a3c32f3fea925f631302168042b","tarball":"http://registry.npmjs.org/route-walker/-/route-walker-0.0.2.tgz"},"maintainers":[{"name":"jamesbloomer","email":"npm@thebloomers.co.uk"}]}},"readme":"node-walker\n===========\n\nWalks a route and does stuff","maintainers":[{"name":"jamesbloomer","email":"npm@thebloomers.co.uk"}],"time":{"modified":"2012-07-11T21:52:47.189Z","created":"2012-07-11T05:11:07.553Z","0.0.1":"2012-07-11T05:11:10.038Z","0.0.2":"2012-07-11T21:52:47.189Z"},"author":{"name":"James Bloomer","url":"https://github.com/jamesbloomer"},"repository":{"type":"git","url":"git://github.com/jamesbloomer/node-walker.git"},"_id":"route-walker","_rev":"1-2f7b3f9fa3758c701e528c32fd7ff3bb"}ÿdocument-storeÿresizr™{"id":"resizr","rev":"1-04829f41bcdeb0c5c3766ddffeedc245","rev_tree":[{"pos":1,"ids":["04829f41bcdeb0c5c3766ddffeedc245",{"status":"available"},[]]}],"rev_map":{"1-04829f41bcdeb0c5c3766ddffeedc245":3957},"winningRev":"1-04829f41bcdeb0c5c3766ddffeedc245","deleted":false,"seq":3957}ÿby-sequenceÿ0000000000003957¿{"name":"resizr","description":"Image resizer using imagemagick.","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"resizr","version":"0.0.0","description":"Image resizer using imagemagick.","main":"index.js","author":{"name":"Geert Pasteels"},"devDependencies":{"rimraf":"~2.0.2","should":"~0.6.3"},"_id":"resizr@0.0.0","dist":{"shasum":"81de6ef534444874a03ca330caf78ee21c7882e2","tarball":"http://registry.npmjs.org/resizr/-/resizr-0.0.0.tgz"},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}]}},"readme":"","maintainers":[{"name":"enome","email":"geert.pasteels@gmail.com"}],"time":{"modified":"2012-07-11T18:27:04.019Z","created":"2012-07-11T18:27:02.454Z","0.0.0":"2012-07-11T18:27:04.019Z"},"author":{"name":"Geert Pasteels"},"_id":"resizr","_rev":"1-04829f41bcdeb0c5c3766ddffeedc245"}ÿdocument-storeÿreport™{"id":"report","rev":"1-b2b5c1bf2d4cacd52cb654921d8e5f41","rev_tree":[{"pos":1,"ids":["b2b5c1bf2d4cacd52cb654921d8e5f41",{"status":"available"},[]]}],"rev_map":{"1-b2b5c1bf2d4cacd52cb654921d8e5f41":3956},"winningRev":"1-b2b5c1bf2d4cacd52cb654921d8e5f41","deleted":false,"seq":3956}ÿby-sequenceÿ0000000000003956ð{"name":"report","description":"Report test results to npm's test result listings","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.0":{"author":{"name":"David Trejo","email":"dtrejo@cs.brown.edu","url":"http://dtrejo.com/"},"name":"report","description":"Report test results to npm's test result listings","version":"0.0.0","repository":{"type":"git","url":"//github.com/dtrejo/report.git"},"main":"report.js","scripts":{"test":"node test.js"},"engines":{"node":"~0.6.6"},"dependencies":{"request":"~2.9.3"},"devDependencies":{},"_npmUser":{"name":"dtrejo","email":"dtrejo@cs.brown.edu"},"_id":"report@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"c6bc0da312094d695c866552adca6dc341284722","tarball":"http://registry.npmjs.org/report/-/report-0.0.0.tgz"},"readme":"","maintainers":[{"name":"dtrejo","email":"dtrejo@cs.brown.edu"}],"directories":{}},"0.1.1":{"author":{"name":"David Trejo","email":"dtrejo@cs.brown.edu","url":"http://dtrejo.com/"},"name":"report","description":"Report test results to npm's test result listings","version":"0.1.1","repository":{"type":"git","url":"//github.com/dtrejo/report.git"},"main":"report.js","scripts":{"test":"node test.js"},"engines":{"node":"~0.6.18"},"dependencies":{"request":"~2.9.202"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"dtrejo","email":"david.daniel.trejo@gmail.com"},"_id":"report@0.1.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ab300c67e04b53fa0ab5e0056b62a513a539b384","tarball":"http://registry.npmjs.org/report/-/report-0.1.1.tgz"},"readme":"# `Report`\n\nAllows `npm install foo` with `npm config set npat true` to report test\nresults to http://npat.iriscouch.com/.\n\nThese test results will then be shown to others interested in using said\nmodule, helping them avoid broken modules or modules that don't work\nfor their operating system.\n\nCheers,\nD\n","maintainers":[{"name":"dtrejo","email":"dtrejo@cs.brown.edu"}]}},"readme":"","maintainers":[{"name":"dtrejo","email":"dtrejo@cs.brown.edu"}],"time":{"modified":"2012-06-08T00:00:04.710Z","created":"2012-01-12T06:34:22.340Z","0.0.0":"2012-01-12T06:34:23.944Z","0.1.0":"2012-02-22T21:52:14.206Z","0.1.1":"2012-06-08T00:00:04.710Z"},"author":{"name":"David Trejo","email":"dtrejo@cs.brown.edu","url":"http://dtrejo.com/"},"repository":{"type":"git","url":"//github.com/dtrejo/report.git"},"_id":"report","_rev":"1-b2b5c1bf2d4cacd52cb654921d8e5f41"}ÿdocument-storeÿremote-replž{"id":"remote-repl","rev":"1-49ff5af3d50b600446bac23fd9fbe90e","rev_tree":[{"pos":1,"ids":["49ff5af3d50b600446bac23fd9fbe90e",{"status":"available"},[]]}],"rev_map":{"1-49ff5af3d50b600446bac23fd9fbe90e":3955},"winningRev":"1-49ff5af3d50b600446bac23fd9fbe90e","deleted":false,"seq":3955}ÿby-sequenceÿ0000000000003955â{"name":"remote-repl","description":"super simple remote repl for node processes","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"remote-repl","description":"super simple remote repl for node processes","version":"0.1.0","repository":{"url":""},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"remote-repl@0.1.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"90c4469df1354ff79480dbb17d4bef5449818478","tarball":"http://registry.npmjs.org/remote-repl/-/remote-repl-0.1.0.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.1.1":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"remote-repl","description":"super simple remote repl for node processes","version":"0.1.1","repository":{"url":""},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"remote-repl@0.1.1","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"174039e73aaa9d76e1d64e5aa998727b6d1bbacf","tarball":"http://registry.npmjs.org/remote-repl/-/remote-repl-0.1.1.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.1.2":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"name":"remote-repl","description":"super simple remote repl for node processes","version":"0.1.2","repository":{"url":""},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"readme":"# remote-repl\n\nsuper simple remote repl for node processes\n\n## Installation\n\n`npm install remote-repl`\n\n## Examples\n\nThe easiest way is to use stdin to inject a repl into the global context\n\n```js \n\nrequire('remote-repl')('stdin')\n```\n\n### tcp\n\nYou can also use tcp to start a repl with any node process. In your application pass a few options where the repl will listen for connections.\n\n```js \n\nrequire('remote-repl')('tcp', { port: 3021, secret: 'beepboop' })\n```\n\nThen you can use `netcat` to connect with `nc localhost 3021`\n\n\n\n### unix sockets\n\n```js\n\nrequire('remote-repl')('unix socket', { path: '/tmp/node-repl-sock', secret: 'beepboop' })\n```\n\nAnd then use `socat` to connect with `socat /tmp/node-repl-sock stdin`\n\n\n## Todo\n\nAdd more commands to switch repl contexts.\n\n## License\nMIT\n","_id":"remote-repl@0.1.2","dist":{"shasum":"e38178fa90da7ee29ca90a69dfc16364a778fbc7","tarball":"http://registry.npmjs.org/remote-repl/-/remote-repl-0.1.2.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]}},"readme":"# remote-repl\n\nsuper simple remote repl for node processes\n\n## installation\n\n`npm install remote-repl`\n\n## example\n\nIn your application:\n```js \n\nrequire('remote-repl')('tcp', { port: 3021, secret: 'beepboop' })\n\n```\n\nThen just use netcat to connect\n `nc localhost 3021`\n\n## license\nMIT\n","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"time":{"modified":"2012-06-20T21:09:59.792Z","created":"2012-05-04T17:53:06.878Z","0.1.0":"2012-05-04T17:53:08.010Z","0.1.1":"2012-05-04T18:26:26.648Z","0.1.2":"2012-06-20T21:09:59.792Z"},"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"repository":{"url":""},"_id":"remote-repl","_rev":"1-49ff5af3d50b600446bac23fd9fbe90e"}ÿdocument-storeÿrecursiveœ{"id":"recursive","rev":"1-6d35d03a72cb72df315b32dbaf96b38c","rev_tree":[{"pos":1,"ids":["6d35d03a72cb72df315b32dbaf96b38c",{"status":"available"},[]]}],"rev_map":{"1-6d35d03a72cb72df315b32dbaf96b38c":3954},"winningRev":"1-6d35d03a72cb72df315b32dbaf96b38c","deleted":false,"seq":3954}ÿby-sequenceÿ0000000000003954Œ.{"name":"recursive","description":"simple routes wrap module support extendable route, was inspired by django url strategy","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"recursive","description":"simple routes wrap module support extendable route, was inspired by django url strategy","version":"0.0.1","author":{"name":"ruandao","email":"ljy080829@gmail.com"},"keywords":["route","url","django-like url"],"repository":{"type":"git","url":"https://github.com/ruandao/Recursive.git"},"main":"index","readme":"\næ€æƒ³ï¼š\n 该模å—ä¾èµ–于已有的app.get, app.post方法,仅是简å•对其å°è£…\n 建立一个类似于django urlpatternçš„å¯ä»¥æ‰©å±•çš„route 分é…器\n\n 以便能够建立å¯ä»¥å¤ç”¨çš„app\n\n 设计方案:\n 对于主 route 通过主动调用done函数æ¥è¿è¡Œä¸»è®¾å®šçš„main函数,\n 而å­route则通过dispatch 进行å¬å”¤\n 主routeå’Œå­route 写法都如下,å­route还å¯ä»¥åµŒå¥—下层route,当然在最下层的route是没有调用dispatchçš„\n\n use manual\n \n##############################################################\n# routes.js\n\nvar routes = require('recursive').Routes;\n\nroutes.main = function(){\n\n this.get('', func);\n this.get('News/', func);\n this.get('T/', func);\n\n this.post('News/', func);\n this.post('T/', func);\n\n this.dispatch('register/', require('./apps/register/routes');\n this.dispatch('friends/', require('./apps/friends/routes');\n\n }\n module.exports = routes;\n\n\n䏋颿˜¯app.js中的调用方法\n ##############################################################\n\n # app.js\n ...\n var routes = require('./routes');\n ...\n routes.done(app);\n ...\n\n ##############################################################\n\n\n\n\n\n\n\n\n\n","_id":"recursive@0.0.1","dist":{"shasum":"6d7abe1cd2d1130c898426b13d73bba19a59ae5e","tarball":"http://registry.npmjs.org/recursive/-/recursive-0.0.1.tgz"},"maintainers":[{"name":"ruandao","email":"ljy080829@gmail.com"}]},"0.0.2":{"name":"recursive","description":"simple routes wrap module support extendable route, was inspired by django url strategy","version":"0.0.2","author":{"name":"ruandao","email":"ljy080829@gmail.com"},"keywords":["route","url","django-like url"],"repository":{"type":"git","url":"https://github.com/ruandao/recursive.git"},"main":"index","readme":"æ€æƒ³ï¼š\n 该模å—ä¾èµ–于已有的app.get, app.post方法,仅是简å•对其å°è£…\n 建立一个类似于django urlpatternçš„å¯ä»¥æ‰©å±•çš„route 分é…器\n\n 以便能够建立å¯ä»¥å¤ç”¨çš„app\n\n 设计方案:\n 对于主 route 通过主动调用done函数æ¥è¿è¡Œä¸»è®¾å®šçš„main函数,\n 而å­route则通过dispatch 进行å¬å”¤\n 主routeå’Œå­route 写法都如下,å­route还å¯ä»¥åµŒå¥—下层route,当然在最下层的route是没有调用dispatchçš„\n\n use manual\n 注æ„: 写路径的时候最å‰é¢çš„‘/’ä¸ç”¨å†™ ,分é…å­route的时候如果分é…çš„prefix没有以‘/’结尾,会自动在prefix上添加‘/’\n\n \n##############################################################\n# routes.js\n\nvar routes = require('recursive').Routes;\n\nroutes.main = function(){\n\n this.get('', func); # /\n this.get('News/', func); # /News/\n this.get('T/', func); # /T/\n\n this.post('News/', func); # /News/\n this.post('T/', func); # /T/\n\n this.dispatch('register', require('./apps/register/routes');# /register/\n this.dispatch('friends/', require('./apps/friends/routes');# /friends/\n\n }\n module.exports = routes;\n\n\n䏋颿˜¯app.js中的调用方法\n ##############################################################\n\n # app.js\n ...\n var routes = require('./routes');\n ...\n routes.done(app);\n ...\n\n ##############################################################\n\n\n\n\n\n\n\n\n\n","_id":"recursive@0.0.2","dist":{"shasum":"8ae27cd7b2840d124ae15fe9c4cfed73948949c8","tarball":"http://registry.npmjs.org/recursive/-/recursive-0.0.2.tgz"},"maintainers":[{"name":"ruandao","email":"ljy080829@gmail.com"}]}},"readme":"\næ€æƒ³ï¼š\n 该模å—ä¾èµ–于已有的app.get, app.post方法,仅是简å•对其å°è£…\n 建立一个类似于django urlpatternçš„å¯ä»¥æ‰©å±•çš„route 分é…器\n\n 以便能够建立å¯ä»¥å¤ç”¨çš„app\n\n 设计方案:\n 对于主 route 通过主动调用done函数æ¥è¿è¡Œä¸»è®¾å®šçš„main函数,\n O7Ü'ù 而å­route则通过dispatch 进行å¬å”¤\n 主routeå’Œå­route 写法都如下,å­route还å¯ä»¥åµŒå¥—下层route,当然在最下层的route是没有调用dispatchçš„\n\n use manual\n \n##############################################################\n# routes.js\n\nvar routes = require('recursive').Routes;\n\nroutes.main = function(){\n\n this.get('', func);\n this.get('News/', func);\n this.get('T/', func);\n\n this.post('News/', func);\n this.post('T/', func);\n\n this.dispatch('register/', require('./apps/register/routes');\n this.dispatch('friends/', require('./apps/friends/routes');\n\n }\n module.exports = routes;\n\n\n䏋颿˜¯app.js中的调用方法\n ##############################################################\n\n # app.js\n ...\n var routes = require('./routes');\n ...\n routes.done(app);\n ...\n\n ##############################################################\n\n\n\n\n\n\n\n\n\n","maintainers":[{"name":"ruandao","email":"ljy080829@gmail.com"}],"time":{"modified":"2012-08-08T10:31:55.561Z","created":"2012-08-08T09:43:41.303Z","0.0.1":"2012-08-08T09:43:47.210Z","0.0.2":"2012-08-08T10:31:55.561Z"},"author":{"name":"ruandao","email":"ljy080829@gmail.com"},"repository":{"type":"git","url":"https://github.com/ruandao/recursive.git"},"_id":"recursive","_rev":"1-6d35d03a72cb72df315b32dbaf96b38c"}ÿdocument-storeÿrazor˜{"id":"razor","rev":"1-ae726403fbbf0264367adbea91472f4d","rev_tree":[{"pos":1,"ids":["ae726403fbbf0264367adbea91472f4d",{"status":"available"},[]]}],"rev_map":{"1-ae726403fbbf0264367adbea91472f4d":3953},"winningRev":"1-ae726403fbbf0264367adbea91472f4d","deleted":false,"seq":3953}ÿby-sequenceÿ0000000000003953¤ {"name":"razor","description":"razor style javascript template tool","dist-tags":{"latest":"0.6.7"},"versions":{"0.6.7":{"author":{"name":"kinogam","email":"kinogam@gmail.com","url":"http://github.com/kinogam"},"name":"razor","description":"razor style javascript template tool","version":"0.6.7","homepage":"http://www.kinogam.com","repository":{"type":"git","url":"git://github.com/kinogam/kino.razor.git"},"main":"./lib/kino.razor.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"kinogam","email":"kinogam@gmail.com"},"_id":"razor@0.6.7","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"e4ce4334d269bdbbde4eb3549141d49b5980ec94","tarball":"http://registry.npmjs.org/razor/-/razor-0.6.7.tgz"},"readme":"","maintainers":[{"name":"kinogam","email":"kinogam@gmail.com"}]}},"readme":"","maintainers":[{"name":"kinogam","email":"kinogam@gmail.com"}],"time":{"modified":"2012-06-07T08:22:57.761Z","created":"2012-06-07T08:22:47.243Z","0.6.7":"2012-06-07T08:22:57.761Z"},"author":{"name":"kinogam","email":"kinogam@gmail.com","url":"http://github.com/kinogam"},"repository":{"type":"git","url":"git://github.com/kinogam/kino.razor.git"},"_id":"razor","_rev":"1-ae726403fbbf0264367adbea91472f4d"}$ÿdocument-storeÿraphael-browserify¥{"id":"raphael-browserify","rev":"1-362592f640978f78827ad78b24831fc3","rev_tree":[{"pos":1,"ids":["362592f640978f78827ad78b24831fc3",{"status":"available"},[]]}],"rev_map":{"1-362592f640978f78827ad78b24831fc3":3952},"winningRev":"1-362592f640978f78827ad78b24831fc3","deleted":false,"seq":3952}ÿby-sequenceÿ0000000000003952× {"name":"raphael-browserify","description":"An npm package of raphael designed to work in both Node.js and browserify","dist-tags":{"latest":"2.1.0"},"versions":{"2.1.0":{"name":"raphael-browserify","description":"An npm package of raphael designed to work in both Node.js and browserify","version":"2.1.0","main":"raphael-browserify.js","dependencies":{"jsdom":"0.2.x"},"devDependencies":{"browserify":"1.12.x"},"scripts":{"test":"node test-node.js"},"repository":{"type":"git","url":"git://github.com/bpartridge/raphael.git"},"license":"MIT","_npmUser":{"name":"bpartridge","email":"bapartridge@gmail.com"},"_id":"raphael-browserify@2.1.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"1c28efed35c742bbf601606c1b0078eb55aff23c","tarball":"http://registry.npmjs.org/raphael-browserify/-/raphael-browserify-2.1.0.tgz"},"readme":"","maintainers":[{"name":"bpartridge","email":"bapartridge@gmail.com"}]}},"readme":"","maintainers":[{"name":"bpartridge","email":"bapartridge@gmail.com"}],"time":{"modified":"2012-06-07T19:11:51.238Z","created":"2012-06-07T19:11:48.705Z","2.1.0":"2012-06-07T19:11:51.238Z"},"repository":{"type":"git","url":"git://github.com/bpartridge/raphael.git"},"_id":"raphael-browserify","_rev":"1-362592f640978f78827ad78b24831fc3"}"ÿdocument-storeÿrailway-passport£{"id":"railway-passport","rev":"1-0d2d4db379be2624d77a2c66aa2502d2","rev_tree":[{"pos":1,"ids":["0d2d4db379be2624d77a2c66aa2502d2",{"status":"available"},[]]}],"rev_map":{"1-0d2d4db379be2624d77a2c66aa2502d2":3951},"winningRev":"1-0d2d4db379be2624d77a2c66aa2502d2","deleted":false,"seq":3951}ÿby-sequenceÿ0000000000003951Å,{"name":"railway-passport","description":"PassportJS integrated with Railway","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"author":{"name":"Anatoliy Chakkaev","email":"rpm1602@gmail.com"},"name":"railway-passport","description":"PassportJS integrated with Railway","version":"0.0.1","repository":{"type":"git","url":"git@github.com:1602/Railway-passport.git"},"main":"lib/passport.js","engines":{"node":">= 0.6.x"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway-passport@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"e5566ef649ee08c8ea427f4314a84663212d9a30","tarball":"http://registry.npmjs.org/railway-passport/-/railway-passport-0.0.1.tgz"},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}]},"0.0.2":{"author":{"name":"Anatoliy Chakkaev","email":"rpm1602@gmail.com"},"name":"railway-passport","description":"PassportJS integrated with Railway","version":"0.0.2","repository":{"type":"git","url":"git@github.com:1602/Railway-passport.git"},"main":"lib/passport.js","engines":{"node":">= 0.6.x"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway-passport@0.0.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"7405b6f03afbf9c0a481cb6295702bf27cf7b8d7","tarball":"http://registry.npmjs.org/railway-passport/-/railway-passport-0.0.2.tgz"},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}]},"0.0.3":{"author":{"name":"Anatoliy Chakkaev","email":"rpm1602@gmail.com"},"name":"railway-passport","description":"PassportJS integrated with Railway","version":"0.0.3","repository":{"type":"git","url":"git@github.com:1602/Railway-passport.git"},"main":"lib/passport.js","engines":{"node":">= 0.6.x"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway-passport@0.0.3","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"d5ae26bf1917a0ddcd1fcbfa5514e58938a9ed22","tarball":"http://registry.npmjs.org/railway-passport/-/railway-passport-0.0.3.tgz"},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}]},"0.0.4":{"author":{"name":"Anatoliy Chakkaev","email":"rpm1602@gmail.com"},"name":"railway-passport","description":"PassportJS integrated with Railway","version":"0.0.4","repository":{"type":"git","url":"git@github.com:1602/Railway-passport.git"},"main":"lib/passport.js","engines":{"node":">= 0.6.x"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway-passport@0.0.4","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"123e414979b5a09e34d0975e285f87beee38d5f9","tarball":"http://registry.npmjs.org/railway-passport/-/railway-passport-0.0.4.tgz"},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}]}},"readme":"## About\n\nPassportJS auth library integrated into RailwayJS. Why this package needed? To be honest, PassportJS is dead-simple in integrating. But it can be simplier. This package for authentication without extra coding, just configure it and use\n\n## Setup project\n\n### 1. config/environment.js:\n\n```javascript\nvar rwps = require('railway-passport');\n\napp.configure(function () {\n // some common stuff\n\n // init passport\n rwps.init();\n\n // hook up user model\n process.nextTick(function () {\n rwpass.loadUser(User);\n });\n\n app.use(app.router);\n});\n```\n\n### 2. config/passport.yml\n\n```yaml\ndevelopment:\n baseURL: 'http://localhost:3000/'\n google: yes\n github:\n clientID: \"a8578b8dc47834908338\"\n secret: \"d8107d7cd75fc8ee1f12cf1f38b3aa065c3ec2ac\"\n linkedin:\n apiKey: \"3s708f1uys4x\"\n secret: \"p3iBqlybJ5WNTINv\"\nproduction:\n baseURL: 'http://node-js.ru/'\n github:\n clientID: \"....\"\n secret: \"....\"\n```\n\n## Use\n\nAll authentication routes starts with `/auth/PROVIDERNAME`\nJust visit `/auth/google` to sign in with google:\n\n <% link_to('Sign in with google', '/auth/google') %>\n <% link_to('Sign in with linkedin', '/auth/linkedin') %>\n <% link_to('Sign in with github', '/auth/github') %>\n\nCallback urls:\n\n- github: `/auth/github/callback`\n- linkedin: `/auth/linkedin/callback`\n\nExample before filter (describe in your application controller):\n\n```javascript\nbefore(function requireManager() {\n if (!session.passport.user) {\n req.session.redirect = req.path;\n redirect('/auth/linkedin');\n } else {\n User.find(session.passport.user, function (err, user) {\n if (user && user.email === 'my.email@somehost.tld') {\n req.user = user;\n next();\n } else {\n flash('error', 'You have no permission to access this area');\n redirect('/');\n }\n });\n }\n});\n```\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"time":{"modified":"2012-07-02T09:49:46.484Z","created":"2012-03-14T19:33:07.172Z","0.0.1":"2012-03-14T19:33:09.190Z","0.0.2":"2012-04-18T22:18:21.105Z","0.0.3":"2012-04-23T20:32:50.653Z","0.0.4":"2012-07-02T09:49:46.484Z"},"author":{"name":"Anatoliy Chakkaev","email":"rpm1602@gmail.com"},"repository":{"type":"git","url":"git@github.com:1602/Railway-passport.git"},"_id":"railway-passport","_rev":"1-0d2d4db379be2624d77a2c66aa2502d2"}ÿdocument-storeÿplummetš{"id":"plummet","rev":"1-a794cbdf616d32ecf671bbd0156da064","rev_tree":[{"pos":1,"ids":["a794cbdf616d32ecf671bbd0156da064",{"status":"available"},[]]}],"rev_map":{"1-a794cbdf616d32ecf671bbd0156da064":3950},"winningRev":"1-a794cbdf616d32ecf671bbd0156da064","deleted":false,"seq":3950}ÿby-sequenceÿ0000000000003950Ð{"name":"plummet","description":"streaming and syncing http and json api for PlumbDB (built on LevelDB)","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"plummet","description":"streaming and syncing http and json api for PlumbDB (built on LevelDB)","dependencies":{"routes":"0.1.1"},"tags":["server","database","leveldb","api"],"version":"0.0.1","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/plummet.git"},"bugs":{"url":"http://github.com/maxogden/plummet/issues"},"engines":["node >= 0.6.x"],"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"plummet@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"fba5e7ad07cd8c351563917c62dad1a1289670fa","tarball":"http://registry.npmjs.org/plummet/-/plummet-0.0.1.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.2":{"name":"plummet","description":"streaming and syncing http and json api for PlumbDB (built on LevelDB)","dependencies":{"plumbdb":"0.0.2","routes":"0.1.1"},"tags":["server","database","leveldb","api"],"version":"0.0.2","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/plummet.git"},"bugs":{"url":"http://github.com/maxogden/plummet/issues"},"engines":["node >= 0.6.x"],"scripts":{"test":"node test.js"},"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"plummet@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"cbd3ee0680867258a174340b0432ae2014d99b42","tarball":"http://registry.npmjs.org/plummet/-/plummet-0.0.2.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]},"0.0.3":{"name":"plummet","description":"streaming and syncing http and json api for PlumbDB (built on LevelDB)","dependencies":{"plumbdb":"0.0.2","routes":"0.1.1","request":"2.9.202"},"tags":["server","database","leveldb","api"],"version":"0.0.3","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/plummet.git"},"bugs":{"url":"http://github.com/maxogden/plummet/issues"},"engines":["node >= 0.6.x"],"scripts":{"test":"node test.js"},"_npmUser":{"name":"maxogden","email":"max@maxogden.com"},"_id":"plummet@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"756f9549e5b1292cf5a3316600c3114693f21736","tarball":"http://registry.npmjs.org/plummet/-/plummet-0.0.3.tgz"},"maintainers":[{"name":"maxogden","email":"max@maxogden.com"}]}},"readme":"streaming + syncing http + json api for [PlumbDB](https://github.com/maxogden/plumbdb) (which is built on leveldb)\n\n\n var plummet = new Plummet('test', function(err, server) {\n server.listen(8000)\n console.log('plummeting on 8000')\n })\n\n\n curl -X POST http://localhost:8000 -H \"Content-type: application/json\" -d '{\"pizza\":\"waffle\"}'\n curl -X POST http://localhost:8000/_bulk -d '{\"docs\":[{\"hello\":\"world\"}, {\"foo\":\"bar\"}]}' -H \"Content-type: application/json\"\n curl http://localhost:8000/_changes\n curl http://localhost:8000/_changes?since=1339537769596014\n curl http://localhost:8000/1339537769596014\n curl -X POST http://localhost:8000/_pull -d '{\"source\":\"http://remoteplummet\"}' -H 'content-type: application/json'\n \n","maintainers":[{"name":"maxogden","email":"max@maxogden.com"}],"time":{"modified":"2012-06-26T20:48:54.326Z","created":"2012-06-15T23:55:27.561Z","0.0.1":"2012-06-15T23:55:29.632Z","0.0.2":"2012-06-17T01:04:06.493Z","0.0.3":"2012-06-26T20:48:54.326Z"},"author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/plummet.git"},"_id":"plummet","_rev":"1-a794cbdf616d32ecf671bbd0156da064"}ÿdocument-storeÿpixel-tracker {"id":"pixel-tracker","rev":"1-62c530e117b02a1616837799baa9e425","rev_tree":[{"pos":1,"ids":["62c530e117b02a1616837799baa9e425",{"status":"available"},[]]}],"rev_map":{"1-62c530e117b02a1616837799baa9e425":3949},"winningRev":"1-62c530e117b02a1616837799baa9e425","deleted":false,"seq":3949}ÿby-sequenceÿ0000000000003949íW{"name":"pixel-tracker","description":"a simple pixel tracker for node","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum"},"name":"pixel-tracker","description":"a simple pixel tracker for node.js","version":"0.0.0","homepage":"https://github.com/analytics-machine/pixel-tracker","repository":{"url":""},"scripts":{"test":"npm test"},"engines":{"node":"~0.6.1"},"dependencies":{"underscore":"~1.2.3"},"devDependencies":{},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"pixel-tracker@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"04b95d4a56ef2af87df53a2c87164315e1d1f2ab","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.0.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.0.1":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum"},"name":"pixel-tracker","description":"a simple pixel tracker for node.js","version":"0.0.1","homepage":"https://github.com/analytics-machine/pixel-tracker","repository":{"url":""},"scripts":{"test":"node test/pixel-tracker.js"},"engines":{"node":"~0.6.1"},"dependencies":{"underscore":"~1.2.3"},"devDependencies":{"express":"~2.5.2","tap":"~0.0.5"},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"pixel-tracker@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"c687ef17168309bc5e24e3a567b0085ab48e65bd","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.1.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum"},"name":"pixel-tracker","description":"a simple pixel tracker for node.js","version":"0.0.2","homepage":"https://github.com/analytics-machine/pixel-tracker","repository":{"url":""},"scripts":{"test":"node test/pixel-tracker.js"},"engines":{"node":"~0.6.1"},"dependencies":{"underscore":"~1.2.3","sequence":"~2.1.1"},"devDependencies":{"express":"~2.5.2","tap":"~0.0.5"},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"pixel-tracker@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"06c411314cb1c03890a34fae3c99713edaae6422","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.2.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.0.3":{"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum"},"contributors":[{"name":"Butu Kumar","url":"https://github.com/butu5/"}],"name":"pixel-tracker","description":"a simple pixel tracker for node.js","version":"0.0.3","homepage":"https://github.com/blobaum/pixel-tracker","repository":{"url":""},"scripts":{"test":"node test/pixel-tracker.js"},"engines":{"node":"~0.6.x"},"dependencies":{"sequence":"~2.1.1"},"devDependencies":{"express":"~2.5.2","tap":"~0.0.5"},"optionalDependencies":{},"_npmUser":{"name":"tblobaum","email":"tblobaum@gmail.com"},"_id":"pixel-tracker@0.0.3","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c3b13331fc79ba0ff295a12f686274c32369181e","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.3.tgz"},"readme":"pixel-tracker \n=============\nA simple pixel-tracker for node.js\n\n[![Build Status](https://secure.travis-ci.org/tblobaum/pixel-tracker.png)](http://travis-ci.org/tblobaum/pixel-tracker)\n\nExample\n-------\n\nCollect any data with parameters, along with some defaults\n\n```javascript\n\nvar tracker = require('pixel-tracker')\n\ntracker.use(function (e, res) {\n console.log(res)\n \n /*\n { \n ua: { browser: 'Chrome', version: '13.0' },\n cookies: { _tracker: '0rc8ba4t9fgjp9hz' },\n host: 'localhost:3000',\n domain: 'localhost',\n path: '/pixel',\n geo: { ip: '127.0.0.1' } \n language: 'en-US,en;q=0.8',\n referer: ''\n }\n \n */\n\n})\n\n// ..\n\napp.all('/pixel', tracker.middleware)\n\napp.listen()\n\n````\n\nInstall\n-------\n\n`npm install pixel-tracker`\n\n\nLicense\n-------\n\nMIT\n\n","maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"directories":{}},"0.0.4":{"name":"pixel-tracker","version":"0.0.4","description":"a simple pixel tracker for node","main":"index.js","bin":{},"directories":{"test":"test"},"dependencies":{},"devDependencies":{"express":"~2.x.x","tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/tblobaum/pixel-tracker.git"},"homepage":"https://github.com/tblobaum/pixel-tracker","keywords":["redis","stream"],"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"contributors":[{"name":"Butu Kumar","url":"https://github.com/butu5/"},{"name":"eethann","url":"https://github.com/eethann"}],"license":"MIT","readme":"# pixel-tracker \nA simple pixel-tracker for node.js\n\n[![Build Status](https://secure.travis-ci.org/tblobaum/pixel-tracker.png)](http://travis-ci.org/tblobaum/pixel-tracker)\n\n# Example\n\nCollect some data with parameters, along with the defaults\n\n``` js\n\nvar tracker = require('pixel-tracker')\n\ntracker.use(function (error, result) {\n console.log(result)\n \n /*\n {\n \"cookies\": { \"_tracker\": \"58f911166e6d31041eba8d06e11e3f77\" },\n \"host\": \"localhost:3000\",\n \"cache\": { \"max-age\": \"0\" },\n \"referer\": \"direct\",\n \"params\": [],\n \"decay\": 1342597993859,\n \"useragent\": { \"browser\": \"Chrome\", \"version\": \"20.0\" },\n \"language\": [ \"en-US\", \"en\", { \"q\": \"0.8\" } ],\n \"geo\": { \"ip\": \"127.0.0.1\" },\n \"domain\": \"localhost\"\n }\n */\n\n})\n\n// ..\n\napp.all('/pixel', tracker.middleware)\n\napp.listen()\n\n```\n\n# Methods\n\n``` js\nvar tracker = require('pixel-tracker')\n```\n\n## tracker.use(callback)\n\nThe `callback` function is called with `error`, `result`. Multiple callbacks can be used.\n\n## tracker.configure(options)\n\npixel-tracker has a few configurable options.\n\n`disable_cookies` defaults to false\n`expires` defaults to 15 minutes, which may not be desirable based on your use case\n\n## tracker.middleware(request, response)\nA function to be called for each http request which calls `response.end` with a 1x1 pixel for every request and then calls all the functions provided with `tracker.use`. This works out of the box with express and would also work with any vanilla http server as long as a cookies implementation is provided for the response object (or cookies are disabled)\n\n``` js\n\nvar tracker = require('pixel-tracker')\n\ntracker\n .use(function (error, result) {\n // do something with result\n // ...\n\n })\n .configure({ disable_cookies : true })\n\nrequire('http').createServer(tracker.middleware).listen(3000)\n\n```\n\n# Install\n\n`npm install pixel-tracker`\n\n# Tests\n\n`npm install -g tap && npm test`\n\n# License\n\nMIT\n\n","_id":"pixel-tracker@0.0.4","dist":{"shasum":"003b88475d12e5a9aaaba20fa929681d96710691","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.4.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]},"0.0.5":{"name":"pixel-tracker","version":"0.0.5","description":"a simple pixel tracker for node","main":"index.js","bin":{},"directories":{"test":"test"},"dependencies":{},"devDependencies":{"express":"~2.x.x","tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/tblobaum/pixel-tracker.git"},"homepage":"https://github.com/tblobaum/pixel-tracker","keywords":["pixel","tracker"],"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"contributors":[{"name":"Butu Kumar","url":"https://github.com/butu5/"},{"name":"eethann","url":"https://github.com/eethann"},{"name":"Noah H. Smith","url":"https://github.com/noazark"},{"name":"Qasim Zaidi","url":"https://github.com/qzaidi"}],"license":"MIT","readme":"# pixel-tracker \nA simple pixel-tracker for node.js\n\n[![Build Status](https://secure.travis-ci.org/tblobaum/pixel-tracker.png)](http://travis-ci.org/tblobaum/pixel-tracker)\n\n# Example\n\nCollect some data with parameters, along with the defaults\n\n``` js\n\nvar tracker = require('pixel-tracker')\n\ntracker.use(function (error, result) {\n console.log(result)\n \n /*\n {\n \"cookies\": { \"_tracker\": \"58f911166e6d31041eba8d06e11e3f77\" },\n \"host\": \"localhost:3000\",\n \"cache\": { \"max-age\": \"0\" },\n \"referer\": \"direct\",\n \"params\": [],\n \"decay\": 1342597993859,\n \"useragent\": { \"browser\": \"Chrome\", \"version\": \"20.0\" },\n \"language\": [ \"en-US\", \"en\", { \"q\": \"0.8\" } ],\n \"geo\": { \"ip\": \"127.0.0.1\" },\n \"domain\": \"localhost\"\n }\n */\n\n})\n\n// ..\n\napp.all('/pixel', tracker.middleware)\n\napp.listen()\n\n```\n\n# Methods\n\n``` js\nvar tracker = require('pixel-tracker')\n```\n\n## tracker.use(callback)\n\nThe `callback` function is called with `error`, `result`. Multiple callbacks can be used.\n\n## tracker.configure(options)\n\npixel-tracker has a few configurable options.\n\n`disable_cookies` defaults to false\n`maxAge` defaults to 2 days, which may not be desirable based on your use case\n\n## tracker.middleware(request, response)\nA function to be called for each http request which calls `response.end` with a 1x1 pixel for every request and then calls all the functions provided with `tracker.use`. This works out of the box with express and would also work with any vanilla http server as long as a cookies implementation is provided for the response object (or cookies are disabled)\n\n``` js\n\nvar tracker = require('pixel-tracker')\n\ntracker\n .use(function (error, result) {\n // do something with result\n // ...\n\n })\n .configure({ disable_cookies : true })\n\nrequire('http').createServer(tracker.middleware).listen(3000)\n\n```\n\n# Install\n\n`npm install pixel-tracker`\n\n# Tests\n\n`npm install -g tap && npm test`\n\n# License\n\nMIT\n\n","_id":"pixel-tracker@0.0.5","dist":{"shasum":"244999347fa6f398bd9744d26d7bfd468fa246d7","tarball":"http://registry.npmjs.org/pixel-tracker/-/pixel-tracker-0.0.5.tgz"},"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}]}},"readme":null,"maintainers":[{"name":"tblobaum","email":"tblobaum@gmail.com"}],"time":{"modified":"2012-07-18T08:33:02.953Z","created":"2011-12-18T02:05:05.083Z","0.0.0":"2011-12-18T02:05:06.188Z","0.0.1":"2011-12-18T02:20:01.260Z","0.0.2":"2011-12-19T09:25:18.952Z","0.0.3":"2012-04-11T20:44:07.294Z","0.0.4":"2012-07-18T08:23:05.244Z","0.0.5":"2012-07-18T08:33:02.953Z"},"author":{"name":"Thomas Blobaum","email":"tblobaum@gmail.com","url":"https://github.com/tblobaum/"},"repository":{"type":"git","url":"git://github.com/tblobaum/pixel-tracker.git"},"_id":"pixel-tracker","_rev":"1-62c530e117b02a1616837799baa9e425"}ÿdocument-storeÿphony˜{"id":"phony","rev":"1-72a005abc3364c2996348ff713b26f81","rev_tree":[{"pos":1,"ids":["72a005abc3364c2996348ff713b26f81",{"status":"available"},[]]}],"rev_map":{"1-72a005abc3364c2996348ff713b26f81":3948},"winningRev":"1-72a005abc3364c2996348ff713b26f81","deleted":false,"seq":3948}ÿby-sequenceÿ0000000000003948¥C{"name":"phony","description":"A fake data generator.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.2":{"name":"phony","description":"A fake data generator.","keywords":["fake","phony","data","generator","test","testing","mock","person","name","email","address"],"homepage":"http://rodw.github.com/phony","repository":{"type":"git","url":"git://github.com/rodw/phony.git"},"bugs":{"name":"https://github.com/rodw/phony/issues"},"author":{"name":"Rod Waldhoff","url":"http://rodw.github.com/"},"version":"0.0.2","main":"lib/phony.js","bin":{"phony":"./bin/phony"},"dependencies":{"optimist":"latest"},"devDependencies":{"coffee-script":"latest","expresso":"latest","jscoverage":"latest","mocha":"latest","should":"latest","docco":"latest"},"scripts":{"test":"make test"},"_npmUser":{"name":"rodw","email":"rwaldhoff@gmail.com"},"_id":"phony@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c68a0400df4a36524066944fab0a9aaa43d345fc","tarball":"http://registry.npmjs.org/phony/-/phony-0.0.2.tgz"},"maintainers":[{"name":"rodw","email":"rwaldhoff@gmail.com"}]}},"readme":"# phony\n\nA fake data generator in JavaScript/CoffeeScript.\n\n# Installing Phony\n\nTo install Phony with [NPM](http://npmjs.org/), use:\n\n > npm install phony\n\nor add a dependency such as:\n\n \"dependencies\" : {\n \"phony\" : \"latest\"\n }\n\nto your `package.json` file and run `npm install`.\n\n# Using Phony\n\nThe `phony` module exports a simple factory method, which you can use as follows:\n\n // JavaScript\n var phony = require('phony').make_phony(); \n\nor\n\n # CoffeeScript\n phony = require('phony').make_phony()\n\nYou can then use `phony` to generate a wide variety of fake data.\n\n## Names\n\n coffee> phony.name()\n 'Sylvia Robinson'\n \n coffee> phony.first_name()\n 'Deborah'\n \n coffee> phony.surname()\n 'Sanchez'\n \n coffee> phony.male_name()\n 'Brett Foster'\n \n coffee> phony.female_name()\n 'Gina Holmes'\n \n coffee> phony.name(return:'map')\n { first_name: 'Steve', surname: 'Stephens' }\n \n coffee> phony.name(return:'array')\n [ 'Darlene', 'Clark' ]\n \n coffee> phony.male_name(return:'map')\n { first_name: 'Adam', surname: 'Watts' }\n\n\n## Places\n\n coffee> phony.street()\n 'Old Gordon Court'\n \n coffee> phony.street()\n 'S Hermosa Drive'\n \n coffee> phony.street_address()\n '8172 South Ontario Circle'\n \n coffee> phony.postal_code()\n '27101'\n \n coffee> phony.zip_code()\n '40206'\n \n coffee> phony.city()\n 'Yonkers'\n \n coffee> phony.city()\n 'Hamden'\n \n coffee> phony.state()\n 'DE'\n \n coffee> phony.state()\n 'MA'\n \n coffee> phony.city_state()\n 'Indianapolis IN'\n \n coffee> phony.city_state_zip()\n 'East Hartford CT 06108'\n\n coffee> phony.city_state_zip(return:\"map\")\n { city: 'Grand Forks',\n state: 'ND',\n postal_code: '58203' }\n\n## Text\n \n coffee> phony.letters(4)\n 'ecaa'\n \n coffee> phony.letters(4,delimiter:' ')\n 'f t e b'\n \n coffee> phony.letters(4,delimiter:'-')\n 'r-e-v-o'\n \n coffee> phony.letters(4,delimiter:', ')\n 'l, d, t, w'\n \n coffee> phony.word()\n 'weekended'\n \n coffee> phony.lorem_word()\n 'nunc'\n \n coffee> phony.words(10)\n 'disquiets lance porta allotments jack nonprofessionals contributor \n changing kristen catastrophe'\n \n coffee> phony.lorem_words(10)\n 'fusce malesuada laoreet sed massa mi nullam vivamus nullam ut'\n \n coffee> phony.lorem_words(10)\n 'sem dui cum id magnis enim penatibus et dignissim odio'\n \n coffee> phony.title()\n 'Bayberry Butler Rosemary'\n \n coffee> phony.title()\n 'Tamara Ulna'\n \n coffee> phony.lorem_title()\n 'Feugiat Nisl Libero Risus'\n\n coffee> phony.lorem_sentence()\n 'Proin neque massa, cursus ut, gravida ut, lobortis eget, lacus.'\n \n coffee> phony.lorem_sentences(2)\n 'Phasellus purus. Nullam libero mauris, consequat quis, varius et, \n dictum id, arcu.'\n\n coffee> phony.lorem_sentences(5,return:\"array\")\n [ 'Nullam libero mauris, consequat quis, varius et, dictum id, arcu.',\n 'Sed bibendum.',\n 'Donec hendrerit tempor tellus.',\n 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.',\n 'Nulla posuere.' ]\n \n coffee> phony.lorem_paragraph()\n 'Phasellus purus. Nam vestibulum accumsan nisl. Nunc porta vulputate\n tellus.'\n\n coffee> phony.lorem_paragraphs(2)\n 'Donec vitae dolor. Proin neque massa, cursus ut, gravida ut, lobortis \n eget, lacus. Phasellus lacus. Praesent augue. Proin neque massa, \n cursus ut, gravida ut, lobortis eget, lacus. Praesent fermentum \n tempor tellus.'\n \n coffee> phony.lorem_paragraphs(3,return:\"array\")\n [ 'Integer placerat tristique nisl. Fusce commodo. Phasellus at dui \n b ô²ù in ligula mollis ultricies.',\n 'Nunc porta vulputate tellus. Fusce sagittis, libero non molestie \n mollis, magna orci ultrices dolor, at vulputate neque nulla lacinia \n eros. Praesent augue.',\n 'Nulla posuere. In id erat non orci commodo lobortis. Pellentesque \n dapibus suscipit ligula.' ]\n\n## Internet\n\n coffee> phony.domain_name()\n 'avior.nhs.uk'\n\n coffee> phony.domain_name()\n 'continuing.mobi'\n\n coffee> phony.domain_name()\n 'gonzales.com'\n\n coffee> phony.host_name()\n 'underestimate.edu'\n\n coffee> phony.host_name()\n 'unemployable.areo'\n \n coffee> phony.host_name()\n 'cdn.maniacal.gov.uk'\n\n coffee> phony.host_name()\n 'www.vulputate.org'\n \n coffee> phony.username()\n 'n.lane'\n \n coffee> phony.username()\n 'zreid'\n \n coffee> phony.username()\n 'yz-wallace'\n\n coffee> phony.email_address()\n 'a.michelle@elit.edu'\n \n coffee> phony.email_address()\n 'myers@jaggedly.com'\n\n coffee> phony.file_name()\n 'boastfulness.zip'\n \n coffee> phony.file_name()\n 'apparel.doc'\n \n coffee> phony.file_name()\n 'nancy.txt'\n\n coffee> phony.file_path()\n '/terry/huskies/bower'\n \n coffee> phony.file_path()\n '/volleyball/chavez'\n \n coffee> phony.file_path()\n '/warren'\n \n coffee> phony.file_path_and_name()\n '/lillian/harold'\n \n coffee> phony.file_path_and_name()\n '/betty/frances/aloud.ppt'\n \n coffee> phony.file_path_and_name()\n '/barnett/norma/pronghorns/boyd.aspx'\n \n coffee> phony.uri()\n 'http://aerie.com/romero/manacle/'\n \n coffee> phony.uri()\n 'https://oliver.mil/engorging'\n\n coffee> phony.uri()\n 'http://william.org:8080/celebrities/sam/robert'\n\n coffee> phony.uri()\n 'http://www2.hansontuareg.org/natalie/'\n\n# Note\n\nThis module is developed following the [git-flow](https://github.com/nvie/gitflow) workflow/branching model.\n\nThe default [master](https://github.com/rodw/phony) branch only contains the released versions of the code and hence may seem relatively stagnant (or stable, depending upon your point of view).\n\nMost of the develop action happens on the [develop](https://github.com/rodw/phony/tree/develop) branch or in feature branches.\n","maintainers":[{"name":"rodw","email":"rwaldhoff@gmail.com"}],"time":{"modified":"2012-04-23T21:32:42.527Z","created":"2012-04-23T21:32:42.188Z","0.0.2":"2012-04-23T21:32:42.527Z"},"author":{"name":"Rod Waldhoff","url":"http://rodw.github.com/"},"repository":{"type":"git","url":"git://github.com/rodw/phony.git"},"_id":"phony","_rev":"1-72a005abc3364c2996348ff713b26f81"}ÿdocument-storeÿpermcomb›{"id":"permcomb","rev":"1-57f9b892dd59e640b8870233f8f7b5f6","rev_tree":[{"pos":1,"ids":["57f9b892dd59e640b8870233f8f7b5f6",{"status":"available"},[]]}],"rev_map":{"1-57f9b892dd59e640b8870233f8f7b5f6":3947},"winningRev":"1-57f9b892dd59e640b8870233f8f7b5f6","deleted":false,"seq":3947}ÿby-sequenceÿ0000000000003947ú{"name":"permcomb","description":"Basic permutation and combination generator","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"Raymond Ie","email":"ie.raymond@gmail.com"},"name":"permcomb","description":"Basic permutation and combination generator","keywords":["permutation","combination","combo"],"version":"0.0.1","main":"./lib/PermComb","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"rie","email":"ie.raymond@gmail.com"},"_id":"permcomb@0.0.1","_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9113ce010b76e80aa154983795cccb75900d6c61","tarball":"http://registry.npmjs.org/permcomb/-/permcomb-0.0.1.tgz"},"readme":"","maintainers":[{"name":"rie","email":"ie.raymond@gmail.com"}]}},"readme":"","maintainers":[{"name":"rie","email":"ie.raymond@gmail.com"}],"time":{"modified":"2012-06-14T00:10:58.475Z","created":"2012-06-14T00:10:57.191Z","0.0.1":"2012-06-14T00:10:58.475Z"},"author":{"name":"Raymond Ie","email":"ie.raymond@gmail.com"},"_id":"permcomb","_rev":"1-57f9b892dd59e640b8870233f8f7b5f6"}ÿdocument-storeÿperfmonš{"id":"perfmon","rev":"1-f0588273b3cc84c84dde946e66faf212","rev_tree":[{"pos":1,"ids":["f0588273b3cc84c84dde946e66faf212",{"status":"available"},[]]}],"rev_map":{"1-f0588273b3cc84c84dde946e66faf212":3946},"winningRev":"1-f0588273b3cc84c84dde946e66faf212","deleted":false,"seq":3946}ÿby-sequenceÿ0000000000003946é${"name":"perfmon","description":"Windows perfmon metrics stream","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.1":{"name":"perfmon","version":"0.1.1","author":{"name":"Ben Taber","url":"ben.taber@markit.com"},"description":"Windows perfmon metrics stream","keywords":["perfmon logman typeperf win32 windows metrics stream monitor performance"],"homepage":"https://github.com/markitondemand/node-perfmon","bugs":{"name":"https://github.com/markitondemand/node-perfmon/issues"},"main":"./perfmon.js","repository":{"type":"git","url":"git://github.com/markitondemand/node-perfmon.git"},"engines":{"node":">=0.6.0"},"_npmUser":{"name":"bentaber","email":"ben.taber@gmail.com"},"_id":"perfmon@0.1.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"118e74ae6af0d9f4d134fe7def9d3d4fc47cf82a","tarball":"http://registry.npmjs.org/perfmon/-/perfmon-0.1.1.tgz"},"maintainers":[{"name":"bentaber","email":"ben.taber@gmail.com"}]},"0.2.0":{"name":"perfmon","version":"0.2.0","author":{"name":"Ben Taber","url":"ben.taber@markit.com"},"description":"Windows perfmon metrics stream","keywords":["perfmon logman typeperf win32 windows metrics stream monitor performance"],"homepage":"https://github.com/markitondemand/node-perfmon","bugs":{"name":"https://github.com/markitondemand/node-perfmon/issues"},"main":"./perfmon.js","repository":{"type":"git","url":"git://github.com/markitondemand/node-perfmon.git"},"os":["win32"],"engines":{"node":">=0.6.0"},"scripts":{"test":"node test/test.js"},"_npmUser":{"name":"bentaber","email":"ben.taber@gmail.com"},"_id":"perfmon@0.2.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"4cf6c8313a9d626d88837e5d390cf322ffdae534","tarball":"http://registry.npmjs.org/perfmon/-/perfmon-0.2.0.tgz"},"maintainers":[{"name":"bentaber","email":"ben.taber@gmail.com"}]}},"readme":"perfmon\n=============\n\nStreaming [Performance Monitor](http://technet.microsoft.com/en-us/library/cc749249.aspx) metrics for [Node](http://nodejs.org) on Windows.\n\nIt's just a wrapper around [typeperf](http://technet.microsoft.com/en-us/library/bb490960.aspx), and provides a Node [ReadableStream](http://nodejs.org/docs/latest/api/streams.html#readable_Stream) interface. Metrics are streamed once per second. `perfmon` wraps up the typeperf executable as a child_process. It ensures that no more than one process will be spawned for each host machine streaming metrics.\n\n# Dependenices\n\nNode, Windows, and the typeperf executable in your path. I've never seen a Windows installation that didn't have it, but it's not out of the realm of possibility. Windows For Workgroups 3.11 had it. For realz.\n\nOnly the machine running Node needs Node. Makes perfect sense. Streaming metrics from remote machines only requires that they are running Windows.\n\n# Install\n\n\n\tnpm install perfmon\n\nand then require it\n\n\tvar perfmon = require('perfmon');\n\n# Usage\n\nThe most basic usage is to stream a single metric from the local machine. The `perfmon` function returns an instance of a ReadableStream. You can either pass a callback as the last argument to `perfmon`, or attach to the `data` and `error` events on the returned Stream.\n\nThe first two arguments to `perfmon`, *counters* and *hosts*, can be strings or arrays. *hosts* is optional and assumed to be local machine if not specified.\n\n\tperfmon('\\\\processor(_total)\\\\% processor time', function(err, data) {\n\t\tconsole.log(data);\n\t});\n\n\n## List available metric counters\n\nUse `list` to return a, um, list of available counters.\n\n\n\tperfmon.list('memory', function(err, data) {\n\t\tconsole.log(data);\n\t});\n\n\n## Stream remote host metrics\n\nYou can connect to any machine on your network (assuming you have appropriate permissions, more on that in the future), and stream metrics from that machine. \n\n\tvar counters = [\n\t\t'\\\\processor(_total)\\\\% processor time',\n\t\t'\\\\memory\\\\available bytes',\n\t];\n\n\tperfmon(counters, 'somecomputer.somewhere.local', function(err, data) {\n\t\tconsole.log(data);\n\t});\n","maintainers":[{"name":"bentaber","email":"ben.taber@gmail.com"}],"time":{"modified":"2012-04-23T15:44:08.707Z","created":"2012-01-31T22:57:53.909Z","0.1.1":"2012-01-31T22:57:54.750Z","0.2.0":"2012-04-23T15:44:08.707Z"},"author":{"name":"Ben Taber","url":"ben.taber@markit.com"},"repository":{"type":"git","url":"git://github.com/markitondemand/node-perfmon.git"},"_id":"perfmon","_rev":"1-f0588273b3cc84c84dde946e66faf212"}+ÿdocument-storeÿpassport-photo-middleware¬{"id":"passport-photo-middleware","rev":"1-6f510904c9965b172fee639d81e54f9e","rev_tree":[{"pos":1,"ids":["6f510904c9965b172fee639d81e54f9e",{"status":"available"},[]]}],"rev_map":{"1-6f510904c9965b172fee639d81e54f9e":3945},"winningRev":"1-6f510904c9965b172fee639d81e54f9e","deleted":false,"seq":3945}ÿby-sequenceÿ0000000000003945Ç{"name":"passport-photo-middleware","description":"Middleware to attach avatars to users in connect.","dist-tags":{"latest":"0.0.1-beta1"},"versions":{"0.0.1-beta1":{"name":"passport-photo-middleware","version":"0.0.1-beta1","description":"Middleware to attach avatars to users in connect.","main":"./index","repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-middleware.git"},"dependencies":{},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"passport-photo-middleware@0.0.1-beta1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8934fc0ce07240f582797d0a4b03b8b07f060747","tarball":"http://registry.npmjs.org/passport-photo-middleware/-/passport-photo-middleware-0.0.1-beta1.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"# Passport Photo Middleware\r\n\r\n## Installation\r\n\r\n npm install passport-photo-middleware\r\n\r\n## Usage\r\n\r\n```javascript\r\n\r\n//1) create express server or connect server called app\r\n\r\n//2) include authentication middleware to set user as req.user\r\n\r\n//3) set up the passport-photo library\r\n\r\nvar photo = require(\"passport-photo\");\r\nphoto.use(require(\"passport-photo-gravatar\")());\r\n\r\n//4) include the middleware\r\n\r\napp.use(require('passport-photo-middleware')(photo));\r\n\r\n//5) rest of application\r\n```","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:18.992Z","created":"2012-04-17T19:20:24.603Z","0.0.1-beta1":"2012-04-17T19:20:27.532Z"},"repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-middleware.git"},"_id":"passport-photo-middleware","_rev":"1-6f510904c9965b172fee639d81e54f9e"})ÿdocument-storeÿpassport-photo-gravatarª{"id":"passport-photo-gravatar","rev":"1-25f4cad3e9044d3f3e0831df4bac2e09","rev_tree":[{"pos":1,"ids":["25f4cad3e9044d3f3e0831df4bac2e09",{"status":"available"},[]]}],"rev_map":{"1-25f4cad3e9044d3f3e0831df4bac2e09":3944},"winningRev":"1-25f4cad3e9044d3f3e0831df4bac2e09","deleted":false,"seq":3944}ÿby-sequenceÿ0000000000003944ä{"name":"passport-photo-gravatar","description":"Passport-Photo strategy for retrieving gravatar profile pictures.","dist-tags":{"latest":"0.0.1-beta1"},"versions":{"0.0.1-beta1":{"name":"passport-photo-gravatar","version":"0.0.1-beta1","description":"Passport-Photo strategy for retrieving gravatar profile pictures.","main":"./index","repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-gravatar.git"},"dependencies":{"gravatar":"1.0.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"passport-photo-gravatar@0.0.1-beta1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"1bbddca089d86e8c87ab0b13846179292f7fe30f","tarball":"http://registry.npmjs.org/passport-photo-gravatar/-/passport-photo-gravatar-0.0.1-beta1.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"\r\n# Passport Photo Gravatar\r\n\r\n## Installation\r\n\r\n npm install passport-photo-gravatar\r\n\r\n## Usage\r\n\r\n```javascript\r\nvar photo = require(\"passport-photo\");\r\nvar gravatar = require(\"passport-photo-gravatar\");\r\n\r\nphoto.use(gravatar());\r\n/* Try facebook search here */\r\n//Default methods are never cached and must not return 404.\r\nphoto.useDefault(gravatar({default:\"identicon\"}));\r\n\r\nphoto({facebookid:445461, access_token:\"User's Access Token\",email:\"user@example.com\"}, function(err, avatarURL){\r\n if(!err) require('request')(avatarURL).pipe(require('fs').createWriteStream(\"./avatar.jpg\"));\r\n});\r\n```\r\n\r\n\r\n## API\r\n \r\nStrategy to use email to retrieve and check gravatar url\r\nIf you set opts.default to something other than `'404'` it won't fall through to other strategies.\r\n\r\n@param [opts] {object} optional options for the request.\r\n@param [opts.email] {string} the property of the user object containing the email default: \"email\"\r\n@param [opts.size] {integer} the size of the resulting avatar default:50\r\n@param [opts.rating] {string} display up to this rating, can be 'g', 'pg', 'r' or 'x' default:'g'\r\n@param [opts.default] {string} default image type to display from gravatar, can be '404', 'mm', 'identicon', 'monsterid', 'wavatar' or 'retro' default: '404'\r\n@param [opts.forcedefault] {boolean} force the default image to be used (can't use with 404) default: false\r\n@param [opts.useHTTPs] {boolean} set to false if you want to request the image without https default: true","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:16.328Z","created":"2012-04-17T18:05:59.408Z","0.0.1-beta1":"2012-04-17T18:06:07.511Z"},"repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-gravatar.git"},"_id":"passport-photo-gravatar","_rev":"1-25f4cad3e9044d3f3e0831df4bac2e09"})ÿdocument-storeÿpassport-photo-facebookª{"id":"passport-photo-facebook","rev":"1-1ec202f5f70a564866b5705faf0d5fbc","rev_tree":[{"pos":1,"ids":["1ec202f5f70a564866b5705faf0d5fbc",{"status":"available"},[]]}],"rev_map":{"1-1ec202f5f70a564866b5705faf0d5fbc":3943},"winningRev":"1-1ec202f5f70a564866b5705faf0d5fbc","deleted":false,"seq":3943}ÿby-sequenceÿ0000000000003943¡!{"name":"passport-photo-facebook","description":"Passport-Photo strategies for retrieving facebook profile pictures.","dist-tags":{"latest":"0.0.1-beta2"},"versions":{"0.0.1-beta1":{"name":"passport-photo-facebook","version":"0.0.1-beta1","description":"Passport-Photo strategies for retrieving facebook profile pictures.","main":"./index","repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-facebook.git"},"dependencies":{"request":"2.9.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"passport-photo-facebook@0.0.1-beta1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"fd387c0520d75d3476fdde44a8cc1ac4fb6a7567","tarball":"http://registry.npmjs.org/passport-photo-facebook/-/passport-photo-facebook-0.0.1-beta1.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.1-beta2":{"name":"passport-photo-facebook","version":"0.0.1-beta2","description":"Passport-Photo strategies for retrieving facebook profile pictures.","main":"./index","repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-facebook.git"},"dependencies":{"request":"2.9.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"passport-photo-facebook@0.0.1-beta2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"487cd4bd88adddc740170b182239efd5d6b3a2bf","tarball":"http://registry.npmjs.org/passport-photo-facebook/-/passport-photo-facebook-0.0.1-beta2.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"\r\n# Passport Photo Facebook\r\n\r\n## Installation\r\n\r\n npm install passport-photo-facebook\r\n\r\n## Usage\r\n\r\n```javascript\r\nvar photo = require(\"passport-photo\");\r\nvar fb = require(\"passport-photo-facebook\");\r\n\r\nphoto.use(fb.id());\r\nphoto.use(fb.token());\r\nphoto.use(fb.search({access_token:\"Any Valid Access Token\"}));\r\n\r\nphoto({facebookid:445461, access_token:\"User's Access Token\",email:\"user@example.com\"}, function(err, avatarURL){\r\n if(!err) require('request')(avatarURL).pipe(require('fs').createWriteStream(\"./avatar.jpg\"));\r\n});\r\n```\r\n\r\n\r\n## API\r\n\r\n### id\r\n\r\nTake the following options to retrieve the avatar based on facebook user id.\r\n\r\n@param [opts] {object} optional options for the request \r\n@param [opts.fb] {string} the property of the user object containing the facebook id default: \"facebookid\" \r\n@param [opts.type] {string} the size of the image to return 'square', 'small', 'normal' or 'large' default: 'square' \r\n\r\n### token\r\n\r\nTake the following options to retrieve the avatar based on facebook user access token.\r\n\r\n@param [opts] {object} optional options for the request \r\n@param [opts.access_token] {string} the property of the user object containing the facebook access token default: \"access_token\" \r\n@param [opts.type] {string} the size of the image to return 'square', 'small', 'normal' or 'large' default: 'square' \r\n\r\n### search\r\n\r\nUsing any valid user access token, you can search for a user based on their e-mail address, and then get their profile picture from that.\r\n\r\nTakes the following options.\r\n\r\n@param opts {object} options for the request \r\n@param opts.access_token {string} an access token is required to perform search, any access token will do though \r\n@param [opts.email] {string} the property of the user object containing the email token default: \"email\" \r\n@param [opts.type] {string} the size of the image to return 'square', 'small', 'normal' or 'large' default: 'square' ","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:55:31.825Z","created":"2012-04-17T17:32:03.887Z","0.0.1-beta1":"2012-04-17T17:32:06.032Z","0.0.1-beta2":"2012-04-17T18:13:49.524Z"},"repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo-facebook.git"},"_id":"passport-photo-facebook","_rev":"1-1ec202f5f70a564866b5705faf0d5fbc"} ÿdocument-storeÿpassport-photo¡{"id":"passport-photo","rev":"1-0f4adb18d3e010d9897a2469c7024930","rev_tree":[{"pos":1,"ids":["0f4adb18d3e010d9897a2469c7024930",{"status":"available"},[]]}],"rev_map":{"1-0f4adb18d3e010d9897a2469c7024930":3942},"winningRev":"1-0f4adb18d3e010d9897a2469c7024930","deleted":false,"seq":3942}ÿby-sequenceÿ0000000000003942Â#{"name":"passport-photo","description":"Provide for avatars/profile photos what passport provides for authentication","dist-tags":{"latest":"0.0.1-beta1"},"versions":{"0.0.1-beta1":{"name":"passport-photo","version":"0.0.1-beta1","description":"Provide for avatars/profile photos what passport provides for authentication","main":"./index","repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo.git"},"dependencies":{"request":"2.9.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"passport-photo@0.0.1-beta1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"56d5b82445bf468f0ce10ae330ffe5434ae7bf20","tarball":"http://registry.npmjs.org/passport-photo/-/passport-photo-0.0.1-beta1.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"\r\n# Passport Photo\r\n\r\n## Install\r\n\r\n npm install passport-photo\r\n\r\n## Usage\r\n\r\n```javascript\r\nvar photo = require(\"passport-photo\");\r\nvar fb = require(\"passport-photo-facebook\");\r\nvar gravatar = require(\"passport-photo-gravatar\")\r\n\r\nphoto.use(gravatar());\r\nphoto.use(fb.id());\r\nphoto.use(fb.token());\r\nphoto.use(fb.search({access_token:\"Any Valid Access Token\"}));\r\n//Default methods are never cached and must not return 404.\r\nphoto.useDefault(gravatar({default:\"identicon\"}));\r\n\r\nphoto({facebookid:445461, access_token:\"User's Access Token\",email:\"user@example.com\"}, function(err, avatarURL){\r\n if(!err) require('request')(avatarURL).pipe(require('fs').createWriteStream(\"./avatar.jpg\"));\r\n});\r\n```\r\n\r\nPassport photo will try each strategy in turn until one of them returns a valid avatar url. It always checks to make sure urls don't return 404, so for example, the gravatar method doesn't need to handle 404's internally. This means that if you are returned a URL, it will provide a response code of 200 (after following any redirects).\r\n\r\n## Defining additional strategies\r\n\r\nA strategy just consists of a simple function which takes a user and a callback e.g.\r\n\r\n```javascript\r\nfunction default(user, callback){\r\n callback(\"http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm\");\r\n}\r\nphoto.use(default);\r\n```\r\n\r\n## Available Strategies\r\n\r\nThis is the list of currently implimented strategies.\r\n\r\n * [Facebook](https://github.com/Tuskan360/passport-photo-facebook) - Can retrieve using User ID, Access Token or e-mail\r\n * [Gravatar](https://github.com/Tuskan360/passport-photo-gravatar) - Can retrieve using e-mail, username support would be great\r\n\r\n## Other Pluggins\r\n\r\nSoon, you can expect caches and middleware for connect/express to be listed here.\r\n\r\n## API\r\n\r\n### use\r\n\r\nAdd another strategy to the list of strategies used in a standard flow.\r\n\r\n@param strategy {function} function(user, callback([url])) \r\n\r\n### useDefault\r\n\r\nProvide a default strategy, you can only provide one of these.\r\n\r\nThere are 2 things which are special about default strategies\r\n\r\n 1. The result of a default strategy is not cached, ever.\r\n 2. passport-photo doesn't check that the default strategy returns a valid url, it could result in a 404 error for example and we won't catch that.\r\n\r\nFor this reason, we would typically use defaults for things where we just return a siluette of the user, or perhaps an identicon.\r\n\r\n### useCache\r\n\r\nAs with defaults, you can only have one cache provider. We still check the results of a cache provider to ensure they are valid urls and don't 404.\r\n\r\nIf the user is not in the cache, simply callback with no arguments.\r\n\r\n@param cache {object} The cache service \r\n@param cache.get {function} function(user, callback([url])) The function to attempt to retrieve an item from the cache. \r\n@param cache.set {function} function(user, url, done()) Add an item to the cache. \r\n\r\n## Planned support in the future\r\n\r\n * Twitter\r\n * Linked In\r\n * Webfinger\r\n * Simple Web Discovery\r\n * Google+\r\n * MySpace","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:12.144Z","created":"2012-04-17T18:40:58.321Z","0.0.1-beta1":"2012-04-17T18:41:01.175Z"},"repository":{"type":"git","url":"git://github.com/Tuskan360/passport-photo.git"},"_id":"passport-photo","_rev":"1-0f4adb18d3e010d9897a2469c7024930"}'ÿdocument-storeÿparameter-descriptors¨{"id":"parameter-descriptors","rev":"1-ddbb2a29ce072dcf864ad33e080187f6","rev_tree":[{"pos":1,"ids":["ddbb2a29ce072dcf864ad33e080187f6",{"status":"available"},[]]}],"rev_map":{"1-ddbb2a29ce072dcf864ad33e080187f6":3941},"winningRev":"1-ddbb2a29ce072dcf864ad33e080187f6","deleted":false,"seq":3941}ÿby-sequenceÿ0000000000003941ÉE{"name":"parameter-descriptors","description":"Documentation generator for function parameters","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"parameter-descriptors","description":"Documentation generator for function parameters","version":"0.0.1","homepage":"https://github.com/Tuskan360/ParameterDescriptors","repository":{"type":"git","url":"git://github.com/Tuskan360/ParameterDescriptors.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"parameter-descriptors@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"9da3ba12f86aaf13770e268a386743e1fe3ffd3f","tarball":"http://registry.npmjs.org/parameter-descriptors/-/parameter-descriptors-0.0.1.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.2":{"name":"parameter-descriptors","description":"Documentation generator for function parameters","version":"0.0.2","homepage":"https://github.com/Tuskan360/ParameterDescriptors","repository":{"type":"git","url":"git://github.com/Tuskan360/ParameterDescriptors.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"parameter-descriptors@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"649ec00e232e5fc4eccda2735887543e9a87d0aa","tarball":"http://registry.npmjs.org/parameter-descriptors/-/parameter-descriptors-0.0.2.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.3":{"name":"parameter-descriptors","description":"Documentation generator for function parameters","version":"0.0.3","homepage":"https://github.com/Tuskan360/ParameterDescriptors","repository":{"type":"git","url":"git://github.com/Tuskan360/ParameterDescriptors.git"},"main":"./index","devDependencies":{"express":"2.x.x","ejs":"0.7.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"parameter-descriptors@0.0.3","scripts":{"start":"node server.js"},"dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d9722320ffef8f6ccac60ad0d29841c91d639ca8","tarball":"http://registry.npmjs.org/parameter-descriptors/-/parameter-descriptors-0.0.3.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.4":{"name":"parameter-descriptors","description":"Documentation generator for function parameters","version":"0.0.4","homepage":"https://github.com/Tuskan360/ParameterDescriptors","repository":{"type":"git","url":"git://github.com/Tuskan360/ParameterDescriptors.git"},"main":"./index","devDependencies":{"express":"2.x.x","ejs":"0.7.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"parameter-descriptors@0.0.4","scripts":{"start":"node server.js"},"dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"f3cfbca9900988541ee5d0059925a713a4b54c82","tarball":"http://registry.npmjs.org/parameter-descriptors/-/parameter-descriptors-0.0.4.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"This module produces an html definition list for parameters from a json array.\r\n\r\nThe JSON array should be of the following form:\r\n\r\n```javascript\r\n[[\"Arg0\",\"type\",\"Description of Arg0\"],\r\n [\"[Arg1]\",\"type\",\"Description of Arg1\", \"default\"]]\r\n```\r\n\r\nNot that the order of the items is important. They must be in the order:\r\nname, type, description, default. You don't have to provide all these arguments,\r\nbut you must not miss one of them out, if you wish to omit one of the values, you\r\ncan include the empty string for everything except name.\r\n\r\ne.g.\r\n\r\n```javascript\r\n[[\"Arg0\", \"\", \"We don't know what type this is\"],\r\n [\"Arg2\", \"descriptionless\", \"\", \"0\"]];\r\n```\r\n\r\n# Public Methods\r\n\r\n## parse(InputArray)\r\n\r\nParse the input array to produce a new tree which is expanded:\r\n\r\nWould turn:\r\n\r\n```javascript\r\n[[\"Arg0\",\"object\"],\r\n [\"Arg1\",\"object\",\"A description of arg1\"],\r\n [\"callback(err,resA,resB)\",\"function\",\"The callback\",\r\n [\"err\",\"exception\",\"An error if thrown\"],\r\n [[\"resA\",\"number\",\"A number at random\"],\r\n [\"resB\",\"boolean\",\"true or false\"]]\r\n ]]\r\n```\r\n\r\nInto:\r\n\r\n```javascript\r\n[{name:\"Arg0\",type:\"object\",desc:\" \",defaultVal:\" \", children:[]},\r\n {name:\"Arg1\",type:\"object\",desc:\"A description of arg1\",defaultVal:\" \", children:[]},\r\n {name:\"callback(err,resA,resB)\",type:\"function\",desc:\"The callback\",defaultVal:\" \", children:[\r\n {\"children\":[],\"name\":\"err\",\"type\":\"exception\",\"desc\":\"An error if thrown\",\"defaultVal\":\" \"},\r\n {\"children\":[],\"name\":\"resA\",\"type\":\"number\",\"desc\":\"A number at random\",\"defaultVal\":\" \"},\r\n {\"children\":[],\"name\":\"resB\",\"type\":\"boolean\",\"desc\":\"true or false\",\"defaultVal\":\" \"}],\r\n }]\r\n```\r\n\r\nThis nesting can be continued indefinitely.\r\n\r\n## render(ParsedArray)\r\n\r\nRender the output of the parse function as a string. Continuing the previous example would give:\r\n\r\n```html\r\n
\r\n
Arg0
\r\n
object
\r\n
 
\r\n
default:  
\r\n
Arg1
\r\n
object
\r\n
A description of arg1
\r\n
default:  
\r\n
callback(err,resA,resB)
\r\n
function
\r\n
The callback
\r\n
default:  
\r\n
\r\n
\r\n
err
\r\n
exception
\r\n
An error if thrown
\r\n
default:  
\r\n
resA
\r\n
number
\r\n
A number at random
\r\n
default:  
\r\n
resB
\r\n
boolean
\r\n
true or false
\r\n
default:  
\r\n
\r\n
\r\n
\r\n```\r\n\r\nThis prints out remarcably nicely using the default-styles.css style sheet.\r\n\r\nIt is also OK in GitHub. If you're looking at the page of this, you'll see it printed nicely,\r\nIf you're reading the markdown file GitHub, it should at least be readable.\r\n\r\n## jsonParseAndRender(text)\r\n\r\nDoes the whole process from a JSON string which it parses, then renders and returns the resulting html.\r\n\r\n## Default Classes\r\n\r\nBy default, the following classes are used, but they can be easily overrided.\r\n\r\n```javascript\r\nexports.paramListClass = \"paro͹ùam-list\";\r\nexports.paramSubListClass = \"param-sub-list\";\r\nexports.paramNameClass = \"param-name\";\r\nexports.paramTypeClass = \"param-type\";\r\nexports.paramDescClass = \"param-desc\";\r\nexports.paramDefaultClass = \"param-default-value\";\r\n```\r\n\r\nFor any type which contains only letters ([a-zA-Z]*), the type is also given the class\r\n\r\n exports.paramTypeClass + \"-\" + type.toLowerCase()\r\n \r\nTypically something like \"param-type-array\".\r\n\r\n## Colours for types\r\n\r\nThe css file has default colourings for the following types:\r\n\r\n - object\r\n - array\r\n - number\r\n - int\r\n - integer\r\n - string\r\n - function\r\n - boolean\r\n - regexp","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:09.545Z","created":"2012-04-09T23:47:51.771Z","0.0.1":"2012-04-09T23:47:54.057Z","0.0.2":"2012-04-10T00:57:40.468Z","0.0.3":"2012-04-10T21:46:30.506Z","0.0.4":"2012-04-10T22:10:26.878Z"},"repository":{"type":"git","url":"git://github.com/Tuskan360/ParameterDescriptors.git"},"_id":"parameter-descriptors","_rev":"1-ddbb2a29ce072dcf864ad33e080187f6"}ÿdocument-storeÿpackagemeœ{"id":"packageme","rev":"1-9a0bdb9af2cb0e47f5e41294bb28e1d7","rev_tree":[{"pos":1,"ids":["9a0bdb9af2cb0e47f5e41294bb28e1d7",{"status":"available"},[]]}],"rev_map":{"1-9a0bdb9af2cb0e47f5e41294bb28e1d7":3940},"winningRev":"1-9a0bdb9af2cb0e47f5e41294bb28e1d7","deleted":false,"seq":3940}ÿby-sequenceÿ0000000000003940ë‡{"name":"packageme","dist-tags":{"latest":"0.0.15"},"versions":{"0.0.0":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.0","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.coffee","bin":{"packageme":"./bin/packageme"},"engines":{"node":"0.6.6"},"dependencies":{"coffee-script":"1.2.0","underscore":"1.3.1","glob":"3.0.1"},"devDependencies":{"express":"2.5.4"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"8cedcbbf33f0a28d0f42a14a7db56358bf3f62ca","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.0.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}],"directories":{}},"0.0.1":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.1","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.coffee","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0 < 0.7.0"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"80d22b51b6a02a731612edb49691349016e0c440","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.1.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.2","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.coffee","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0 < 0.7.0"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"cd757c40df6db8193bff23e03dbc5a245b924d62","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.2.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}],"directories":{}},"0.0.3":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.3","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"9b6ce99fe062f5aaba5d65b2b9b176bb3ed62d89","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.3.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.4":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.4","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"b70f2045a9f82d8d44e3ee5d92e949c4bd04ff81","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.4.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.5":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.5","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"6e46f6bdb518eaee2762818f2ce8068bc25de91d","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.5.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.6":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.6","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e6602d2c56f0a9f8f9a1d18c64ec5e8c87387784","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.6.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.7":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.7","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"ed0f76a9bb430d48be098daeffdaa685ee4fbc74","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.7.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.8":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.8","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"7247064f607cc31250d72114e438f66838cc5cae","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.8.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.9":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.9","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1"},"devDependencies":{"express":"2.5.x"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.9","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c34b9140153aab41a0fe2d4484e7cb13c14ffd3a","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.9.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.10":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.10","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7"},"devDependencies":{"express":"2.5.x","jasmine-node":"latest","shelljs":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.10","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"35b06dc4b87d68210481f2734d5f08f806f391f0","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.10.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.11":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.11","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7"},"devDependencies":{"express":"2.5.x","jade":"latest","jasmine-node":"latest","shelljs":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.11","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f44261683462281f0da9bfd4401adf7e778186dc","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.11.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.12":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.12","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7"},"devDependencies":{"express":"2.5.x","jade":"latest","jasmine-node":"latest","shelljs":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.12","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"9fe682e26ecc433014b87a92bf990c1a68fbccce","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.12.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.13":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.13","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7"},"devDependencies":{"express":"2.5.x","jade":"latest","jasmine-node":"latest","shelljs":"latest","node-mocks-http":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.13","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e19b7f8888e25080895a0283bbbd5bec42b94a82","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.13.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.14":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.14","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7","jade":"0.26.3"},"devDependencies":{"express":"2.5.x","jade":"latest","jasmine-node":"latest","shelljs":"latest","node-mocks-http":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.14","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b825d605a03994fa30ec074fb822b2f02d248fdb","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.14.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]},"0.0.15":{"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"name":"packageme","version":"0.0.15","repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"main":"./index.js","bin":{"packageme":"./bin/packageme"},"engines":{"node":">= 0.6.0"},"directories":{"lib":"./lib","examples":"./examples","bin":"./bin"},"dependencies":{"coffee-script":"1.2.x","underscore":"1.3.x","glob":"3.0.1","snockets":"1.3.7","jade":"0.26.3","uglify-js":"1.3.2"},"devDependencies":{"express":"2.5.x","jade":"latest","jasmine-node":"latest","shelljs":"latest","node-mocks-http":"latest"},"_npmUser":{"name":"outbounder","email":"obiwonn@gmail.com"},"_id":"packageme@0.0.15","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"866139fbeee8c5f6f34d5d1ec8bd537376dcbadd","tarball":"http://registry.npmjs.org/packageme/-/packageme-0.0.15.tgz"},"maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}]}},"readme":"# Package.Me #\n\n * Command-line tool \n * module \n * express-like middleware \n\nfor packaging of javascript, coffeescript & other^script code within a folder structure to\n\n * memory at runtime for development\n * file for production\n\nInspired by nibjs, following CommonJS, packages can be distributed via npm.\n\n## usage as command-line tool ##\n\nfollwing will take sourceFolder/package.json and combine all supported scripts to destinationFile\n\n packageme sourceFolder destinationFile\n\n## usage as nodejs module ##\n\n var package = require(\"packageme\");\n \n // will write sourceFolder to destinationFile, invoking resultHandler on end\n package(sourceFolder).toFile(destinationFile, resultHandler); \n \n // will write sourceFolder to string, invoking resultHandler(string) on end\n package(sourceFolder).toString(resultHandler);\n \n // will pipe the sourceFolder to string, will invoke stream.end() once finished.\n package(sourceFolder).pipe(stream);\n\n## usage as express middleware ##\n\n // will return sourceFolder packaged at URI /packages/packageName based on sourceFolder/package.json\n // toURI respects the NODE_ENV flag, and will optimize package process in production mode to happen only once.\n app.configure(function(){\n app.use(package(sourceFolder).toURI(\"/packages/packageName\"));\n app.use(app.router);\n });\n\n## in browser usage ##\n\n // will return module instance of packageName's main module.\n var library = packageme.require(\"packageName\");\n \n // will return module instance of moduleA within package 'packageName'\n var module = packageme.require(\"packageName/libs/moduleA\");\n \n // require statements act as they should even within modules\n // requires respect the actual sever-side structure of the code, nevertheless they are emulated within the browser.\n var module = require(\"./innerModule\");\n var module2 = require(\"../outerModule\");\n var module3 = require(\"packageName\");\n \n // innerModule.js\n exports.myFunction = function() {}\n \n // outerModule.js\n module.exports = function() {}\n \n // package/index.js\n module.exports = {}","maintainers":[{"name":"outbounder","email":"obiwonn@gmail.com"}],"time":{"modified":"2012-07-17T14:27:44.618Z","created":"2012-02-05T15:37:13.288Z","0.0.0":"2012-02-05T15:37:15.272Z","0.0.1":"2012-02-14T20:46:57.954Z","0.0.2":"2012-03-08T14:36:01.140Z","0.0.3":"2012-05-04T14:09:52.403Z","0.0.4":"2012-05-15T20:42:54.414Z","0.0.5":"2012-05-16T19:26:29.844Z","0.0.6":"2012-05-18T13:53:55.409Z","0.0.7":"2012-05-18T17:39:13.353Z","0.0.8":"2012-05-18T18:17:20.660Z","0.0.9":"2012-05-29T23:09:47.090Z","0.0.10":"2012-06-11T14:49:22.526Z","0.0.11":"2012-06-11T15:05:05.405Z","0.0.12":"2012-06-16T10:06:46.208Z","0.0.13":"2012-06-17T15:45:50.435Z","0.0.14":"2012-07-17T11:16:26.338Z","0.0.15":"2012-07-17T14:27:44.618Z"},"author":{"name":"Boris Filipov","email":"obiwonn@gmail.com"},"repository":{"type":"git","url":"git://github.com/camplight/packageme.git"},"_id":"packageme","_rev":"1-9a0bdb9af2cb0e47f5e41294bb28e1d7"}ÿdocument-storeÿopfcli™{"id":"opfcli","rev":"1-e2a834c68b91d97c926b6fc45d3ff77a","rev_tree":[{"pos":1,"ids":["e2a834c68b91d97c926b6fc45d3ff77a",{"status":"available"},[]]}],"rev_map":{"1-e2a834c68b91d97c926b6fc45d3ff77a":3939},"winningRev":"1-e2a834c68b91d97c926b6fc45d3ff77a","deleted":false,"seq":3939}ÿby-sequenceÿ0000000000003939Ì‘{"name":"opfcli","description":"OPF Framework CLI","dist-tags":{"latest":"0.0.15"},"versions":{"0.0.1":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.1","repository":{"type":"git","url":"git://github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opf":"./bin/opf"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"2.5.8"},"_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"},"_id":"opfcli@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"97a2b765ab4a6c51c7b73f588ccc5baada4fb2bb","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.1.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.2":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.2","repository":{"type":"git","url":"git://github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"2.5.8"},"_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"},"_id":"opfcli@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"0b8eac861cc73afa1f11f66d19949cd136195719","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.2.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.3":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.3","repository":{"type":"git","url":"git://github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"},"_id":"opfcli@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"92679a09fc5c0dad3989bdd951a767083b67f482","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.3.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.4":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.4","repository":{"type":"git","url":"git://github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"},"_id":"opfcli@0.0.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"b934800deae344a9ad92db6d5ef51514111cf0db","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.4.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.5":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.5","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.5","dist":{"shasum":"8b6e4cd294d494bcf47976f7441afb412eeb65b3","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.5.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.6":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.6","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page “|¨ ùApps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.6","dist":{"shasum":"9ef230550cf708d6626c28476933322c16622c2e","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.6.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.7":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.7","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.7","dist":{"shasum":"f480ec83e17629183c2e78b5aa7e87db6f1346ad","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.7.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.8":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.8","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.8","dist":{"shasum":"6a6b1df50125689db72a412ec2d83fbc11ebb4e5","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.8.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.9":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.9","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.9","dist":{"shasum":"5856e7130e8769a32d694cfc86b0e73727da5dcc","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.9.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.10":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.10","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.10","dist":{"shasum":"e8779de80efde1eb4032858a7db3eff16a44a943","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.10.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.11":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.11","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.11","dist":{"shasum":"04a9859110236a3044148579c2567a6155200b10","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.11.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.12":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.12","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.12","dist":{"shasum":"05b9a6511e50e8d5e609489495c63154415175b4","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.12.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.13":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.13","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.13","dist":{"shasum":"5527b2725743b49215f9be751143de2ff94e3d4f","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.13.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]},"0.0.15":{"name":"opfcli","description":"OPF Framework CLI","version":"0.0.15","repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"bin":{"opfcli":"./bin/opfcli"},"main":"./lib/opfserver.js","engines":{"node":"*"},"dependencies":{"eco":"1.1.0-rc-1","uglify-js":"~1.1.1","fast-detective":"~0.0.1","optimist":"~0.2.6","coffee-script":"1.3.1","watch":"~0.4.0","less":"~1.3.0","es5-shimify":"~0.0.1","json2ify":"~0.0.1","jqueryify":"~0.0.1","spine":"1.0.5","express":"~2.5.8"},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

You can check out the the Live Demo

I created opfcli NPM module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$sudo npm install opfcli -g

This will use NPM to install opfcli Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opfcli app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$sudo npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be started with foreman; This will run in http://localhost:9294

I built opfcli to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

opfcli will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files;

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the opfcli build to create static minified and compressed versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based opfcli on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

and OPF Frontend are beta and may still change on its route to 1.0

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


opfcli build

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV to Production in Heroku, so that opfcli asset server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run

If you have any problems run heroku logs to figure out what's going on




\n
","_id":"opfcli@0.0.15","dist":{"shasum":"fbd8a8bbb8387fcd057fd9b9451d25d7ddc896de","tarball":"http://registry.npmjs.org/opfcli/-/opfcli-0.0.15.tgz"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}]}},"readme":"

OPF is an Single Page App Generator with SpineJS and Twitter Bootstrap; It includes a development server that compiles .coffee and .less files each request automatically; NodeJS Server uses ExpressJS and has build-in Jade Support with a Routes Controller

\n\n
\n

SpineJS and Twitter Bootstrap work real well when used together to build state of the art mobile and web apps; They both have improved the quality of my apps and speed at which I create them;

This guide assumes that you have NodeJS installed in your system;

I created OPF.APP module for NODEJS so that we could get started in a few command lines

How to Get started

Type the following commands in the Terminal

$npm install opf.app -g

This will use NPM to install Opf.App Generator; An Scaffold Generator that will set you up to start developing in seconds.

$opf app productInventory

Run the App generator creating the Web App including NodeJS server, folder structure and Twitter Bootstrap Integration

$cd productInventory

$npm install .

\"cd\" into directory, then NPM will automatically download dependencies specified in package.json into ./node_modules folder

$node start.js

Start NodeJS Server, can also be used with foreman; This will run in http://localhost:5000

I built Opf.App to expedite the creating of projects using Spine and Twitter Bootstrap; I use it myself so that I can get started working or prototyping in seconds;

Opf.app will create the following file structure


OPF FrontEnd

App Folder

The Single Page App, it contains Models, Views and Controllers; Along with SpineJS Extensions for Ajax, Local Storage.

index.coffee is the Main Point of Entry and its initialized in index.html in /public

Bootstrap JS Javascript Components are included in app/lib/setup.coffee

CSS Folder

The Styles of the App in LESS, including Twitter Bootstrap

index.less is the main entry point referencing other .less files; ( index.styl must be present )

Public Folder

The public folder is for Assets like images and fonts;

index.html is the main entry point in this simple OPF Scenario

Server Folder

The Node JS Server for Single Page Apps, extendible including JADE and other components for Complex OPF Scenarios

When in Development, OPF dynamically renders /app files into application.js and /css files into applicacion.css

Before deploying to production run the file ./build.sh to create static versions of .js and .css


Working in Development

When working in development we want to dynamically render .less and .coffee so that we can see changes when we refresh the page;

I based OPF.app on Alex Maccaw Spine.app and HEM Server with two large modifications; Including Twitter Bootstrap(LESS) and making the NodeJS extendible using the Express Framework


Simple Version

$node start.js

This command will start a server and render all files dynamically, its perfectly fine to get started and do some prototypes

Production Version

foreman start

This command requires foreman and is based on Heroku Deployments; Its main advantage is using ENV Variables, so you don't have to hardcode API,Auth and Vulnerable KEYS in Javascript

OPF.APP and OPF Frontend are beta, and there is a BUG; When you make an error in a .less file the process stops and must be restarted manually

Deploying to Heroku

Everything in Spine and OPF is made so that development and deployment are painless;


$chmod 777 ./build.sh

This will allow you system to run the script, read the code in the file before running the script

$./build.sh

This will create application.js and application.css static files and place them on the /public folder

heroku config:add NODE_ENV=production

Make sure you have set the ENV['Production'] variable in Heroku, so that OPF-HEM server will not run and the deployed app uses the static files

git push heroku master

Deploy your master branch to heroku and watch it run on your favorite port

If you have any problems run heroku logs to figure out what's going on

\n
","maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartav.com"}],"time":{"modified":"2012-07-12T16:49:53.368Z","created":"2012-07-02T23:03:00.585Z","0.0.1":"2012-07-02T23:03:07.033Z","0.0.2":"2012-07-02T23:12:06.304Z","0.0.3":"2012-07-02T23:25:12.613Z","0.0.4":"2012-07-05T01:17:57.581Z","0.0.5":"2012-07-11T00:39:00.549Z","0.0.6":"2012-07-11T12:31:50.582Z","0.0.7":"2012-07-11T12:34:36.348Z","0.0.8":"2012-07-11T20:32:21.656Z","0.0.9":"2012-07-12T14:32:06.650Z","0.0.10":"2012-07-12T14:43:00.779Z","0.0.11":"2012-07-12T14:45:58.198Z","0.0.12":"2012-07-12T15:34:51.973Z","0.0.13":"2012-07-12T16:38:55.875Z","0.0.15":"2012-07-12T16:49:53.368Z"},"author":{"name":"Roberto Rodriguez","email":"roberto@rodriguezartavia.com"},"repository":{"type":"git","url":"git://git@github.com:rodriguezartav/opfcli.git"},"_id":"opfcli","_rev":"1-e2a834c68b91d97c926b6fc45d3ff77a"}ÿdocument-storeÿodesk˜{"id":"odesk","rev":"1-61d4a0e5a51b41af3dfe0fa11ef622fc","rev_tree":[{"pos":1,"ids":["61d4a0e5a51b41af3dfe0fa11ef622fc",{"status":"available"},[]]}],"rev_map":{"1-61d4a0e5a51b41af3dfe0fa11ef622fc":3938},"winningRev":"1-61d4a0e5a51b41af3dfe0fa11ef622fc","deleted":false,"seq":3938}ÿby-sequenceÿ0000000000003938—={"name":"odesk","description":"oDesk API wrapper","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.1":{"name":"odesk","version":"0.1.1","description":"oDesk API wrapper","keywords":["odesk","api","wrapper"],"homepage":"https://github.com/biesiad/odesk.js","author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"main":"odesk.js","repository":{"type":"git","url":"git://github.com/biesiad/odesk.js.git"},"dependencies":{"mhash":">=0.1.1"},"_npmUser":{"name":"biesiad","email":"gbiesiadecki@gmail.com"},"_id":"odesk@0.1.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.94","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"126dee0e92e29cb8d949b7d3954ec27af586b86d","tarball":"http://registry.npmjs.org/odesk/-/odesk-0.1.1.tgz"},"maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}]},"0.2.1":{"name":"odesk","version":"0.2.1","description":"oDesk API wrapper","keywords":["odesk","api","wrapper"],"homepage":"https://github.com/biesiad/odesk.js","author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"main":"odesk.js","repository":{"type":"git","url":"git://github.com/biesiad/odesk.js.git"},"dependencies":{"mhash":"0.1.x","oauth":"0.9.6"},"_npmUser":{"name":"biesiad","email":"gbiesiadecki@gmail.com"},"_id":"odesk@0.2.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"dec9b05893b29983684396cf0af6f44a59343c17","tarball":"http://registry.npmjs.org/odesk/-/odesk-0.2.1.tgz"},"readme":"oDesk.js\n========\n\nJavascript wrapper for oDesk API\n\nUsage\n-----\n\n\n### Installation\n\n- Node.js application:\n\n > npm install odesk\n\n### Data\nSee example file \n","maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}]},"0.2.2":{"name":"odesk","version":"0.2.2","description":"oDesk API wrapper","keywords":["odesk","api","wrapper"],"homepage":"https://github.com/biesiad/odesk.js","author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"main":"odesk.js","repository":{"type":"git","url":"git://github.com/biesiad/odesk.js.git"},"dependencies":{"mhash":"0.1.x","oauth":"0.9.6"},"_npmUser":{"name":"biesiad","email":"gbiesiadecki@gmail.com"},"_id":"odesk@0.2.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f33ff945c83051504e0d3ff53e7419a0a81deb6b","tarball":"http://registry.npmjs.org/odesk/-/odesk-0.2.2.tgz"},"readme":"oDesk.js\n========\n\nJavascript wrapper for oDesk API\n\nUsage\n-----\n\n\n### Installation\n\n- Node.js application:\n\n > npm install odesk\n\n### Data\nSee example file \n","maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}]},"0.2.3":{"name":"odesk","version":"0.2.3","description":"oDesk API wrapper","keywords":["odesk","api","wrapper"],"homepage":"https://github.com/biesiad/odesk.js","author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"main":"odesk.js","repository":{"type":"git","url":"git://github.com/biesiad/odesk.js.git"},"dependencies":{"mhash":"0.1.x","oauth":"0.9.6"},"_npmUser":{"name":"biesiad","email":"gbiesiadecki@gmail.com"},"_id":"odesk@0.2.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"363ceacfe8238d0e56de8f674f2ae90a29e4aca2","tarball":"http://registry.npmjs.org/odesk/-/odesk-0.2.3.tgz"},"readme":"oDesk.js\n========\n\nJavascript wrapper for oDesk API\n\n### Installation\n```sh\nnpm install odesk\n```\n\n### Using OAuth\n\nInit module\n```javascript\nodesk.OAuth.init(key, secret);\n```\n\nGet request token\n```javascript\nodesk.OAuth.getRequestToken(function (error, requestToken, requestTokenSecret, results) {\n console.log('error:', error);\n console.log('requestToken:', requestToken);\n console.log('requestTokenSecret:', requestTokenSecret);\n console.log('results:', results);\n});\n```\n\nGet authenticate url\n```javascript\n var url = odesk.OAuth.getAuthenticateUrl(requestToken));\n```\n\nGet access token\n```javascript\nodesk.OAuth.getAccessToken(requestToken, requestTokenSecret, verifier, function (error, accessToken, accessTokenSecret, results) {\n console.log('error:', error);\n console.log('accessToken:', accessToken);\n console.log('accessTokenSecret:', accessTokenSecret);\n console.log('results:', results);\n\n odesk.OAuth.accessToken = accessToken;\n odesk.OAuth.accessTokenSecret = accessTokenSecret;\n```\n\nODesk API call\n```javascript\nvar params = {\n tq: 'SELECT SUM(hours)',\n tqx: 'out:json'\n};\n\nvar userUID = 'my_usr_uid';\nodesk.get(\"https://www.odesk.com/gds/timereports/v1/providers/\" + userUID, params, function (error, data) {\n console.log('error:', error);\n console.log('data:', data);\n });\n```\n\n_For complete workflow see the example file._\n","maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}]},"0.2.4":{"name":"odesk","version":"0.2.4","description":"oDesk API wrapper","keywords":["odesk","api","wrapper"],"homepage":"https://github.com/biesiad/odesk.js","author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"main":"odesk.js","repository":{"type":"git","url":"http://github.com/biesiad/odesk.js.git"},"dependencies":{"mhash":"0.1.x","oauth":"0.9.6"},"scripts":{"test":"jasmine-node spec/"},"devDependencies":{"jasmine-node":"1.3.x"},"readme":"oDesk.js\n========\n\nJavascript wrapper for oDesk API\n\n### Installation\n```sh\nnpm install odesk\n```\n\n### Using OAuth\n\nInit module\n```javascript\nodesk.OAuth.init(key, secret);\n```\n\nGet request token\n```javascript\nodesk.OAuth.getRequestToken(function (error, requestToken, requestTokenSecret, results) {\n console.log('error:', error);\n console.log('requestToken:', requestToken);\n console.log('requestTokenSecret:', requestTokenSecret);\n console.log('results:', results);\n});\n```\n\nGet authenticate url\n```javascript\n var url = odesk.OAuth.getAuthenticateUrl(requestToken));\n```\n\nGet access token\n```javascript\nodesk.OAuth.getAccessToken(requestToken, requestTokenSecret, verifier, function (error, accessToken, accessTokenSecret, results) {\n console.log('error:', error);\n console.log('accessToken:', accessToken);\n console.log('accessTokenSecret:', accessTokenSecret);\n console.log('results:', results);\n\n odesk.OAuth.accessToken = accessToken;\n odesk.OAuth.accessTokenSecret = accessTokenSecret;\n```\n\nODesk API call\n```javascript\nvar params = {\n tq: 'SELECT SUM(hours)',\n tqx: 'out:json'\n};\n\nvar userUID = 'my_usr_uid';\nodesk.get(\"https://www.odesk.com/gds/timereports/v1/providers/\" + userUID, params, function (error, data) {\n console.log('error:', error);\n console.log('data:', data);\n });\n```\n\n_For complete workflow see the example file._\n","_id":"odesk@0.2.4","dist":{"shasum":"c72f552da6bb09dfc565f741f323708fec9051f6","tarball":"http://registry.npmjs.org/odesk/-/odesk-0.2.4.tgz"},"maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}]}},"maintainers":[{"name":"biesiad","email":"gbiesiadecki@gmail.com"}],"time":{"modified":"2012-08-08T19:43:46.499Z","created":"2011-10-30T16:18:36.080Z","0.1.1":"2011-10-30T16:18:37.626Z","0.2.1":"2012-04-02T12:30:23.866Z","0.2.2":"2012-07-14T09:02:56.349Z","0.2.3":"2012-07-14T09:13:05.151Z","0.2.4":"2012-08-08T19:43:46.498Z"},"author":{"name":"Grzegorz Biesiadecki","email":"gbiesiadecki@gmail.com"},"repository":{"type":"git","url":"http://github.com/biesiad/odesk.js.git"},"_id":"odesk","_rev":"1-61d4a0e5a51b41af3dfe0fa11ef622fc"}ÿdocument-storeÿobj_diff›{"id":"obj_diff","rev":"1-9cee62b62549bba62c17ca337c9a20f8","rev_tree":[{"pos":1,"ids":["9cee62b62549bba62c17ca337c9a20f8",{"status":"available"},[]]}],"rev_map":{"1-9cee62b62549bba62c17ca337c9a20f8":3937},"winningRev":"1-9cee62b62549bba62c17ca337c9a20f8","deleted":false,"seq":3937}ÿby-sequenceÿ0000000000003937»o{"name":"obj_diff","description":"Identify differences between objects; assert permitted and mandatory differences","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"obj_diff","version":"0.1.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"description":"Find all differences between Javascript objects","tags":["couchdb"],"homepage":"http://github.com/iriscouch/obj_diff","repository":{"type":"git","url":"git://github.com/iriscouch/obj_diff.git"},"engines":["node"],"devDependencies":{},"main":"./api","dependencies":{},"_id":"obj_diff@0.1.0","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"13a1e95ec7a4fbace3c3545de086ecb3f4f62132","tarball":"http://registry.npmjs.org/obj_diff/-/obj_diff-0.1.0.tgz"},"scripts":{}},"0.2.0":{"name":"obj_diff","version":"0.2.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"description":"Find all differences between Javascript objects","tags":["couchdb"],"homepage":"http://github.com/iriscouch/obj_diff","repository":{"type":"git","url":"git://github.com/iriscouch/obj_diff.git"},"engines":["node"],"devDependencies":{},"main":"./api","_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"_id":"obj_diff@0.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.90","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"6a80cd45465194a347f4f0ec8a36b6950b6049ba","tarball":"http://registry.npmjs.org/obj_diff/-/obj_diff-0.2.0.tgz"},"maintainers":[{"name":"jhs","email":"jhs@couchone.com"}]},"0.3.0":{"name":"obj_diff","description":"Identify differences between objects; assert permitted and mandatory differences","version":"0.3.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com","url":"http://www.iriscouch.com/"},"tags":["couchdb","security","diff","couchapp"],"homepage":"http://github.com/iriscouch/obj_diff","repository":{"type":"git","url":"git://github.com/iriscouch/obj_diff.git"},"engines":["node"],"dependencies":{"defaultable":"0.7.2","burrito":"0.2.11"},"devDependencies":{"tap":"0.0.13","couchapp":"0.8.1"},"main":"./api","_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"_id":"obj_diff@0.3.0","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"fcd9986b1faa6e6505cbc71ce4396a95a0d70d6d","tarball":"http://registry.npmjs.org/obj_diff/-/obj_diff-0.3.0.tgz"},"readme":"# Identify and assert differences betwen objects\n\nobj_diff is for examining changes between Javascript and JSON objects. Use it to **see how data has changed** and to **decide whether that change is good or bad**. Thus obj_diff is useful for security and validation.\n\nobj_diff comes from an internal [Iris Couch][iº ÷ùc] application used in production for two years. It works in the browser, in CouchDB, and as an NPM module.\n\n npm install obj_diff\n\n## Is it any good?\n\nYes.\n\n## Usage\n\nDiff two objects. Then use helper functions to see what's changed.\n\n```javascript\nvar obj_diff = require(\"obj_diff\");\n\nvar original = { hello:\"world\" , note: {\"nice\":\"shoes\"} };\nvar modified = { hello:\"underworld\", note: {\"nice\":\"hat\" } };\n\nvar diff = obj_diff(original, modified);\n\n// Mandatory changes\nif(diff.atleast(\"hello\", \"world\", \"underworld\")) // true\n console.log(\"That's kind of dark\");\n\n\n// Approved changes\nif(diff.atmost(\"hello\", \"world\", \"underworld\")) // false (.hello.note.nice also changed)\n console.log(\"That's kind of dark\");\n\n\nif(diff.atmost(\"hello\" , \"world\", /world/, // true\n \"hello.note.nice\", \"shoes\", String))\n console.log(\"Hooray!\");\n```\n\n## Design\n\nTo work well with databases, obj_diff has these design goals:\n\n* **Declarative**. Data validation is crucial. It must be correct. Validation rules must be easy to express clearly and easy to reason about.\n* **JSON compatible**. Diffs and validation rules (containing regexes, functions, etc.) can be encoded and decoded as JSON, without losing functionality. You can store changes and validation policies as plain JSON.\n\n## Mandatory vs. Approved changes\n\nThere is a symbiotic relationship between *atleast* and *atmost*:\n\n* atleast() returns `true` only if **every rule matches a change**.\n* atmost() returns `true` only if **every change matches a rule**.\n\n```javascript\n// Give a key name, an expected old value, and expected new value.\ndiff.atleast(\"some_key\", \"old_value\", \"new_value\");\n\n// Specify multiple rules simultaneously.\ndiff.atleast(\n\n // Nested objects: just type them out in the string.\n \"options.production.log.level\", \"debug\", \"info\",\n\n // Regular expressions, e.g. first letter must change from \"J\" to \"S\".\n \"name\", /^J/, /^S/,\n\n // ANY matches any value.\n \"state\", obj_diff.ANY, \"run\", // State must become \"run\".\n \"owner\", null, obj_diff.ANY, // Owner must become non-null.\n\n // GONE implies a missing value.\n \"error\", \"locked\", obj_diff.GONE, // Error must be deleted.\n \"child\", obj_diff.GONE, \"Bob\", // Child must be created.\n\n // FALSY matches false, null, undefined, the empty string, 0, NaN, and a missing value.\n \"is_new\", obj_diff.ANY, obj_diff.FALSY,\n\n // \"TRUTHY\" matches anything not falsy.\n \"changed\", obj_diff.GONE, obj_diff.TRUTHY,\n\n // Javascript types\n \"ratio\" , undefined , Number , // Numeric ratio, note undefined is not GONE\n \"age\" , obj_diff.ANY , Number , // Age must change to something numeric.\n \"name\" , obj_diff.GONE, String , // Must create a name string.\n \"deleted\", obj_diff.ANY , Boolean, // Deleted flag must be true/false.\n \"config\" , obj_diff.GONE, Object , // Must create a config object.\n \"backups\", null , Array , // Null backups must become an array.\n\n // TIMESTAMP matches ISO-8601 strings (what JSON.stringify makes from a Date)\n \"created_at\", GONE, TIMESTAMP, // e.g. \"2011-11-10T04:21:45.046Z\"\n\n // GREATER and LESSER compare a value to its counterpart.\n \"age\", Number, GREATER, // Age must increase in number\n \"age\", LESSER, Number, // (same as the previous test)\n\n \"weight\", GREATER, LESSER , // Mandatory weight loss\n \"age\" , 21 , GREATER, // Must increase from 21\n\n \"WRONG\", GREATER, GREATER, // This always fails.\n \"WRONG\", LESSER , LESSER , // This always fails.\n\n // Use functions (predicates) for arbitrary data validation\n \"weapon\", obj_diff.ANY, good_weapon\n);\n\ndiff.atmost(\n // Changing my weapon is fine.\n \"weapon\", obj_diff.ANY, good_weapon,\n\n // Changing my first name to something readable is fine.\n \"name.first\", obj_diff.ANY, /^\\w+$/,\n\n // People named \"Smith\" may change their last name.\n \"name.last\", \"Smith\", /^\\w+$/,\n\n // Middle must be just an initial.\n \"name.middle\", obj_diff.ANY, /^\\w$/\n);\n\n// Or as an assertion, with an extra \"reason\" argument.\ntry {\n diff.assert_atleast(\n \"some_key\" , \"must become new new\" , \"old_value\" , \"new_value\",\n \"options.log.level\", \"must upgrade to info\", \"debug\" , \"info\",\n \"name\" , \"must start with 'S'\" , obj_diff.ANY, /^S/,\n \"weapon\" , \"cannot be sharp\" , obj_diff.ANY, good_weapon\n );\n} catch (er) {\n if(!er.diff)\n throw er; // Unknown error, not a policy failure, e.g. bad parameters, or a predicate error.\n\n console.error(\"Hey! \" + er.message); // e.g. Hey! options.log.level must upgrade to info\n}\n\ntry {\n diff.assert_atmost(\n \"weapon\" , \"cannot be sharp\" , obj_diff.ANY, good_weapon,\n \"name.first\" , \"must be readable\" , obj_diff.ANY, /^\\w+$/,\n \"name.last\" , \"may no longer be Smith\", \"Smith\" , /^\\w+$/,\n \"name.middle\", \"must be one letter\" , obj_diff.ANY, /^\\w$/\n );\n} catch (er) {\n if(!er.diff)\n throw er; // Unknown error\n\n // .reason, .key, .from, .to are available.\n console.error(er.key + \" is wrong because it \" + er.reason); // detailed\n}\n\nfunction good_weapon(weapon) {\n return weapon != process.env.sharp_weapon;\n}\n```\n\nA useful trick with *atmost()* is to assert no changes.\n\n```javascript\ntry {\n diff2.assert_atmost(); // No rules given, i.e. \"zero changes, at most\"\n diff2.assert_nochange(); // Same as atmost() but more readable.\n} catch (er) {\n console.error(\"Sorry, no changes allowed\");\n}\n```\n\n\n## CouchDB validation\n\nobj_diff excels (and was designed for) [Apache CouchDB][couchdb] `validate_doc_update()` functions. Combine *atleast()* and *atmost()* to make a sieve and sift out good and bad changes. obj_diff cannot replace all validation code, but it augments it well.\n\n* *atleast()* confirms **required** changes.\n* *atmost()* confirms **allowed** changes.\n\nFirst of all, CouchDB changes document metadata under the hood, and you don't want that triggering false alarms. So the first thing is to set obj_diff's [defaults][def] for CouchDB mode, which modifies *atmost()* to allow normal document changes:\n\n1. `null` is treated as an empty object, `{}`. This always works: `doc_diff(oldDoc, newDoc)`\n2. *atmost()* allows normal changes:\n * `_id` for document creation\n * `_rev` may change appropriately.\n * `_revisions.ids` and `_revisions.start` may change appropriately.\n3. *assert_atleast()* and *assert_atmost()* throw `{\"forbidden\": }` objects that Couch likes.\n\nThus, this is your typical `validate_doc_update` function:\n\n```javascript\nfunction(newDoc, oldDoc, userCtx, secObj) {\n var doc_diff = require(\"obj_diff\").defaults({\"couchdb\":true}) // Relaxed diff.\n , ANY = doc_diff.ANY\n , GONE = doc_diff.GONE\n ;\n\n var diff = doc_diff(oldDoc, newDoc);\n // Start validating!\n}\n```\n\n### Valid data vs. valid changes\n\nobj_diff validates *changes*, not *data*. What happens if you GET a document and PUT it back unmodified? There will be zero changes in the diff. Any *atleast()* checks will necessarily fail. Therefore, the best practice is to check the data and then apply certain policies based on that.\n\nOf course, sometimes you *want* changes in every update, such as timestamp validation:\n\n```javascript\nif(!oldDoc)\n // Creation, require the timestamp fields.\n diff.assert_atleast(\n 'created_at', 'timestamp required', GONE, TIMESTAMP,\n 'updated_at', 'timestamp required', GONE, newDoc.created_at // Must match created_at\n );\nelse\n // Update, exact() will reject changes to .created_at (and all other fields)\n diff.assert_exactly(\n 'updated_at', 'Must be a timestamp' , TIMESTAMP, TIMESTAMP,\n 'updated_at', 'Must be later in time', TIMESTAMP, GREATER\n );\n```\n\n### Example: User Documents\n\nTODO\n\n## JSON Support\n\nobj_diff supports regular expressions and function callbacks in its rules. Yet it can be nice to store them as JSON, and to load them later. For example, you could store a few rules in a CouchDB `_security` object, and do database-specific data validation with an identical `validate_doc_update()` function.\n\nBoth Diff and Rule obejcts behave the same after a JSON round-trip. They have a `.toJSON` function to handle things, so just `JSON.stringify()` them and store them in a file or database. Later, `JSON.parse()` them and pass the object to the constructors.\n\n```javascript\nvar obj_diff = require(\"obj_diff\");\n\nfunction good_guy(guy) { return guy.good || guy.awesome }\n\nvar diffs =\n [ obj_diff({some_key: \"old_value\"}, {some_key: \"new_value\"})\n , obj_diff({log: {level: \"Anything!\"}}, {log: {level: \"info\"}})\n , obj_diff({guy: {\"good\":true}}, {guy:\"Fawkes\"})\n ];\n\nvar rules =\n [ new obj_diff.Rule(\"some_key\", \"old_value\", \"new_value\")\n , new obj_diff.Rule(\"log.level\", obj_diff.ANY, /^(debug|info|error)$/)\n , new obj_diff.Rule(\"guy\", good_guy, obj_diff.ANY)\n ];\n\nconsole.log(\"Diffs: \" + JSON.stringify(diffs));\nconsole.log(\"Rules: \" + JSON.stringify(rules));\n```\n\nNote, functions are stored using their source code, so be careful about global or closed variables they depend on.\n\n## Development\n\nobj_diff uses [node-tap][tap] unit tests. Install it globally (`npm -g install node-tap`) and run `tap t`. Or for a more robust local install:\n\n $ npm install --dev\n tap@0.0.10 ./node_modules/tap\n └── tap-runner@0.0.7\n\n $ ./node_modules/.bin/tap t\n ok api.js ......................... 82/82\n ok diffs.js ....................... 60/60\n ok policy.js .................... 123/123\n ok rules.js ..................... 774/774\n total ......................... 1043/1043\n\n ok\n\nFinally, you can use the diff object yourself. Here's what it looks like:\n\n > obj_diff({x:\"hi\"}, {x:\"bye\"})\n { x: { from: 'hi', to: 'bye' } }\n\n > obj_diff({name:\"Joe\", word:\"hi\"},\n ... {name:\"Joe\", word:\"bye\"})\n { word: { from: 'hi', to: 'bye' } }\n\n > obj_diff({name:\"Joe\", contact: {email:\"doe@example.com\"}},\n ... {name:\"Joe\", contact: {email:\"doe@example.com\", cell:\"555-1212\"}})\n { contact: { cell: { from: ['gone'], to: '555-1212' } } }\n\n > obj_diff({name:\"Joe\", contact: {email:\"doe@example.com\", cell:null }},\n ... {name:\"Joe\", contact: {email:\"doe@example.com\", cell:\"555-1212\"}})\n { contact: { cell: { from: null, to: '555-1212' } } }\n\n## License\n\nobj_diff is licensed under the Apache License, version 2.0\n\n[def]: https://github.com/iriscouch/defaultable\n[ic]: http://www.iriscouch.com/\n[couchdb]: http://couchdb.apache.org/\n[tap]: https://github.com/isaacs/node-tap\n","maintainers":[{"name":"jhs","email":"jhs@couchone.com"}]}},"maintainers":[{"name":"jhs","email":"jhs@couchone.com"}],"time":{"modified":"2012-05-12T08:49:49.755Z","created":"2011-06-20T04:06:14.016Z","0.1.0":"2011-06-20T04:06:16.582Z","0.2.0":"2011-10-13T23:26:16.163Z","0.3.0":"2012-05-12T08:49:49.755Z"},"author":{"name":"Jason Smith","email":"jhs@iriscouch.com","url":"http://www.iriscouch.com/"},"repository":{"type":"git","url":"git://github.com/iriscouch/obj_diff.git"},"_id":"obj_diff","_rev":"1-9cee62b62549bba62c17ca337c9a20f8"}ÿdocument-storeÿnsnipt™{"id":"nsnipt","rev":"1-1e36b5a64ef4073d1d830c080839293b","rev_tree":[{"pos":1,"ids":["1e36b5a64ef4073d1d830c080839293b",{"status":"available"},[]]}],"rev_map":{"1-1e36b5a64ef4073d1d830c080839293b":3936},"winningRev":"1-1e36b5a64ef4073d1d830c080839293b","deleted":false,"seq":3936}ÿby-sequenceÿ0000000000003936ü{"name":"nsnipt","description":"Node CLI that interacts with Snipt.net","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"description":"Node CLI that interacts with Snipt.net","version":"0.1.0","dependencies":{"commander":"1.0.0","path":"0.4.9"},"engines":{"node":"*"},"preferGlobal":"true","main":"app.js","bin":{"nsnipt":"app.js"},"name":"nsnipt","author":{"name":"hereiznoy"},"homepage":"https://github.com/hereiznoy/nsnipt","repository":{"type":"git","url":"git://github.com/hereiznoy/nsnipt.git"},"_npmUser":{"name":"hereiznoy","email":"hereiznoy@gmail.com"},"_id":"nsnipt@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"b056ac21ca9e2261c252a61d0b427fbc9f25d399","tarball":"http://registry.npmjs.org/nsnipt/-/nsnipt-0.1.0.tgz"},"maintainers":[{"name":"hereiznoy","email":"hereiznoy@gmail.com"}]}},"readme":"# nsnipt\n\nAt its core, nsnipt is a Node CLI that interacts with [Snipt.net](https://snipt.net). Currently however it only supports one operation; saving your snipts (code snippets) as text files in a location of your choosing.\n\nI created nsnipt simply because I wanted a way to easily export my snipts for backup (and because I wanted to try writing a nodejs command-line app). As I or others find need I will definitely expand the functionality.\n\n## Command Line Options and Persistent Config\n\nTo use this client you'll need to provide two required pieces of information:\n\n1. Your Snipt _username_\n2. Your Snipt _API key_ \n\nThese can be found in your Snipt.net account information.\n\nYou can set all options in a couple different ways.\n\n### Setting Options via the Command Line\n\nAll options can be set via command line options; for example:\n\n> nsnipt backup -u hereiznoy -a 123456ABCDEFG -d /some/where\n\n### Setting Options via the Config File\n\nIf you want to store your options (which you most likely will) you can do so by putting a __config.json__ file in the _config_ directory of your nsnipt install. Your config file should look something like this:\n\n\t{\n\t\t\"username\": \"hereiznoy\",\n\t\t\"apiKey\": \"123456ABCDEFG\",\n\t\t\"backup\": {\n\t\t\t\"backupDir\": \"/some/where\"\n\t\t}\n\t}\n\nNotice the _backupDir_ option is contained inside the _backup_ JSON object; that is because it's an option specific to the backup command.\n\n### Default Options\n\nIf you do not set the required options via command line args or the config file, the client will not run.\n\nAny optional options can be left off (such as the __-d__ backup directory location option), in which case default values will be used (look at the _config/config.js_ source file if you want to know what the defaults are).\n\n## Installation\n\n> npm install -g nsnipt\n\n## Running\n\nAgain, currently the only operational command the client supports is _backup_.\n\n> nsnipt backup -d /path/to/backup/dir\n\nTo get help:\n\n> nsnipt -h","maintainers":[{"name":"hereiznoy","email":"hereiznoy@gmail.com"}],"time":{"modified":"2012-07-11T20:23:07.376Z","created":"2012-07-11T20:23:06.595Z","0.1.0":"2012-07-11T20:23:07.376Z"},"author":{"name":"hereiznoy"},"repository":{"type":"git","url":"git://github.com/hereiznoy/nsnipt.git"},"_id":"nsnipt","_rev":"1-1e36b5a64ef4073d1d830c080839293b"}ÿdocument-storeÿnrsa—{"id":"nrsa","rev":"1-0b3e99e697b6faf5355f941deab31a94","rev_tree":[{"pos":1,"ids":["0b3e99e697b6faf5355f941deab31a94",{"status":"available"},[]]}],"rev_map":{"1-0b3e99e697b6faf5355f941deab31a94":3935},"winningRev":"1-0b3e99e697b6faf5355f941deab31a94","deleted":false,"seq":3935}ÿby-sequenceÿ0000000000003935›{"name":"nrsa","description":"OpenSSL's RSA encrypt/decrypt routines","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.4":{"name":"nrsa","version":"0.0.4","description":"OpenSSL's RSA encrypt/decrypt routines","keywords":["openssl","crypto","rsa"],"homepage":"https://github.com/katyo/node-rsa#readme","author":{"name":"Chris Andrews, Eric Laberge, Kayo Phoenix","email":"chris@nodnol.org"},"files":["LICENCE","README.md","test/test.js","rsa.public","rsa.private","wscript","node_rsa.cc","node_rsa.h","rsa.js"],"main":"./rsa.js","repository":{"type":"git","url":"git://github.com/katyo/node-rsa.git"},"scripts":{"install":"node-waf configure build"},"engines":{"node":"0.4 || 0.5 || 0.6"},"_npmUser":{"name":"Katyo","email":"kayo@illumium.org"},"_id":"nrsa@0.0.4","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"37404eb9ca7c3383e73bd7316e57268f25d95c14","tarball":"http://registry.npmjs.org/nrsa/-/nrsa-0.0.4.tgz"},"readme":"","maintainers":[{"name":"Katyo","email":"kayo@illumium.org"}]},"0.0.5":{"name":"nrsa","version":"0.0.5","description":"OpenSSL's RSA encrypt/decrypt routines","keywords":["openssl","crypto","rsa"],"homepage":"https://github.com/katyo/node-rsa#readme","author":{"name":"Chris Andrews, Eric Laberge, Kayo Phoenix","email":"kayo@illumium.org"},"files":["LICENCE","README.md","test/test.js","test/getters.js","rsa.public","rsa.private","wscript","node_rsa.cc","node_rsa.h","rsa.js"],"main":"./rsa.js","repository":{"type":"git","url":"git://github.com/katyo/node-rsa.git"},"scripts":{"install":"node-waf configure build"},"engines":{"node":"0.4 || 0.5 || 0.6"},"_npmUser":{"name":"Katyo","email":"kayo@illumium.org"},"_id":"nrsa@0.0.5","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"ae29e804fa0fd335273e9895d78ef44033ddde5b","tarball":"http://registry.npmjs.org/nrsa/-/nrsa-0.0.5.tgz"},"readme":"","maintainers":[{"name":"Katyo","email":"kayo@illumium.org"}]}},"readme":"","maintainers":[{"name":"Katyo","email":"kayo@illumium.org"}],"time":{"modified":"2012-08-19T20:01:44.739Z","created":"2012-07-02T16:00:14.350Z","0.0.4":"2012-07-02T16:00:17.874Z","0.0.5":"2012-08-19T20:01:44.739Z"},"author":{"name":"Chris Andrews, Eric Laberge, Kayo Phoenix","email":"kayo@illumium.org"},"repository":{"type":"git","url":"git://github.com/katyo/node-rsa.git"},"_id":"nrsa","_rev":"1-0b3e99e697b6faf5355f941deab31a94"}ÿdocument-storeÿnpm2aurš{"id":"npm2aur","rev":"1-481d68d3e2a4ab1698b0bc6db736229c","rev_tree":[{"pos":1,"ids":["481d68d3e2a4ab1698b0bc6db736229c",{"status":"available"},[]]}],"rev_map":{"1-481d68d3e2a4ab1698b0bc6db736229c":3934},"winningRev":"1-481d68d3e2a4ab1698b0bc6db736229c","deleted":false,"seq":3934}ÿby-sequenceÿ0000000000003934±G{"name":"npm2aur","description":"Sync AUR with NPM packages","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"npm2aur","description":"Sync AUR with NPM packages","version":"0.1.0","repository":{"type":"git","url":"git@github.com/Filirom1/npm2aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"./lib/npm2aur.js","bin":{"npm2aur":"bin/npm2aur"},"engines":{"node":"~0.6.0"},"dependencies":{"coffee-script":"1.1.x","underscore":"1.2.x","npm":"1.0.x","npm2arch":"0.1.x","aur":"0.0.x","optimist":"0.2.x","colors":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"npm2aur@0.1.0","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"497318e73f4bc4809e7d8cc157d457c659ef3506","tarball":"http://registry.npmjs.org/npm2aur/-/npm2aur-0.1.0.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.1":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"npm2aur","description":"Sync AUR with NPM packages","version":"0.1.1","repository":{"type":"git","url":"git@github.com/Filirom1/npm2aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"./lib/npm2aur.js","bin":{"npm2aur":"bin/npm2aur"},"engines":{"node":"~0.6.0"},"dependencies":{"coffee-script":"1.1.x","underscore":"1.2.x","npm":"1.0.x","npm2arch":"0.1.x","aur":"0.0.x","optimist":"0.2.x","colors":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"npm2aur@0.1.1","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"2d6aae24be8da73c61e789ab991bca939595c802","tarball":"http://registry.npmjs.org/npm2aur/-/npm2aur-0.1.1.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.2":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"npm2aur","description":"Sync AUR with NPM packages","version":"0.1.2","repository":{"type":"git","url":"git@github.com/Filirom1/npm2aur.git"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"main":"./lib/npm2aur.js","bin":{"npm2aur":"bin/npm2aur"},"engines":{"node":"~0.6.0"},"dependencies":{"coffee-script":"1.1.x","underscore":"1.2.x","npm":"1.0.x","npm2arch":"0.1.x","aur":"0.1.x","optimist":"0.2.x","colors":"0.5.x"},"devDependencies":{},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"npm2aur@0.1.2","_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"c2908f6e10ef10187f3b996206eb01469dcd69a1","tarball":"http://registry.npmjs.org/npm2aur/-/npm2aur-0.1.2.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.3":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"npm2aur","description":"Sync AUR with NPM packages","version":"0.1.3","repository":{"type":"git","url":"git@github.com/Filirom1/npm2aur.git"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"main":"./lib/npm2aur.js","bin":{"npm2aur":"bin/npm2aur"},"engines":{"node":"~0.6.0"},"dependencies":{"optimist":"0.2.x","colors":"0.5.x","coffee-script":"~1.3.3","underscore":"~1.3.3","npm":"~1.1.32","npm2arch":"~0.1.10","aur":"~0.1.2"},"devDependencies":{},"readme":"Npm2AUR\n=======\n\nSynchronize a list of npm packages with ArchLinux AUR.\n\nYou can setup your user, password and packages by creating a config file\nin `~/.npm2aur` or in `/etc/npm2aur`\n\nAn example of custom npm2aur\n\n module.exports = {\n user: 'AUR-USERNAME',\n password: 'AUR-PASSWORD'\n packages: [\n # Insert the packages to sync here\n #\n # You can specify the category like this.\n # {'npm2arch': 'system'},\n # {'express': 'devel'}\n #\n # Or if you want the default category (system) use\n # 'npm2arch'\n {'npm2arch':'system'},\n {'aur':'system'},\n {'npm2aur':'system'},\n ...\n ]\n }\n\nOr you can do it with comand line options :\n\n npm2aur --dry-run -u USER -p PASSWORD --pkg npm2arch:system,coffee-script\n\n\nCli usage:\n\n Usage: npm2aur [--packages name[:category],name2,name3]\n\n Options:\n -u, --user [default: \"\"]\n -p, --password [default: \"\"]\n --pkg, --packages [default: \"\"]\n -n, --dry-run [default: \"\"] //Do not publish for real\n\nDefault category is `system`.\n\nOther categories are :\n\n * daemons\n * devel\n * editors\n * emulators\n * games\n * gnome\n * i18n\n * kde\n * lib\n * modules\n * multimedia\n * network\n * office\n * science\n * system\n * x11\n * xfce\n * kernels\n\n\nLicense\n-------\n\nThe MIT License (MIT)\nCopyright (c) 2011 Filirom1\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"npm2aur@0.1.3","dist":{"shasum":"e2e3deb3d34593045d59acd71552d110a66ad303","tarball":"http://registry.npmjs.org/npm2aur/-/npm2aur-0.1.3.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]}},"readme":"Npm2AUR\n=======\n\nSynchronize a list of npm packages with ArchLinux AUR.\n\nYou can setup your user, password and packages by creating a config file\nin `~/.npm2aur` or in `/etc/npm2aur`\n\nAn example of custom npm2aur\n\n module.exports = {\n user: 'AUR-USERNAME',\n password: 'AUR-PASSWORD'\n packages: [\n # Insert the packages to sync here\n #\n # You can specify the category like this.\n # {'npm2arch': 'system'},\n # {'express': 'devel'}\n #\n # Or if you want the default category (system) use\n # 'npm2arch'\n {'npm2arch':'system'},\n {'aur':'system'},\n {'npm2aur':'system'},\n ...\n ]\n }\n\nOr you can do it with comand line options :\n\n npm2aur --dry-run -u USER -p PASSWORD --pkg npm2arch:system,coffee-script\n\n\nCli usage:\n\n Usage: npm2aur [--packages name[:category],name2,name3]\n\n Options:\n -u, --user [default: \"\"]\n -p, --password [default: \"\"]\n --pkg, --packages [default: \"\"]\n -n, --dry-run [default: \"\"] //Do not publish for real\n\nDefault category is `system`.\n\nOther categories are :\n\n * daemons\n * devel\n * editors\n * emulators\n * games\n * gnome\n * i18n\n * kde\n * lib\n * modules\n * multimedia\n * network\n * office\n * science\n * system\n * x11\n * xfce\n * kernels\n\n\nLicense\n-------\n\nThe MIT License (MIT)\nCopyright (c) 2011 Filirom1\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}],"time":{"modified":"2012-08-02T13:43:27.481Z","created":"2011-11-17T22:26:42.820Z","0.1.0":"2011-11-17T22:26:44.672Z","0.1.1":"2011-11-18T00:15:19.217Z","0.1.2":"2011-11-26T09:08:57.243Z","0.1.3":"2012-08-02T07:21:17.267Z"},"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"repository":{"type":"git","url":"git@github.com/Filirom1/npm2aur.git"},"users":{"fgribreau":true},"_id":"npm2aur","_rev":"1-481d68d3e2a4ab1698b0bc6db736229c"}ÿdocument-storeÿnodex˜{"id":"nodex","rev":"1-f5ff387eed6e3d7b2f8d6410c557db35","rev_tree":[{"pos":1,"ids":["f5ff387eed6e3d7b2f8d6410c557db35",{"status":"available"},[]]}],"rev_map":{"1-f5ff387eed6e3d7b2f8d6410c557db35":3933},"winningRev":"1-f5ff387eed6e3d7b2f8d6410c557db35","deleted":false,"seq":3933}ÿby-sequenceÿ0000000000003933Æ2{"name":"nodex","description":"Fast ã€Simpleness (only one file ,run it) web framework for node.js","dist-tags":{"latest":"0.3.5"},"versions":{"0.3.1":{"name":"nodex","version":"0.3.1","description":"Fast ã€Simpleness (only one file ,run it) web framework for nodejs.","homepage":"https://github.com/wangxian/nodex","repository":{"type":"git","url":"git://github.com/wangxian/nodex.git"},"author":{"name":"WangXian","email":"xian366@gmail.com","url":"http://blog.loopx.cn"},"main":"./nodex.js","keywords":["framework","web","javascript","rest","restful"],"engines":{"node":">=0.6.10"},"licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"_npmUser":{"name":"wangxian","email":"xian366@126.com"},"_id":"nodex@0.3.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3b8a54178fe58f4c0aa3e781721bef369cd4a8d1","tarball":"http://registry.npmjs.org/nodex/-/nodex-0.3.1.tgz"},"maintainers":[{"name":"wangxian","email":"xian366@126.com"}],"directories":{}},"0.3.2":{"name":"nodex","version":"0.3.2","description":"Fast ã€Simpleness (only one file ,run it) web framework for nodejs.","homepage":"https://github.com/wangxian/nodex","repository":{"type":"git","url":"git://github.com/wangxian/nodex.git"},"author":{"name":"WangXian","email":"xian366@gmail.com","url":"http://blog.loopx.cn"},"main":"./nodex.js","keywords":["framework","web","javascript","rest","restful"],"engines":{"node":">=0.6.10"},"licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"_npmUser":{"name":"wangxian","email":"xian366@126.com"},"_id":"nodex@0.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"36850034af4989c5a259206d2a6ddce99510831a","tarball":"http://registry.npmjs.org/nodex/-/nodex-0.3.2.tgz"},"maintainers":[{"name":"wangxian","email":"xian366@126.com"}]},"0.3.3":{"name":"nodex","version":"0.3.3","description":"Fast ã€Simpleness (only one file ,run it) web framework for node.js","homepage":"https://github.com/wangxian/nodex","repository":{"type":"git","url":"git://github.com/wangxian/nodex.git"},"author":{"name":"WangXian","email":"xian366@gmail.com","url":"http://blog.loopx.cn"},"main":"./nodex.js","keywords":["framework","web","javascript","rest","restful"],"engines":{"node":">=0.6.10"},"licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"_npmUser":{"name":"wangxian","email":"xian366@126.com"},"_id":"nodex@0.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3ebfff016156888ec5da103dd3e7d9a01f573b16","tarball":"http://registry.npmjs.org/nodex/-/nodex-0.3.3.tgz"},"maintainers":[{"name":"wangxian","email":"xian366@126.com"}]},"0.3.5":{"name":"nodex","version":"0.3.5","description":"Fast ã€Simpleness (only one file ,run it) web framework for node.js","homepage":"https://github.com/wangxian/nodex","repository":{"type":"git","url":"git://github.com/wangxian/nodex.git"},"author":{"name":"WangXian","email":"xian366@gmail.com","url":"http://blog.loopx.cn"},"main":"./nodex.js","keywords":["framework","web","javascript","rest","restful"],"engines":{"node":">=0.6.10"},"licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"_npmUser":{"name":"wangxian","email":"xian366@126.com"},"_id":"nodex@0.3.5","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8d5149a626f89fe44e598e5ed3c302f3464454fb","tarball":"http://registry.npmjs.org/nodex/-/nodex-0.3.5.tgz"},"maintainers":[{"name":"wangxian","email":"xian366@126.com"}]}},"readme":"# NodeX\n\n@version: v0.3 preview\n\nFast ã€Simpleness (only one file ,run it) web framework for node.\n\nYou can easily modify it.\n\n## Installation\n\n**Use npm install**\n\n npm install nodex\n\n**Clone it from github**\n\n git clone git://github.com/wangxian/nodex.git\n\n## Quick start\n\n```javascript\nnode server.js\n```\nAnd then view http://localhost:8888/ , you can find server is running .\nport is 8888, You can modify file config.js , ```PORT: 8888```\n\n# URL & GET & POST\n\nNodex use the controller and method of the url.\n\nFor example:\n \n http://localhost:8888/note/list\n // Point to `app/controllers/note.js` and `list` action\n\n http://localhost:8888/\n // Point to `app/controllers/index.j]Û”½ùs` and `index` action\n\n http://localhost:8888/index\n // Point to `app/controllers/index.js` and `index` action\n\n http://localhost:8888/note\n // Point to `app/controllers/note.js` and `index` action\n\n\nIn controller get HTTP GET\\POST\n\n ```javascript \n\n// print all get\ndump( app.get );\n\n// print all post\ndump( app.post );\n\n// htttp://localhost:8888/note/list?id=12\n// get id=?\ndump( app.get.id );\n\n```\n\n# cookie and session\n\n```javascript\n\n// set cookie expires 20s\napp.cookie.set( {name:'aa',value:'aa',expires:20} );\n\n// get cookie, if not set yourkey, return all your cookie\napp.cookie.get('yourkey');\n\n\n// set cookie now = new Date()\napp.session.set('now',new Date());\n\n// get session, if not set yourkey, return all your session \napp.session.get('yourkey');\n\n```\n\n\n# Layout your page\n\n```javascript\n// @file:index.js\n\nexports.controller = { \n index: function(){\n app.res.setHeader(\"content-type\", \"text/html; charset=UTF-8\");\n app.render('index/index', {'name':'nodex'});\n }\n}\n\n```\n\n\n# License\n\nMIT [http://rem.mit-license.org](http://rem.mit-license.org)\n","maintainers":[{"name":"wangxian","email":"xian366@126.com"}],"time":{"modified":"2012-04-24T02:31:23.457Z","created":"2012-04-18T17:34:36.990Z","0.3.1":"2012-04-18T17:34:41.360Z","0.3.2":"2012-04-21T03:53:02.101Z","0.3.3":"2012-04-22T14:57:57.609Z","0.3.5":"2012-04-24T02:31:23.457Z"},"author":{"name":"WangXian","email":"xian366@gmail.com","url":"http://blog.loopx.cn"},"repository":{"type":"git","url":"git://github.com/wangxian/nodex.git"},"_id":"nodex","_rev":"1-f5ff387eed6e3d7b2f8d6410c557db35"}#ÿdocument-storeÿnodeload-nmickuli¤{"id":"nodeload-nmickuli","rev":"1-789dad503f1196b069749cf083ed0df2","rev_tree":[{"pos":1,"ids":["789dad503f1196b069749cf083ed0df2",{"status":"available"},[]]}],"rev_map":{"1-789dad503f1196b069749cf083ed0df2":3932},"winningRev":"1-789dad503f1196b069749cf083ed0df2","deleted":false,"seq":3932}ÿby-sequenceÿ0000000000003932Ô€{"name":"nodeload-nmickuli","description":"Load testing library for node.js. Updated for node 0.6.x by nmickuli.","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"nodeload-nmickuli","version":"1.0.0","description":"Load testing library for node.js. Updated for node 0.6.x by nmickuli.","keywords":["testing","load testing","http"],"homepage":"https://github.com/nmickuli/nodeload","engines":{"node":">=0.4"},"contributors":[{"name":"Nathan Mickulicz","email":"nmickuli@andrew.cmu.edu"},{"name":"Benjamin Schmaus","email":"benjamin.schmaus@gmail.com"},{"name":"Jonathan Lee","email":"jonjlee@gmail.com"},{"name":"Robert Newson","email":"robert.newson@gmail.com"},{"name":"Michael Mattozzi","email":"mike.mattozzi@gmail.com"}],"bugs":{"url":"https://github.com/nmickuli/nodeload/issues"},"repository":{"type":"git","url":"git://github.com/nmickuli/nodeload.git"},"main":"./nodeload.js","bin":{"nodeload.js":"./nodeload.js","nl.js":"./nl.js"},"directories":{"doc":"./doc","lib":"./lib","example":"./examples"},"scripts":{"test":"expresso","preinstall":"make clean compile"},"devDependencies":{"expresso":">=0.7.7"},"dependencies":{"optparse":"1.0.3"},"licenses":[{"type":"MIT","url":"https://github.com/nmickuli/nodeload/raw/master/LICENSE"}],"_npmUser":{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"},"_id":"nodeload-nmickuli@1.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"dd9bbf5f12a0b0c522632842c32ac942384e0613","tarball":"http://registry.npmjs.org/nodeload-nmickuli/-/nodeload-nmickuli-1.0.0.tgz"},"maintainers":[{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"}]},"1.0.1":{"name":"nodeload-nmickuli","version":"1.0.1","description":"Load testing library for node.js. Updated for node 0.6.x by nmickuli.","keywords":["testing","load testing","http"],"homepage":"https://github.com/nmickuli/nodeload","engines":{"node":">=0.4"},"contributors":[{"name":"Nathan Mickulicz","email":"nmickuli@andrew.cmu.edu"},{"name":"Benjamin Schmaus","email":"benjamin.schmaus@gmail.com"},{"name":"Jonathan Lee","email":"jonjlee@gmail.com"},{"name":"Robert Newson","email":"robert.newson@gmail.com"},{"name":"Michael Mattozzi","email":"mike.mattozzi@gmail.com"}],"bugs":{"url":"https://github.com/nmickuli/nodeload/issues"},"repository":{"type":"git","url":"git://github.com/nmickuli/nodeload.git"},"main":"./nodeload.js","bin":{"nodeload.js":"./nodeload.js","nl.js":"./nl.js"},"directories":{"doc":"./doc","lib":"./lib","example":"./examples"},"scripts":{"test":"expresso","preinstall":"make clean compile"},"devDependencies":{"expresso":">=0.7.7"},"dependencies":{"optparse":"1.0.3","nlogger":">= 0.3.0"},"licenses":[{"type":"MIT","url":"https://github.com/nmickuli/nodeload/raw/master/LICENSE"}],"_npmUser":{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"},"_id":"nodeload-nmickuli@1.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"666734f4ee5e6e8fcdf0be8c5ec1cb4a8ec14f63","tarball":"http://registry.npmjs.org/nodeload-nmickuli/-/nodeload-nmickuli-1.0.1.tgz"},"maintainers":[{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"}]},"1.0.2":{"name":"nodeload-nmickuli","version":"1.0.2","description":"Load testing library for node.js. Updated for node 0.6.x by nmickuli.","keywords":["testing","load testing","http"],"homepage":"https://github.com/nmickuli/nodeload","engines":{"node":">=0.4"},"contributors":[{"name":"Nathan Mickulicz","email":"nmickuli@andrew.cmu.edu"},{"name":"Benjamin Schmaus","email":"benjamin.schmaus@gmail.com"},{"name":"Jonathan Lee","email":"jonjlee@gmail.com"},{"name":"Robert Newson","email":"robert.newson@gmail.com"},{"name":"Michael Mattozzi","email":"mike.mattozzi@gmail.com"}],"bugs":{"url":"https://github.com/nmickuli/nodeload/issues"},"repository":{"type":"git","url":"git://github.com/nmickuli/nodeload.git"},"main":"./nodeload.js","bin":{"nodeload.js":"./nodeload.js","nl.js":"./nl.js"},"directories":{"doc":"./doc","lib":"./lib","example":"./examples"},"scripts":{"test":"expresso","preinstall":"make clean compile"},"devDependencies":{"expresso":">=0.7.7"},"dependencies":{"optparse":"1.0.3","nlogger":">= 0.3.0","mersenne":">= 0.0.3","underscore":">= 1.3.3"},"licenses":[{"type":"MIT","url":"https://github.com/nmickuli/nodeload/raw/master/LICENSE"}],"_npmUser":{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"},"_id":"nodeload-nmickuli@1.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"d028a9968c866044ab610baf6ef9d529ba1ad6d6","tarball":"http://registry.npmjs.org/nodeload-nmickuli/-/nodeload-nmickuli-1.0.2.tgz"},"maintainers":[{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"}]},"1.0.3":{"name":"nodeload-nmickuli","version":"1.0.3","description":"Load testing library for node.js. Updated for node 0.6.x by nmickuli.","keywords":["testing","load testing","http"],"homepage":"https://github.com/nmickuli/nodeload","engines":{"node":">=0.4"},"contributors":[{"name":"Nathan Mickulicz","email":"nmickuli@andrew.cmu.edu"},{"name":"Benjamin Schmaus","email":"benjamin.schmaus@gmail.com"},{"name":"Jonathan Lee","email":"jonjlee@gmail.com"},{"name":"Robert Newson","email":"robert.newson@gmail.com"},{"name":"Michael Mattozzi","email":"mike.mattozzi@gmail.com"}],"bugs":{"url":"https://github.com/nmickuli/nodeload/issues"},"repository":{"type":"git","url":"git://github.com/nmickuli/nodeload.git"},"main":"./nodeload.js","bin":{"nodeload.js":"./nodeload.js","nl.js":"./nl.js"},"directories":{"doc":"./doc","lib":"./lib","example":"./examples"},"scripts":{"test":"expresso","preinstall":"make clean compile"},"devDependencies":{"expresso":">=0.7.7"},"dependencies":{"optparse":"1.0.3","nlogger":">= 0.3.0","mersenne":">= 0.0.3","underscore":">= 1.3.3"},"licenses":[{"type":"MIT","url":"https://github.com/nmickuli/nodeload/raw/master/LICENSE"}],"_npmUser":{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"},"_id":"nodeload-nmickuli@1.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"fe6d5d2a0c14e883cbc9c378310541c5a33b62b4","tarball":"http://registry.npmjs.org/nodeload-nmickuli/-/nodeload-nmickuli-1.0.3.tgz"},"maintainers":[{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"}]}},"readme":"INSTALLING\n================\n\nMake sure [node.js](http://nodejs.org/#download) is installed. Then install `nodeload`:\n\n1. Using [npm](http://npmjs.org/):\n\n curl http://npmjs.org/install.sh | sh # install npm if not already installed\n npm install nodeload\n\n2. From source:\n\n git clone git://github.com/benschmaus/nodeload.git\n cd nodeload\n npm link # optional. enables require('nodeload/') instead of require('./lib/').\n\n3. Or as a single file (this does not install the `nl.js` tool):\n\n wget https://github.com/benschmaus/nodeload/raw/master/nodeload.js\n\nNODELOAD\n================\n\n`nodeload` is a collection of independent [node.js](http://nodejs.org/) modules for load testing HTTP services.\n\nAs a developer, you should be able to write load tests and get informative reports without having to learn another framework. You should be able to build by example and selectively use the parts of a tool that fit your task. Being a library means that you can use as much or as little of `nodeload` as makes sense, and you can create load tests with the power of a full programming language. For example, if you need to execute some function at a given rate, just use the [`'nodeload/loop'`](https://github.com/benschmaus/nodeload/tree/master/doc/loop.md) module, and write the rest yourself.\n\nIn addition, `nodeload` is built for operability. It can always be deployed by simply copying the single file, `nodeload.js`.\n\nLook for examples in the [`examples/`](https://github.com/benschmaus/nodeload/tree/master/examples) directory and in test cases prefixed with \"example\" in [`test/`](https://github.com/benschmaus/nodeload/tree/master/test). Here are simple examples of each module:\n\n### [nl](https://github.com/benschmaus/nodeload/tree/master/doc/nl.md)\n\n`nl` is an [Apache Bench (ab)](http://httpd.apache.org/docs/2.0/programs/ab.html) like command line tool for running tests quickly. See the [nl documentation](https://github.com/benschmaus/nodeload/tree/master/doc/nl.md) for details.\n\n $ examples/test-server.js & # starts a simple server on port 9000 to load test\n $ ./nl.js -c 10 -n 10000 -i 2 localhost:9000\n\nwill send 10,000 queries to http://localhost:9000 using 10 connections. Statistics are printed to the console and graphs can be seen at .\n\n### [nodeload](https://github.com/benschmaus/nodeload/tree/master/doc/nodeload.md)\n\nThe `nodeload` module is the primary interface for creating load tests. It includes all the other modules described below, so if you `require('nodeload')`, you don't need to `require()` any of the other ones. Look at the examples in [`examples/loadtesting.ex.js`](https://github.com/benschmaus/nodeload/tree/master/examples/loadtesting.ex.js) and [`examples/riaktest.ex.js`](https://github.com/benschmaus/nodeload/tree/master/examples/riaktest.ex.js) or read the [nodeload module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/nodeload.md).\n\n var nl = require('nodeload');\n var loadtest = nl.run({\n host: 'localhost',\n port: 9000,\n timeLimit: 60,\n targetRps: 500,\n requestGenerator: function(client) {\n var request = client.request('GET', \"/\" + Math.floor(Math.random()*10000));\n request.end();\n return request;\n }\n });\n loadtest.on('end', function() { console.log('Load test done.'); });\n\n### [remote](https://github.com/benschmaus/nodeload/tree/master/doc/remote.md)\n\nThe `remote` module provides a mechanism for running a distributed load test. See [`examples/remotetesting.ex.js`](https://github.com/benschmaus/nodeload/tree/master/examples/remotetesting.ex.js) and [`examples/remote.ex.js`](https://github.com/benschmaus/nodeload/tree/master/examples/remote.ex.js) for examples or read the [remote module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/remote.md).\n\nStart slave instances:\n\n $ HTTP_PORT=10001 ./nodeload.js # start a local slave instance on :10001\n $ HTTP_PORT=10002 ./nodeload.js # start a 2nd slave instance on :10002\n \nCreate the distributed load test:\n\n var nl = require('nodeload/remote');\n var cluster = new nl.LoadTestCluster('localhost:8000', ['localhost:8002', 'localhost:8001']);\n cluster.run({\n host: 'localhost',\n port: 9000,\n timeLimit: 60,\n targetRps: 500,\n requestGenerator: function(client) {\n var request = client.request('GET', \"/\" + Math.floor(Math.random()*10000));\n request.end();\n return request;\n }\n });\n cluster.on('end', function() { console.log('Load test done.'); });\n\n### [stats](https://github.com/benschmaus/nodeload/tree/master/doc/stats.md)\n\nThe `stats` module provides implementations of various statistics objects, like Histograms and Accumulators, and functions, like randomString(), and nextGaussian(). See the [stats module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/stats.md).\n\n var stats = require('nodeload/stats');\n var histogram = new stats.Histogram();\n for (var i = 0; i < 1000; i++) \n histogram.put(Math.abs(Math.floor(stats.nextGaussian())));\n console.log('Mean: ' + histogram.mean() + ', 99%: ' + histogram.percentile(0.99));\n\nwill output \"`Mean: 0.852, 99%: 3`\".\n\n### [monitoring](https://github.com/benschmaus/nodeload/tree/master/doc/monitoring.md)\n\nThe `monitoring` module provides a way to track runtime statistics for code that is run concurrently. See [`test/monitoring.test.js`](https://github.com/benschmaus/nodeload/tree/master/test/monitoring.test.js) for examples or read the [monitoring module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/monitoring.md).\n\n var monitoring = require('nodeload/monitoring');\n var monitor = new monitoring.Monitor('runtime');\n function asyncFunction() {\n var m = monitor.start();\n setTimeout(function() { m.end(); }, Math.floor(Math.random()*1000));\n }\n for (var i = 0; i < 1000; i++) { asyncFunction(); }\n process.on('exit', function() {\n console.log('Median runtime (ms): ' + monitor.stats['runtime'].percentile(0.5));\n });\n\nwill output \"`Median runtime (ms): 497`\".\n\n### [reporting](https://github.com/benschmaus/nodeload/tree/master/doc/reporting.md)\n\nThe `reporting` module provides a way to graph values over time and present it in a auto-updating HTML page. See [`test/reporting.test.js`](https://github.com/benschmaus/nodeload/tree/master/test/reporting.test.js) for examples or read the [reporting module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/reporting.md).\n\n var reporting = require('nodeload/reporting'), \n stats = require('nodeload/stats'),\n report = reporting.REPORT_MANAGER.addReport('Random Numbers'),\n chart = report.getChart('Gaussian / Pareto vs. Time (minutes)');\n for (var timeout = 0; timeout < 5000; timeout+=500) {\n setTimeout(function() {\n chart.put({\n 'Pareto': stats.nextPareto(0, 100),\n 'Gaussian': stats.nextGaussian()\n });\n }, timeout);\n }\n\nwill display a graph on http://localhost:8000/ and save it to an HTML file in the local directory.\n\n### [loop](https://github.com/benschmaus/nodeload/tree/master/doc/loop.md)\n\nThe `loop` module provides a way to execute a function at a set rate and concurrency. See [`test/loop.test.js`](https://github.com/benschmaus/nodeload/tree/master/test/loop.test.js) for examples or read the [loop module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/loop.md) for details.\n\n var http = require('http'),\n loop = require('nodeload/loop'),\n requests = 0,\n client = http.createClient(80, 'www.google.com'),\n l = new loop.MultiLoop({\n fun: function(finished) { \n client.request('GET', '/').end();\n requests++;\n finished();\n },\n rps: 10,\n duration: 3,\n concurrency: 5\n }).start();\n l.on('end', function() { console.log('Total requests: ' + requests) });\n\nwill output \"`Total requests: 30`\".\n\n### [http](https://github.com/benschmaus/nodeload/tree/master/doc/http.md)\n\nThe `http` module provides a generic HTTP server that serves static files and that can be configured with new routes. See [`test/http.test.js`](https://github.com/benschmaus/nodeload/tree/master/test/http.test.js) for examples or read the [http module documentation](https://github.com/benschmaus/nodeload/tree/master/doc/http.md).\n\n var http = require('nodeload/http');\n var server = new http.HttpServer().start(10000);\n server.addRoute('^/hello$', function(url, req, res) {\n res.writeHead(200);\n res.end(\"Hello\");\n });\n\n will output the contents of `./package.json`, and will display \"Hello\".\n\n\nCONTRIBUTING\n================\nFile bugs on [github](https://github.com/benschmaus/nodeload/issues), email any of the authors, and fork away. [doc/developers.md](https://github.com/benschmaus/nodeload/tree/master/doc/developers.md) has brief instructions on getting tests up and running, and will hold more design details in the future. Contributions are always welcome.\n","maintainers":[{"name":"nmickuli","email":"nmickuli@andrew.cmu.edu"}],"time":{"modified":"2012-05-12T23:29:44.009Z","created":"2012-05-11T04:17:00.571Z","1.0.0":"2012-05-11T04:17:00.767Z","1.0.1":"2012-05-11T06:06:22.626Z","1.0.2":"2012-05-12T05:05:15.245Z","1.0.3":"2012-05-12T23:29:44.009Z"},"repository":{"type":"git","url":"git://github.com/nmickuli/nodeload.git"},"_id":"nodeload-nmickuli","_rev":"1-789dad503f1196b069749cf083ed0df2"}ÿdocument-storeÿnode.missions {"id":"node.missions","rev":"1-8e57affa455a5ae5a6b40bb02ab5b7a7","rev_tree":[{"pos":1,"ids":["8e57affa455a5ae5a6b40bb02ab5b7a7",{"status":"available"},[]]}],"rev_map":{"1-8e57affa455a5ae5a6b40bb02ab5b7a7":3931},"winningRev":"1-8e57affa455a5ae5a6b40bb02ab5b7a7","deleted":false,"seq":3931}ÿby-sequenceÿ0000000000003931Ÿ{"name":"node.missions","description":"node missions, supports serial or paiallel, pls enjoy it!","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.6":{"name":"node.missions","version":"0.1.6","author":{"name":"xunuo","email":"i@xunuo.com","url":"http://www.xunuo.com"},"keywords":["missions","serial","paiallel"],"description":"node missions, supports serial or paiallel, pls enjoy it!","homepage":"http://www.xunuo.com","repository":{"type":"git","url":"git://github.com/xunuo/node.missions.git"},"dependencies":{"node.extend":"1.x.x"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"xunuo","email":"i@xunuo.com"},"_id":"node.missions@0.1.6","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"667183d6165c53f266323b764c50e58528841f60","tarball":"http://registry.npmjs.org/node.missions/-/node.missions-0.1.6.tgz"},"maintainers":[{"name":"xunuo","email":"i@xunuo.com"}]}},"readme":"����������\n===========================\n * ֧�ִ��С���������\n * ֧��Ϊÿ�����������\n * �ܹ����ɿ��������ս� \n\n~~~javascript\n/**\n * �������ӳ�ʼ������������ (��������)\n */\nvar hookInitMissions = ( new MissionsClass() ).init({\n\t\tcommitType : \"serial\",\n\t\tcompleteCallBack : function(){\n\t\t\t\n\t\t\talert(\"HOOK INIT COMPLETE\\n++++++++++++++++++++++++++++++++\");\n\t\t\talert(\"++++++++++++++++++++++++++++++++\\n ALI F2E LINTS START\");\n\t\t\t\n\t\t\t// ���ӳ�ʼ�������������� ��ģ�鲢�м�����������ʼ����\n\t\t\thookLintsMissions.start();\n\t\t}\n});\n~~~\n\n~~~javascript\n// �� ��ȡ�ύ����Ϣ\nhookInitMissions.join(function(args){\n \n \t// ���䴴��Ŀ¼����\n\t\tvar tempDirFullPath = args.tempDirFullPath,\n\t\t\t\tcmd = 'mkdir -p ' + '\"' + tempDirFullPath + '\"',\n\t\t\t\trun = nodeChildProcess.exec(cmd);\n\t\t\n\t\t// ���ɻص�\n\t\trun.on('exit', function (code) {\n\t\t\tif(code === 0){\n\t\t // alert(\"temp dir not found, creating : \" + tempDirFullPath );\n\t\t buildTempDirMissions.complete();\n\t\t\t}else{\n\t\t\t\tdie('Build Temp Dir Failure : ' + tempDirFullPath);\n\t\t\t}\n\t\t});\n\t\t\n\t\t// ��������\n\t\trun.stderr.on('data', function (err) {\n\t\t\tdie('buildTempDirMissions Error: ' + err);\n\t\t});\n\t\t\n},{tempDirFullPath:tempDirFullPath});\n\n// �� ��ȡ�ύ��־\nhookInitMissions.join(function(){\n\t\tgetCommitLog();\n});\n~~~\n\n~~~javascript\n/**\n * ����HOOKLINT���Ⲣ�������� (��������)\n */\nvar hookLintsMissions = ( new MissionsClass() ).init({\n\t\tcommitType : \"paiallel\",\n\t\tcompleteCallBack : function(){\n\t\t\talert(\"================================\\nHook CODA START\\n================================\");\n\t\t\thookCodaMissions.start();\n\t\t}\n});\n~~~\n\n~~~javascript\n// �� �����ļ���Ŀ¼��\nhookLintsMissions.join(function(){\n\t\tcheckItemsNameMod();\n});\n\n// �� check chardet\nhookLintsMissions.join(function(){\n\t\tjschardet = require(\"jschardet\");\n\t\thookLintsMissions.complete();\n});\n","maintainers":[{"name":"xunuo","email":"i@xunuo.com"}],"time":{"modified":"2012-06-06T17:58:15.149Z","created":"2012-06-06T17:58:11.666Z","0.1.6":"2012-06-06T17:58:15.149Z"},"author":{"name":"xunuo","email":"i@xunuo.com","url":"http://www.xunuo.com"},"repository":{"type":"git","url":"git://github.com/xunuo/node.missions.git"},"_id":"node.missions","_rev":"1-8e57affa455a5ae5a6b40bb02ab5b7a7"}%ÿdocument-storeÿnode-sass-starfront¦{"id":"node-sass-starfront","rev":"1-3a07fc11aec3e53a30f81fdd0f63fb3f","rev_tree":[{"pos":1,"ids":["3a07fc11aec3e53a30f81fdd0f63fb3f",{"status":"available"},[]]}],"rev_map":{"1-3a07fc11aec3e53a30f81fdd0f63fb3f":3930},"winningRev":"1-3a07fc11aec3e53a30f81fdd0f63fb3f","deleted":false,"seq":3930}ÿby-sequenceÿ0000000000003930˜{"name":"node-sass-starfront","description":"wrapper around libsass","dist-tags":{"latest":"0.2.2p1"},"versions":{"0.2.2":{"author":{"name":"Andrew Nesbitt","email":"andrewnez@gmail.com","url":"http://andrew.github.com"},"name":"node-sass-starfront","description":"wrapper around libsass","version":"0.2.2","homepage":"http://github.com/vishvish/node-sass","main":"./sass.js","repository":{"type":"git","url":"git@github.com:vishvish/node-sass.git"},"engines":{"node":">=0.6.18"},"dependencies":{"mkdirp":"0.3.x"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"vishvish","email":"shashin@impartial.in"},"_id":"node-sass-starfront@0.2.2","_engineSupported":false,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"eb6788212a5d3ee9f8c4a028586d754396a5df53","tarball":"http://registry.npmjs.org/node-sass-starfront/-/node-sass-starfront-0.2.2.tgz"},"maintainers":[{"name":"vishvish","email":"shashin@impartial.in"}]},"0.2.2p1":{"author":{"name":"Andrew Nesbitt","email":"andrewnez@gmail.com","url":"http://andrew.github.com"},"name":"node-sass-starfront","description":"wrapper around libsass","version":"0.2.2p1","homepage":"http://github.com/vishvish/node-sass","main":"./sass.js","repository":{"type":"git","url":"git@github.com:vishvish/node-sass.git"},"engines":{"node":">=0.6.18"},"dependencies":{"mkdirp":"0.3.x"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"vishvish","email":"shashin@impartial.in"},"_id":"node-sass-starfront@0.2.2p1","_engineSupported":false,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"1efb951a2bb25a98b28ac4613095760fadc20f73","tarball":"http://registry.npmjs.org/node-sass-starfront/-/node-sass-starfront-0.2.2p1.tgz"},"maintainers":[{"name":"vishvish","email":"shashin@impartial.in"}]}},"readme":"##node-sass\n\nNode-sass is a library that provides binding for Node.js to libsass, the C version of the popular stylesheet preprocessor, Sass.\n\nIt allows you to natively compile .scss files to css at incredible speed and automatically via a connect middleware.\n\nFind it on npm: \n\n## Install\n\n npm install\n\n## Usage\n\n var sass = require('node-sass');\n sass.render('body{background:blue; a{color:black;}}', function(err, css){\n console.log(css)\n });\n\n## Connect/Express middleware\n\nRecompile `.scss` files automatically for connect and express based http servers\n\n var server = connect.createServer(\n sass.middleware({\n src: __dirname\n , dest: __dirname + '/public'\n , debug: true\n }),\n connect.static(__dirname + '/public')\n );\n\nHeavily inspired by \n\n## TODO\n\n* sass compression options\n* publish npm\n* file context?\n* folder context?\n","maintainers":[{"name":"vishvish","email":"shashin@impartial.in"}],"time":{"modified":"2012-08-02T13:43:37.467Z","created":"2012-08-01T09:05:02.059Z","0.2.2":"2012-08-01T09:05:03.445Z","0.2.2p1":"2012-08-01T09:05:31.967Z"},"author":{"name":"Andrew Nesbitt","email":"andrewnez@gmail.com","url":"http://andrew.github.com"},"repository":{"type":"git","url":"git@github.com:vishvish/node-sass.git"},"users":{"fgribreau":true},"_id":"node-sass-starfront","_rev":"1-3a07fc11aec3e53a30f81fdd0f63fb3f"}ÿdocument-storeÿnode-pps›{"id":"node-pps","rev":"1-b9b0a2abed9879b90dff1717c227309d","rev_tree":[{"pos":1,"ids":["b9b0a2abed9879b90dff1717c227309d",{"status":"available"},[]]}],"rev_map":{"1-b9b0a2abed9879b90dff1717c227309d":3929},"winningRev":"1-b9b0a2abed9879b90dff1717c227309d","deleted":false,"seq":3929}ÿby-sequenceÿ0000000000003929” {"name":"node-pps","description":"node module for working with PPS payment api","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"node-pps","version":"0.0.1","description":"node module for working with PPS payment api","repository":{"type":"git","url":"git://github.com/skookum/node-pps.git"},"author":{"name":"Jim Snodgrass"},"contributors":[{"name":"David Becher","email":"david@skookum.com"}],"dependencies":{"underscore":"latest"},"devDependencies":{"coffee-script":"latest","should":"latest"},"scripts":{"test":"mocha -R spec -r should --compilers coffee:coffee-script","build":"coffee --output lib --compile src","prepublish":"npm run build"},"main":"lib/index.js","engines":{"node":">= 0.6.0"},"_npmUser":{"name":"snodgrass23","email":"snodgrass23@gmail.com"},"_id":"node-pps@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"83dd93d2799715071c2696e999f7a1344eceb379","tarball":"http://registry.npmjs.org/node-pps/-/node-pps-0.0.1.tgz"},"maintainers":[{"name":"snodgrass23","email":"snodgrass23@gmail.com"}]}},"readme":"\n# Node PPS\n\n node module for working with PPS payment api","maintainers":[{"name":"snodgrass23","email":"snodgrass23@gmail.com"}],"time":{"modified":"2012-07-02T19:04:02.909Z","created":"2012-07-02T19:04:01.925Z","0.0.1":"2012-07-02T19:04:02.909Z"},"author":{"name":"Jim Snodgrass"},"repository":{"type":"git","url":"git://github.com/skookum/node-pps.git"},"_id":"node-pps","_rev":"1-b9b0a2abed9879b90dff1717c227309d"}ÿdocument-storeÿncgi—{"id":"ncgi","rev":"1-0ed32e2e79587ba8023fa1257fdc1330","rev_tree":[{"pos":1,"ids":["0ed32e2e79587ba8023fa1257fdc1330",{"status":"available"},[]]}],"rev_map":{"1-0ed32e2e79587ba8023fa1257fdc1330":3928},"winningRev":"1-0ed32e2e79587ba8023fa1257fdc1330","deleted":false,"seq":3928}ÿby-sequenceÿ0000000000003928Å{"name":"ncgi","description":"Node module to call node scripts as a CGI script","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"ncgi","description":"Node module to call node scripts as a CGI script","version":"0.1.0","homepage":"http://github.com/regadou/node-cgi","author":{"name":"Regis Dehoux","email":"regis@regadou.net","url":"http://regadou.net/"},"repository":{"type":"git","url":"git://github.com/regadou/node-cgi.git"},"engines":{"node":">= 0.8.6 && < 0.9.0"},"licenses":[{"type":"GPL"}],"main":"./cgi.js","_id":"ncgi@0.1.0","_from":"ncgi","readme":"# node-cgi\n\nNode module to call node scripts as a CGI script\n\n# USAGE\n\n\\#!/usr/bin/node\nvar ncgi = require('ncgi');\nvar params = ncgi.getParameters();\nncgi.print(\"Hello world
\\n\");\nncgi.print(\"parameters=\"+require('util').inspect(params)+\"
\\n\");\n\n\n# FEATURES\n\n* A node script can be called from Apache by giving it the .cgi extension and making it executable\n* Supports GET as well as POST (application/x-www-form-urlencoded content-type only) parameters\n* Can set a custom mimetype with ncgi.getParameters() (default text/html)\n* Can include a script relative to the current script with eval(ncgi.read('path/to/relativ/script.js'))\n\n# LICENSE\n\nnode-cgi is released under GPL license\n\n\n","dist":{"shasum":"3195cc92868533b5a0a0b95fc8d506acf4d49ff8","tarball":"http://registry.npmjs.org/ncgi/-/ncgi-0.1.0.tgz"},"maintainers":[{"name":"regadou","email":"regis@regadou.net"}]}},"readme":"# node-cgi\n\nNode module to call node scripts as a CGI script\n\n# USAGE\n\n\\#!/usr/bin/node\nvar ncgi = require('ncgi');\nvar params = ncgi.getParameters();\nncgi.print(\"Hello world
\\n\");\nncgi.print(\"parameters=\"+require('util').inspect(params)+\"
\\n\");\n\n\n# FEATURES\n\n* A node script can be called from Apache by giving it the .cgi extension and making it executable\n* Supports GET as well as POST (application/x-www-form-urlencoded content-type only) parameters\n* Can set a custom mimetype with ncgi.getParameters() (default text/html)\n* Can include a script relative to the current script with eval(ncgi.read('path/to/relativ/script.js'))\n\n# LICENSE\n\nnode-cgi is released under GPL license\n\n\n","maintainers":[{"name":"regadou","email":"regis@regadou.net"}],"time":{"modified":"2012-08-19T19:06:20.694Z","created":"2012-08-19T19:06:20.086Z","0.1.0":"2012-08-19T19:06:20.694Z"},"author":{"name":"Regis Dehoux","email":"regis@regadou.net","url":"http://regadou.net/"},"repository":{"type":"git","url":"git://github.com/regadou/node-cgi.git"},"_id":"ncgi","_rev":"1-0ed32e2e79587ba8023fa1257fdc1330"}ÿdocument-storeÿmy-zookeeperŸ{"id":"my-zookeeper","rev":"1-2154098ac4211d6fe2f7aea218849d00","rev_tree":[{"pos":1,"ids":["2154098ac4211d6fe2f7aea218849d00",{"status":"available"},[]]}],"rev_map":{"1-2154098ac4211d6fe2f7aea218849d00":3927},"winningRev":"1-2154098ac4211d6fe2f7aea218849d00","deleted":false,"seq":3927}ÿby-sequenceÿ0000000000003927Ìm{"name":"my-zookeeper","description":"apache zookeeper client (zookeeper async API >= 3.4.0)","dist-tags":{"latest":"3.4.1-2"},"versions":{"3.4.1-2":{"name":"my-zookeeper","description":"apache zookeeper client (zookeeper async API >= 3.4.0)","version":"3.4.1-2","author":{"name":"Yuri Finkelstein","email":"yurif2003@yahoo.com"},"contributors":[{"name":"Yuri Finkelstein","email":"yurif2003@yahoo.com"},{"name":"Woody Anderson","email":"woody.anderson@gmail.com"},{"name":"Dave Dopson","email":"ddopson@gmail.com"},{"name":"David Trejo","email":"david.daniel.trejo@gmail.com"}],"repository":{"type":"git","url":"git://github.com/vincent-zhao/node-zookeeper.git"},"keywords":["apache","zookeeper","client"],"dependencies":{"webworker":">=0.8.2","underscore":"*","async":"~0.1.18"},"devDependencies":{"log4js":"~0.4.3"},"main":"lib/index","directories.lib":"build/default/","scripts":{"build":"make install","preinstall":"node-waf clean || (exit 0); node-waf configure build"},"engines":{"node":"0.4.x || 0.6.x"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"my-zookeeper@3.4.1-2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoadð?,„ùed":true,"dist":{"shasum":"e2965d96511a40f1b351cce61831e409220e0726","tarball":"http://registry.npmjs.org/my-zookeeper/-/my-zookeeper-3.4.1-2.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]}},"readme":"# Overview\n\nnode-zookeeper - A Node.js client for Apache Zookeeper.\n\nThis module is implemented on top of the ZooKeeper C API; consult the [ZK Reference](http://zookeeper.apache.org/doc/r3.4.0/index.html) for further details on behavior.\n\n# Example\n\n```javascript\nvar ZooKeeper = require (\"zookeeper\");\nvar zk = new ZooKeeper({\n connect: \"localhost:2181\"\n ,timeout: 200000\n ,debug_level: ZooKeeper.ZOO_LOG_LEVEL_WARNING\n ,host_order_deterministic: false\n});\nzk.connect(function (err) {\n if(err) throw err;\n console.log (\"zk session established, id=%s\", zk.client_id);\n zk.a_create (\"/node.js1\", \"some value\", ZooKeeper.ZOO_SEQUENCE | ZooKeeper.ZOO_EPHEMERAL, function (rc, error, path) {\n if (rc != 0) {\n console.log (\"zk node create result: %d, error: '%s', path=%s\", rc, error, path);\n } else {\n console.log (\"created zk node %s\", path);\n process.nextTick(function () {\n zk.close ();\n });\n }\n });\n});\n```\n\n# API Reference\n\n### Methods ###\n\n* init ( options )\n* close ( )\n* a_create ( path, data, flags, path_cb )\n* mkdirp ( path, callback(Error) )\n* a_exists ( path, watch, stat_cb )\n* a_get ( path, watch, data_cb )\n* a_get_children ( path, watch, child_cb )\n* a_get_children2 ( path, watch, child2_cb )\n* a_set ( path, data, version, stat_cb )\n* a_delete`_` ( path, version, void_cb )\n * (trailing `_` is added to avoid conflict with reserved word `_delete_` since zk_promise.js strips off prefix `a_` from all operations)\n\n*The watcher methods are forward-looking subscriptions that can recieve multiple callbacks whenever a matching event occurs.*\n\n* aw_exists ( path, watch_cb, stat_cb )\n* aw_get ( path, watch_cb, data_cb )\n* aw_get_children ( path, watch_cb, child_cb )\n* aw_get_children2 ( path, watch_cb, child2_cb )\n\n### Callback Signatures ###\n\n * path_cb : function ( rc, error, path )\n * stat_cb : function ( rc, error, stat )\n * data_cb : function ( rc, error, stat, data )\n * child_cb : function ( rc, error, children )\n * child2_cb : function ( rc, error, children, stat )\n * void_cb : function ( rc, error )\n * watch_cb : function ( type, state, path )\n\n### Input Parameters ###\n\n * options : object. valid keys: { connect, timeout, debug_level, host_order_deterministic, data_as_buffer}\n * path : string\n * data : string or Buffer\n * flags : int32\n * version : int32\n * watch : boolean\n\n### Output Parameters ###\n\n * path is a string\n * data is either a Buffer (default), or a string (this is controlled by data_as_buffer = true/false)\n * children is an array of strings\n * rc is an int (error codes from zk api)\n * error is a string (error string from zk api)\n * type is an int event type (from zk api)\n * state is an int (state when the watcher fired from zk api)\n * stat is an object with the following attributes:\n * long czxid // created zxid\n * long mzxid // last modified zxid\n * long ctime // created\n * long mtime // last modified\n * int version // version\n * int cversion // child version\n * int aversion // acl version\n * string ephemeralOwner // owner session id if ephemeral, 0 otw\n * int dataLength //length of the data in the node\n * int numChildren //number of children of this node\n * long pzxid // last modified children\n\n\nSession state machine is well described in Zookeeper docs, i.e.\n![here](http://hadoop.apache.org/zookeeper/docs/r3.3.1/images/state_dia.jpg \"State Diagram\")\n\n# Limitations\n* no zookeeper ACL support\n* no support for authentication\n* tests are not standalone, must run a zk server (easiest if you run at localhost:2181, if not you must pass the connect string to the tests)\n* only asynchronous ZK methods are implemented. Hey, this is node.js ... no sync calls are allowed\n\n# Implementation Notes\n\n### NOTE on Module Status (DDOPSON-2011-11-30):\n* I ported this module to Node v0.6.0. I did my best to retain compatibility with Node v0.4.x. File bugs if you find any.\n* I have also worked to normalized the API style to be more conformant with Node conventions. Again, I did my best to keep backwards compatibility with the old version. File bugs if you find any.\n* The test coverage is pretty spotty. It would be really great if someone converted the tests to Vows and / or using a mock instead of depending on a live ZK server. I can't test and don't really trust the \"promise\" stuff in this module, but the core module itself works and makes my tests pass on downstream dependencies.\n\nFixes:\n* Node v0.6.0 compatibility - There is no native EventEmitter class anymore. Need a JS shim.\n* Node v0.6.0 compatibility - MODULE_INIT macro just plain doesn't work. not sure why, but an init function works just fine.\n* Node v0.6.0 compatibility - 'sys' ==> 'util'\n* Node v0.6.0 compatibility - There was an issue with the EV_A macro in yield(); was able to comment it out without harming behavior\n* events should be strings like 'connect' instead of ZK.on_connected. follow convention here.\n* no sense in \"require('zookeeper').ZooKeeper\" instead of simply \"require('zookeeper')\"\n\nTODO:\n* convert error codes to the names of the constants (eg, ZOO_CONNECT_FAIL instead of -110).\n* method names should map to convention. The \"a_method\" pattern is quite redundant in node.\n* Init should be called \"connect\", and should take a callback. Forcing clients to use the events is awkward and error prone\n* Why do the watchers take two callbacks?\n\n\n### v0.2.x ==> v0.4.x Transition\nData coming out of ZooKeepr (in callbacks) will now default to being Buffer objects. The main ZK handle now has a boolean attribute called 'data_as_buffer', which defaults to true. If you are storing strings only, as was only allowed in the initial implementation, or you wish to have data in callbacks arrive as strings, you add 'data_as_buffer:false' to the init options, or add 'zk.data_as_buffer = false;' before using the handle. The behavior defaults to Buffer objects because this aligns more closely with ZooKeeper itself which uses byte arrays. They are interchangable on input, if the input is a Buffer it will be used directly, otherwise the toString() of the input is used (this will work with utf8 data as well) regardless of mode.\n\nWith the new Buffer changes in the 0.3+ and 0.4+ branches, these will be internal 'SlowBuffer' objects, and you should use Buffer.isBuffer if you are checking the type, as 'instanceof Buffer' will return false.\n\n### yfinkelstein's original implementation notes\n\n* Zookeeper C API library comes in 2 flavours: single-threaded and multi-threaded. For node.js, single-threaded library provides the most sense since all events coming from ZK responses have to be dispatched to the main JS thread.\n* The C++ code uses the same logging facility that ZK C API uses internally. Hence zk_log.h file checked into this project. The file is considered ZK internal and is not installed into /usr/local/include\n* Multiple simultaneous ZK connections are supported and tested\n* All ZK constants are exposed as read-only properties of the ZooKeeper function, like ZK.ZOO_EPHEMERAL\n* All ZK API methods including watchers are supported.\n* lib/zk_promise.js is an optional module that makes use of the very cool **node-promise** library;\n see tests/zk_test_shootout_promise.js for illustration of how it can simplify coding. Isn't the following looking nicer?\n\n```javascript\nzk_r.on_connected().\nthen (\n function (zkk){\n console.log (\"reader on_connected: zk=%j\", zkk);\n return zkk.create (\"/node.js2\", \"some value\", ZK.ZOO_SEQUENCE | ZK.ZOO_EPHEMERAL);\n }\n).then (\n function (path) {\n zk_r.context.path = path;\n console.log (\"node created path=%s\", path);\n return zk_r.w_get (path,\n function (type, state, path_w) { // this is a watcher\n console.log (\"watcher for path %s triggered\", path_w);\n deferred_watcher_triggered.resolve (path_w);\n }\n );\n }\n).then (\n function (stat_and_value) { // this is the response from w_get above\n console.log (\"get node: stat=%j, value=%s\", stat_and_value[0], stat_and_value[1]);\n deferred_watcher_ready.resolve (zk_r.context.path);\n return deferred_watcher_triggered;\n }\n).then (\n function () {\n console.log (\"zk_reader is finished\");\n process.nextTick( function () {\n zk_r.close ();\n });\n }\n);\n```\n\n* Also compare test/zk_test_watcher.js with test/zk_test_watcher_promise.js\n* tests/zk_master.js and tests/zk_worker.js illustrate launching multiple ZK client workers using webworker library. You have to install it first with **\"npm install webworker\"**\n\n# Building the module by hand\n-----\n\n```javascript\nnode-waf configure build [--zookeeper zookeeper-version|prefix-path|'']\n```\n\n- note: for more details on the zk c-client build process, see [here](http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#C+Binding \"Build C client\")\n- note: node_compat.h (ala node-png) handles Buffer changes from .2 to .3+, so you should be able to build against older node versions.\n- note: if you wish to build with a specific version of zookeeper C lib, use --zookeeper VERSION (will download/build it) or --zookeeper PATH (if you have downloaded it and possibly made changes etc.)\n- note: if you wish to link against an existing zookeeper lib: use --zoookeeper '', and put your lib/headers it in /usr/local/ (or edit the wscript appropriately)\n- note: if you are building on osx and you get a compile error regarding \"mmacosx-version-min\", you may need to edit the wscript and remove it (anyone with the answer please explain/fix if possible).\n- note: if you are building on a platform for which the options are not working, please add a specific elif for that platform and create a pull request.\n\n# Known Bugs & Issues\n\nDDOPSON-2011-11-30 - are these issues still relevant? unknown.\n\n- The lib will segfault if you try to use a ZooKeeper intance after the on_closed event is delivered (possibly as a result of session timeout etc.) YOU MAY NOT re-use the closed ZooKeeper instance. You should allocate a new one and initialize it as a completely new client. Any and all watchers from your first instance are lost, though they may fire (before the on_close) see below.\n- Any established watches may/will be fired once each when/if your client is expired by the ZK server, the input arguments are observed to be: type=-1, state=1, path=\"\". Care should be taken to handle this differently than a \"real\" watch event if that matters to your application.\n- Otherwise, it just works!\n\n# See Also\n\n- [http://hadoop.apache.org/zookeeper/releases.html](http://hadoop.apache.org/zookeeper/releases.html)\n- [http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#ZooKeeper+C+client+API](http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#ZooKeeper+C+client+API)\n- [http://github.com/kriszyp/node-promise](http://github.com/kriszyp/node-promise)\n- [http://github.com/pgriess/node-webworker](http://github.com/pgriess/node-webworker)\n\n# Acknowledgments\n\n- **[node-promise](http://github.com/kriszyp/node-promise \"node-promise\") by kriszyp** is a fantastic tool imho. I wish it was distributed as a module so that I could easily 'require' it rather then\n resort to distribution by copy.\n- **[node-webworker](http://github.com/pgriess/node-webworker \"node-webworker\") by pgriess** is used to spawn multiple ZK workers in one of the tests.\n\n# LICENSE\n\nSee [LICENSE-MIT.txt](./LICENSE-MIT.txt) file in the top level folder.\n\n# ORIGINAL AUTHOR\n\nYuri Finkelstein (yurif2003 at yahoo dot com)\n\nwith awesome contributions from:\n\nWoody Anderson (Woodya)\nDave Dopson (ddopson)\nRyan Phillips (rphillips)\nDavid Trejo (DTrejo)\n","maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}],"time":{"modified":"2012-07-02T08:01:33.174Z","created":"2012-07-02T08:01:28.175Z","3.4.1-2":"2012-07-02T08:01:33.174Z"},"author":{"name":"Yuri Finkelstein","email":"yurif2003@yahoo.com"},"repository":{"type":"git","url":"git://github.com/vincent-zhao/node-zookeeper.git"},"_id":"my-zookeeper","_rev":"1-2154098ac4211d6fe2f7aea218849d00"}ÿdocument-storeÿmuntz˜{"id":"muntz","rev":"1-24f5b143a592a10b087730e430493d3f","rev_tree":[{"pos":1,"ids":["24f5b143a592a10b087730e430493d3f",{"status":"available"},[]]}],"rev_map":{"1-24f5b143a592a10b087730e430493d3f":3926},"winningRev":"1-24f5b143a592a10b087730e430493d3f","deleted":false,"seq":3926}ÿby-sequenceÿ0000000000003926î {"name":"muntz","description":"Request connection mocking library","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"muntz","version":"0.0.1","description":"Request connection mocking library","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/.bin/tap test/test.js"},"repository":{"type":"git","url":"git://github.com/brianloveswords/muntz.git"},"keywords":["mocking","connection","express"],"author":{"name":"Brian J. Brennan"},"license":"http://wtfpl.org/","dependencies":{"underscore":"~1.3.3","mime":"~1.2.7"},"devDependencies":{"tap":"~0.3.0"},"readme":"http://wtfpl.org/\n","_id":"muntz@0.0.1","dist":{"shasum":"701602a67a41e258d073382475cf66991e6fdf43","tarball":"http://registry.npmjs.org/muntz/-/muntz-0.0.1.tgz"},"maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}]}},"readme":"http://wtfpl.org/\n","maintainers":[{"name":"brianloveswords","email":"brian@nyhacker.org"}],"time":{"modified":"2012-08-02T13:43:32.909Z","created":"2012-08-01T20:01:04.827Z","0.0.1":"2012-08-01T20:01:05.204Z"},"author":{"name":"Brian J. Brennan"},"repository":{"type":"git","url":"git://github.com/brianloveswords/muntz.git"},"users":{"fgribreau":true},"_id":"muntz","_rev":"1-24f5b143a592a10b087730e430493d3f"}ÿdocument-storeÿmountain›{"id":"mountain","rev":"1-d93f30963c3f417710c0b543a887295f","rev_tree":[{"pos":1,"ids":["d93f30963c3f417710c0b543a887295f",{"status":"available"},[]]}],"rev_map":{"1-d93f30963c3f417710c0b543a887295f":3925},"winningRev":"1-d93f30963c3f417710c0b543a887295f","deleted":false,"seq":3925}ÿby-sequenceÿ0000000000003925Ù {"name":"mountain","description":"Deliver backbone applications on the backend!","dist-tags":{"latest":"0.0.0alpha"},"versions":{"0.0.0alpha":{"author":{"name":"Ryan Munro","email":"munro.github@gmail.com","url":"http://0x0539.org"},"name":"mountain","description":"Deliver backbone applications on the backend!","version":"0.0.0alpha","homepage":"https://github.com/munro/mountain","repository":{"type":"git","url":"git://github.com/munro/mountain.git"},"main":"./server","scripts":{"test":"./node_modules/.bin/vows ./tests","start":"node server.js"},"dependencies":{"backbone":"0.9.2","browserify":"1.12.1","connect":"2.3.1","handlebars":"1.0.5beta","jquery":"1.7.2","jquery-browserify":"1.7.2","self":"0.2.4","underscore":"1.3.3"},"devDependencies":{},"license":"MIT","_npmUser":{"name":"munro","email":"x05x39@gmail.com"},"_id":"mountain@0.0.0alpha","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9b0220d0620e9ddd642aee135b758d968d2370f4","tarball":"http://registry.npmjs.org/mountain/-/mountain-0.0.0alpha.tgz"},"readme":"","maintainers":[{"name":"munro","email":"x05x39@gmail.com"}]}},"readme":"","maintainers":[{"name":"munro","email":"x05x39@gmail.com"}],"time":{"modified":"2012-06-08T07:17:41.502Z","created":"2012-06-08T07:17:39.766Z","0.0.0alpha":"2012-06-08T07:17:41.502Z"},"author":{"name":"Ryan Munro","email":"munro.github@gmail.com","url":"http://0x0539.org"},"repository":{"type":"git","url":"git://github.com/munro/mountain.git"},"_id":"mountain","_rev":"1-d93f30963c3f417710c0b543a887295f"}#ÿdocument-storeÿmount-collections¤{"id":"mount-collections","rev":"1-6af6754e6eafafff33254df50594471d","rev_tree":[{"pos":1,"ids":["6af6754e6eafafff33254df50594471d",{"status":"available"},[]]}],"rev_map":{"1-6af6754e6eafafff33254df50594471d":3924},"winningRev":"1-6af6754e6eafafff33254df50594471d","deleted":false,"seq":3924}ÿby-sequenceÿ0000000000003924²{"name":"mount-collections","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"mount-collections","version":"1.0.0","_id":"mount-collections@1.0.0","dist":{"shasum":"7eebbf90ac8514357eeaf3af465944901d8248a9","tarball":"http://registry.npmjs.org/mount-collections/-/mount-collections-1.0.0.tgz"},"readme":"","maintainers":[{"name":"xiongliding","email":"fairplay1986@gmail.com"}]}},"readme":"","maintainers":[{"name":"xiongliding","email":"fairplay1986@gmail.com"}],"time":{"modified":"2012-08-02T13:43:27.040Z","created":"2012-08-02T08:04:33.013Z","1.0.0":"2012-08-02T08:04:48.895Z"},"users":{"fgribreau":true},"_id":"mount-collections","_rev":"1-6af6754e6eafafff33254df50594471d"}$ÿdocument-storeÿmongoose-v2-compat¥{"id":"mongoose-v2-compat","rev":"1-e2dd0aa443d91e366e8b05cb685fb0c9","rev_tree":[{"pos":1,"ids":["e2dd0aa443d91e366e8b05cb685fb0c9",{"status":"available"},[]]}],"rev_map":{"1-e2dd0aa443d91e366e8b05cb685fb0c9":3923},"winningRev":"1-e2dd0aa443d91e366e8b05cb685fb0c9","deleted":false,"seq":3923}ÿby-sequenceÿ0000000000003923¡{"name":"mongoose-v2-compat","description":"Mongoose v2 compatibility for v3","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"name":"mongoose-v2-compat","description":"Mongoose v2 compatibility for v3","version":"0.0.1","dependencies":{},"scripts":{"test":"make test"},"devDependencies":{"mongoose":"3.x","mocha":"*"},"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/aheckmann/mongoose-v2-compat.git"},"_npmUser":{"name":"aaron","email":"aaron.heckmann+github@gmail.com"},"_id":"mongoose-v2-compat@0.0.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3904a0c23dbf1c2eac42310cbd3e2a2d1084f271","tarball":"http://registry.npmjs.org/mongoose-v2-compat/-/mongoose-v2-compat-0.0.1.tgz"},"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}]},"0.0.2":{"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"name":"mongoose-v2-compat","description":"Mongoose v2 compatibility for v3","version":"0.0.2","dependencies":{},"scripts":{"test":"make test"},"devDependencies":{"mongoose":"3.x","mocha":"*"},"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/aheckmann/mongoose-v2-compat.git"},"_npmUser":{"name":"aaron","email":"aaron.heckmann+github@gmail.com"},"_id":"mongoose-v2-compat@0.0.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"955692581343d91bb5cdcd5ceb4234022cbb5b74","tarball":"http://registry.npmjs.org/mongoose-v2-compat/-/mongoose-v2-compat-0.0.2.tgz"},"maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}]}},"readme":"#mongoose-v2-compat\n====================\n\nAdds a compatibility layer to Mongoose v3 to regain most of the API sugar from Mongoose v2.\n\n## install\n\n```\nnpm install mongoose-v2-compat\n```\n\nExample:\n\n```js\nrequire('mongoose-v2-compat');\n\n// now we can use all the old methods\nmongoose.connectSet('...');\n\nThing.where('tags').$in(array).asc('name').run(callback);\n```\n\n## Provided methods\n\n - Query#$or\n - Query#$nor\n - Query#$gt\n - Query#$gte\n - Query#$lt\n - Query#$lte\n - Query#$ne\n - Query#$in\n - Query#$nin\n - Query#$all\n - Query#$regex\n - Query#$size\n - Query#$maxDistance\n - Query#$mod\n - Query#$near\n - Query#$exists\n - Query#$elemMatch\n - Query#$within\n - Query#$box\n - Query#$center\n - Query#$centerSphere\n - Query#$slice\n - Query#run\n - Query#notEqualTo\n - Query#wherein\n - Query#fields\n - Query#asc\n - Query#desc\n - mongoose.createSetConnection\n - mongoose.connectSet\n\n## tests\n\nRun the tests with `make test`.\n\n[LICENSE](https://github.com/aheckmann/mongoose-v2-compat/blob/master/LICENSE)\n\n","maintainers":[{"name":"aaron","email":"aaron.heckmann+github@gmail.com"}],"time":{"modified":"2012-06-20T19:26:12.172Z","created":"2012-05-30T22:22:21.556Z","0.0.1":"2012-05-30T22:22:22.704Z","0.0.2":"2012-06-20T19:26:12.172Z"},"author":{"name":"Aaron Heckmann","email":"aaron.heckmann+github@gmail.com"},"repository":{"type":"git","url":"git://github.com/aheckmann/mongoose-v2-compat.git"},"_id":"mongoose-v2-compat","_rev":"1-e2dd0aa443d91e366e8b05cb685fb0c9"}ÿdocument-storeÿmongo-monitor {"id":"mongo-monitor","rev":"1-5b92483b93f7d8eaecf38fc3d63f89d5","rev_tree":[{"pos":1,"ids":["5b92483b93f7d8eaecf38fc3d63f89d5",{"status":"available"},[]]}],"rev_map":{"1-5b92483b93f7d8eaecf38fc3d63f89d5":3922},"winningRev":"1-5b92483b93f7d8eaecf38fc3d63f89d5","deleted":false,"seq":3922}ÿby-sequenceÿ0000000000003922Ð {"name":"mongo-monitor","description":"mongodb monitor","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.5":{"name":"mongo-monitor","description":"mongodb monitor","version":"0.1.5","keywords":["mongodb","monitor"],"author":{"name":"jifeng.zjd@taobao.com","email":"jifeng.zjd@taobao.com","url":"http://www.cnblogs.com/lengyuhong/"},"scripts":{"test":"make test"},"dependencies":{"urllib":"=0.2.4"},"devDependencies":{"should":">=0.4.2","mocha":">=1.0.0","jscoverage":"0.1.0"},"main":"index.js","engines":{"node":">= 0.6.7"},"license":"MIT","_npmUser":{"name":"jifeng.zjd","email":"jifeng.zjd@taobao.com"},"_id":"mongo-monitor@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fb6f5213687d96451b22fb3a1f508b44592819ef","tarball":"http://registry.npmjs.org/mongo-monitor/-/mongo-monitor-0.1.5.tgz"},"readme":"","maintainers":[{"name":"jifeng.zjd","email":"jifeng.zjd@taobao.com"}]}},"readme":"","maintainers":[{"name":"jifeng.zjd","email":"jifeng.zjd@taobao.com"}],"time":{"modified":"2012-07-02T08:31:56.286Z","created":"2012-07-02T08:31:52.652Z","0.1.5":"2012-07-02T08:31:56.286Z"},"author":{"name":"jifeng.zjd@taobao.com","email":"jifeng.zjd@taobao.com","url":"http://www.cnblogs.com/lengyuhong/"},"_id":"mongo-monitor","_rev":"1-5b92483b93f7d8eaecf38fc3d63f89d5"}"ÿdocument-storeÿmoment-component£{"id":"moment-component","rev":"1-cac1330c240f6d070e5cab7b80b7652b","rev_tree":[{"pos":1,"ids":["cac1330c240f6d070e5cab7b80b7652b",{"status":"available"},[]]}],"rev_map":{"1-cac1330c240f6d070e5cab7b80b7652b":3921},"winningRev":"1-cac1330c240f6d070e5cab7b80b7652b","deleted":false,"seq":3921}ÿby-sequenceÿ0000000000003921”O{"name":"moment-component","description":"Parse, manipulate, and display dates.","dist-tags":{"latest":"1.7.0"},"versions":{"1.7.0":{"name":"moment-component","version":"1.7.0","description":"Parse, manipulate, and display dates.","homepage":"http://momentjs.com","author":{"name":"Tim Wood","email":"washwithcare@gmail.com","url":"http://timwoodcreates.com/"},"contributors":[{"name":"Rocky Meza","url":"http://rockymeza.com"}],"keywords":["moment","date","time","parse","format","validate","i18n","l10n","ender"],"main":"./moment.js","engines":{"node":"*"},"repository":{"type":"git","url":"https://github.com/timrwood/moment.git"},"bugs":{"url":"https://github.com/timrwood/moment/issues"},"licenses":[{"type":"MIT"}],"devDependencies":{"jshint":"latest","uglify-js":"latest","nodeunit":"latest"},"scripts":{"test":"make test"},"ender":"./ender.js","component":{"scripts":{"moment.js":"./index.js"}},"_id":"moment-component@1.7.0","dist":{"shasum":"18999a33a875cbdde2c53092f982e975e6120a5b","tarball":"http://registry.npmjs.org/moment-component/-/moment-component-1.7.0.tgz"},"maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}]}},"readme":"[Moment.js](http://momentjs.com)\n================================\n\nA lightweight javascript date library for parsing, validating, manipulating, and formatting dates.\n\n### [Check out the website](http://momentjs.com)\n\n### [Read the documentation](http://momentjs.com/docs/)\n\n### [Run the unit tests](http://momentjs.com/test/)\n\n\nUpgrading to 1.6.0\n==================\n\nThere are a few things being deprecated in the 1.6.0 release.\n\n1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.\n\n2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.\n\n3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).\n\n\nContributing\n============\n\nTo contribute, fork the library and install these npm packages.\n\n npm install jshint uglify-js nodeunit\n\nYou can add tests to the files in `/test/moment` or add a new test file if you are adding a new feature.\n\nTo run the tests, do `make test` to run all tests, `make test-moment` to test the core library, and `make test-lang` to test all the languages.\n\nTo check the filesize, you can use `make size`.\n\nTo minify all the files, use `make moment` to minify moment, `make langs` to minify all the lang files, or just `make` to minfy everything.\n\nIf your code passes the unit tests (including the ones you wrote), submit a pull request.\n\nSubmitting pull requests\n========================\n\nMoment.js now uses [git-flow](https://github.com/nvie/gitflow). If you're not familiar with git-flow, please read up on it, you'll be glad you did.\n\nWhen submitting new features, please create a new feature branch using `git flow feature start ` and submit the pull request to the `develop` branch.\n\nPull requests for enhancements for features should be submitted to the `develop` branch as well.\n\nWhen submitting a bugfix, please check if there is an existing bugfix branch. If the latest stable version is `1.5.0`, the bugfix branch would be `hotfix/1.5.1`. All pull requests for bug fixes should be on a `hotfix` branch, unless the bug fix depends on a new feature.\n\nThe `master` branch should always have the latest stable version. When bugfix or minor releases are needed, the develop/hotfix branch will be merged into master and released.\n\nChangelog\n=========\n\n\n### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)\n\nAdded `moment.fn.endOf()` and `moment.fn.startOf()`.\n\nAdded validation via `moment.fn.isValid()`.\n\nMade formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions\n\nAdd support for month/weekday callbacks in `moment.fn.format()`\n\nAdded instance specific languages.\n\nAdded two letter weekday abbreviations with the formatting token `dd`.\n\nVarious language updates.\n\nVarious bugfixes.\n\n### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)\n\nAdded Durations.\n\nRevamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).\n\nAdded support for millisecond parsing and formatting tokens (S SS SSS)\n\nAdded a getter for `moment.lang()`\n\nVarious bugfixes.\n\n### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)\n\nAdded UTC mode.\n\nAdded automatic ISO8601 parsing.\n\nVarious bugfixes.\n\n### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)\n\nAdded `moment.fn.toDate` as a replacement for `moment.fn.native`.\n\nAdded `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.\n\nVarious bugfixes.\n\n### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)\n\nAdded support for parsing month names in the current language.\n\nAdded escape blocks for parsing tokens.\n\nAdded `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.\n\nAdded `moment.fn.day` as a setter.\n\nVarious bugfixes\n\n### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)\n\nAdded timezones to parser and formatter.\n\nAdded `moment.fn.isDST`.\n\nAdded `moment.fn.zone` to get the timezone offset in minutes.\n\n### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)\n\nVarious bugfixes\n\n### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)\n\nAdded time specific diffs (months, days, hours, etc)\n\n### 1.1.0\n\nAdded `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)\n\nFixed [issue 31](https://github.com/timrwood/moment/pull/31).\n\n### 1.0.1\n\nAdded `moment.version` to get the current version.\n\nRemoved `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)\n\n### 1.0.0\n\nAdded convenience methods for getting and setting date parts.\n\nAdded better support for `moment.add()`.\n\nAdded better lang support in NodeJS.\n\nRenamed library from underscore.date to Moment.js\n\n### 0.6.1\n\nAdded Portuguese, Italian, and French language support\n\n### 0.6.0\n\nAdded _date.lang() support.\nAdded support for passing multiple formats to try to parse a date. _date(\"07-10-1986\", [\"MM-DD-YYYY\", \"YYYY-MM-DD\"]);\nMade parse from string and single format 25% faster.\n\n### 0.5.2 \n\nBuxfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).\n\n### 0.5.1 \n\nBuxfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).\n\n### 0.5.0\n\nDropped the redundant `_date.date()` in favor of `_date()`.\nRemoved `_date.now()`, as it is a duplicate of `_date()` with no parameters.\nRemoved `_date.isLeapYear(yearNuumber)`. Use `_date([yearNumber]).isLeapYear()` instead.\nExposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.\n\n### 0.4.1 \n\nAdded date input formats for input strings.\n\n### 0.4.0 \n\nAdded underscore.date to npm. Removed dependancies on underscore.\n\n### 0.3.2\n\nAdded `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.\n\n### 0.3.1\n\nCleaned up the namespace. Moved all date manipulation and display functions to the _.date() object. \n\n### 0.3.0\n\nSwitched to the Underscore methodology of not mucking with the native objects' prototypes.\nMade chaining possible.\n\n### 0.2.1\n\nChanged date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.\nAdded `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.\n\n### 0.2.0\n\nChanged function names to be more concise.\nChanged date format from php date format to custom format.\n\n### 0.1.0\n\nInitial release\n\nLicense\n=======\n\nMoment.js is freely distributable under the terms of the MIT license.\n\nCopyright (c) 2011-2012 Tim Wood\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR AòYXðùNY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2012-08-03T21:12:33.474Z","created":"2012-08-03T21:12:31.864Z","1.7.0":"2012-08-03T21:12:33.474Z"},"author":{"name":"Tim Wood","email":"washwithcare@gmail.com","url":"http://timwoodcreates.com/"},"repository":{"type":"git","url":"https://github.com/timrwood/moment.git"},"_id":"moment-component","_rev":"1-cac1330c240f6d070e5cab7b80b7652b"} ÿdocument-storeÿmodule_resolve¡{"id":"module_resolve","rev":"1-4fde18334cc7385df0daca7444f18a45","rev_tree":[{"pos":1,"ids":["4fde18334cc7385df0daca7444f18a45",{"status":"available"},[]]}],"rev_map":{"1-4fde18334cc7385df0daca7444f18a45":3920},"winningRev":"1-4fde18334cc7385df0daca7444f18a45","deleted":false,"seq":3920}ÿby-sequenceÿ0000000000003920Ç {"name":"module_resolve","description":"Adds module-relative 'resolve' method to the Module class","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"module_resolve","version":"0.1.1","description":"Adds module-relative 'resolve' method to the Module class","main":"./resolve","author":{"name":"Liam Doherty"},"dependencies":{},"engines":{"node":">=0.6"},"_npmUser":{"name":"lfdoherty","email":"lfdoherty@gmail.com"},"_id":"module_resolve@0.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"ac0b011be3e0775418976a07af1705695132683b","tarball":"http://registry.npmjs.org/module_resolve/-/module_resolve-0.1.1.tgz"},"maintainers":[{"name":"lfdoherty","email":"lfdoherty@gmail.com"}]}},"readme":"Adds a resolve(path) method to the Module prototype.\n\nNode.js has a pretty powerful and intuitive resource path resolution algorithm, which is useful for other things besides source files. To use it for looking-up other files, we need to be able to lookup relative to the module from which the file is being sought. This patches in that functionality using private methods of the Module object, so it's not an ideal solution.\n\nA better solution would be for node.js to integrate this method. Even better would be if it provided a async implementation as well.\n\nSee [bug 3285](https://github.com/joyent/node/issues/3285).\n","maintainers":[{"name":"lfdoherty","email":"lfdoherty@gmail.com"}],"time":{"modified":"2012-07-12T02:23:25.497Z","created":"2012-07-12T02:23:24.013Z","0.1.1":"2012-07-12T02:23:25.497Z"},"author":{"name":"Liam Doherty"},"_id":"module_resolve","_rev":"1-4fde18334cc7385df0daca7444f18a45"}*ÿdocument-storeÿmocha-multiline-reporter«{"id":"mocha-multiline-reporter","rev":"1-c6275532bec1feeafa54b7e10c2322b6","rev_tree":[{"pos":1,"ids":["c6275532bec1feeafa54b7e10c2322b6",{"status":"available"},[]]}],"rev_map":{"1-c6275532bec1feeafa54b7e10c2322b6":3919},"winningRev":"1-c6275532bec1feeafa54b7e10c2322b6","deleted":false,"seq":3919}ÿby-sequenceÿ0000000000003919† {"name":"mocha-multiline-reporter","description":"A multi-line reporter for mocha.","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"mocha-multiline-reporter","version":"0.2.0","description":"A multi-line reporter for mocha.","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/fizker/mocha-multiline-reporter.git"},"devDependencies":{"chai":"1.1.1","mocha":"1.3.0"},"keywords":["mocha","reporter","multi","line"],"author":{"name":"Benjamin Horsleben"},"license":"WTFPL","_id":"mocha-multiline-reporter@0.2.0","dist":{"shasum":"a5526265313f69a1b4c5c4c58b0f39f4479f702e","tarball":"http://registry.npmjs.org/mocha-multiline-reporter/-/mocha-multiline-reporter-0.2.0.tgz"},"maintainers":[{"name":"fizker","email":"benjamin@fizkerinc.dk"}]}},"readme":"multiline-reporter\n==================\n\nA multi-line reporter for mocha, based on the dot-reporter from mocha.\n\nThe purpose of this reporter is to make error-messages containing significant\nwhitespace more readable.\n\nIf given a string such as `Expected \"abc\\ndefgh\\ni\" to equal \"abc\\ndefgh\\nij\"`,\nit will print something like this:\n\n\tExpected | abc | to equal | abc |\n\t | defgh | | defgh |\n\t | i | | ij |\n","maintainers":[{"name":"fizker","email":"benjamin@fizkerinc.dk"}],"time":{"modified":"2012-07-17T20:38:45.487Z","created":"2012-07-17T20:38:43.980Z","0.2.0":"2012-07-17T20:38:45.487Z"},"author":{"name":"Benjamin Horsleben"},"repository":{"type":"git","url":"git://github.com/fizker/mocha-multiline-reporter.git"},"_id":"mocha-multiline-reporter","_rev":"1-c6275532bec1feeafa54b7e10c2322b6"}ÿdocument-storeÿmkdirpsš{"id":"mkdirps","rev":"1-63d6a118e18cb9a87e10d3d68d6d1c97","rev_tree":[{"pos":1,"ids":["63d6a118e18cb9a87e10d3d68d6d1c97",{"status":"available"},[]]}],"rev_map":{"1-63d6a118e18cb9a87e10d3d68d6d1c97":3918},"winningRev":"1-63d6a118e18cb9a87e10d3d68d6d1c97","deleted":false,"seq":3918}ÿby-sequenceÿ0000000000003918Á{"name":"mkdirps","description":"Make multiple directories (each recursively using mkdir -p) all in parallel","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"mkdirps","version":"0.0.0","description":"Make multiple directories (each recursively using mkdir -p) all in parallel","main":"index.js","scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/EvanOxfeld/node-mkdirps.git"},"keywords":["mkdir","directory"],"author":{"name":"Evan Oxfeld"},"license":"MIT","dependencies":{"async":"~0.1.22","mkdirp":"~0.3.3"},"devDependencies":{"tap":"~0.2.5"},"readme":"node-mkdirps\n============\n\nMake multiple directories (each recursively using mkdir -p) all in parallel\n\nQuick Example\n=============\n\n var mkdirps = require('mkdirps');\n var dirs = ['/tmp/foo', '/tmp/baz', '/tmp/bar'];\n\n mkdirps(dirs, function (err) {\n if (err) {\n return console.error(err);\n }\n console.log('dirs created!');\n });\n\nInstallation\n============\n\n npm install mkdirps\n\nLicense\n=======\n\nMIT\n\nShout Outs\n=======\n\nSpecial thanks to @substack for [mkdirp](https://github.com/substack/node-mkdirp/) of which this module wraps and to Sean Pilkenton for his module naming skills.\n","_id":"mkdirps@0.0.0","dist":{"shasum":"d2b8a9cb64cfb3682754c03ec9bd6f50c4ae7761","tarball":"http://registry.npmjs.org/mkdirps/-/mkdirps-0.0.0.tgz"},"maintainers":[{"name":"EvanOxfeld","email":"eoxfeld@gmail.com"}]}},"readme":"node-mkdirps\n============\n\nMake multiple directories (each recursively using mkdir -p) all in parallel\n\nQuick Example\n=============\n\n var mkdirps = require('mkdirps');\n var dirs = ['/tmp/foo', '/tmp/baz', '/tmp/bar'];\n\n mkdirps(dirs, function (err) {\n if (err) {\n return console.error(err);\n }\n console.log('dirs created!');\n });\n\nInstallation\n============\n\n npm install mkdirps\n\nLicense\n=======\n\nMIT\n\nShout Outs\n=======\n\nSpecial thanks to @substack for [mkdirp](https://github.com/substack/node-mkdirp/) of which this module wraps and to Sean Pilkenton for his module naming skills.\n","maintainers":[{"name":"EvanOxfeld","email":"eoxfeld@gmail.com"}],"time":{"modified":"2012-07-18T03:14:59.150Z","created":"2012-07-18T03:14:58.775Z","0.0.0":"2012-07-18T03:14:59.150Z"},"author":{"name":"Evan Oxfeld"},"repository":{"type":"git","url":"git://github.com/EvanOxfeld/node-mkdirps.git"},"_id":"mkdirps","_rev":"1-63d6a118e18cb9a87e10d3d68d6d1c97"}ÿdocument-storeÿmjolnirš{"id":"mjolnir","rev":"1-c15286206db364476942d15d24056ef7","rev_tree":[{"pos":1,"ids":["c15286206db364476942d15d24056ef7",{"status":"available"},[]]}],"rev_map":{"1-c15286206db364476942d15d24056ef7":3917},"winningRev":"1-c15286206db364476942d15d24056ef7","deleted":false,"seq":3917}ÿby-sequenceÿ0000000000003917” {"name":"mjolnir","description":"HTML 5 static JS lib","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"mjolnir","preferGlobal":false,"version":"0.0.1","author":{"name":"ooyala x-man"},"description":"HTML 5 static JS lib","contributors":[{"name":"Rui"}],"repository":{"type":"git","url":"ssh://git@git.corp.ooyala.com/mjolnir.git"},"dependencies":{"node-asset-builder":"0.0.6","bucket":"0.0.1","jquery":"1.6.3","coffee-script":"1.2.0","uglify-js":"1.2.6","express":"2.5.9","underscore":"1.3.2","gm":"1.2.0","findit":"0.1.2","requirejs":"1.0.7","mocha":"1.0.1","expect.js":"0.1.2","clean-css":"0.3.2","nib":"0.4.0","stylus":"0.25.0","mkdirp":"0.3.1"},"noAnalyze":true,"devDependencies":{},"bundleDependencies":[],"license":"MIT","engine":{"node":">=0.6.8"},"_npmUser":{"name":"Ooyala","email":"chrisl@ooyala.com"},"_id":"mjolnir@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"e0dec6aa7f1e36f4c00125a8026bccb8188a7d01","tarball":"http://registry.npmjs.org/mjolnir/-/mjolnir-0.0.1.tgz"},"readme":"","maintainers":[{"name":"Ooyala","email":"chrisl@ooyala.com"}]}},"readme":"","maintainers":[{"name":"Ooyala","email":"chrisl@ooyala.com"}],"time":{"modified":"2012-04-23T19:03:59.682Z","created":"2012-04-23T19:03:58.543Z","0.0.1":"2012-04-23T19:03:59.682Z"},"author":{"name":"ooyala x-man"},"repository":{"type":"git","url":"ssh://git@git.corp.ooyala.com/mjolnir.git"},"_id":"mjolnir","_rev":"1-c15286206db364476942d15d24056ef7"}ÿdocument-storeÿmicro-logœ{"id":"micro-log","rev":"1-897209f2387ba0067b96b2b61d88ec1a","rev_tree":[{"pos":1,"ids":["897209f2387ba0067b96b2b61d88ec1a",{"status":"available"},[]]}],"rev_map":{"1-897209f2387ba0067b96b2b61d88ec1a":3916},"winningRev":"1-897209f2387ba0067b96b2b61d88ec1a","deleted":false,"seq":3916}ÿby-sequenceÿ0000000000003916µ{"name":"micro-log","description":"micro logger library","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"micro-log","version":"0.0.1","description":"micro logger library","main":"lib/micro-log.js","directories":{"test":"test"},"scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git://github.com/cho45/micro-log.js.git"},"keywords":["log","logger"],"author":{"name":"cho45"},"license":"MIT","readme":"micro-log.js\n============\n\nmicro logger library for both browsers and node.js\n\n\nSYNOPSYS\n========\n\n```\nlog.setLevel('info');\n\nlog.warn('foobar'); // output to console.log by default\nlog.info('foobar');\nlog.debug('aaaaaa'); // does not ouput\n```\n\nSend JavaScript errors to server:\n\n```\nlog.LOG = function (message) {\n\tvar img = new Image();\n\timg.src = '/api/report_js_error?' +\n\t\t'&loc=' + encodeURIComponent(location.href) +\n\t\t'&msg=' + encodeURIComponent(message);\n};\n```\n","_id":"micro-log@0.0.1","dist":{"shasum":"3a7cb5f24eae89e990bf6be24bf1f2f1ee53fdc8","tarball":"http://registry.npmjs.org/micro-log/-/micro-log-0.0.1.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"cho45","email":"cho45@lowreal.net"},"maintainers":[{"name":"cho45","email":"cho45@lowreal.net"}]}},"readme":"micro-log.js\n============\n\nmicro logger library for both browsers and node.js\n\n\nSYNOPSYS\n========\n\n```\nlog.setLevel('info');\n\nlog.warn('foobar'); // output to console.log by default\nlog.info('foobar');\nlog.debug('aaaaaa'); // does not ouput\n```\n\nSend JavaScript errors to server:\n\n```\nlog.LOG = function (message) {\n\tvar img = new Image();\n\timg.src = '/api/report_js_error?' +\n\t\t'&loc=' + encodeURIComponent(location.href) +\n\t\t'&msg=' + encodeURIComponent(message);\n};\n```\n","maintainers":[{"name":"cho45","email":"cho45@lowreal.net"}],"time":{"modified":"2012-08-23T14:02:25.643Z","created":"2012-08-23T14:02:21.552Z","0.0.1":"2012-08-23T14:02:25.643Z"},"author":{"name":"cho45"},"repository":{"type":"git","url":"git://github.com/cho45/micro-log.js.git"},"_id":"micro-log","_rev":"1-897209f2387ba0067b96b2b61d88ec1a"}ÿdocument-storeÿmd-toc-filter {"id":"md-toc-filter","rev":"1-82604318ffa9b4d938226a997ff5fc1d","rev_tree":[{"pos":1,"ids":["82604318ffa9b4d938226a997ff5fc1d",{"status":"available"},[]]}],"rev_map":{"1-82604318ffa9b4d938226a997ff5fc1d":3915},"winningRev":"1-82604318ffa9b4d938226a997ff5fc1d","deleted":false,"seq":3915}ÿby-sequenceÿ0000000000003915œ{"name":"md-toc-filter","description":"This is a small node script to preprocess and create table of contents for markdown documents. It examines the document you pass to it, creates a table of contents based on your titles, and inserts it instead of every line that contains '@@TOC@@'","dist-tags":{"latest":"0.9.0"},"versions":{"0.9.0":{"name":"md-toc-filter","version":"0.9.0","description":"This is a small node script to preprocess and create table of contents for markdown documents. It examines the document you pass to it, creates a table of contents based on your titles, and inserts it instead of every line that contains '@@TOC@@'","keywords":["table of contents","toc","contents"],"homepage":"https://github.com/aslushnikov/table-of-contents-preprocessor","bugs":{"name":"https://github.com/aslushnikov/table-of-contents-preprocessor/issues"},"author":{"name":"Andrey Lushnikov","email":"aslushnikov@gmail.com","url":"http://aslushnikov.com"},"files":["toc.js","README.md"],"bin":{"md-toc-filter":"./toc.js"},"repository":{"type":"git","url":"git://github.com/aslushnikov/table-of-contents-preprocessor.git"},"engines":{"node":">=0.6.14"},"private":false,"_npmUser":{"name":"Andrey Lushnikov","email":"aslushnikov@gmail.com"},"_id":"md-toc-filter@0.9.0","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"23d7b66d4df6926be9b9b371b5fe1e7aeecb8fce","tarball":"http://registry.npmjs.org/md-toc-filter/-/md-toc-filter-0.9.0.tgz"},"maintainers":[{"name":"Andrey Lushnikov","email":"aslushnikov@gmail.com"}]}},"readme":"# Table of Contents Generator\n\n## About\n\nSmall and simple README.md preprocessor for creating table of contents.\n\nSay you've got a README.md file with lots of information, and you want to\ncreate a table of contents with reference links\n\nThis script will help you to do so. It extracts information of titles\nin a given file, and inserts a formatted table of contents in the position,\nspecified by \"@@TOC@@\" line.\n\n## Usage\n\n```\nnode toc.js README.md > NEW_README.md\n```\n\n## Example\n\n```\n# Foo Great Project\n\nHey, this is my project\n\n## Contents\n@@TOC@@\n\n## About\n\nSome info about it\n\n## Authors\n\nMy picture here\n```\n\nWill be transformed to\n```\n# Foo Great Project\n\nHey, this is my project\n\n## Contents\n- [Foo Great Project](#foo-great-project)\n - [Contents](#contents)\n - [About](#about)\n - [Authors](#authors)\n\n## About\n\nSome info about it\n\n## Authors\n\nMy picture here\n```\n\nAfter the preprocessing you're free to modify the result as you wish.\nFor example, it makes sense to remove reference to table of contents from\ntable of contents\n\n## Limitations\n\nThe script doesn't support underlined titles like this\n```\nMy Title\n========\n```\n\nUse sharps instead\n```\n# My Title\n```\n","maintainers":[{"name":"Andrey Lushnikov","email":"aslushnikov@gmail.com"}],"time":{"modified":"2012-05-12T09:51:52.509Z","created":"2012-05-12T09:51:50.470Z","0.9.0":"2012-05-12T09:51:52.509Z"},"author":{"name":"Andrey Lushnikov","email":"aslushnikov@gmail.com","url":"http://aslushnikov.com"},"repository":{"type":"git","url":"git://github.com/aslushnikov/table-of-contents-preprocessor.git"},"_id":"md-toc-filter","_rev":"1-82604318ffa9b4d938226a997ff5fc1d"}ÿdocument-storeÿlivereloadedŸ{"id":"livereloaded","rev":"1-5ded22f49470bf2c7f7fafb3c404e1ca","rev_tree":[{"pos":1,"ids":["5ded22f49470bf2c7f7fafb3c404e1ca",{"status":"available"},[]]}],"rev_map":{"1-5ded22f49470bf2c7f7fafb3c404e1ca":3914},"winningRev":"1-5ded22f49470bf2c7f7fafb3c404e1ca","deleted":false,"seq":3914}ÿby-sequenceÿ0000000000003914… {"name":"livereloaded","description":"LiveReload server","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"livereloaded","description":"LiveReload server","version":"0.0.1","author":{"name":"Chris Khoo"},"repository":{"type":"git","url":"git://github.com/khoomeister/livereloaded.git"},"main":"./livereloaded.js","dependencies":{"websocket":"~1.0.6"},"engines":{"node":">=0.6.18"},"_npmUser":{"name":"khoomeister","email":"chris.khoo@gmail.com"},"_id":"livereloaded@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e535970031769aa6f3e102827516634b4b26cf4f","tarball":"http://registry.npmjs.org/livereloaded/-/livereloaded-0.0.1.tgz"},"maintainers":[{"name":"khoomeister","email":"chris.khoo@gmail.com"}]}},"readme":"livereloaded\n============\n\nAn implementation of the LiveReload server in Node.js.\n\nInstall the browser plugin and read more about the project at [mockko/livereload](https://github.com/mockko/livereload).\n\nCredits to Joshua Peek for original code!\n\n# License\n\nReleased under the MIT license. See `LICENSE` for details.","maintainers":[{"name":"khoomeister","email":"chris.khoo@gmail.com"}],"time":{"modified":"2012-06-14T01:15:10.430Z","created":"2012-06-14T01:15:08.859Z","0.0.1":"2012-06-14T01:15:10.430Z"},"author":{"name":"Chris Khoo"},"repository":{"type":"git","url":"git://github.com/khoomeister/livereloaded.git"},"_id":"livereloaded","_rev":"1-5ded22f49470bf2c7f7fafb3c404e1ca"}ÿdocument-storeÿlinkedin›{"id":"linkedin","rev":"1-4cc64d5961ae81529615d7e40acbbc52","rev_tree":[{"pos":1,"ids":["4cc64d5961ae81529615d7e40acbbc52",{"status":"available"},[]]}],"rev_map":{"1-4cc64d5961ae81529615d7e40acbbc52":3913},"winningRev":"1-4cc64d5961ae81529615d7e40acbbc52","deleted":false,"seq":3913}ÿby-sequenceÿ0000000000003913§{"name":"linkedin","description":"The absolute easies way to enable node.js for LinkedIn rest api. Includes runnable demo by Harald Rudell.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"linkedin","description":"The absolute easies way to enable node.js for LinkedIn rest api. Includes runnable demo by Harald Rudell.","version":"0.0.1","contributors":[{"name":"Harald Rudell","email":"harald@allgoodapps.com","url":"http://blog.haraldrudell.com"}],"repository":{"type":"git","url":"git://github.com/haraldrudell/linkedin.git"},"dependencies":{"oauth":">= 0.7.0"},"main":"./lib/linkedin","_npmUser":{"name":"haraldrudell","email":"harald@therudells.com"},"_id":"linkedin@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"87b79cfa4cd50066968d5091e958c4cceddba606","tarball":"http://registry.npmjs.org/linkedin/-/linkedin-0.0.1.tgz"},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}]},"0.0.2":{"name":"linkedin","description":"The absolute easies way to enable node.js for LinkedIn rest api. Includes runnable demo by Harald Rudell.","author":{"name":"Harald Rudell","email":"harald@allgoodapps.com"},"version":"0.0.2","contributors":[{"name":"Harald Rudell","email":"harald@allgoodapps.com","url":"http://blog.haraldrudell.com"}],"repository":{"type":"git","url":"git://github.com/haraldrudell/linkedin.git"},"dependencies":{"oauth":">= 0.7.0"},"main":"./lib/linkedin","_npmUser":{"name":"haraldrudell","email":"harald@therudells.com"},"_id":"linkedin@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"1413ce78d2affefc0fe12bf5e451895cb48a3109","tarball":"http://registry.npmjs.org/linkedin/-/linkedin-0.0.2.tgz"},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}]}},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}],"time":{"modified":"2012-04-24T03:15:54.595Z","created":"2012-04-16T00:46:27.505Z","0.0.1":"2012-04-16T00:46:28.914Z","0.0.2":"2012-04-24T03:15:54.595Z"},"repository":{"type":"git","url":"git://github.com/haraldrudell/linkedin.git"},"author":{"name":"Harald Rudell","email":"harald@allgoodapps.com"},"_id":"linkedin","_rev":"1-4cc64d5961ae81529615d7e40acbbc52"}"ÿdocument-storeÿlink-emperor-api£{"id":"link-emperor-api","rev":"1-c74ad15f3f095c8c7de0b14862a905a9","rev_tree":[{"pos":1,"ids":["c74ad15f3f095c8c7de0b14862a905a9",{"status":"available"},[]]}],"rev_map":{"1-c74ad15f3f095c8c7de0b14862a905a9":3912},"winningRev":"1-c74ad15f3f095c8c7de0b14862a905a9","deleted":false,"seq":3912}ÿby-sequenceÿ0000000000003912í {"name":"link-emperor-api","description":"A simple wrapper around the LinkEmperor API","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"link-emperor-api","version":"0.1.0","author":{"name":"Brian Bommarito","email":"brian@linkemperor.com"},"description":"A simple wrapper around the LinkEmperor API","main":"./main","dependencies":{"dom-js":"0.0.9","request":"~2.9.203"},"_npmUser":{"name":"bbommarito","email":"brian@linkemperor.com"},"_id":"link-emperor-api@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"91c56e61c7fa97b0bdd5d760692f2ebd816f054a","tarball":"http://registry.npmjs.org/link-emperor-api/-/link-emperor-api-0.1.0.tgz"},"readme":"","maintainers":[{"name":"bbommarito","email":"brian@linkemperor.com"}],"directories":{}}},"readme":"","maintainers":[{"name":"bbommarito","email":"brian@linkemperor.com"}],"time":{"modified":"2012-07-11T23:01:01.194Z","created":"2012-07-11T22:33:53.267Z","0.3.0":"2012-07-11T22:33:53.735Z","0.1.0":"2012-07-11T23:00:17.697Z"},"author":{"name":"Brian Bommarito","email":"brian@linkemperor.com"},"_id":"link-emperor-api","_rev":"1-c74ad15f3f095c8c7de0b14862a905a9"}&ÿdocument-storeÿlight-node-zookeeper§{"id":"light-node-zookeeper","rev":"1-a5d5799cb58a59541dae2bd7016a4dc2","rev_tree":[{"pos":1,"ids":["a5d5799cb58a59541dae2bd7016a4dc2",{"status":"available"},[]]}],"rev_map":{"1-a5d5799cb58a59541dae2bd7016a4dc2":3911},"winningRev":"1-a5d5799cb58a59541dae2bd7016a4dc2","deleted":false,"seq":3911}ÿby-sequenceÿ0000000000003911ñj{"name":"light-node-zookeeper","description":"small node zookeeper","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"light-node-zookeeper","description":"small node zookeeper","version":"0.1.0","author":{"name":"yixuan","url":"yixuan.zzq@taobao.com"},"contributors":[],"repository":{"url":""},"keywords":["zookeeper","client"],"dependencies":{"webworker":">=0.8.2","underscore":"*","async":"~0.1.18"},"devDependencies":{"log4js":"~0.4.3"},"main":"lib/index","directories.lib":"build/default/","scripts":{"build":"node-waf configure build","test":"pushd test; ./test; popd","doc":"node-waf doc","preinstall":"node-waf clean || (exit 0); node-waf configure build"},"engines":{"node":"0.4.x || 0.6.x"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"light-node-zookeeper@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"c33eac6a01fccd9c9a1d82174eb4a5a033f4838d","tarball":"http://registry.npmjs.org/light-node-zookeeper/-/light-node-zookeeper-0.1.0.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]}},"readme":"# Overview\n\nnode-zookeeper - A Node.js client for Apache Zookeeper.\n\nThis module is implemented on top of the ZooKeeper C API; consult the [ZK Reference](http://zookeeper.apache.org/doc/r3.4.0/index.html) for further details on behavior.\n\n# Example\n\n```javascript\nvar ZooKeeper = require (\"zookeeper\");\nvar zk = new ZooKeeper({\n connect: \"localhost:2181\"\n ,timeout: 200000\n ,debug_level: ZooKeeper.ZOO_LOG_LEVEL_WARNING\n ,host_order_deterministic: false\n});\nzk.connect(function (err) {\n if(err) throw err;\n console.log (\"zk session established, id=%s\", zk.client_id);\n zk.a_create (\"/node.js1\", \"some value\", ZooKeeper.ZOO_SEQUENCE | ZooKeeper.ZOO_EPHEMERAL, function (rc, error, path) {\n if (rc != 0) {\n console.log (\"zk node create result: %d, error: '%s', path=%s\", rc, error, path);\n } else {\n console.log (\"created zk node %s\", path);\n process.nextTick(function () {\n zk.close ();\n });\n }\n });\n});\n```\n\n# API Reference\n\n### Methods ###\n\n* init ( options )\n* close ( )\n* a_create ( path, data, flags, path_cb )\n* mkdirp ( path, callback(Error) )\n* a_exists ( path, watch, stat_cb )\n* a_get ( path, watch, data_cb )\n* a_get_children ( path, watch, child_cb )\n* a_get_children2 ( path, watch, child2_cb )\n* a_set ( path, data, version, stat_cb )\n* a_delete`_` ( path, version, void_cb )\n * (trailing `_` is added to avoid conflict with reserved word `_delete_` since zk_promise.js strips off prefix `a_` from all operations)\n\n*The watcher methods are forward-looking subscriptions that can recieve multiple callbacks whenever a matching event occurs.*\n\n* aw_exists ( path, watch_cb, stat_cb )\n* aw_get ( path, watch_cb, data_cb )\n* aw_get_children ( path, watch_cb, child_cb )\n* aw_get_children2 ( path, watch_cb, child2_cb )\n\n### Callback Signatures ###\n\n * path_cb : function ( rc, error, path )\n * stat_cb : function ( rc, error, stat )\n * data_cb : function ( rc, error, stat, data )\n * child_cb : function ( rc, error, children )\n * child2_cb : function ( rc, error, children, stat )\n * void_cb : function ( rc, error )\n * watch_cb : function ( type, state, path )\n\n### Input Parameters ###\n\n * options : object. valid keys: { connect, timeout, debug_level, host_order_deterministic, data_as_buffer}\n * path : string\n * data : string or Buffer\n * flags : int32\n * version : int32\n * watch : boolean\n\n### Output Parameters ###\n\n * path is a string\n * data is either a Buffer (default), or a string (this is controlled by data_as_buffer = true/false)\n * children is an array of strings\n * rc is an int (error codes from zk api)\n * error is a string (error string from zk api)\n * type is an int event type (from zk api)\n * state is an int (state when the watcher fired from zk api)\n * stat is an object with the following attributes:\n * long czxid // created zxid\n * long mzxid // last modified zxid\n * long ctime // created\n * long mtime // last modified\n * int version // version\n * int cversion // child version\n * int aversion // acl version\n * string ephemeralOwner // owner session id if ephemeral, 0 otw\n * int dataLength //length of the data in the node\n * int numChildren //number of children of this node\n * long pzxid // last modified children\n\n\nSession state machine is well described in Zookeeper docs, i.e.\n![here](http://hadoop.apache.org/zookeeper/docs/r3.3.1/images/state_dia.jpg \"State Diagram\")\n\n# Limitations\n* no zookeeper ACL support\n* no support for authentication\n* tests are not standalone, must run a zk server (easiest if you run at localhost:2181, if not you must pass the connect string to the tests)\n* only asynchronous ZK methods are implemented. Hey, this is node.js ... no sync calls are allowed\n\n# Implementation Notes\n\n### NOTE on Module Status (DDOPSON-2011-11-30):\n* I ported this module to Node v0.6.0. I did my best to retain compatibility with Node v0.4.x. File bugs if you find any.\n* I have also worked to normalized the API style to be more conformant with Node conventions. Again, I did my best to keep backwards compatibility with the old version. File bugs if you find any.\n* The test coverage is pretty spotty. It would be really great if someone converted the tests to Vows and / or using a mock instead of depending on a live ZK server. I can't test and don't really trust the \"promise\" stuff in this module, but the core module itself works and makes my tests pass on downstream dependencies.\n\nFixes:\n* Node v0.6.0 compatibility - There is no native EventEmitter class anymore. Need a JS shim.\n* Node v0.6.0 compatibility - MODULE_INIT macro just plain doesn't work. not sure why, but an init function works just fine.\n* Node v0.6.0 compatibility - 'sys' ==> 'util'\n* Node v0.6.0 compatibility - There was an issue with the EV_A macro in yield(); was able to comment it out without harming behavior\n* events should be strings like 'connect' instead of ZK.on_connected. follow convention here.\n* no sense in \"require('zookeeper').ZooKeeper\" instead of simply \"require('zookeeper')\"\n\nTODO:\n* convert error codes to the names of the constants (eg, ZOO_CONNECT_FAIL instead of -110).\n* method names should map to convention. The \"a_method\" pattern is quite redundant in node.\n* Init should be called \"connect\", and should take a callback. Forcing clients to use the events is awkward and error prone\n* Why do the watchers take two callbacks?\n\n\n### v0.2.x ==> v0.4.x Transition\nData coming out of ZooKeepr (in callbacks) will now default to being Buffer objects. The main ZK handle now has a boolean attribute called 'data_as_buffer', which defaults to true. If you are storing strings only, as was only allowed in the initial implementation, or you wish to have data in callbacks arrive as strings, you add 'data_as_buffer:false' to the init options, or add 'zk.data_as_buffer = false;' before using the handle. The behavior defaults to Buffer objects because this aligns more closely with ZooKeeper itself which uses byte arrays. They are interchangable on input, if the input is a Buffer it will be used directly, otherwise the toString() of the input is used (this will work with utf8 data as well) regardless of mode.\n\nWith the new Buffer changes in the 0.3+ and 0.4+ branches, these will be internal 'SlowBuffer' objects, and you should use Buffer.isBuffer if you are checking the type, as 'instanceof Buffer' will return false.\n\n### yfinkelstein's original implementation notes\n\n* Zookeeper C API library comes in 2 flavours: single-threaded and multi-threaded. For node.js, single-threaded library provides the most sense since all events coming from ZK responses have to be dispatched to the main JS thread.\n* The C++ code uses the same logging facility that ZK C API uses internally. Hence zk_log.h file checked into this project. The file is considered ZK internal and is not installed into /usr/local/include\n* Multiple simultaneous ZK connections are supported and tested\n* All ZK constants are exposed as read-only properties of the ZooKeeper function, like ZK.ZOO_EPHEMERAL\n* All ZK API methods including watchers are supported.\n* lib/zk_promise.js is an optional module that makes use of the very cool **node-promise** library;\n see tests/zk_test_shootout_promise.js for illustration of how it can simplify coding. Isn't the following looking nicer?\n\n```javascript\nzk_r.on_connected().\nthen (\n function (zkk){\n console.log (\"reader on_connected: zk=%j\", zkk);\n return zkk.create (\"/node.js2\", \"some value\", ZK.ZOO_SEQUENCE | ZK.ZOO_EPHEMERAL);\n }\n).then (\n function (path) {\n zk_r.context.path = path;\n console.log (\"node created path=%s\", path);\n return zk_r.w_get (path,\n function (type, state, path_w) { // this is a watcher\n console.log (\"watcher for path %s triggered\", path_w);\n deferred_watcher_triggered.resolve (path_w);\n }\n );\n }\n).then (\n function (stat_and_value) { // this is the response from w_get above\n console.log (\"get node: stat=%j, value=%s\", stat_and_value[0], stat_and_value[1]);\n deferred_watcher_ready.resolve (zk_r.context.path);\n return deferred_watcher_triggered;\n }\n).then (\n function () {\n console.log (\"zk_reader is finished\");\n process.nextTick( function () {\n zk_r.close ();\n });\n }\n);\n```\n\n* Also compare test/zk_test_watcher.js with test/zk_test_watcher_promise.js\n* tests/zk_master.js and tests/zk_worker.js illustrate launching multiple ZK client workers using webworker library. You have to install it first with **\"npm install webworker\"**\n\n# Building the module by hand\n-----\n\n```javascript\nnode-waf configure build [--zookeeper zookeeper-version|prefix-path|'']\n```\n\n- note: for more details on the zk c-client build process,t1&‘ù see [here](http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#C+Binding \"Build C client\")\n- note: node_compat.h (ala node-png) handles Buffer changes from .2 to .3+, so you should be able to build against older node versions.\n- note: if you wish to build with a specific version of zookeeper C lib, use --zookeeper VERSION (will download/build it) or --zookeeper PATH (if you have downloaded it and possibly made changes etc.)\n- note: if you wish to link against an existing zookeeper lib: use --zoookeeper '', and put your lib/headers it in /usr/local/ (or edit the wscript appropriately)\n- note: if you are building on osx and you get a compile error regarding \"mmacosx-version-min\", you may need to edit the wscript and remove it (anyone with the answer please explain/fix if possible).\n- note: if you are building on a platform for which the options are not working, please add a specific elif for that platform and create a pull request.\n\n# Known Bugs & Issues\n\nDDOPSON-2011-11-30 - are these issues still relevant? unknown.\n\n- The lib will segfault if you try to use a ZooKeeper intance after the on_closed event is delivered (possibly as a result of session timeout etc.) YOU MAY NOT re-use the closed ZooKeeper instance. You should allocate a new one and initialize it as a completely new client. Any and all watchers from your first instance are lost, though they may fire (before the on_close) see below.\n- Any established watches may/will be fired once each when/if your client is expired by the ZK server, the input arguments are observed to be: type=-1, state=1, path=\"\". Care should be taken to handle this differently than a \"real\" watch event if that matters to your application.\n- Otherwise, it just works!\n\n# See Also\n\n- [http://hadoop.apache.org/zookeeper/releases.html](http://hadoop.apache.org/zookeeper/releases.html)\n- [http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#ZooKeeper+C+client+API](http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperProgrammers.html#ZooKeeper+C+client+API)\n- [http://github.com/kriszyp/node-promise](http://github.com/kriszyp/node-promise)\n- [http://github.com/pgriess/node-webworker](http://github.com/pgriess/node-webworker)\n\n# Acknowledgments\n\n- **[node-promise](http://github.com/kriszyp/node-promise \"node-promise\") by kriszyp** is a fantastic tool imho. I wish it was distributed as a module so that I could easily 'require' it rather then\n resort to distribution by copy.\n- **[node-webworker](http://github.com/pgriess/node-webworker \"node-webworker\") by pgriess** is used to spawn multiple ZK workers in one of the tests.\n\n# LICENSE\n\nSee [LICENSE-MIT.txt](./LICENSE-MIT.txt) file in the top level folder.\n\n# ORIGINAL AUTHOR\n\nYuri Finkelstein (yurif2003 at yahoo dot com)\n\nwith awesome contributions from:\n\nWoody Anderson (Woodya)\nDave Dopson (ddopson)\nRyan Phillips (rphillips)\nDavid Trejo (DTrejo)\n","maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}],"time":{"modified":"2012-06-07T11:56:46.383Z","created":"2012-06-07T11:56:37.735Z","0.1.0":"2012-06-07T11:56:46.383Z"},"author":{"name":"yixuan","url":"yixuan.zzq@taobao.com"},"repository":{"url":""},"_id":"light-node-zookeeper","_rev":"1-a5d5799cb58a59541dae2bd7016a4dc2"}ÿdocument-storeÿldap-sjš{"id":"ldap-sj","rev":"1-cebc18e71476694080a047d64bea58d4","rev_tree":[{"pos":1,"ids":["cebc18e71476694080a047d64bea58d4",{"status":"available"},[]]}],"rev_map":{"1-cebc18e71476694080a047d64bea58d4":3910},"winningRev":"1-cebc18e71476694080a047d64bea58d4","deleted":false,"seq":3910}ÿby-sequenceÿ0000000000003910Å*{"name":"ldap-sj","description":"LDAP Binding for node.js","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.4":{"author":{"name":"Jeremy Childs","email":"jeremyc@ssimicro.com"},"name":"ldap-sj","description":"LDAP Binding for node.js","version":"0.0.4","homepage":"https://github.com/jeremycx/node-LDAP","repository":{"type":"git","url":"git://github.com/jeremycx/node-LDAP.git"},"main":"./LDAP.js","engines":{"node":">= 0.4.0"},"devDependencies":{},"_npmUser":{"name":"dreamlab","email":"janecki@gmail.com"},"_id":"ldap-sj@0.0.4","scripts":{"preinstall":"node-waf clean || true; node-waf configure build"},"dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"549c9f3012d3e3cdb4875c2f90d1c2e6b5160aea","tarball":"http://registry.npmjs.org/ldap-sj/-/ldap-sj-0.0.4.tgz"},"maintainers":[{"name":"dreamlab","email":"janecki@gmail.com"}]}},"readme":"node-ldap\n=========\n\nOpenLDAP client bindings for Node.js. Requires libraries from\nhttp://www.openldap.org installed.\n\nContributing\n------------\n\nAny and all patches and pull requests are certainly welcome.\n\nThanks to:\n----------\n* Petr BÄ›han\n* YANG Xudong\n* Victor Powell\n\nDependencies\n------------\n\nNode >= 0.6\n\nFor < 0.6 compaibility, check out v0.4\n\nInstallation\n------------\n\nTo build, ensure the OpenLDAP client libraries are installed, and\n\n npm install https://github.com/jeremycx/node-LDAP/tarball/master -g\n\nConnection.open(uri, version)\n-----------------------------\n\nOpens a new connection to the LDAP server or servers. Does not make a\nconnection attept (that is saved until the first command is issued).\n\nBasically, this call will always succeeds, but may throw an error in\nthe case of improper parameters. Will not return an error unless no\nmemory is available.\n\nOpen Example\n------------\n\n var LDAPConnection = require(\"../LDAP\").Connection;\n var LDAP = new LDAPConnection();\n \n if (LDAP.open(\"ldap://server1.domain.com ldap://server2.domain.com\", 3) < 0) {\n throw new Error(\"Unable to connect to server\");\n } \n\nConnection.simpleBind([dn, password,] callback(msgid, err));\n-----------------------------------\n\nAuthenticates to the server. When the response is ready, or the\ntimeout occurs, will execute the callback with the error value set.\n\ndn and password must be omited, when doing anonymous bind.\n\nConnection.search(base, scope, filter, attrs, function(msgid, err, data))\n---------------------------------------------\n\nSearches LDAP within the given base for entries matching the given\nfilter, and returns all attrs for matching entries. To get all\navailable attrs, use \"\\*\".\n\nScopes are specified as one of the following integers:\n\n* Connection.BASE = 0;\n* Connection.ONELEVEL = 1;\n* Connection.SUBTREE = 2;\n* Connection.SUBORDINATE = 3;\n* Connection.DEFAULT = -1;\n\nIf a disconnect or other server error occurs, the backing library will\nattempt to reconnect automatically, and if this reconnection fails,\nConnection.open() will return -1.\n\nSee also \"man 3 ldap\" for details.\n\nConnection.searchPaged(base, scope, filter, attrs, pageSize, function(msgid, err, data) [, cookie])\n---------------------------------------------------------------------------------------------------\n\nLDAP servers are usually limited in how many items they are willing to return -\n1024 or 4096 are some typical values. For larger LDAP directories, you need to\neither partition your results with filter, or use paged search.\n\nNote that it's only extension to the protocol, server doesn't have to support\nit. In such case, callback will be called with nonzero err (actually, it would\nbe nice if someone could verify this, the server it was tested on had this\nfeature).\n\nCookie parameter is only for internal use, leave it undefined in your calls.\n\nResults are passed to callback function as they arrive in the same format\nas for simple search. Request for next page is sent only after the callback\nreturns. After all data has arrived, callback is called once more, with data\nequal to null.\n\nSearch Example\n--------------\n\n var LDAPConnection = require(\"../LDAP\").Connection;\n var LDAP = new LDAPConnection();\n \n // Open a connection.\n LDAP.open(\"ldap://ldap1.example.com\");\n LDAP.search(\"o=company\", LDAP.SUBTREE, \"(uid=alice)\", \"*\", function(msgid, error, data) {\n switch(error) {\n case -2:\n console.log(\"Timeout\");\n break;\n case -1:\n console.log(\"Server gone away\");\n break;\n default:\n console.log(data[0].uid[0]);\n break;\n } \n });\n\nTODO:\n-----\n* Document Modify, Add and Rename\n* Testing against Microsoft Active Directory is welcomed, as I don't\nhave a server to test against.\n","maintainers":[{"name":"dreamlab","email":"janecki@gmail.com"}],"time":{"modified":"2012-07-02T09:16:45.460Z","created":"2012-07-02T09:16:10.163Z","0.0.4":"2012-07-02T09:16:45.460Z"},"author":{"name":"Jeremy Childs","email":"jeremyc@ssimicro.com"},"repository":{"type":"git","url":"git://github.com/jeremycx/node-LDAP.git"},"_id":"ldap-sj","_rev":"1-cebc18e71476694080a047d64bea58d4"}!ÿdocument-storeÿlazorse-nesting¢{"id":"lazorse-nesting","rev":"1-caa36c671ef96fb082916a66a94dd688","rev_tree":[{"pos":1,"ids":["caa36c671ef96fb082916a66a94dd688",{"status":"available"},[]]}],"rev_map":{"1-caa36c671ef96fb082916a66a94dd688":3909},"winningRev":"1-caa36c671ef96fb082916a66a94dd688","deleted":false,"seq":3909}ÿby-sequenceÿ0000000000003909­ {"name":"lazorse-nesting","description":"Flexible nested resource support for Lazorse","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"author":{"name":"Stephen Sugden","email":"glurgle@gmail.com","url":"http://stephensugden.com/"},"name":"lazorse-nesting","description":"Flexible nested resource support for Lazorse","version":"0.1.0","repository":{"url":""},"dependencies":{"traverse":"~0.6.0"},"devDependencies":{"mocha":"~1.0.0","lazorse":">=0.5","coffee-script":"~1.2.0"},"scripts":{"test":"make test"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse-nesting@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0559a96b92c3a35cb6e8aa8ef7a2fc7c460c866a","tarball":"http://registry.npmjs.org/lazorse-nesting/-/lazorse-nesting-0.1.0.tgz"},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.1.1":{"author":{"name":"Stephen Sugden","email":"glurgle@gmail.com","url":"http://stephensugden.com/"},"name":"lazorse-nesting","description":"Flexible nested resource support for Lazorse","version":"0.1.1","keywords":["rest","nested","resource","inline"],"repository":{"url":""},"dependencies":{"traverse":"~0.6.0"},"devDependencies":{"mocha":"~1.0.0","lazorse":">=0.5","coffee-script":"~1.2.0"},"scripts":{"test":"make test","prepublish":"make test"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse-nesting@0.1.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"5a476d32cb08fb11ba4b09e310fb22dbe59196e4","tarball":"http://registry.npmjs.org/lazorse-nesting/-/lazorse-nesting-0.1.1.tgz"},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.1.2":{"author":{"name":"Stephen Sugden","email":"glurgle@gmail.com","url":"http://stephensugden.com/"},"name":"lazorse-nesting","description":"Flexible nested resource support for Lazorse","version":"0.1.2","keywords":["rest","nested","resource","inline"],"repository":{"url":""},"dependencies":{"traverse":"~0.6.0"},"devDependencies":{"mocha":"~1.0.0","lazorse":">=0.5","coffee-script":"~1.2.0"},"scripts":{"test":"make test","prepublish":"make test"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse-nesting@0.1.2","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"2d0a422e202be7d55eac24baa4738e55877c4007","tarball":"http://registry.npmjs.org/lazorse-nesting/-/lazorse-nesting-0.1.2.tgz"},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]}},"readme":"# Lazorse-nesting\n\n![horse in a nest](/BetSmartMedia/lazorse-nesting/raw/master/horsenest.png)\n\nThis module can be `@include`ed into a Lazorse application to enable\nclient-driven inlining of named resources. By client-driven, we mean that the\nclient specifies a list of related resources as part of the request, and this\nextension takes care of inlining those resources into the response data.\n\n## How it works\n\nThe client to specifies keys they would like to have inlined into their response\nusing a query parameter (``inline`` by default). When those keys are seen in the\nresponse data, *and* the value of those keys looks like a URL path (such as the\nones generated by the builtin `@link` helper), the value will be replaced with\nthe response data of an internally dispatched request against that path.\n\nTo see how this looks in practice, check out [this test](/BetSmartMedia/lazorse-nesting/blob/master/test/nesting.test.coffee).\n","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"time":{"modified":"2012-04-23T23:07:51.286Z","created":"2012-04-08T00:14:34.733Z","0.1.0":"2012-04-08T00:14:36.147Z","0.1.1":"2012-04-23T22:48:07.357Z","0.1.2":"2012-04-23T23:07:51.286Z"},"author":{"name":"Stephen Sugden","email":"glurgle@gmail.com","url":"http://stephensugden.com/"},"repository":{"url":""},"_id":"lazorse-nesting","_rev":"1-caa36c671ef96fb082916a66a94dd688"}ÿdocument-storeÿlawmasterœ{"id":"lawmaster","rev":"1-69cdfb949a5393592874e816852fbaf6","rev_tree":[{"pos":1,"ids":["69cdfb949a5393592874e816852fbaf6",{"status":"available"},[]]}],"rev_map":{"1-69cdfb949a5393592874e816852fbaf6":3908},"winningRev":"1-69cdfb949a5393592874e816852fbaf6","deleted":false,"seq":3908}ÿby-sequenceÿ0000000000003908”{"name":"lawmaster","description":"Simple arbitrary data validation library.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"lawmaster","description":"Simple arbitrary data validation library.","author":{"name":"Joe Rozner","email":"joe@deadbyes.net"},"version":"0.0.1","main":"index.js","repository":{"type":"git","url":"http://www.github.com/jrozner/lawmaster.git"},"directories":{"example":"example"},"keywords":["validate","validation"],"_npmUser":{"name":"jrozner","email":"joe@deadbytes.net"},"_id":"lawmaster@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f77b1178e0dc6a9e879e2baa030633e3850351bf","tarball":"http://registry.npmjs.org/lawmaster/-/lawmaster-0.0.1.tgz"},"maintainers":[{"name":"jrozner","email":"joe@deadbytes.net"}]}},"readme":"# lawmaster.js\n\nLawmaster is a simple general purpose validation module that can be used in\nany situation where data needs to be validated and return information about\nthe errors present.\n\n## Example Usage\n\n``` js\nvar validate = require('lawmaster');\n\nvar phoneNumber = '(123) 456-7890';\nvar phoneValidators = [presence, string, phone];\n\nvalidate(phoneNumber, phoneValidators, function(errors) {\n if (errors !== true) {\n console.log(phoneNumber+' has the following errors:');\n for (var error in errors) {\n console.log(\" - \"+errors[error]);\n }\n } else {\n console.log('All validators passed.');\n }\n});\n\nfunction presence(data) {\n if ((data !== undefined) || (data !== ''))\n return true;\n else\n return 'Data is not present.';\n}\n\nfunction string(data) {\n if (typeof(data) === 'string')\n return true;\n else\n return 'Data is not a string.'\n}\n\nfunction phone(data) {\n if (/^\\+?\\s*?1?\\s*?\\(?\\d{3}\\)?-?\\s*?\\d{3}-?\\d{4}$/.test(data))\n return true;\n else\n return 'Data is not a phone number.';\n}\n```\n\n## License\nCopyright (c) 2012, Joe Rozner (MIT)\n","maintainers":[{"name":"jrozner","email":"joe@deadbytes.net"}],"time":{"modified":"2012-06-07T05:14:24.869Z","created":"2012-06-07T05:14:23.530Z","0.0.1":"2012-06-07T05:14:24.869Z"},"author":{"name":"Joe Rozner","email":"joe@deadbyes.net"},"repository":{"type":"git","url":"http://www.github.com/jrozner/lawmaster.git"},"_id":"lawmaster","_rev":"1-69cdfb949a5393592874e816852fbaf6"}ÿdocument-storeÿlastfm-client {"id":"lastfm-client","rev":"1-27a0252571e866b3cce568f1afa7c57a","rev_tree":[{"pos":1,"ids":["27a0252571e866b3cce568f1afa7c57a",{"status":"available"},[]]}],"rev_map":{"1-27a0252571e866b3cce568f1afa7c57a":3907},"winningRev":"1-27a0252571e866b3cce568f1afa7c57a","deleted":false,"seq":3907}ÿby-sequenceÿ0000000000003907Ô{"name":"lastfm-client","description":"Node.js Last.fm Client","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"author":{"name":"Jan KuÄa","email":"jan@jankuca.com","url":"http://jankuca.com"},"name":"lastfm-client","description":"Node.js Last.fm Client","version":"1.0.0","repository":{"type":"git","url":"git://github.com/jankuca/node-lastfm-client.git"},"main":"src/lastfm-client.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jankuca","email":"jan@jankuca.com"},"_id":"lastfm-client@1.0.0","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"75e919142fd9e66ab0626606804891193b40931a","tarball":"http://registry.npmjs.org/lastfm-client/-/lastfm-client-1.0.0.tgz"},"readme":"","maintainers":[{"name":"jankuca","email":"jan@jankuca.com"}]},"1.0.1":{"author":{"name":"Jan KuÄa","email":"jan@jankuca.com","url":"http://jankuca.com"},"name":"lastfm-client","description":"Node.js Last.fm Client","version":"1.0.1","repository":{"type":"git","url":"git://github.com/jankuca/node-lastfm-client.git"},"main":"src/lastfm-client.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jankuca","email":"jan@jankuca.com"},"_id":"lastfm-client@1.0.1","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"bd999da0ba2379bc0eb10e43dfb1f83342404522","tarball":"http://registry.npmjs.org/lastfm-client/-/lastfm-client-1.0.1.tgz"},"readme":"","maintainers":[{"name":"jankuca","email":"jan@jankuca.com"}]},"1.0.2":{"author":{"name":"Jan KuÄa","email":"jan@jankuca.com","url":"http://jankuca.com"},"name":"lastfm-client","description":"Node.js Last.fm Client","version":"1.0.2","repository":{"type":"git","url":"git://github.com/jankuca/node-lastfm-client.git"},"main":"src/lastfm-client.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jankuca","email":"jan@jankuca.com"},"_id":"lastfm-client@1.0.2","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"899b79a5d627ce11be59994238ef76ffef69fadb","tarball":"http://registry.npmjs.org/lastfm-client/-/lastfm-client-1.0.2.tgz"},"readme":"","maintainers":[{"name":"jankuca","email":"jan@jankuca.com"}]}},"readme":"","maintainers":[{"name":"jankuca","email":"jan@jankuca.com"}],"time":{"modified":"2012-06-20T08:39:37.359Z","created":"2012-06-15T20:46:59.059Z","1.0.0":"2012-06-15T20:47:01.314Z","1.0.1":"2012-06-16T13:51:21.636Z","1.0.2":"2012-06-20T08:39:37.359Z"},"author":{"name":"Jan KuÄa","email":"jan@jankuca.com","url":"http://jankuca.com"},"repository":{"type":"git","url":"git://github.com/jankuca/node-lastfm-client.git"},"_id":"lastfm-client","_rev":"1-27a0252571e866b3cce568f1afa7c57a"}#ÿdocument-storeÿkyotocabinet-node¤{"id":"kyotocabinet-node","rev":"1-5ab06a094d22f7e4af91c809c26a18de","rev_tree":[{"pos":1,"ids":["5ab06a094d22f7e4af91c809c26a18de",{"status":"available"},[]]}],"rev_map":{"1-5ab06a094d22f7e4af91c809c26a18de":3906},"winningRev":"1-5ab06a094d22f7e4af91c809c26a18de","deleted":false,"seq":3906}ÿby-sequenceÿ0000000000003906ð{"name":"kyotocabinet-node","description":"kyotocabinet bindings for Node.js","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"kyotocabinet-node","main":"./lib/kyotocabinet","version":"0.0.1","description":"kyotocabinet bindings for Node.js","tags":["kyotocabinet"],"keywords":["kyotocabinet","binding"],"author":{"name":"kazupon","email":"kawakazu80@gmail.com","url":"kazuya kawaguchi"},"repository":{"type":"git","url":"https://github.com/kazupon/kyotocabinet-node.git"},"bugs":{"url":"https://github.com/kazupon/kyotocabinet-node/issues"},"dependencies":{"node-gyp":"0.6.3","bindings":"1.0.0"},"devDependencies":{"mocha":"1.2.2","should":"0.6.3"},"os":["darwin","linux"],"cpu":["x64"],"engines":{"node":">= 0.8.4"},"scripts":{"install":"node-gyp rebuild"},"gypfile":true,"readme":"# kyotocabient-node\nkyotocabinet bindings for Node.js\n\n\n# Requirements\n\n## OS\n\n- Linux\n- Mac OS X\n\n## Dependencies\n\n- Git\n\n\n# Building\n\n $ node-gyp configure build\n\n\n# Installation\n\n $ npm install kyotocabient-node\n\n\n# Running Tests\n\nkyotocabient-node depends on [mocha](http://visionmedia.github.com/mocha/) for testing.\n\n $ mocha test/*.js\n\n\n# License\n\n[MIT license](http://www.opensource.org/licenses/mit-license.php).\n\nSee the `LICENSE`.\n","_id":"kyotocabinet-node@0.0.1","dist":{"shasum":"fa791f9effbf6f8642a2658ed43f1df1af443e9e","tarball":"http://registry.npmjs.org/kyotocabinet-node/-/kyotocabinet-node-0.0.1.tgz"},"maintainers":[{"name":"kazupon","email":"kawakazu80@gmail.com"}]},"0.0.2":{"name":"kyotocabinet-node","main":"./lib/kyotocabinet","version":"0.0.2","description":"kyotocabinet bindings for Node.js","tags":["kyotocabinet"],"keywords":["kyotocabinet","binding"],"author":{"name":"kazupon","email":"kawakazu80@gmail.com","url":"kazuya kawaguchi"},"repository":{"type":"git","url":"https://github.com/kazupon/kyotocabinet-node.git"},"bugs":{"url":"https://github.com/kazupon/kyotocabinet-node/issues"},"dependencies":{"node-gyp":"0.6.3","bindings":"1.0.0"},"devDependencies":{"mocha":"1.2.2","should":"0.6.3"},"os":["darwin","linux"],"cpu":["x64"],"engines":{"node":">= 0.8.4"},"scripts":{"install":"node-gyp rebuild"},"gypfile":true,"readme":"# kyotocabient-node\nkyotocabinet bindings for Node.js\n\n\n# Requirements\n\n## OS\n\n- Linux\n- Mac OS X\n\n## Dependencies\n\n- Git\n\n\n# Building\n\n $ node-gyp configure build\n\n\n# Installation\n\n $ npm install kyotocabient-node\n\n\n# Examples\n\nSee the `example` directory.\n\n\n# Running Tests\n\nkyotocabient-node depends on [mocha](http://visionmedia.github.com/mocha/) for testing.\n\n $ mocha test/*.js\n\n\n# License\n\n[MIT license](http://www.opensource.org/licenses/mit-license.php).\n\nSee the `LICENSE`.\n","_id":"kyotocabinet-node@0.0.2","dist":{"shasum":"a1a2371a706686200eb2787bbc92482ba1bccfca","tarball":"http://registry.npmjs.org/kyotocabinet-node/-/kyotocabinet-node-0.0.2.tgz"},"maintainers":[{"name":"kazupon","email":"kawakazu80@gmail.com"}]}},"readme":"# kyotocabient-node\nkyotocabinet bindings for Node.js\n\n\n# Requirements\n\n## OS\n\n- Linux\n- Mac OS X\n\n## Dependencies\n\n- Git\n\n\n# Building\n\n $ node-gyp configure build\n\n\n# Installation\n\n $ npm install kyotocabient-node\n\n\n# Running Tests\n\nkyotocabient-node depends on [mocha](http://visionmedia.github.com/mocha/) for testing.\n\n $ mocha test/*.js\n\n\n# License\n\n[MIT license](http://www.opensource.org/licenses/mit-license.php).\n\nSee the `LICENSE`.\n","maintainers":[{"name":"kazupon","email":"kawakazu80@gmail.com"}],"time":{"modified":"2012-08-08T12:10:59.184Z","created":"2012-08-08T10:25:01.934Z","0.0.1":"2012-08-08T10:25:08.572Z","0.0.2":"2012-08-08T12:10:59.184Z"},"author":{"name":"kazupon","email":"kawakazu80@gmail.com","url":"kazuya kawaguchi"},"repository":{"type":"git","url":"https://github.com/kazupon/kyotocabinet-node.git"},"_id":"kyotocabinet-node","_rev":"1-5ab06a094d22f7e4af91c809c26a18de"}ÿdocument-storeÿjusttest›{"id":"justtest","rev":"1-2419cabfbbd345ed2a1421fb922b4180","rev_tree":[{"pos":1,"ids":["2419cabfbbd345ed2a1421fb922b4180",{"status":"available"},[]]}],"rev_map":{"1-2419cabfbbd345ed2a1421fb922b4180":3905},"winningRev":"1-2419cabfbbd345ed2a1421fb922b4180","deleted":false,"seq":3905}ÿby-sequenceÿ0000000000003905?{"name":"justtest","description":"Unit tests with JSDOM wrapper.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"justtest","version":"0.0.1","main":"./lib/justtest.js","description":"Unit tests with JSDOM wrapper.","keywords":["unittest","dom","test"],"author":{"name":"Josh Marshall","email":"catchjosh@gmail.com","url":"http://openjosh.com"},"bugs":{"email":"catchjosh@gmail.com","url":"http://github.com/joshmarshall/justtest/issues"},"licenses":[{"type":"MIT","url":"http://github.com/joshmarshall/justtest/blob/master/LICENSE.txt"}],"repositories":[{"type":"git","url":"http://github.com/joshmarshall/justtest.git"}],"directories":{"lib":"./lib","bin":"./bin"},"dependencies":{"console.log":"*","colors":"*","jsdom":"0.2.x","request":"*"},"bin":{"test.js":"./bin/test.js"},"engines":{"node":"0.5.x"},"_id":"justtest@0.0.1","_engineSupported":false,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.3","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"59bcf72f08dacc3c5312f42f5e9307d12572a4bb","tarball":"http://registry.npmjs.org/justtest/-/justtest-0.0.1.tgz"},"maintainers":[{"name":"joshmarshall","email":"catchjosh@gmail.com"}]},"0.0.2":{"name":"justtest","version":"0.0.2","main":"./lib/justtest.js","description":"Unit tests with JSDOM wrapper.","keywords":["unittest","dom","test"],"author":{"name":"Josh Marshall","email":"catchjosh@gmail.com","url":"http://openjosh.com"},"bugs":{"email":"catchjosh@gmail.com","url":"http://github.com/joshmarshall/justtest/issues"},"licenses":[{"type":"MIT","url":"http://github.com/joshmarshall/justtest/blob/master/LICENSE.txt"}],"repositories":[{"type":"git","url":"http://github.com/joshmarshall/justtest.git"}],"directories":{"lib":"./lib"},"dependencies":{"console.log":"*","jsdom":"0.2.x","request":"*","xmlhttprequest":"*","nodeunit":"*"},"engines":{"node":"0.5.x"},"_id":"justtest@0.0.2","_engineSupported":false,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.3","dist":{"shasum":"9d9bb8272567fc2d7a057bc31e9d75b45c763ccc","tarball":"http://registry.npmjs.org/justtest/-/justtest-0.0.2.tgz"},"maintainers":[{"name":"joshmarshall","email":"catchjosh@gmail.com"}]},"0.0.3":{"name":"justtest","version":"0.0.3","main":"./lib/justtest.js","description":"Unit tests with JSDOM wrapper.","keywords":["unittest","dom","test"],"author":{"name":"Josh Marshall","email":"catchjosh@gmail.com","url":"http://openjosh.com"},"bugs":{"email":"catchjosh@gmail.com","url":"http://github.com/joshmarshall/justtest/issues"},"licenses":[{"type":"MIT","url":"http://github.com/joshmarshall/justtest/blob/master/LICENSE.txt"}],"repositories":[{"type":"git","url":"http://github.com/joshmarshall/justtest.git"}],"directories":{"lib":"./lib"},"dependencies":{"console.log":"*","jsdom":"0.2.x","request":"*","xmlhttprequest":"*","nodeunit":"*"},"engines":{"node":"node >= 0.5.x"},"_npmUser":{"name":"joshmarshall","email":"catchjosh@gmail.com"},"_id":"justtest@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.7.8-pre","_defaultsLoaded":true,"dist":{"shasum":"79be80e55ad6535f56cb7e948b8ad328bca006fe","tarball":"http://registry.npmjs.org/justtest/-/justtest-0.0.3.tgz"},"readme":"JuStTest\n========\nThis is YAJTL (Yet Another Javascript Testing Library.) It's designed to\ntest client-side libraries without a browser, while still supporting\nasync behavior when mocking that out is just too complicated.\n\nIt's pretty much just a wrapper around existing tools like JSDom and NodeUnit.\n\nInstallation\n------------\nCurrently, it is only available via git at\nhttp://github.com/joshmarshall/justtest . Once you have downloaded the\nproject, you can install to your current directory with:\n\n npm install path/to/justtest\n\nUsage\n-----\nBy default, it passes everything through to NodeUnit, so a basic test\nlooks like:\n\n module.exports = {\n\n testSomething: function(test) {\n test.ok(true);\n test.done();\n }\n\n };\n\n...and you can call it with the nodeunit executable like:\n\n nodeunit tests/test_basic.js\n\nThe binary may be in different places depending on how you installed\nit, so the path could be `./node_modules/.bin/nodeunit` , or it might\nbe globally available as `nodeunit`, or even something hideous like\n`./node_modules/justtest/node_modules/.bin/nodeunit`.\n\nTesting Browser-ish Javascript\n------------------------------\nOnce you move beyond simple unit tests, any real usage is going to require\nexternal dependencies. A sample project structure might look like:\n\n ./\n ./base.htm\n ./js\n ./js/jquery.min.js\n ./js/myawesome.js\n ./tests\n ./tests/test_advanced.js\n\n...and test\\_advanced.js might look something like:\n\n var domTest = require(\"justtest\").domTestCase;\n\n module.exports = domTest({\n\n html: \"../base.htm\",\n scripts: [\"../jquery.js\", \"../myawesome.js\",],\n\n // setting the default window properties to load\n exportGlobals: [\"jQuery\"],\n\n setUp: function(callback) {\n // optional: do some set up stuff here...\n this.globals.myAwesomeVar = true;\n callback();\n },\n\n testjQuery: function(test) {\n // test.globals holds anything in exportGlobals\n test.equals(this.globals.myAwesomeVar, true);\n var title = this.globals.jQuery(\"h1\").text()\n test.equals(title, \"LOL I HAZ A CAT\");\n test.done();\n },\n\n testMyLibrary: function(test) {\n // window is always attached to test.globals\n // (document is available with test.globals.window.document)\n var result = this.globals.window.MyAwesomeObject.doIHazCat();\n test.ok(result);\n test.done();\n },\n\n testWithCallback: function(test) {\n // use test.wrap around any callbacks.\n var $ = this.globals.jQuery;\n $.get(\"http://www.google.com\", test.wrap(function(data) {\n // ...test response...\n test.done();\n });\n },\n\n tearDown: function(callback) {\n // optional: undo what you did in setUp\n callback();\n }\n\n });\n\nThe options that can be passed into domTestCase are listed below.\n\nRunning Tests\n-------------\nI've gotten rid of the custom test runner that used to be in this project\nand coupled it more with NodeUnit. Just refer to the NodeUnit project for\nthe options that you can pass to it.\n\ndomTestCase Options\n-------------------\nThe following is a list of options that domTestCase uses.\n\n* setUp: function(callback) - Provides a custom setUp to be called after\n domTestCase has finished setting up.\n* tearDown: function(callback) - Provides a custom tearDown function to be\n called after domTest as finished running tests.\n* htmlPath: string - A path to the HTML content that will be loaded by JSDOM.\n* html: string - raw HTML to be used as the DOM base.\n* scriptPath: string - The \"base\" path for anything provided to scripts.\n* scripts: array - A list of local Javascript files to load.\n* exportGlobals: array - A list of top-level objects to make avalable on the\n domTestCase. These can be used within tests by \"test.globals.NAME\".\n\nAdditionally, justtest.defaultGlobals allows overriding of what's included\non every test by default.\n\nContact\n-------\nThis is really, really alpha. So please add Issues, or send me your\nsuccess or failure stories. I'd also love patches / ideas / etc. :)\n","maintainers":[{"name":"joshmarshall","email":"catchjosh@gmail.com"}]}},"maintainers":[{"name":"joshmarshall","email":"catchjosh@gmail.com"}],"time":{"modified":"2012-07-02T06:17:15.645Z","created":"2011-09-16T17:53:18.659Z","0.0.1":"2011-09-16T17:53:19.157Z","0.0.2":"2011-09-17T03:29:51.351Z","0.0.3":"2012-07-02T06:17:15.645Z"},"author":{"name":"Josh Marshall","email":"catchjosh@gmail.com","url":"http://openjosh.com"},"_id":"justtest","_rev":"1-2419cabfbbd345ed2a1421fb922b4180"}ÿdocument-storeÿjugglingdbqž{"id":"jugglingdbq","rev":"1-6a64013f2133c8c6e76b17ec26f88752","rev_tree":[{"pos":1,"ids":["6a64013f2133c8c6e76b17ec26f88752",{"status":"available"},[]]}],"rev_map":{"1-6a64013f2133c8c6e76b17ec26f88752":3904},"winningRev":"1-6a64013f2133c8c6e76b17ec26f88752","deleted":false,"seq":3904}ÿby-sequenceÿ2…}ù0000000000003904™ {"name":"jugglingdbq","dist-tags":{"latest":"0.0.1-beta1"},"versions":{"0.0.1-beta":{"name":"jugglingdbq","version":"0.0.1-beta","dependencies":{"jugglingdb":"0.1.9","q":"0.8.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"jugglingdbq@0.0.1-beta","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"2606da94cf224f663944b7fa995bed5f9b302c93","tarball":"http://registry.npmjs.org/jugglingdbq/-/jugglingdbq-0.0.1-beta.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.1-beta1":{"name":"jugglingdbq","version":"0.0.1-beta1","dependencies":{"jugglingdb":"0.1.9","q":"0.8.x"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"jugglingdbq@0.0.1-beta1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3205cf1372da9bd3b3402857daf3338a039a25d0","tarball":"http://registry.npmjs.org/jugglingdbq/-/jugglingdbq-0.0.1-beta1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:04.310Z","created":"2012-05-18T01:26:29.991Z","0.0.1-beta":"2012-05-18T01:26:32.148Z","0.0.1-beta1":"2012-05-18T10:05:35.433Z"},"_id":"jugglingdbq","_rev":"1-6a64013f2133c8c6e76b17ec26f88752"}ÿdocument-storeÿjsup—{"id":"jsup","rev":"1-7e7063b09641a891498f6de81fd91e2d","rev_tree":[{"pos":1,"ids":["7e7063b09641a891498f6de81fd91e2d",{"status":"available"},[]]}],"rev_map":{"1-7e7063b09641a891498f6de81fd91e2d":3903},"winningRev":"1-7e7063b09641a891498f6de81fd91e2d","deleted":false,"seq":3903}ÿby-sequenceÿ0000000000003903þ{"name":"jsup","description":"modify json files in-place, preserving formatting","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"jsup","version":"0.0.0","description":"modify json files in-place, preserving formatting","main":"index.js","directories":{"lib":".","example":"example","test":"test"},"dependencies":{"burrito":">=0.2.5 <0.3","traverse":">=0.4.3 <0.5"},"devDependencies":{"expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/jsup.git"},"keywords":["json","update","in-place","preserve","whitespace","format"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"jsup@0.0.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"ee8539b42bc7ed2f1e5ade9da85feba50ec9a57d","tarball":"http://registry.npmjs.org/jsup/-/jsup-0.0.0.tgz"}},"0.0.1":{"name":"jsup","version":"0.0.1","description":"modify json files in-place, preserving formatting","main":"index.js","directories":{"example":"example","test":"test"},"dependencies":{"burrito":"~0.2.12","traverse":"~0.6.1"},"devDependencies":{"tap":"~0.2.5"},"scripts":{"test":"tap test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/jsup.git"},"keywords":["json","update","in-place","preserve","whitespace","format"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"jsup@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1084938c77880c34c92b562bf3bd7607c87ab55b","tarball":"http://registry.npmjs.org/jsup/-/jsup-0.0.1.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2012-06-08T09:03:08.413Z","created":"2011-07-20T09:36:11.523Z","0.0.0":"2011-07-20T09:36:12.447Z","0.0.1":"2012-06-08T09:03:08.413Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/jsup.git"},"_id":"jsup","_rev":"1-7e7063b09641a891498f6de81fd91e2d"}%ÿdocument-storeÿjscoverage-reporter¦{"id":"jscoverage-reporter","rev":"1-ae3cb6816d4a5db0cb46c3eba3041a5e","rev_tree":[{"pos":1,"ids":["ae3cb6816d4a5db0cb46c3eba3041a5e",{"status":"available"},[]]}],"rev_map":{"1-ae3cb6816d4a5db0cb46c3eba3041a5e":3902},"winningRev":"1-ae3cb6816d4a5db0cb46c3eba3041a5e","deleted":false,"seq":3902}ÿby-sequenceÿ0000000000003902½#{"name":"jscoverage-reporter","description":"JSCoverage reporter for Jasmine","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"jscoverage-reporter","version":"0.1.0","description":"JSCoverage reporter for Jasmine","homepage":"https://github.com/NeoPhi/jscoverage-reporter","keywords":["testing","jasmine","jscoverage"],"licenses":[{"type":"MIT","url":"http://github.com/NeoPhi/jscoverage-reporter/raw/master/LICENSE"}],"author":{"name":"Daniel Rinehart","email":"danielr@neophi.com","url":"http://danielr.neophi.com/"},"repository":{"type":"git","url":"git://github.com/NeoPhi/jscoverage-reporter.git"},"bugs":{"url":"https://github.com/NeoPhi/jscoverage-reporter/issues"},"main":"src/jasmine.jscoverage_reporter.js","devDependencies":{"jshint":"0.5.8","jasmine-node":"1.0.21","wrench":"1.3.5"},"engines":{"node":">= 0.6.0"},"scripts":{"pretest":"jshint src tools --config config/jshint.config.json && jshint test --config config/spec.jshint.config.json","test":"node tools/coverage --junitreport build/test","report":"node tools/report.js reports/"},"_npmUser":{"name":"danielr","email":"danielr@neophi.com"},"_id":"jscoverage-reporter@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d297bf061021c880dbd0fa00e5d7db2ec633deed","tarball":"http://registry.npmjs.org/jscoverage-reporter/-/jscoverage-reporter-0.1.0.tgz"},"maintainers":[{"name":"danielr","email":"danielr@neophi.com"}]}},"readme":"# jscoverage-reporter - JSCoverage Report for Jasmine\n\nA [Jasmine](https://github.com/pivotal/jasmine) reporter that will capture code coverage metrics generated by [JSCoverage](http://siliconforks.com/jscoverage/). Works well with [jasmine-node](https://github.com/mhevery/jasmine-node) and [PhantomJS](http://www.phantomjs.org/).\n\nAt this point the reporter requires a little setup to use as it assumes you are already using jasmine-node for testing. A simple wrapper script described below makes it easy to add this reporter to an out of the box jasmine-node install.\n\n# Installation\n npm install jscoverage-reporter\n\nYou will also need a version of JSCoverage installed to generate the covered files. My preference is to download and install from [http://siliconforks.com/jscoverage/](http://siliconforks.com/jscoverage/) as we also test non node.js code.\n\n# Usage\n\n## Core Syntax\n\n require('jscoverage-reporter');\n jasmine.getEnv().addReporter(new jasmine.JSCoverageReporter('./reports'));\n\n## jasmine-node wrapper\nCreate a file called **coverage.js**:\n\n require('jasmine-node');\n require('jscoverage-reporter');\n var jasmineEnv = jasmine.getEnv();\n // Adjust output directory as needed\n jasmineEnv.addReporter(new jasmine.JSCoverageReporter('./reports'));\n require('./node_modules/jasmine-node/lib/jasmine-node/cli.js');\n\nAfter running JSCoverage on the code to test:\n\n npm install jasmine-node\n node coverage.js \n\n## JSCoverage wrapper\nTo run a single command that executes JSCoverage and runs the tests, an example can be found at [tools/coverage.js](https://github.com/NeoPhi/jscoverage-reporter/blob/master/tools/coverage.js).\n\nIn `package.json` you can then define your test script as:\n\n \"test\": \"node tools/coverage --junitreport build/test\",\n\n\n## Viewing the Report\nTwo files `jscoverage.json` and `coverage.xml` will be produced. The `jscoverage.json` file can be used with the modified JSCoverage [template](https://github.com/NeoPhi/jscoverage-reporter/tree/master/template) to view the coverage. As JSCoverage complains about file based paths, to view the data a simple node.js based HTTP report server can be found in [tools/report.js](https://github.com/NeoPhi/jscoverage-reporter/blob/master/tools/report.js). The `coverage.xml` is suitable for Emma report tracking such as with [Emma Jenkins Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Emma+Plugin).\n\n----\nCopyright (c) 2012 Daniel Rinehart. This software is licensed under the MIT License.\n","maintainers":[{"name":"danielr","email":"danielr@neophi.com"}],"time":{"modified":"2012-04-23T18:15:20.583Z","created":"2012-04-23T18:15:19.262Z","0.1.0":"2012-04-23T18:15:20.583Z"},"author":{"name":"Daniel Rinehart","email":"danielr@neophi.com","url":"http://danielr.neophi.com/"},"repository":{"type":"git","url":"git://github.com/NeoPhi/jscoverage-reporter.git"},"_id":"jscoverage-reporter","_rev":"1-ae3cb6816d4a5db0cb46c3eba3041a5e"}ÿdocument-storeÿjscex-jitœ{"id":"jscex-jit","rev":"1-289a62904cd6a995a7c286992f0e5222","rev_tree":[{"pos":1,"ids":["289a62904cd6a995a7c286992f0e5222",{"status":"available"},[]]}],"rev_map":{"1-289a62904cd6a995a7c286992f0e5222":3901},"winningRev":"1-289a62904cd6a995a7c286992f0e5222","deleted":false,"seq":3901}ÿby-sequenceÿ0000000000003901á${"name":"jscex-jit","description":"The JIT compiler for Jscex, providing the monadic code transformation ability without losing traditional JavaScript programming experience.","dist-tags":{"latest":"0.6.6"},"versions":{"0.5.0":{"name":"jscex-jit","version":"0.5.0","author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"description":"The JIT compiler for Jscex, providing the monadic code transformation ability without losing traditional JavaScript programming experience.","homepage":"https://github.com/JeffreyZhao/jscex","main":"jscex-jit.js","bugs":{"email":"jeffz@live.com","url":"https://github.com/JeffreyZhao/jscex/issues"},"dependencies":{},"_npmUser":{"name":"jeffz","email":"jeffz@live.com"},"_id":"jscex-jit@0.5.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"0d75d7ac7cd07d5141afe37c29f32397229464af","tarball":"http://registry.npmjs.org/jscex-jit/-/jscex-jit-0.5.0.tgz"},"maintainers":[{"name":"jeffz","email":"jeffz@live.com"}],"directories":{}},"0.6.0":{"name":"jscex-jit","version":"0.6.0","author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"description":"The JIT compiler for Jscex, providing the monadic code transformation ability without losing traditional JavaScript programming experience.","homepage":"https://github.com/JeffreyZhao/jscex","main":"jscex-jit.js","bugs":{"email":"jeffz@live.com","url":"https://github.com/JeffreyZhao/jscex/issues"},"dependencies":{},"_npmUser":{"name":"jeffz","email":"jeffz@live.com"},"_id":"jscex-jit@0.6.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"e85bb744d1a39c7fc209ca341d1cd2b8d297ff9b","tarball":"http://registry.npmjs.org/jscex-jit/-/jscex-jit-0.6.0.tgz"},"maintainers":[{"name":"jeffz","email":"jeffz@live.com"}],"directories":{}},"0.6.1":{"name":"jscex-jit","version":"0.6.1","author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"description":"The JIT compiler for Jscex, providing the monadic code transformation ability without losing traditional JavaScript programming experience.","homepage":"https://github.com/JeffreyZhao/jscex","main":"jscex-jit.js","bugs":{"email":"jeffz@live.com","url":"https://github.com/JeffreyZhao/jscex/issues"},"dependencies":{},"_npmUser":{"name":"jeffz","email":"jeffz@live.com"},"_id":"jscex-jit@0.6.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"4344277b29690fab5e44eba34bd4154218ff7824","tarball":"http://registry.npmjs.org/jscex-jit/-/jscex-jit-0.6.1.tgz"},"readme":"","maintainers":[{"name":"jeffz","email":"jeffz@live.com"}]},"0.6.5":{"author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"homepage":"https://github.com/JeffreyZhao/jscex","bugs":{"email":"jeffz@live.com","url":"https://github.com/JeffreyZhao/jscex/issues"},"name":"jscex-jit","version":"0.6.5","main":"jscex-jit.js","dependencies":{"jscex-parser":"~0.6.5"},"_npmUser":{"name":"jeffz","email":"jeffz@live.com"},"_id":"jscex-jit@0.6.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"03fe9dac600c2eb757b99461e8683852215883cc","tarball":"http://registry.npmjs.org/jscex-jit/-/jscex-jit-0.6.5.tgz"},"readme":"","maintainers":[{"name":"jeffz","email":"jeffz@live.com"}]},"0.6.6":{"author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"homepage":"https://github.com/JeffreyZhao/jscex","bugs":{"url":"https://github.com/JeffreyZhao/jscex/issues","email":"jeffz@live.com"},"name":"jscex-jit","version":"0.6.6","main":"jscex-jit.js","dependencies":{"jscex-parser":"~0.6.5"},"_id":"jscex-jit@0.6.6","dist":{"shasum":"dff757524ff0c07df19c2fa6b5e4dc9ce17aa113","tarball":"http://registry.npmjs.org/jscex-jit/-/jscex-jit-0.6.6.tgz"},"readme":"","maintainers":[{"name":"jeffz","email":"jeffz@live.com"}]}},"readme":null,"maintainers":[{"name":"jeffz","email":"jeffz@live.com"}],"time":{"modified":"2012-07-11T15:33:34.924Z","created":"2012-01-01T16:46:23.731Z","0.5.0":"2012-01-01T16:46:27.945Z","0.6.0":"2012-02-21T16:00:46.122Z","0.6.1":"2012-05-31T15:02:33.485Z","0.6.5":"2012-06-17T06:01:34.089Z","0.6.6":"2012-07-11T15:33:34.924Z"},"author":{"name":"Jeffrey Zhao","email":"jeffz@live.com","url":"http://zhaojie.me/"},"_id":"jscex-jit","_rev":"1-289a62904cd6a995a7c286992f0e5222"}(ÿdocument-storeÿjquery-node-browserify©{"id":"jquery-node-browserify","rev":"1-afb5e713cb853e1ab6fb5e8a1392b5f7","rev_tree":[{"pos":1,"ids":["afb5e713cb853e1ab6fb5e8a1392b5f7",{"status":"available"},[]]}],"rev_map":{"1-afb5e713cb853e1ab6fb5e8a1392b5f7":3900},"winningRev":"1-afb5e713cb853e1ab6fb5e8a1392b5f7","deleted":false,"seq":3900}ÿby-sequenceÿ0000000000003900¤{"name":"jquery-node-browserify","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS and Browserify)","dist-tags":{"latest":"1.7.2"},"versions":{"1.7.2":{"name":"jquery-node-browserify","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS and Browserify)","version":"1.7.2","url":"http://jquery.com","homepage":"https://github.com/bpartridge/jquery-node-browserify","author":{"name":"Brenton Partridge","email":"bapartridge@gmail.com"},"contributors":[{"name":"James Morrin","email":"treasonx@gmail.com"},{"name":"Brenton Partridge","email":"bapartridge@gmail.com"}],"repository":{"type":"git","url":"git://github.com/bpartridge/jquery-node-browserify.git"},"bugs":{"url":"https://github.com/bpartridge/jquery-node-browserify/issues"},"licenses":[{"type":"MIT","url":"https://github.com/bpartridge/jquery-node-browserify/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":"0.6"},"scripts":{"test":"grunt test && mkdir -p tmp && browserify -e entry.js -o tmp/browserified.js"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.3.0","location":"0.0.1","navigator":"~1.0.1"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4","browserify":"*"},"keywords":["util","dom","jquery"],"_npmUser":{"name":"bpartridge","email":"bapartridge@gmail.com"},"_id":"jquery-node-browserify@1.7.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7cc07d824731d3dc35ad40dcb9a199da60ae36f6","tarball":"http://registry.npmjs.org/jquery-node-browserify/-/jquery-node-browserify-1.7.2.tgz"},"maintainers":[{"name":"bpartridge","email":"bapartridge@gmail.com"}]}},"readme":"node-jQuery\n====\n\nA stupid-simple wrapper over jQuery for Node.JS (server). Currently 1.7.2.\n\nNode.JS\n---\n\n npm install jQuery\n\n var $ = require('jQuery');\n\n\nExamples\n---\n\n $(\"

test passes

\").appendTo(\"body\");\n console.log($(\"body\").html());\n\nIn Node.JS you may also create separate window instances\n\n var jsdom = require('jsdom').jsdom\n , myWindow = jsdom().createWindow()\n , $ = require('jQuery')\n , jq = require('jQuery').create()\n , jQuery = require('jQuery').create(myWindow)\n ;\n\n $(\"

test passes

\").appendTo(\"body\");\n console.log($(\"body\").html());\n\n jq(\"

other test passes

\").appendTo(\"body\");\n console.log(jq(\"body\").html());\n\n jQuery(\"

third test passes

\").appendTo(\"body\");\n console.log(jQuery(\"body\").html());\n\nOutput:\n\n

test passes

\n

other test passes

\n

third test passes

\n\nJSONP Example\n----\n\n var $ = require('jQuery');\n\n $.getJSON('http://twitter.com/status/user_timeline/treason.json?count=10&callback=?',function(data) {\n console.log(data);\n });\n\n\n","maintainers":[{"name":"bpartridge","email":"bapartridge@gmail.com"}],"time":{"modified":"2012-06-27T02:41:03.369Z","created":"2012-06-27T02:41:02.852Z","1.7.2":"2012-06-27T02:41:03.369Z"},"author":{"name":"Brenton Partridge","email":"bapartridge@gmail.com"},"repository":{"type":"git","url":"git://github.com/bpartridge/jquery-node-browserify.git"},"_id":"jquery-node-browserify","_rev":"1-afb5e713cb853e1ab6fb5e8a1392b5f7"}ÿdocument-storeÿjotan˜{"id":"jotan","rev":"1-53ae63537161d323f2fed2274229c7bb","rev_tree":[{"pos":1,"ids":["53ae63537161d323f2fed2274229c7bb",{"status":"available"},[]]}],"rev_map":{"1-53ae63537161d323f2fed2274229c7bb":3899},"winningRev":"1-53ae63537161d323f2fed2274229c7bb","deleted":false,"seq":3899}ÿby-sequenceÿ0000000000003899Š{"name":"jotan","description":"makes it easy to stream json over tcp using netstrings","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"David Trejo","email":"david.daniel.trejo@gmail.com","url":"http://dtrejo.com/"},"name":"jotan","description":"makes it easy to stream json over tcp using netstrings","version":"0.0.0","main":"jotan.js","scripts":{"test":"node test.js"},"dependencies":{"netstring":"https://github.com/DTrejo/node-netstring/tarball/master","ms":"~0.1.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"dtrejo","email":"david.daniel.trejo@gmail.com"},"_id":"jotan@0.0.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e377d78e7dde45b1c08acab624fb4d7c826ef43a","tarball":"http://registry.npmjs.org/jotan/-/jotan-0.0.0.tgz"},"maintainers":[{"name":"dtrejo","email":"david.daniel.trejo@gmail.com"}]}},"readme":"playing with sending framed data over tcp sockets. because udp in node is slow.\n\n---\n\nWork in progress\n\njotan — *j*son *o*ver *t*cp *a*nd *n*etstrings\n===\n\n## client\n\n### how to connect to a server\n\n```js\nvar jotan = require('jotan')\n\nvar j = jotan(PORT, HOST)\nj.send(new Buffer(\"c\"))\n\nsetTimeout(function() {\n j.send({ life: 'rocks!' })\n\n // fails due to default 1000ms timeout on the server\n setTimeout(function() {\n j.send({ life: 'rocks!' })\n j.end()\n }, 1100)\n\n}, 500)\n```\n\n## server\nSee test.js for an example.\n\n## todos\n- client\n - reconnect\n - emit errors\n - chainable\n - pipeable\n- server\n - expose a server\n - what to do when client sends bad data\n - emit errors\n - chainable\n","maintainers":[{"name":"dtrejo","email":"david.daniel.trejo@gmail.com"}],"time":{"modified":"2012-06-14T05:39:52.633Z","created":"2012-06-14T05:39:51.324Z","0.0.0":"2012-06-14T05:39:52.632Z"},"author":{"name":"David Trejo","email":"david.daniel.trejo@gmail.com","url":"http://dtrejo.com/"},"_id":"jotan","_rev":"1-53ae63537161d323f2fed2274229c7bb"}!ÿdocument-storeÿjoshfirefactory¢{"id":"joshfirefactory","rev":"1-ec7e4fc440445f8660aa19cbd702c3cb","rev_tree":[{"pos":1,"ids":["ec7e4fc440445f8660aa19cbd702c3cb",{"status":"available"},[]]}],"rev_map":{"1-ec7e4fc440445f8660aa19cbd702c3cb":3898},"winningRev":"1-ec7e4fc440445f8660aa19cbd702c3cb","deleted":false,"seq":3898}ÿby-sequenceÿ0000000000003898É{"name":"joshfirefactory","description":"Joshfire Factory Node.js runtime","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"joshfirefactory","fullName":"Joshfire Factory Node.js runtime","version":"0.1.0","homepage":"http://factory.joshfire.com","description":"Joshfire Factory Node.js runtime","maintainers":[{"name":"sylvinus","email":"sylvain@sylvainzimmer.com"}],"main":"./main.js","dependencies":{"requirejs":"2.0.1","request":"2.9.202","underscore":"1.3.3"},"_npmUser":{"name":"sylvinus","email":"sylvain@sylvainzimmer.com"},"_id":"joshfirefactory@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"8b9403379a6490891dbade176a9ea5d8e09238bd","tarball":"http://registry.npmjs.org/joshfirefactory/-/joshfirefactory-0.1.0.tgz"},"readme":""},"0.1.1":{"name":"joshfirefactory","fullName":"Joshfire Factory Node.js runtime","version":"0.1.1","homepage":"http://factory.joshfire.com","description":"Joshfire Factory Node.js runtime","maintainers":[{"name":"sylvinus","email":"sylvain@sylvainzimmer.com"}],"main":"./main.js","dependencies":{"requirejs":"2.0.1","request":"2.9.202","mongodb":"1.0.2","underscore":"1.3.3"},"_npmUser":{"name":"sylvinus","email":"sylvain@sylvainzimmer.com"},"_id":"joshfirefactory@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4bcfa22cb8490be6a6732c239ecc963cce1cb671","tarball":"http://registry.npmjs.org/joshfirefactory/-/joshfirefactory-0.1.1.tgz"},"readme":""}},"readme":"","maintainers":[{"name":"sylvinus","email":"sylvain@sylvainzimmer.com"}],"time":{"modified":"2012-06-14T10:13:49.995Z","created":"2012-06-13T08:45:48.592Z","0.1.0":"2012-06-13T08:45:49.810Z","0.1.1":"2012-06-14T10:13:49.995Z"},"_id":"joshfirefactory","_rev":"1-ec7e4fc440445f8660aa19cbd702c3cb"}ÿdocument-storeÿjig–{"id":"jig","rev":"1-caae6c06c497f3a04badf43711283ead","rev_tree":[{"pos":1,"ids":["caae6c06c497f3a04badf43711283ead",{"status":"available"},[]]}],"rev_map":{"1-caae6c06c497f3a04badf43711283ead":3897},"winningRev":"1-caae6c06c497f3a04badf43711283ead","deleted":false,"seq":3897}ÿby-sequenceÿ0000000000003897 {"name":"jig","description":"Jenkins-IRC-Github integration.","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"jig","description":"Jenkins-IRC-Github integration.","version":"0.3.0","author":{"name":"James Socol","email":"james@mozilla.com","url":"http://coffeeonthekeyboard.com"},"repository":{"type":"git","url":"git://github.com/jsocol/jig.git"},"dependencies":{"nomnom":">=0.4.2","irc":">=0.2.0","daemon":">=0.3.0","inireader":">=0.2.0","github":">=0.0.7"},"bin":{"jig":"./jig.js"},"_npmUser":{"name":"jsocol","email":"james.socol@gmail.com"},"_id":"jig@0.3.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.7.4","_defaultsLoaded":true,"dist":{"shasum":"0fa2d043f82ef8c7d0bca9a96d77a3d272b9b90b","tarball":"http://registry.npmjs.org/jig/-/jig-0.3.0.tgz"},"readme":"","maintainers":[{"name":"jsocol","email":"james.socol@gmail.com"}]}},"maintainers":[{"name":"jsocol","email":"james.socol@gmail.com"}],"time":{"modified":"2012-07-12T01:08:11.117Z","created":"2011-10-25T22:56:25.435Z","0.3.0":"2012-07-12T01:08:11.117Z"},"author":{"name":"James Socol","email":"james@mozilla.com","url":"http://coffeeonthekeyboard.com"},"repository":{"type":"git","url":"git://github.com/jsocol/jig.git"},"_id":"jig","_rev":"1-caae6c06c497f3a04badf43711283ead"})ÿdocument-storeÿjakobmattsson-swfobjectª{"id":"jakobmattsson-swfobject","rev":"1-5465877e5c98f26542fb5c0fd7d7e85b","rev_tree":[{"pos":1,"ids":["5465877e5c98f26542fb5c0fd7d7e85b",{"status":"available"},[]]}],"rev_map":{"1-5465877e5c98f26542fb5c0fd7d7e85b":3896},"winningRev":"1-5465877e5c98f26542fb5c0fd7d7e85b","deleted":false,"seq":3896}ÿby-sequenceÿ0000000000003896ª {"name":"jakobmattsson-swfobject","description":"SWFObject is a free, open-source tool for embedding swf content in websites.","dist-tags":{"latest":"2.2.0"},"versions":{"2.2.0":{"name":"jakobmattsson-swfobject","description":"SWFObject is a free, open-source tool for embedding swf content in websites.","main":"./swfobject/src/swfobject.js","version":"2.2.0","repository":{"type":"git","url":"git@github.com:jakobmattsson/swfobject.git"},"_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"jakobmattsson-swfobject@2.2.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e2077030f181018ce786194e050fffb3b5205732","tarball":"http://registry.npmjs.org/jakobmattsson-swfobject/-/jakobmattsson-swfobject-2.2.0.tgz"},"readme":"","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]}},"readme":"","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}],"time":{"modified":"2012-05-12T19:40:41.071Z","created":"2012-05-12T19:40:39.467Z","2.2.0":"2012-05-12T19:40:41.071Z"},"repository":{"type":"git","url":"git@github.com:jakobmattsson/swfobject.git"},"_id":"jakobmattsson-swfobject","_rev":"1-5465877e5c98f26542fb5c0fd7d7e85b"}.ÿdocument-storeÿjakobmattsson-client-cookies¯{"id":"jakobmattsson-client-cookies","rev":"1-54d8c75f85058e778765a4730f8afa5c","rev_tree":[{"pos":1,"ids":["54d8c75f85058e778765a4730f8afa5c",{"status":"available"},[]]}],"rev_map":{"1-54d8c75f85058e778765a4730f8afa5c":3895},"winningRev":"1-54d8c75f85058e778765a4730f8afa5c","deleted":false,"seq":3895}ÿby-sequenceÿ0000000000003895ÎM{"name":"jakobmattsson-client-cookies","description":"Client-Side Cookie Manipulation API","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.5":{"name":"jakobmattsson-client-cookies","description":"Client-Side Cookie Manipulation API","homepage":"http://github.com/ScottHamper/Cookies","keywords":["cookies","client","browser"],"author":{"name":"Scott Hamper"},"repository":{"type":"git","url":"git://github.com/ScottHamper/Cookies.git"},"main":"cookies.js","version":"0.1.5","_npmUser":{"name":"jakobm","email":"jakob.mattsson@gmail.com"},"_id":"jakobmattsson-client-cookies@0.1.5","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"9b659a15ac360900103f8b993e43a0f1493275ff","tarball":"http://registry.npmjs.org/jakobmattsson-client-cookies/-/jakobmattsson-client-cookies-0.1.5.tgz"},"maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}]}},"readme":"# Cookies.js\n\nCookies.js is a small client-side javascript library that makes managing cookies easy.\nIn addition to its simple API, Cookies.js will automatically parse a JSON encoded string value\nback into its native data type when accessed, and cache the result. For users of AMD\nloaders, Cookies.js will `define` itself. For users of CommonJS, Cookies.js will export itself.\nOtherwise a global variable will be created.\n\n## Features\n\n- Automatically JSON encodes/decodes cookie values.\n- Caches cookie values, making sequential reads faster.\n- Supports AMD / CommonJS loaders.\n- Cross browser.\n- Lightweight (less than 1 KB, minified and gzipped).\n\n## Browser Compatibility\n\nThe following browsers have passed all of the Cookies.js unit tests:\n- Chrome\n- Firefox 3+\n- Safari 4+\n- Opera 10+\n- Internet Explorer 6+\n\n## Dependencies\n\nFor modern browsers, Cookies.js has no dependencies. For older browsers, the `JSON.parse` and `JSON.stringify` functions\nmust be [shimmed](http://en.wikipedia.org/wiki/Shim_\\(computing\\)). A shim is not required for the following major browser\nversions:\n- Chrome 3+\n- Firefox 3.1+\n- Safari 4+\n- Opera 10.5+\n- Internet Explorer 8+\n\nIt is recommended to use Douglas Crockford's [json2.js](https://github.com/douglascrockford/JSON-js) or Kit Cambridge's [json3.js](http://bestiejs.github.com/json3/)\nlibrary for a `JSON` shim.\n\n## A Note About Encoding\n\nCookies.js URI encodes cookie keys and values, and expects cookie keys to be URI encoded when accessing a cookie. In addition,\nbefore the cookie value is URI encoded, it is first JSON encoded via `JSON.stringify`. Keep this in mind when working with cookies on\nthe server side.\n\n### .NET Users\nDo not use [HttpUtility.UrlEncode](http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx) and\n[HttpUtility.UrlDecode](http://msdn.microsoft.com/en-us/library/adwtk1fy.aspx) on cookie keys or values. `HttpUtility.UrlEncode` will\nimproperly escape space characters to `'+'` and lower case every escape sequence. `HttpUtility.UrlDecode` will improperly unescape\nevery `'+'` to a space character. Instead, use\n[System.Uri.EscapeDataString](http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx) and\n[System.Uri.UnescapeDataString](http://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring.aspx).\n\n# API Reference\n\n## Methods\n\n### Cookies.set(key, value [, options])\n*Alias: Cookies(key, value [, options])*\n\nSets a cookie in the document. If the cookie does not already exist, it will be created.\n\n#### Arguments:\n*key*: A string value of the cookie key to set \n*value*: Any type that can be encoded in a JSON string (via `JSON.stringify`) \n*options*: An object containing additional parameters about the cookie (discussed below)\n\n#### Returns:\nThe `Cookies` object is returned to support chaining.\n\n#### The 'options' Object:\n*path*: A string value of the path of the cookie \n*domain*: A string value of the domain of the cookie \n*expires*: A number (of seconds), a date parsable string, or a `Date` object of when the cookie will expire \n*secure*: A boolean value of whether or not the cookie should only be available over SSL\n\nIf any property is left undefined, the browser's default value will be used instead. A default value\nfor any property may be set in the `Cookies.defaults` object.\n\n**Why use 'expires' instead of 'max-age' (or why not both)?** \nInternet Explorer 6 - 8 do not support 'max-age', so Cookies.js always uses 'expires' internally.\nHowever, Cookies.js simplifies things by allowing the `options.expires` property to be used in the\nsame way as 'max-age' (by setting `options.expires` to the number of seconds the cookie should exist for).\n\n#### Example usage:\n // Setting values of various data types\n Cookies.set('string', 'value');\n Cookies.set('number', 123);\n Cookies.set('array', [1, 2, 3]);\n Cookies.set('object', { hello: 'world' });\n \n // Chaining sets together\n Cookies.set('string', 'value').set('number', 123);\n \n // Setting cookies with additional options\n Cookies.set('string', 'value', { domain: 'www.example.com', secure: true });\n \n // Setting cookies with expiration values\n Cookies.set('string', 'value', { expires: 600 }); // Expires in 10 minutes\n Cookies.set('string', 'value', { expires: '01-01-2012' });\n Cookies.set('string', 'value', { expires: new Date(2012, 0, 1) });\n \n // Using the alias\n Cookies('array', [1, 2, 3], { secure: true });\n\n### Cookies.get(key)\n*Alias: Cookies(key)*\n\nRetrieves the cookie value of the most locally scoped cookie with the specified key.\nIf the cookie value is a JSON encoded string, the parsed JSON value will be returned.\n\n#### Arguments:\n*key*: A string value of a cookie key\n\n#### Returns:\nA JSON parsed representation of the cookie value, if it can be parsed, otherwise the string value of the cookie.\n\n#### Example Usage:\n // First set some cookies\n Cookies.set('string', 'value');\n Cookies.set('number', 123);\n Cookies.set('object', { hello: 'world' });\n \n // Get the û6¡Íùcookie values (as its original data type)\n Cookies.get('string'); // \"value\"\n Cookies.get('number'); // 123\n Cookies.get('object'); // { hello: 'world' }\n \n // Using the alias\n Cookies('string'); // \"value\"\n \n### Cookies.expire(key [, options])\n*Alias: Cookies(key, `undefined` [, options])*\n\nExpires a cookie, removing it from the document.\n\n#### Arguments:\n*key*: A string value of the cookie key to expire \n*options*: An object containing additional parameters about the cookie (discussed below)\n\n#### Returns:\nThe `Cookies` object is returned to support chaining.\n\n#### The 'options' Object:\n*path*: A string value of the path of the cookie \n*domain*: A string value of the domain of the cookie\n\nIf any property is left undefined, the browser's default value will be used instead. A default value\nfor any property may be set in the `Cookies.defaults` object.\n\n#### Example Usage:\n // First set a cookie and get its value\n Cookies.set('string', 'value').get('string'); // \"value\"\n \n // Expire the cookie and try to get its value\n Cookies.expire('string').get('string'); // undefined\n \n // Using the alias instead\n Cookies('string', undefined);\n \n\n## Properties\n\n### Cookies.enabled\nA boolean value of whether or not the browser has cookies enabled.\n\n#### Example Usage:\n if (Cookies.enabled) {\n Cookies.set('key', 'value');\n }\n\n### Cookies.defaults\nAn object representing default options to be used when setting and expiring cookie values.\n`Cookies.defaults` supports the following properties:\n\n*path*: A string value of the path of the cookie \n*domain*: A string value of the domain of the cookie \n*expires*: A number (of seconds), a date parsable string, or a `Date` object of when the cookie will expire \n*secure*: A boolean value of whether or not the cookie should only be available over SSL\n\nBy default, only `Cookies.defaults.path` is set to `'/'`, all other properties are `undefined`.\nIf any property is left undefined, the browser's default value will be used instead.\n\n#### Example Usage:\n Cookies.defaults = {\n path: '/',\n secure: true\n };\n \n Cookies.set('key', 'value'); // Will be secure and have a path of '/'\n Cookies.expire('key'); // Will expire the cookie with a path of '/'\n \n \n# Change Log\n\n## 0.1.7\n- Changed cookie value encoding to only encode the special characters defined in [RFC6265](http://www.rfc-editor.org/rfc/rfc6265.txt)\n\n## 0.1.6\n- Added `'use strict';` directive.\n- Removed some extraneous code.\n\n## 0.1.5\n- Added CommonJS module support.\n- Setting an `undefined` value with `Cookies.set` now expires the cookie, mirroring the `Cookies.expire` alias syntax.\n- Simplified how the `document.cookie` string is parsed.\n\n## 0.1.4\n- Fixed a bug where setting a cookie's `secure` value to`false` caused the `Cookies.defaults.secure` value to be used instead.\n\n## 0.1.3\n- Added aliases for `Cookies.set` and `Cookies.expire`.\n\n## 0.1.2\n- Set `Cookies.defaults.path` to `'/'`.\n- Replaced `escape` and `unescape` function calls with `encodeURIComponent` and `decodeURIComponent`, because the former are deprecated.\n- Cookie keys are now URI encoded in addition to cookie values.\n\n## 0.1.1\n- Cross browser fixes.\n\n## 0.1.0\n- Initial commit.","maintainers":[{"name":"jakobm","email":"jakob.mattsson@gmail.com"}],"time":{"modified":"2012-05-12T19:42:20.154Z","created":"2012-05-12T19:42:18.663Z","0.1.5":"2012-05-12T19:42:20.154Z"},"author":{"name":"Scott Hamper"},"repository":{"type":"git","url":"git://github.com/ScottHamper/Cookies.git"},"_id":"jakobmattsson-client-cookies","_rev":"1-54d8c75f85058e778765a4730f8afa5c"}ÿdocument-storeÿitv_server{"id":"itv_server","rev":"1-64aadf6c7a88be404697a813b641d9a3","rev_tree":[{"pos":1,"ids":["64aadf6c7a88be404697a813b641d9a3",{"status":"available"},[]]}],"rev_map":{"1-64aadf6c7a88be404697a813b641d9a3":3894},"winningRev":"1-64aadf6c7a88be404697a813b641d9a3","deleted":false,"seq":3894}ÿby-sequenceÿ0000000000003894­{"name":"itv_server","description":"The bootstrap server we use at i.tv, its swell!","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Addison Higham","email":"addison@i.tv","url":"@addisonj"},"name":"itv_server","description":"The bootstrap server we use at i.tv, its swell!","version":"0.0.1","homepage":"github.com/idottv/itv_server","repository":{"type":"git","url":"git://github.com/idottv/itv_server.git"},"engines":{"node":"0.6.x"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"scripts":{"prepublish":"coffee -c lib/*.coffee"},"_npmUser":{"name":"addisonj","email":"addisonj@gmail.com"},"_id":"itv_server@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"8ad8b42d0dc8e4e5d188d7a447f84f1c5a79d2a7","tarball":"http://registry.npmjs.org/itv_server/-/itv_server-0.0.1.tgz"},"readme":"","maintainers":[{"name":"addisonj","email":"addisonj@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Addison Higham","email":"addison@i.tv","url":"@addisonj"},"name":"itv_server","description":"The bootstrap server we use at i.tv, its swell!","version":"0.0.2","homepage":"github.com/idottv/itv_server","repository":{"type":"git","url":"git://github.com/idottv/itv_server.git"},"engines":{"node":"0.6.x"},"main":"index.js","dependencies":{"bouncer":"0.0.x","coffee-script":"1.3.x","commander":"0.6.x"},"devDependencies":{},"optionalDependencies":{},"scripts":{"prepublish":"coffee -c lib/*.coffee"},"_npmUser":{"name":"addisonj","email":"addisonj@gmail.com"},"_id":"itv_server@0.0.2","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"62eddde0d728aff06c989f82d402d65a5a29dc89","tarball":"http://registry.npmjs.org/itv_server/-/itv_server-0.0.2.tgz"},"readme":"","maintainers":[{"name":"addisonj","email":"addisonj@gmail.com"}],"directories":{}},"0.0.3":{"author":{"name":"Addison Higham","email":"addison@i.tv","url":"@addisonj"},"name":"itv_server","description":"The bootstrap server we use at i.tv, its swell!","version":"0.0.3","homepage":"github.com/idottv/itv_server","bin":{"itv_server":"./bin/itv-server"},"repository":{"type":"git","url":"git://github.com/idottv/itv_server.git"},"engines":{"node":"0.6.x"},"main":"index.js","dependencies":{"bouncer":"0.0.x","coffee-script":"1.3.x","commander":"0.6.x"},"devDependencies":{},"optionalDependencies":{},"scripts":{"prepublish":"coffee -c lib/*.coffee"},"_npmUser":{"name":"addisonj","email":"addisonj@gmail.com"},"_id":"itv_server@0.0.3","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"cb8a705645edc27bc19b095ff245dba4989eb363","tarball":"http://registry.npmjs.org/itv_server/-/itv_server-0.0.3.tgz"},"readme":"","maintainers":[{"name":"addisonj","email":"addisonj@gmail.com"}]}},"readme":"","maintainers":[{"name":"addisonj","email":"addisonj@gmail.com"}],"time":{"modified":"2012-06-14T15:11:46.672Z","created":"2012-06-13T23:12:26.528Z","0.0.1":"2012-06-13T23:12:27.489Z","0.0.2":"2012-06-14T14:43:00.885Z","0.0.3":"2012-06-14T15:11:46.672Z"},"author":{"name":"Addison Higham","email":"addison@i.tv","url":"@addisonj"},"repository":{"type":"git","url":"git://github.com/idottv/itv_server.git"},"_id":"itv_server","_rev":"1-64aadf6c7a88be404697a813b641d9a3"}ÿdocument-storeÿishare-testž{"id":"ishare-test","rev":"1-b47021fdfcf3d48afce1769c01c12703","rev_tree":[{"pos":1,"ids":["b47021fdfcf3d48afce1769c01c12703",{"status":"available"},[]]}],"rev_map":{"1-b47021fdfcf3d48afce1769c01c12703":3893},"winningRev":"1-b47021fdfcf3d48afce1769c01c12703","deleted":false,"seq":3893}ÿby-sequenceÿ0000000000003893ö{"name":"ishare-test","description":"nodejs client for service coodernation with zookeeper","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"ishare-test","version":"0.1.0","author":{"name":"Vincent-zhao","url":"zzqvincent@gmail.com"},"contributors":[],"homepage":"","description":"nodejs client for service coodernation with zookeeper","keywords":["nodejs","service","zookeeper"],"main":"lib/client","dependencies":{"light-node-zookeeper":">=0.1.0"},"engines":{"node":">=0.6.17"},"devDependencies":{"should":">=0.4.2","mocha":">=0.9.0"},"scripts":{"install":"make install"},"_npmUser":{"name":"vincent-zhao","email":"zzqvincent@gmail.com"},"_id":"ishare-test@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0e8273835682d59e353b72fec84757e58d140c69","tarball":"http://registry.npmjs.org/ishare-test/-/ishare-test-0.1.0.tgz"},"maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}]}},"readme":"# 介ç»\n\n`ishare`是一个nodejs客户端,其é…åˆzookeeperæ¥æä¾›æœåŠ¡å调的功能。用户å¯ä»¥ä½¿ç”¨æ­¤å®¢æˆ·ç«¯åœ¨zookeeper上方便的注册æœåŠ¡æˆ–è€…èŽ·å–æœåŠ¡ã€‚æœåŠ¡æ³¨å†Œæ³¨é”€å’ŒæœåŠ¡ä¹‹é—´çš„ç›¸äº’è°ƒç”¨å˜å¾—éžå¸¸ä¾¿æ·ã€‚\n\n# 使用场景\n\nç»å¸¸ä¼šæœ‰è¿™æ ·çš„一些场景:\n\n* 多个æœåŠ¡ä¹‹é—´å­˜åœ¨ä¾èµ–ï¼Œå³æœåŠ¡éœ€è¦è°ƒç”¨æœåŠ¡ã€‚ç„¶è€ŒæœåŠ¡çš„èŽ·å–往往通过é…置文件得知其他æœåŠ¡çš„ä¿¡æ¯ã€‚如果被ä¾èµ–æœåŠ¡å‡ºçŽ°é—®é¢˜ï¼Œä¸»åŠ¨æˆ–è€…è¢«è¿«ä¸‹çº¿ï¼Œåˆ™éœ€è¦æ‰‹å·¥ä¿®æ”¹é…置文件或者å‘é€ç³»ç»Ÿä¿¡å·çš„æ–¹å¼æ¥é€šçŸ¥ä¾èµ–下线æœåŠ¡çš„æœåŠ¡ã€‚\n* åŒæ ·ï¼Œå¦‚果被ä¾èµ–æœåŠ¡æ·»åŠ æœºå™¨ï¼Œè°ƒç”¨æ­¤æœåŠ¡çš„æœåŠ¡ä¹Ÿéœ€è¦äººå·¥å‚与获得信æ¯ã€‚\n* æœåŠ¡æ–°ç‰ˆæœ¬ä¸Šçº¿å¾€å¾€æ— æ³•åšåˆ°å®Œå…¨å¹³æ»‘。\n* æœåŠ¡æ›´æ–°ç‰ˆæœ¬ï¼Œé‡æ–°åœ¨ä¸€äº›æœºå™¨ä¸Šå¸ƒç½®æˆ–è€…ä»¥æ–°ç«¯å£æ–¹å¼æä¾›æœåŠ¡ï¼ˆæ—§æœåŠ¡ä¸ä¸‹çº¿å¯èƒ½æ˜¯å› ä¸ºæ–¹ä¾¿å›žæ»šæˆ–者作比较等),此时调用此æœåŠ¡çš„æœåŠ¡æ–¹ä¹Ÿéœ€è¦äººå·¥å¹²é¢„。\n\n上述四ç§ä¸ºå¸¸è§æƒ…况,如果æœåŠ¡å¾ˆå¤šï¼Œç›¸äº’ä¹‹é—´çš„è°ƒç”¨å…³ç³»å¤æ‚,那么上述问题造æˆçš„麻烦会以指数级增长,一个失误就会引起线上的故障。怎么办?`ishare`帮你æžå®šä¸€åˆ‡ã€‚\n\n# 功能\n\n* å°†æœåŠ¡æ³¨å†Œåˆ°zookeeper上:调用此æœåŠ¡çš„æœåŠ¡å¯ä»¥é€šè¿‡åå­—ç›´æŽ¥èŽ·å–æ­¤æœåŠ¡ä¿¡æ¯ï¼Œå¹¶ä¸”在获å–åŽï¼Œå¦‚果此æœåŠ¡å‘生å˜åŒ–,会收到通知。\n* 注销æœåŠ¡,æœåŠ¡ä¸‹çº¿ï¼šè°ƒç”¨æ­¤æœåŠ¡çš„æœåŠ¡ä¼šæ”¶åˆ°ç›¸åº”é€šçŸ¥ã€‚\n* èŽ·å–æœåŠ¡ï¼šç›´æŽ¥é€šè¿‡çº¦å®šå¥½çš„æœåŠ¡åå­—èŽ·å–æœåŠ¡ï¼Œå¹¶ä¸”æ­¤æœåŠ¡å‘生å˜åŒ–时会得到通知。\n\n# 进阶\n\n* æœåŠ¡é€‰æ‹©ï¼šèŽ·å–æœåŠ¡æ—¶ï¼Œé™¤äº†æŒ‡å®šæœåŠ¡å称,还å¯ä»¥æŒ‡å®šéœ€è¦èŽ·å–çš„æœåŠ¡ç‰ˆæœ¬ï¼Œæä¾›èŒƒå›´æŽ§åˆ¶ã€‚还å¯ä»¥è®¾ç½®è޷得当剿œåŠ¡çš„æœ€æ–°ç‰ˆæœ¬ï¼Œæ— éœ€çŸ¥é“æœåŠ¡çš„å…·ä½“ç‰ˆæœ¬å·ã€‚\n* 心跳监测:nodejs客户端会对请求到的æœåŠ¡ç»´æŒå¿ƒè·³ç›‘测。\n* 版本控制:版本节点自动添加\n\n# 接å£\nè§interface.md文件\n\n# 安装\n```bash\n$ npm install ishare \n```\n\n# 使用\n```javascript\nvar iShare = require('ishare').createClient({\n zookeeper:'',//zk地å€\n username:'',//用户å(暂无用)\n password:'',//密ç ï¼ˆæš‚无用)\n cachepath:''//本地化文件路径\n});\n```\n\n# 测试\n修改test/test_config目录中的zk地å€ï¼Œç„¶åŽåœ¨æ ¹ç›®å½•下è¿è¡Œmakeå°±å¯ä»¥è¿›è¡Œå•元测试\n\n# 问题\nIShare详细的使用方å¼å¯ä»¥å‚考test目录下å•元测试,如有问题欢迎和我è”系,è§ä¸‹é¢è”系方å¼ã€‚\n\n# è”系方å¼\nyixuan.zzq@taobao.com / zzqvincent@gmail.com\n","maintainers":[{"name":"vincent-zhao","email":"zzqvincent@gmail.com"}],"time":{"modified":"2012-06-07T12:44:43.232Z","created":"2012-06-07T12:44:36.567Z","0.1.0":"2012-06-07T12:44:43.232Z"},"author":{"name":"Vincent-zhao","url":"zzqvincent@gmail.com"},"_id":"ishare-test","_rev":"1-b47021fdfcf3d48afce1769c01c12703"}ÿdocument-storeÿinverser›{"id":"inverser","rev":"1-28cd09121978ef172dc19ce6a7be9329","rev_tree":[{"pos":1,"ids":["28cd09121978ef172dc19ce6a7be9329",{"status":"available"},[]]}],"rev_map":{"1-28cd09121978ef172dc19ce6a7be9329":3892},"winningRev":"1-28cd09121978ef172dc19ce6a7be9329","deleted":false,"seq":3892}ÿby-sequenceÿ0000000000003892Š{"name":"inverser","description":"Simply translate LTR-based CSS file to RTL, or the opposite. Can be both used on the server-side with Node.js, or client-side.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"inverser","description":"Simply translate LTR-based CSS file to RTL, or the opposite. Can be both used on the server-side with Node.js, or client-side.","version":"0.1.0","author":{"name":"Pierre Matri","email":"pierre.matri@coolony.com"},"contributors":[{"name":"Pierre Matri","email":"pierre.matri@coolony.com"}],"devDependencies":{"mocha":"*","should":"*"},"keywords":["inverser","inverse","css","ltr","rtl","i18n","internationalization"],"repository":{"type":"git","url":"git://github.com/coolony/inverser.git"},"main":"index","scripts":{"test":"make test"},"engines":{"node":">= 0.5.0 < 0.7.0"},"_npmUser":{"name":"coolony","email":"pierre.matri@coolony.com"},"_id":"inverser@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"35e75fa34a36441803a0bd08978063b6629ca8fa","tarball":"http://registry.npmjs.org/inverser/-/inverser-0.1.0.tgz"},"maintainers":[{"name":"coolony","email":"pierre.matri@coolony.com"}]}},"readme":"inverser\n========\n\nSimply translate LTR-based CSS file to RTL, or the opposite. Can be both used on the server-side with Node.js, or client-side.","maintainers":[{"name":"coolony","email":"pierre.matri@coolony.com"}],"time":{"modified":"2012-04-23T22:32:16.373Z","created":"2012-04-23T22:32:14.492Z","0.1.0":"2012-04-23T22:32:16.373Z"},"author":{"name":"Pierre Matri","email":"pierre.matri@coolony.com"},"repository":{"type":"git","url":"git://github.com/coolony/inverser.git"},"_id":"inverser","_rev":"1-28cd09121978ef172dc19ce6a7be9329"}ÿdocument-storeÿinjector.jsž{"id":"injector.js","rev":"1-b1f790e4f531ac51d7905455059fd675","rev_tree":[{"pos":1,"ids":["b1f790e4f531ac51d7905455059fd675",{"status":"available"},[]]}],"rev_map":{"1-b1f790e4f531ac51d7905455059fd675":3891},"winningRev":"1-b1f790e4f531ac51d7905455059fd675","deleted":false,"seq":3891}ÿby-sequenceÿ0000000000003891¶ {"name":"injector.js","description":"[Some nice adjective] dependency injection library for JavaScript in browsers and NodeJS","dist-tags":{"latest":"0.9.0"},"versions":{"0.9.0":{"name":"injector.js","description":"[Some nice adjective] dependency injection library for JavaScript in browsers and NodeJS","version":"0.9.0","homepage":"https://github.com/TEHEK/injector.js","author":{"name":"TEHEK Firefox"},"repository":{"type":"git","url":"git://github.com/TEHEK/injector.js.git"},"bugs":{"email":"dev@tehek.net","url":"https://github.com/TEHEK/injector.js/issues"},"keywords":["node","dependency injection","di container"],"licenses":[{"type":"BSD","file":"LICENSE.BSD"}],"scripts":{"test":"node_modules/.bin/jasmine-node test/specs/"},"devDependencies":{"jasmine-node":">=1.0"},"main":"./lib/injector.js","engines":{"node":">=0.4"},"_npmUser":{"name":"TEHEK","email":"npm@tehek.net"},"_id":"injector.js@0.9.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"82cfedde5ee9ea19913f0d6c086aceb1f29cfdc2","tarball":"http://registry.npmjs.org/injector.js/-/injector.js-0.9.0.tgz"},"maintainers":[{"name":"TEHEK","email":"npm@tehek.net"}]}},"readme":"# Injector.js\n\nDependency injection library for JavaScript in browsers and NodeJS.\n\nWill write docs soon =]","maintainers":[{"name":"TEHEK","email":"npm@tehek.net"}],"time":{"modified":"2012-06-20T08:48:22.873Z","created":"2012-06-20T08:48:19.377Z","0.9.0":"2012-06-20T08:48:22.873Z"},"author":{"name":"TEHEK Firefox"},"repository":{"type":"git","url":"git://github.com/TEHEK/injector.js.git"},"_id":"injector.js","_rev":"1-b1f790e4f531ac51d7905455059fd675"}ÿdocument-storeÿimgcheck›{"id":"imgcheck","rev":"1-4986dc755d0afa003d46768ded9b182b","rev_tree":[{"pos":1,"ids":["4986dc755d0afa003d46768ded9b182b",{"status":"available"},[]]}],"rev_map":{"1-4986dc755d0afa003d46768ded9b182b":3890},"winningRev":"1-4986dc755d0afa003d46768ded9b182b","deleted":false,"seq":3890}ÿby-sequenceÿ0000000000003890ø{"name":"imgcheck","description":"files.json file given and imgcheck will check actual image size to the requirements in the files.json file","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"http://wlaurance.com"},"name":"imgcheck","description":"files.json file given and imgcheck will check actual image size to the requirements in the files.json file","version":"0.0.1","homepage":"https://github.com/wlaurance/imgcheck","repository":{"type":"git","url":"git://github.com/wlaurance/imgcheck.git"},"main":"./lib/imgcheck.js","scripts":{"test":"make test"},"dependencies":{"imageinfo":"1.0.4","commander":"1.0.0","colors":"*","async":"0.1.22"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"wlaurance","email":"w.laurance@gmail.com"},"_id":"imgcheck@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e696c0e5e0daf7ac3c3b6a15001a2c2019ce9ea1","tarball":"http://registry.npmjs.org/imgcheck/-/imgcheck-0.0.1.tgz"},"maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}]},"0.0.2":{"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"http://wlaurance.com"},"name":"imgcheck","description":"files.json file given and imgcheck will check actual image size to the requirements in the files.json file","version":"0.0.2","homepage":"https://github.com/wlaurance/imgcheck","repository":{"type":"git","url":"git://github.com/wlaurance/imgcheck.git"},"main":"./lib/imgcheck.js","bin":{"imgcheck":"./bin/imgcheck"},"scripts":{"test":"make test"},"dependencies":{"imageinfo":"1.0.4","commander":"1.0.0","colors":"*","async":"0.1.22"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"wlaurance","email":"w.laurance@gmail.com"},"_id":"imgcheck@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7beae8e506b780d29579d9e15f3ce6290c36e5d3","tarball":"http://registry.npmjs.org/imgcheck/-/imgcheck-0.0.2.tgz"},"maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}]}},"readme":"imgcheck\n========","maintainers":[{"name":"wlaurance","email":"w.laurance@gmail.com"}],"time":{"modified":"2012-07-12T19:45:57.140Z","created":"2012-07-12T19:33:04.600Z","0.0.1":"2012-07-12T19:33:05.358Z","0.0.2":"2012-07-12T19:45:57.140Z"},"author":{"name":"Will S. Laurance","email":"w.laurance@gmail.com","url":"http://wlaurance.com"},"repository":{"type":"git","url":"git://github.com/wlaurance/imgcheck.git"},"_id":"imgcheck","_rev":"1-4986dc755d0afa003d46768ded9b182b"}ÿdocument-storeÿim-cache›{"id":"im-cache","rev":"1-c332c4f4e0c1e1ae88cbcb3adf8d990f","rev_tree":[{"pos":1,"ids":["c332c4f4e0c1e1ae88cbcb3adf8d990f",{"status":"available"},[]]}],"rev_map":{"1-c332c4f4e0c1e1ae88cbcb3adf8d990f":3889},"winningRev":"1-c332c4f4e0c1e1ae88cbcb3adf8d990f","deleted":false,"seq":3889}ÿby-sequenceÿ0000000000003889Ä!{"name":"im-cache","description":"Simple in-memory cache for node.js","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"im-cache","description":"Simple in-memory cache for node.js","keywords":["cache","in-memory"],"version":"0.0.1","author":{"name":"Peder Hans Øverland","email":"peder@alveroverland.com"},"contributors":[],"config":{},"main":"index.js","dependencies":{"underscore":"~1.3.3"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"readme":"# im-node\r\nim-node is a simple in-memory object cache.\r\n\r\n## Install\r\nnpm install im-node\r\n\r\n## Usage\r\n### cache.set(key, object[, timeout])\r\n\tvar cache = require('im-cache');\r\n\t//Cache {data: true} for one hour with key \"key\"\r\n\tcache.set(\"key\", {data: true}, 1000*60*60)\r\n\t//Cache {data: true} forever with key \"key\"\r\n\tcache.set(\"key\", {data: true})\r\n### cache.get(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.get(\"key\");\r\n### cache.remove(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.remove(\"key\");\r\n\t// Equals undefined:\r\n\tcache.get(\"key\");\r\n### cache.size()\r\nReturns cache size\r\n### cache.flush()\r\nEmpties cache\r\n","_id":"im-cache@0.0.1","dist":{"shasum":"9525b2d486d1b1d839c9f125e2dcfdf993f2397f","tarball":"http://registry.npmjs.org/im-cache/-/im-cache-0.0.1.tgz"},"maintainers":[{"name":"pederoverland","email":"peder@alveroverland.com"}],"directories":{}},"0.0.2":{"name":"im-cache","description":"Simple in-memory cache for node.js","keywords":["cache","in-memory"],"version":"0.0.2","author":{"name":"Peder Hans Øverland","email":"peder@alveroverland.com"},"contributors":[],"config":{},"main":"index.js","dependencies":{"underscore":"~1.3.3"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"directories":{"test":"tests"},"devDependencies":{},"scripts":{"test":"nodeunit tests/index.js"},"repository":"","license":"BSD","readme":"# im-node\r\nim-node is a simple in-memory object cache.\r\n\r\n## Install\r\nnpm install im-cache\r\n\r\n## Usage\r\n### cache.set(key, object[, timeout])\r\n\tvar cache = require('im-cache');\r\n\t//Cache {data: true} for one hour with key \"key\"\r\n\tcache.set(\"key\", {data: true}, 1000*60*60)\r\n\t//Cache {data: true} forever with key \"key\"\r\n\tcache.set(\"key\", {data: true})\r\n### cache.get(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.get(\"key\");\r\n### cache.remove(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.remove(\"key\");\r\n\t// Equals undefined:\r\n\tcache.get(\"key\");\r\n### cache.size()\r\nReturns cache size\r\n### cache.flush()\r\nEmpties cache\r\n","_id":"im-cache@0.0.2","dist":{"shasum":"3a6551a13081c6c05168e46573386cf2ceb436e0","tarball":"http://registry.npmjs.org/im-cache/-/im-cache-0.0.2.tgz"},"maintainers":[{"name":"pederoverland","email":"peder@alveroverland.com"}]}},"readme":"# im-node\r\nim-node is a simple in-memory object cache.\r\n\r\n## Install\r\nnpm install im-node\r\n\r\n## Usage\r\n### cache.set(key, object[, timeout])\r\n\tvar cache = require('im-cache');\r\n\t//Cache {data: true} for one hour with key \"key\"\r\n\tcache.set(\"key\", {data: true}, 1000*60*60)\r\n\t//Cache {data: true} forever with key \"key\"\r\n\tcache.set(\"key\", {data: true})\r\n### cache.get(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.get(\"key\");\r\n### cache.remove(key)\r\n\t// Set data:\r\n\tcache.set(\"key\", {data: true}, 10000)\r\n\t// Equals {data: true}:\r\n\tcache.remove(\"key\");\r\n\t// Equals undefined:\r\n\tcache.get(\"key\");\r\n### cache.size()\r\nReturns cache size\r\n### cache.flush()\r\nEmpties cache\r\n","maintainers":[{"name":"pederoverland","email":"peder@alveroverland.com"}],"time":{"modified":"2012-08-03T22:10:48.656Z","created":"2012-08-03T22:03:09.686Z","0.0.1":"2012-08-03T22:03:13.158Z","0.0.2":"2012-08-03T22:10:48.656Z"},"author":{"name":"Peder Hans Øverland","email":"peder@alveroverland.com"},"_id":"im-cache","_rev":"1-c332c4f4e0c1e1ae88cbcb3adf8d990f"}ÿdocument-storeÿiceddocš{"id":"iceddoc","rev":"1-a44467b1a34a438feb5a1fb0701abcc6","rev_tree":[{"pos":1,"ids":["a44467b1a34a438feb5a1fb0701abcc6",{"status":"available"},[]]}],"rev_map":{"1-a44467b1a34a438feb5a1fb0701abcc6":3888},"winningRev":"1-a44467b1a34a438feb5a1fb0701abcc6","deleted":false,"seq":3888}ÿby-sequenceÿ0000000000003888Å0{"name":"iceddoc","description":"An API documentation generator for IcedCoffeeScript","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"iceddoc","description":"An API documentation generator for IcedCoffeeScript","keywords":["documentation","docs","generator","icedcoffeescript"],"author":{"name":"James Womack"},"version":"0.1.0","licenses":[{"type":"MIT","url":"http://opensource.org/licenses/mit-license.php"}],"engines":{"node":">=0.4.10"},"dependencies":{"iced-coffee-script":">=1.1.1","eco":">=1.1.0-rc-1","optimist":">=0.3.1","highlight":">=0.2.2","traverse":">=0.6.1","marked":">=0.2.5"},"bin":{"iceddoc":"./bin/iceddoc"},"devDependencies":{"jasmine-node":">=1.0.6"},"optionalDependencies":{},"scripts":{"test":"cake test"},"_npmUser":{"name":"noblegesture","email":"me@jameswomack.com"},"_id":"iceddoc@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"0128a1b3f900d169f3160532c4cdd7d6e403cc24","tarball":"http://registry.npmjs.org/iceddoc/-/iceddoc-0.1.0.tgz"},"maintainers":[{"name":"noblegesture","email":"me@jameswomack.com"}]}},"readme":"IcedDoc\n=========\n\nAn API documentation generator for CoffeeScript\n-----------------------------------------------\n\nIcedDoc is a simple API documentation generator for [IcedCoffeeScript][]. It reads\npython-style docstrings in your CoffeeScript class and function definitions,\npasses them through [Markdown][] and outputs the result as easy to read HTML.\n\nThanks to [apgwoz](https://github.com/apgwoz), IcedDoc can also generate [wiki\npages for Github](https://github.com/apgwoz/iceddoc-hub/wiki/Src:Coffeedoc)!\n\nIcedDoc can also return your documentation as JSON, so you can run it through\nan external documentation system such as [Sphinx][].\n\nIcedDoc is inspired by the excellent [Docco][], and is intended for projects\nthat require more structured API documentation.\n\nThe docstring convention IcedDoc uses is inspired by Python, and looks like\nthis:\n\n```coffeescript\n###\n# IcedDoc example documentation #\n\nThis is a module-level docstring, and will be displayed at the top of the module documentation.\nDocumentation generated by [IcedDoc](http://github.com/amco/iceddoc)\n###\n\nclass MyClass extends Superclass\n ###\n This docstring documents MyClass. It can include *Markdown* syntax,\n which will be converted to html.\n ###\n constructor: (@args) ->\n ### Constructor documentation goes here. ###\n\n method: (args) ->\n ### This is a method of MyClass ###\n\nmyFunc = (arg1, arg2, args...) ->\n ###\n This function will be documented by IcedDoc\n ###\n doSomething()\n```\n\nThe documentation generated from the above script can be seen\n[here](http://omarkhan.github.com/iceddoc/test/example.coffee.html). For a\nmore interesting example, here is [the result of running iceddoc against\n`src/iceddoc.coffee`](http://omarkhan.github.com/iceddoc/src/iceddoc.coffee.html).\n\n### Installation ###\n\nIcedDoc requires [Node.js][], [IcedCoffeeScript][], [eco][], and [optimist][].\nInstall using npm with the following command:\n\n sudo npm install -g iceddoc\n\nThe -g option installs IcedDoc globally, adding the iceddoc executable to\nyour PATH. If you would rather install locally, omit the -g option.\n\nYou can also install from source using cake. From the source directory, run:\n\n sudo cake install\n\n### Usage ###\n\nIcedDoc can be run from the command line:\n\n Usage: iceddoc [options] [targets]\n\n Options:\n --output, -o Set output directory [default: \"docs\"]\n --parser Parser to use. Available parsers: commonjs, requirejs [default: \"commonjs\"]\n --renderer Renderer to use. Available renderers: html, gfm, json [default: \"html\"]\n --stdout Direct all output to stdout instead of files [boolean]\n --ignore, -i Files or directories to ignore\n --help, -h Show this help\n\nIf [targets] is a directory, IcedDoc will recursively document all `.iced`\nfiles found under that directory.\n\nIf you wish to document several modules, make sure you generate all\nthe docs with a single command -- this ensures that they will all appear in the\n`index.html` file.\n\n#### Note on Markdown headers ####\n\nMarkdown uses `#` characters for headers, e.g.\n\n # Header 1\n ## Header 2\n ### Header 3\n #### Header 4\n ##### Header 5\n ###### Header 6\n\nAs using a sequence of 3 or more `#` characters within a CoffeeScript block\ncomment would end the comment block, IcedDoc allows for the `\\#` escape\nsequence in docstrings. So instead of `### Header`, use `\\#\\#\\# Header` or\n`##\\# Header`. Ugly, but it works.\n\n### How it works ###\n\nIcedDoc uses the CoffeeScript parser to generate a parse tree for the given\nsource files. It then extracts the relevant information from the parse tree:\nclass and function names, class member functions, function argument lists and\ndocstrings.\n\nDocstrings are defined as the first herecomment block following the class or\nfunction definition. Note that regular single line comments will be ignored.\n\nThe resulting documentation information is then passed to an [eco][] template\nto generate the html output.\n\n### TODO ###\n\n- Doctests\n\n### Alternatives ###\n\n- [Docco][] for literate programming style docs.\n- [Codo][] for something more ruby than python.\n\n### Licence ###\n\nIcedDoc is © 2012 Omar Khan, released under the MIT licence. Use it, fork it.\n\n[CoffeeScript]: http://jashkenas.github.com/coffee-script/\n[Sphinx]: http://sphinx.pocoo.org/\n[Docco]: http://jashkenas.github.com/docco/\n[Node.js]: http://nodejs.org/\n[eco]: http://github.com/sstephenson/eco\n[optimist]: http://github.com/substack/node-optimist\n[Markdown]: http://daringfireball.net/projects/markdown/\n[Codo]: http://github.com/netzpirat/codo\n","maintainers":[{"name":"noblegesture","email":"me@jameswomack.com"}],"time":{"modified":"2012-07-12T01:34:07.185Z","created":"2012-07-12T01:34:06.124Z","0.1.0":"2012-07-12T01:34:07.185Z"},"author":{"name":"James Womack"},"_id":"iceddoc","_rev":"1-a44467b1a34a438feb5a1fb0701abcc6"}ÿdocument-storeÿhubot-gtalk3Ÿ{"id":"hubot-gtalk3","rev":"1-e7c74a7c232447fa908ec340f73d0b69","rev_tree":[{"pos":1,"ids":["e7c74a7c232447fa908ec340f73d0b69",{"status":"available"},[]]}],"rev_map":{"1-e7c74a7c232447fa908ec340f73d0b69":3887},"winningRev":"1-e7c74a7c232447fa908ec340f73d0b69","deleted":false,"seq":3887}ÿby-sequenceÿ0000000000003887„ {"name":"hubot-gtalk3","description":"A fork of a fork of GTalk adapter for hubot. So far the only difference is that it can send an array of messages each as a separate chat message rather than a single wall of text.","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.3":{"author":{"name":"Hubot"},"dependencies":{"node-xmpp":">0"},"description":"A fork of a fork of GTalk adapter for hubot. So far the only difference is that it can send an array of messages each as a separate chat message rather than a single wall of text.","keywords":["github hubot gtalk adapter"],"licenses":[{"type":"MIT","url":"http://github.com/britt/hubot-gtalk/raw/master/LICENSE"}],"main":"./src/gtalk","name":"hubot-gtalk3","repository":{"type":"git","url":"git://github.com/britt/hubot-gtalk.git"},"version":"1.0.3","_npmJsonOpts":{"file":"/Users/bcrawford/.npm/hubot-gtalk3/1.0.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"hubot-gtalk3@1.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.28","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"17cbc6ae4e58cda2e483f98b6d0ae759e534a9ae","tarball":"http://registry.npmjs.org/hubot-gtalk3/-/hubot-gtalk3-1.0.3.tgz"},"maintainers":[{"name":"britt","email":"britt.v.crawford@gmail.com"}]}},"maintainers":[{"name":"britt","email":"britt.v.crawford@gmail.com"}],"time":{"modified":"2012-06-07T04:50:39.058Z","created":"2012-06-07T04:50:35.029Z","1.0.3":"2012-06-07T04:50:39.058Z"},"author":{"name":"Hubot"},"repository":{"type":"git","url":"git://github.com/britt/hubot-gtalk.git"},"_id":"hubot-gtalk3","_rev":"1-e7c74a7c232447fa908ec340f73d0b69"}&ÿdocument-storeÿhook.io-redis-client§{"id":"hook.io-redis-client","rev":"1-1ea680ca31f327bc2dc9733f412d1b65","rev_tree":[{"pos":1,"ids":["1ea680ca31f327bc2dc9733f412d1b65",{"status":"available"},[]]}],"rev_map":{"1-1ea680ca31f327bc2dc9733f412d1b65":3886},"winningRev":"1-1ea680ca31f327bc2dc9733f412d1b65","deleted":false,"seq":3886}ÿby-sequenceÿ0000000000003886Ÿ6{"name":"hook.io-redis-client","description":"Listen for hook.io events and execute operations against a Redis server","dist®ù-tags":{"latest":"0.0.1-3"},"versions":{"0.0.1":{"author":{"name":"Sam Mulube","email":"sam.mulube@logmein.com"},"name":"hook.io-redis-client","description":"Listen for hook.io events and execute operations against a Redis server","keywords":["hook.io","redis"],"version":"0.0.1","repository":{"type":"git","url":"git://github.com/smulube/hook.io-redis-client.git"},"bin":{"hookio-redis-client":"./bin/redis-client"},"main":"lib/redis-client","engines":{"node":">= v0.4.7"},"dependencies":{"hook.io":"0.8.x","colors":"0.5.x","async":"0.1.x","redis":"0.7.2","hiredis":"0.1.14"},"devDependencies":{},"bugs":{"name":"https://github.com/smulube/hook.io-redis-client/issues"},"_npmUser":{"name":"smulube","email":"sam.mulube@gmail.com"},"_id":"hook.io-redis-client@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"176af8d8cf02d7ecac8e3fbe2121aae67b71dbf3","tarball":"http://registry.npmjs.org/hook.io-redis-client/-/hook.io-redis-client-0.0.1.tgz"},"maintainers":[{"name":"smulube","email":"sam.mulube@gmail.com"}]},"0.0.1-1":{"author":{"name":"Sam Mulube","email":"sam.mulube@logmein.com"},"name":"hook.io-redis-client","description":"Listen for hook.io events and execute operations against a Redis server","keywords":["hook.io","redis"],"version":"0.0.1-1","repository":{"type":"git","url":"git://github.com/smulube/hook.io-redis-client.git"},"bin":{"hookio-redis-client":"./bin/redis-client"},"main":"lib/redis-client","engines":{"node":">= v0.4.7"},"dependencies":{"hook.io":"0.8.x","colors":"0.5.x","async":"0.1.x","redis":"0.7.2","hiredis":"0.1.14"},"devDependencies":{},"bugs":{"url":"https://github.com/smulube/hook.io-redis-client/issues"},"_npmUser":{"name":"smulube","email":"sam.mulube@gmail.com"},"_id":"hook.io-redis-client@0.0.1-1","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"ec73d036fbdd2f01c9e33b843cc4047834546e6f","tarball":"http://registry.npmjs.org/hook.io-redis-client/-/hook.io-redis-client-0.0.1-1.tgz"},"maintainers":[{"name":"smulube","email":"sam.mulube@gmail.com"}]},"0.0.1-2":{"author":{"name":"Sam Mulube","email":"sam.mulube@logmein.com"},"name":"hook.io-redis-client","description":"Listen for hook.io events and execute operations against a Redis server","keywords":["hook.io","redis"],"version":"0.0.1-2","repository":{"type":"git","url":"git://github.com/smulube/hook.io-redis-client.git"},"bin":{"hookio-redis-client":"./bin/redis-client"},"main":"lib/redis-client","engines":{"node":">= v0.4.7"},"dependencies":{"hook.io":"0.8.x","colors":"0.5.x","async":"0.1.x","redis":"0.7.2","hiredis":"0.1.14"},"devDependencies":{},"bugs":{"url":"https://github.com/smulube/hook.io-redis-client/issues"},"_npmUser":{"name":"smulube","email":"sam.mulube@gmail.com"},"_id":"hook.io-redis-client@0.0.1-2","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"50a556cd9cf5c1e0d016d6c7ea8ed7b1c1c75ac9","tarball":"http://registry.npmjs.org/hook.io-redis-client/-/hook.io-redis-client-0.0.1-2.tgz"},"maintainers":[{"name":"smulube","email":"sam.mulube@gmail.com"}]},"0.0.1-3":{"author":{"name":"Sam Mulube","email":"sam.mulube@logmein.com"},"name":"hook.io-redis-client","description":"Listen for hook.io events and execute operations against a Redis server","keywords":["hook.io","redis"],"version":"0.0.1-3","repository":{"type":"git","url":"git://github.com/smulube/hook.io-redis-client.git"},"bin":{"hookio-redis-client":"./bin/redis-client"},"main":"lib/redis-client","engines":{"node":">= v0.4.7"},"dependencies":{"hook.io":"0.8.x","colors":"0.5.x","async":"0.1.x","redis":"0.7.2","hiredis":"0.1.14"},"devDependencies":{},"bugs":{"url":"https://github.com/smulube/hook.io-redis-client/issues"},"_npmUser":{"name":"smulube","email":"sam.mulube@gmail.com"},"_id":"hook.io-redis-client@0.0.1-3","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"50a2a4e0b2ec513c925642acc9de734016dc0ce6","tarball":"http://registry.npmjs.org/hook.io-redis-client/-/hook.io-redis-client-0.0.1-3.tgz"},"maintainers":[{"name":"smulube","email":"sam.mulube@gmail.com"}]}},"readme":"# hook.io-redis\n\nHook.io Redis is a client-wrapper around\n[node_redis](https://github.com/mranney/node_redis) for interacting with a\nRedis server. Any command passed into the hook will be sent on to Redis, but\nthis probably makes most sense in the context of persisting data into Redis,\nrather than reading it out.\n\nFor a hook for using Redis pubsub messages to emit events, please see\n[hook.io-redis](https://github.com/stephanepericat/hookio-redis).\n\n## Disclaimer\n\nThis is a very early release, and is currently lacking several important\nfeatures (not least tests), so will probably break unpleasantly if you try and\nuse it.\n\n## Installation\n\n git clone git@github.com:smulube/hook.io-redis-client.git\n cd hook.io-redis-client\n npm install\n node bin/redis-client\n\n### Using NPM\n\n npm install hook.io-redis-client\n hook.io-redis-client --debug\n\nNote, using the default options hookio-redis-client will attempt to connect to\nRedis running on localhost on port 6379.\n\n## Hook Event Names\n\n### Event listeners\n\n**redis::client::exec** *command* - exec a single Redis command and pass result to callback.\n\n**redis::client::multi** *array* - array of command objects to execute within a single multi transaction\n\n### Event emitters\n\n**redis::client::connect** - event emitted when the hook is connected to Redis\n\n**redis::client::ready** - event emitted when the Redis is ready to start receiving commands\n\n**redis::client::error** - event emitted on an error when interacting with Redis.\n\n**redis::client::end** - event emitted if Redis shuts down\n\n## Command object\n\nCurrently commands are sent to Redis as objects like this:\n\n {\n command: \"lpush\",\n params: [ \"key\", \"value\" ]\n }\n\nor\n\n {\n command: \"ltrim\",\n params: [ \"key\", 0, 20 ]\n }\n\nThat is: the Redis command we are trying to execute, followed by an array of\nparameters. Parameters should match what the server is expecting or bad things\nwill happen.\n","maintainers":[{"name":"smulube","email":"sam.mulube@gmail.com"}],"time":{"modified":"2012-06-07T14:00:56.385Z","created":"2012-05-29T15:21:38.794Z","0.0.1":"2012-05-29T15:21:40.890Z","0.0.1-1":"2012-05-29T16:12:43.943Z","0.0.1-2":"2012-05-31T11:58:15.682Z","0.0.1-3":"2012-06-07T14:00:56.385Z"},"author":{"name":"Sam Mulube","email":"sam.mulube@logmein.com"},"repository":{"type":"git","url":"git://github.com/smulube/hook.io-redis-client.git"},"_id":"hook.io-redis-client","_rev":"1-1ea680ca31f327bc2dc9733f412d1b65"}ÿdocument-storeÿhook.io-herdŸ{"id":"hook.io-herd","rev":"1-104545fada4573f37ffadd8965851e72","rev_tree":[{"pos":1,"ids":["104545fada4573f37ffadd8965851e72",{"status":"available"},[]]}],"rev_map":{"1-104545fada4573f37ffadd8965851e72":3885},"winningRev":"1-104545fada4573f37ffadd8965851e72","deleted":false,"seq":3885}ÿby-sequenceÿ0000000000003885»C{"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.2":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.1.2","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"97c9fcb0105d4c3bb69fb59589e6b59d4451c94b","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.1.2.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"directories":{}},"0.1.3":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.1.3","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"63cff833585126ec5645bdeadaf3cf6af4c529e0","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.1.3.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"directories":{}},"0.2.0":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.0","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"9adc202aab514416eee20aadebfab51d1dbfc818","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.0.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"directories":{}},"0.2.1":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.1","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"7619ef2ea07f4167948d8e3421624dd2bc4a095c","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.1.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"directories":{}},"0.2.2":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.2","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"72b3feb4d8f0fe436120f451a7567ec954102e56","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.2.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"directories":{}},"0.2.3":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.3","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"66209ffc72ab67d0af007ec03fab8a2db8e0a3f9","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.3.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}]},"0.2.4":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.4","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"e7d6d5e19b5884f85ac6d2b9b7ce768c0ff3aa1f","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.4.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}]},"0.2.5":{"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"name":"hook.io-herd","description":"A simple hook.io hook that spawns one child hook for each json config file in a given directory","version":"0.2.5","main":"lib/herd","repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"dependencies":{"hook.io":">= 0.8.9"},"_npmUser":{"name":"subtlegradient","email":"thomas@subtlegradient.com"},"_id":"hook.io-herd@0.2.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"853e0f9ca4c916aa96f54f99c14b42c46e73575f","tarball":"http://registry.npmjs.org/hook.io-herd/-/hook.io-herd-0.2.5.tgz"},"maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}]}},"readme":"# hook.io Herd\n\nA simple hook.io hook that spawns one child hook for each json config file in a given directory.\n\n1. Create a bunch of config.json files.\n2. Use the `childHooks` key to define the configs for hooks that will be spawned as child hooks\n3. Use the `configFilePath` key in your child hook config to load the config from a separate file\n * NOTE: paths are relative to the json files as you would expect\n\n### Example Config\n\n {\n \"type\":\"herd\",\n \"name\":\"Simpsons\",\n \"childHooks\":[\n {\"type\":\"helloworld\", \"name\":\"Homer\"},\n {\"type\":\"helloworld\", \"name\":\"Marge\"},\n {\"configFilePath\":\"./simpson-kids/bart.config.json\"},\n {\"configFilePath\":\"./simpson-kids/lisa.config.json\"},\n {\"configFilePath\":\"./simpson-kids/maggie.config.json\"}\n ]\n }\n","maintainers":[{"name":"subtlegradient","email":"thomas@subtlegradient.com"}],"time":{"modified":"2012-04-23T19:02:01.150Z","created":"2012-04-12T19:37:47.988Z","0.1.2":"2012-04-12T19:40:03.217Z","0.1.3":"2012-04-12T20:51:26.538Z","0.2.0":"2012-04-13T10:01:34.134Z","0.2.1":"2012-04-13T10:05:36.678Z","0.2.2":"2012-04-13T10:31:31.449Z","0.2.3":"2012-04-13T22:57:32.772Z","0.2.4":"2012-04-21T00:10:35.118Z","0.2.5":"2012-04-23T19:02:01.150Z"},"author":{"name":"Thomas Aylott","email":"thomas@subtlegradient.com"},"repository":{"type":"git","url":"git://github.com/subtleGradient/hook.io-herd.git"},"_id":"hook.io-herd","_rev":"1-104545fada4573f37ffadd8965851e72"}$ÿdocument-storeÿhaml-coffee-meteor¥{"id":"haml-coffee-meteor","rev":"1-3e42add5031fb98eaa04e326bf34318b","rev_tree":[{"pos":1,"ids":["3e42add5031fb98eaa04e326bf34318b",{"status":"available"},[]]}],"rev_map":{"1-3e42add5031fb98eaa04e326bf34318b":3884},"winningRev":"1-3e42add5031fb98eaa04e326bf34318b","deleted":false,"seq":3884}ÿby-sequenceÿ0000000000003884¼Ó{"name":"haml-coffee-meteor","description":"Haml templates where you can write inline CoffeeScript, modified to work with meteor","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"haml-coffee-meteor","description":"Haml templates where you can write inline CoffeeScript, modified to work with meteor","keywords":["haml","coffeescript","templating","html","javascript","language","compiler, meteor"],"author":{"name":"Michael Kessler","email":"michi@netzpiraten.ch"},"maintainers":[{"name":"markhuetsch","email":"markhuetsch@gmail.com"}],"version":"0.0.1","licenses":[{"type":"MIT","url":"http://github.com/9elements/haml-coffee/raw/master/LICENSE"}],"browserify":"./lib/haml-coffee","engines":{"node":">=0.4.0"},"directories":{"lib":"./lib"},"main":"./lib/hamlc","bin":{"haml-coffee":"./bin/haml-coffee"},"dependencies":{"coffee-script":">= 1.1.3","findit":">= 0.1.2","optimist":">= 0.3.0"},"devDependencies":{"jasmine-node":">= 1.0.13","browserify":">= 1.8.1","uglify-js":">= 1.2.0"},"homepage":"https://github.com/9elements/haml-coffee","repository":{"type":"git","url":"git://github.com/9elements/haml-coffee.git"},"bugs":{"url":"https://github.com/9elements/haml-coffee/issues"},"scripts":{"test":"jasmine-node --coffee spec"},"_npmUser":{"name":"markhuetsch","email":"markhuetsch@gmail.com"},"_id":"haml-coffee-meteor@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"07848c4587470148b9de9756defec02abf92d59d","tarball":"http://registry.npmjs.org/haml-coffee-meteor/-/haml-coffee-meteor-0.0.1.tgz"}},"0.0.2":{"name":"haml-coffee-meteor","description":"Haml templates where you can write inline CoffeeScript, modified to work with meteor","keywords":["haml","coffeescript","templating","html","javascript","language","compiler, meteor"],"author":{"name":"Michael Kessler","email":"michi@netzpiraten.ch"},"maintainers":[{"name":"markhuetsch","email":"markhuetsch@gmail.com"}],"version":"0.0.2","licenses":[{"type":"MIT","url":"http://github.com/9elements/haml-coffee/raw/master/LICENSE"}],"browserify":"./lib/haml-coffee","engines":{"node":">=0.4.0"},"directories":{"lib":"./lib"},"main":"./lib/hamlc","dependencies":{"coffee-script":">= 1.1.3","findit":">= 0.1.2","optimist":">= 0.3.0"},"devDependencies":{"jasmine-node":">= 1.0.13","browserify":">= 1.8.1","uglify-js":">= 1.2.0"},"homepage":"https://github.com/9elements/haml-coffee","repository":{"type":"git","url":"git://github.com/9elements/haml-coffee.git"},"bugs":{"url":"https://github.com/9elements/haml-coffee/issues"},"scripts":{"test":"jasmine-node --coffee spec"},"_npmUser":{"name":"markhuetsch","email":"markhuetsch@gmail.com"},"_id":"haml-coffee-meteor@0.0.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"4e3a5337f947cb78ca5e2f2aca4294ae5f79ddc7","tarball":"http://registry.npmjs.org/haml-coffee-meteor/-/haml-coffee-meteor-0.0.2.tgz"}},"0.0.3":{"name":"haml-coffee-meteor","description":"Haml templates where you can write inline CoffeeScript, modified to work with meteor","keywords":["haml","coffeescript","templating","html","javascript","language","compiler, meteor"],"author":{"name":"Michael Kessler","email":"michi@netzpiraten.ch"},"maintainers":[{"name":"markhuetsch","email":"markhuetsch@gmail.com"}],"version":"0.0.3","licenses":[{"type":"MIT","url":"http://github.com/9elements/haml-coffee/raw/master/LICENSE"}],"browserify":"./lib/haml-coffee","engines":{"node":">=0.4.0"},"directories":{"lib":"./lib"},"main":"./lib/hamlc","dependencies":{"coffee-script":">= 1.1.3","findit":">= 0.1.2","optimist":">= 0.3.0"},"devDependencies":{"jasmine-node":">= 1.0.13","browserify":">= 1.8.1","uglify-js":">= 1.2.0"},"homepage":"https://github.com/9elements/haml-coffee","repository":{"type":"git","url":"git://github.com/9elements/haml-coffee.git"},"bugs":{"url":"https://github.com/9elements/haml-coffee/issues"},"scripts":{"test":"jasmine-node --coffee spec"},"_npmUser":{"name":"markhuetsch","email":"markhuetsch@gmail.com"},"_id":"haml-coffee-meteor@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a94d1bd3723448c9a25197bde84e3baedbe47601","tarball":"http://registry.npmjs.org/haml-coffee-meteor/-/haml-coffee-meteor-0.0.3.tgz"}}},"readme":"# Haml Coffee Templates [![Build Status](https://secure.travis-ci.org/9elements/haml-coffee.png)](http://travis-ci.org/9elements/haml-coffee)\n\nHaml Coffee is a JavaScript templating solution that uses [Haml](http://haml-lang.com/) as markup, understands inline\n[CoffeeScript](http://jashkenas.github.com/coffee-script/) and generates a JavaScript function that renders to HTML. It\ncan be used in client-side JavaScript applications that are using\n[Backbone.js](http://documentcloud.github.com/backbone/), [Spine.js](http://spinejs.com/),\n[JavaScriptMVC](http://javascriptmvc.com/), [KnockoutJS](http://knockoutjs.com/) and others, or on the server-side in\nframeworks like [Express](http://expressjs.com/).\n\n## Contents\n\n* [Installation](#installation)\n * [Integration](#installation-integration)\n* [Compile Haml Coffee](#compile-haml-coffee)\n * [Using the API](#using-the-api)\n * [Using with Express](#using-with-express)\n * [Using the CLI tool](#using-the-cli-tool)\n* [Haml support](#haml-support)\n* [CoffeeScript support](#coffee-script-support)\n * [Attributes](#coffee-script-attributes)\n * [Running code](#coffee-script-running-code)\n * [Filter](#coffee-script-filter)\n* [Compiler options](#compiler-options)\n * [HTML generation options](#html-generation-compiler-options)\n * [Custom helper function options](#custom-helper-function-compiler-options)\n* [Development information](#development-information)\n\n\n## Installation\n\nHaml Coffee is available in NPM and can be installed with:\n\n```bash\n$ npm install haml-coffee\n```\n\nPlease have a look at the [CHANGELOG](https://github.com/9elements/haml-coffee/blob/master/CHANGELOG.md) when upgrading to a\nnewer Codo version with `npm update`.\n\n\n## Integration\n\nIf you're using [Hem](https://github.com/maccman/hem) to manage your CommonJS modules,\nuse [hem-haml-coffee](https://github.com/vojto/hem-haml-coffee). This is excellent for\ndeveloping your [Spine](http://spinejs.com/) application.\n\nIf you like to integrate Haml Coffee seamless into the Rails asset pipeline, check out\n[haml_coffee_assets](https://github.com/netzpirat/haml_coffee_assets).\n\nFor using the Haml Coffee compiler in the browser, a [browserified](https://github.com/substack/node-browserify) version\nis provided in the `dist/compiler` directory:\n[Haml Coffee compiler](https://raw.github.com/9elements/haml-coffee/master/dist/compiler/hamlcoffee.js)\n([minified](https://raw.github.com/9elements/haml-coffee/master/dist/compiler/hamlcoffee.min.js))\n\n\n## Compile Haml Coffee\n\n\n### Using the API\n\nYou can compile a Haml Coffee template to a JavaScript function and execute the function with the locals to render the\nHTML. The following code\n\n```coffee-script\nhamlc = require 'haml-coffee'\ntmpl = hamlc.compile '%h1= @title'\nhtml = tmpl title: 'Haml Coffee rocks!'\n```\n\nwill create the HTML `

Haml Coffee rocks!

`.\n\nThe `compile` function can take the compiler options as second parameter to customize the template function:\n\n```coffee-script\nhamlc.compile '%h1= @title'\n cleanValue: false\n escapeHtml: false\n```\n\nSee the [compiler options](#compiler-options) for detailed information about all the available options and browse\nthe [codo](https://github.com/netzpirat/codo) generated\n[Haml-Coffee API documentation](http://9elements.github.com/haml-coffee/).\n\n
\n### Using with Express\n\nYou can configure [Express](http://expressjs.com/) to use Haml Coffee as template engine:\n\n```coffee-script\nexpress = require 'express'\nhamlc = require 'haml-coffee'\n\napp = express.createServer()\napp.register '.hamlc', hamlc\n```\n\nExpress uses a layout file `layout.hamlc` by default and you have to insert the rendered view body into the layout like\nthis:\n\n```haml\n!!!\n%head\n %title Express App\n%body\n != @body\n```\n\nNow you can create a Haml Coffee view\n\n```haml\n%h1= \"Welcome #{ @name }\"\n%p You've rendered your first Haml Coffee view.\n```\n\nthat you can render with:\n\n```coffee-script\napp.get '/', (req, res) ->\n res.render 'index.hamlc', name: 'Express user'\n```\n\nYou can also turn off the layout rendering by configure the `view options`:\n\n```coffee-script\napp.set 'view options', layout: false\n```\n\nSee the [compiler options](#compiler-options) for detailed information about all the available options.\n\nIt's possible to use Haml Coffee as the default template engine by setting the `view engine`:\n\n```coffee-script\napp.configure ->\n app.set 'view engine', 'hamlc'\n```\n\nwhich allows you to omit the `.hamlc` extension when rendering a template:\n\n```coffee-script\napp.get '/', (req, res) ->\n res.render 'index', name: 'Express user'\n```\n\nYou can read more about the view rendering in the\n[Express documentation](http://expressjs.com/guide.html#view-rendering).\n\n\n### Using the CLI tool\n\nAfter the installation you will have a `haml-coffee` binary that can be used to compile single templates and even\ncompile multiple templates recursively into a single file.\n\n```bash\n$ haml-coffee\nUsage: node haml-coffee\n\nOptions:\n -i, --input Either a file or a directory name to be compiled\n -o, --output Set the output filename\n -n, --namespace Set a custom template namespace\n -t, --template Set a custom template name\n -b, --basename Ignore file path when generate the template name\n```\n\n_The following section describes only the options that are unique to the command line tool._\n\nYou can see all the available options by executing `haml-coffee --help` and have a look at the\n[compiler options](#compiler-options) for detailed information about all the options.\n\n#### Input filename\n\nYou can either specify a single template or a directory with the `-i`/`--input` argument. When you supply a directory,\ntemplates are being searched recursively:\n\n```bash\n$ haml-coffee -i template.haml\n```\n\nThis will generate a template with the same name as the file but the extension changed to `.jst`. The above command for\nexample would generate a template named `template.jst`.\n\nA valid Haml Coffee template must have one of the following extensions: `.haml`, `.html.haml`, `.hamlc` or\n`.html.hamlc`.\n\n#### Output filename\n\nYou can specify a single output file name to be used instead of the automatic generated output file name with the\n`-o`/`--output` argument:\n\n```bash\n$ haml-coffee -i template.haml -o t.js\n```\n\nThis creates a template named `t.js`. You can also set a directory as input and give an output file name for\nconcatenating all templates into a single file:\n\n```bash\n$ haml-coffee -i templates -o all.js\n```\n\nThis will create all the templates under the `templates` directory into a single, combined output file `all.js`.\n\n#### Template namespace\n\nEach template will register itself by default under the `window.HAML` namespace, but you can change the namespace with\nthe `-n`/`--namespace` argument:\n\n```bash\n$ haml-coffee -i template.haml -n exports.JST\n```\n\n#### Template name\n\nEach template must have a unique name under which it can be addressed. By default the template name is derived from the\ntemplate file name by stripping off all extensions and remove illegal characters. Directory names are converted to\nnested namespaces under the default namespace. For example, a template named `user/show-admin.html.haml` will result in\na template that can be accessed by `window.HAML['user/show_admin']`.\n\nGiven the `-b`/`--basename` argument, the deduced template name will not include the path to the template. For example,\na template named `user/show-admin.html.haml` will result in a template that can be accessed by\n`window.HAML['show_admin']` instead of `window.HAML['user/show_admin']`.\n\nWith the `-t`/`--template` argument you can set a template name manually:\n\n```bash\n$ haml-coffee -i template.haml -n exports.JST -t other\n```\n\nThis will result in a template that can be accessed by `exports.JST['other']`.\n\n\n## Haml support\n\nHaml Coffee implements the [Haml Spec](https://github.com/norman/haml-spec) to ensure some degree of compatibility to\nother Haml implementations and the following sections are fully compatible to Ruby Haml:\n\n* Plain text\n* Multiline: `|`\n* Element names `%`\n* Attributes: `{}` or `()`\n* Class and ID: `.` and `#`, implicit `div` elements\n* Self-closing tags: `/`\n* Doctype: `!!!`\n* HTML comments: `/`, conditional comments: `/[]`, Haml comments: `-#`\n* Running CoffeeScript: `-`, inserting CoffeeScript: `=`\n* CoffeeScript interpolation: `#{}`\n* Whitespace preservation: `~`\n* Whitespace removal: `>` and `<`\n* Escaping `\\`\n* Escaping HTML: `&=`, unescaping HTML: `!=`\n* Filters: `:plain`, `:javascript`, `:css`, `:cdata`, `:escaped`, `:preserve`\n* Boolean attributes conversion\n\nPlease consult the official [Haml reference](http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html) for more\ndetails.\n\nHaml Coffee supports both Ruby 1.8 and Ruby 1.9 style attributes. So the following Ruby 1.8 style attribute\n\n```haml\n%a{ :href => 'http://haml-lang.com/' } Haml\n```\n\ncan also be written in Ruby 1.9 style:\n\n```haml\n%a{ href: 'http://haml-lang.com/' } Haml\n```\n\n### Helpers\n\nHaml Coffee supports a small subset of the Ruby Haml [helpers](http://haml-lang.com/docs/yardoc/Haml/Helpers.html):\n\n#### Surround\n\nSurrounds a block of Haml code with strings, with no whitespace in between.\n\n```haml\n= surround '(', ')', ->\n %a{:href => \"food\"} chicken\n```\n\nproduces the HTML output\n\n```html\n(chicken)\n```\n\n#### Succeed\n\nAppends a string to the end of a Haml block, with no whitespace between.\n\n```haml\nclick\n= succeed '.', ->\n %a{:href=>\"thing\"} here\n```\n\nproduces the HTML output\n\n```html\nclick\nhere.\n```\n\n#### Precede\n\nPrepends a string to the beginning of a Haml block, with no whitespace between.\n\n```haml\n= precede '*', ->\n %span.small Not really\n```\n\nproduces the HTML output\n\n```html\n*Not really\n```\n\n\n## CoffeeScript support\n\nHaml and CoffeeScript are a winning team, both use indention for blocks and are a perfect match for this reason. You can\nuse CoffeeScript instead of Ruby in your Haml tags and the attributes.\n\n**It's not recommended to put too much logic into the template.**\n\n\n### Attributes\n\nWhen you define an attribute value without putting it into quotes (single or double quotes), it's considered to be\nCoffeeScript code to be run at render time. By default, attributes values from CoffeeScript code are escaped before\ninserting into the document. You can change this behaviour by setting the appropriate compiler option.\n\nHTML style attributes are the most limited and can only assign a simple variable:\n\n```haml\n%img(src='/images/demo.png' width=@width height=@height alt=alt)\n```\n\nBoth the `@width` and `@height` values must be passed as locals when rendering the template and `alt` must be defined\nbefore the `%img` tag.\n\nRuby style tags can be more complex and can call functions:\n\n```haml\n%header\n %user{ :class => App.currentUser.get('status') }= App.currentUser.getDisplayName()\n```\n\nAttribute definitions are also supported in the Ruby 1.9 style:\n\n```haml\n%header\n %user{ class: App.currentUser.get('status') }= App.currentUser.getDisplayName()\n```\n\nMore fancy stuff can be done when use interpolation within a double quoted attribute value:\n\n```haml\n%header\n %user{ class: \"#{ if @user.get('roles').indexOf('admin') is -1 then 'normal' else 'admin' }\" }= @user.getDisplayName()\n```\n\n_But think about it twice before putting such fancy stuff into your template, there are better places like models,\ncontrollers or helpers to put heaUÏÆùvy logic into._\n\nYou can define your attributes over multiple lines and the next line must not be correctly indented, so you can align\nthem properly:\n\n```haml\n%input#password.hint{ type: 'password', name: 'registration[password]',\n data: { hint: 'Something very important', align: 'left' } }\n```\n\nIn the above example you also see the usage for generating HTML5 data attributes.\n\n\n### Running Code\n\nYou can run any CoffeeScript code in your template:\n\n```haml\n- for project in @projects\n - if project.visible\n .project\n %h1= project.name\n %p&= project.description\n```\n\nThere are several supported types to run your code:\n\n* Run code without insert anything into the document: `-`\n* Run code and insert the result into the document: `=`\n\nAll inserted content from running code is escaped by default. You can change this behaviour by setting the appropriate\ncompiler option.\n\nThere are three variations to run code and insert its result into the document, two of them to change the escaping style\nchosen in the compile option:\n\n* Run code and do not escape the result: `!=`\n* Run code and escape the result: `&=`\n* Preserve whitespace when insert the result: `~`\n\nAgain, please consult the official [Haml reference](http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html) for more\ndetails. Haml Coffee implements the same functionality like Ruby Haml, only for CoffeeScript.\n\n#### Functions\n\nYou can also create functions that generate Haml:\n\n```haml\n- sum = (a, b) ->\n %div\n %span= a\n %span= b\n %span= a+b\n= sum(1,2)\n= sum(3,4)\n```\n\nor pass generated HTML output through a function for post-processing.\n\n```haml\n= postProcess ->\n %a{ href: '/' }\n```\n\n\n### CoffeeScript filter\n\nIn addition to the `:plain`, `:javascript`, `:css`, `:cdata`, `:escaped` and `:preserve` filters, which are also\nprovided by Ruby Haml, Haml Coffee has a `:coffeescript` filter.\n\nThe content of the `:coffeescript` filter is run when the template is rendered and doesn't output anything into the\nresulting document. This comes in handy when you have code to run over multiple lines and don't want to prefix each line\nwith `-`:\n\n```haml\n%body\n :coffeescript\n tags = ['CoffeeScript', 'Haml']\n project = 'Haml Coffee'\n %h2= project\n %ul\n - for tag in tags\n %li= tag\n```\n\n\n## Compiler options\n\nThe following section describes all the available compiler options that you can use through the JavaScript API,\nas Express view option or as argument to the command line utility.\n\nThe command line arguments may be slightly different. For example instead of passing `--escape-html=false` you have to\nuse the `--disable-html-escaping` argument. You can see a list of all the command line arguments by executing\n`haml-coffee --help`.\n\n\n### HTML generation options\n\nThe HTML options change the way how the generated HTML will look like.\n\n#### Output format\n\n* Name: 'format'\n* Type: `String`\n* Default: `html5`\n\nThe Haml parser knows different HTML formats to which a given template can be rendered and it must be one of:\n\n* xhtml\n* html4\n* html5\n\nDoctype, self-closing tags and attributes handling depends on this setting. Please consult the official\n[Haml reference](http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html) for more details.\n\n#### Uglify output\n\n* Name: `uglify`\n* Type: `Boolean`\n* Default: `false`\n\nAll generated HTML tags are properly indented by default, so the output looks nice. This can be helpful when debugging.\nYou can skip the indention by setting the `uglify` option to false. This save you some bytes and you'll have increased\nrendering speed.\n\n#### HTML escape\n\n* Name: `htmlEscape`\n* Type: `Boolean`\n* Default: `true`\n\nThe reserved HTML characters `\"`, `'`, `&`, `<` and `>` are converted to their HTML entities by default when they are\ninserted into the HTML document from evaluated CoffeeScript.\n\nYou can always change the escaping mode within the template to either force escaping with `&=` or force unescaping with\n`!=`.\n\n#### Attributes escape\n\n* Name: `escapeAttributes`\n* Type: `Boolean`\n* Default: `true`\n\nAll HTML attributes that are generated by evaluating CoffeeScript are also escaped by default. You can turn of HTML\nescaping of the attributes only by setting `escapeAttributes` to false. You can't change this behaviour in the template\nsince there is no Haml markup for this to instruct the compiler to change the escaping mode.\n\n#### Clean CoffeeScript values\n\n* Name: `cleanValue`\n* Type: `Boolean`\n* Default: `true`\n\nEvery output that is generated from evaluating CoffeeScript code is cleaned before inserting into the document. The\ndefault implementation converts `null` or `undefined` values into an empty string.\n\n#### Preserve whitespace tags\n\n* Name: `preserve`\n* Type: `String`\n* Default: `textarea,pre`\n\nThe `preserve` option defines a list of comma separated HTML tags that are whitespace sensitive. Content from these tags\nmust be preserved, so that the indention has no influence on the displayed content. This is simply done by converting\nthe newline characters to their equivalent HTML entity.\n\n#### Autoclose tags\n\n* Name: `autoclose`\n* Type: `String`\n* Default: `meta,img,link,br,hr,input,area,param,col,base`\n\nThe autoclose option defines a list of tag names that should be automatically closed if they have no content.\n\n\n### Custom helper function options\n\nHaml Coffee provides helper functions for HTML escaping, value cleaning and whitespace preservation, which must be\navailable at render time. By default every generated template function is self-contained and includes all of the helper\nfunctions.\n\nHowever you can change the reference to each helper function by providing the appropriate compiler option and there\nare good reasons to do so:\n\n* You want to reduce the template size and provide all the helpers from a central place.\n* You want to customize a helper function to better fit your needs.\n\nTo change these functions, simply assign the new function name to one of the following options:\n\n * `customHtmlEscape`: Escape the reserved HTML characters into their equivalent HTML entity.\n * `customPreserve`: Converting newlines into their HTML entity.\n * `customFindAndPreserve`: Find whitespace sensitive tags and preserve their content.\n * `customCleanValue`: Clean the value that is returned after evaluating some inline CoffeeScript.\n * `customSurround`: Surrounds a block of Haml code with strings, with no whitespace in between.\n * `customSucceed`: Appends a string to the end of a Haml block, with no whitespace between.\n * `customPrecede`: Prepends a string to the beginning of a Haml block, with no whitespace between.\n\nYou can find a default implementation for all these helper functions in the `dist/helpers` directory:\n[CoffeeScript](https://raw.github.com/9elements/haml-coffee/master/dist/helpers/haml_coffee_helpers.coffee)\n[JavaScript](https://raw.github.com/9elements/haml-coffee/master/dist/helpers/haml_coffee_helpers.js)\n\n\n## Development information\n\nYou'll need the latest version of `node.js`, `npm`, `coffee-script` and `jasmine-node` to run everything. Start\nthe CoffeeScript compilation in the project root directory by running:\n\n```bash\n$ cake watch\n```\n\nAnd run the tests by calling:\n\n```bash\n$ jasmine-node\n```\n\nYou can optionally install [Guard](https://github.com/guard/guard) with the Ruby [Bundler](http://gembundler.com/):\n\n```bash\n$ bundle install\n```\n\nand run Guard to automatically compile your CoffeeScripts and run the Jasmine specs on file modification:\n\n```bash\n$ bundle exec guard\n```\n\n## Changelog\n\nFeel free to take a look at the crispy [changelog](https://github.com/9elements/haml-coffee/blob/master/CHANGELOG.md)\ninstead of crawling through the commit history.\n\n## Related projects\n\nHaml Coffee in the Rails asset pipeline:\n\n* [haml-coffee-assets](https://github.com/netzpirat/haml_coffee_assets)\n\n## Authors\n\n* [Michael Kessler](https://github.com/netzpirat) ([@netzpirat](http://twitter.com/#!/netzpirat))\n* [Sebastion Deutsch](https://github.com/sebastiandeutsch) ([@sippndipp](http://twitter.com/#!/sippndipp))\n* [Jan Varwig](https://github.com/janv) ([@agento](http://twitter.com/#!/agento))\n\nDevelopment is sponsored by [9elements](http://9elements.com) and [mksoft.ch](https://mksoft.ch).\n\n## Contributors\n\nSee all contributors on [the contributor page](https://github.com/9elements/haml-coffee/contributors).\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011-2012 9elements, Michael Kessler\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"markhuetsch","email":"markhuetsch@gmail.com"}],"time":{"modified":"2012-05-14T11:52:25.785Z","created":"2012-05-14T11:49:13.400Z","0.0.1":"2012-05-14T11:49:20.337Z","0.0.2":"2012-05-14T11:50:44.275Z","0.0.3":"2012-05-14T11:52:25.785Z"},"author":{"name":"Michael Kessler","email":"michi@netzpiraten.ch"},"repository":{"type":"git","url":"git://github.com/9elements/haml-coffee.git"},"_id":"haml-coffee-meteor","_rev":"1-3e42add5031fb98eaa04e326bf34318b"}!ÿdocument-storeÿgumroad-onetime¢{"id":"gumroad-onetime","rev":"1-19224ea541a5f5174b238ea81a4485ac","rev_tree":[{"pos":1,"ids":["19224ea541a5f5174b238ea81a4485ac",{"status":"available"},[]]}],"rev_map":{"1-19224ea541a5f5174b238ea81a4485ac":3883},"winningRev":"1-19224ea541a5f5174b238ea81a4485ac","deleted":false,"seq":3883}ÿby-sequenceÿ0000000000003883Æ^{"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","dist-tags":{"latest":"0.0.4-4"},"versions":{"0.0.2":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling for gumroad payment gateway","version":"0.0.2","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":"~0.6.7"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.2","_engineSupported":false,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"27018b7bbaa7386e3dc1e5f70229f61d37a5e065","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.2.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.3":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling for gumroad payment gateway","version":"0.0.3","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"git":"git://github.com/christopherdebeer/gumroad-onetime.git","url":""},"main":"index.js","engines":{"node":"~0.6.7"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.3","_engineSupported":false,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"65f8fa54d8d03627ba64eb335e4323520e23e92f","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.3.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.4":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","version":"0.0.4","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":"~0.6.7"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.4","_engineSupported":false,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"e314a49c9a81eab537afe44c8bad6e9455a891b8","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.4.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.4-1":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","keywords":["gumroad","url","middleware","payment","purchase"],"version":"0.0.4-1","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":"~0.6.7"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.4-1","_engineSupported":false,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"cedb08a5b7c01878727e0e3b9dcb6114815c1b5c","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.4-1.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.4-2":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","keywords":["gumroad","url","middleware","payment","purchase"],"version":"0.0.4-2","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":">=0.6.4"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.4-2","_engineSupported":false,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"3cec567d2176c6fc1ac1bfe7e0ea356f1d5a5938","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.4-2.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.4-333":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","keywords":["gumroad","url","middleware","payment","purchase"],"version":"0.0.4-333","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":">=0.6.00"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.4-333","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"86d1f2c2868749b25a0cea0762cbe79fa665e2b0","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.4-333.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]},"0.0.4-4":{"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"name":"gumroad-onetime","description":"One time payment url handling middleware for gumroad payment gateway links","keywords":["gumroad","url","middleware","payment","purchase"],"version":"0.0.4-4","homepage":"http://github.com/christopherdebeer/gumroad-onetime","repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"main":"index.js","engines":{"node":">=0.6.00"},"dependencies":{"gumroad":"~0.9.4","redis":"~0.7.2","underscore":"~1.3.3","qs":"~0.5.0","node-uuid":"~1.3.3"},"devDependencies":{},"_npmUser":{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"},"_id":"gumroad-onetime@0.0.4-4","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"768a4e15b015732fd0af619c421a8e6ba4414fc7","tarball":"http://registry.npmjs.org/gumroad-onetime/-/gumroad-onetime-0.0.4-4.tgz"},"maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}]}},"readme":"#Gumroad-Onetime\r\n\r\nThis node package makes handling one-time gumroad urls for managing payments as simple as possible. It uses Redis to store session data and urls, and the [gumroad API wrapper](https://github.com/vdemedes/node-gumroad) to communicate with gumroad (making temprary link urls and removing them once used/purchased).\r\n\r\n[More detailed description of the process](#fyi)\r\n\r\n##Install\r\n\r\n`npm install gumroad-onetime`\r\n\r\n##Setup\r\n\r\nSetup your client:\r\n\r\n\tvar gr = require('gumroad-onetime');\r\n\r\n\tgr.setup({\r\n\t\t// gumroad username/email\r\n\t\tusername: \"\",\r\n\t\t\r\n\t\t// gumroad password\r\n\t\tpassword: \"\",\r\n\t\t\r\n\t\t// url for handling purchases\r\n\t\tpath: \"/buy\",\r\n\r\n\t\t// when a user returns from paying, this function will be called \r\n\t\t// and passed the session data you asked to store, or an error if applicable.\r\n\t\tonPurchase: function(err, req, res, data){\r\n\t\t\tconsole.log(\"Error: \", err);\r\n\t\t\tconsole.log(\"Session Data: \", data);\r\n\t\t}\r\n\t});\r\n\r\n###Middleware\r\n\r\nMiddleware follows the connect style `function(req, res, next){}` so can either be added to a standard http server, where the middleware will check if it needs to handle the request and if not, passes it to the rest of your app/routes.\r\n\r\n\thttp.createServer(function (req, res) {\r\n\t\tgr.middleware(req, res, function(req, res){\r\n\t\t\t// other routes\r\n\t\t\t// the rest of your app\r\n\t\t\t// etc\r\n\t\t});\r\n\t\t\r\n\t}).listen(80);\r\n\r\nThe middleware also allows you to add it seemlessly to `Express` or `Connect` apps, and any other frameworks that follow the same pattern.\r\n\r\n\tvar express = require('express');\r\n\tvar app = express.createServer();\r\n\r\n\tapp.configure(function(){\r\n\t app.use(express.methodOverride());\r\n\t app.use(express.bodyParser());\r\n\r\n\t app.use(gr.middleware); // Insert Gumroad-onetime middleware\r\n\r\n\t app.use(app.router);\r\n\t});\r\n\r\n\tapp.get('/', function(req, res){\r\n\t res.send('Hello World');\r\n\t});\r\n\r\n\tapp.listen(3000);\r\n\r\n\r\n###Purchases\r\n\r\nAt any point you can send a user through the purchase process, by passing the request and response objects, the link info for your purchase as well as any session data you want to keep, like so:\r\n\t\r\n\tvar userData = {user: \"data\", that: [\"you'd\", \"like\", \"to\", \"store\"], awesome: true};\r\n\r\n\tvar link = {\r\n\t\tname: \"Awesome thing to buy\",\r\n\t\tprice: 9001,\r\n\t\tdesc: \"A nice informative description for the purchase\"\r\n\t}\r\n\r\n\tgr.purchase(req, res, userData, link, function(err, data) {\r\n\t\tif (err) {\r\n\t\t\tconsole.log(\"Error completing purchase.\")\r\n\t\t} else {\r\n\t\t\tres.writeHead(500, {'Content-Type': 'text/html'});\r\n\t\t\tres.end('Purchase successful.');\r\n\t\t}\r\n\t});\r\n\r\n##FYI\r\nWhen you issue a purchase call, gumroad-onetime creates a gumroad URL with the path you requested (ie: \"/buy\") and a unique token (uuid v4.) and whatever title, price and description you selected for your link.\r\n\r\nThe user request is then responded to with a `302` redirect to Gumroad, and any session data you need stored (username, what they're buying etc) is stored in redis. \r\n\r\nWhen the user has completed the purchase, gumroad will give them the url which will be `http:///?token=`, which the middleware then intercepts, validates against the redis store and fires your onPurchase callback, with the session data you asked to be stored, allowing you to then update the users profile/inventory/credits/etc as required. \r\n\r\nThe gumroad URL is then removed, so no further purchases can be made on that url.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t","maintainers":[{"name":"christopherdebeer","email":"christopherdebeer@gmail.com"}],"time":{"modified":"2012-06-07T10:21:18.793Z","created":"2012-06-04T10:54:29.209Z","0.0.2":"2012-06-04T10:54:31.813Z","0.0.3":"2012-06-04T10:55:42.269Z","0.0.4":"2012-06-04T10:58:30.813Z","0.0.4-1":"2012-06-04T11:01:10.598Z","0.0.4-2":"2012-06-07T09:27:53.175Z","0.0.4-333":"2012-06-07T09:28:26.858Z","0.0.4-4":"2012-06-07T10:21:18.793Z"},"author":{"name":"Christopher de Beer","email":"christopherdebeer@gmail.com","url":"http://christopherdebeer.com"},"repository":{"type":"git","url":"git://github.com/christopherdebeer/gumroad-onetime.git"},"_id":"gumroad-onetime","_rev":"1-19224ea541a5f5174b238ea81a4485ac"}ÿdocument-storeÿgrunt-yuidocs {"id":"grunt-yuidocs","rev":"1-31474f4c7ee23a68de87123e562210a1","rev_tree":[{"pos":1,"ids":["31474f4c7ee23a68de87123e562210a1",{"status":"available"},[]]}],"rev_map":{"1-31474f4c7ee23a68de87123e562210a1":3882},"winningRev":"1-31474f4c7ee23a68de87123e562210a1","deleted":false,"seq":3882}ÿby-sequenceÿ0000000000003882¥({"name":"grunt-yuidocs","description":"Grunt plugin for generating YUIDocs","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"grunt-yuidocs","description":"Grunt plugin for generating YUIDocs","version":"0.1.0","homepage":"https://github.com/gcpantazis/grunt-yuidocs","author":{"name":"George Pantazis","email":"gcpantazis@gmail.com"},"repository":{"type":"git","url":"git://github.com/gcpantazis/grunt-yuidocs.git"},"bugs":{"url":"https://github.com/gcpantazis/grunt-yuidocs/issues"},"licenses":[{"type":"MIT","url":"https://github.com/gcpantazis/grunt-yuidocs/blob/master/LICENSE-MIT"}],"main":"grunt.js","engines":{"node":">=0.6.14"},"dependencies":{"grunt":"~0.3.4","yuidocjs":">=0.3.14"},"devDependencies":{},"keywords":["gruntplugin"],"_id":"grunt-yuidocs@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"_from":"grunt-yuidocs@>= 0.1.0","_npmUser":{"name":"gcpantazis","email":"gcpantazis@gmail.com"},"dist":{"shasum":"5ed702d102204a862a655737f58e111a0e473152","tarball":"http://registry.npmjs.org/grunt-yuidocs/-/grunt-yuidocs-0.1.0.tgz"},"maintainers":[{"name":"gcpantazis","email":"gcpantazis@gmail.com"}],"directories":{}},"0.1.1":{"name":"grunt-yuidocs","description":"Grunt plugin for generating YUIDocs","version":"0.1.1","homepage":"https://github.com/gcpantazis/grunt-yuidocs","author":{"name":"George Pantazis","email":"gcpantazis@gmail.com"},"repository":{"type":"git","url":"git://github.com/gcpantazis/grunt-yuidocs.git"},"bugs":{"url":"https://github.com/gcpantazis/grunt-yuidocs/issues"},"licenses":[{"type":"MIT","url":"https://github.com/gcpantazis/grunt-yuidocs/blob/master/LICENSE-MIT"}],"main":"grunt.js","engines":{"node":">=0.6.14"},"dependencies":{"grunt":"~0.3.4","yuidocjs":">=0.3.14"},"devDependencies":{},"keywords":["gruntplugin"],"_id":"grunt-yuidocs@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"_from":"grunt-yuidocs@>= 0.1.1","_npmUser":{"name":"gcpantazis","email":"gcpantazis@gmail.com"},"dist":{"shasum":"1adec6949ee7c9cfe69e76c3de0bd4fb258ce553","tarball":"http://registry.npmjs.org/grunt-yuidocs/-/grunt-yuidocs-0.1.1.tgz"},"maintainers":[{"name":"gcpantazis","email":"gcpantazis@gmail.com"}],"directories":{}},"0.1.2":{"name":"grunt-yuidocs","description":"Grunt plugin for generating YUIDocs","version":"0.1.2","homepage":"https://github.com/gcpantazis/grunt-yuidocs","author":{"name":"George Pantazis","email":"gcpantazis@gmail.com"},"repository":{"type":"git","url":"git://github.com/gcpantazis/grunt-yuidocs.git"},"bugs":{"url":"https://github.com/gcpantazis/grunt-yuidocs/issues"},"licenses":[{"type":"MIT","url":"https://github.com/gcpantazis/grunt-yuidocs/blob/master/LICENSE-MIT"}],"main":"grunt.js","engines":{"node":">=0.6.14"},"dependencies":{"grunt":"~0.3.4","yuidocjs":">=0.3.14"},"devDependencies":{},"keywords":["gruntplugin"],"_id":"grunt-yuidocs@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"_from":"grunt-yuidocs@>= 0.1.2","readme":"# grunt-yuidocs\n\nThis project has been moved into [grunt-contrib](https://github.com/gruntjs/grunt-contrib), go grab it over there!","dist":{"shasum":"4c424c5b728e4524428805732e99ddde57056435","tarball":"http://registry.npmjs.org/grunt-yuidocs/-/grunt-yuidocs-0.1.2.tgz"},"maintainers":[{"name":"gcpantazis","email":"gcpantazis@gmail.com"}]},"0.1.3":{"name":"grunt-yuidocs","description":"Grunt plugin for generating YUIDocs","version":"0.1.3","homepage":"https://github.com/gcpantazis/grunt-yuidocs","author":{"name":"George Pantazis","email":"gcpantazis@gmail.com"},"repository":{"type":"git","url":"git://github.com/gcpantazis/grunt-yuidocs.git"},"bugs":{"url":"https://github.com/gcpantazis/grunt-yuidocs/issues"},"licenses":[{"type":"MIT","url":"https://github.com/gcpantazis/grunt-yuidocs/blob/master/LICENSE-MIT"}],"main":"grunt.js","engines":{"node":">=0.6.14"},"dependencies":{"grunt":"~0.3.4","yuidocjs":">=0.3.14"},"devDependencies":{},"keywords":["gruntplugin"],"readme":"# grunt-yuidocs\n\nThis project has been moved into [grunt-contrib](https://github.com/gruntjs/grunt-contrib), go grab it over there!","_id":"grunt-yuidocs@0.1.3","dist":{"shasum":"4437aeeb2221807ccb34a1e326bc5dc5000381b6","tarball":"http://registry.npmjs.org/grunt-yuidocs/-/grunt-yuidocs-0.1.3.tgz"},"maintainers":[{"name":"gcpantazis","email":"gcpantazis@gmail.com"}]}},"readme":"# grunt-yuidocs\n\n* 0.1.0 Initial release\n\n## License\nCopyright (c) 2012 George Pantazis\nLicensed under the MIT license.\n","maintainers":[{"name":"gcpantazis","email":"gcpantazis@gmail.com"}],"time":{"modified":"2012-08-08T18:57:27.700Z","created":"2012-06-30T21:18:16.333Z","0.1.0":"2012-06-30T21:18:17.284Z","0.1.1":"2012-07-01T17:59:44.114Z","0.1.2":"2012-08-08T18:55:26.186Z","0.1.3":"2012-08-08T18:57:27.700Z"},"author":{"name":"George Pantazis","email":"gcpantazis@gmail.com"},"repository":{"type":"git","url":"git://github.com/gcpantazis/grunt-yuidocs.git"},"_id":"grunt-yuidocs","_rev":"1-31474f4c7ee23a68de87123e562210a1"}ÿdocument-storeÿgrunt-glue{"id":"grunt-glue","rev":"1-cdaaefef6a7e2b3cba40ba86e3c56ab2","rev_tree":[{"pos":1,"ids":["cdaaefef6a7e2b3cba40ba86e3c56ab2",{"status":"available"},[]]}],"rev_map":{"1-cdaaefef6a7e2b3cba40ba86e3c56ab2":3881},"winningRev":"1-cdaaefef6a7e2b3cba40ba86e3c56ab2","deleted":false,"seq":3881}ÿby-sequenceÿ0000000000003881Î{"name":"grunt-glue","description":"A grunt plugin for the glue spriting tool.","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"grunt-glue","description":"A grunt plugin for the glue spriting tool.","version":"0.1.0","homepage":"https://bitbucket.org/carkraus/grunt-glue","author":{"name":"Carsten Kraus","email":"carsten.kraus@gmail.com"},"repository":{"type":"mercurial","url":"https://bitbucket.org/carkraus/grunt-glue"},"bugs":{"url":"https://bitbucket.org/carkraus/grunt-glue/issues"},"licenses":[{"type":"MIT","url":"https://bitbucket.org/carkraus/grunt-glue/raw/0f316be8c717/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"grunt-glue":"bin/grunt-glue"},"engines":{"node":">= 0.6.0"},"dependencies":{"grunt":"~0.4.0a"},"devDependencies":{"grunt":"~0.4.0a"},"keywords":["gruntplugin"],"_npmUser":{"name":"casio","email":"carsten.kraus@gmail.com"},"_id":"grunt-glue@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"277579b6ca87b60fead6a7eb353f5bdbe6d53c62","tarball":"http://registry.npmjs.org/grunt-glue/-/grunt-glue-0.1.0.tgz"},"maintainers":[{"name":"casio","email":"carsten.kraus@gmail.com"}]},"0.1.1":{"name":"grunt-glue","description":"A grunt plugin for the glue spriting tool.","version":"0.1.1","homepage":"https://bitbucket.org/carkraus/grunt-glue","author":{"name":"Carsten Kraus","email":"carsten.kraus@gmail.com"},"repository":{"type":"mercurial","url":"https://bitbucket.org/carkraus/grunt-glue"},"bugs":{"url":"https://bitbucket.org/carkraus/grunt-glue/issues"},"licenses":[{"type":"MIT","url":"https://bitbucket.org/carkraus/grunt-glue/raw/0f316be8c717/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"grunt-glue":"bin/grunt-glue"},"engines":{"node":">= 0.6.0"},"dependencies":{"grunt":">= 0.3.9"},"devDependencies":{"grunt":">= 0.3.9"},"keywords":["gruntplugin"],"_npmUser":{"name":"casio","email":"carsten.kraus@gmail.com"},"_id":"grunt-glue@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"21112ce1b699125704c2090cd65b12fe8f3fa425","tarball":"http://registry.npmjs.org/grunt-glue/-/grunt-glue-0.1.1.tgz"},"maintainers":[{"name":"casio","email":"carsten.kraus@gmail.com"}]}},"readme":"# grunt-glue\n\nA grunt plugin for the glue spriting tool([https://github.com/jorgebastida/glue](https://github.com/jorgebastida/glue)).\n\n## Getting Started\n\nInstall glue. See [http://glue.readthedocs.org/en/latest/installation.html](http://glue.readthedocs.org/en/latest/installation.html).\n\nInstall this grunt plugin next to your project's [Gruntfile][getting_started] with: `npm install grunt-glue`\n\nAdd this line to your project's Gruntfile:\n\n grunt.loadNpmTasks('grunt-glue');\n\nConfigure the glue task for each of your sprite targets, like\n\n grunt.initConfig({\n // ...\n glue: {\n icons: {\n src: 'assets/icons',\n dest: 'assets/icons_built'\n },\n buttons: {\n src: 'assets/buttons',\n options: '--css=assets/built --img=test/assets/built --less --namespace=btn --optipng'\n }\n }\n // ...\n });\n\nSee the glue documentation for further configuration options:\n[http://glue.readthedocs.org/en/latest/options.html](http://glue.readthedocs.org/en/latest/options.html).\n\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## License\nCopyright (c) 2012 Carsten Kraus\nLicensed under the MIT license.\n","maintainers":[{"name":"casio","email":"carsten.kraus@gmail.com"}],"time":{"modified":"2012-06-20T11:24:09.238Z","created":"2012-06-20T11:19:37.185Z","0.1.0":"2012-06-20T11:19:39.936Z","0.1.1":"2012-06-20T11:24:09.238Z"},"author":{"name":"Carsten Kraus","email":"carsten.kraus@gmail.com"},"repository":{"type":"mercurial","url":"httpsfo]ù://bitbucket.org/carkraus/grunt-glue"},"_id":"grunt-glue","_rev":"1-cdaaefef6a7e2b3cba40ba86e3c56ab2"}ÿdocument-storeÿgrunt-concatŸ{"id":"grunt-concat","rev":"1-d862dd96307cf452cf10198e6532aab1","rev_tree":[{"pos":1,"ids":["d862dd96307cf452cf10198e6532aab1",{"status":"available"},[]]}],"rev_map":{"1-d862dd96307cf452cf10198e6532aab1":3880},"winningRev":"1-d862dd96307cf452cf10198e6532aab1","deleted":false,"seq":3880}ÿby-sequenceÿ0000000000003880Q{"name":"grunt-concat","description":"Concatenate files with remote supports.","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.0","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.9","request":"*"},"devDependencies":{"grunt":"~0.3.9"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat (grunt plugin)\n\nConcatenate files with remote supports.","_id":"grunt-concat@0.1.0","dist":{"shasum":"2bbbeff44d77f733442cd440bcfb7c02f7bb5391","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.0.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]},"0.1.1":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.1","homepage":"https://github.com/eastkiki/grunt-concat","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"bugs":{"url":"https://github.com/eastkiki/grunt-concat/issues"},"licenses":[{"type":"MIT","url":"https://github.com/eastkiki/grunt-concat/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","request":"*"},"devDependencies":{"grunt":"~0.3.11","request":"*"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat\n\nConcatenate files with remote supports.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-concat`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-concat');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Dong-il Kim \nLicensed under the MIT license.\n","_id":"grunt-concat@0.1.1","dist":{"shasum":"d28ae5f5e05bdad3c66bf11986d5f910f31f85b5","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.1.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]},"0.1.2":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.2","homepage":"https://github.com/eastkiki/grunt-concat","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"bugs":{"url":"https://github.com/eastkiki/grunt-concat/issues"},"licenses":[{"type":"MIT","url":"https://github.com/eastkiki/grunt-concat/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","request":"*"},"devDependencies":{"grunt":"~0.3.11","request":"*"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat\n\nConcatenate files with remote supports.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-concat`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-concat');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Dong-il Kim \nLicensed under the MIT license.\n","_id":"grunt-concat@0.1.2","dist":{"shasum":"c7678ddd82129213243816f4d80ce65df13ca2c5","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.2.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]},"0.1.3":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.3","homepage":"https://github.com/eastkiki/grunt-concat","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"bugs":{"url":"https://github.com/eastkiki/grunt-concat/issues"},"licenses":[{"type":"MIT","url":"https://github.com/eastkiki/grunt-concat/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","request":"*"},"devDependencies":{"grunt":"~0.3.11","request":"*"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat\n\nConcatenate files with remote supports.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-concat`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-concat');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Dong-il Kim \nLicensed under the MIT license.\n","_id":"grunt-concat@0.1.3","dist":{"shasum":"9784014fbc85846346ff493144f20f0298c80436","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.3.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]},"0.1.5":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.5","homepage":"https://github.com/eastkiki/grunt-concat","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"bugs":{"url":"https://github.com/eastkiki/grunt-concat/issues"},"licenses":[{"type":"MIT","url":"https://github.com/eastkiki/grunt-concat/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.12","request":"*"},"devDependencies":{"grunt":"~0.3.12","request":"*"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat\n\nConcatenate files with remote supports.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-concat`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-concat');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Dong-il Kim \nLicensed under the MIT license.\n","_id":"grunt-concat@0.1.5","dist":{"shasum":"fb2b7104cd216b2406fcdc4d9fede5530c6483fc","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.5.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]},"0.1.6":{"name":"grunt-concat","description":"Concatenate files with remote supports.","version":"0.1.6","homepage":"https://github.com/eastkiki/grunt-concat","author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"bugs":{"url":"https://github.com/eastkiki/grunt-concat/issues"},"licenses":[{"type":"MIT","url":"https://github.com/eastkiki/grunt-concat/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-concat":"bin/grunt-concat"},"engines":{"node":"*"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.12","request":"*"},"devDependencies":{"grunt":"~0.3.12","request":"*"},"keywords":["gruntplugin","concat","remote"],"readme":"# grunt-concat\n\nConcatenate files with remote supports.\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-concat`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-concat');\n```\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 Dong-il Kim \nLicensed under the MIT license.\n","_id":"grunt-concat@0.1.6","dist":{"shasum":"2da9f8272156bd07f340ccbc61f06613510d0826","tarball":"http://registry.npmjs.org/grunt-concat/-/grunt-concat-0.1.6.tgz"},"maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}]}},"readme":"# grunt-concat (grunt plugin)\n\nConcatenate files with remote supports.","maintainers":[{"name":"eastkiki","email":"east715@gmail.com"}],"time":{"modified":"2012-08-08T09:12:41.745Z","created":"2012-07-25T02:07:31.910Z","0.1.0":"2012-07-25T02:07:37.231Z","0.1.1":"2012-07-25T04:57:51.459Z","0.1.2":"2012-07-25T07:19:11.011Z","0.1.3":"2012-07-27T06:18:09.387Z","0.1.5":"2012-08-02T09:52:30.402Z","0.1.6":"2012-08-08T09:12:41.745Z"},"author":{"name":"Dong-il Kim","email":"east715@gmail.com"},"repository":{"type":"git","url":"git@github.com:eastkiki/grunt-concat.git"},"users":{"fgribreau":true},"_id":"grunt-concat","_rev":"1-d862dd96307cf452cf10198e6532aab1"}ÿdocument-storeÿgoodiesš{"id":"goodies","rev":"1-68f8a6646a056b669bc00897ae4ef7ed","rev_tree":[{"pos":1,"ids":["68f8a6646a056b669bc00897ae4ef7ed",{"status":"available"},[]]}],"rev_map":{"1-68f8a6646a056b669bc00897ae4ef7ed":3879},"winningRev":"1-68f8a6646a056b669bc00897ae4ef7ed","deleted":false,"seq":3879}ÿby-sequenceÿ0000000000003879–*{"name":"goodies","description":"Native object extension goodies.","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"goodies","description":"Native object extension goodies.","author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"version":"0.0.1","main":"index.js","keywords":["goodies","merge","unique","unixtime"],"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"homepage":"https://github.com/ifit/goodies","_npmUser":{"name":"regality","email":"regality@gmail.com"},"_id":"goodies@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4ca779ead97c50c96c5e3364d307184fbdba557a","tarball":"http://registry.npmjs.org/goodies/-/goodies-0.0.1.tgz"},"maintainers":[{"name":"regality","email":"regality@gmail.com"}]},"0.0.2":{"name":"goodies","description":"Native object extension goodies.","author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"version":"0.0.2","main":"index.js","keywords":["goodies","merge","unique","unixtime"],"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"homepage":"https://github.com/ifit/goodies","_npmUser":{"name":"regality","email":"regality@gmail.com"},"_id":"goodies@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"35668fab8010e210641b3b4acc01d3a5fcc7e130","tarball":"http://registry.npmjs.org/goodies/-/goodies-0.0.2.tgz"},"maintainers":[{"name":"regality","email":"regality@gmail.com"}]},"0.1.0":{"name":"goodies","description":"Native object extension goodies.","author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"version":"0.1.0","main":"index.js","keywords":["goodies","merge","unique","unixtime"],"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"homepage":"https://github.com/ifit/goodies","_npmUser":{"name":"regality","email":"regality@gmail.com"},"_id":"goodies@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"2db71e54eb368e1c564c00d3e8d3db259467bc3c","tarball":"http://registry.npmjs.org/goodies/-/goodies-0.1.0.tgz"},"maintainers":[{"name":"regality","email":"regality@gmail.com"}]},"0.1.1":{"name":"goodies","description":"Native object extension goodies.","author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"version":"0.1.1","main":"index.js","keywords":["goodies","merge","unique","unixtime"],"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"homepage":"https://github.com/ifit/goodies","_npmUser":{"name":"regality","email":"regality@gmail.com"},"_id":"goodies@0.1.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"99b41ef48065ef899aff6a3ae8c4a03987c49cd1","tarball":"http://registry.npmjs.org/goodies/-/goodies-0.1.1.tgz"},"maintainers":[{"name":"regality","email":"regality@gmail.com"}]},"0.1.2":{"name":"goodies","description":"Native object extension goodies.","author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"version":"0.1.2","main":"index.js","keywords":["goodies","merge","unique","unixtime"],"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"homepage":"https://github.com/ifit/goodies","_npmUser":{"name":"regality","email":"regality@gmail.com"},"_id":"goodies@0.1.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6ab21518924a65e7e969ffc1601de56a267439a9","tarball":"http://registry.npmjs.org/goodies/-/goodies-0.1.2.tgz"},"maintainers":[{"name":"regality","email":"regality@gmail.com"}]}},"readme":"# Goodies\n\nThe goodies package adds to the prototype of javascripts native objects.\nIt adds a few methods that are very handy to have, and not implemented\nin node.\n\n# Added methods\n\n### `Object.merge(object)`\n\nReturns a new object that is created from the calling object, and the\nobject passed in. If both objects have the same property, the property\nfrom the object being passed wins, unless both properties are type\nobject, in which case that object is recursively merged.\n\n### `Array.unique()`\n\nThis method only works on sorted arrays. It removes duplicate\nproperties on the array. Works in place.\n\n### `Date.unixTime()`\n\nReturns the unix time of the date (seconds since Jan 1, 1970).\n\n### `Date.fromUnixTime(time)`\n\nSets the date based on the unix time passed in.\n","maintainers":[{"name":"regality","email":"regality@gmail.com"}],"time":{"modified":"2012-06-20T17:35:32.710Z","created":"2012-02-27T17:25:14.884Z","0.0.1":"2012-02-27T17:25:15.948Z","0.0.2":"2012-02-27T18:08:17.341Z","0.1.0":"2012-03-03T01:40:17.172Z","0.1.1":"2012-06-20T17:12:36.285Z","0.1.2":"2012-06-20T17:35:32.710Z"},"author":{"name":"Adam Blackburn","email":"adam@ifit.com"},"repository":{"type":"git","url":"git://github.com/ifit/goodies.git"},"_id":"goodies","_rev":"1-68f8a6646a056b669bc00897ae4ef7ed"}ÿdocument-storeÿgntp—{"id":"gntp","rev":"1-2ca34cff4429ddfb24c37c7cef0a7a64","rev_tree":[{"pos":1,"ids":["2ca34cff4429ddfb24c37c7cef0a7a64",{"status":"available"},[]]}],"rev_map":{"1-2ca34cff4429ddfb24c37c7cef0a7a64":3878},"winningRev":"1-2ca34cff4429ddfb24c37c7cef0a7a64","deleted":false,"seq":3878}ÿby-sequenceÿ0000000000003878Þ${"name":"gntp","description":"Full, native, Growl Notification Transport Protocol (GNTP)implementation.","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"gntp","version":"0.1.0","description":"Full, native, Growl Notification Transport Protocol (GNTP)implementation.","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/WarheadsSE/node-gntp.git"},"keywords":["gntp","growl","notification","server"],"author":{"name":"WarheadsSE","email":"max@warheads.net"},"engines":{"node":">=0.6.0"},"readme":"# node-gntp : GNTP implementation in pure Nodejs javascript\r\nThis library aims to provide the ability to send Growl notifications to capable computers over [GNTP][1], with support for resources and encryption. \r\n\r\nEventually, this will also provide the capability of being a forwarder source.\r\n\r\n## Receiving notifications\r\n* [Growl for Windows](http://www.growlforwindows.com)\r\n* [Growl for Mac](http://growl.info)\r\n\r\nThis library is currently intended for use with node stable v0.6.0+\r\n\r\nAt the moment this library is mostly functional as a sender, but is not exactly user friendly.\r\n\r\n## Known todos\r\n* Generate appropriate errors, and handling.\r\n* Complete parsing routines\r\n* Make this puppy a lot more user friendly.\r\n\r\n# General Usage\r\nSee the contained gntp-send.js for a complete example.\r\n\r\n\r\n\r\n[1]: http://www.growlforwindows.com/gfw/help/gntp.aspx \"GNTP Specification\"\r\n","_id":"gntp@0.1.0","dist":{"shasum":"a255468c03b640f62319ac6539cb141207577da1","tarball":"http://registry.npmjs.org/gntp/-/gntp-0.1.0.tgz"},"maintainers":[{"name":"WarheadsSE","email":"max@warheads.net"}]},"0.1.1":{"name":"gntp","version":"0.1.1","description":"Full, native, Growl Notification Transport Protocol (GNTP)implementation.","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/WarheadsSE/node-gntp.git"},"keywords":["gntp","growl","notification","server"],"author":{"name":"WarheadsSE","email":"max@warheads.net"},"engines":{"node":">=0.6.0"},"readme":"# node-gntp : GNTP implementation in pure Nodejs javascript\r\nThis library aims to provide the ability to send Growl notifications to capable computers over [GNTP][1], with support for resources and encryption. \r\n\r\nEventually, this will also provide the capability of being a forwarder source.\r\n\r\n## Receiving notifications\r\n* [Growl for Windows](http://www.growlforwindows.com)\r\n* [Growl for Mac](http://growl.info)\r\n\r\nThis library is currently intended for use with node stable v0.6.0+\r\n\r\nAt the moment this library is mostly functional as a sender, but is not exactly user friendly.\r\n\r\n## Known todos\r\n* Generate appropriate errors, and handling.\r\n* Complete parsing routines\r\n* Make this puppy a lot more user friendly.\r\n\r\n# General Usage\r\nSee the contained gntp-send.js for a complete example.\r\n\r\n\r\n\r\n[1]: http://www.growlforwindows.com/gfw/help/gntp.aspx \"GNTP Specification\"\r\n","_id":"gntp@0.1.1","dist":{"shasum":"2e0880749e87bae0ac5d8f8b640adf47b6612ccc","tarball":"http://registry.npmjs.org/gntp/-/gntp-0.1.1.tgz"},"maintainers":[{"name":"WarheadsSE","email":"max@warheads.net"}]}},"readme":"# node-gntp : GNTP implementation in pure Nodejs javascript\r\nThis library aims to provide the ability to send Growl notifications to capable computers over [GNTP][1], with support for resources and encryption. \r\n\r\nEventually, this will also provide the capability of being a forwarder source.\r\n\r\n## Receiving notifications\r\n* [Growl for Windows](http://www.growlforwindows.com)\r\n* [Growl for Mac](http://growl.info)\r\n\r\nThis library is currently intended for use with node stable v0.6.0+\r\n\r\nAt the moment this library is mostly functional as a sender, but is not exactly user friendly.\r\n\r\n## Known todos\r\n* Generate appropriate errors, and handling.\r\n* Complete parsing routines\r\n* Make this puppy a lot more user friendly.\r\n\r\n# General Usage\r\nSee the contained gntp-send.js for a complete example.\r\n\r\n\r\n\r\n[1]: http://www.growlforwindows.com/gfw/help/gntp.aspx \"GNTP Specification\"\r\n","maintainers":[{"name":"WarheadsSE","email":"max@warheads.net"}],"time":{"modified":"2012-08-02T13:43:32.318Z","created":"2012-07-09T15:32:29.302Z","0.1.0":"2012-07-09T15:32:30.465Z","0.1.1":"2012-08-01T21:46:23.814Z"},"author":{"name":"WarheadsSE","email":"max@warheads.net"},"repository":{"type":"git","url":"git://github.com/WarheadsSE/node-gntp.git"},"users":{"fgribreau":true},"_id":"gntp","_rev":"1-2ca34cff4429ddfb24c37c7cef0a7a64"}&ÿdocument-storeÿgithub-repos-example§{"id":"github-repos-example","rev":"1-2513a8caf112036eea1b61cb7d235773","rev_tree":[{"pos":1,"ids":["2513a8caf112036eea1b61cb7d235773",{"status":"available"},[]]}],"rev_map":{"1-2513a8caf112036eea1b61cb7d235773":3877},"winningRev":"1-2513a8caf112036eea1b61cb7d235773","deleted":false,"seq":3877}ÿby-sequenceÿ0000000000003877è{"name":"github-repos-example","description":"Return a list of repos for a user from github","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"name":"github-repos-example","description":"Return a list of repos for a user from github","version":"0.0.0","main":"github.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"ollieparsley-example","email":"ollie+example@ollieparsley.com"},"_id":"github-repos-example@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d09d5156e9194e74cd3162a2e8f2edb4be2c4734","tarball":"http://registry.npmjs.org/github-repos-example/-/github-repos-example-0.0.0.tgz"},"readme":"","maintainers":[{"name":"ollieparsley-example","email":"ollie+example@ollieparsley.com"}]},"0.0.1":{"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"name":"github-repos-example","description":"Return a list of repos for a user from github","version":"0.0.1","main":"github.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"ollieparsley-example","email":"ollie+example@ollieparsley.com"},"_id":"github-repos-example@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"72a3297155f9bc3d305bc4bc85dda2bfa6f3241d","tarball":"http://registry.npmjs.org/github-repos-example/-/github-repos-example-0.0.1.tgz"},"readme":"","maintainers":[{"name":"ollieparsley-example","email":"ollie+example@ollieparsley.com"}]}},"readme":"","maintainers":[{"name":"ollieparsley-example","email":"ollie+example@ollieparsley.com"}],"time":{"modified":"2012-06-07T16:53:56.638Z","created":"2012-06-07T16:51:23.960Z","0.0.0":"2012-06-07T16:51:26.337Z","0.0.1":"2012-06-07T16:53:56.638Z"},"author":{"name":"Ollie Parsley","email":"ollie@ollieparsley.com","url":"http://ollieparsley.com"},"_id":"github-repos-example","_rev":"1-2513a8caf112036eea1b61cb7d235773"}ÿdocument-storeÿgitdocsš{"id":"gitdocs","rev":"1-41de5e30de2dddd2390706747e3df875","rev_tree":[{"pos":1,"ids":["41de5e30de2dddd2390706747e3df875",{"status":"available"},[]]}],"rev_map":{"1-41de5e30de2dddd2390706747e3df875":3876},"winningRev":"1-41de5e30de2dddd2390706747e3df875","deleted":false,"seq":3876}ÿby-sequenceÿ0000000000003876“ {"name":"gitdocs","description":"Documentation generated automatically from files hosted in github","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"name":"gitdocs","version":"0.0.0","description":"Documentation generated automatically from files hosted in github","main":"server.js","dependencies":{"deep-equal":"~0.0.0","consolidate":"~0.3.1","express":"~3.0.0beta4","dox":"~0.3.1","highlight.js":"~7.0.1","less-middleware":"~0.1.4","qejs":"~2.0.1","marked":"~0.2.5","q":"~0.8.5","request":"~2.9.203"},"bin":{"gitdocs":"./bin/gitdocs"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node server.js"},"repository":{"type":"git","url":"https://github.com/jepso/gitdocs.git"},"keywords":["docs","dox","git","github","documentation"],"author":{"name":"JEPSO"},"license":"BSD","_id":"gitdocs@0.0.0","dist":{"shasum":"ef1a27da79da1498a83047fea3874d513e1fb3f3","tarball":"http://registry.npmjs.org/gitdocs/-/gitdocs-0.0.0.tgz"},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"# Welcolme to gitdocs\r\n\r\nOnce gitdocs goes live it will be a hosted service at [www.gitdocs.co.uk](www.gitdocs.co.uk) and will provide documentation passed from comments in javascript code. It will be un-oppinionatted so will let you choose your own style of docs to view.","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:56:01.674Z","created":"2012-06-30T14:52:26.590Z","0.0.0":"2012-06-30T14:52:29.294Z"},"author":{"name":"JEPSO"},"repository":{"type":"git","url":"https://github.com/jepso/gitdocs.git"},"_id":"gitdocs","_rev":"1-41de5e30de2dddd2390706747e3df875"}ÿdocument-storeÿgeturl™{"id":"geturl","rev":"1-0a4d96a95616f07097177c105b279b3c","rev_tree":[{"pos":1,"ids":["0a4d96a95616f07097177c105b279b3c",{"status":"available"},[]]}],"rev_map":{"1-0a4d96a95616f07097177c105b279b3c":3875},"winningRev":"1-0a4d96a95616f07097177c105b279b3c","deleted":false,"seq":3875}ÿby-sequenceÿ0000000000003875Õ {"name":"geturl","description":"geturl","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"geturl","version":"0.0.1","author":{"name":"nodejs.dk"},"description":"geturl","homepage":"http://nodejs.dk/geturl","engines":["node >= 0.6.6"],"main":"index","dependencies":{},"devDependencies":{},"_npmUser":{"name":"iskedk","email":"iskedk@bloggen.dk"},"_id":"geturl@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"a23c048539427187b0229d9d516737a96530b4bd","tarball":"http://registry.npmjs.org/geturl/-/geturl-0.0.1.tgz"},"readme":"","maintainers":[{"name":"iskedk","email":"iskedk@bloggen.dk"}]},"0.0.3":{"name":"geturl","version":"0.0.3","author":{"name":"iskedk"},"description":"geturl","homepage":"http://nodejs.dk/geturl","engines":["node >= 0.6.6"],"main":"index","dependencies":{},"devDependencies":{},"_npmUser":{"name":"iskedk","email":"iskedk@bloggen.dk"},"_id":"geturl@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"9fe3d104a1ee624717cb3ae7ca8cb29dc7acd626","tarball":"http://registry.npmjs.org/geturl/-/geturl-0.0.3.tgz"},"readme":"","maintainers":[{"name":"iskedk","email":"iskedk@bloggen.dk"}]}},"readme":"","maintainers":[{"name":"iskedk","email":"iskedk@bloggen.dk"}],"time":{"modified":"2012-04-24T09:31:07.993Z","created":"2012-04-24T08:48:17.647Z","0.0.1":"2012-04-24T08:48:19.637Z","0.0.3":"2012-04-24T09:31:07.993Z"},"author":{"name":"iskedk"},"_id":"geturl","_rev":"1-0a4d96a95616f07097177c105b279b3c"} ÿdocument-storeÿgb-crazy-alert¡{"id":"gb-crazy-alert","rev":"1-5bd74f61cf39c17e711971562e1408a9","rev_tree":[{"pos":1,"ids":["5bd74f61cf39c17e711971562e1408a9",{"status":"available"},[]]}],"rev_map":{"1-5bd74f61cf39c17e711971562e1408a9":3874},"winningRev":"1-5bd74f61cf39c17e711971562e1408a9","deleted":false,"seq":3874}ÿby-sequenceÿ0000000000003874{"name":"gb-crazy-alert","description":"Cuh-razy ALeRTiNg!!!!! - Test project for new Goodybag workflow","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"John Fawcett","email":"jrf0110@gmail.com"},"name":"gb-crazy-alert","description":"Cuh-razy ALeRTiNg!!!!! - Test project for new Goodybag workflow","version":"0.1.0","homepage":"https://github.com/goodybag/crazy-alert","repository":{"type":"git","url":"git://github.com/goodybag/crazy-alert.git"},"main":"lib/index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jrf0110","email":"jrf0110@gmail.com"},"_id":"gb-crazy-alert@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"b02e85530608d37891c393777d4a496a0a9ab656","tarball":"http://registry.npmjs.org/gb-crazy-alert/-/gb-crazy-alert-0.1.0.tgz"},"maintainers":[{"name":"jrf0110","email":"jrf0110@gmail.com"}]}},"readme":"#Crazy Alert\n\nSnazz up your alerts with CRAAAAZZZYYY ALERT!\n\n##Usage\n\n```javascript\n // Load in with require\n define(function(require){\n var crazyAlert = require('crazy-alert');\n crazyAlert(\"ayoooooo!\");\n /* Output:\n WHOAAAAAA!!!!!!!!!!!!\n\n ayooooooo!\n */\n });\n```\n\n##Installation\n\n```\n npm install gb-crazy-alert\n```\n\n##Note\n\nThis is just a test project for Goodybag's new workflow.","maintainers":[{"name":"jrf0110","email":"jrf0110@gmail.com"}],"time":{"modified":"2012-06-13T21:13:40.008Z","created":"2012-06-13T21:13:38.589Z","0.1.0":"2012-06-13T21:13:40.008Z"},"author":{"name":"John Fawcett","email":"jrf0110@gmail.com"},"repository":{"type":"git","url":"git://github.com/goodybag/crazy-alert.git"},"_id":"gb-crazy-alert","_rev":"1-5bd74f61cf39c17e711971562e1408a9"}"ÿdocument-storeÿgb-crazier-alert£{"id":"gb-crazier-alert","rev":"1-832371a35dd1eb995447e3a6a5e76e0a","rev_tree":[{"pos":1,"ids":["832371a35dd1eb995447e3a6a5e76e0a",{"status":"available"},[]]}],"rev_map":{"1-832371a35dd1eb995447e3a6a5e76e0a":3873},"winningRev":"1-832371a35dd1eb995447e3a6a5e76e0a","deleted":false,"seq":3873}ÿby-sequenceÿ0000000000003873Ì {"name":"gb-crazier-alert","description":"CRAZIER ALERTS FROM GOODYBAG","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"John Fawcett"},"name":"gb-crazier-alert","description":"CRAZIER ALERTS FROM GOODYBAG","version":"0.1.0","homepage":"https://github.com/goodybag/crazier-alert","repository":{"type":"git","url":"git://github.com/goodybag/crazier-alert.git"},"main":"lib/index.js","dependencies":{"gb-crazy-alert":">=0.1.0"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"jrf0110","email":"jrf0110@gmail.com"},"_id":"gb-crazier-alert@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"fedce759854f330a3d1a87cbc169f1b7d992d5f0","tarball":"http://registry.npmjs.org/gb-crazier-alert/-/gb-crazier-alert-0.1.0.tgz"},"maintainers":[{"name":"jrf0110","email":"jrf0110@gmail.com"}]}},"readme":"#Crazier Alert\n\nSnazz up your alerts with CRAAAAZZZ-IER ALERTS!\n\n##Usage\n\n```javascript\n // Load in with require\n define(function(require){\n var crazierAlert = require('gb-crazier-alert');\n crazierAlert(\"ayoooooo!\");\n /* Output:\n WHOAAAAAA!!!!!!!!!!!!\n\n ayooooooo!\n */\n });\n```\n\n##Installation\n\n```\n npm install gb-crazier-alert\n```\n\n##Note\n\nThis is just a test project for Goodybag's new workflow.","maintainers":[{"name":"jrf0110","email":"jrf0110@gmail.com"}],"time":{"modified":"2012-06-13T22:36:16.722Z","created":"2012-06-13T22:36:15.475Z","0.1.0":"2012-06-13T22:36:16.722Z"},"author":{"name":"John Fawcett"},"repository":{"type":"git","url":"git://github.com/goodybag/crazier-alert.git"},"_id":"gb-crazier-alert","_rev":"1-832371a35dd1eb995447e3a6a5e76e0a"}ÿdocument-storeÿfsx–{"id":"fsx","rev":"1-3c5502e941bad199605d1a20a8eb8017","rev_tree":[{"pos":1,"ids":["3c5502e941bad199605d1a20a8eb8017",{"status":"available"},[]]}],"rev_map":{"1-3c5502e941bad199605d1a20a8eb8017":3872},"winningRev":"1-3c5502e941bad199605d1a20a8eb8017","deleted":false,"seq":3872}ÿby-sequenceÿ00000000000ï·8ù03872˜{"name":"fsx","description":"Simple recursive file and directory reader using synchronous node fs calls","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"fsx","description":"Simple recursive file and directory reader using synchronous node fs calls","version":"1.0.0","repository":{"url":""},"engines":{"node":"~0.4.10"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"fsx@1.0.0","_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b91a566a025e1a8f8ff262d01bf035e01c3e469c","tarball":"http://registry.npmjs.org/fsx/-/fsx-1.0.0.tgz"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"1.0.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"fsx","description":"Simple recursive file and directory reader using synchronous node fs calls","version":"1.0.1","main":"fsx.js","repository":{"type":"git","url":"git://github.com/clux/fsx.git"},"engines":{"node":"~0.4.10"},"dependencies":{},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"fsx@1.0.1","_engineSupported":false,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"a8c6764d8b7c99c4aa69db51611f5ae2d2fdc410","tarball":"http://registry.npmjs.org/fsx/-/fsx-1.0.1.tgz"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"1.0.2":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"fsx","description":"Simple recursive file and directory reader using synchronous node fs calls","version":"1.0.2","main":"fsx.js","repository":{"type":"git","url":"git://github.com/clux/fsx.git"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"fsx@1.0.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"99df10613e08adca8b463b51d99cf396969ad898","tarball":"http://registry.npmjs.org/fsx/-/fsx-1.0.2.tgz"},"readme":"# fsx\n\nJust a small utility that I had to copy for many of my modules.\nWill scan a directory recursively, keep track of both files and directories, and return two flattened arrays.\n\nInstall with\n\n````bash\nnpm install fsx\n````\n\nthen\n\n````javascript\nvar fsx = require('fsx');\nvar output = fsx.readDirSync(dir);\n````\n\nyielding:\n\n````javascript\nconsole.log(output);\n->\n{\n dirs: [pathstodirs],\n files: [paths to files],\n}\n````\n\n","maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}]}},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"time":{"modified":"2012-07-12T21:21:04.687Z","created":"2011-11-03T08:43:25.247Z","1.0.0":"2011-11-03T08:43:26.542Z","1.0.1":"2011-12-23T20:56:05.253Z","1.0.2":"2012-07-12T21:21:04.687Z"},"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"repository":{"type":"git","url":"git://github.com/clux/fsx.git"},"_id":"fsx","_rev":"1-3c5502e941bad199605d1a20a8eb8017"}ÿdocument-storeÿflesh˜{"id":"flesh","rev":"1-6ffff97d02e3060924c1b66e0405a939","rev_tree":[{"pos":1,"ids":["6ffff97d02e3060924c1b66e0405a939",{"status":"available"},[]]}],"rev_map":{"1-6ffff97d02e3060924c1b66e0405a939":3871},"winningRev":"1-6ffff97d02e3060924c1b66e0405a939","deleted":false,"seq":3871}ÿby-sequenceÿ0000000000003871Ö {"name":"flesh","description":"Auto File Reloader","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"name":"flesh","version":"0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"description":"Auto File Reloader","main":"./lib/index.js","repository":{"type":"git","url":"git://github.com/KOBA789/flesh.git"},"_npmUser":{"name":"koba789","email":"kobahide789@gmail.com"},"_id":"flesh@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"7d25480913279eceedfae006924f9a5a8020f6cb","tarball":"http://registry.npmjs.org/flesh/-/flesh-0.0.1.tgz"},"readme":"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}]}},"readme":"","maintainers":[{"name":"koba789","email":"kobahide789@gmail.com"}],"time":{"modified":"2012-06-20T11:37:33.659Z","created":"2012-06-20T11:37:27.091Z","0.0.1":"2012-06-20T11:37:33.659Z"},"author":{"name":"KOBA789","email":"kobahide789@gmail.com","url":"http://koba789.com/"},"repository":{"type":"git","url":"git://github.com/KOBA789/flesh.git"},"_id":"flesh","_rev":"1-6ffff97d02e3060924c1b66e0405a939"} ÿdocument-storeÿfind-git-repos¡{"id":"find-git-repos","rev":"1-35d439e03b99fa695817e3c7861e6e7f","rev_tree":[{"pos":1,"ids":["35d439e03b99fa695817e3c7861e6e7f",{"status":"available"},[]]}],"rev_map":{"1-35d439e03b99fa695817e3c7861e6e7f":3870},"winningRev":"1-35d439e03b99fa695817e3c7861e6e7f","deleted":false,"seq":3870}ÿby-sequenceÿ0000000000003870¬ {"name":"find-git-repos","description":"this walks a path or paths, finds all of the git repositories, and their origins","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"name":"find-git-repos","description":"this walks a path or paths, finds all of the git repositories, and their origins","version":"0.0.0","repository":{"type":"git","url":"git://github.com/soldair/node-find-git-repos.git"},"main":"findrepos.js","dependencies":{"walkdir":"~0.0.4"},"devDependencies":{"tap":"*"},"scripts":{"test":"./node_modules/tap/bin/tap.js ./test"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"soldair","email":"soldair@gmail.com"},"_id":"find-git-repos@0.0.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.2","_defaultsLoaded":true,"dist":{"shasum":"ae15e2ac984ed063753652f221d1a2afdc0df7f0","tarball":"http://registry.npmjs.org/find-git-repos/-/find-git-repos-0.0.0.tgz"},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}]}},"readme":"","maintainers":[{"name":"soldair","email":"soldair@gmail.com"}],"time":{"modified":"2012-07-12T03:30:48.081Z","created":"2012-07-12T03:30:46.807Z","0.0.0":"2012-07-12T03:30:48.081Z"},"author":{"name":"Ryan Day","email":"soldair@gmail.com"},"repository":{"type":"git","url":"git://github.com/soldair/node-find-git-repos.git"},"_id":"find-git-repos","_rev":"1-35d439e03b99fa695817e3c7861e6e7f"}ÿdocument-storeÿfertilizeœ{"id":"fertilize","rev":"1-98f4868ce99974e1d88e360af641df77","rev_tree":[{"pos":1,"ids":["98f4868ce99974e1d88e360af641df77",{"status":"available"},[]]}],"rev_map":{"1-98f4868ce99974e1d88e360af641df77":3869},"winningRev":"1-98f4868ce99974e1d88e360af641df77","deleted":false,"seq":3869}ÿby-sequenceÿ0000000000003869‡{"name":"fertilize","description":"retry the same thing, expect different results","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"fertilize","description":"retry the same thing, expect different results","keywords":["process","spawn","retry"],"version":"0.1.0","homepage":"http://github.com/orlin/fertilize","repository":{"type":"git","url":"git://github.com/orlin/fertilize.git"},"bugs":{"email":"om@soundsapiens.com","url":"http://github.com/orlin/fertilize/issues"},"author":{"name":"Orlin M Bozhinov","email":"om@soundsapiens.com","url":"http://soundsapiens.com"},"contributors":[],"dependencies":{"coffee-script":"*"},"bin":{"fertilize":"./cli.js"},"os":["aix","freebsd","linux","macos","solaris"],"engines":{"node":"0.6.x","npm":"1.1.x"},"licenses":[{"type":"Unlicense","url":"http://unlicense.org/"}],"_npmUser":{"name":"orlin","email":"om@soundsapiens.com"},"_id":"fertilize@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"f2bfc16f0d6c309127198464317db1bec4588c44","tarball":"http://registry.npmjs.org/fertilize/-/fertilize-0.1.0.tgz"},"maintainers":[{"name":"orlin","email":"om@soundsapiens.com"}]}},"readme":"# fertilize -- retry the same thing, expect different results\n\n\n# SYNOPSIS\n\nSometimes spawning a child process is not successful.\nThis attempts to `fertilize` the *process* by being stubborn,\nretrying a number of times before eventually giving up.\nTherefore this isn't quite the same as \"crazy\",\nwhich people like to quote.\n\n\n# MOTIVATION\n\nThe following is just a use-case.\nRetrying stuff can be justified / useful, even with computers...\n\nSometimes (and in some cases often) `rsync` will fail to sync\n(due to \"Broken pipe\" or something).\nThere is a [known bug](https://bugzilla.samba.org/show_bug.cgi?id=5478)\nthe solution for which is to keep retrying...\nThat's exactly what this script does.\n\nCall it like you otherwise would `rsync`.\nThe only difference being that if you pass a number as the very first argument,\nit will run that many number of times. If you give it 0, it will run forever\nuntil done. If no number is provided, it will use some hardcoded default,\nwhich supposedly has better chances than the otherwise usual rsync once.\n\n\n# EXAMPLE\n\n fertilize 3 rsync something /dev/null\n\nSpawns `rsync something /dev/null` and probably fails 3 times in a row.\nIt could be because the `something` is missing or `/dev/null` doesn't allow it.\n\nBe careful with `fertilize 0 something` - it easily becomes an infinite loop...\nSo be convinced the `something` is likely to exit with a status of `0`.\nZero (being success) is fitting for an exit, it otherwise goes on for infinity.\n\n\n## INSTALL\n\nWith the [npm](http://npmjs.org) prerequisite, do `npm install -g fertilize`.\n\n\n## LICENSE\n\nThis is free and unencumbered public domain software. For more information,\nsee or the accompanying {file:UNLICENSE} file.\n\n","maintainers":[{"name":"orlin","email":"om@soundsapiens.com"}],"time":{"modified":"2012-05-13T19:45:30.900Z","created":"2012-05-13T19:45:28.493Z","0.1.0":"2012-05-13T19:45:30.900Z"},"author":{"name":"Orlin M Bozhinov","email":"om@soundsapiens.com","url":"http://soundsapiens.com"},"repository":{"type":"git","url":"git://github.com/orlin/fertilize.git"},"_id":"fertilize","_rev":"1-98f4868ce99974e1d88e360af641df77"}ÿdocument-storeÿextjs-node{"id":"extjs-node","rev":"1-0fbdb8c42949acb49929886f36b8891f","rev_tree":[{"pos":1,"ids":["0fbdb8c42949acb49929886f36b8891f",{"status":"available"},[]]}],"rev_map":{"1-0fbdb8c42949acb49929886f36b8891f":3868},"winningRev":"1-0fbdb8c42949acb49929886f36b8891f","deleted":false,"seq":3868}ÿby-sequenceÿ0000000000003868 {"name":"extjs-node","description":"ExtJS framework","dist-tags":{"latest":"0.0.2rc2"},"versions":{"0.0.1":{"name":"extjs-node","description":"ExtJS framework","keywords":["framework","web","extjs"],"version":"0.0.1","repository":{"type":"git","url":"git@github.com:agebrock/extjs-node.git"},"author":{"name":"Agebrock","email":"christoph.hagenbrock@googlemail.com"},"dependencies":{},"main":"index","engines":{"node":">= 0.4.0"},"_id":"extjs-node@0.0.1","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.6","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"f40fa23d5bf0fb0c68e698f57749e3c92c343a36","tarball":"http://registry.npmjs.org/extjs-node/-/extjs-node-0.0.1.tgz"}},"0.0.2rc1":{"name":"extjs-node","description":"ExtJS framework","keywords":["framework","web","extjs"],"version":"0.0.2rc1","repository":{"type":"git","url":"git@github.com:agebrock/extjs-node.git"},"author":{"name":"Agebrock","email":"christoph.hagenbrock@googlemail.com"},"dependencies":{},"main":"index","engines":{"node":">= 0.4.0"},"scripts":{"install":"sh install.sh"},"_npmUser":{"name":"agebrock","email":"christoph.hagenbrock@googlemail.com"},"_id":"extjs-node@0.0.2rc1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"cfe265a7277ebf69f1d227f1e8fc8f5d87d09d5d","tarball":"http://registry.npmjs.org/extjs-node/-/extjs-node-0.0.2rc1.tgz"},"readme":"Untouched libarary with a little adapter to run on NodeJS \n\n* No DOM required\n* uses the original Ext.require funktion (working dependency system) \n\n\nInstallation:\nnpm install extjs-node\n\n\nUsage: \n\nrequire(\"extjs-node\");\n\nExt.require(['Ext.data.Model','Ext.data.reader.Json','Ext.data.writer.Json',\"Ext.data.proxy.Memory\"]);\n\n\nExt.define(\"Mock\", {\n extend: \"Ext.data.Model\",\n fields: ['name'],\n proxy: {\n \t type: 'memory'\n \t }\n});\n\nvar h = Mock.create({name:\"Agebrock\"});\nconsole.dir(h);\n\n\n\n\n\n\n\n","maintainers":[{"name":"agebrock","email":"christoph.hagenbrock@googlemail.com"}]},"0.0.2rc2":{"name":"extjs-node","description":"ExtJS framework","keywords":["framework","web","extjs"],"version":"0.0.2rc2","repository":{"type":"git","url":"git@github.com:agebrock/extjs-node.git"},"author":{"name":"Agebrock","email":"christoph.hagenbrock@googlemail.com"},"dependencies":{},"main":"index","engines":{"node":">= 0.4.0"},"scripts":{"install":"sh install.sh"},"_npmUser":{"name":"agebrock","email":"christoph.hagenbrock@googlemail.com"},"_id":"extjs-node@0.0.2rc2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"50896cbb9f83d378a4db792872a497c5a7b4d62d","tarball":"http://registry.npmjs.org/extjs-node/-/extjs-node-0.0.2rc2.tgz"},"readme":"Untouched libarary with a little adapter to run on NodeJS \n\n* No DOM required\n* uses the original Ext.require funktion (working dependency system) \n\n\nInstallation:\nnpm install extjs-node\n\n\nUsage: \n\nrequire(\"extjs-node\");\n\nExt.require(['Ext.data.Model','Ext.data.reader.Json','Ext.data.writer.Json',\"Ext.data.proxy.Memory\"]);\n\n\nExt.define(\"Mock\", {\n extend: \"Ext.data.Model\",\n fields: ['name'],\n proxy: {\n \t type: 'memory'\n \t }\n});\n\nvar h = Mock.create({name:\"Agebrock\"});\nconsole.dir(h);\n\n\n\n\n\n\n\n","maintainers":[{"name":"agebrock","email":"christoph.hagenbrock@googlemail.com"}]}},"maintainers":[{"name":"agebrock","email":"christoph.hagenbrock@googlemail.com"}],"time":{"modified":"2012-05-13T13:52:07.829Z","created":"2011-05-12T17:53:58.620Z","0.0.1":"2011-05-12T17:53:59.093Z","0.0.2rc1":"2012-03-12T21:47:31.612Z","0.0.2rc2":"2012-05-13T13:52:07.829Z"},"author":{"name":"Agebrock","email":"christoph.hagenbrock@googlemail.com"},"repository":{"type":"git","url":"git@github.com:agebrock/extjs-node.git"},"_id":"extjs-node","_rev":"1-0fbdb8c42949acb49929886f36b8891f"}ÿdocument-storeÿexpression{"id":"expression","rev":"1-fadd12df26439bc9efe6e5e1c67fd94a","rev_tree":[{"pos":1,"ids":["fadd12df26439bc9efe6e5e1c67fd94a",{"status":"available"},[]]}],"rev_map":{"1-fadd12df26439bc9efe6e5e1c67fd94a":3867},"winningRev":"1-fadd12df26439bc9efe6e5e1c67fd94a","deleted":false,"seq":3867}ÿby-sequenceÿ0000000000003867ã {"name":"expression","description":"a simple boolean expression engine using reparse","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"author":{"name":"Tom Carden","email":"tom@bloom.io"},"name":"expression","description":"a simple boolean expression engine using reparse","version":"0.0.0","main":"expression.js","repository":{"type":"git","url":"git://github.com/bloomtime/expression-js.git"},"engines":{"node":"~0.4.2"},"devDependencies":{"expresso":"~0.9.0"},"dependencies":{"reparse":"~0.1.2"},"readme":"Uses https://github.com/weaver/ReParse\n\nCompiles and evaluates simple boolean search expressions, e.g.\n\n```javascript\nvar parsed = new Expression(\"John AND Paul AND Ringo AND George\");\nassert.equal(parsed.test(\"John\"), false);\nassert.equal(parsed.test(\"Paul\"), false);\nassert.equal(parsed.test(\"Ringo\"), false);\nassert.equal(parsed.test(\"George\"), false);\nassert.equal(parsed.test(\"John Paul George Ringo\"), true);\nassert.equal(parsed.test(\"Ringo George Paul John\"), true);\n```\n\nSupports parens for disambiguation. Supports AND, OR and NOT. Supports quotes for phrases. Case insensitive.\n\nSee tests for more examples.\n\nTODO:\n\n* allow domain names and other punctuation in terms\n* flatten quoted terms\n* more Googley searching (implied AND, negation with -, etc.)\n\n","_id":"expression@0.0.0","dist":{"shasum":"5991faef0010db153158ed6eb96477db442d6397","tarball":"http://registry.npmjs.org/expression/-/expression-0.0.0.tgz"},"maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}]},"0.0.1":{"author":{"name":"Tom Carden","email":"tom@bloom.io"},"name":"expression","description":"a simple boolean expression engine using reparse","version":"0.0.1","main":"expression.js","repository":{"type":"git","url":"git://github.com/bloomtime/expression-js.git"},"engines":{"node":">=0.4.2"},"devDependencies":{"expresso":"~0.9.0"},"dependencies":{"reparse":"~0.1.2"},"readme":"Uses https://github.com/weaver/ReParse\n\nCompiles and evaluates simple boolean search expressions, e.g.\n\n```javascript\nvar parsed = new Expression(\"John AND Paul AND Ringo AND George\");\nassert.equal(parsed.test(\"John\"), false);\nassert.equal(parsed.test(\"Paul\"), false);\nassert.equal(parsed.test(\"Ringo\"), false);\nassert.equal(parsed.test(\"George\"), false);\nassert.equal(parsed.test(\"John Paul George Ringo\"), true);\nassert.equal(parsed.test(\"Ringo George Paul John\"), true);\n```\n\nSupports parens for disambiguation. Supports AND, OR and NOT. Supports quotes for phrases. Case insensitive.\n\nSee tests for more examples.\n\nTODO:\n\n* allow domain names and other punctuation in terms\n* flatten quoted terms\n* more Googley searching (implied AND, negation with -, etc.)\n\n","_id":"expression@0.0.1","dist":{"shasum":"b0264493ee31c0f4e8a2f933d224ce7997f69b69","tarball":"http://registry.npmjs.org/expression/-/expression-0.0.1.tgz"},"maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}]}},"readme":"Uses https://github.com/weaver/ReParse\n\nCompiles and evaluates simple boolean search expressions, e.g.\n\n```javascript\nvar parsed = new Expression(\"John AND Paul AND Ringo AND George\");\nassert.equal(parsed.test(\"John\"), false);\nassert.equal(parsed.test(\"Paul\"), false);\nassert.equal(parsed.test(\"Ringo\"), false);\nassert.equal(parsed.test(\"George\"), false);\nassert.equal(parsed.test(\"John Paul George Ringo\"), true);\nassert.equal(parsed.test(\"Ringo George Paul John\"), true);\n```\n\nSupports parens for disambiguation. Supports AND, OR and NOT. Supports quotes for phrases. Case insensitive.\n\nSee tests for more examples.\n\nTODO:\n\n* allow domain names and other punctuation in terms\n* flatten quoted terms\n* more Googley searching (implied AND, negation with -, etc.)\n\n","maintainers":[{"name":"randometc","email":"tom@tom-carden.co.uk"}],"time":{"modified":"2012-07-11T22:54:23.836Z","created":"2012-07-11T22:35:54.807Z","0.0.0":"2012-07-11T22:35:56.184Z","0.0.1":"2012-07-11T22:54:23.836Z"},"author":{"name":"Tom Carden","email":"tom@bloom.io"},"repository":{"type":"git","url":"git://github.com/bloomtime/expression-js.git"},"_id":"expression","_rev":"1-fadd12df26439bc9efe6e5e1c67fd94a"}#ÿdocument-storeÿexpress3-partials¤{"id":"express3-partials","rev":"1-7ed93a6cf4d6636b7392a422b587dbc7","rev_tree":[{"pos":1,"ids":["7ed93a6cf4d6636b7392a422b587dbc7",{"status":"available"},[]]}],"rev_map":{"1-7ed93a6cf4d6636b7392a422b587dbc7":3866},"winningRev":"1-7ed93a6cf4d6636b7392a422b587dbc7","deleted":false,"seq":3866}ÿby-sequenceÿ0000000000003866Ól{"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","dist-tags":{"latest":"0.3.3"},"versions":{"0.2.3":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.3","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.3","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"29f98d0e79b18d45d8ef975c09fa81119f1a2c93","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.3.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.4":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.4","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.4","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"304d5e18a5df91a16be0313ef7f4a2246746fecb","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.4.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.5":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.5","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.5","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"51158030a9bafa205e087f7d96a5aa7c4fbe3bdd","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.5.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.6":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.6","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.6","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"537d2deba99a4cb5c32221877299fa528742ec5f","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.6.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.7":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.7","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.7","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"27610cfa940af13b231d4e9e505f89dc10968cd9","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.7.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.8":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.8","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.8","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"57d00fd1e666bb4040816d733c421bd770fc9b11","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.8.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.2.9":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.2.9","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.2.9","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"6c46e259bad69211d2f9779a690a3fe6d2934f18","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.2.9.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.3.0":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.3.0","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.3.0","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"4c101f41f614dd54b05e786225454232597821a9","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.3.0.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.3.1":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.3.1","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.3.1","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"8975e0ea3945fe4f420a6802bd7af665ce2f22fa","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.3.1.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.3.2":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.3.2","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.3.2","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"2d0749b453896a7f3f19e699c672653702fb4971","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.3.2.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]},"0.3.3":{"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"name":"express3-partials","description":"Express 3.x Layout & Partial support with enhanced feature","version":"0.3.3","repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"main":"index.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"homepage":"https://github.com/chengxianga2008/express3-partials","_npmUser":{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"},"_id":"express3-partials@0.3.3","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"64aaaab5441883cee131903ab03a80290bfe18dd","tarball":"http://registry.npmjs.org/express3-partials/-/express3-partials-0.3.3.tgz"},"maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}]}},"readme":"# express-partials\n\nExpress 3.x Layout & Partial support.\n\nThe beloved feature from Express 2.x is back as a middleware!\n\nAdd ./views/partials partial template lookup\n\n\n## Installation\n\n $ npm install express3-partials\n\n\n## Usage\n\nThe simple case:\n \n```javascript\nvar express = require('express')\n , partials = require('express-partials')\n , app = express();\n\n// load the express-partials middleware\napp.use(partials());\n\napp.get('/',function(req,res,next){\n res.render('index.ejs') \n // -> render layout.ejs with index.ejs as `body`.\n})\n\napp.get('/no-layout',function(req,res,next){\n res.render('index.ejs',{layout:false})\n // -> only renders index.ejs\n})\n\napp.get('/mobile',function(req,res,next){\n res.render('index.ejs',{layout:'mobile'})\n // -> render mobile.ejs with index.ejs as `body`.\n})\n```\n\nBy default express-partials tries to figure the engine out by using the extension of the template. But in special cases an extension can be registered. And this can be done in a few ways:\n\n```javascript\n// a function\npartials.register('.j',require('jade').render); \n\n// module (or object with a .render() function)\npartials.register('.j',require('jade')); \n\n// string (= require(str))\npartials.register('.j','jade'); \n```\n\n## Template Support\n\nAny synchronous template engine should work fine. But check out the [tests](./test/test.partials.js) for a few engines tested.\n\n\n## TODO\n\n - Async template engines?\n\n\n## Running Tests\n\nTo run the test suite first install dependencies with the following command within the repo:\n\n $ npm install\n\nthen run the tests:\n\n $ npm test\n\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 Robert Sköld <robert@publicclass.se>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF COŸÙwVùNTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"chengxianga2008","email":"chengxianga2008@yahoo.com"}],"time":{"modified":"2012-08-23T14:05:12.951Z","created":"2012-08-16T19:22:39.617Z","0.2.3":"2012-08-16T19:22:43.804Z","0.2.4":"2012-08-16T19:55:33.570Z","0.2.5":"2012-08-23T10:24:23.295Z","0.2.6":"2012-08-23T11:21:27.400Z","0.2.7":"2012-08-23T12:34:24.856Z","0.2.8":"2012-08-23T13:02:24.812Z","0.2.9":"2012-08-23T13:21:49.535Z","0.3.0":"2012-08-23T13:25:34.305Z","0.3.1":"2012-08-23T13:33:08.326Z","0.3.2":"2012-08-23T14:00:51.318Z","0.3.3":"2012-08-23T14:05:12.951Z"},"author":{"name":"Jack Carrick Xiang Cheng","email":"chengxianga2008@yahoo.com","url":"inovlab.com"},"repository":{"type":"git","url":"git://github.com/chengxianga2008/express3-partials.git"},"_id":"express3-partials","_rev":"1-7ed93a6cf4d6636b7392a422b587dbc7"}ÿdocument-storeÿexpose-rpc{"id":"expose-rpc","rev":"1-1549af418f1d73b77362190ebe146bf9","rev_tree":[{"pos":1,"ids":["1549af418f1d73b77362190ebe146bf9",{"status":"available"},[]]}],"rev_map":{"1-1549af418f1d73b77362190ebe146bf9":3865},"winningRev":"1-1549af418f1d73b77362190ebe146bf9","deleted":false,"seq":3865}ÿby-sequenceÿ0000000000003865ÜB{"name":"expose-rpc","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"expose-rpc","version":"0.0.1","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"141e4615019e4d64ca31d8a808cf5ebdcc7498da","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.2":{"name":"expose-rpc","version":"0.0.2","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"db8f381ad52e01b4ad63c5eef7db08cccdd2e6c9","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.2.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.3":{"name":"expose-rpc","version":"0.0.3","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"cb9d784f0f4fa87b5eb3c662bceacaf2a78123fc","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.3.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.4":{"name":"expose-rpc","version":"0.0.4","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"2724de132cfa97fd67818d3b0350014a36e68949","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.4.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.5":{"name":"expose-rpc","version":"0.0.5","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"e25009b2094e048e90926c121f34c7281d1d4072","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.5.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.6":{"name":"expose-rpc","version":"0.0.6","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8359d73730c5c2d330714627c0606472a0624108","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.6.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.7":{"name":"expose-rpc","version":"0.0.7","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.7","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"d40cd967123e7402492af6fd831aabd57a7e9c0c","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.7.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.8":{"name":"expose-rpc","version":"0.0.8","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.8","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"bd1cf3bddb58d662c48bbc5dee92e0355c9e2fbc","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.8.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.9":{"name":"expose-rpc","version":"0.0.9","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.0.9","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b112c1dce312894982450e6a56ef8d8005cfc529","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.0.9.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.1.0":{"name":"expose-rpc","version":"0.1.0","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0919cfafde93620330f83f83a9fa86840991f64a","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.1.0.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.1.1":{"name":"expose-rpc","version":"0.1.1","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"5fda46021b9c18e2971102cc6487e7ec358aa654","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.1.1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.1.2":{"name":"expose-rpc","version":"0.1.2","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"21b1cab18129ddbbc3ee576c874c8e488eaa076b","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.1.2.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.1.3":{"name":"expose-rpc","version":"0.1.3","main":"./index","dependencies":{"express":"*","traverse":"0.6.0","express-expose":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"expose-rpc@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"31997024b0484650f7617ac44e0949f6ebb45816","tarball":"http://registry.npmjs.org/expose-rpc/-/expose-rpc-0.1.3.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:55:58.885Z","created":"2012-04-05T19:07:31.457Z","0.0.1":"2012-04-05T19:07:34.268Z","0.0.2":"2012-04-05T19:12:28.298Z","0.0.3":"2012-04-05T19:14:01.146Z","0.0.4":"2012-04-05T19:15:37.105Z","0.0.5":"2012-04-05T19:17:51.224Z","0.0.6":"2012-04-05T19:20:43.785Z","0.0.7":"2012-04-05T19:22:18.844Z","0.0.8":"2012-04-05T19:23:39.400Z","0.0.9":"2012-04-05T19:29:03.278Z","0.1.0":"2012-04-05T19:32:21.033Z","0.1.1":"2012-04-05T22:02:32.022Z","0.1.2":"2012-04-05T22:10:25.266Z","0.1.3":"2012-04-05T22:12:01.848Z"},"_id":"expose-rpc","_rev":"1-1549af418f1d73b77362190ebe146bf9"}!ÿdocument-storeÿexpiration_date¢{"id":"expiration_date","rev":"1-1583807c999417fba8648a549d4a8237","rev_tree":[{"pos":1,"ids":["1583807c999417fba8648a549d4a8237",{"status":"available"},[]]}],"rev_map":{"1-1583807c999417fba8648a549d4a8237":3864},"winningRev":"1-1583807c999417fba8648a549d4a8237","deleted":false,"seq":3864}ÿby-sequenceÿ0000000000003864é{"name":"expiration_date","description":"Convenient utility for client-side expiration","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"expiration_date","version":"0.1.0","description":"Convenient utility for client-side expiration","keywords":["expiration","expire"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Expiration_Date.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"main":"main.js","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"_id":"expiration_date@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3357f801bcff02ed66155625de85f3538576e106","tarball":"http://registry.npmjs.org/expiration_date/-/expiration_date-0.1.0.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.1.1":{"name":"expiration_date","version":"0.1.1","description":"Convenient utility for client-side expiration","keywords":["expiration","expire"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Expiration_Date.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"main":"main.js","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"_id":"expiration_date@0.1.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"94c4befeacb0cc78ce826869b215731f0e561c49","tarball":"http://registry.npmjs.org/expiration_date/-/expiration_date-0.1.1.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]},"0.2.0":{"name":"expiration_date","version":"0.2.0","description":"Convenient utility for client-side expiration","keywords":["expiration","expire"],"repository":{"type":"git","url":"git://github.com/Weltschmerz/Expiration_Date.git"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"main":"lib/expiration_date.js","engines":{"node":">= 0.4.0"},"_npmUser":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"_id":"expiration_date@0.2.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6dffb590eb374626f7635ac2969fdffd107cffb3","tarball":"http://registry.npmjs.org/expiration_date/-/expiration_date-0.2.0.tgz"},"maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}]}},"readme":"## Expiration Date\n\nExpiration Date is a convenient little utility for abstracting some of the work you might do to afford robust cache strings. \n\n`npm install expiration_date`\n\n```js\n\nvar expire = require('expiration_date')\n\nvar express = require('express')\nvar app = express.createServer()\n\nvar fs = require('fs')\n\nvar file = fs.readFileSync('somn.jpg')\n\napp.get('*', function(req, res) {\n expire.setExpiration(res, 'two days') \n res.end(file)\n})\n\n\n```\nThis module has two exported methods: `setExpiration` and `getSeconds`. The `getSeconds` method will accept any of the following strings, and return the appropriate value in seconds.\n\n```code\n'one minute'\n'9 days'\n'16 years and one day'\n'one hour and 1 minute and twenty seconds'\n```\n\n`setExpiration` will simply attach `Expires` and `Cache-Control` to the response object for you. Pass the response object or time string in any order. \n\nThis module is used internally by [Lactate](https://github.com/Weltschmerz/Lactate)\n","maintainers":[{"name":"Weltschmerz","email":"chlavois@gmail.com"}],"time":{"modified":"2012-06-06T21:53:08.449Z","created":"2012-06-05T23:51:17.128Z","0.1.0":"2012-06-05T23:51:17.392Z","0.1.1":"2012-06-06T00:22:38.850Z","0.2.0":"2012-06-06T21:53:08.449Z"},"author":{"name":"Weltschmerz","email":"chlavois@gmail.com"},"repository":{"type":"git","url":"git://github.com/Weltschmerz/Expiration_Date.git"},"_id":"expiration_date","_rev":"1-1583807c999417fba8648a549d4a8237"}ÿdocument-storeÿexift˜{"id":"exift","rev":"1-4c3e4e5cd4be3e266663670a735cbc2e","rev_tree":[{"pos":1,"ids":["4c3e4e5cd4be3e266663670a735cbc2e",{"status":"available"},[]]}],"rev_map":{"1-4c3e4e5cd4be3e266663670a735cbc2e":3863},"winningRev":"1-4c3e4e5cd4be3e266663670a735cbc2e","deleted":false,"seq":3863}ÿby-sequenceÿ0000000000003863Œ{"name":"exift","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"exift","version":"0.0.1","author":{"name":"Simon Ljungberg","email":"hi@iamsim.me"},"devDependencies":{"docco":"","mocha":""},"_npmUser":{"name":"simme","email":"hi@iamsim.me"},"_id":"exift@0.0.1","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"2455a9da58761fe237dafc335465fa58aac1b518","tarball":"http://registry.npmjs.org/exift/-/exift-0.0.1.tgz"},"maintainers":[{"name":"simme","email":"hi@iamsim.me"}]},"0.0.2":{"name":"exift","version":"0.0.2","author":{"name":"Simon Ljungberg","email":"hi@iamsim.me"},"main":"exift.js","keywords":["exif","image","exiftool"],"repository":{"type":"git","url":"git://github.com/simme/node-exift.git"},"devDependencies":{"docco":"","mocha":""},"_npmUser":{"name":"simme","email":"hi@iamsim.me"},"_id":"exift@0.0.2","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"266347e7db2f7f22efd151984f98a243c91ac86f","tarball":"http://registry.npmjs.org/exift/-/exift-0.0.2.tgz"},"maintainers":[{"name":"simme","email":"hi@iamsim.me"}]}},"readme":"Exift\n-----\n\nReads EXIF-data from images and outputs it as JSON. Uses `exiftool`.\n\n\n","maintainers":[{"name":"simme","email":"hi@iamsim.me"}],"time":{"modified":"2012-07-11T13:52:12.485Z","created":"2012-07-11T13:45:51.384Z","0.0.1":"2012-07-11T13:45:53.779Z","0.0.2":"2012-07-11T13:52:12.485Z"},"author":{"name":"Simon Ljungberg","email":"hi@iamsim.me"},"repository":{"type":"git","url":"git://github.com/simme/node-exift.git"},"_id":"exift","_rev":"1-4c3e4e5cd4be3e266663670a735cbc2e"}*ÿdocument-storeÿeveryauth-account-linker«{"id":"everyauth-account-linker","rev":"1-236951daa6e6778f03d1477a4320e35a","rev_tree":[{"pos":1,"ids":["236951daa6e6778f03d1477a4320e35a",{"status":"available"},[]]}],"rev_map":{"1-236951daa6e6778f03d1477a4320e35a":3862},"winningRev":"1-236951daa6e6778f03d1477a4320e35a","deleted":false,"seq":3862}ÿby-sequenceÿ0000000000003862Ø{"name":"everyauth-account-linker","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.0-beta":{"name":"everyauth-account-linker","version":"0.0.0-beta","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"everyauth-account-linker@0.0.0-beta","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"2e91c2081cbdee888ba79137523ff9e462b7319d","tarball":"http://registry.npmjs.org/everyauth-account-linker/-/everyauth-account-linker-0.0.0-beta.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.1-beta":{"name":"everyauth-account-linker","version":"0.0.1-beta","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"everyauth-account-linker@0.0.1-beta","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0e2a277babe02f6745f8646256ce6f996dfb7c73","tarball":"http://registry.npmjs.org/everyauth-account-linker/-/everyauth-account-linker-0.0.1-beta.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.1":{"name":"everyauth-account-linker","version":"0.0.1","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"everyauth-account-linker@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0784f0919f0192d2c1625b73c1baccc8d226c635","tarball":"http://registry.npmjs.org/everyauth-account-linker/-/everyauth-account-linker-0.0.1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.3":{"name":"everyauth-account-linker","version":"0.0.3","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"everyauth-account-linker@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8d483b56cbcacf9d8acc389ca571d305aa05f956","tarball":"http://registry.npmjs.org/everyauth-account-linker/-/everyauth-account-linker-0.0.3.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.4":{"name":"everyauth-account-linker","version":"0.0.4","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"everyauth-account-linker@0.0.4","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0ba29703daa13743d750bca626b851e89e234e0e","tarball":"http://registry.npmjs.org/everyauth-account-linker/-/everyauth-account-linker-0.0.4.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:55:56.132Z","created":"2012-03-08T15:27:09.308Z","0.0.0-beta":"2012-03-08T15:27:11.313Z","0.0.1-beta":"2012-03-08T15:43:38.976Z","0.0.1":"2012-03-30T22:56:29.902Z","0.0.3":"2012-03-30T23:51:06.904Z","0.0.4":"2012-03-30T23:56:03.690Z"},"_id":"everyauth-account-linker","_rev":"1-236951daa6e6778f03d1477a4320e35a"}ÿdocument-storeÿevermore›{"id":"evermore","rev":"1-e5e0182812b59819269bf40ca3ca7530","rev_tree":[{"pos":1,"ids":["e5e0182812b59819269bf40ca3ca7530",{"status":"available"},[]]}],"rev_map":{"1-e5e0182812b59819269bf40ca3ca7530":3861},"winningRev":"1-e5e0182812b59819269bf40ca3ca7530","deleted":false,"seq":3861}ÿby-sequenceÿ0000000000003861‡6{"name":"evermore","description":"Make processes run evermore.","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.1.0","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","install":"node-waf configure build"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"drip":"0.2.x","oath":"0.2.x","lotus":"0.0.x","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"fe074518f2324db500c6cc7b17a02adbf6913b99","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.1.0.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.1.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.1.1","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","install":"node-waf configure build"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"drip":"0.2.x","oath":"0.2.x","lotus":"0.0.x","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2330eb3e98079233f89ede923b3ed3df0e77c82e","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.1.1.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.0":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.2.0","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","install":"node-waf configure build"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"drip":"0.2.x","oath":"0.2.x","orchid":"0.0.2","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"554e991fcc14ab869efdbb93735012f182119863","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.2.0.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.1":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.2.1","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","preinstall":"node-gyp configure && node-gyp build"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"bindings":"*","drip":"0.2.x","oath":"0.2.x","orchid":"0.0.2","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"674d33dfbb2b7468581d70176e98b8d9b6193178","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.2.1.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.2":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.2.2","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","preinstall":"node-gyp configure && node-gyp build"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"bindings":"*","drip":"0.2.x","oath":"0.2.x","orchid":"0.0.2","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.2.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"335a72d8ab505cb55ce84d827366635be78a687d","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.2.2.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]},"0.2.3":{"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"name":"evermore","description":"Make processes run evermore.","version":"0.2.3","repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"main":"./index","scripts":{"test":"make test","install":"node-gyp rebuild"},"engines":{"node":">= 0.6.0"},"bin":{"evermore":"./bin/evermore","evermored":"./bin/evermored"},"dependencies":{"bindings":"*","drip":"0.2.x","oath":"0.2.x","orchid":"0.0.2","seed":"0.1.x","seed-filestore":"0.2.x","tea":"0.0.x","optimist":"0.3.x","async":"0.1.15"},"devDependencies":{"mocha":"*","chai":"*"},"_npmUser":{"name":"jakeluer","email":"jake.luer@incatern.com"},"_id":"evermore@0.2.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"7549bfe9c4cc5f264c0a795e098ca40138a52549","tarball":"http://registry.npmjs.org/evermore/-/evermore-0.2.3.tgz"},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}]}},"readme":"","maintainers":[{"name":"jakeluer","email":"jake.luer@incatern.com"}],"time":{"modified":"2012-06-06T19:40:56.888Z","created":"2012-01-27T13:04:37.222Z","0.1.0":"2012-01-27T13:04:37.815Z","0.1.1":"2012-01-27T13:14:47.880Z","0.2.0":"2012-02-22T23:40:10.980Z","0.2.1":"2012-02-23T00:55:51.779Z","0.2.2":"2012-03-16T01:19:48.591Z","0.2.3":"2012-06-06T19:40:56.888Z"},"author":{"name":"Jake Luer","email":"jake@alogicalparadox.com"},"repository":{"type":"git","url":"git://github.com/qualiancy/evermore.git"},"_id":"evermore","_rev":"1-e5e0182812b59819269bf40ca3ca7530"}!ÿdocument-storeÿetherpad-stream¢{"id":"etherpad-stream","rev":"1-046b24b6c9f9908017fd1ffad29a553d","rev_tree":[{"pos":1,"ids":["046b24b6c9f9908017fd1ffad29a553d",{"status":"available"},[]]}],"rev_map":{"1-046b24b6c9f9908017fd1ffad29a553d":3860},"winningRev":"1-046b24b6c9f9908017fd1ffad29a553d","deleted":false,"seq":3860}ÿby-sequenceÿ0000000000003860„,{"name":"etherpad-stream","description":"[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"etherpad-stream","version":"0.0.1","author":{"name":"Simon Maddox","email":"simon@simonmaddox.com"},"bin":{"etherpad-stream":"./etherpad-stream.js"},"dependencies":{"etherpad-lite-client":""},"readme":"# Etherpad-Stream\n\n[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)\n\nI wanted something that could take output from STDOUT and send it straight to\nEtherpad. This is my implementation.\n\nIt works in TTY (as you type) mode, or you can redirect STDOUT to it.\n\n## Examples\n\n### TTY\n\n```bash\nnode etherpad-stream.js mypad\n```\n\nThis will open a TTY session with Etherpad, and everything you type will be \nsent to the `mypad` pad.\n\n### Redirecting STDOUT\n\n```bash\necho \"Hello World\" | node etherpad-stream.js mypad\n```\n\n```bash\nping google.co.uk | node etherpad-stream.js testpad\n```\n\n### No pad name\n\n```bash\nping google.co.uk | node etherpad-stream.js\n```\n\nIf you do not pass a pad name to etherpad-stream.js, your computer's hostname \nwill be used as the pad name instead.\n\n## Installation\n\nFirst you'll need to clone this repo or download the files and unzip.\n\nOpen etherpad-stream.js and modify the settings:\n\n```js\nvar host = 'etherpad.example.com';\nvar port = 80;\nvar apiKey = '123';\n```\n\nYou can get your API key from your Etherpad server - have a look in APIKEY.txt\n\nThen:\n\n```bash\nnpm install\n```\n\nAnd you should be good to go.\n\n## To Do\n\n- I can't figure out how to detect a backspace in TTY mode, so you can't delete\ntext. You'll have to use your browser for now.\n\n- Find a nicer way of putting this in your path","_id":"etherpad-stream@0.0.1","description":"[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)","dist":{"shasum":"33f4682efc83e3503be76768bbd0c063452cb108","tarball":"http://registry.npmjs.org/etherpad-stream/-/etherpad-stream-0.0.1.tgz"},"maintainers":[{"name":"simonmaddox","email":"simon@simonmaddox.com"}]},"0.0.2":{"name":"etherpad-stream","version":"0.0.2","author":{"name":"Simon Maddox","email":"simon@simonmaddox.com"},"bin":{"etherpad-stream":"./etherpad-stream.js"},"dependencies":{"etherpad-lite-client":""},"readme":"# Etherpad-Stream\n\n[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)\n\nI wanted something that could take output from STDOUT and send it straight to\nEtherpad. This is my implementation.\n\nIt works in TTY (as you type) mode, or you can redirect STDOUT to it.\n\n## Examples\n\n### TTY\n\n```bash\netherpad-stream mypad\n```\n\nThis will open a TTY session with Etherpad, and everything you type will be \nsent to the `mypad` pad.\n\n### Redirecting STDOUT\n\n```bash\necho \"Hello World\" | etherpad-stream mypad\n```\n\n```bash\nping google.co.uk | etherpad-stream testpad\n```\n\n### No pad name\n\n```bash\nping google.co.uk | etherpad-stream\n```\n\nIf you do not pass a pad name to etherpad-stream, your computer's hostname \nwill be used as the pad name instead.\n\n## Installation\n\n```bash\nnpm install -g etherpad-stream\n```\n\nNext, create `~/.etherpad-stream` and provide your Etherpad details:\n\n```javascript\n{\n\t\"host\" : \"localhost\",\n\t\"port\" : 9001,\n\t\"apikey\" : \"1234ABCD\"\n}\n```\n\nYou can get your API key from your Etherpad server - have a look in APIKEY.txt\n\nThen you should be good to go.\n\n## To Do\n\n- I can't figure out how to detect a backspace in TTY mode, so you can't delete\ntext. You'll have to use your browser for now.\n","_id":"etherpad-stream@0.0.2","description":"[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)","dist":{"shasum":"4e82d5b4e03a95c8345064da5c24b4ebb26d4e8a","tarball":"http://registry.npmjs.org/etherpad-stream/-/etherpad-stream-0.0.2.tgz"},"maintainers":[{"name":"simonmaddox","email":"simon@simonmaddox.com"}]}},"readme":"# Etherpad-Stream\n\n[Video](http://www.youtube.com/watch?v=PScJLoNMdX4&)\n\nI wanted something that could take output from STDOUT and send it straight to\nEtherpad. This is my implementation.\n\nIt works in TTY (as you type) mode, or you can redirect STDOUT to it.\n\n## Examples\n\n### TTY\n\n```bash\nnode etherpad-stream.js mypad\n```\n\nThis will open a TTY session with Etherpad, and everything you type will be \nsent to the `mypad` pad.\n\n### Redirecting STDOUT\n\n```bash\necho \"Hello World\" | node etherpad-stream.js mypad\n```\n\n```bash\nping google.co.uk | node etherpad-stream.js testpad\n```\n\n### No pad name\n\n```bash\nping google.co.uk | node etherpad-stream.js\n```\n\nIf you do not pass a pad name to etherpad-stream.js, your computer's hostname \nwill be used as the pad name instead.\n\n## Installation\n\nFirst you'll need to clone this repo or download the files and unzip.\1í,³ùn\nOpen etherpad-stream.js and modify the settings:\n\n```js\nvar host = 'etherpad.example.com';\nvar port = 80;\nvar apiKey = '123';\n```\n\nYou can get your API key from your Etherpad server - have a look in APIKEY.txt\n\nThen:\n\n```bash\nnpm install\n```\n\nAnd you should be good to go.\n\n## To Do\n\n- I can't figure out how to detect a backspace in TTY mode, so you can't delete\ntext. You'll have to use your browser for now.\n\n- Find a nicer way of putting this in your path","maintainers":[{"name":"simonmaddox","email":"simon@simonmaddox.com"}],"time":{"modified":"2012-08-08T18:53:23.931Z","created":"2012-08-08T12:01:03.243Z","0.0.1":"2012-08-08T12:01:04.582Z","0.0.2":"2012-08-08T18:53:23.931Z"},"author":{"name":"Simon Maddox","email":"simon@simonmaddox.com"},"_id":"etherpad-stream","_rev":"1-046b24b6c9f9908017fd1ffad29a553d"}ÿdocument-storeÿerrorboard.js {"id":"errorboard.js","rev":"1-cb4a593c36471555e4c15e052b3cbd3b","rev_tree":[{"pos":1,"ids":["cb4a593c36471555e4c15e052b3cbd3b",{"status":"available"},[]]}],"rev_map":{"1-cb4a593c36471555e4c15e052b3cbd3b":3859},"winningRev":"1-cb4a593c36471555e4c15e052b3cbd3b","deleted":false,"seq":3859}ÿby-sequenceÿ0000000000003859ít{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","dist-tags":{"latest":"0.0.7b"},"versions":{"0.0.2":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","main":"app.js","author":{"name":"Aziz Yuldoshev"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"version":"0.0.2","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"b463d2417b46a103ee489ae9d54fddb664a01ef7","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.2.tgz"},"readme":"","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.3":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","main":"app.js","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"version":"0.0.3","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.3","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e491658bf2e63c9a63dd52247818355c3107efe5","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.3.tgz"},"readme":"","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.5":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"bin":{"errorboard":"bin/errorboard.js"},"version":"0.0.5","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.5","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"ce906aa3184b2b326d663b77ec363d7923fc5f1a","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.5.tgz"},"readme":"# ErrorBoard.js\n\nTrack and fix JavaScript errors fired by your vititor's browsers\n\n## Installation\n\n $ npm install errorboard.js -g\n\n## Running\n\n\t\t$ errorboard\n\n## TODO\n\n* Command-line settings\n* More docs\n* Higher test coverage\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Aziz Yuldoshev <yuldoshev.aziz@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.6":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"bin":{"errorboard":"bin/errorboard.js"},"version":"0.0.6","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.6","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"dc4f2235251997b13b14213e722a57934ff35d26","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.6.tgz"},"readme":"# ErrorBoard.js\n\nTrack and fix JavaScript errors fired by your vititor's browsers\n\n## Installation\n\n\t$ npm install errorboard.js -g\n\n## Running\n\n\t$ errorboard\n\n## TODO\n\n* Command-line settings\n* More docs\n* Higher test coverage\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Aziz Yuldoshev <yuldoshev.aziz@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.7":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"bin":{"errorboard":"bin/errorboard.js"},"version":"0.0.7","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.7","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"1b2dd2cff1c5f2a6e058fd54d66fa46c207b4853","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.7.tgz"},"readme":"# ErrorBoard.js\n\nTrack and fix JavaScript errors fired by your vititor's browsers\n\n## Installation\n\n\t$ npm install errorboard.js -g\n\n## Running\n\n\t$ errorboard\n\n## TODO\n\n* Command-line settings\n* More docs\n* Higher test coverage\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Aziz Yuldoshev <yuldoshev.aziz@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.7a":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"bin":{"errorboard":"bin/errorboard.js"},"version":"0.0.7a","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.7a","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"49eef5e7c978bbdc4898f3e3e001add5f45fc425","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.7a.tgz"},"readme":"# ErrorBoard.js\n\nTrack and fix JavaScript errors fired by your vititor's browsers\n\n## Installation\n\n\t$ npm install errorboard.js -g\n\n## Running\n\n\t$ errorboard\n\n## TODO\n\n* Command-line settings\n* More docs\n* Higher test coverage\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Aziz Yuldoshev <yuldoshev.aziz@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]},"0.0.7b":{"name":"errorboard.js","description":"Track and fix JavaScript errors fired by your vititor's browsers","author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"keywords":["error tracking","error stats"],"engines":{"node":">= 0.6.18"},"bin":{"errorboard":"bin/errorboard.js"},"version":"0.0.7b","dependencies":{"express":"2.5.5","jade":">= 0.0.1","underscore":">= 0.0.1","mongodb":">= 0.9.1","ua-parser":">= 0.0.1","winston":">= 0.6.1","winston-mongodb":">= 0.0.1"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_npmUser":{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"},"_id":"errorboard.js@0.0.7b","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"fdee090eccbebb992baa2e783de1826a3e681f5c","tarball":"http://registry.npmjs.org/errorboard.js/-/errorboard.js-0.0.7b.tgz"},"readme":"# ErrorBoard.js\n\nTrack and fix JavaScript errors fired by your vititor's browsers\n\n## Installation\n\n\t$ npm install errorboard.js -g\n\n## Running\n\n\t$ errorboard\n\n## TODO\n\n* Command-line settings\n* More docs\n* Higher test coverage\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Aziz Yuldoshev <yuldoshev.aziz@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}]}},"readme":"","maintainers":[{"name":"Lapple","email":"yuldoshev.aziz@gmail.com"}],"time":{"modified":"2012-06-20T15:35:08.361Z","created":"2012-06-20T14:56:45.476Z","0.0.2":"2012-06-20T14:56:52.056Z","0.0.3":"2012-06-20T15:00:59.797Z","0.0.5":"2012-06-20T15:10:52.931Z","0.0.6":"2012-06-20T15:18:13.641Z","0.0.7":"2012-06-20T15:26:57.731Z","0.0.7a":"2012-06-20T15:32:33.832Z","0.0.7b":"2012-06-20T15:35:08.361Z"},"author":{"name":"Aziz Yuldoshev","email":"yuldoshev.aziz@gmail.com","url":"http://flatora.ru"},"repository":{"type":"git","url":"git://github.com/Lapple/ErrorBoard.git"},"_id":"errorboard.js","_rev":"1-cb4a593c36471555e4c15e052b3cbd3b"}ÿdocument-storeÿepo-opsš{"id":"epo-ops","rev":"1-534b5aeba004704fe9546450f618206c","rev_tree":[{"pos":1,"ids":["534b5aeba004704fe9546450f618206c",{"status":"available"},[]]}],"rev_map":{"1-534b5aeba004704fe9546450f618206c":3858},"winningRev":"1-534b5aeba004704fe9546450f618206c","deleted":false,"seq":3858}ÿby-sequenceÿ0000000000003858ˆ={"name":"epo-ops","description":"Access some basic EPO Open Patent Services","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Franklin van de Meent","email":"fr@nkl.in","url":"http://frankl.in"},"name":"epo-ops","description":"Access some basic EPO Open Patent Services","version":"0.1.0","repository":{"type":"git","url":"git://github.com/fvdm/nodejs-epo-ops.git"},"bugs":{"url":"https://github.com/fvdm/nodejs-epo-ops/issues"},"main":"epo-ops.js","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"keywords":["patents","search","middleware","gov"],"license":{"type":"Public Domain","url":"https://github.com/fvdm/nodejs-epo-ops/raw/master/UNLICENSE"},"readme":"# epo-ops\n\nNodeJS module to access some basic EPO Open Patent Services\n\n# Installation\n\nWith NPM:\n\n```\nnpm install epo-ops\n```\n\nFrom source\n\n```\ngit clone https://github.com/fvdm/nodejs-epo-ops\nnpm install ./nodejs-epo-ops\n```\n\n# Usage\n\n```js\nvar ops = require('epo-ops')\n\nops.search( 'test', function( results ) {\n\tresults.forEach( function( doc, docId ) {\n\t\tconsole.log( docId +': '+ doc.abstract.p[0]['$'] )\n\t})\n})\n```\n\n# Methods\n\n## search\n### ( query, [constituents], callback )\n\nSearch patents worldwide.\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
parameterdescriptionrequiredvaluesdefault
querykeywords to search onyestext
constituentsresult typeoptional\n\t\t\tabstract
\n\t\t\tbiblio
\n\t\t\tfull-cycle
\n\t\t\tabstract,full-cycle
\n\t\t\tbiblio,full-cycle\n\t\t
abstract
callbackfunction called when results are readyyesresultsObject
\n\n## talk\n### ( method, path, [fields], callback )\n\nCommunicate with the service.\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
parameterdescriptionrequiredvaluesdefault
methodHTTP methodyesGET, POST, PUT, DELETE
pathRequest URL path after `/2.6.2/rest-services/`yes
fieldsGET or POST parametersnoobject
callbackfunction called when results are readyyesresultsObject
\n\n# Unlicense\n\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to ","_id":"epo-ops@0.1.0","dist":{"shasum":"cd99c92054b2b30506860fc0e1ae8e3474a432be","tarball":"http://registry.npmjs.org/epo-ops/-/epo-ops-0.1.0.tgz"},"maintainers":[{"name":"franklin","email":"fr@nkl.in"}]}},"readme":"# epo-ops\n\nNodeJS module to access some basic EPO Open Patent Services\n\n# Installation\n\nWith NPM:\n\n```\nnpm install epo-ops\n```\n\nFrom source\n\n```\ngit clone https://github.com/fvdm/nodejs-epo-ops\nnpm install ./nodejs-epo-ops\n```\n\n# Usage\n\n```js\nvar ops = require('epo-ops')\n\nops.search( 'test', function( results ) {\n\tresults.forEach( function( doc, docId ) {\n\t\tconsole.log( docId +': '+ doc.abstract.p[0]['$'] )\n\t})\n})\n```\n\n# Methods\n\n## search\n### ( query, [constituents], callback )\n\nSearch patents worldwide.\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
parameterdescriptionrequiredvaluesdefault
querykeywords to search onyestext
constituentsresult typeoptional\n\t\t\tabstract
\n\t\t\tbiblio
\n\t\t\tfull-cycle
\n\t\t\tabstract,full-cycle
\n\t\t\tbiblio,full-cycle\n\t\t
abstract
callbackfunction called when results are readyyesresultsObject
\n\n## talk\n### ( method, path, [fields], callback )\n\nCommunicate with the service.\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
parameterdescriptionrequiredvaluesdefault
methodHTTP methodyesGET, POST, PUT, DELETE
pathRequest URL path after `/2.6.2/rest-services/`yes
fieldsGET or POST parametersnoobject
callbackfunction called when results are readyyesresultsObject
\n\n# Unlicense\n\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to ","maintainers":[{"name":"franklin","email":"fr@nkl.in"}],"time":{"modified":"2012-08-08T17:00:53.086Z","created":"2012-08-08T17:00:51.410Z","0.1.0":"2012-08-08T17:00:53.086Z"},"author":{"name":"Franklin van de Meent","email":"fr@nkl.in","url":"http://frankl.in"},"repository":{"type":"git","url":"git://github.com/fvdm/nodejs-epo-ops.git"},"_id":"epo-ops","_rev":"1-534b5aeba004704fe9546450f618206c"}ÿdocument-storeÿendr-test-2ž{"id":"endr-test-2","rev":"1-5e953e01bf94beaa8057bc6a114b8937","rev_tree":[{"pos":1,"ids":["5e953e01bf94beaa8057bc6a114b8937",{"status":"available"},[]]}],"rev_map":{"1-5e953e01bf94beaa8057bc6a114b8937":3857},"winningRev":"1-5e953e01bf94beaa8057bc6a114b8937","deleted":false,"seq":3857}ÿby-sequenceÿ0000000000003857¹{"name":"endr-test-2","description":"","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"endr-test-2","description":"","version":"0.0.1","authors":["Rod Vagg @rvagg (https://github.com/rvagg)"],"main":"./main.js","ender":{"dependencies":{"traversty":"*"}},"homepage":"https://ender.no.de","dependencies":{"qwery":"*"},"_id":"endr-test-2@0.0.1","dist":{"shasum":"8db93993cf84d2ae4bd13eafcc17a285d6d82632","tarball":"http://registry.npmjs.org/endr-test-2/-/endr-test-2-0.0.1.tgz"},"readme":"","maintainers":[{"name":"rvagg","email":"rod@vagg.org"}]}},"readme":"","maintainers":[{"name":"rvagg","email":"rod@vagg.org"}],"time":{"modified":"2012-06-20T12:09:27.192Z","created":"2012-06-20T12:09:22.423Z","0.0.1":"2012-06-20T12:09:27.192Z"},"_id":"endr-test-2","_rev":"1-5e953e01bf94beaa8057bc6a114b8937"}ÿdocument-storeÿendr-test-1ž{"id":"endr-test-1","rev":"1-6710f2a270d1763e6025743bd89a96de","rev_tree":[{"pos":1,"ids":["6710f2a270d1763e6025743bd89a96de",{"status":"available"},[]]}],"rev_map":{"1-6710f2a270d1763e6025743bd89a96de":3856},"winningRev":"1-6710f2a270d1763e6025743bd89a96de","deleted":false,"seq":3856}ÿby-sequenceÿ0000000000003856ú{"name":"endr-test-1","description":"","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"endr-test-1","description":"","version":"0.0.1","authors":["Rod Vagg @rvagg (https://github.com/rvagg)"],"main":"./main.js","ender":{"name":"mynewname","main":"./main-override.js","bridge":"./bridge.js","dependencies":{"bean":"*"}},"homepage":"https://ender.no.de","dependencies":{"bonzo":"*"},"_id":"endr-test-1@0.0.1","dist":{"shasum":"e4fb15363ed6311b046478af79f1ff9a8304a271","tarball":"http://registry.npmjs.org/endr-test-1/-/endr-test-1-0.0.1.tgz"},"readme":"","maintainers":[{"name":"rvagg","email":"rod@vagg.org"}]}},"readme":"","maintainers":[{"name":"rvagg","email":"rod@vagg.org"}],"time":{"modified":"2012-06-20T10:25:13.790Z","created":"2012-06-20T10:25:09.159Z","0.0.1":"2012-06-20T10:25:13.790Z"},"_id":"endr-test-1","_rev":"1-6710f2a270d1763e6025743bd89a96de"}ÿdocument-storeÿedgar˜{"id":"edgar","rev":"1-2a5a655c70684a6dbc393044bff10941","rev_tree":[{"pos":1,"ids":["2a5a655c70684a6dbc393044bff10941",{"status":"available"},[]]}],"rev_map":{"1-2a5a655c70684a6dbc393044bff10941":3855},"winningRev":"1-2a5a655c70684a6dbc393044bff10941","deleted":false,"seq":3855}ÿby-sequenceÿ0000000000003855à {"name":"edgar","description":"SEC Edgar database API","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"peterbraden","email":"peterbraden@peterbraden.co.uk","url":"peterbraden.co.uk"},"name":"edgar","description":"SEC Edgar database API","version":"0.0.0","dependencies":{"request":"*","underscore":"*","jsdom":"*","nomnom":"*","colors":"*","cli-table":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"peterbraden","email":"peterbraden@peterbraden.co.uk"},"_id":"edgar@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.1","_defaultsLoaded":true,"dist":{"shasum":"b412e802172fb4e6e110e554d828771b1290f51d","tarball":"http://registry.npmjs.org/edgar/-/edgar-0.0.0.tgz"},"readme":"","maintainers":[{"name":"peterbraden","email":"peterbraden@peterbraden.co.uk"}]}},"readme":"","maintainers":[{"name":"peterbraden","email":"peterbraden@peterbraden.co.uk"}],"time":{"modified":"2012-08-08T21:26:28.634Z","created":"2012-08-08T21:26:27.531Z","0.0.0":"2012-08-08T21:26:28.634Z"},"author":{"name":"peterbraden","email":"peterbraden@peterbraden.co.uk","url":"peterbraden.co.uk"},"_id":"edgar","_rev":"1-2a5a655c70684a6dbc393044bff10941"}ÿdocument-storeÿeasyboot›{"id":"easyboot","rev":"1-b00da47eee57a5dc9f5bee673eb926d1","rev_tree":[{"pos":1,"ids":["b00da47eee57a5dc9f5bee673eb926d1",{"status":"available"},[]]}],"rev_map":{"1-b00da47eee57a5dc9f5bee673eb926d1":3854},"winningRev":"1-b00da47eee57a5dc9f5bee673eb926d1","deleted":false,"seq":3854}ÿby-sequenceÿ0000000000003854½{"name":"easyboot","description":"pulls down and unzips the latest bootstrap","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"author":{"name":"Tom Wilson","email":"tom@jackhq.com"},"name":"easyboot","description":"pulls down and unzips the latest bootstrap","version":"0.0.1","repository":{"url":""},"bin":{"easyboot":"./bin/easyboot"},"engines":{"node":"0.6 || 0.7"},"dependencies":{"request":"*","zipfile":"*"},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"jackhq","email":"tom@jackhq.com"},"_id":"easyboot@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"b73fca1912b174651e0665736bb8603214cc7484","tarball":"http://registry.npmjs.org/easyboot/-/easyboot-0.0.1.tgz"},"maintainers":[{"name":"jackhq","email":"tom@jackhq.com"}]},"0.1.0":{"author":{"name":"Tom Wilson","email":"tom@jackhq.com"},"name":"easyboot","description":"pulls down and unzips the latest bootstrap","version":"0.1.0","repository":{"url":"https://github.com/twilson63/easyboot.git"},"bin":{"easyboot":"./bin/easyboot"},"engines":{"node":"0.6 || 0.7"},"dependencies":{"request":"2.9.153","zipfile":"0.3.1"},"devDependencies":{"mocha":"1.0.0","should":"0.6.0","wrench":"1.3.7"},"optionalDependencies":{},"_npmUser":{"name":"jackhq","email":"tom@jackhq.com"},"_id":"easyboot@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"52595283b545285669b1a523724cbe18785bfc5d","tarball":"http://registry.npmjs.org/easyboot/-/easyboot-0.1.0.tgz"},"maintainers":[{"name":"jackhq","email":"tom@jackhq.com"}]},"0.1.1":{"author":{"name":"Tom Wilson","email":"tom@jackhq.com"},"name":"easyboot","description":"pulls down and unzips the latest bootstrap","version":"0.1.1","repository":{"url":"https://github.com/twilson63/easyboot.git"},"bin":{"easyboot":"./bin/easyboot"},"engines":{"node":"~0.6.17"},"dependencies":{"request":"2.9.153","zipfile":"0.3.1"},"devDependencies":{"mocha":"1.0.0","should":"0.6.0","wrench":"1.3.7"},"optionalDependencies":{},"_npmUser":{"name":"jackhq","email":"tom@jackhq.com"},"_id":"easyboot@0.1.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"7560fe03c9968812a6aa00dffcace4736143b3ff","tarball":"http://registry.npmjs.org/easyboot/-/easyboot-0.1.1.tgz"},"maintainers":[{"name":"jackhq","email":"tom@jackhq.com"}]}},"readme":"# easyboot\n\nA command line app that pulls the latest version of twitter bootstrap\nand extracts the production files into a css, js, img folder.\n\n# why\n\nTo make it simple to add the twitter bootstrap to any public project.\n\n# requirements\n\n[nodejs](http://nodejs.org)\n\n# install\n\n`npm install easyboot -g`\n\n# usage\n\njust run easyboot in any directory you want to create the bootstrap\nassets.\n\n``` sh\neasyboot\n```\n\n# license\n\nsee LICENSE\n\n# contributions\n\npull requests welcome\n\n\n","maintainers":[{"name":"jackhq","email":"tom@jackhq.com"}],"time":{"modified":"2012-05-12T20:52:09.099Z","created":"2012-03-25T04:32:51.933Z","0.0.1":"2012-03-25T04:32:52.625Z","0.1.0":"2012-03-25T14:01:29.051Z","0.1.1":"2012-05-12T20:52:09.099Z"},"author":{"name":"Tom Wilson","email":"tom@jackhq.com"},"repository":{"url":"https://github.com/twilson63/easyboot.git"},"_id":"easyboot","_rev":"1-b00da47eee57a5dc9f5bee673eb926d1"}ÿdocument-storeÿdox-basicœ{"id":"dox-basic","rev":"1-a9600555aa317d430ebe076c984d8cb4","rev_tree":[{"pos":1,"ids":["a9600555aa317d430ebe076c984d8cb4",{"status":"available"},[]]}],"rev_map":{"1-a9600555aa317d430ebe076c984d8cb4":3853},"winningRev":"1-a9600555aa317d430ebe076c984d8cb4","deleted":false,"seq":3853}ÿby-sequenceÿ0000000000003853ç3{"name":"dox-basic","description":"Markdown / JSdoc documentation generator using dox","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"dox-basic","description":"Markdown / JSdoc documentation generator using dox","version":"0.0.1","keywords":["documentation","docs","markdown","jsdoc"],"bin":{"dox-basic":"./bin/dox-basic"},"dependencies":{"dox":"*","commað&øùnder":"0.5.2","ejs":"*","highlight":"*"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"dox-basic@0.0.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"542e54788efb421eb0c7467b2105fca3fe62519f","tarball":"http://registry.npmjs.org/dox-basic/-/dox-basic-0.0.1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.2":{"name":"dox-basic","description":"Markdown / JSdoc documentation generator using dox","version":"0.0.2","keywords":["documentation","docs","markdown","jsdoc"],"bin":{"dox-basic":"./bin/dox-basic"},"dependencies":{"dox":"*","commander":"0.5.2","ejs":"*","highlight":"*"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"dox-basic@0.0.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ed43d565072f4ee90db4150ea9a9f61534dddcae","tarball":"http://registry.npmjs.org/dox-basic/-/dox-basic-0.0.2.tgz"},"readme":"Dox Basic \n========= \n \n \n \n# Example Usage\n\n npm install dox-basic -g\n dox-basic -t \"Library Name\"readme.html\n dox-basic -m -t \"Library Name\"readme.md \n \n# exports.name \n \nParser name \n \n# exports.version \n \nParser version \n \n# exports.parse() \n \nParse source code to produce documentation\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@param {string} [options.title] The title of the javascript library \n@param {bool} [options.md] If true, render a markdown output rather than html \n@return {string} undefined An html representation of the documentation \n \n# exports.parseInner() \n \nParse source code to produce documentation without the surrounding html page\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@return {object} undefined {html:"HTML representation of docs", css:"link to a css style sheet to include"} \n","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.3":{"name":"dox-basic","description":"Markdown / JSdoc documentation generator using dox","version":"0.0.3","keywords":["documentation","docs","markdown","jsdoc"],"bin":{"dox-basic":"./bin/dox-basic"},"dependencies":{"dox":"*","commander":"0.5.2","ejs":"*","highlight":"*"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"dox-basic@0.0.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"f68632b2d922d71e27cc74bb75b58a07352cc838","tarball":"http://registry.npmjs.org/dox-basic/-/dox-basic-0.0.3.tgz"},"readme":"Dox Basic \n========= \n \n \n \n# Example Usage\n\n npm install dox-basic -g\n dox-basic -t \"Library Name\"readme.html\n dox-basic -m -t \"Library Name\"readme.md \n \n# exports.name \n \nParser name \n \n# exports.version \n \nParser version \n \n# exports.parse() \n \nParse source code to produce documentation\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@param {string} [options.title] The title of the javascript library \n@param {bool} [options.md] If true, render a markdown output rather than html \n@return {string} undefined An html representation of the documentation \n \n# exports.parseInner() \n \nParse source code to produce documentation without the surrounding html page\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@return {object} undefined {html:"HTML representation of docs", css:"link to a css style sheet to include"} \n","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.4":{"name":"dox-basic","description":"Markdown / JSdoc documentation generator using dox","version":"0.0.4","keywords":["documentation","docs","markdown","jsdoc"],"bin":{"dox-basic":"./bin/dox-basic"},"dependencies":{"dox":"*","commander":"0.5.2","ejs":"*","highlight":"*"},"devDependencies":{"mocha":"*","should":"*"},"_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"dox-basic@0.0.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"ad4470954133f349234f99baff088727be959b1d","tarball":"http://registry.npmjs.org/dox-basic/-/dox-basic-0.0.4.tgz"},"readme":"Dox Basic \n========= \n \n \n \n# Example Usage\n\n npm install dox-basic -g\n dox-basic -t \"Library Name\"readme.html\n dox-basic -m -t \"Library Name\"readme.md \n \n# exports.name \n \nParser name \n \n# exports.version \n \nParser version \n \n# exports.parse() \n \nParse source code to produce documentation\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@param {string} [options.title] The title of the javascript library \n@param {bool} [options.md] If true, render a markdown output rather than html \n@return {string} undefined An html representation of the documentation \n \n# exports.parseInner() \n \nParse source code to produce documentation without the surrounding html page\n\n \n@param {string} source JavaScript source code with comments \n@param {object} [options] \n@return {object} undefined {html:"HTML representation of docs", css:"link to a css style sheet to include"} \n","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:55:53.394Z","created":"2012-05-16T08:44:01.023Z","0.0.1":"2012-05-16T08:44:04.040Z","0.0.2":"2012-05-16T09:23:15.031Z","0.0.3":"2012-05-16T12:38:44.855Z","0.0.4":"2012-05-16T12:43:17.271Z"},"_id":"dox-basic","_rev":"1-a9600555aa317d430ebe076c984d8cb4"}ÿdocument-storeÿdom-shim›{"id":"dom-shim","rev":"1-dfb983bb25b11e7aa9ead73075c110b3","rev_tree":[{"pos":1,"ids":["dfb983bb25b11e7aa9ead73075c110b3",{"status":"available"},[]]}],"rev_map":{"1-dfb983bb25b11e7aa9ead73075c110b3":3852},"winningRev":"1-dfb983bb25b11e7aa9ead73075c110b3","deleted":false,"seq":3852}ÿby-sequenceÿ0000000000003852›{"name":"dom-shim","description":"Shim newer DOM features in older browsers","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"dom-shim","description":"Shim newer DOM features in older browsers","repository":{"type":"git","url":"git://github.com/codeparty/dom-shim.git"},"version":"0.1.0","main":"./lib/index.js","dependencies":{},"devDependencies":{"mocha":">=1","expect.js":">=0.1.2","coffee-script":">=1.3.1"},"engines":{"node":">=0.4.0"},"optionalDependencies":{},"_npmUser":{"name":"nateps","email":"nate@nateps.com"},"_id":"dom-shim@0.1.0","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"64fdaf443ae2835f991d7f70cef14175909b3dfe","tarball":"http://registry.npmjs.org/dom-shim/-/dom-shim-0.1.0.tgz"},"maintainers":[{"name":"nateps","email":"nate@nateps.com"}]},"0.1.1":{"name":"dom-shim","description":"Shim newer DOM features in older browsers","repository":{"type":"git","url":"git://github.com/codeparty/dom-shim.git"},"version":"0.1.1","main":"./lib/index.js","dependencies":{},"devDependencies":{"mocha":">=1","expect.js":">=0.1.2","coffee-script":">=1.3.1"},"engines":{"node":">=0.4.0"},"optionalDependencies":{},"_npmUser":{"name":"nateps","email":"nate@nateps.com"},"_id":"dom-shim@0.1.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"e933b8a60b435dc8f3698b42c6e41531024a3555","tarball":"http://registry.npmjs.org/dom-shim/-/dom-shim-0.1.1.tgz"},"maintainers":[{"name":"nateps","email":"nate@nateps.com"}]}},"readme":"# dom-shim\n\nShim newer DOM features in older browsers\n\n## MIT License\nCopyright (c) 2012 by Nate Smith and Brian Noguchi\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"nateps","email":"nate@nateps.com"}],"time":{"modified":"2012-07-12T02:29:32.817Z","created":"2012-04-29T08:07:20.231Z","0.1.0":"2012-04-29T08:07:22.024Z","0.1.1":"2012-07-12T02:29:32.817Z"},"repository":{"type":"git","url":"git://github.com/codeparty/dom-shim.git"},"_id":"dom-shim","_rev":"1-dfb983bb25b11e7aa9ead73075c110b3"}$ÿdocument-storeÿdistance-converter¥{"id":"distance-converter","rev":"1-a89d5b62887786cfccea0f840acb29f1","rev_tree":[{"pos":1,"ids":["a89d5b62887786cfccea0f840acb29f1",{"status":"available"},[]]}],"rev_map":{"1-a89d5b62887786cfccea0f840acb29f1":3851},"winningRev":"1-a89d5b62887786cfccea0f840acb29f1","deleted":false,"seq":3851}ÿby-sequenceÿ0000000000003851ƒ{"name":"distance-converter","description":"Convert distances between common units of measure","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"author":{"name":"Nick Fisher","email":"nfisher@trafficland.com"},"name":"distance-converter","description":"Convert distances between common units of measure","version":"0.0.1","homepage":"https://github.com/nrf110/distance-converter","repository":{"type":"git","url":"git://github.com/nrf110/distance-converter.git"},"main":"index","scripts":{"test":"mocha"},"engines":{"node":"~0.6.8"},"dependencies":{},"devDependencies":{"mocha":">=1.0.0","should":">=0.6.0"},"optionalDependencies":{},"_npmUser":{"name":"nfisher","email":"nfisher@trafficland.com"},"_id":"distance-converter@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"fe8638c16081cb04a51d5130c51ca602041a3876","tarball":"http://registry.npmjs.org/distance-converter/-/distance-converter-0.0.1.tgz"},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"0.1.0":{"author":{"name":"Nick Fisher","email":"nfisher@trafficland.com"},"name":"distance-converter","description":"Convert distances between common units of measure","version":"0.1.0","homepage":"https://github.com/nrf110/distance-converter","repository":{"type":"git","url":"git://github.com/nrf110/distance-converter.git"},"main":"index","scripts":{"test":"mocha"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"latest","should":"latest"},"optionalDependencies":{},"readme":"","_id":"distance-converter@0.1.0","dist":{"shasum":"3d169b6a360579864ac24d646236a5b296778ce3","tarball":"http://registry.npmjs.org/distance-converter/-/distance-converter-0.1.0.tgz"},"maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]},"1.0.0":{"author":{"name":"Nick Fisher","email":"nfisher@trafficland.com"},"name":"distance-converter","description":"Convert distances between common units of measure","version":"1.0.0","homepage":"https://github.com/nrf110/distance-converter","repository":{"type":"git","url":"git://github.com/nrf110/distance-converter.git"},"main":"index","scripts":{"test":"mocha"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"latest","should":"latest"},"optionalDependencies":{},"readme":"","_id":"distance-converter@1.0.0","dist":{"shasum":"964be1e066790fc0b8fad4d66ee199aa25cdcbcc","tarball":"http://registry.npmjs.org/distance-converter/-/distance-converter-1.0.0.tgz"},"maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}]}},"readme":"","maintainers":[{"name":"nfisher","email":"nfisher@trafficland.com"}],"time":{"modified":"2012-07-12T19:16:07.696Z","created":"2012-04-03T01:44:26.589Z","0.0.1":"2012-04-03T01:44:26.836Z","0.1.0":"2012-06-30T13:54:08.980Z","1.0.0":"2012-07-12T19:16:07.696Z"},"author":{"name":"Nick Fisher","email":"nfisher@trafficland.com"},"repository":{"type":"git","url":"git://github.com/nrf110/distance-converter.git"},"_id":"distance-converter","_rev":"1-a89d5b62887786cfccea0f840acb29f1"}ÿdocument-storeÿdevwatch›{"id":"devwatch","rev":"1-3fdb4e45bdd9ebe63836114a18eaf4cb","rev_tree":[{"pos":1,"ids":["3fdb4e45bdd9ebe63836114a18eaf4cb",{"status":"available"},[]]}],"rev_map":{"1-3fdb4e45bdd9ebe63836114a18eaf4cb":3850},"winningRev":"1-3fdb4e45bdd9ebe63836114a18eaf4cb","deleted":false,"seq":3850}ÿby-sequenceÿ0000000000003850žE{"name":"devwatch","description":"File-watcher to run any bash script on file changes","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"devwatch","homepage":"http://github.com/mpneuried/devwatch","author":{"name":"Mathias Peter","url":"http://github.com/mpneuried"},"bin":{"devwatch":"./devwatch.js"},"repository":{"type":"git","url":"git://github.com/mpneuried/devwatch.git"},"description":"File-watcher to run any bash script on file changes","keywords":["monitor","watch","bash","file","change","any","dev","development"],"version":"0.0.1","preferGlobal":"true","licenses":[{"type":"MIT","url":"http://rem.mit-license.org"}],"main":"./devwatch","_npmUser":{"name":"tcs-de","email":"github@tcs.de"},"_id":"devwatch@0.0.1","dependencies":{"growl":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_from":".","_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"482674fac9ba7a9944fdb30cb3a49aaf29dd66a5","tarball":"http://registry.npmjs.org/devwatch/-/devwatch-0.0.1.tgz"},"readme":"","maintainers":[{"name":"tcs-de","email":"github@tcs.de"}]},"0.1.0":{"name":"devwatch","homepage":"http://mpneuried.github.com/devwatch","author":{"name":"Mathias Peter","url":"http://github.com/mpneuried"},"bin":{"devwatch":"./devwatch.js"},"repository":{"type":"git","url":"git://github.com/mpneuried/devwatch.git"},"description":"File-watcher to run any bash script on file changes","keywords":["monitor","watch","bash","file","change","any","dev","development"],"version":"0.1.0","preferGlobal":"true","licenses":[{"type":"MIT","url":"http://rem.mit-license.org"}],"main":"./devwatch","_npmUser":{"name":"tcs-de","email":"github@tcs.de"},"_id":"devwatch@0.1.0","dependencies":{"growl":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_from":".","_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4902ebde7c7cade67c4e13e06ee75b840916a4ef","tarball":"http://registry.npmjs.org/devwatch/-/devwatch-0.1.0.tgz"},"readme":"devwatch\n===========\n\n# Flexible file watcher.\n\n`devwatch` is a super flexible file watcher. You can watch different files for changes and run a bash command.\n\n**Note: This module is only tested on OSX!**\n\n*Written in coffee-script*\n\n# Install\n\n**Note:** You have to install it global\n\n```bash\n npm -g install devwatch\n```\n\n## RUN\n\n`devwatch` takes at least 2 arguments. But you can add multiple commands.\nOn start the module scans the current folder plus subfolders for files matching the given `file-regex`\n\n```\ndevwatch 'file-regex' 'command 1' 'command 2' … 'command n'\n```\n\n### Arguments:\n\n- `file-regex`: is a regular expression to filter all files under the current folder tree \n- `command` is a bash command with will be called from the current folder.\n\n## Example\n\n```\ndevwatch '.soy' 'soy2js {NAME} de_de' 'soy2js {NAME} en_us'\n```\n\nIn this example `devwatch` searches for files with *.soy* in the filename.\nOn start and on a file change 2 commands called `soy2js` with different arguments will be called.\n\n## Replacements\n\nYou can define different variables to be replaced by `devwatch`\n\n- `{PATH}`: the path to the watched file *( e.g. /my/special/path )*\n- `{FILE}`: the watched file *( e.g. mywatchedfile.js )*\n- `{NAME}`: the watched filename *( e.g. mywatchedfile )*\n- `{EXT}`: the watched file extension *( e.g. js )*\n\n# Work in progress\n\n`nodecache` is work in progress. Your ideas, suggestions etc. are very welcome.\n\n# License \n\n(The MIT License)\n\nCopyright (c) 2010 TCS <dev (at) tcs.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tcs-de","email":"github@tcs.de"}]},"0.1.1":{"name":"devwatch","homepage":"http://mpneuried.github.com/devwatch","author":{"name":"Mathias Peter","url":"http://github.com/mpneuried"},"bin":{"devwatch":"./devwatch.js"},"repository":{"type":"git","url":"git://github.com/mpneuried/devwatch.git"},"description":"File-watcher to run any bash script on file changes","keywords":["monitor","watch","bash","file","change","any","dev","development"],"version":"0.1.1","preferGlobal":"true","licenses":[{"type":"MIT","url":"http://rem.mit-license.org"}],"main":"./devwatch","_npmUser":{"name":"tcs-de","email":"github@tcs.de"},"_id":"devwatch@0.1.1","dependencies":{"growl":"*"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_from":".","_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b453fe53d91c1d64162b0e4fba8c12f0c0125838","tarball":"http://registry.npmjs.org/devwatch/-/devwatch-0.1.1.tgz"},"readme":"devwatch\n===========\n\n# Flexible file watcher.\n\n`devwatch` is a super flexible file watcher. You can watch different files for changes and run a bash command.\n\n**Note: This module is only tested on OSX!**\n\n*Written in coffee-script*\n\n# Install\n\n**Note:** You have to install it global\n\n```bash\n npm -g install devwatch\n```\n\n## RUN\n\n`devwatch` takes at least 2 arguments. But you can add multiple commands.\nOn start the module scans the current folder plus subfolders for files matching the given `file-regex`\n\n```\ndevwatch 'file-regex' 'command 1' 'command 2' … 'command n'\n```\n\n### Arguments:\n\n- `file-regex`: is a regular expression to filter all files under the current folder tree \n- `command` is a bash command with will be called from the current folder.\n\n## Example\n\n```\ndevwatch '.soy$' 'soy2js {NAME} de_de' 'soy2js {NAME} en_us'\n```\n\nIn this example `devwatch` searches for files that end with *.soy*.\nOn start and on a file change 2 commands called `soy2js` with different arguments will be called.\n\n## Replacements\n\nYou can define different variables to be replaced by `devwatch`\n\n- `{PATH}`: the path to the watched file *( e.g. /my/special/path )*\n- `{FILE}`: the watched file *( e.g. mywatchedfile.js )*\n- `{NAME}`: the watched filename *( e.g. mywatchedfile )*\n- `{EXT}`: the watched file extension *( e.g. js )*\n\n# Work in progress\n\n`nodecache` is work in progress. Your ideas, suggestions etc. are very welcome.\n\n# License \n\n(The MIT License)\n\nCopyright (c) 2010 TCS <dev (at) tcs.de>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","maintainers":[{"name":"tcs-de","email":"github@tcs.de"}]}},"readme":"","maintainers":[{"name":"tcs-de","email":"github@tcs.de"}],"time":{"modified":"2012-07-12T12:32:39.560Z","created":"2012-07-10T07:23:25.628Z","0.0.1":"2012-07-10T07:23:27.137Z","0.1.0":"2012-07-10T08:14:00.920Z","0.1.1":"2012-07-12T12:32:39.560Z"},"author":{"name":"Mathias Peter","url":"http://github.com/mpneuried"},"repository":{"type":"git","url":"git://github.com/mpneuried/devwatch.git"},"_id":"devwatch","_rev":"1-3fdb4e45bdd9ebe63836114a18eaf4cb"}&ÿdocument-storeÿdeferredEventEmitter§{"id":"deferredEventEmitter","rev":"1-4a9341fea962e7d996edffbb9137c908","rev_tree":[{"pos":1,"ids":["4a9341fea962e7d996edffbb9137c908",{"status":"available"},[]]}],"rev_map":{"1-4a9341fea962e7d996edffbb9137c908":3849},"winningRev":"1-4a9341fea962e7d996edffbb9137c908","deleted":false,"seq":3849}ÿby-sequenceÿ0000000000003849ƒ{"name":"deferredEventEmitter","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.0":{"author":{"name":"Egor Dydykin","email":"egor.a.dydykin@catfamily.ru"},"name":"deferredEventEmitter","version":"0.0.0","repository":{"type":"git","url":"git://github.com/madimp/deferredEventEmitter.git"},"main":"deferredEventEmitter.js","dependencies":{"Deferred":"~0.1.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"},"_id":"deferredEventEmitter@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fab65cc36c75833bb00a976b8c165e83524d23a0","tarball":"http://registry.npmjs.org/deferredEventEmitter/-/deferredEventEmitter-0.0.0.tgz"},"maintainers":[{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"}]},"0.0.1":{"author":{"name":"Egor Dydykin","email":"egor.a.dydykin@catfamily.ru"},"name":"deferredEventEmitter","version":"0.0.1","repository":{"type":"git","url":"git://github.com/madimp/deferredEventEmitter.git"},"main":"deferredEventEmitter.js","dependencies":{"Deferred":"~0.1.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"},"_id":"deferredEventEmitter@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ba7d9490668477c78db0a4fb82b30a00ae447832","tarball":"http://registry.npmjs.org/deferredEventEmitter/-/deferredEventEmitter-0.0.1.tgz"},"maintainers":[{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"}]},"0.0.2":{"author":{"name":"Egor Dydykin","email":"egor.a.dydykin@catfamily.ru"},"name":"deferredEventEmitter","version":"0.0.2","repository":{"type":"git","url":"git://github.com/madimp/deferredEventEmitter.git"},"main":"deferredEventEmitter.js","dependencies":{"Deferred":"~0.1.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"},"_id":"deferredEventEmitter@0.0.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"511008f7738eb3ba5c6ae49303bf0dfdacbcca46","tarball":"http://registry.npmjs.org/deferredEventEmitter/-/deferredEventEmitter-0.0.2.tgz"},"maintainers":[{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"}]}},"readme":"deferredEventEmitter\n====================","maintainers":[{"name":"madimp","email":"egor.a.dydykin@catfamily.ru"}],"time":{"modified":"2012-05-13T17:42:10.032Z","created":"2012-05-12T22:35:45.076Z","0.0.0":"2012-05-12T22:35:46.704Z","0.0.1":"2012-05-12T23:04:54.141Z","0.0.2":"2012-05-13T17:42:10.032Z"},"author":{"name":"Egor Dydykin","email":"egor.a.dydykin@catfamily.ru"},"repository":{"type":"git","url":"git://github.com/madimp/deferredEventEmitter.git"},"_id":"deferredEventEmitter","_rev":"1-4a9341fea962e7d996edffbb9137c908"}$ÿdocument-storeÿdatasift-dashboard¥{"id":"datasift-dashboard","rev":"1-a92aaea96a2896c0e69c8aeb78b01e09","rev_tree":[{"pos":1,"ids":["a92aaea96a2896c0e69c8aeb78b01e09",{"status":"available"},[]]}],"rev_map":{"1-a92aaea96a2896c0e69c8aeb78b01e09":3848},"winningRev":"1-a92aaea96a2896c0e69c8aeb78b01e09","deleted":false,"seq":3848}ÿby-sequenceÿ0000000000003848è{"name":"datasift-dashboard","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"datasift-dashboard","version":"0.0.1","private":false,"dependencies":{"express":"2.5.5","jade":">= 0.0.1"},"_id":"datasift-dashboard@0.0.1","dist":{"shasum":"249fcc078a2628d443b26466f1a140beb4557892","tarball":"http://registry.npmjs.org/datasift-dashboard/-/datasift-dashboard-0.0.1.tgz"},"maintainers":[{"name":"dmorales","email":"dmorales@smartup.es"}]}},"readme":"Visualising a DataSift feed with Node.js, Express, Socket.io and D3.js\n\nSee http://www.benh.co.uk/datasift/visualising-a-datasift-feed-with-node-and-d3/\n\n","maintainers":[{"name":"dmorales","email":"dmorales@smartup.es"}],"time":{"modified":"2012-07-02T20:12:57.692Z","created":"2012-07-02T20:12:53.083Z","0.0.1":"2012-07-02T20:12:57.692Z"},"_id":"datasift-dashboard","_rev":"1-a92aaea96a2896c0e69c8aeb78b01e09"}!ÿdocument-storeÿcrypto-settings¢{"id":"crypto-settings","rev":"1-9c6c1ac4d551d274252bb74ba9f4bc1c","rev_tree":[{"pos":1,"ids":["9c6c1ac4d551d274252bb74ba9f4bc1c",{"status":"available"},[]]}],"rev_map":{"1-9c6c1ac4d551d274252bb74ba9f4bc1c":3847},"winningRev":"1-9c6c1ac4d551d274252bb74ba9f4bc1c","deleted":false,"seq":3847}ÿby-sequenceÿ0000000000003847æ {"name":"crypto-settings","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"crypto-settings","version":"0.0.1","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"crypto-settings@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"36efd5bb87476a25f3e8a29b4d1093ab5c9f488f","tarball":"http://registry.npmjs.org/crypto-settings/-/crypto-settings-0.0.1.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]},"0.0.3":{"name":"crypto-settings","version":"0.0.3","main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"crypto-settings@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"1147f650f1b95497f30cb2bb9f157022704fa513","tarball":"http://registry.npmjs.org/crypto-settings/-/crypto-settings-0.0.3.tgz"},"readme":"","maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}]}},"readme":"","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2012-08-19T22:55:50.727Z","created":"2012-03-25T01:26:43.184Z","0.0.1":"2012-03-25T01:26:46.131Z","0.0.3":"2012-03-30T16:36:37.204Z"},"_id":"crypto-settings","_rev":"1-9c6c1ac4d551d274252bb74ba9f4bc1c"}ÿdocument-storeÿcromulentœ{"id":"cromulent","rev":"1-49723e0abb2b77a3605afb2e727ee056","rev_tree":[{"pos":1,"ids":["49723e0abb2b77a3605afb2e727ee056",{"status":"available"},[]]}],"rev_map":{"1-49723e0abb2b77a3605afb2e727ee056":3846},"winningRev":"1-49723e0abb2b77a3605afb2e727ee056","deleted":false,"seq":3846}ÿby-sequenceÿ0000000000003846Å {"name":"cromulent","description":"a delightfully cromulent node.js framework","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"cromulent","description":"a delightfully cromulent node.js framework","version":"0.0.1","homepage":"https://github.com/azulus/cromulent","authors":["Jeremy Stanley (https://github.com/azulus)"],"contributors":[],"keywords":["cromulent","framework"],"main":"./cromulent.js","repository":{"type":"git","url":"git://github.com/azulus/cromulent.git"},"dependencies":{},"_npmUser":{"name":"azulus","email":"npm@azulus.com"},"_id":"cromulent@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"6195d1c298a9d466d7e0bc574e5647c77c251313","tarball":"http://registry.npmjs.org/cromulent/-/cromulent-0.0.1.tgz"},"maintainers":[{"name":"azulus","email":"npm@azulus.com"}]}},"readme":"cromulent\n=========\n\nA delightful cromulent node.js framework","maintainers":[{"name":"azulus","email":"npm@azulus.com"}],"time":{"modified":"2012-07-02T04:10:13.632Z","created":"2012-07-02T04:10:11.777Z","0.0.1":"2012-07-02T04:10:13.632Z"},"repository":{"type":"git","url":"git://github.com/azulus/cromulent.git"},"_id":"cromulent","_rev":"1-49723e0abb2b77a3605afb2e727ee056"}ÿdocument-storeÿcreatorš{"id":"creator","rev":"1-ae5789f32b797b6cae0b953896cd8fcf","rev_tree":[{"pos":1,"ids":["ae5789f32b797b6cae0b953896cd8fcf",{"status":"available"},[]]}],"rev_map":{"1-ae5789f32b797b6cae0b953896cd8fcf":3845},"winningRev":"1-ae5789f32b797b6cae0b953896cd8fcf","deleted":false,"seq":3845}ÿby-sequenceÿ0000000000003845×-{"name":"creator","description":"A tiny library for creating create-methods for your objects.","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"creator","version":"0.0.1","main":"./lib/creator","description":"A tiny library for creating create-methods for your objects.","author":{"name":"Magnar Sveen","email":"magnars@gmail.com"},"repository":{"type":"git","url":"git://github.com/magnars/creator.js.git"},"homepage":"https://github.com/magnars/creator.js","scripts":{"test":"buster test"},"dependencies":{"lodash":">=0.3"},"devDependencies":{"buster":"*"},"engines":{"node":">=0.6"},"keywords":["create"],"licenses":[{"type":"BSD 2-Clause license","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"magnars","email":"magnars@gmail.com"},"_id":"creator@0.0.1","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"3f8e5da9359c808b12a1834b754dfea668791195","tarball":"http://registry.npmjs.org/creator/-/creator-0.0.1.tgz"},"maintainers":[{"name":"magnars","email":"magnars@gmail.com"}]},"0.1.0":{"name":"creator","version":"0.1.0","main":"./creator","description":"A tiny library for creating create-methods for your objects.","author":{"name":"Magnar Sveen","email":"magnars@gmail.com"},"repository":{"type":"git","url":"git://github.com/magnars/creator.js.git"},"homepage":"https://github.com/magnars/creator.js","scripts":{"test":"buster test"},"dependencies":{"lodash":">=0.3"},"devDependencies":{"buster":"*"},"engines":{"node":">=0.6"},"keywords":["create"],"licenses":[{"type":"BSD 2-Clause license","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"magnars","email":"magnars@gmail.com"},"_id":"creator@0.1.0","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"64f2c20a20d379965d0f171c9d87a849435acf42","tarbÔL2Zùall":"http://registry.npmjs.org/creator/-/creator-0.1.0.tgz"},"maintainers":[{"name":"magnars","email":"magnars@gmail.com"}]},"0.2.0":{"name":"creator","version":"0.2.0","main":"./creator","description":"A tiny library for creating create-methods for your objects.","author":{"name":"Magnar Sveen","email":"magnars@gmail.com"},"repository":{"type":"git","url":"git://github.com/magnars/creator.js.git"},"homepage":"https://github.com/magnars/creator.js","scripts":{"test":"buster test"},"devDependencies":{"buster":"*"},"engines":{"node":">=0.6"},"keywords":["create"],"licenses":[{"type":"BSD 2-Clause license","url":"http://www.opensource.org/licenses/bsd-license.php"}],"_npmUser":{"name":"magnars","email":"magnars@gmail.com"},"_id":"creator@0.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"6d042f1da1b6fae5aa84b1d71c3bf2479063424b","tarball":"http://registry.npmjs.org/creator/-/creator-0.2.0.tgz"},"maintainers":[{"name":"magnars","email":"magnars@gmail.com"}]}},"readme":"# creator.js\n\nA tiny library for creating create-methods for your objects.\n\nThese are some things I like:\n\n * Using `Object.create`.\n * Having objects with their own `create` method.\n * Create-methods that take named parameters.\n * Failing early.\n\nCreator.js helps with this. Instead of writing:\n\n var banana = {\n create: function (params) {\n if (!params) { throw new TypeError(\"banana.create: missing params { color, brand }\"); }\n if (!params.color) { throw new TypeError(\"banana.create: missing param { color }\"); }\n if (!params.brand) { throw new TypeError(\"banana.create: missing param { brand }\"); }\n\n return Object.extend(Object.create(this), params);\n }\n };\n\nYou have:\n\n var banana = {\n create: creator(\"banana\", [\"color\", \"brand\"])\n };\n\nOr if you need more options:\n\n var banana = {\n create: creator(\"banana\", {\n required: [\"color\", \"brand\"],\n defaults: { curvature: 23 },\n strict: true\n }\n };\n\nIn which\n\n* `required` is a list of parameters that are required,\n* `defaults` is a list of parameters that are optional with defaults, and\n* `strict` makes it complain about unknown parameters.\n\n## Won't someone think of the performance\n\nIn a production environment, you can use a much simplified version of creator,\npretty much like this:\n\n var create = function (params) {\n return Object.extend(Object.create(this), params);\n };\n\n var creator = function () { return create; };\n\nThat way you get meaningful error messages and early failures while developing\nand testing, without sacrificing performance in production.\n\nIn areas of the code that needs to be highly optimized, you should of course use\nwhatever is optimized better by current JavaScript engines . At the time of\nwriting that would be the pseudo-classical function constructors and `new`.\n\n## Dependencies\n\nRight now creator.js is dependent on\n[lodash](https://github.com/bestiejs/lodash), a drop-in replacement for\nunderscore that has a suite of unit tests, supports AMD and to top it off has\nsome significant performance improvements.\n\nI am considering removing the dependency given enough pressure to do so. :-P\n\n## License\n\nBSD 2-clause license. http://www.opensource.org/licenses/bsd-license.php\n","maintainers":[{"name":"magnars","email":"magnars@gmail.com"}],"time":{"modified":"2012-06-14T06:04:19.001Z","created":"2012-06-13T20:57:16.382Z","0.0.1":"2012-06-13T20:57:18.151Z","0.1.0":"2012-06-13T21:27:41.527Z","0.2.0":"2012-06-14T06:04:19.001Z"},"author":{"name":"Magnar Sveen","email":"magnars@gmail.com"},"repository":{"type":"git","url":"git://github.com/magnars/creator.js.git"},"_id":"creator","_rev":"1-ae5789f32b797b6cae0b953896cd8fcf"}ÿdocument-storeÿcrank˜{"id":"crank","rev":"1-ea8761616978e2004c557f65e213811a","rev_tree":[{"pos":1,"ids":["ea8761616978e2004c557f65e213811a",{"status":"available"},[]]}],"rev_map":{"1-ea8761616978e2004c557f65e213811a":3844},"winningRev":"1-ea8761616978e2004c557f65e213811a","deleted":false,"seq":3844}ÿby-sequenceÿ0000000000003844¸E{"name":"crank","description":"tool to update version number and changelog, for npm module development","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.5":{"name":"crank","version":"0.0.5","description":"tool to update version number and changelog, for npm module development","author":{"name":"Andrew Folta","email":"drew@folta.net"},"homepage":"https://github.com/drewfish/node-crank","keywords":["package","version","changelog","build"],"repository":{"type":"git","url":"git://github.com/drewfish/node-crank.git"},"bugs":{"url":"http://github.com/drewfish/node-crank/issues"},"licenses":{"type":"MIT","url":"https://github.com/drewfish/node-crank/blob/master/Readme.md#license"},"preferGlobal":true,"engines":{"node":">= 0.4.0"},"devDependencies":{},"dependencies":{"async":">= 0.1.18","dateformat":">= 1.0.2-1.2.3","mu2":">= 0.5.3","semver":">= 1.0.13","xregexp":">= 1.5.3 < 2.0.0"},"main":"lib/crank","bin":{"crank":"bin/crank"},"_npmUser":{"name":"drewfolta","email":"folta@yahoo-inc.com"},"_id":"crank@0.0.5","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"ca495bb73df3a29ea49d9163e466a4f6eadb50e9","tarball":"http://registry.npmjs.org/crank/-/crank-0.0.5.tgz"},"maintainers":[{"name":"drewfolta","email":"folta@yahoo-inc.com"}]},"0.0.6":{"name":"crank","version":"0.0.6","description":"tool to update version number and changelog, for npm module development","author":{"name":"Andrew Folta","email":"drew@folta.net"},"homepage":"https://github.com/yahoo/node-crank","keywords":["package","version","changelog","build"],"repository":{"type":"git","url":"git://github.com/yahoo/node-crank.git"},"bugs":{"url":"http://github.com/yahoo/node-crank/issues"},"licenses":{"type":"MIT","url":"https://github.com/yahoo/node-crank/blob/master/Readme.md#license"},"preferGlobal":true,"engines":{"node":">= 0.4.0"},"devDependencies":{},"dependencies":{"async":">= 0.1.18","dateformat":">= 1.0.2-1.2.3","mu2":">= 0.5.3","semver":">= 1.0.13","xregexp":">= 1.5.3 < 2.0.0"},"main":"lib/crank","bin":{"crank":"bin/crank"},"_npmUser":{"name":"drewfolta","email":"folta@yahoo-inc.com"},"_id":"crank@0.0.6","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"784e5ba3fa32d2d461254dfa2a92273f0cad838a","tarball":"http://registry.npmjs.org/crank/-/crank-0.0.6.tgz"},"maintainers":[{"name":"drewfolta","email":"folta@yahoo-inc.com"}]},"0.0.8":{"name":"crank","version":"0.0.8","description":"tool to update version number and changelog, for npm module development","author":{"name":"Andrew Folta","email":"drew@folta.net"},"homepage":"https://github.com/yahoo/node-crank","keywords":["package","version","changelog","build"],"repository":{"type":"git","url":"git://github.com/yahoo/node-crank.git"},"bugs":{"url":"http://github.com/yahoo/node-crank/issues"},"licenses":{"type":"MIT","url":"https://github.com/yahoo/node-crank/blob/master/Readme.md#license"},"preferGlobal":true,"engines":{"node":">= 0.4.0"},"devDependencies":{},"dependencies":{"async":">= 0.1.18","dateformat":">= 1.0.2-1.2.3","mu2":">= 0.5.3","semver":">= 1.0.13","xregexp":">= 1.5.3 < 2.0.0"},"main":"lib/crank","bin":{"crank":"bin/crank"},"_npmUser":{"name":"drewfolta","email":"folta@yahoo-inc.com"},"_id":"crank@0.0.8","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"82c2ca37c46c3d32cf8417d3fa9bcbdbc2745cb8","tarball":"http://registry.npmjs.org/crank/-/crank-0.0.8.tgz"},"maintainers":[{"name":"drewfolta","email":"folta@yahoo-inc.com"}]}},"readme":"\n# CRANK\n\na tool to update version number and changelog, for npm module development\n\n\n## usage\n\n crank version {part}\n\nincrements version in package.json\n{part} is `major`, `minor`, or `patch`. defaults to `patch`\n\n crank changelog {file}\n\nupdates changelog. {file} defaults to `Changelog.md`\n\n\n## intentions\n\n
\n
node modules
\n
\n Used to manage node modules. (Assumes package.json, etc.)\n
\n
move into the future
\n
\n Interface designed primarily to increment/update package metadata.\n
\n
for build systems
\n
\n Intended to use in a build system (gmake, ant, phing, etc).\n Expects to be intermixed with other commands.\n (This lets it focus on what it does well -- and not try to do everything.)\n
\n
semantic versioning
\n
\n By default, makes it easy to manage packages that use semantic versioning.\n
\n
read-only
\n
\n Doesn't commit to the SCM. (See \"not try to do everything\" above.)\n
\n
config file (optional)
\n
\n Options given mainly by config file (instead of commandline arguments).\n This makes it easier to create re-usable \"recipes\".\n (For example, using a config file means that it can be commited to the SCM.)\n
\n
\n
\n
\n
\n\n\n## assumptions\n\n
\n
single change ID
\n
\n Change ID (\"revision\", \"commit\", etc) of target diretory applies homogeneously to all files/subdirectories in the target.\n
\n
clean target
\n
\n No modified files in the target directory.\n
\n
CWD in module root
\n
\n Generally expected to be run in same directory as package.json.\n
\n
\n
\n
\n
\n\n\n## config\n\n* not really needed for simple use cases\n* defaults to `crank.json` in the current working directory\n* can be specified with a commandline argument\n\n* `target`: directory to track\n * defaults to current working directory\n* `changelog`:\n * `file`: path on disk\n * relative path is relative to the target\n * `template`: template type, or path on disk\n * defaults to file extension\n * simple string taken as one of the built-in template types to use\n * builtin types are `md` (markdown) and `txt` (plain text)\n * otherwise, template to use\n * `changes`:\n * `dateformat`: string\n * format to use for change dates\n * `filters`: list of objects describing how to modify changes\n * `subject`: string `message`, `author`, `date`, or `changeid`\n * `regexp`: string\n * `replace`: string\n * if results in `--CRANK:SKIP--` then change is skipped\n * `versions`:\n * `dateformat`: string\n * format to use for revision dates\n * `filters`: list of objects describing how to modify versions\n * `subject`: string `version`, `date`, or `changeid`\n * `regexp`: string\n * `replace`: string\n * if results in `--CRANK:SKIP--` then version is skipped\n\n\n## template\n\n* good old mustache\n\n* `{{version}}` string\n* `{{date}}` string, date that crank was run\n* `{{changeid}}` string\n* `{{changes}}` list of objects\n * `{{changeid}}` string\n * `{{date}}` string\n * `{{author}}` string\n * `{{message}}` string\n\n\n## license\n\nMIT License\n\nCopyright (c) 2012, Yahoo! Inc. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\n\n","maintainers":[{"name":"drewfolta","email":"folta@yahoo-inc.com"}],"time":{"modified":"2012-05-13T15:53:28.919Z","created":"2012-05-08T22:35:14.397Z","0.0.5":"2012-05-08T22:35:15.528Z","0.0.6":"2012-05-08T22:39:24.659Z","0.0.8":"2012-05-13T15:53:28.919Z"},"author":{"name":"Andrew Folta","email":"drew@folta.net"},"repository":{"type":"git","url":"git://github.com/yahoo/node-crank.git"},"_id":"crank","_rev":"1-ea8761616978e2004c557f65e213811a"}ÿdocument-storeÿcpool˜{"id":"cpool","rev":"1-d3a53888482f0faf4eaff6c2e489ec35","rev_tree":[{"pos":1,"ids":["d3a53888482f0faf4eaff6c2e489ec35",{"status":"available"},[]]}],"rev_map":{"1-d3a53888482f0faf4eaff6c2e489ec35":3843},"winningRev":"1-d3a53888482f0faf4eaff6c2e489ec35","deleted":false,"seq":3843}ÿby-sequenceÿ0000000000003843Ô {"name":"cpool","description":"child process pool manager","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"David Howard","email":"dmh2000@gmail.com"},"name":"cpool","version":"0.0.1","description":"child process pool manager","keywords":["child_process","fork","pool"],"repository":{"type":"git","url":"git://github.com/dmh2000/node-cpool.git"},"main":"index","scripts":{"test":"waf","preinstall":"node-waf clean || (exit 0); node-waf configure build"},"engines":{"node":"0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","waf":"*","jshint":"*"},"optionalDependencies":{},"_npmUser":{"name":"dmh2000","email":"dmh2000@gmail.com"},"_id":"cpool@0.0.1","_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1e2057480f33767b22774aa6c6a6680548619181","tarball":"http://registry.npmjs.org/cpool/-/cpool-0.0.1.tgz"},"readme":"","maintainers":[{"name":"dmh2000","email":"dmh2000@gmail.com"}]}},"readme":"","maintainers":[{"name":"dmh2000","email":"dmh2000@gmail.com"}],"time":{"modified":"2012-06-07T16:40:04.293Z","created":"2012-06-07T16:40:03.034Z","0.0.1":"2012-06-07T16:40:04.293Z"},"author":{"name":"David Howard","email":"dmh2000@gmail.com"},"repository":{"type":"git","url":"git://github.com/dmh2000/node-cpool.git"},"_id":"cpool","_rev":"1-d3a53888482f0faf4eaff6c2e489ec35"}$ÿdocument-storeÿcore-framework-cli¥{"id":"core-framework-cli","rev":"1-3d341c7c9963dc516f2c130d28c3777b","rev_tree":[{"pos":1,"ids":["3d341c7c9963dc516f2c130d28c3777b",{"status":"available"},[]]}],"rev_map":{"1-3d341c7c9963dc516f2c130d28c3777b":3842},"winningRev":"1-3d341c7c9963dc516f2c130d28c3777b","deleted":false,"seq":3842}ÿby-sequenceÿ0000000000003842Ìj{"name":"core-framework-cli","description":"CLI para o core-framework","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.0":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.1.0","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc"},"keywords":[],"readme":"# core-framework-cli\n\nCLI para o core-framework\n\n## Getting Started\nInstall the module with: `npm install core-framework-cli`\n\n```javascript\nvar core_framework_cli = require('core-framework-cli');\ncore_framework_cli.awesome(); // \"awesome\"\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 William Lepinski \nLicensed under the MIT license.\n","_id":"core-framework-cli@0.1.0","dist":{"shasum":"30806c3e021092fa58fb0983d456c75e5b20362c","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.1.0.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"directories":{}},"0.2.0":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.0","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCLI para o core-framework\n\n## Getting Started\nInstall the module with: `npm install core-framework-cli`\n\n```javascript\nvar core_framework_cli = require('core-framework-cli');\ncore_framework_cli.awesome(); // \"awesome\"\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 William Lepinski \nLicensed under the MIT license.\n","_id":"core-framework-cli@0.2.0","dist":{"shasum":"208540d20a85a01642f4eacfc0ddfaf3ef1a05ae","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.0.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"directories":{}},"0.2.1":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.1","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","cli-color":"0.1.7","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCLI para o core-framework\n\n## Getting Started\nInstall the module with: `npm install core-framework-cli`\n\n```javascript\nvar core_framework_cli = require('core-framework-cli');\ncore_framework_cli.awesome(); // \"awesome\"\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 William Lepinski \nLicensed under the MIT license.\n","_id":"core-framework-cli@0.2.1","dist":{"shasum":"fc7903700423bb863a3951bc4b9b642c4fbfdc93","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.1.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"directories":{}},"0.2.2":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.2","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","cli-color":"0.1.7","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCommand line interface para geração de código para o core-framework.\n\n## Utilizando\n\nPara utilizar o core-framework-cli você irá necessitar do [node package manager](http://npmjs.org/) instalado.\n\nInstale o módulo utilizando o comando: `sudo npm install -g core-framework-cli`\n\nA flag -g instala o projeto globalmente no seu sistema. Vá para a pasta do projeto e digite o comand `core-framework-cli -h` para ver a lista de comandos disponíveis.\n\n## Bugs?\n\nEncontrou um bug? Preencha uma [issue](https://github.com/dclick/sesc-guideline/issues?labels=core-framework-cli&page=1&state=open)","_id":"core-framework-cli@0.2.2","dist":{"shasum":"9cc1b285cca5ff08a0b4fd29cfc127a56e77ee8e","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.2.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"directories":{}},"0.2.3":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.3","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","cli-color":"0.1.7","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCommand line interface para geração de código para o core-framework.\n\n## Utilizando\n\nPara utilizar o core-framework-cli você irá necessitar do [node package manager](http://npmjs.org/) instalado.\n\nInstale o módulo utilizando o comando: `sudo npm install -g core-framework-cli`\n\nA flag -g instala o projeto globalmente no seu sistema. Vá para a pasta do projeto e digite o comand `core-framework-cli -h` para ver a lista de comandos disponíveis.\n\n## Bugs?\n\nEncontrou um bug? Preencha uma [issue](https://github.com/dclick/sesc-guideline/issues?labels=core-framework-cli&page=1&state=open)","_id":"core-framework-cli@0.2.3","dist":{"shasum":"7943ecdfad217092ee85951daee7cd59bd65e3e9","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.3.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"directories":{}},"0.2.4":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.4","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","cli-color":"0.1.7","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCommand line interface para geração de código para o core-framework.\n\n## Utilizando\n\nPara utilizar o core-framework-cli você irá necessitar do [node package manager](http://npmjs.org/) instalado.\n\nInstale o módulo utilizando o comando: `sudo npm install -g core-framework-cli`\n\nA flag -g instala o projeto globalmente no seu sistema. Vá para a pasta do projeto e digite o comand `core-framework-cli -h` para ver a lista de comandos disponíveis.\n\n## Bugs?\n\nEncontrou um bug? Preencha uma [issue](https://github.com/dclick/sesc-guideline/issues?labels=core-framework-cli&page=1&state=open)","_id":"core-framework-cli@0.2.4","dist":{"shasum":"0bdda447677a20a190bf4a912c73951dc89394fc","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.4.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}]},"0.2.5":{"name":"core-framework-cli","description":"CLI para o core-framework","version":"0.2.5","homepage":"https://github.com/dclick/sesc-guideline","author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"bugs":{"url":"https://github.com/dclick/sesc-guideline/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dclick/sesc-guideline/blob/master/LICENSE-MIT"}],"main":"lib/core-framework-cli","bin":{"core-framework-cli":"./bin/core-framework-cli"},"engines":{"node":">= 0.6.0"},"scripts":{"test":"grunt test"},"dependencies":{"grunt":"~0.3.11","commander":"1.0.0","handlebars":"1.0.6","underscore":"1.3.3","underscore.string":"2.2.0rc","cli-color":"0.1.7","inflection":"latest"},"keywords":[],"readme":"# core-framework-cli\n\nCommand line interface para geração de código para o core-framework.\n\n## Utilizando\n\nPara utilizar o core-framework-cli você irá necessitar do [node package manager](http://npmjs.org/) instalado.\n\nInstale o módulo utilizando o comando: `sudo npm install -g core-framework-cli`\n\nA flag -g instala o projeto globalmente no seu sistema. Vá para a pasta do projeto e digite o comand `core-framework-cli -h` para ver a lista de comandos disponíveis.\n\n## Bugs?\n\nEncontrou um bug? Preencha uma [issue](https://github.com/dclick/sesc-guideline/issues?labels=core-framework-cli&page=1&state=open)","_id":"core-framework-cli@0.2.5","dist":{"shasum":"5f394350ae52c4053c20f98c83e3f5c4ac4cae2b","tarball":"http://registry.npmjs.org/core-framework-cli/-/core-framework-cli-0.2.5.tgz"},"maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}]}},"readme":"# core-framework-cli\n\nCLI para o core-framework\n\n## Getting Started\nInstall the module with: `npm install core-framework-cli`\n\n```javascript\nvar core_framework_cli = require('core-framework-cli');\ncore_framework_cli.awesome(); // \"awesome\"\n```\n\n## Documentation\n_(Coming soon)_\n\n## Examples\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2012 William Lepinski \nLicensed under the MIT license.\n","maintainers":[{"name":"wlepinski","email":"willsp@gmail.com"}],"time":{"modified":"2012-08-02T13:43:33.517Z","created":"2012-07-27T20:21:56.617Z","0.1.0":"2012-07-27T20:21:58.815Z","0.2.0":"2012-07-28T22:02:03.214Z","0.2.1":"2012-07-28T22:03:48.493Z","0.2.2":"2012-07-30T13:09:25.160Z","0.2.3":"2012-07-30T13:13:50.468Z","0.2.4":"2012-08-01T18:52:46.783Z","0.2.5":"2012-08-01T18:57:22.944Z"},"author":{"name":"William Lepinski","email":"willsp@gmail.com","url":"http://wlepinski.blog.br"},"repository":{"type":"git","url":"git://github.com/dclick/sesc-guideline.git"},"users":{"fgribreau":true},"_id":"core-framework-cli","_rev":"1-3d341c7c9963dc516f2c130d28c3777b"}!ÿdocument-storeÿconnect-bouncer¢{"id":"connect-bouncer","rev":"1-33ba8617fa933642e306287d3d6a0742","rev_tree":[{"pos":1,"ids":["33ba8617fa933642e306287d3d6a0742",{"status":"available"},[]]}],"rev_map":{"1-33ba8617fa933642e306287d3d6a0742":3841},"winningRev":"1-33ba8617fa933642e306287d3d6a0742","deleted":false,"seq":3841}ÿby-sequenceÿ0000000000003841– {"name":"connect-bouncer","description":"Connect middleware to keep out brute force requests.","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"author":{"name":"Leon Weidauer","email":"leon.weidauer@gmail.com","url":"http://sevenmil.es"},"name":"connect-bouncer","description":"Connect middleware to keep out brute force requests.","version":"0.1.0","repository":{"type":"git","url":"git://github.com/lnwdr/connect-bouncer.git"},"main":"./lib/throttle","directories":{"lib":"./lib"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":">=0.8"},"license":"MIT","_npmUser":{"name":"lnwdr","email":"leon.weidauer@gmail.com"},"_id":"connect-bouncer@0.1.0","_engineSupported":false,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b1bda27f029314c560a94a16bab3f19d9149d4f5","tarball":"http://registry.npmjs.org/connect-bouncer/-/connect-bouncer-0.1.0.tgz"},"maintainers":[{"name":"lnwdr","email":"leon.weidauer@gmail.com"}]}},"readme":"connect-throttle\n================\n\nConnect middleware for keeping out brute force requests.\n","maintainers":[{"name":"lnwdr","email":"leon.weidauer@gmail.com"}],"time":{"modified":"2012-08-02T13:43:37.002Z","created":"2012-08-01T09:42:41.034Z","0.1.0":"2012-08-01T09:42:42.788Z"},"author":{"name":"Leon Weidauer","email":"leon.weidauer@gmail.com","url":"http://sevenmil.es"},"repository":{"type":"git","url":"git://github.com/lnwdr/connect-bouncer.git"},"users":{"fgribreau":true},"_id":"connect-bouncer","_rev":"1-33ba8617fa933642e306287d3d6a0742"}ÿdocument-storeÿconnect-b2gž{"id":"connect-b2g","rev":"1-aba7d880dc0ce3eee05220a31ba30813","rev_tree":[{"pos":1,"ids":["aba7d880dc0ce3eee05220a31ba30813",{"status":"available"},[]]}],"rev_map":{"1-aba7d880dc0ce3eee05220a31ba30813":3840},"winningRev":"1-aba7d880dc0ce3eee05220a31ba30813","deleted":false,"seq":3840}ÿby-sequenceÿ0000000000003840²{"name":"connect-b2g","description":"Connect middleware that delivers an application manifest compatible with Mozilla's Open Web Apps initiative","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"alexandru topliceanu","email":"alexandru.topliceanu@gmail.com","url":"https://github.com/topliceanu"},"name":"connect-b2g","description":"Connect middleware that delivers an application manifest compatible with Mozilla's Open Web Apps initiative","version":"0.0.1","homepage":"https://github.com/topliceanu/connect-b2g","repository":{"type":"git","url":"git://github.com/topliceanu/connect-b2g.git"},"main":"index.js","scripts":{"test":"mocha test/index.js"},"dependencies":{"mocha":"~1.0.3","request":"~2.9.202"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"alexandru.topliceanu","email":"alext@vibetrace.com"},"_id":"connect-b2g@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"93ab122f0af882141094a9b951f3c96a89b80acb","tarball":"http://registry.npmjs.org/connect-b2g/-/connect-b2g-0.0.1.tgz"},"maintainers":[{"name":"alexandru.topliceanu","email":"alext@vibetrace.com"}]}},"readme":"connect-b2g\n===========\n\n[![Build Status](https://secure.travis-ci.org/topliceanu/connect-b2g.png?branch=master)](http://travis-ci.org/topliceanu/connect-b2g)\n\nAbstract\n--------\n\nConnect middleware that delivers an application manifest compatible with Mozilla's Open Web Apps initiative\n\nInstallation\n------------\n\n\tnpm install connect-b2g\n\nMore\n----\n\nOpen Web Apps are web ap̓wùps that are installable on Mozilla's Boot 2 Gecko Operating System.\n\nAny website can be installed as an app on B2G but it needs to provide a manifest file. \n\nThe manifest is a text file containing a json document. It can have any name but must have the extension `.webapp`. \n\nIt will be requested from the webroot by the client device, much like a favicon.\n\n\tExample: http://domain.com/manifest.webapp\n\n\nTo find out more about creating Boot to Gecko Apps go to the [Mozilla Developer Network](https://developer.mozilla.org/en/Apps)\n\nThis simple connect middleware delivers the mainfest from a given file path.\n\nThis middleware does not enforce the manifest schema, format or content. Read about these topics [here](https://developer.mozilla.org/en/Apps/Manifest).\n\nUsage\n-----\n\nMuch like any other connect middleware\n\n\tvar connect = require('connect');\n\tvar b2g = require('connect-b2g');\n\n\tvar app = connect()\n\t\t.use( b2g( 'path/to/manifest.webapp' ) )\n\t\t.listen(3000);\n\n\nRunning tests\n-------------\n\nTo run tests you need to install [mocha](http://visionmedia.github.com/mocha/) and [request](https://github.com/mikeal/request).\n\n\tsudo npm install -g mocha\n\tnpm install request\n\n\tmocha \n\n\nRoadmap\n-------\n\nThis project is intended as a utility middleware for B2G app developers.\n\nAs such, whenever new features are added to the specs, they will be implemented here.\n\nFeel free to send me feedback and to contribute to this project.\n\n\nLicence\n-------\n\n[WTFPL](http://sam.zoy.org/wtfpl/)\n\n\n","maintainers":[{"name":"alexandru.topliceanu","email":"alext@vibetrace.com"}],"time":{"modified":"2012-06-26T21:27:07.177Z","created":"2012-06-26T21:27:03.772Z","0.0.1":"2012-06-26T21:27:07.177Z"},"author":{"name":"alexandru topliceanu","email":"alexandru.topliceanu@gmail.com","url":"https://github.com/topliceanu"},"repository":{"type":"git","url":"git://github.com/topliceanu/connect-b2g.git"},"_id":"connect-b2g","_rev":"1-aba7d880dc0ce3eee05220a31ba30813"}ÿdocument-storeÿconjs˜{"id":"conjs","rev":"1-e629a5fac1d7ef03b6ba15a7eb43d8e9","rev_tree":[{"pos":1,"ids":["e629a5fac1d7ef03b6ba15a7eb43d8e9",{"status":"available"},[]]}],"rev_map":{"1-e629a5fac1d7ef03b6ba15a7eb43d8e9":3839},"winningRev":"1-e629a5fac1d7ef03b6ba15a7eb43d8e9","deleted":false,"seq":3839}ÿby-sequenceÿ0000000000003839ú{"name":"conjs","description":"allows you to run javascript commands on the server through a seperate terminal.","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"conjs","description":"About -------- conjs","author":"","version":"0.0.1","dependencies":{},"engine":">= 0.6.6","bin":{"conjs":"conjs.js"},"readme":"","_id":"conjs@0.0.1","dist":{"shasum":"a451fd0f146eb45c71b26c366ee6b7431c008ee1","tarball":"http://registry.npmjs.org/conjs/-/conjs-0.0.1.tgz"},"maintainers":[{"name":"qwook","email":"qwookiejar@gmail.com"}]},"0.0.2":{"name":"conjs","description":"allows you to run javascript commands on the server through a seperate terminal.","author":{"name":"qwook"},"version":"0.0.2","dependencies":{},"engine":">= 0.6.6","bin":{"conjs":"conjs.js"},"readme":"","_id":"conjs@0.0.2","dist":{"shasum":"013f7996a7febe94a749ce4df142dc0932ad1992","tarball":"http://registry.npmjs.org/conjs/-/conjs-0.0.2.tgz"},"maintainers":[{"name":"qwook","email":"qwookiejar@gmail.com"}]},"0.0.3":{"name":"conjs","description":"allows you to run javascript commands on the server through a seperate terminal.","author":{"name":"qwook"},"version":"0.0.3","dependencies":{},"engine":">= 0.6.6","bin":{"conjs":"conjs.js"},"readme":"","_id":"conjs@0.0.3","dist":{"shasum":"36d7c305ff05744c93aa76df5eaed42ff1997791","tarball":"http://registry.npmjs.org/conjs/-/conjs-0.0.3.tgz"},"maintainers":[{"name":"qwook","email":"qwookiejar@gmail.com"}]},"0.0.4":{"name":"conjs","description":"allows you to run javascript commands on the server through a seperate terminal.","author":{"name":"qwook"},"version":"0.0.4","dependencies":{},"engine":">= 0.6.6","bin":{"conjs":"conjs.js"},"readme":"","_id":"conjs@0.0.4","dist":{"shasum":"bc2c3446f3ea1bc1c8f7da848a74c96cdeef1c99","tarball":"http://registry.npmjs.org/conjs/-/conjs-0.0.4.tgz"},"maintainers":[{"name":"qwook","email":"qwookiejar@gmail.com"}]}},"readme":"","maintainers":[{"name":"qwook","email":"qwookiejar@gmail.com"}],"time":{"modified":"2012-08-02T13:43:37.552Z","created":"2012-08-01T06:42:11.072Z","0.0.1":"2012-08-01T06:42:12.393Z","0.0.2":"2012-08-01T06:44:30.857Z","0.0.3":"2012-08-01T06:59:35.881Z","0.0.4":"2012-08-01T07:20:28.254Z"},"author":{"name":"qwook"},"users":{"fgribreau":true},"_id":"conjs","_rev":"1-e629a5fac1d7ef03b6ba15a7eb43d8e9"}ÿdocument-storeÿconcatterœ{"id":"concatter","rev":"1-50485bdb3e16b50bfad974bcffe6fcae","rev_tree":[{"pos":1,"ids":["50485bdb3e16b50bfad974bcffe6fcae",{"status":"available"},[]]}],"rev_map":{"1-50485bdb3e16b50bfad974bcffe6fcae":3838},"winningRev":"1-50485bdb3e16b50bfad974bcffe6fcae","deleted":false,"seq":3838}ÿby-sequenceÿ0000000000003838œ8{"name":"concatter","description":"Single-file app js concat utility","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"name":"concatter","description":"Single-file app js concat utility","version":"0.0.2","author":{"name":"Raivo Laanemets","email":"raivo@infdot.com"},"repository":{"type":"git","url":"git://github.com/rla/concatter"},"dependencies":{"glob":"*","commander":"*"},"bin":{"concatter":"./bin/concatter"},"readme":"Concatter\n=========\n\nHelper utility to build single-file JavaScript applications.\nIt uses NodeJS-styled `require` function calls to resolve file concatenation order.\nIt is quite experimental at the moment and does not support cyclic dependencies.\n\nUsage\n-----\n\n```\n$ concatter --help\n\n Usage: concatter [options]\n\n Options:\n\n -h, --help output usage information\n -b, --base base path for modules\n -i, --indent indent for module wrapping\n -o, --output name of the output file\n -V, --version output the version number\n```\n\nExample\n-------\n\nLets say we have project with the following structure:\n\n```\nexample/\n|-- module1\n| `-- a.js\n|-- module2\n| `-- b.js\n`-- module3\n `-- c.js\n```\n\nand `a.js`, `b.js`, `c.js` are following:\n\na.js:\n```javascript\nvar b = require('../module2/b');\n\nexports.a = function() {\n console.log(b.b());\n};\n```\n\nb.js:\n```javascript\nvar c = require('../module3/c');\n\nexports.c = function() {\n console.log(c.c());\n};\n```\n\nc.js:\n```javascript\nexports.c = function() {\n console.log('c');\n};\n```\n\nthen the project is compiled to a single file using the command `concatter --base example`\nwhich results in the following output:\n\n```javascript\nmodule1 = {};\nmodule1.a = {};\nmodule2 = {};\nmodule2.b = {};\nmodule3 = {};\nmodule3.c = {};\n\nmodule3.c = (function(exports) {\n exports.c = function() {\n console.log('c');\n };\n\n return exports;\n})({});\n\nmodule2.b = (function(exports) {\n var c = module3.c;\n\n exports.c = function() {\n console.log(c.c());\n };\n\n return exports;\n})({});\n\nmodule1.a = (function(exports) {\n var b = module2.b;\n\n exports.a = function() {\n console.log(b.b());\n };\n\n return exports;\n})({});\n```","_id":"concatter@0.0.2","dist":{"shasum":"3493e7359c46666e6806e1f41f6421b82bb41e76","tarball":"http://registry.npmjs.org/concatter/-/concatter-0.0.2.tgz"},"maintainers":[{"name":"rla","email":"raivo@infdot.com"}]},"0.0.4":{"name":"concatter","description":"Single-file app js concat utility","version":"0.0.4","author":{"name":"Raivo Laanemets","email":"raivo@infdot.com"},"repository":{"type":"git","url":"git://github.com/rla/concatter"},"dependencies":{"glob":"*","commander":"*"},"bin":{"concatter":"./bin/concatter"},"readme":"Concatter\n=========\n\nHelper utility to build single-file JavaScript applications.\nIt uses NodeJS-styled `require` function calls to resolve file concatenation order.\nIt is quite experimental at the moment and does not support cyclic dependencies.\n\nUsage\n-----\n\n```\n$ concatter --help\n\n Usage: concatter [options]\n\n Options:\n\n -h, --help output usage information\n -b, --base base path for modules\n -i, --indent indent for module wrapping\n -o, --output name of the output file\n -V, --version output the version number\n```\n\nExample\n-------\n\nLets say we have project with the following structure:\n\n```\nexample/\n|-- module1\n| `-- a.js\n|-- module2\n| `-- b.js\n`-- module3\n `-- c.js\n```\n\nand `a.js`, `b.js`, `c.js` are following:\n\na.js:\n```javascript\nvar b = require('../module2/b');\n\nexports.a = function() {\n console.log(b.b());\n};\n```\n\nb.js:\n```javascript\nvar c = require('../module3/c');\n\nexports.c = function() {\n console.log(c.c());\n};\n```\n\nc.js:\n```javascript\nexports.c = function() {\n console.log('c');\n};\n```\n\nthen the project is compiled to a single file using the command `concatter --base example`\nwhich results in the following output:\n\n```javascript\nmodule1 = {};\nmodule1.a = {};\nmodule2 = {};\nmodule2.b = {};\nmodule3 = {};\nmodule3.c = {};\n\nmodule3.c = (function(exports) {\n exports.c = function() {\n console.log('c');\n };\n\n return exports;\n})({});\n\nmodule2.b = (function(exports) {\n var c = module3.c;\n\n exports.c = function() {\n console.log(c.c());\n };\n\n return exports;\n})({});\n\nmodule1.a = (function(exports) {\n var b = module2.b;\n\n exports.a = function() {\n console.log(b.b());\n };\n\n return exports;\n})({});\n```","_id":"concatter@0.0.4","dist":{"shasum":"0aa428647fdaa7b09b49f4fd727556f96955fe0b","tarball":"http://registry.npmjs.org/concatter/-/concatter-0.0.4.tgz"},"maintainers":[{"name":"rla","email":"raivo@infdot.com"}]}},"readme":"Concatter\n=========\n\nHelper utility to build single-file JavaScript applications.\nIt uses NodeJS-styled `require` function calls to resolve file concatenation order.\nIt is quite experimental at the moment and does not support cyclic dependencies.\n\nUsage\n-----\n\n```\n$ concatter --help\n\n Usage: concatter [options]\n\n Options:\n\n -h, --help output usage information\n -b, --base base path for modules\n -i, --indent indent for module wrapping\n -o, --output name of the output file\n -V, --version output the version number\n```\n\nExample\n-------\n\nLets say we have project with the following structure:\n\n```\nexample/\n|-- module1\n| `-- a.js\n|-- module2\n| `-- b.js\n`-- module3\n `-- c.js\n```\n\nand `a.js`, `b.js`, `c.js` are following:\n\na.js:\n```javascript\nvar b = require('../module2/b');\n\nexports.a = function() {\n console.log(b.b());\n};\n```\n\nb.js:\n```javascript\nvar c = require('../module3/c');\n\nexports.c = function() {\n console.log(c.c());\n};\n```\n\nc.js:\n```javascript\nexports.c = function() {\n console.log('c');\n};\n```\n\nthen the project is compiled to a single file using the command `concatter --base example`\nwhich results in the following output:\n\n```javascript\nmodule1 = {};\nmodule1.a = {};\nmodule2 = {};\nmodule2.b = {};\nmodule3 = {};\nmodule3.c = {};\n\nmodule3.c = (function(exports) {\n exports.c = function() {\n console.log('c');\n };\n\n return exports;\n})({});\n\nmodule2.b = (function(exports) {\n var c = module3.c;\n\n exports.c = function() {\n console.log(c.c());\n };\n\n return exports;\n})({});\n\nmodule1.a = (function(exports) {\n var b = module2.b;\n\n exports.a = function() {\n console.log(b.b());\n };\n\n return exports;\n})({});\n```","maintainers":[{"name":"rla","email":"raivo@infdot.com"}],"time":{"modified":"2012-08-19T18:37:16.602Z","created":"2012-08-13T20:35:47.760Z","0.0.2":"2012-08-13T20:35:50.404Z","0.0.4":"2012-08-19T18:37:16.602Z"},"author":{"name":"Raivo Laanemets","email":"raivo@infdot.com"},"repository":{"type":"git","url":"git://github.com/rla/concatter"},"_id":"concatter","_rev":"1-50485bdb3e16b50bfad974bcffe6fcae"}#ÿdocument-storeÿconcat-stream-0.6¤{"id":"concat-stream-0.6","rev":"1-ce68fc54ef3ff4cb749f19383b2ada4a","rev_tree":[{"pos":1,"ids":["ce68fc54ef3ff4cb749f19383b2ada4a",{"status":"available"},[]]}],"rev_map":{"1-ce68fc54ef3ff4cb749f19383b2ada4a":3837},"winningRev":"1-ce68fc54ef3ff4cb749f19383b2ada4a","deleted":false,"seq":3837}ÿby-sequenceÿ0000000000003837ì {"name":"concat-stream-0.6","description":"writable stream that concatenates strings or data and calls a callback with the result","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.8":{"name":"concat-stream-0.6","description":"writable stream that concatenates strings or data and calls a callback with the result","tags":["stream","simple","util","utility"],"version":"0.0.8","author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/node-concat-stream.git"},"bugs":{"url":"http://github.com/maxogden/node-concat-stream/issues"},"engines":["node >= 0.6.0"],"_npmUser":{"name":"prabhakhar","email":"prabhakhar@ebaysf.com"},"_id":"concat-stream-0.6@0.0.8","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"3944e4e18adcbc66a659bfa9248c0a28953fc656","tarball":"http://registry.npmjs.org/concat-stream-0.6/-/concat-stream-0.6-0.0.8.tgz"},"readme":"","maintainers":[{"name":"prabhakhar","email":"prabhakhar@ebaysf.com"}]}},"readme":"","maintainers":[{"name":"prabhakhar","email":"prabhakhar@ebaysf.com"}],"time":{"modified":"2012-08-08T22:23:49.370Z","created":"2012-08-08T22:23:48.031Z","0.0.8":"2012-08-08T22:23:49.370Z"},"author":{"name":"Max Ogden","email":"max@maxogden.com"},"repository":{"type":"git","url":"git://github.com/maxogden/node-concat-stream.git"},"_id":"concat-stream-0.6","_rev":"1-ce68fc54ef3ff4cb749f19383b2ada4a"}ÿdocument-storeÿcolormanderž{"id":"colormander","rev":"1-cc42c95492927bff6ae6d99d110374a6","rev_tree":[{"pos":1,"ids":["cc42c95492927bff6ae6d99d110374a6",{"status":"available"},[]]}],"rev_map":{"1-cc42c95492927bff6ae6d99d110374a6":3836},"winningRev":"1-cc42c95492927bff6ae6d99d110374a6","deleted":false,"seq":3836}ÿby-sequenceÿ0000000000003836ó {"name":"colormander","description":"Color wrapper for command-line ansi-color, simplifying with HTML tags","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"colormander","version":"0.0.1","author":{"name":"Dom Udall"},"description":"Color wrapper for command-line ansi-color, simplifying with HTML tags","homepage":"http://github.com/domudall/colormander","repository":{"type":"git","url":"git://github.com/domudall/colormander.git"},"keywords":["command","commander","color","ansi color","cli"],"main":"./index.js","dependencies":{"ansi-color":">= 0.2.1"},"_npmUser":{"name":"domudall","email":"dom@synthmedia.co.uk"},"_id":"colormander@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f7de3f4125eb9034f45788f685bbe6c345cc37ac","tarball":"http://registry.npmjs.org/colormander/-/colormander-0.0.1.tgz"},"maintainers":[{"name":"domudall","email":"dom@synthmedia.co.uk"}],"directories":{},"deprecated":"No longer exists"}},"readme":"colormander\n===========\n\nSimplified colourisation for command-line node apps","maintainers":[{"name":"domudall","email":"dom@synthmedia.co.uk"}],"time":{"modified":"2012-06-07T11:53:37.482Z","created":"2012-06-06T16:55:31.415Z","0.0.1":"2012-06-06T16:55:40.789Z"},"author":{"name":"Dom Udall"},"repository":{"type":"git","url":"git://github.com/domudall/colormander.git"},"_id":"colormander","_rev":"1-cc42c95492927bff6ae6d99d110374a6"}ÿdocument-storeÿcoffeetalk{"id":"coffeetalk","rev":"1-533f7a72906ba91d1b76eecfeb2163b2","rev_tree":[{"pos":1,"ids":["533f7a72906ba91d1b76eecfeb2163b2",{"status":"available"},[]]}],"rev_map":{"1-533f7a72906ba91d1b76eecfeb2163b2":3835},"winningRev":"1-533f7a72906ba91d1b76eecfeb2163b2","deleted":false,"seq":3835}ÿby-sequenceÿ0000000000003835ç3{"name":"coffeetalk","description":"a smalltalk esque class browser for coffeescript","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"coffeetalk","preferGlobal":"true","version":"0.1.0","author":{"name":"shaunxcode"},"description":"a smalltalk esque class browser for coffeescript","contributors":[{"name":"Shaun Gilchrist","email":"shaunxcode@gmail.com"}],"bin":{"coffeetalk-server":"./coffeetalk-server"},"main":"./CoffeeTalk.coffee","repository":{"type":"git","url":"git://github.com/shaunxcode/coffeetalk.git"},"keywords":["coffeescript","smalltalk","IDE"],"dependencies":{"express":"*","wrench":"*","coffee-script":"*","socket.io":"*","optimist":"*"},"license":"MIT","_npmUser":{"name":"shaunxcode","email":"shaunxcode@gmail.com"},"_id":"coffeetalk@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.22","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"2534e2f7746e3c7b7246c7c0fa5f911843f298da","tarball":"http://registry.npmjs.org/coffeetalk/-/coffeetalk-0.1.0.tgz"},"maintainers":[{"name":"shaunxcode","email":"shaunxcode@gmail.com"}]}},"readme":"#coffeetalk\nCoffeetalk is a smalltalk browser/ide for coffeescript. It has long been my opinion that the greatest strength of smalltalk is not the syntax but rather the development environment. Coffeescript has gone a long way towards exposing the power of javascripts object model but I still find myself with an itch for a more robust way to browse, create and search through my code base. Coffeetalk is my answer. Whilst I love smalltalk I find it difficult to convince other developers to make the jump, I am hoping this can be a gateway or at the least a stopgap. The only crucial missing functionality (well beyond keyword messages, blocks etc.) is \"doesNotUnderstand\". However it would be possible to implement via a forked version of coffeescript which passes all method calls through a MOPApply dispatcher (this could also facilitate TCO, but I digress). My gut feeling though is that there are Other Ways of accomplishing what doesNotUnderstand would be used for w/o incurring the runtime penalty. \n\n##what is it?\ninitially the standard 3 panel browser (package, class, slot) with an editor based (initially) upon code mirror. \n\n##terminology\n###package: \nThis is an arbitrary grouping of classes. Most likely this means your application or library. \n###namespace:\nNot required unless you need things like Backbone.View or MyApp.Views.SomeView, which you probably do. \n###class:\nGroup of slots which can extend a parent class to inherit said parents slots.\n###protocol:\nA grouping of slots within a class, nice for organizing your classes in a manner beyond \n###slot:\nA slot can either be a method or a variable. There are both instance and class slots. \n\n##how?\nStoring classes as json files which have a directory of slots (defined by a json description and coffee file per slot). The advantages to this beyond facilitating coffeetalk browser are that you get per-slot revision history out of the box regardless of SCM as well as flat files editable by what ever editor so you are not locked into the coffeetalk interface (e.g. you can use vim to edit a slot, upon save the server will update any listening clients via socket.io). Currently the persistence layer is utilizing socket.io and flat files but it is architected in such a way that storage in other manners is viable (maybe in a database? couchdb?). \n\n##whats done (will be done at 0.1)?\n###REPL\ndefine and manage instances of objects, nice for rapid development/experimentation. \n###browser\nnavigating through packages, classes and slots is fully functional as is creation of new classes and slots. You can group classes by parent, slots by protocol, and show inherited slots.\n###slot editor\ncompiles the slot on keystroke so you can immediately see the output - basically a nice way of verifying that your coffee is doing what you expect immediately. Any time it successfully compiles it persists the slot so you never lose your work. \n###deploy\ncompiles down to single file containing class definitions. Can either be coffee or the compiled/uglified source. You can export either a single slot, class, package (including any parent classes regardless of package) or entire system. \n###live edit\nedit the codebase of the running app in the browser (or in another browser). \n\n##what else is coming?\n###drag and drop workspace \nw/ mini map and saved workspaces (drag out the slots you want to work on, give the workspace a label, slap some notes on it etc. so next time you have a task to deal with just load the workspace. \n###custom slot editor\ndefine \"type\" of slot and get a custom editor e.g. json editor, string (essentially wraps content in a heredoc, nice for defining templates)\n###integrated testing\ntest classes created as classes/slots are defined - test runner which works in conjunction w/ slot editor so the tests are being run on loop as you edit your slot. Once all green, persists slot.\n###import class file\nimport coffee script class files (not sure how to handle this other than only allowing import of class files which contain only the class definition?)\n###port of backbone, bootstrap, underscore, zepto\nFor the sake of fun it would be nice to port some of the most commonly used libs to coffeetalk - this should actually be relatively trivial - but totally un-necessary as there is no need for a lib to be defined in coffeetalk for it to be leveraged e.g. the browser itself is defined in terms of coffeetalk but extending/utilizing backbone, jquery, socket.io etc.\n###more reflection\nthings like auto completing package/class names when defining/editing a package/class. \n###editing goodness\nautocomplete, clickable text nodes for looking up class definition etc.\n###versioning integration\nhooks to allow for branching/versioning with click of button - nice for experimenting and then being able to easily jump back to a different version of a package/class/slot. This would be the yang to the yin of the autosave agenda.\n###brett victor style tangible testing\nset inputs, see line by line what the outcome of conditionals are, what state of variables are etc.\n","maintainers":[{"name":"shaunxcode","email":"shaunxcode@gmail.com"}],"time":{"modified":"2012-06-14T06:34:58.209Z","created":"2012-06-14T06:34:55.884Z","0.1.0":"2012-06-14T06:34:58.209Z"},"author":{"name":"shaunxcode"},"repository":{"type":"git","url":"git://github.com/shaunxcode/coffeetalk.git"},"_id":"coffeetalk","_rev":"1-533f7a72906ba91d1b76eecfeb2163b2"}ÿdocument-storeÿcman—{"id":"cman","rev":"1-23c543d203178c07bca39b1af9b21c9d","rev_tree":[{"pos":1,"ids":["23c543d203178c07bca39b1af9b21c9d",{"status":"available"},[]]}],"rev_map":{"1-23c543d203178c07bca39b1af9b21c9d":3834},"winningRev":"1-23c543d203178c07bca39b1af9b21c9d","deleted":false,"seq":3834}ÿby-sequenceÿ0000000000003834ò {"name":"cman","description":"Component framework and manager","dist-tags":{"latest":"0.0.0-spec-0"},"versions":{"0.0.0-spec-0":{"name":"cman","version":"0.0.0-spec-0","description":"Component framework and manager","main":"lib/index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/langpavel/node-component.git"},"keywords":["component","framework","connect","express","manager"],"dependencies":{},"devDependencies":{"nodeunit":"*"},"author":{"name":"Pavel Lang"},"license":"BSD","readme":"node-component\n==============\n\nComponent framework for node.js","_id":"cman@0.0.0-spec-0","dist":{"shasum":"acbfe0749ac05919e489dc96a9cf5a9e62a97114","tarball":"http://registry.npmjs.org/cman/-/cman-0.0.0-spec-0.tgz"},"maintainers":[{"name":"langpavel","email":"langpavel@phpskelet.org"}]}},"readme":"node-component\n==============\n\nComponent framework for node.js","maintainers":[{"name":"langpavel","email":"langpavel@phpskelet.org"}],"time":{"modified":"2012-08-03T11:40:46.830Z","created":"2012-08-03T11:40:44.654Z","0.0.0-spec-0":"2012-08-03T11:40:46.830Z"},"author":{"name":"Pavel Lang"},"repository":{"type":"git","url":"git://github.com/langpavel/node-component.git"},"_id":"cman","_rev":"1-23c543d203178c07bca39b1af9b21c9d"}ÿdocument-storeÿcloudqw-passŸ{"id":"cloudqw-pass","rev":"1-50fbbe3da08655575ce22ab4c573a2f3","rev_tree":[{"pos":1,"ids":["50fbbe3da08655575ce22ab4c573a2f3",{"status":"available"},[]]}],"rev_map":{"1-50fbbe3da08655575ce22ab4c573a2f3":3833},"winningRev":"1-50fbbe3da08655575ce22ab4c573a2f3","deleted":false,"seq":3833}ÿby-sequenceÿ0000000000003833î#{"name":"cloudqw-pass","description":"A Generic CloudQ worker that receives a request and passes it to another api.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"cloudqw-pass","version":"0.0.1","description":"A Generic CloudQ worker that receives a request and passes it to another api.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"cloudq-worker":"0.0.1","request":"~2.10.0","nconf":"~0.6.4"},"devDependencies":{},"repository":{"type":"git","url":"git://github.com/twilson63/cloudqw-pass.git"},"keywords":["cloudq","worker"],"readme":"# cloudqw-pass\n\nPass is a Cloudq worker that passes the job from the queue to a specified url performing a post.\n\n# install\n\n``` sh\nnpm install cloudqw-pass\n```\n\n# use\n\n``` javascript\nvar pass = require('cloudqw-pass'),\nconfig = {\n protocol: 'http',\n host: 'localhost:3000',\n pathname: '/foo',\n interval: 2000\n}\npass(config, 'http://foo.com/api/resource', function(err, res){\n console.log('posted job to ' + /resource);\n});\n```\n","_id":"cloudqw-pass@0.0.1","dist":{"shasum":"8ead8858d84e09ef59c27f2eefc1f499f95662e6","tarball":"http://registry.npmjs.org/cloudqw-pass/-/cloudqw-pass-0.0.1.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.2":{"name":"cloudqw-pass","version":"0.0.2","description":"A Generic CloudQ worker that receives a request and passes it to another api.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"cloudq-worker":"0.0.1","request":"~2.10.0","nconf":"~0.6.4"},"devDependencies":{},"repository":{"type":"git","url":"git://github.com/twilson63/cloudqw-pass.git"},"keywords":["cloudq","worker"],"readme":"# cloudqw-pass\n\nPass is a Cloudq worker that passes the job from the queue to a specified url performing a post.\n\n# install\n\n``` sh\nnpm install cloudqw-pass\n```\n\n# use\n\n``` javascript\nvar pass = require('cloudqw-pass'),\nconfig = {\n protocol: 'http',\n host: 'localhost:3000',\n pathname: '/foo',\n interval: 2000\n}\npass(config, 'http://foo.com/api/resource', function(err, res){\n console.log('posted job to ' + /resource);\n});\n```\n","_id":"cloudqw-pass@0.0.2","dist":{"shasum":"4da625f1b70ae716795ea220714eb37dc1056fe1","tarball":"http://registry.npmjs.org/cloudqw-pass/-/cloudqw-pass-0.0.2.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.3":{"name":"cloudqw-pass","version":"0.0.3","description":"A Generic CloudQ worker that receives a request and passes it to another api.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"cloudq-worker":"*","request":"~2.10.0","nconf":"~0.6.4"},"devDependencies":{},"repository":{"type":"git","url":"git://github.com/twilson63/cloudqw-pass.git"},"keywords":["cloudq","worker"],"readme":"# cloudqw-pass\n\nPass is a Cloudq worker that passes the job from the queue to a specified url performing a post.\n\n# install\n\n``` sh\nnpm install cloudqw-pass\n```\n\n# use\n\n``` javascript\nvar pass = require('cloudqw-pass'),\nconfig = {\n protocol: 'http',\n host: 'localhost:3000',\n pathname: '/foo',\n interval: 2000\n}\npass(config, 'http://foo.com/api/resource', function(err, res){\n console.log('posted job to ' + /resource);\n});\n```\n","_id":"cloudqw-pass@0.0.3","dist":{"shasum":"3216c8f4c536a5ac5e2b3c70e18f6241ab93414a","tarball":"http://registry.npmjs.org/cloudqw-pass/-/cloudqw-pass-0.0.3.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]}},"readme":"# cloudqw-pass\n\nPass is a Cloudq worker that passes the job from the queue to a specified url performing a post.\n\n# install\n\n``` sh\nnpm install cloudqw-pass\n```\n\n# use\n\n``` javascript\nvar pass = require('cloudqw-pass'),\nconfig = {\n protocol: 'http',\n host: 'localhost:3000',\n pathname: '/foo',\n interval: 2000\n}\npass(config, 'http://foo.com/api/resource', function(err, res){\n console.log('posted job to ' + /resource);\n});\n```\n","maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}],"time":{"modified":"2012-08-08T20:23:58.281Z","created":"2012-08-08T15:18:05.623Z","0.0.1":"2012-08-08T15:18:06.672Z","0.0.2":"2012-08-08T20:12:23.585Z","0.0.3":"2012-08-08T20:23:58.281Z"},"author":{"name":"Tom Wilson"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudqw-pass.git"},"_id":"cloudqw-pass","_rev":"1-50fbbe3da08655575ce22ab4c573a2f3"}ÿdocument-storeÿcloudq-worker {"id":"cloudq-worker","rev":"1-df1f79b3ea5f7473140354efd2ef363f","rev_tree":[{"pos":1,"ids":["df1f79b3ea5f7473140354efd2ef363f",{"status":"available"},[]]}],"rev_map":{"1-df1f79b3ea5f7473140354efd2ef363f":3832},"winningRev":"1-df1f79b3ea5f7473140354efd2ef363f","deleted":false,"seq":3832}ÿby-sequenceÿ0000000000003832ßM{"name":"cloudq-worker","description":"Base Worker Module for Cloudq","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"cloudq-worker","version":"0.0.1","description":"Base Worker Module for Cloudq","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"underscore":"~1.3.3","request":"~2.10.0"},"devDependencies":{"nock":"*"},"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set the job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","_id":"cloudq-worker@0.0.1","dist":{"shasum":"14336dcd6dd10afb3bf0a6208063b5eb0226242a","tarball":"http://registry.npmjs.org/cloudq-worker/-/cloudq-worker-0.0.1.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.2":{"name":"cloudq-worker","version":"0.0.2","description":"Base Worker Module for Cloudq","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"underscore":"~1.3.3","request":"~2.10.0"},"devDependencies":{"nock":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudq-worker.git"},"keywords":["cloudq","worker","base"],"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set t™ýœÿùhe job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","_id":"cloudq-worker@0.0.2","dist":{"shasum":"ed87054af9515280cb2ba95e5cdfa23d778598f4","tarball":"http://registry.npmjs.org/cloudq-worker/-/cloudq-worker-0.0.2.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.3":{"name":"cloudq-worker","version":"0.0.3","description":"Base Worker Module for Cloudq","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"underscore":"~1.3.3","request":"~2.10.0"},"devDependencies":{"nock":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudq-worker.git"},"keywords":["cloudq","worker","base"],"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set the job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","_id":"cloudq-worker@0.0.3","dist":{"shasum":"ac0f015495888187471debdc9652ff17aee22bb5","tarball":"http://registry.npmjs.org/cloudq-worker/-/cloudq-worker-0.0.3.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.4":{"name":"cloudq-worker","version":"0.0.4","description":"Base Worker Module for Cloudq","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"underscore":"~1.3.3","request":"~2.10.0"},"devDependencies":{"nock":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudq-worker.git"},"keywords":["cloudq","worker","base"],"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set the job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","_id":"cloudq-worker@0.0.4","dist":{"shasum":"1ca3022a4e848dc99c2d7331122950405f4f9682","tarball":"http://registry.npmjs.org/cloudq-worker/-/cloudq-worker-0.0.4.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]},"0.0.5":{"name":"cloudq-worker","version":"0.0.5","description":"Base Worker Module for Cloudq","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Tom Wilson"},"license":"MIT","dependencies":{"underscore":"~1.3.3","request":"~2.10.0"},"devDependencies":{"nock":"*"},"directories":{"test":"test"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudq-worker.git"},"keywords":["cloudq","worker","base"],"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set the job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","_id":"cloudq-worker@0.0.5","dist":{"shasum":"8d6b72cb7bdacf4bed6692bd6c28ef1904be4681","tarball":"http://registry.npmjs.org/cloudq-worker/-/cloudq-worker-0.0.5.tgz"},"maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}]}},"readme":"# cloudq-worker\n\nA base worker class for cloudq\n\n# Install\n\n``` sh\nnpm install cloudq-worker\n```\n\n# Use\n\n``` sh\nvar Worker = require('cloudq-worker').Worker;\n\nvar worker = new Worker(config, function(err, doc, done){\n // TODO: Do Stuff...\n // When complete call done(doc.id, callback);\n done(doc.id, function(err, res) {\n // Check err for success\n });\n});\n\n\n```\n\n# Config\n\nThe config should match the nodejs `urlObj` dsl with one additional key, `interval` if this is not set then the default will 1sec.\n\n# Callback \n\narguments:\n\nerr - null if not error, otherwise the error of the request\ndoc - is the document containing the cloudq job\ndone - is the function to call when you are finished processing the job, it will set the job to completed on cloudq. You must pass the doc.id and MAY pass a callback function to capture the result of the request to mark the job complete.\n\n# LICENSE\n\nMIT\n\n# Contributing\n\nAll pull requests are welcome","maintainers":[{"name":"twilson63","email":"tom@jackhq.com"}],"time":{"modified":"2012-08-08T20:31:47.820Z","created":"2012-08-08T14:21:16.599Z","0.0.1":"2012-08-08T14:21:17.514Z","0.0.2":"2012-08-08T15:17:10.255Z","0.0.3":"2012-08-08T20:20:39.189Z","0.0.4":"2012-08-08T20:26:44.143Z","0.0.5":"2012-08-08T20:31:47.820Z"},"author":{"name":"Tom Wilson"},"repository":{"type":"git","url":"git://github.com/twilson63/cloudq-worker.git"},"_id":"cloudq-worker","_rev":"1-df1f79b3ea5f7473140354efd2ef363f"}ÿdocument-storeÿclinit™{"id":"clinit","rev":"1-807775a871f0ea2635836732d7d0e5f8","rev_tree":[{"pos":1,"ids":["807775a871f0ea2635836732d7d0e5f8",{"status":"available"},[]]}],"rev_map":{"1-807775a871f0ea2635836732d7d0e5f8":3831},"winningRev":"1-807775a871f0ea2635836732d7d0e5f8","deleted":false,"seq":3831}ÿby-sequenceÿ0000000000003831À{"name":"clinit","description":"Cli Init Control","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"name":"clinit","description":"Cli Init Control","version":"0.0.1","preferGlobal":true,"main":"./lib/clinit.js","bin":{"clinit":"./bin/clinit"},"dependencies":{"pidfile":"0.0.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tellnes","email":"christian@tellnes.no"},"_id":"clinit@0.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"bbd82ad11595bf667d44a6fcbabfc91b54add802","tarball":"http://registry.npmjs.org/clinit/-/clinit-0.0.1.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]},"0.0.2":{"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"name":"clinit","description":"Cli Init Control","version":"0.0.2","preferGlobal":true,"main":"./lib/clinit.js","bin":{"clinit":"./bin/clinit"},"dependencies":{"pidfile":"0.0.1"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"tellnes","email":"christian@tellnes.no"},"_id":"clinit@0.0.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fd6d055b51568351f64ff7880a4b93cc1305240c","tarball":"http://registry.npmjs.org/clinit/-/clinit-0.0.2.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]}},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}],"time":{"modified":"2012-05-14T06:21:36.964Z","created":"2012-05-14T03:39:35.894Z","0.0.1":"2012-05-14T03:39:37.351Z","0.0.2":"2012-05-14T06:21:36.964Z"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"_id":"clinit","_rev":"1-807775a871f0ea2635836732d7d0e5f8"}ÿdocument-storeÿcjmodule›{"id":"cjmodule","rev":"1-ff44d4c2eefd4fa1056d1bc96f825dde","rev_tree":[{"pos":1,"ids":["ff44d4c2eefd4fa1056d1bc96f825dde",{"status":"available"},[]]}],"rev_map":{"1-ff44d4c2eefd4fa1056d1bc96f825dde":3830},"winningRev":"1-ff44d4c2eefd4fa1056d1bc96f825dde","deleted":false,"seq":3830}ÿby-sequenceÿ0000000000003830¢{"name":"cjmodule","description":"A module for testing.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":{"name":"CJ","email":"cchengzii@gmail.com"},"name":"cjmodule","description":"A module for testing.","version":"0.0.1","repository":{"url":""},"engines":{"node":"~0.6.11"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"_npmUser":{"name":"cj","email":"cchengzii@gmail.com"},"_id":"cjmodule@0.0.1","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"94af6b9b74e7240ca95577024404386a67d1ceab","tarball":"http://registry.npmjs.org/cjmodule/-/cjmodule-0.0.1.tgz"},"readme":"","maintainers":[{"name":"cj","email":"cchengzii@gmail.com"}]}},"readme":"","maintainers":[{"name":"cj","email":"cchengzii@gmail.com"}],"time":{"modified":"2012-07-18T10:03:45.209Z","created":"2012-07-18T10:03:40.095Z","0.0.1":"2012-07-18T10:03:45.209Z"},"author":{"name":"CJ","email":"cchengzii@gmail.com"},"repository":{"url":""},"_id":"cjmodule","_rev":"1-ff44d4c2eefd4fa1056d1bc96f825dde"}ÿdocument-storeÿchild-streamŸ{"id":"child-stream","rev":"1-8ee749a37e3ad3e3f5d453808fc6277d","rev_tree":[{"pos":1,"ids":["8ee749a37e3ad3e3f5d453808fc6277d",{"status":"available"},[]]}],"rev_map":{"1-8ee749a37e3ad3e3f5d453808fc6277d":3829},"winningRev":"1-8ee749a37e3ad3e3f5d453808fc6277d","deleted":false,"seq":3829}ÿby-sequenceÿ0000000000003829½{"name":"child-stream","description":"Child process read stream","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"child-stream","version":"0.0.0","description":"Child process read stream","keywords":["child_process","stream","readstream"],"author":{"name":"Daniel D. Shaw","email":"dshaw@dshaw.com","url":"http://dshaw.com"},"repository":{"type":"git","url":"git://github.com/dshaw/child-stream.git"},"bugs":{"url":"http://github.com/dshaw/child-stream/issues"},"license":"MIT","main":"child-stream","scripts":{"test":"tap ./tests"},"dependencies":{},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"dshaw","email":"dshaw@dshaw.com"},"_id":"child-stream@0.0.0","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10","_defaultsLoaded":true,"dist":{"shasum":"12ef318a18ba1f3f7b941625a63c5a3c68b1e8c7","tarball":"http://registry.npmjs.org/child-stream/-/child-stream-0.0.0.tgz"},"maintainers":[{"name":"dshaw","email":"dshaw@dshaw.com"}]},"0.0.1":{"name":"child-stream","version":"0.0.1","description":"Child process read stream","keywords":["child_process","stream","readstream"],"author":{"name":"Daniel D. Shaw","email":"dshaw@dshaw.com","url":"http://dshaw.com"},"repository":{"type":"git","url":"git://github.com/dshaw/child-stream.git"},"bugs":{"url":"http://github.com/dshaw/child-stream/issues"},"license":"MIT","main":"child-stream","scripts":{"test":"node ./test/child-stream.test.js"},"dependencies":{},"devDependencies":{"tap":"~0.2.5"},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"dshaw","email":"dshaw@dshaw.com"},"_id":"child-stream@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10","_defaultsLoaded":true,"dist":{"shasum":"0e98c29704ad5263db92fdfd74ca7a706c103027","tarball":"http://registry.npmjs.org/child-stream/-/child-stream-0.0.1.tgz"},"maintainers":[{"name":"dshaw","email":"dshaw@dshaw.com"}]}},"readme":"# Child Stream\n\nChild process read stream\n\n## Install\n\n npm install child-stream","maintainers":[{"name":"dshaw","email":"dshaw@dshaw.com"}],"time":{"modified":"2012-06-14T10:23:16.112Z","created":"2012-06-14T10:11:00.055Z","0.0.0":"2012-06-14T10:11:01.630Z","0.0.1":"2012-06-14T10:23:16.112Z"},"author":{"name":"Daniel D. Shaw","email":"dshaw@dshaw.com","url":"http://dshaw.com"},"repository":{"type":"git","url":"git://github.com/dshaw/child-stream.git"},"_id":"child-stream","_rev":"1-8ee749a37e3ad3e3f5d453808fc6277d"}ÿdocument-storeÿcg-coreš{"id":"cg-core","rev":"1-3c604a95f39a88bf0ff7e9812beb19b4","rev_tree":[{"pos":1,"ids":["3c604a95f39a88bf0ff7e9812beb19b4",{"status":"available"},[]]}],"rev_map":{"1-3c604a95f39a88bf0ff7e9812beb19b4":3828},"winningRev":"1-3c604a95f39a88bf0ff7e9812beb19b4","deleted":false,"seq":3828}ÿby-sequenceÿ0000000000003828«'{"name":"cg-core","description":"Start out your node module when using Code Gathering tools","dist-tags":{"latest":"2012.6.16"},"versions":{"2012.6.13":{"name":"cg-core","version":"2012.6.13","description":"Start out your node module when using Code Gathering tools","homepage":"https://github.com/codegathering/tools/cg-core","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{},"main":"output/cg-core.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["utility","utilities","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-core@2012.6.13","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b6558031fb450fcf0810298115215c5acce787f5","tarball":"http://registry.npmjs.org/cg-core/-/cg-core-2012.6.13.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.14":{"name":"cg-core","version":"2012.6.14","description":"Start out your node module when using Code Gathering tools","homepage":"https://github.com/codegathering/tools/cg-core","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{},"main":"output/cg-core.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["utility","utilities","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-core@2012.6.14","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"900e9f419e2158232d6450f8df432ee1b1294b0f","tarball":"http://registry.npmjs.org/cg-core/-/cg-core-2012.6.14.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.15":{"name":"cg-core","version":"2012.6.15","description":"Start out your node module when using Code Gathering tools","homepage":"https://github.com/codegathering/tools/cg-core","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"bin":{"cg-core":"bin/cg"},"scripts":{},"main":"output/cg-core.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["utility","utilities","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-core@2012.6.15","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"13175775f296f3ff86f6cb5272c02abf1480d011","tarball":"http://registry.npmjs.org/cg-core/-/cg-core-2012.6.15.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.16":{"name":"cg-core","version":"2012.6.16","description":"Start out your node module when using Code Gathering tools","homepage":"https://github.com/codegathering/tools/cg-core","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"bin":{"cg":"bin/cg"},"scripts":{},"main":"output/cg-core.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["utility","utilities","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-core@2012.6.16","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"da1f86509e007acf9bf80f6638be551550d6695a","tarball":"http://registry.npmjs.org/cg-core/-/cg-core-2012.6.16.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]}},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}],"time":{"modified":"2012-06-13T18:54:45.817Z","created":"2012-06-13T18:38:11.038Z","2012.6.13":"2012-06-13T18:38:13.054Z","2012.6.14":"2012-06-13T18:48:52.524Z","2012.6.15":"2012-06-13T18:52:02.055Z","2012.6.16":"2012-06-13T18:54:45.817Z"},"author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"_id":"cg-core","_rev":"1-3c604a95f39a88bf0ff7e9812beb19b4"}ÿdocument-storeÿcg-compile{"id":"cg-compile","rev":"1-85346152b45e942c8fda6c1f3f6aa4c8","rev_tree":[{"pos":1,"ids":["85346152b45e942c8fda6c1f3f6aa4c8",{"status":"available"},[]]}],"rev_map":{"1-85346152b45e942c8fda6c1f3f6aa4c8":3827},"winningRev":"1-85346152b45e942c8fda6c1f3f6aa4c8","deleted":false,"seq":3827}ÿby-sequenceÿ0000000000003827ý2{"name":"cg-compile","description":"Get your source merged into one file","dist-tags":{"latest":"2012.6.16"},"versions":{"2012.6.10":{"name":"cg-compile","version":"2012.6.10","description":"Get your source merged into one file","homepage":"https://github.com/codegathering/tools/cg-compile","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{"test":"make test"},"main":"./cg-compile.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["compile","compiler","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-compile@2012.6.10","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e962654415257dc1c952a7b7b19fa4cc62532e70","tarball":"http://registry.npmjs.org/cg-compile/-/cg-compile-2012.6.10.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.13":{"name":"cg-compile","version":"2012.6.13","description":"Get your source merged into one file","homepage":"https://github.com/codegathering/tools/tree/master/cg-compile","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"bin":{"cg-compile":"bin/cg-compile"},"scripts":{"test":"mocha output/cg-compile.test.js","test-debug":"mocha output/cg-compile.test.debug.js"},"main":"output/cg-compile.js","preferGlobal":true,"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["compile","compiler","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-compile@2012.6.13","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f0912c3ed96fda090b39e9cb1fef30aa50937e86","tarball":"http://registry.npmjs.org/cg-compile/-/cg-compile-2012.6.13.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.14":{"name":"cg-compile","version":"2012.6.14","description":"Get your source merged into one file","homepage":"https://github.com/codegathering/tools/tree/master/cg-compile","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"bin":{"cg-compile":"bin/cg-compile"},"scripts":{"test":"mocha output/cg-compile.test.js","test-debug":"mocha output/cg-compile.test.debug.js"},"main":"output/cg-compile.js","preferGlobal":true,"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["compile","compiler","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-compile@2012.6.14","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"9acacd06ab93437cd204924c30d69ebeff5e2345","tarball":"http://registry.npmjs.org/cg-compile/-/cg-compile-2012.6.14.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.15":{"name":"cg-compile","version":"2012.6.15","description":"Get your source merged into one file","homepage":"https://github.com/codegathering/tools/tree/master/cg-compile","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{"test":"mocha output/cg-compile.test.js","test-debug":"mocha output/cg-compile.test.debug.js"},"main":"output/cg-compile.js","repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["compile","compiler","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-compile@2012.6.15","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"e52f5a0fe95e38d0aa203b5b9725dba9a9bedd5b","tarball":"http://registry.npmjs.org/cg-compile/-/cg-compile-2012.6.15.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]},"2012.6.16":{"name":"cg-compile","version":"2012.6.16","description":"Get your source merged into one file","homepage":"https://github.com/codegathering/tools/tree/master/cg-compile","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{"test":"mocha output/cg-compile.test.js","test-debug":"mocha output/cg-compile.test.debug.js"},"main":"output/cg-compile.js","repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["compile","compiler","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-compile@2012.6.16","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"f4fc3a0938413a1200486ae010d013e7654f3914","tarball":"http://registry.npmjs.org/cg-compile/-/cg-compile-2012.6.16.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]}},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}],"time":{"modified":"2012-06-13T20:50:25.642Z","created":"2012-06-10T15:31:02.333Z","2012.6.10":"2012-06-10T15:31:05.200Z","2012.6.13":"2012-06-13T18:23:05.994Z","2012.6.14":"2012-06-13T18:25:45.776Z","2012.6.15":"2012-06-13T20:47:44.114Z","2012.6.16":"2012-06-13T20:50:25.642Z"},"author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"_id":"cg-compile","_rev":"1-85346152b45e942c8fda6c1f3f6aa4c8"}ÿdocument-storeÿcg-cmd™{"id":"cg-cmd","rev":"1-2fc9135566d453fc71d128dff7beba45","rev_tree":[{"pos":1,"ids":["2fc9135566d453fc71d128dff7beba45",{"status":"available"},[]]}],"rev_map":{"1-2fc9135566d453fc71d128dff7beba45":3826},"winningRev":"1-2fc9135566d453fc71d128dff7beba45","deleted":false,"seq":3826}ÿby-sequenceÿ0000000000003826£ {"name":"cg-cmd","description":"Make it easy for you to develop node modules by extending the Command, Options class, etc..","dist-tags":{"latest":"2012.6.13"},"versions":{"2012.6.13":{"name":"cg-cmd","version":"2012.6.13","description":"Make it easy for you to develop node modules by extending the Command, Options class, etc..","homepage":"https://github.com/codegathering/tools/cg-cmd","author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"licenses":[{"type":"Open Software License version 3.0","url":"http://www.opensource.org/licenses/osl-3.0.php"}],"scripts":{},"main":"output/cg-cmd.js","preferGlobal":true,"optionalDependencies":{},"engines":{"node":"*"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"keywords":["command","code gathering"],"_npmUser":{"name":"r.varonos","email":"r.varonos@gmail.com"},"_id":"cg-cmd@2012.6.13","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"abbdbdc3d00264558494f21a64e961053ea3f72b","tarball":"http://registry.npmjs.org/cg-cmd/-/cg-cmd-2012.6.13.tgz"},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}]}},"readme":"","maintainers":[{"name":"r.varonos","email":"r.varonos@gmail.com"}],"time":{"modified":"2012-06-13T18:36:38.151Z","created":"2012-06-13T18:36:35.871Z","2012.6.13":"2012-06-13T18:36:38.151Z"},"author":{"name":"Raphael Varonos","email":"r.varonos@gmail.com","url":"http://github.com/rvaronos"},"repository":{"type":"git","url":"git://github.com/codegathering/tools.git"},"_id":"cg-cmd","_rev":"1-2fc9135566d453fc71d128dff7beba45"}ÿdocument-storeÿcc.ake™{"id":"cc.ake","rev":"1-68f7524cc1a67608bc77772cad02f1f8","rev_tree":[{"pos":1,"ids":["68f7524cc1a67608bc77772cad02f1f8",{"status":"available"},[]]}],"rev_map":{"1-68f7524cc1a67608bc77772cad02f1f8":3825},"winningRev":"1-68f7524cc1a67608bc77772cad02f1f8","deleted":false,"seq":3825}ÿby-sequenceÿ0000000000003825Ê@{"name":"cc.ake","description":"Utility functions for Cakefiles.","dist-tags":{"latest":"0.6.1"},"versions":{"0.1.0":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.1.0","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","_npmUser":{"name":"jpike","email":"npm@chilon.net"},"_id":"cc.ake@0.1.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"c5ab0cf49a1d7bd87e4d4675cc4e2ae47aa49fec","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.1.0.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}],"directories":{}},"0.2.0":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.2.0","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","_npmUser":{"name":"jpike","email":"npm@chilon.net"},"_id":"cc.ake@0.2.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"85aee29a0eecd50adaafde83d241ce62e1a7d4f9","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.2.0.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}],"directories":{}},"0.2.1":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.2.1","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","_npmUser":{"name":"jpike","email":"npm@chilon.net"},"_id":"cc.ake@0.2.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"0dea6f288d4725c91743aff1195e53cae7fc39fa","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.2.1.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}],"directories":{}},"0.4.0":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.4.0","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","_npmUser":{"name":"jpike","email":"npm@chilon.net"},"_id":"cc.ake@0.4.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"77f5ba390d42adeb457e7110a7d30e5b07509732","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.4.0.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}]},"0.5.0":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.5.0","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","readme":"# cc.ake\n\n## Installation\n```\nnpm install -g cc.ake\n```\n\n## Usage\n\n```coffeescript\nake = require 'cc.ake'\n\n# add node_modules binaries to head of path\ndo ake.nodeModulePath\n\n# ensure every argument passes. strings are treated as unix commands and\n# functions are run normally. Either a bad shell exit status or an exception\n# thrown from a function will cause the process to exit.\nake.assert 'rm -f bad',\n ake.invoke 'othertask' # invoke another task\n 'cp -n something somewhere' # if exit status is bad, terminate process\n 'echo yo'\n ->\n do stuff\n ->\n # this will terminate the coffeescript process\n throw \"an error\"\n\nake.watch 'testdir',\n /.coffee$/, (fname) ->\n console.log 'changed', fname\n exec 'coffee -c testdir'\n /.js$/, (fname) ->\n console.log 'js updated', fname\n```\n","_id":"cc.ake@0.5.0","dist":{"shasum":"2f9aa77e4f5f80a16b6b4c55720c8f9ec50d1122","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.5.0.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}]},"0.6.0":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.6.0","dependencies":{"coffe×çÁÅùe-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","readme":"# cc.ake\n\n## Installation\n```\nnpm install -g cc.ake\n```\n\n## Usage\n\n```coffeescript\nake = require 'cc.ake'\n\n# add node_modules binaries to head of path\ndo ake.nodeModulePath\n\n# ensure every argument passes. strings are treated as unix commands and\n# functions are run normally. Either a bad shell exit status or an exception\n# thrown from a function will cause the process to exit.\nake.assert 'rm -f bad',\n ake.invoke 'othertask' # invoke another task\n 'cp -n something somewhere' # if exit status is bad, terminate process\n 'echo yo'\n ->\n do stuff\n ->\n # this will terminate the coffeescript process\n throw \"an error\"\n\nake.watch 'testdir',\n /.coffee$/, (fname) ->\n console.log 'changed', fname\n exec 'coffee -c testdir'\n /.js$/, (fname) ->\n console.log 'js updated', fname\n```\n","_id":"cc.ake@0.6.0","dist":{"shasum":"9fdf131c6187aa674d9bc1c42dd6e52fdb96c7c7","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.6.0.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}]},"0.6.1":{"name":"cc.ake","description":"Utility functions for Cakefiles.","author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"version":"0.6.1","dependencies":{"coffee-script":"1.3.3"},"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.0"},"main":"./lib/cc/ake","readme":"# cc.ake\n\n## Installation\n```\nnpm install -g cc.ake\n```\n\n## Usage\n\n```coffeescript\nake = require 'cc.ake'\n\n# add node_modules binaries to head of path\ndo ake.nodeModulePath\n\n# ensure every argument passes. strings are treated as unix commands and\n# functions are run normally. Either a bad shell exit status or an exception\n# thrown from a function will cause the process to exit.\nake.assert 'rm -f bad',\n ake.invoke 'othertask' # invoke another task\n 'cp -n something somewhere' # if exit status is bad, terminate process\n 'echo yo'\n ->\n do stuff\n ->\n # this will terminate the coffeescript process\n throw \"an error\"\n\nake.watch 'testdir',\n /.coffee$/, (fname) ->\n console.log 'changed', fname\n exec 'coffee -c testdir'\n /.js$/, (fname) ->\n console.log 'js updated', fname\n```\n","_id":"cc.ake@0.6.1","dist":{"shasum":"ecdc5e09602fad4e9c30829db288ef1a64c396ee","tarball":"http://registry.npmjs.org/cc.ake/-/cc.ake-0.6.1.tgz"},"maintainers":[{"name":"jpike","email":"npm@chilon.net"}]}},"readme":"# cc.ake\n\n## Installation\n```\nnpm install -g cc.ake\n```\n\n## Usage\n\n```coffeescript\nake = require 'cc.ake'\n\n# add node_modules binaries to head of path\ndo ake.nodeModulePath\n\n# ensure every argument passes. strings are treated as unix commands and\n# functions are run normally. Each type signals an error differently\n# and any error causes the coffeescript process to exit.\nake.assertAll 'rm -f bad',\n 'cp -n something somewhere' # if exit status is bad, terminate process\n 'echo yo'\n ->\n do stuff\n return true # return anything other than string to signal success\n ->\n # this will terminate the coffeescript process\n return \"an error string\"\n```\n","maintainers":[{"name":"jpike","email":"npm@chilon.net"}],"time":{"modified":"2012-07-12T18:39:24.386Z","created":"2012-06-21T18:29:02.727Z","0.1.0":"2012-06-21T18:29:05.578Z","0.2.0":"2012-06-21T20:24:30.014Z","0.2.1":"2012-06-21T20:40:35.772Z","0.3.0":"2012-06-26T02:34:00.753Z","0.4.0":"2012-06-26T18:23:36.447Z","0.5.0":"2012-06-27T16:53:42.427Z","0.6.0":"2012-07-06T23:36:41.347Z","0.6.1":"2012-07-12T18:39:24.386Z"},"author":{"name":"James Pike","email":"npm@chilon.net","url":"http://chilon.net"},"_id":"cc.ake","_rev":"1-68f7524cc1a67608bc77772cad02f1f8"}ÿdocument-storeÿcartegan›{"id":"cartegan","rev":"1-7f2e1775d6a5d8a7c87fc9cdc48a660b","rev_tree":[{"pos":1,"ids":["7f2e1775d6a5d8a7c87fc9cdc48a660b",{"status":"available"},[]]}],"rev_map":{"1-7f2e1775d6a5d8a7c87fc9cdc48a660b":3824},"winningRev":"1-7f2e1775d6a5d8a7c87fc9cdc48a660b","deleted":false,"seq":3824}ÿby-sequenceÿ0000000000003824Óq{"name":"cartegan","description":"Cartegan ===","dist-tags":{"latest":"1.0.3"},"versions":{"0.5.0":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.5.0","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.5.0","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"e6b6fb5e7938782b3b492f7d2ea78fb5c59977aa","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.5.0.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"0.5.1":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.5.1","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.5.1","_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"7ae818e677348472bc6842e62366d816eba6194e","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.5.1.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.0":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.0","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.1","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"37f258eacce150a7952c12041d6a68ace2c048cb","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.0.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.1":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.1","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.2","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d022306e584b4feca486fb07c9812d254fda1c30","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.1.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.2":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.2","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.2","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6f3696b3997e63bd36ee10785e7bccd7e06a1d9f","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.2.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.3":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.3","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.2","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.3","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"5c15d0b42d51ed19f6beb7b8498f6511f8c98e1b","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.3.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.4":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.4","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.3","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.4","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"8ff61cef0fd00a43637dfbe85a9761a22127823f","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.4.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"0.6.5":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"0.6.5","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.3","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@0.6.5","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"925908899abf394f89745bc1525f425d82ca8a5a","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-0.6.5.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.0.0":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"1.0.0","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.3","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@1.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4c61faaf88bea19545f6b38fe4f33acabeacf3a5","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-1.0.0.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.0.1":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"A simple server that caches map tiles","version":"1.0.1","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":"~1.1.3","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"_id":"cartegan@1.0.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"209928fa76af4c88be11e57ed834d61df1a61caf","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-1.0.1.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]},"1.0.3":{"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"name":"cartegan","description":"Cartegan ===","version":"1.0.3","repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"main":"lib/index","scripts":{"test":"node server"},"dependencies":{"lateral":"2.x","tolmey":"0.6","ahr2":"2.x","connect_router":"1.x","steve":"0.5.x","http-json":">= 1.0.1 < 2.0.0","tar-async":">=1.1.3 <1.2.0","fs.extra":"~1.1.3"},"bin":{"cartegan-server":"./bin/cartegan-server.js","cartegan":"./bin/cartegan-cli.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"readme":"Cartegan\n===\n\nIt's what you get when you knit a map.\n\nCartegan is a tool for downloading tiles from popular map services - OpenStreetMap, Google (KeyHole), Yahoo (Nokia OVI), Bing (Virtual Earth), etc.\n\n**LEGAL WARNING**: Cartegan doesn't give you the right to cache, resell, or redistribute the image tiles you download.\nOpenStreetMap does, but other providers may not. Contact your physician before prolonged use.\n\nInstall and Run (with Web GUI)\n===\n\n 0. Install [NodeJS](http://nodejs.org#download)\n\n 1. Install and run Cartegan\n\n npm install -g cartegan\n # cartegan-server \n cartegan-server 7070\n\n 2. Open [Google Chrome](http://google.com/chrome) to \n \n 3. Pick GPS coordinates, a radius, and a scale (zoom)\n\n 4. Download! Tiles will be saved to `./cartegan-tiles` (in the current directory)\n\nNote: In theory this will work on Windows... but it's untested. For best results use an Operating System.\n\nRun without the Web GUI\n===\n\n cartegan \n cartegan 40.3250764 -111.6787044 17 17 500 yahoo\n\nDownloading from a custom source\n===\n\nIf you have your own provider that you would like to use for the commandline tool, edit `strategies.js`\n(likely in `/usr/local/lib/node_modules/cartegan/lib/strategies.js`)\n","_id":"cartegan@1.0.3","dist":{"shasum":"2410f95ce778c8fc2511b61e7348148b88c3e61b","tarball":"http://registry.npmjs.org/cartegan/-/cartegan-1.0.3.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}]}},"readme":"Cartegan\n===\n\nIt's what you get when you knit a map.\n\nCartegan is a tool for downloading tiles from popular map services - OpenStreetMap, Google (KeyHole), Yahoo (Nokia OVI), Bing (Virtual Earth), etc.\n\n**LEGAL WARNING**: Cartegan doesn't give you the right to cache, resell, or redistribute the image tiles you download.\nOpenStreetMap does, but other providers may not. Contact your physician before prolonged use.\n\nInstall and Run (with Web GUI)\n===\n\n 0. Install [NodeJS](http://nodejs.org#download)\n\n 1. Install and run Cartegan\n\n npm install -g cartegan\n # cartegan-server \n cartegan-server 7070 google # defaults to openStreetMap\n\n 2. Open Google Chrome to \n \n 3. You MUST ALLOW location sharing (and it's running locally on your computer anyway)\n\n 4. Pick GPS coordinates, a radius, and a scale\n\n 5. Download! Tiles will be saved to `./cartegan-tiles` (in the current directory)\n\nNote: In theory this will work on Windows... but it's untested. For best results use an Operating System.\n\nRun without the Web GUI\n===\n\n cartegan \n cartegan 40.3250764 -111.6787044 17 17 500 yahoo\n\nDownloading from a custom source\n===\n\n If you want to test one of the other providers\n","maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"time":{"modified":"2012-06-26T17:58:20.741Z","created":"2012-05-11T23:24:28.638Z","0.5.0":"2012-05-11T23:24:29.620Z","0.5.1":"2012-05-11T23:37:25.426Z","0.6.0":"2012-06-11T18:05:11.141Z","0.6.1":"2012-06-11T23:39:47.168Z","0.6.2":"2012-06-12T00:58:41.805Z","0.6.3":"2012-06-12T01:07:55.806Z","0.6.4":"2012-06-12T01:15:58.350Z","0.6.5":"2012-06-13T16:25:31.059Z","1.0.0":"2012-06-13T16:36:49.327Z","1.0.1":"2012-06-13T16:49:31.621Z","1.0.3":"2012-06-26T17:58:20.741Z"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info/"},"repository":{"type":"git","url":"git://github.com/SpotterRF/cartegan.git"},"_id":"cartegan","_rev":"1-7f2e1775d6a5d8a7c87fc9cdc48a660b"}ÿdocument-storeÿcapt—{"id":"capt","rev":"1-48682e4d367be3b5d86f3917a6c76d16","rev_tree":[{"pos":1,"ids":["48682e4d367be3b5d86f3917a6c76d16",{"status":"available"},[]]}],"rev_map":{"1-48682e4d367be3b5d86f3917a6c76d16":3823},"winningRev":"1-48682e4d367be3b5d86f3917a6c76d16","deleted":false,"seq":3823}ÿby-sequenceÿ0000000000003823€Y{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","dist-tags":{"latest":"0.6.0"},"versions":{"0.5.0":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.0","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":">= 1.0.1","less":">=1.0.41","glob":">=2.0.6"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c1e4d2da8c918daef6f19a959942ca26837c10b4","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.0.tgz"}},"0.5.1":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.1","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"4fa681d0eb56dc23f4ad27425e305259481d295d","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.1.tgz"}},"0.5.2":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.2","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"8ba781f0f284d7cb1e8ebf2ee5242e92d5d1c266","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.2.tgz"}},"0.5.3":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.3","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"b4168bbe74e525e8798ae125813b5ea5a632926c","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.3.tgz"}},"0.5.4":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.4","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"cb0218c77226c3c45ea655724e328db77a5a0f75","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.4.tgz"}},"0.5.5":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.5","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3","eco":">=1.0.3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_id":"capt@0.5.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.12","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"187f5801c2f41968e039ed11e773115e02112e47","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.5.tgz"}},"0.5.6":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.5.6","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3","eco":">=1.0.3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_npmUser":{"name":"bnolan","email":"ben@nolanconsul.com"},"_id":"capt@0.5.6","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"34f70970c670bc124973f133e87a3e7f50e61d36","tarball":"http://registry.npmjs.org/capt/-/capt-0.5.6.tgz"},"readme":"# Backbone environment for node.js (capt)\n\n`capt` is a tool to help you quickly create backbone.js applications and maintain a good directory structure and give you build tools to help development.\n\nRequirements\n\n* Glob module\n\nDevelopment build targets:\n\n* localhost using built in server\n* file:// with file watching and recompiling\n\nProduction build targets:\n\n* web\n* html5 w/ offline manifest [planned]\n* nokia webruntime [planned]\n* phonegap [planned]\n* chrome appstore [planned]\n\nOptimizers supported:\n\n* Google Closure (css)\n* YUI (css and js)\n\nLanguages supported:\n\n* Coffeescript\n* Javascript\n* LESS\n\nTesting framework:\n\n* Jasmine\n\nLibraries built in:\n\n* jQuery\n* backbone.js\n* underscore.js\n\n## License\n\n[BSD Licensed](http://creativecommons.org/licenses/BSD/). YUI Compressor and Closure are licenced under their respective licences.\n\n## Author\n\nBen Nolan @bnolan bnolan@gmail.com\n\n\n# Changelog\n\n0.5.4 - Fixed template which said `initailizer` instead of `initialize`","maintainers":[{"name":"bnolan","email":"ben@nolanconsul.com"}]},"0.6.0":{"name":"capt","description":"Command line tool for creating backbone.js applications with coffeescript","version":"0.6.0","keywords":["jst","templates","rest","backbone","jquery","zepto","framework","coffeescript","less","underscore"],"homepage":"http://bnolan.github.com/capt/","author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"licenses":[{"type":"MIT","url":"http://github.com/brunch/brunch/raw/master/LICENSE"}],"directories":{"lib":"./lib"},"main":"./lib/brunch","bin":{"capt":"./bin/capt"},"dependencies":{"coffee-script":"= 1.0.1","less":">=1.0.41","glob":">=2.0.6","jasmine-node":">=1.0.0rc3","eco":">=1.0.3"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"bugs":{"url":"http://github.com/bnolan/capt/issues"},"_npmUser":{"name":"bnolan","email":"ben@nolanconsul.com"},"_id":"capt@0.6.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"4ad9a567cfaeec592339009270e622fc63b79093","tarball":"http://registry.npmjs.org/capt/-/capt-0.6.0.tgz"},"readme":"# Backbone environment for node.js (capt)\n\n`capt` is a tool to help you quickly create backbone.js applications and maintain a good directory structure and give you build tools to help development.\n\nRequirements\n\n* Glob module\n\nDevelopment build targets:\n\n* localhost using built in server\n* file:// with file watching and recompiling\n\nProduction build targets:\n\n* web\n* html5 w/ offline manifest [planned]\n* nokia webruntime [planned]\n* phonegap [planned]\n* chrome appstore [planned]\n\nOptimizers supported:\n\n* Google Closure (css)\n* YUI (css and js)\n\nLanguages supported:\n\n* Coffeescript\n* Javascript\n* LESS\n\nTesting framework:\n\n* Jasmine\n\nLibraries built in:\n\n* jQuery\n* backbone.js\n* underscore.js\n\n## License\n\n[BSD Licensed](http://creativecommons.org/licenses/BSD/). YUI Compressor and Closure are licenced under their respective licences.\n\n## Author\n\nBen Nolan @bnolan bnolan@gmail.com\n\n\n# Changelog\n\n0.5.4 - Fixed template which said `initailizer` instead of `initialize`","maintainers":[{"name":"bnolan","email":"ben@nolanconsul.com"}]}},"maintainers":[{"name":"bnolan","email":"ben@nolanconsul.com"}],"time":{"modified":"2012-05-14T02:15:18.531Z","created":"2011-04-18T02:52:29.830Z","0.5.0":"2011-04-18T02:52:30.686Z","0.5.1":"2011-04-21T05:09:48.669Z","0.5.2":"2011-04-21T05:25:56.198Z","0.5.3":"2011-04-21T05:44:18.023Z","0.5.4":"2011-05-04T22:40:45.220Z","0.5.5":"2011-05-26T08:43:27.447Z","0.5.6":"2012-02-09T22:29:01.245Z","0.6.0":"2012-05-14T02:15:18.531Z"},"author":{"name":"Ben Nolan","email":"ben@nolanconsul.com"},"repository":{"type":"git","url":"git://github.com/bnolan/capt.git"},"_id":"capt","_rev":"1-48682e4d367be3b5d86f3917a6c76d16"}ÿdocument-storeÿcanvas-heroku {"id":"canvas-heroku","rev":"1-21f38533d2a3ba46096c21838a3ef447","rev_tree":[{"pos":1,"ids":["21f38533d2a3ba46096c21838a3ef447",{"status":"available"},[]]}],"rev_map":{"1-21f38533d2a3ba46096c21838a3ef447":3822},"winningRev":"1-21f38533d2a3ba46096c21838a3ef447","deleted":false,"seq":3822}ÿby-sequenceÿ0000000000003822Ä{"name":"canvas-heroku","description":"Canvas fork including Cairo binaries for Heroku deployment","dist-tags":{"latest":"0.12.0"},"versions":{"0.12.0":{"name":"canvas-heroku","description":"Canvas fork including Cairo binaries for Heroku deployment","version":"0.12.0","author":{"name":"TJ Holowaychuk","email":"tj@learnboost.com"},"maintainers":[{"name":"bpartridge","email":"bapartridge@gmail.com"}],"keywords":["canvas","graphic","graphics","pixman","cairo"],"repository":{"type":"git","url":"git://github.com/bpartridge/node-canvas-heroku.git"},"scripts":{"preinstall":"node-waf configure build"},"devDependencies":{"express":"2.3.7","expresso":"0.7.6","jade":"0.11.0"},"engines":{"node":">= 0.4.0 && < 0.7.0"},"main":"./lib/canvas.js","_npmUser":{"name":"bpartridge","email":"bapartridge@gmail.com"},"_id":"canvas-heroku@0.12.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"e84011a54f308a49fd9a8d84b3d01006aa14eaf9","tarball":"http://registry.npmjs.org/canvas-heroku/-/canvas-heroku-0.12.0.tgz"}}},"readme":"# HEROKU Node Canvas\n\n\nA simple fork just to get this guy working on heroku.\n\n- Includes precompiled cairo modules in ./cairo\n- Has a modified wscript in order to reference that precompiled cairo stuff\n\n- Loses JPEG and GIF support ... as I couldn't figure those out and I didn't need them.\n\n## usage:\n\n### 1. create a heroku app in cedar:\n\n`heroku create --stack cedar`\n\n### 2. set environment variables\n\ncreate a `.env` file in your application with this contents:\n\n```bash\nLD_PRELOAD='/app/node_modules/canvas/cairo/libcairo.so /app/node_modules/canvas/lib/libpixman-1.so.0 /app/node_modules/canvas/lib/libfreetype.so.6'\nLD_LIBRARY_PATH=/app/node_modules/canvas/cairo\n```\n* `LD_PRELOAD` will tell heroku to always preload those libs\n* `LD_LIBRARY_PATH` will tell heroku where to find aditional dinamic libs\n\n","maintainers":[{"name":"bpart]—)ùridge","email":"bapartridge@gmail.com"}],"time":{"modified":"2012-06-06T20:23:11.286Z","created":"2012-06-06T20:23:10.485Z","0.12.0":"2012-06-06T20:23:11.286Z"},"author":{"name":"TJ Holowaychuk","email":"tj@learnboost.com"},"repository":{"type":"git","url":"git://github.com/bpartridge/node-canvas-heroku.git"},"_id":"canvas-heroku","_rev":"1-21f38533d2a3ba46096c21838a3ef447"}ÿdocument-storeÿbuster-win{"id":"buster-win","rev":"1-fcb0eac48c366571f345a92a097bed00","rev_tree":[{"pos":1,"ids":["fcb0eac48c366571f345a92a097bed00",{"status":"available"},[]]}],"rev_map":{"1-fcb0eac48c366571f345a92a097bed00":3821},"winningRev":"1-fcb0eac48c366571f345a92a097bed00","deleted":false,"seq":3821}ÿby-sequenceÿ0000000000003821½°{"name":"buster-win","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.1":{"name":"buster-win","version":"0.0.1","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n npm install buster-win\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n* Write tests using busterjs (http://busterjs.org/).\r\n* Inside that folder create a file \"index.js\" with the code below.\r\n\r\n```javascript\r\n var BusterWin = require('buster-win');\r\n var busterWin = new BusterWin({ tests: /-test\\.js$/i });\r\n busterWin.run(__dirname);\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```","_id":"buster-win@0.0.1","dist":{"shasum":"1010a2efb7b41899cfd05b1b907662526e515555","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.1.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"}]},"0.0.2":{"name":"buster-win","version":"0.0.2","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n env: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\", // or \"node\"\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org/).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```","_id":"buster-win@0.0.2","dist":{"shasum":"b6e5bcd28886f4fb8d3d71206442860f5c0b4499","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.2.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.3":{"name":"buster-win","version":"0.0.3","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"stayOpen\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n stayOpen: true,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at http://busterjs.org/docs/.","_id":"buster-win@0.0.3","dist":{"shasum":"7ea04d697cec9a72f0af3bfe4054cc8b38e8f8e1","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.3.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.4":{"name":"buster-win","version":"0.0.4","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at http://busterjs.org/docs/.","_id":"buster-win@0.0.4","dist":{"shasum":"effcfd808175ce1cea8b5c945651d2c28d27b9c4","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.4.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.5":{"name":"buster-win","version":"0.0.5","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n* Put a breakpoint in the test you would like to debug.\r\n* Refresh the page.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at http://busterjs.org/docs/.","_id":"buster-win@0.0.5","dist":{"shasum":"64ed55dca1cb0ff66d7f6c84867d5bc181d7fc8d","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.5.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.6":{"name":"buster-win","version":"0.0.6","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n* Put a breakpoint in the test you would like to debug.\r\n* Refresh the page.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at http://busterjs.org/docs/.","_id":"buster-win@0.0.6","dist":{"shasum":"3eb4bca4cd69b54be1ca68885a590725f471d89f","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.6.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.7":{"name":"buster-win","version":"0.0.7","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n* Put a breakpoint in the test you would like to debug.\r\n* Refresh the page.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at http://busterjs.org/docs/.","_id":"buster-win@0.0.7","dist":{"shasum":"b0cfc45d922acc71f3b328ef066ebb2a2461ab5e","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.7.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.8":{"name":"buster-win","version":"0.0.8","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\rZõ;ù\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n* Put a breakpoint in the test you would like to debug.\r\n* Refresh the page.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at the official [BusterJS Site](http://busterjs.org/docs/)","_id":"buster-win@0.0.8","dist":{"shasum":"c2e0221b52659b2e2874a1c679906d77798677b0","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.8.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]},"0.0.9":{"name":"buster-win","version":"0.0.9","description":"Temporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.","main":"lib/buster-win.js","dependencies":{"underscore":"*","glob":"*"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"contributors":[{"name":"Jon Dunn","email":"jondunndev@gmail.com"}],"keywords":["buster","busterjs","windows","test","unit"],"license":"MIT/X11","engine":{"node":">=0.4.0"},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n1. Download phantomjs from http://phantomjs.org.\r\n2. Add path to directory containing \"phantomjs.exe\" to PATH environment variable.\r\n3. Use npm to install depedencies for node.\r\n\r\n
\r\nnpm install buster\r\nnpm install buster-win\r\n
\r\n\r\n### Using package.json to install\r\n\r\nIf your project has a package.json, you can install by doing the following:\r\n\r\nAdd \"devDependencies\" to the package.json file as below.\r\n\r\n```javascript\r\n{\r\n \"devDependencies\": {\r\n \"buster\": \"*\",\r\n \"buster-win\": \"*\"\r\n }\r\n}\r\n```\r\n\r\nRun the npm command below.\r\n\r\n npm install -dev\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n\r\nInside that folder create the following:\r\n\r\n\r\n test/\r\n buster.js\r\n index.js\r\n first-test.js\r\n second-test.js\r\n\r\n* A file \"index.js\" with the code below.\r\n\r\n```javascript\r\nrequire('buster-win').execute(__dirname);\r\n```\r\n\r\n* A \"buster.js\" config file.\r\n\r\n```javascript\r\nvar config = module.exports;\r\n\r\nconfig[\"Node tests\"] = {\r\n environment: \"node\",\r\n tests: [\r\n \"**/*-test.js\"\r\n ]\r\n};\r\n\r\nconfig[\"Browser tests\"] = {\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\", // Paths are relative to config file\r\n \"lib/**/*.js\" // Glob patterns supported\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Tests using busterjs (http://busterjs.org).\r\n\r\n```javascript\r\nvar buster = require('buster');\r\nbuster.spec.expose();\r\n\r\ndescribe(\"My thing\", function () {\r\n it(\"has the foo and bar\", function () {\r\n expect(\"foo\").toEqual(\"bar\");\r\n });\r\n\r\n it(\"states the obvious\", function () {\r\n expect(true).toBe(true);\r\n });\r\n});\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```\r\n\r\n### Run With WebStorm\r\n\r\n1. Go to the \"Run\" menu and choose \"Edit configurations...\".\r\n2. Click on the \"+\" icon and choose \"Node JS\".\r\n3. Set \"Working Directory\" to the location of your \"test\" folder.\r\n4. Set \"Path to Node App JS File\" to \"index.js\" and click \"OK\".\r\n5. Click on the play icon next to your configuration in the toolbar.\r\n\r\n## Debugging\r\n\r\n### Node Debugging\r\n\r\nTo debug Node scripts in WebStorm, simply follow the steps in \"Run With WebStorm\", but run in configuration in debug mode.\r\n\r\n### Browser Debugging\r\n\r\nTo debug Browser script, do the following:\r\n\r\n* Add \"autoRun: false\" to the configuration for the browser test as below.\r\n\r\n```javascript\r\nconfig[\"Browser tests\"] = {\r\n autoRun: false,\r\n environment: \"browser\",\r\n rootPath: \"../\",\r\n sources: [\r\n \"lib/mylib.js\",\r\n \"lib/**/*.js\"\r\n ],\r\n tests: [\r\n \"test/*-test.js\"\r\n ]\r\n};\r\n```\r\n\r\n* Run the tests normally.\r\n* Open a Browser and go to http://localhost:1111.\r\n* Open the Browser debug tools.\r\n* Put a breakpoint in the test you would like to debug.\r\n* Refresh the page.\r\n\r\n\r\n## Additional Documentation\r\n\r\nAll additional documentation can be found at the official [BusterJS Site](http://busterjs.org/docs/)","_id":"buster-win@0.0.9","dist":{"shasum":"97a161735e2264b8afda30884966e57c1a15ea4f","tarball":"http://registry.npmjs.org/buster-win/-/buster-win-0.0.9.tgz"},"scripts":{},"maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}]}},"readme":"buster-win\r\n==========\r\n\r\nTemporary Windows harness for busterjs (A browser JavaScript testing toolkit) until v1 is released with full support.\r\n\r\n## Installation\r\n npm install buster-win\r\n\r\n### Note\r\nInstall buster-win alongside buster. Buster-Win simply acts as a Windows test runner.\r\n\r\n## Usage\r\n\r\nbuster-win will execute all tests in a folder, matching a specified pattern.\r\n\r\n* Create a folder for your tests. Example: \"test\".\r\n* Write tests using busterjs (http://busterjs.org/).\r\n* Inside that folder create a file \"index.js\" with the code below.\r\n\r\n```javascript\r\n var BusterWin = require('buster-win');\r\n var busterWin = new BusterWin({ tests: /-test\\.js$/i });\r\n busterWin.run(__dirname);\r\n```\r\n\r\n* Run the following command where \"test\" is the name of the folder containing your tests.\r\n\r\n```\r\nnode test\r\n```","maintainers":[{"name":"jdunn2","email":"jondunndev@gmail.com"},{"name":"gjensen64","email":"gjensen64@gmail.com"}],"time":{"modified":"2012-08-08T16:26:27.587Z","created":"2012-06-29T17:38:46.033Z","0.0.1":"2012-06-29T17:38:49.163Z","0.0.2":"2012-07-12T17:34:53.593Z","0.0.3":"2012-07-12T20:12:27.099Z","0.0.4":"2012-07-12T20:19:40.721Z","0.0.5":"2012-07-13T12:39:55.109Z","0.0.6":"2012-07-13T13:24:26.150Z","0.0.7":"2012-07-13T14:30:56.039Z","0.0.8":"2012-07-30T21:03:11.579Z","0.0.9":"2012-08-08T16:26:27.587Z"},"author":{"name":"Gregg Jensen","email":"gjensen64@gmail.com","url":"https://github.com/greggjensen/buster-win"},"repository":{"type":"git","url":"https://github.com/greggjensen/buster-win.git"},"users":{"fgribreau":true},"_id":"buster-win","_rev":"1-fcb0eac48c366571f345a92a097bed00"}ÿdocument-storeÿbruno˜{"id":"bruno","rev":"1-76ec8ab4b0195cf0b269c8e95c05c028","rev_tree":[{"pos":1,"ids":["76ec8ab4b0195cf0b269c8e95c05c028",{"status":"available"},[]]}],"rev_map":{"1-76ec8ab4b0195cf0b269c8e95c05c028":3820},"winningRev":"1-76ec8ab4b0195cf0b269c8e95c05c028","deleted":false,"seq":3820}ÿby-sequenceÿ0000000000003820† {"name":"bruno","description":"A little CMS with speed of creation in mind","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Cameron Bytheway","email":"bytheway.cameron@gmail.com"},"name":"bruno","description":"A little CMS with speed of creation in mind","version":"0.0.0","repository":{"type":"git","url":"git://github.com/CamShaft/bruno.js.git"},"dependencies":{"ansi-color":"0.2.1","coffee-script":"1.3.3","argumentum":"0.6.0","date-utils":"1.2.10","express":"2.5.9"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"CamShaft","email":"bytheway.cameron@gmail.com"},"_id":"bruno@0.0.0","_engineSupported":true,"_npmVersion":"1.1.13","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a7a5221d6ba7a253173f6a2c8486e11f681223f5","tarball":"http://registry.npmjs.org/bruno/-/bruno-0.0.0.tgz"},"maintainers":[{"name":"CamShaft","email":"bytheway.cameron@gmail.com"}]}},"readme":"Bruno\n=====\n\nA little CMS with speed of creation in mind","maintainers":[{"name":"CamShaft","email":"bytheway.cameron@gmail.com"}],"time":{"modified":"2012-06-20T03:37:29.864Z","created":"2012-06-20T03:37:28.964Z","0.0.0":"2012-06-20T03:37:29.864Z"},"author":{"name":"Cameron Bytheway","email":"bytheway.cameron@gmail.com"},"repository":{"type":"git","url":"git://github.com/CamShaft/bruno.js.git"},"_id":"bruno","_rev":"1-76ec8ab4b0195cf0b269c8e95c05c028"}ÿdocument-storeÿbr-jqueryœ{"id":"br-jquery","rev":"1-ba329954d7af43cb91b4595732891b30","rev_tree":[{"pos":1,"ids":["ba329954d7af43cb91b4595732891b30",{"status":"available"},[]]}],"rev_map":{"1-ba329954d7af43cb91b4595732891b30":3819},"winningRev":"1-ba329954d7af43cb91b4595732891b30","deleted":false,"seq":3819}ÿby-sequenceÿ0000000000003819¹'{"name":"br-jquery","description":"a jQuery package for browserify","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Ben Atkin","email":"ben@benatkin.com","url":"http://benatkin.com/"},"name":"br-jquery","description":"a jQuery package for browserify","version":"0.0.1","homepage":"https://github.com/benatkin/br-jquery","repository":{"type":"git","url":"git://github.com/benatkin/br-jquery.git"},"keywords":["jquery","browserify","front-end"],"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"browserify":"*","request":"*","tap":"*"},"scripts":{"test":"tap test/*.js"},"browserify":"browser","_npmUser":{"name":"bat","email":"ben@benatkin.com"},"_id":"br-jquery@0.0.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"0ccda2414b8b69b15766776cb942bd0b5b4480b9","tarball":"http://registry.npmjs.org/br-jquery/-/br-jquery-0.0.1.tgz"},"maintainers":[{"name":"bat","email":"ben@benatkin.com"}]},"0.0.2":{"author":{"name":"Ben Atkin","email":"ben@benatkin.com","url":"http://benatkin.com/"},"name":"br-jquery","description":"a jQuery package for browserify","version":"0.0.2","homepage":"https://github.com/benatkin/br-jquery","repository":{"type":"git","url":"git://github.com/benatkin/br-jquery.git"},"keywords":["jquery","browserify","front-end"],"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"browserify":"~> 1.10.4","request":"~> 2.9.153","mocha":"~> 0.14.1","should":"~> 0.6.0"},"scripts":{"test":"mocha -r should"},"browserify":"browser","_npmUser":{"name":"bat","email":"ben@benatkin.com"},"_id":"br-jquery@0.0.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"3b6504e4357eb928c6c638c7e61495a73e4609d5","tarball":"http://registry.npmjs.org/br-jquery/-/br-jquery-0.0.2.tgz"},"maintainers":[{"name":"bat","email":"ben@benatkin.com"}]},"0.0.3":{"author":{"name":"Ben Atkin","email":"ben@benatkin.com","url":"http://benatkin.com/"},"name":"br-jquery","description":"a jQuery package for browserify","version":"0.0.3","homepage":"https://github.com/benatkin/br-jquery","repository":{"type":"git","url":"git://github.com/benatkin/br-jquery.git"},"keywords":["jquery","browserify","front-end"],"engines":{"node":">=0.6"},"dependencies":{},"devDependencies":{"browserify":"*","request":"*","mocha":"*","should":"*"},"scripts":{"test":"mocha -r should"},"browserify":"browser","_npmUser":{"name":"bat","email":"ben@benatkin.com"},"_id":"br-jquery@0.0.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"4311f9e590971bbcdd833942a6392a56b9525a24","tarball":"http://registry.npmjs.org/br-jquery/-/br-jquery-0.0.3.tgz"},"maintainers":[{"name":"bat","email":"ben@benatkin.com"}]}},"readme":"# br-jquery\n\n`br-jquery` is a node.js module for including jQuery in browserify.\nIt is currently jQuery 1.7.1.\n\n## Usage\n\nThis is published on *npm* as *br-jquery*. You can install it with `npm\ninstall br-jquery`.\n\nThe simplest way is to require the module in the call to create the\nbundle:\n\n``` javascript\nvar js = require('browserify')({require: {jquery: 'br-jquery'}}).bundle();\n```\n\nThis module follows the browserify convention of using `require()`, and\nuses [jQuery.noConflict()](http://api.jquery.com/jQuery.noConflict/)\nTo use the jQuery module from the browser, use something like\n`var $ = require('jquery');`\n\nTo include the minified version, use a middleware:\n\n``` javascript\nvar browserify = require('browserify'),\n jq = require('br-jquery');\n\nvar bundle = browserify();\nbundle.use(jq.min); // or jq to bundle the non-minified version\n\nvar js = bundle.bundle();\n```\n\nIf you have the deps installed (*jsdom* and *htmlparser*), you can\njQuery for node.js using this package:\n\n```\nvar jquery = require('br-jquery').jquery();\n```\n\nThe *jquery* package on npm is currently a 1.6 release so that may be\none reason to use this package instead.\n\n## Verifying\n\nTo verify that this contains the original jQuery source with a simple\nwrapper around it, read and run `node build.js`, and check that the\nfiles haven't changed.\n\n## Author\n\n* Ben Atkin \n\n\n \"CC0\"\n\n\nTo the extent possible under law, I, Ben Atkin, have waived all copyright and related or neighboring rights to this work.\n","maintainers":[{"name":"bat","email":"ben@benatkin.com"}],"time":{"modified":"2012-06-07T07:04:16.766Z","created":"2012-01-22T08:06:53.375Z","0.0.1":"2012-01-22T08:06:54.347Z","0.0.2":"2012-03-24T03:55:23.215Z","0.0.3":"2012-06-07T07:04:16.766Z"},"author":{"name":"Ben Atkin","email":"ben@benatkin.com","url":"http://benatkin.com/"},"repository":{"type":"git","url":"git://github.com/benatkin/br-jquery.git"},"_id":"br-jquery","_rev":"1-ba329954d7af43cb91b4595732891b30"}ÿdocument-storeÿboneidle›{"id":"boneidle","rev":"1-b0c969fb9b09544c8bb0f3bf5b030dae","rev_tree":[{"pos":1,"ids":["b0c969fb9b09544c8bb0f3bf5b030dae",{"status":"available"},[]]}],"rev_map":{"1-b0c969fb9b09544c8bb0f3bf5b030dae":3818},"winningRev":"1-b0c969fb9b09544c8bb0f3bf5b030dae","deleted":false,"seq":3818}ÿby-sequenceÿ0000000000003818ÑÅ{"name":"boneidle","description":"Functional library with callbacks","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"boneidle","description":"Functions with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.1","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":""},"scripts":{"test":"nodeunit test/"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"b26aba4ec4f774f61bb34a0fcf5c23badce673c4","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.1.tgz"},"readme":"","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.2":{"name":"boneidle","description":"Functions with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.2","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":""},"scripts":{"test":"nodeunit test/"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"8de1afd0ba99a2cd2cf5947fb50ba4ed31e4f58a","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.2.tgz"},"readme":"","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.3":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.3","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":""},"scripts":{"test":"nodeunit test/"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"149fc6f490430b3c752e2f2c28a1e5c07ebb21c1","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.3.tgz"},"readme":"","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.4":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.4","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":""},"scripts":{"test":"nodeunit test/"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"9f7ddeaab1dc7f2da7fc6d25497b796f80ee622c","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.4.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif ()\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.5":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.5","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":"","uglify-js":""},"scripts":{"test":"nodeunit test/","preinstall":"uglifyjs lib/boneidle.js > lib/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"331c1a491d0239667b9750cae89f8bbfd02a9744","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.5.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.6":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.6","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{"nodeunit":"","uglify-js":""},"scripts":{"test":"nodeunit test/","preinstall":"uglifyjs lib/boneidle.js > lib/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.6","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"7a9fd129484cf1962fde43815d39414cb2c095df","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.6.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.7":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.7","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","postinstall":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"cd8980009bcaa61d5ce56143da4155f2e6aefa3a","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.7.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.8":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.8","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"c6372bb11a1272234ae85b29fc35be40c4da2dec","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.8.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.0.9":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.0.9","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.0.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"861061d9423bceab9b2c4398a4693aaf0a449503","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.0.9.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.option.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.option.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.either.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.either.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.1.0":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.1.0","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_npmUser":{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"},"_id":"boneidle@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"1bebbbf0ba4ff4dc10d50f5065df0b365d045ff1","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.1.0.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.option.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.option.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.either.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.either.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.1.1":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.1.1","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"k³Ð–ùdevDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_id":"boneidle@0.1.1","dist":{"shasum":"5d4065d145f27d11a7188ede67d9c3e57c8252e3","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.1.1.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.option.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.option.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.either.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.either.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.1.2":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.1.2","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_id":"boneidle@0.1.2","dist":{"shasum":"d5f8a937e2601d3b5c7e3865d7c973d4c9ccc0d2","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.1.2.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.option.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.option.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.either.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.either.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]},"0.1.3":{"name":"boneidle","description":"Functional library with callbacks","homepage":"https://github.com/jozefdransfield/BoneIdle","author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"version":"0.1.3","repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"main":"./lib/boneidle.js","dependencies":{},"devDependencies":{"nodeunit":"","uglify-js":"","stitch":""},"scripts":{"test":"nodeunit test/**","prepublish":"node pkg.js && uglifyjs release/boneidle.js > release/boneidle.min.js"},"_id":"boneidle@0.1.3","dist":{"shasum":"2557813f706dbe44c73087d94d3547c8bbd7ab73","tarball":"http://registry.npmjs.org/boneidle/-/boneidle-0.1.3.tgz"},"readme":"Bone Idle\n=========\n\n### Lazy Functional Library For Node.js\n\n#### Option\n###### None\n\tvar none = b_.option.none();\n\tassertEquals(none.isEmpty(), true);\n\tassertEquals(none.getOrNull(), null);\n\tassertEquals(none.getOr(anotherValue), anotherValue);\n###### Some \n\tvar some = b_.option.some(value);\n\tassertEquals(b.isEmpty(), false);\n\tassertEquals(some.get(), value);\n\tassertEquals(some.getOrNull(), value);\n\tassertEquals(none.getOr(anotherValue), value);\n\t\n##### Either\n###### Left \n\t var left = b_.either.left(value);\n\t assertEquals(left.isLeft(), true);\n\t assertEquals(left.isRight(), false);\n\t assertEquals(left.value()), value);\n###### Right \n\t var right = b_.either.right(value);\n\t assertEquals(right.isLeft(), false);\n\t assertEquals(right.isRight(), true);\n\t assertEquals(right.value()), value)\n\n\n\n#### Callback Chaining\n\n\tisNotNull(str, function(ok) {\n\t\tif (ok) {\n\t\t\thasLengthGreaterThan2(str, function(ok) {\n\t\t\t\tif (ok) {\n\t\t\t\t\tres.send(\"All good\")\n\t\t\t\t} else {\n\t\t\t\t\tres.send(\"Bad Input\");\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t});\n\nBecomes \n\t\n\tb_.chain(isNotNull).and(hasLengthGreaterThan2).call(\"some param\", function(either) {\n\t\tif (either.isRight) {\n\t\t\tres.send(\"All Good\");\n\t\t} else {\n\t\t\tres.send(\"Bad Input\");\n\t\t}\n\t})\n\n","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}]}},"readme":"","maintainers":[{"name":"jozef.dransfield","email":"Jozef.Dransfield@me.com"}],"time":{"modified":"2012-08-08T20:34:24.712Z","created":"2012-04-21T00:23:31.742Z","0.0.1":"2012-04-21T00:23:33.753Z","0.0.2":"2012-04-23T19:27:56.866Z","0.0.3":"2012-04-23T20:32:05.386Z","0.0.4":"2012-05-02T21:38:58.216Z","0.0.5":"2012-06-03T00:47:04.433Z","0.0.6":"2012-06-03T01:20:19.920Z","0.0.7":"2012-06-06T22:27:37.358Z","0.0.8":"2012-06-06T22:34:08.960Z","0.0.9":"2012-06-17T18:34:58.515Z","0.1.0":"2012-06-17T23:18:25.618Z","0.1.1":"2012-07-16T19:36:03.589Z","0.1.2":"2012-07-16T19:54:16.992Z","0.1.3":"2012-08-08T20:34:24.712Z"},"author":{"name":"Jozef Dransfield","email":"Jozef.Dransfield@me.com"},"repository":{"type":"git","url":"git@github.com:jozefdransfield/BoneIdle.git"},"_id":"boneidle","_rev":"1-b0c969fb9b09544c8bb0f3bf5b030dae"}ÿdocument-storeÿbinson™{"id":"binson","rev":"1-c8294c8b6bafd1d88e838e5d4ac55361","rev_tree":[{"pos":1,"ids":["c8294c8b6bafd1d88e838e5d4ac55361",{"status":"available"},[]]}],"rev_map":{"1-c8294c8b6bafd1d88e838e5d4ac55361":3817},"winningRev":"1-c8294c8b6bafd1d88e838e5d4ac55361","deleted":false,"seq":3817}ÿby-sequenceÿ0000000000003817“{"name":"binson","description":"Binary JavaScript Object Notation","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"author":{"name":"Christian Tellnes","email":"christian@tellnes.no"},"name":"binson","description":"Binary JavaScript Object Notation","version":"0.0.1","repository":{"url":""},"main":"./","scripts":{"test":"make test"},"engines":{"node":"0.6.x"},"dependencies":{},"devDependencies":{"mocha":"~0.14.1","should":"~0.6.0"},"optionalDependencies":{},"_npmUser":{"name":"tellnes","email":"christian@tellnes.no"},"_id":"binson@0.0.1","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"510afcea613587b89b37f116c23c39fbbc90b108","tarball":"http://registry.npmjs.org/binson/-/binson-0.0.1.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]},"0.0.2":{"author":{"name":"Christian Tellnes","email":"christian@tellnes.no"},"name":"binson","description":"Binary JavaScript Object Notation","version":"0.0.2","repository":{"url":""},"main":"./","scripts":{"test":"make test"},"engines":{"node":"0.6.x"},"dependencies":{},"devDependencies":{"mocha":"~0.14.1","should":"~0.6.0"},"optionalDependencies":{},"_id":"binson@0.0.2","dist":{"shasum":"7acb4196603daa5757829c8cc0b755eafe080e4e","tarball":"http://registry.npmjs.org/binson/-/binson-0.0.2.tgz"},"readme":"# Binson\n\n[![Build Status](https://secure.travis-ci.org/tellnes/node-binson.png)](http://travis-ci.org/tellnes/node-binson)\n","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]}},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}],"time":{"modified":"2012-07-12T12:02:52.062Z","created":"2012-03-12T14:43:00.458Z","0.0.1":"2012-03-12T14:43:04.190Z","0.0.2":"2012-07-12T12:02:52.062Z"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no"},"repository":{"url":""},"_id":"binson","_rev":"1-c8294c8b6bafd1d88e838e5d4ac55361"}ÿdocument-storeÿbingo˜{"id":"bingo","rev":"1-8439bd649f5e1b9253e51e0c55d4d34d","rev_tree":[{"pos":1,"ids":["8439bd649f5e1b9253e51e0c55d4d34d",{"status":"available"},[]]}],"rev_map":{"1-8439bd649f5e1b9253e51e0c55d4d34d":3816},"winningRev":"1-8439bd649f5e1b9253e51e0c55d4d34d","deleted":false,"seq":3816}ÿby-sequenceÿ0000000000003816œ{"name":"bingo","description":"Test function calls.","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"bingo","description":"Test function calls.","version":"0.1.0","homepage":"https://github.com/rumpl/bingo","author":{"name":"Djorje Lukic","email":"lukic.djordje@gmail.com"},"repository":{"type":"git","url":"git://github.com/rumpl/bingo.git"},"bugs":{"url":"https://github.com/rumpl/bingo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rumpl/bingo/blob/master/LICENSE-MIT"}],"main":"lib/bingo","engines":{"node":"~0.6.15"},"scripts":{"test":"grunt test"},"dependencies":{},"devDependencies":{"grunt":"~0.3.9"},"keywords":[],"_npmUser":{"name":"rumpl","email":"lukic.djordje@gmail.com"},"_id":"bingo@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ef00c81efd123e53f6ce6443a44c32bfe0bb4c60","tarball":"http://registry.npmjs.org/bingo/-/bingo-0.1.0.tgz"},"maintainers":[{"name":"rumpl","email":"lukic.djordje@gmail.com"}],"directories":{}},"0.2.0":{"name":"bingo","description":"Test function calls.","version":"0.2.0","keywords":[],"homepage":"https://github.com/rumpl/bingo","author":{"name":"Djorje Lukic","email":"lukic.djordje@gmail.com"},"repository":{"type":"git","url":"git://github.com/rumpl/bingo.git"},"bugs":{"url":"https://github.com/rumpl/bingo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rumpl/bingo/blob/master/LICENSE-MIT"}],"main":"lib/bingo","engines":{"node":"~0.6.15"},"scripts":{"test":"grunt test"},"dependencies":{},"devDependencies":{"grunt":"~0.3.9"},"_npmUser":{"name":"rumpl","email":"lukic.djordje@gmail.com"},"_id":"bingo@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8bfa06d1c0b0fc9be4b6ad82c5f75a9b020336f7","tarball":"http://registry.npmjs.org/bingo/-/bingo-0.2.0.tgz"},"maintainers":[{"name":"rumpl","email":"lukic.djordje@gmail.com"}]}},"readme":"# bingo\n\nTest function calls.\n\n## Getting Started\nThis module is not on npm yet but you can download it here on github.\n\n## Examples\n\n```javascript\n// Require the module.\nvar bingo = require('bingo');\n\n// Bingo that object.\nvar someObject = bingo(someObject);\n\n// Get info about the function.\nconsole.log(someObject.someFunction.didExecute() === false); // true\nconsole.log(someObject.someFunction.timesExecuted()); // 0\n\n// Call some function.\nsomeObject.someFunction();\n\n// Get info about the execution of the function.\nconsole.log(someObject.someFunction.didExecute() === true); // true\nconsole.log(someObject.someFunction.timesExecuted()); // 1\n```\n\n## Contributing\nYes yes, please, contribute. What else do you want to know about an execution of a function ?\n\nLint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n## Release History\n - 0.1.0 (2012-09-14) First version\n\n## License\n\nCopyright (c) 2012 Djorje Lukic\n\nLicensed under the [MIT license](http://rumpl.mit-license.org/).\n","maintainers":[{"name":"rumpl","email":"lukic.djordje@gmail.com"}],"time":{"modified":"2012-06-14T13:45:28.594Z","created":"2012-06-14T13:09:44.034Z","0.1.0":"2012-06-14T13:09:45.838Z","0.2.0":"2012-06-14T13:45:28.594Z"},"author":{"name":"Djorje Lukic","email":"lukic.djordje@gmail.com"},"repository":{"type":"git","url":"git://github.com/rumpl/bingo.git"},"_id":"bingo","_rev":"1-8439bd649f5e1b9253e51e0c55d4d34d"}ÿdocument-storeÿbend—{"id":"bend","rev":"1-0d3fa692726c1abfff3d6c6bb77ebd53","rev_tree":[{"pos":1,"ids":["0d3fa692726c1abfff3d6c6bb77ebd53",{"status":"available"},[]]}],"rev_map":{"1-0d3fa692726c1abfff3d6c6bb77ebd53":3815},"winningRev":"1-0d3fa692726c1abfff3d6c6bb77ebd53","deleted":false,"seq":3815}ÿby-sequenceÿ0000000000003815³{"name":"bend","description":"A statically-typed programming language that compiles into JavaScript","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"bend","preferGlobal":"true","version":"0.1.0","author":{"name":"Evan Wallace","url":"http://madebyevan.com/"},"description":"A statically-typed programming language that compiles into JavaScript","bin":{"bend":"./bin/bend"},"main":"./lib/compiler.node.js","repository":{"type":"git","url":"https://github.com/evanw/bend.git"},"keywords":["javascript","bend","language","compiler"],"bugs":"http://github.com/evanw/bend/issues","license":"MIT","readme":"# The Bend Programming Language\n\nBend is a statically-typed programming language for the web. It compiles down to readable JavaScript with no runtime library and easily integrates with other JavaScript code.\n\nAn example Bend program:\n\n extern class console {\n static void log(var[] data...)\n }\n int[] nums = { 1, 2, 3 }\n for n in nums {\n console.log('hello', n)\n }\n\n# Live Demo\n\nPlease see [https://evanw.github.com/bend/](https://evanw.github.com/bend/) for a live demo and more information.\n\n# Installation\n\nBend can be installed through [npm](https://npmjs.org/):\n\n npm install -g bend\n","_id":"bend@0.1.0","dist":{"shasum":"58babdc5473e786dbcd3c4eb23ac5ba8ebd2122b","tarball":"http://registry.npmjs.org/bend/-/bend-0.1.0.tgz"},"maintainers":[{"name":"evanw","email":"evan.exe@gmail.com"}]}},"readme":"# The Bend Programming Language\n\nBend is a statically-typed programming language for the web. It compiles down to readable JavaScript with no runtime library and easily integrates with other JavaScript code.\n\nAn example Bend program:\n\n extern class console {\n static void log(var[] data...)\n }\n int[] nums = { 1, 2, 3 }\n for n in nums {\n console.log('hello', n)\n }\n\n# Live Demo\n\nPlease see [https://evanw.github.com/bend/](https://evanw.github.com/bend/) for a live demo and more information.\n\n# Installation\n\nBend can be installed through [npm](https://npmjs.org/):\n\n npm install -g bend\n","maintainers":[{"name":"evanw","email":"evan.exe@gmail.com"}],"time":{"modified":"2012-08-03T08:33:52.978Z","created":"2012-08-03T08:33:52.278Z","0.1.0":"2012-08-03T08:33:52.978Z"},"author":{"name":"Evan Wallace","url":"http://madebyevan.com/"},"repository":{"type":"git","url":"https://github.com/evanw/bend.git"},"_id":"bend","_rev":"1-0d3fa692726c1abfff3d6c6bb77ebd53"}ÿdocument-storeÿbattlenetœ{"id":"battlenet","rev":"1-76aa7cfd44f31a28b5e1f94af6e4db15","rev_tree":[{"pos":1,"ids":["76aa7cfd44f31a28b5e1f94af6e4db15",{"status":"available"},[]]}],"rev_map":{"1-76aa7cfd44f31a28b5e1f94af6e4db15":3814},"winningRev":"1-76aa7cfd44f31a28b5e1f94af6e4db15","deleted":false,"seq":3814}ÿby-sequenceÿ0000000000003814½ {"name":"battlenet","description":"Node.js client for the Blizzard Community Platform API","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Brandon Tilley","email":"brandon@brandontilley.com"},"name":"battlenet","description":"Node.js client for the Blizzard Community Platform API","version":"0.0.0","homepage":"https://github.com/BinaryMuse/node-battlenet","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"binarymuse","email":"brandon@brandontilley.com"},"_id":"battlenet@0.0.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ddec2fb12207430e365d649011d79e472a9858ee","tarball":"http://registry.npmjs.org/battlenet/-/battlenet-0.0.0.tgz"},"readme":"","maintainers":[{"name":"binarymuse","email":"brandon@brandontilley.com"}]}},"readme":"","maintainers":[{"name":"binarymuse","email":"brandon@brandontilley.com"}],"time":{"modified":"2012-05-12T02:22:10.591Z","created":"2012-05-12T02:22:07.179Z","0.0.0":"2012-05-12T02:22:10.591Z"},"author":{"name":"Brandon Tilley","email":"brandon@brandontilley.com"},"_id":"battlenet","_rev":"1-76aa7cfd44f31a28b5e1f94af6e4db15"}ÿdocument-storeÿbackboneio{"id":"backboneio","rev":"1-2f9266567cb583a1594e3d124d075798","rev_tree":[{"pos":1,"ids":["2f9266567cb583a1594e3d124d075798",{"status":"available"},[]]}],"rev_map":{"1-2f9266567cb583a1594e3d124d075798":3813},"winningRev":"1-2f9266567cb583a1594e3d124d075798","deleted":false,"seq":3813}ÿby-sequenceÿ0000000000003813‚n{"name":"backboneio","description":"Share Backbone.js models between client and server and sync them with socket.io","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"backboneio","version":"0.0.1","description":"Share Backbone.js models between client and server and sync them with socket.io","main":"index.js","repository":{"type":"git","url":"git://github.com/MiLk/backboneio.git"},"dependencies":{"underscore":">=1.3.1","backbone":">=0.9","socket.io":">=0.9.7"},"engines":{"node":">=0.8"},"keywords":["backbone","underscore","socket.io"],"author":{"name":"Emilien Kenler","email":"hello@emilienkenler.com","url":"http://www.emilienkenler.com"},"license":"BSD","readme":"= BackboneIO\n\nThis module allow you to reuse the same _Backbone.js_ model between the client and the server (_Node.js_) and synchronize them with _socket.io_.\nThis solution is built on top of _Backbone.iobind_ (http://alogicalparadox.com/backbone.iobind/).\nBackboneIO extend the Backbone module and provide a _BackboneIO.sync_ function that communicate with socket.io instead of using HTTP methods.\nThe _BackboneIO.Model_ has default functions to _update_ or _delete_ a _Model_.\nThe _BackboneIO.Collection_ has default functions to _create_ a _Model_ or _read_ a _Collection_.\n\n== Install\n\nFor the server just type :\n```\nnpm install backboneio\n```\n\nFor the client you need to copy the files _backbone.js_ and _backboneio.js_ in your javascript directory.\nThen put this code in your HTML :\n```html\n\n\n```\n\n== Use\n\nComing soon ...\nYou can look at https://github.com/MiLk/backboneio/tree/master/solution-2\n\n== Thanks\n\n* Jake Luer [[Github: @logicalparadox](http://github.com/logicalparadox)] [[Twitter: @jakeluer](http://twitter.com/jakeluer)] [[Website](http://alogicalparadox.com)]\n\n== LICENSE\n\nNew BSD License\n\nCopyright (c) 2012, Emilien Kenler hello@emilienkenler.com\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of the nor the\n names of its contributors may be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","_id":"backboneio@0.0.1","dist":{"shasum":"21c7e94521339376b244cf3e3d428ac7db7020bd","tarball":"http://registry.npmjs.org/backboneio/-/backboneio-0.0.1.tgz"},"maintainers":[{"name":"milk","email":"hello@emilienkenler.com"}]},"0.0.2":{"name":"backboneio","version":"0.0.2","description":"Share Backbone.js models between client and server and sync them with socket.io","main":"index.js","repository":{"type":"git","url":"git://github.com/MiLk/backboneio.git"},"dependencies":{"underscore":">=1.3.1","backbone":">=0.9","socket.io":">=0.9.7"},"engines":{"node":">=0.8"},"keywords":["backbone","underscore","socket.io"],"author":{"name":"Emilien Kenler","email":"hello@emilienkenler.com","url":"http://www.emilienkenler.com"},"license":"BSD","readme":"= BackboneIO\n\nThis module allow you to reuse the same _Backbone.js_ model between the client and the server (_Node.js_) and synchronize them with _socket.io_.\nThis solution is built on top of _Backbone.iobind_ (http://alogicalparadox.com/backbone.iobind/).\n_BackboneIO_ extend the _Backbone_ module and provide a _BackboneIO.sync_ function that communicate with _socket.io_ instead of using HTTP methods.\nThe _BackboneIO.Model_ has default functions to _update_ or _delete_ a _Model_.\nThe _BackboneIO.Collection_ has default functions to _create_ a _Model_ or _read_ a _Collection_.\n\n== Install\n\nFor the server just type :\n```\nnpm install backboneio\n```\n\nFor the client you need to copy the files _backbone.js_ and _backboneio.js_ in your javascript directory.\nThen put this code in your HTML :\n```html\n\n\n```\n\n== Use\n\nA basic example is available in sample directory.\n\n== Thanks\n\n* Jake Luer [[Github: @logicalparadox](http://github.com/logicalparadox)] [[Twitter: @jakeluer](http://twitter.com/jakeluer)] [[Website](http://alogicalparadox.com)]\n\n== LICENSE\n\nNew BSD License\n\nCopyright (c) 2012, Emilien Kenler hello@emilienkenler.com\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of the nor the\n names of its contributors may be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","_id":"backboneio@0.0.2","dist":{"shasum":"62540568124af280b30d51e36ad71328d48f71f9","tarball":"http://registry.npmjs.org/backboneio/-/backboneio-0.0.2.tgz"},"maintainers":[{"name":"milk","email":"hello@emilienkenler.com"}]},"0.0.3":{"name":"backboneio","version":"0.0.3","description":"Share Backbone.js models between client and server and sync them with socket.io","main":"index.js","repository":{"type":"git","url":"git://github.com/MiLk/backboneio.git"},"dependencies":{"underscore":">=1.3.1","backbone":">=0.9","socket.io":">=0.9.7"},"engines":{"node":">=0.8"},"keywords":["backbone","underscore","socket.io"],"author":{"name":"Emilien Kenler","email":"hello@emilienkenler.com","url":"http://www.emilienkenler.com"},"license":"BSD","readme":"= BackboneIO\n\nThis module allow you to reuse the same _Backbone.js_ model between the client and the server (_Node.js_) and synchronize them with _socket.io_.\nThis solution is built on top of _Backbone.iobind_ (http://alogicalparadox.com/backbone.iobind/).\n_BackboneIO_ extend the _Backbone_ module and provide a _BackboneIO.sync_ function that communicate with _socket.io_ instead of using HTTP methods.\nThe _BackboneIO.Model_ has default functions to _update_ or _delete_ a _Model_.\nThe _BackboneIO.Collection_ has default functions to _create_ a _Model_ or _read_ a _Collection_.\n\n== Install\n\nFor the server just type :\n```\nnpm install backboneio\n```\nor via git repository :\n```\nnpm install git://github.com/MiLk/backboneio.git\n```\n\nFor the client you need to copy the files _backbone.js_ and _backboneio.js_ in your javascript directory.\nThen put this code in your HTML :\n```html\n\n\n```\n\n== Use\n\nA basic example is available in sample directory.\n\n== Thanks\n\n* Jake Luer [[Github: @logicalparadox](http://github.com/logicalparadox)] [[Twitter: @jakeluer](http://twitter.com/jakeluer)] [[Website](http://alogicalparadox.com)]\n\n== LICENSE\n\nNew BSD License\n\nCopyright (c) 2012, Emilien Kenler hello@emilienkenler.com\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of the nor the\n names of its contributors may be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","_id":"backboneio@0.0.3","dist":{"shasum":"00aded25769fd04da8868dbdf80ac82a5289c0f8","tarball":"http://registry.npmjs.org/backboneio/-/backboneio-0.0.3.tgz"},"maintainers":[{"name":"milk","email":"hello@emilienkenler.com"}]}},"readme":"= BackboneIO\n\nThis module allow you to reuse the same _Backbone.js_ model between the client and the server (_Node.js_) and synchronize them with _socket.io_.\nThis solution is built on top of _Backbone.iobind_ (http://alogicalparadox.com/backbone.iobind/).\nBackboneIO extend the Backbone module and provide a _BackboneIO.sync_ function that communicate with socket.io instead of using HTTP methods.\nThe _BackboneIO.Model_ has default functions to _update_ or _delete_ a _Model_.\nThe _BackboneIO.Collection_ has default functions to _create_ a _Model_ or _read_ a _Collection_.\n\n== Install\n\nFor the server just type :\n```\nnpm install backboneio\n```\n\nFor the client you need to copy the files _backbone.js_ and _backboneio.js_ in your javascript directory.\nThen put this code in your HTML :\n```html\n\n\n```\n\n== Use\n\nComing soon ...\nYou can look at https://github.com/MiLk/backboneio/tree/master/solution-2\n\n== Thanks\n\n* Jake Luer [[Github: @logicalparadox](http://github.com/logicalparadox)] [[Twitter: @jakeluer](http://twitter.com/jakeluer)] [[Website](http://alogicalparadox.com)]\n\n== LICENSE\n\nNew BSD License\n\nCopyright (c) 2012, Emilien Kenler hello@emilienkenler.com\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of the nor the\n names of its contributors may be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","maintainers":[{"name":"milk","email":"hello@emilienkenler.com"}],"time":{"modified":"2012-08-02T13:43:34.729Z","created":"2012-07-27T21:12:45.393Z","0.0.1":"2012-07-27T21:12:47.752Z","0.0.2":"2012-07-28T06:37:30.090Z","0.0.3":"2012-08-01T15:56:55.953Z"},"author":{"name":"Emilien Kenler","email":"hello@emilienkenler.com","url":"http://www.emilienkenler.com"},"repository":{"type":"git","url":"git://github.com/MiLk/backboneio.git"},"users":{"fgribreau":true},"_id":"backboneio","_rev":"1-2f9266567cb583a1594e3d124d075798"}ÿdocument-storeÿaur–{"id":"aur","rev":"1-74e08aaa060f7a521eca12508d1d2bf9","rev_tree":[{"pos":1,"ids":["74e08aaa060f7a521eca12508d1d2bf9",{"status":"available"},[]]}],"rev_map":{"1-74e08aaa060f7a521eca12508d1d2bf9":3812},"winningRev":"1-74e08aaa060f7a521eca12508d1d2bf9","deleted":false,"seq":3812}ÿby-sequenceÿ0000000000003812¸;{"name":"aur","description":"Archlinux AUR cli","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"aur","description":"Archlinux AUR cli","version":"0.0.1","homepage":"https://github.com/Filirom1/nodejs-aur","repository":{"type":"git","url":"git@github.com:Filirom1/nodejs-aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"lib/aur.coffee","bin":{"aur-info":"bin/aur-info","aur-publish":"bin/aur-publish"}mýldù,"preferGlobal":true,"engines":{"node":"~0.6.0"},"dependencies":{"request":"2.1.x","form-data":"https://github.com/Filirom1/node-form-data/tarball/master","coffee-script":"1.1.x","underscore":"1.2.x","optimist":"0.2.x","cheerio":"0.2.x"},"devDependencies":{"vows":"0.5.x","express":"2.5.x","connect-form":"0.2.x"},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"aur@0.0.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"b1ab1cc4a6d8b270cc0628b5530451045945a079","tarball":"http://registry.npmjs.org/aur/-/aur-0.0.1.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.0":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"aur","description":"Archlinux AUR cli","version":"0.1.0","homepage":"https://github.com/Filirom1/nodejs-aur","repository":{"type":"git","url":"git@github.com:Filirom1/nodejs-aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"lib/aur.coffee","bin":{"aur-info":"bin/aur-info","aur-publish":"bin/aur-publish"},"preferGlobal":true,"engines":{"node":"~0.6.0"},"dependencies":{"request":"2.2.x","form-data":"https://github.com/Filirom1/node-form-data/tarball/master","coffee-script":"1.1.x","underscore":"1.2.x","optimist":"0.2.x","cheerio":"0.2.x"},"devDependencies":{"vows":"0.6.x","express":"2.5.x","connect-form":"0.2.x"},"scripts":{"test":"vows test/* --spec"},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"aur@0.1.0","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"18f01cac6e2524765c8527af6943f5f991d7bdc0","tarball":"http://registry.npmjs.org/aur/-/aur-0.1.0.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.1":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"aur","description":"Archlinux AUR cli","version":"0.1.1","homepage":"https://github.com/Filirom1/nodejs-aur","repository":{"type":"git","url":"git@github.com:Filirom1/nodejs-aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"lib/aur.coffee","bin":{"aur-info":"bin/aur-info","aur-publish":"bin/aur-publish"},"preferGlobal":true,"engines":{"node":"~0.6.0"},"dependencies":{"request":"2.2.x","form-data":"https://github.com/Filirom1/node-form-data/tarball/master","coffee-script":"1.1.x","underscore":"1.2.x","optimist":"0.2.x","cheerio":"0.2.x"},"devDependencies":{"vows":"0.6.x","express":"2.5.x","connect-form":"0.2.x"},"scripts":{"test":"vows test/* --spec"},"_npmUser":{"name":"filirom1","email":"filirom1@gmail.com"},"_id":"aur@0.1.1","_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"81c19b1ef2dc67eb7226255f08b53f80f3500dfc","tarball":"http://registry.npmjs.org/aur/-/aur-0.1.1.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]},"0.1.2":{"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"name":"aur","description":"Archlinux AUR cli","version":"0.1.2","homepage":"https://github.com/Filirom1/nodejs-aur","repository":{"type":"git","url":"git@github.com:Filirom1/nodejs-aur.git"},"licenses":{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"},"main":"lib/aur.coffee","bin":{"aur-info":"bin/aur-info","aur-publish":"bin/aur-publish"},"preferGlobal":true,"engines":{"node":"~0.8.0"},"dependencies":{"form-data":"https://github.com/Filirom1/node-form-data/tarball/master","request":"~2.9.202","coffee-script":"~1.3.3","underscore":"~1.3.3","optimist":"~0.3.4","cheerio":"~0.8.3"},"devDependencies":{"vows":"0.6.x","express":"2.5.x"},"scripts":{"test":"./node_modules/.bin/vows test/* --spec"},"readme":"ArchLinux AUR helper\n====================\n\nA CLI to call ArchLinux AUR services.\n\n### AUR info\n\nUsage: ./bin/aur-info packageName\n\nOptions:\n\n -s, --selector [default: \"\"]\n\nExemple:\n\n $ ./bin/aur-info nodejs-npm\n { Maintainer: 'neokuno',\n ID: '43626',\n Name: 'nodejs-npm',\n Version: '1.0.104-1',\n CategoryID: '3',\n Description: 'a package manager for node',\n URL: 'http://npmjs.org/',\n License: 'MIT',\n NumVotes: '151',\n OutOfDate: '0',\n FirstSubmitted: '1289874396',\n LastModified: '1320540926',\n URLPath: '/packages/no/nodejs-npm/nodejs-npm.tar.gz' }\n\n\nYou can also use selectors in your query:\n\n ./bin/aur-info nodejs-npm --selector Version\n 1.0.104-1\n\n\n### AUR publish\n\nUsage: node ./bin/aur-publish\n\nOptions:\n\n -f, --file [required]\n\n -c, --category [required] [default: \"system\"]\n\n -u, --user [default: \"\"]\n\n -p, --password [default: \"\"]\n\n\nExemple:\n\n./bin/aur-publish -f nodejs-express-2.5.0-1.src.tar.gz -c devel -u USERNALE -p PASSWORD\n\nValid categories are :\n\n * daemons\n * devel\n * editors\n * emulators\n * games\n * gnome\n * i18n\n * kde\n * lib\n * modules\n * multimedia\n * network\n * office\n * science\n * system\n * x11\n * xfce\n * kernels\n","_id":"aur@0.1.2","dist":{"shasum":"7bbe7ce1c7be3ef86e88869833466541d2901b05","tarball":"http://registry.npmjs.org/aur/-/aur-0.1.2.tgz"},"maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}]}},"readme":"ArchLinux AUR helper\n====================\n\nA CLI to call ArchLinux AUR services.\n\n### AUR info\n\nUsage: ./bin/aur-info packageName\n\nOptions:\n\n -s, --selector [default: \"\"]\n\nExemple:\n\n $ ./bin/aur-info nodejs-npm\n { Maintainer: 'neokuno',\n ID: '43626',\n Name: 'nodejs-npm',\n Version: '1.0.104-1',\n CategoryID: '3',\n Description: 'a package manager for node',\n URL: 'http://npmjs.org/',\n License: 'MIT',\n NumVotes: '151',\n OutOfDate: '0',\n FirstSubmitted: '1289874396',\n LastModified: '1320540926',\n URLPath: '/packages/no/nodejs-npm/nodejs-npm.tar.gz' }\n\n\nYou can also use selectors in your query:\n\n ./bin/aur-info nodejs-npm --selector Version\n 1.0.104-1\n\n\n### AUR publish\n\nUsage: node ./bin/aur-publish\n\nOptions:\n\n -f, --file [required]\n\n -c, --category [required] [default: \"system\"]\n\n -u, --user [default: \"\"]\n\n -p, --password [default: \"\"]\n\n\nExemple:\n\n./bin/aur-publish -f nodejs-express-2.5.0-1.src.tar.gz -c devel -u USERNALE -p PASSWORD\n\nValid categories are :\n\n * daemons\n * devel\n * editors\n * emulators\n * games\n * gnome\n * i18n\n * kde\n * lib\n * modules\n * multimedia\n * network\n * office\n * science\n * system\n * x11\n * xfce\n * kernels\n","maintainers":[{"name":"filirom1","email":"filirom1@gmail.com"}],"time":{"modified":"2012-08-02T13:43:27.728Z","created":"2011-11-10T07:24:30.655Z","0.0.1":"2011-11-10T07:24:32.666Z","0.1.0":"2011-11-26T08:47:12.651Z","0.1.1":"2011-11-26T09:41:58.813Z","0.1.2":"2012-08-02T07:16:10.863Z"},"author":{"name":"Filirom1","email":"filirom1@gmail.com"},"repository":{"type":"git","url":"git@github.com:Filirom1/nodejs-aur.git"},"users":{"fgribreau":true},"_id":"aur","_rev":"1-74e08aaa060f7a521eca12508d1d2bf9"}!ÿdocument-storeÿattachmentsaver¢{"id":"attachmentsaver","rev":"1-9ddd931c6e2f5720a4a4ca3b33dba4ac","rev_tree":[{"pos":1,"ids":["9ddd931c6e2f5720a4a4ca3b33dba4ac",{"status":"available"},[]]}],"rev_map":{"1-9ddd931c6e2f5720a4a4ca3b33dba4ac":3811},"winningRev":"1-9ddd931c6e2f5720a4a4ca3b33dba4ac","deleted":false,"seq":3811}ÿby-sequenceÿ0000000000003811­{"name":"attachmentsaver","description":"Receives local email saving pdf attachments to Desktop. by Harald Rudell","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.2":{"name":"attachmentsaver","description":"Receives local email saving pdf attachments to Desktop. by Harald Rudell","version":"0.0.2","contributors":[{"name":"Harald Rudell","email":"harald@allgoodapps.com","url":"http://blog.haraldrudell.com"}],"repository":{"type":"git","url":"git://github.com/haraldrudell/attachmentsaver.git"},"dependencies":{"simplesmtp":"","mailparser":""},"main":"./app.js","_npmUser":{"name":"haraldrudell","email":"harald@therudells.com"},"_id":"attachmentsaver@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f307372b308325f0fd233fdb8cece5ddf4cb5aca","tarball":"http://registry.npmjs.org/attachmentsaver/-/attachmentsaver-0.0.2.tgz"},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}]},"0.0.3":{"name":"attachmentsaver","description":"Receives local email saving pdf attachments to Desktop. by Harald Rudell","author":{"name":"Harald Rudell","email":"harald@allgoodapps.com"},"version":"0.0.3","contributors":[{"name":"Harald Rudell","email":"harald@allgoodapps.com","url":"http://blog.haraldrudell.com"}],"repository":{"type":"git","url":"git://github.com/haraldrudell/attachmentsaver.git"},"dependencies":{"simplesmtp":"","mailparser":""},"main":"./app.js","_npmUser":{"name":"haraldrudell","email":"harald@therudells.com"},"_id":"attachmentsaver@0.0.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"05f2e3b525def7eb4bd0924e04e8ccc65b6a8c39","tarball":"http://registry.npmjs.org/attachmentsaver/-/attachmentsaver-0.0.3.tgz"},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}]}},"readme":"","maintainers":[{"name":"haraldrudell","email":"harald@therudells.com"}],"time":{"modified":"2012-04-24T03:02:04.057Z","created":"2012-04-18T04:39:18.160Z","0.0.2":"2012-04-18T04:39:20.151Z","0.0.3":"2012-04-24T03:02:04.057Z"},"repository":{"type":"git","url":"git://github.com/haraldrudell/attachmentsaver.git"},"author":{"name":"Harald Rudell","email":"harald@allgoodapps.com"},"_id":"attachmentsaver","_rev":"1-9ddd931c6e2f5720a4a4ca3b33dba4ac"}ÿdocument-storeÿasync-memoize {"id":"async-memoize","rev":"1-7f3c1c318123a443739eb8bef861e9a2","rev_tree":[{"pos":1,"ids":["7f3c1c318123a443739eb8bef861e9a2",{"status":"available"},[]]}],"rev_map":{"1-7f3c1c318123a443739eb8bef861e9a2":3810},"winningRev":"1-7f3c1c318123a443739eb8bef861e9a2","deleted":false,"seq":3810}ÿby-sequenceÿ0000000000003810Þ{"name":"async-memoize","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"async-memoize","version":"0.0.1","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"license":"MIT","_id":"async-memoize@0.0.1","dist":{"shasum":"0550c8f77bdbe089e4552ae3f278b53ea4a9656d","tarball":"http://registry.npmjs.org/async-memoize/-/async-memoize-0.0.1.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]},"0.1.0":{"name":"async-memoize","version":"0.1.0","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"license":"MIT","_id":"async-memoize@0.1.0","dist":{"shasum":"6aff4a8e69c46d735090125b2633c603a444f3c2","tarball":"http://registry.npmjs.org/async-memoize/-/async-memoize-0.1.0.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]},"0.1.1":{"name":"async-memoize","version":"0.1.1","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"license":"MIT","_id":"async-memoize@0.1.1","dist":{"shasum":"3bfe44a60a651699e7d10e890a29468d4e41929c","tarball":"http://registry.npmjs.org/async-memoize/-/async-memoize-0.1.1.tgz"},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}]}},"readme":"","maintainers":[{"name":"tellnes","email":"christian@tellnes.no"}],"time":{"modified":"2012-08-04T01:01:08.139Z","created":"2012-08-04T00:46:51.210Z","0.0.1":"2012-08-04T00:46:52.679Z","0.1.0":"2012-08-04T00:59:07.052Z","0.1.1":"2012-08-04T01:01:08.139Z"},"author":{"name":"Christian Tellnes","email":"christian@tellnes.no","url":"http://christian.tellnes.com/"},"_id":"async-memoize","_rev":"1-7f3c1c318123a443739eb8bef861e9a2"}ÿdocument-storeÿaska—{"id":"aska","rev":"1-eedd5376bbff6402a157473cf083692d","rev_tree":[{"pos":1,"ids":["eedd5376bbff6402a157473cf083692d",{"status":"available"},[]]}],"rev_map":{"1-eedd5376bbff6402a157473cf083692d":3809},"winningRev":"1-eedd5376bbff6402a157473cf083692d","deleted":false,"seq":3809}ÿby-sequenceÿ0000000000003809Ë{"name":"aska","description":"ask cmd line","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"aska","version":"0.0.1","author":{"name":"iskedk"},"description":"ask cmd line","homepage":"http://nodejs.dk/aska","engines":["node >= 0.6.6"],"main":"index","dependencies":{},"devDependencies":{},"_npmUser":{"name":"iskedk","email":"iskedk@bloggen.dk"},"_id":"aska@0.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b2720b4b6e8c14bb4201a421e8b622217453f25a","tarball":"http://registry.npmjs.org/aska/-/aska-0.0.1.tgz"},"readme":"","maintainers":[{"name":"iskedk","email":"iskedk@bloggen.dk"}]}},"readme":"","maintainers":[{"name":"iskedk","email":"iskedk@bloggen.dk"}],"time":{"modified":"2012-04-24T09:38:22.563Z","created":"2012-04-24T09:38:19.165Z","0.0.1":"2012-04-24T09:38:22.563Z"},"author":{"name":"iskedk"},"_id":"aska","_rev":"1-eedd5376bbff6402a157473cf083692d"}ÿdocument-storeÿaq•{"id":"aq","rev":"1-0280fcc761ed5e99f9fef2f66a00c6fd","rev_tree":[{"pos":1,"ids":["0280fcc761ed5e99f9fef2f66a00c6fd",{"status":"available"},[]]}],"rev_map":{"1-0280fcc761ed5e99f9fef2f66a00c6fd":3808},"winningRev":"1-0280fcc761ed5e99f9fef2f66a00c6fd","deleted":false,"seq":3808}ÿby-sequenceÿ0000000000003808è'{"name":"aq","description":"App which automates QUnit tests","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"aq","version":"0.0.1","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":">= 0.3.1"},"main":"index","license":"MIT","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"c5bd301d920000a78c5f9e985e939e6703718d19","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.1.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]},"0.0.2":{"name":"aq","version":"0.0.2","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":">= 0.3.1"},"main":"index","license":"MIT","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"f34f5f116e4bfdb29ef333e5486b799386803730","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.2.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]},"0.0.3":{"name":"aq","version":"0.0.3","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":">= 0.3.1"},"main":"index","license":"MIT","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"7874ca1371939bd11fc615778c213cbf75c95b41","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.3.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]},"0.0.4":{"name":"aq","version":"0.0.4","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":">= 0.3.1"},"main":"index","license":"Apache License, Version 2.0","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"5f85cd221a9b7c0d9b38edfbb2094731dfdb1cc8","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.4.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]},"0.0.5":{"name":"aq","version":"0.0.5","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":">= 0.3.1"},"main":"index","license":"Apache License, Version 2.0","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"3295f260e56420f61898433a3a6da79738a2ff97","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.5.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]},"0.0.6":{"name":"aq","version":"0.0.6","description":"App which automates QUnit tests","author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"dependencies":{"socket.io":">= 0.9.0","optimist":"0.3.1"},"main":"index","license":"Apache License, Version 2.0","_npmUser":{"name":"krisk","email":"kirollos@gmail.com"},"_id":"aq@0.0.6","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.5.11-pre","_defaultsLoaded":true,"dist":{"shasum":"33bf3f8c325f059bef8729be1afb2df2a10e7cc1","tarball":"http://registry.npmjs.org/aq/-/aq-0.0.6.tgz"},"maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}]}},"readme":"Automate QUnit tests","maintainers":[{"name":"krisk","email":"kirollos@gmail.com"}],"time":{"modified":"2012-05-13T00:48:15.879Z","created":"2012-04-26T03:22:02.852Z","0.0.1":"2012-04-26T03:22:04.439Z","0.0.2":"2012-04-26T05:41:32.476Z","0.0.3":"2012-04-26T16:50:16.234Z","0.0.4":"2012-04-27T18:28:09.680Z","0.0.5":"2012-04-29T18:56:59.811Z","0.0.6":"2012-05-13T00:48:15.879Z"},"author":{"name":"Kirollos Risk","email":"kirollos@gmail.com"},"repository":{"type":"git","url":"git://github.com/krisk/aq.git"},"_id":"aq","_rev":"1-0280fcc761ed5e99f9fef2f66a00c6fd"}ÿdocument-storeÿant–{"id":"ant","rev":"1-f332db259ea2340d6fe72cbcb8915ec2","rev_tree":[{"pos":1,"ids":["f332db259ea2340d6fe72cbcb8915ec2",{"status":"available"},[]]}],"rev_map":{"1-f332db259ea2340d6fe72cbcb8915ec2":3807},"winningRev":"1-f332db259ea2340d6fe72cbcb8915ec2","deleted":false,"seq":3807}ÿby-sequenceÿ0000000000003807ºG{"name":"ant","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"ant","main":"package.json","version":"0.0.0","_npmJsonOpts":{"file":"/home/nickolay/.npm/ant/0.0.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"ant@0.0.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.1","_defaultsLoaded":true,"dist":{"shasum":"f07cc335a0bce58c508163bcb046a033cf16760e","tarball":"http://registry.npmjs.org/ant/-/ant-0.0.0.tgz"},"scripts":{},"maintainers":[{"name":"samuraijack","email":"nickolay8@gmail.com"}],"directories":{}},"0.2.0":{"name":"ant","description":"Apache Ant Adapter, execute Ant tasks from node","keywords":["ant","build","java"],"homepage":"http://github.com/millermedeiros/node-ant/","version":"0.2.0","author":{"name":"Miller Medeiros","url":"http://blog.millermedeiros.com/"},"repository":{"type":"git","url":"https://github.com/millermedeiros/node-ant.git"},"main":"index.js","bugs":{"url":"https://github.com/millermedeiros/node-ant/issues"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"engines":{"node":"~0.8.0"},"readme":"# node-ant\n\nExperimental [Apache Ant](http://ant.apache.org/) adapter for\n[node.js](http://nodejs.org).\n\nThis is a proof-of-concept more than anything else. Still unsure if it will\nactually work on multiple environments and if it is really a good idea.\n\n\n\n## Why?\n\nMany people been using [node.js to run build\nscripts](http://blog.millermedeiros.com/node-js-as-a-build-script/) and\neveryone is writting the same tasks for the most basic stuff like\ncopying/concateneting/deleting/ziping files and it will take a long time before\n*someone* implements [all the tasks present on\nAnt](http://ant.apache.org/manual/tasksoverview.html).\n\nProjects like [grunt](https://github.com/cowboy/grunt),\n[gear](https://github.com/yahoo/gear), [jake](https://github.com/mde/jake),\n[rivet](https://github.com/jaredhanson/rivet),\n[roto](https://github.com/diy/roto) and many others are all writting their own\ntasks to do the same things. TBH I think a better approach would be to create\nseparate libs that could do each task (or a group of tasks) and that wasn't\ntied to a specific build tool, and create tools that abused this (no need to\nconvert 3rd party lib into a plugin or author a new module just to use the\nmethods inside your build files).\n\nAnt contains [many advanced tasks](http://ant.apache.org/manual/tasksoverview.html)\nand is *battle tested* so it makes sense to reuse them instead of reinventing\nthe wheel.\n\nAnt is also not that easy to install on Windows since you need to configure the\n`ANT_HOME`, `CLASSPATH` and `JAVA_HOME` paths. So it's easier to use\na standalone version of Ant that is distributed together with the\n[npm](http://npmjs.org) package. The Java Runtime is avaialble on most\ncomputers so calling the ant executable should work out of the box on most\ncases.\n\nThe idea is not to write multiple ant ``s, but to treat Ant as\na standalone lib that can be called from a node.js script. Performance isn't\nthat great (since JVM isn't as fast as node) but it is still better than\nwritting error-prone tasks that gets half of the job done.\n\nBuild tools based solely on configuration are doomed to \"fail\" the same way as\nAnt did \"failed\". You can't express all edge-cases with configuration without\ncreating an overly complex system. Some things that could be easily done with\na `for` loop and a few `if/else` are a huge PITA with a descriptive syntax\n(XML/JSON). The main reason why I moved my build scripts to node.js is to the\nget freedom to write new tasks by myself without major pains, locking down your\nbuild to a system that can only be extended by writting plugins that accepts\na simple config object won't scale up. Let's use Ant for what it is good for\n(broad amount of battle tested tasks with flexible config options) and use\nplain JavaScript for those tasks that aren't covered by Ant.\n\nMaybe this project will motivate someone to port the most important Ant tasks\nto plain JavaScript. I still haven't found a single node task that is as\ncomplete the ones provided by Ant, see for instance all the options available\non the [copy task](http://ant.apache.org/manual/Tasks/copy.html) (multiple\n`include`/`exclude`, `filter`, `globmapper`, download internet files,\n`flatten`, etc...).\n\n\n\n## How?\n\nThe idea is to use the Ant as if it was a standalone library that can be called\nfrom node.js, that way you can reuse them in your custom node.js build files\nwhen necessary.\n\nIt will simply convert JSON-like objects into a temporary XML file and execute\nthe standalone version of Ant passing the custom arguments. This tool is just\na \"bridge\" between Node.js and the Ant JAR file.\n\n\n\n## Example\n\nExecute the test file to see a very basic example:\n\n node test\n\nYou can run it from another node.js program:\n\n```js\nvar ant = require('ant');\n\nant.exec({\n // concat task (http://ant.apache.org/manual/Tasks/concat.html)\n concat : {\n fileset : {\n '@dir' : '.',\n include : {\n '@name' : '*.js'\n }\n }\n }\n}, function(err, stdout, stderror){\n // it doesn't throw any errors and also doesn't log the stdout by\n // default that way you can control what you want to do.\n if (stdout) console.log(stdout);\n if (stderror) console.log(stderror);\n if (err) throw err;\n});\n```\n\n\n\n## Documentation\n\nRight now it contains a single method `exec()` that accepts an object with each\ntask and a callback. The tasks are just JSON-like representation of the XML\nmarkup needed to execute each task, `node-ant` will convert it back to XML\nduring the `exec`.\n\n\n### `ant.exec(tasks, [args], callback)`\n\n - **tasks**:\n - JSON-like object containing Ant tasks to be executed.\n - **[args]**:\n - Command line arguments passed to the ant executable.\n - **callback**\n - Function executed after `exec` finishes. Will receive the following\n arguments: (err, stdout, stderr).\n\n\n### JXON syntax\n\nAttributes starts with `@`.\n\n > { foo : { '@bar' : 123 }}\n \n\nThe XML node text value is stored as the actual key value if node doesn't\ncontain attributes and/or child nodes or on a special property `keyValue`.\n\n > {\n foo : 'Lorem Ipsum'\n }\n Lorem Ipsum\n\n > {\n foo : {\n '@bar' : 123,\n keyValue : 'Lorem Ipsum'\n }\n }\n Lorem Ipsum\n\n > {\n concat : {\n fileset : {\n '@dir' : '.',\n include : {\n '@name' : '*.js'\n }\n }\n }\n }\n \n\nUse the [Ant tasks\ndocumentation](http://ant.apache.org/manual/tasksoverview.html) as reference.\n\n\n\n## Important\n\nThis project is on early experimental phase. The way that `ant.exec` is called\nmight change in the future, specially since the\n[JXON](https://developer.mozilla.org/en/JXON) format currently used doesn't\nallow XML nodes with same name that aren't adjacent to each other (object can't\nhave multiple properties with the same key). So I might end up changing the\nformat to something closer to [JSONML](http://www.jsonml.org/) or use some sort\nof special token to differentiate duplicates (eg. `echo#1`, `echo#2`).\n\n\n\n## TODO\n\n - Test on a computer that doesn't have JDK installed.\n - Check if it is possible to ship with a standalone version of JDK for the\n advanced tasks.\n - Make it possible to log to console without waiting the whole task to finish.\n\n\n\n## Requirements\n\n - node.js 0.8.0+\n - Java\n - JDK 1.4+ (depending on which task you use)\n\n\n\n## Changelog\n\n### v0.2.0 (2012/08/03)\n\n - add support to functions on tasks (for [script](http://ant.apache.org/manual/Tasks/script.html) task). [Thanks to @Diullei](https://gist.github.com/3245017)\n - small refactor to jxon to improve readability and autoclose empty tags.\n\n\n### v0.1.0 (2012/08/02)\n\n - initial release.\n\n\n\n## License\n\nnode-ant is distributed under the MIT license.\n\nApache Ant is distributed under the Apache License.\n","_id":"ant@0.2.0","dist":{"shasum":"f4abbe0d6f9cc4f63db5d3a557450288a0f0a394","tarball":"http://registry.npmjs.org/ant/-/ant-0.2.0.tgz"},"maintainers":[{"name":"millermedeiros","email":"miller@millermedeiros.com"}]}},"maintainers":[{"name":"millermedeiros","email":"miller@millermedeiros.com"}],"time":{"modified":"2012-08-03T17:18:55.090Z","created":"2011-09-05T06:40:07.619Z","0.0.0":"2011-09-05T06:40:08.462Z","0.2.0":"2012-08-03T17:18:55.090Z"},"description":"Apache Ant Adapter, execute Ant tasks from node","author":{"name":"Miller Medeiros","url":"http://blog.millermedeiros.com/"},"repository":{"type":"git","url":"https://github.com/millermedeiros/node-ant.git"},"_id":"ant","_rev":"1-f332db259ea2340d6fe72cbcb8915ec2"}ÿdocument-storeÿallocine›{"id":"allocine","rev":"1-7ef29dcf1c68b4a6e2768c47697161cd","rev_tree":[{"pos":1,"ids":["7ef29dcf1c68b4a6e2768c47697161cd",{"status":"available"},[]]}],"rev_map":{"1-7ef29dcf1c68b4a6e2768c47697161cd":3806},"winningRev":"1-7ef29dcf1c68b4a6e2768c47697161cd","deleted":false,"seq":3806}ÿby-sequenceÿ0000000000003806Å:{"name":"allocine","dist-tags":{"latest":"0.1.4"},"versions":{"0.0.1":{"name":"allocine","version":"0.0.1","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./src/Allocine.js","dependencies":{"underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.0.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"69fb17b03113a848081bab33faba55a898e5c1b6","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.0.1.tgz"},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}],"directories":{}},"0.0.2":{"name":"allocine","version":"0.0.2","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./src/Allocine.js","dependencies":{"underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.0.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"d7ec6f8ca67f542a40fea3807ca7a5e030062250","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.0.2.tgz"},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}],"directories":{}},"0.0.3":{"name":"allocine","version":"0.0.3","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./src/Allocine.js","dependencies":{"underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.0.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"786fb9da26dd0460462ea79d744b3342bbaf7029","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.0.3.tgz"},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}],"directories":{}},"0.0.4":{"name":"allocine","version":"0.0.4","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./src/Allocine.js","dependencies":{"underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.0.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"6ce15356d5c725b6ec26d1e8f5c0b6d44d89ff31","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.0.4.tgz"},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}],"directories":{}},"0.0.5":{"name":"allocine","version":"0.0.5","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.0.5","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"218900d3e351542401d6b0ccd3acb911df4f2b0e","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.0.5.tgz"},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]},"0.1.0":{"name":"allocine","version":"0.1.0","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.1.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"8faa95692922f09d94e01d4c8f89b9e20721a664","tarball":"http://registry.npO7òìùmjs.org/allocine/-/allocine-0.1.0.tgz"},"readme":"js.node-allocine\n================","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]},"0.1.1":{"name":"allocine","version":"0.1.1","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.1.1","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"223dbe1b717b3d5b4e944614063129492cc37a5b","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.1.1.tgz"},"readme":"js.node-allocine\n================","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]},"0.1.2":{"name":"allocine","version":"0.1.2","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.1.2","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b10c5d1d2630446bf8c324764638d5c7f798dbbc","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.1.2.tgz"},"readme":"js.node-allocine\n================","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]},"0.1.3":{"name":"allocine","version":"0.1.3","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.1.3","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"143fc312ba630ff95dae2858c99fe99639325c09","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.1.3.tgz"},"readme":"js.node-allocine\n================","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]},"0.1.4":{"name":"allocine","version":"0.1.4","author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"main":"./lib/Allocine.js","dependencies":{"moment":"latest","promised-io":"latest","underscore":"latest"},"_npmUser":{"name":"arcanis","email":"nison.mael@gmail.com"},"_id":"allocine@0.1.4","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"a372bf0a6dbbfda80ab646bec1e8cc2aee6286b6","tarball":"http://registry.npmjs.org/allocine/-/allocine-0.1.4.tgz"},"readme":"js.node-allocine\n================","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}]}},"readme":"","maintainers":[{"name":"arcanis","email":"nison.mael@gmail.com"}],"time":{"modified":"2012-06-08T00:55:54.605Z","created":"2012-06-03T02:03:02.312Z","0.0.1":"2012-06-03T02:03:05.889Z","0.0.2":"2012-06-04T14:12:43.047Z","0.0.3":"2012-06-04T22:46:55.259Z","0.0.4":"2012-06-05T10:26:39.038Z","0.0.5":"2012-06-06T00:23:57.003Z","0.1.0":"2012-06-07T10:22:49.726Z","0.1.1":"2012-06-07T22:38:02.129Z","0.1.2":"2012-06-08T00:10:15.879Z","0.1.3":"2012-06-08T00:21:40.807Z","0.1.4":"2012-06-08T00:55:54.605Z"},"author":{"name":"Maël Nison","email":"nison.mael@gmail.com"},"_id":"allocine","_rev":"1-7ef29dcf1c68b4a6e2768c47697161cd"}!ÿdocument-storeÿSphero-Node-SDK¢{"id":"Sphero-Node-SDK","rev":"1-18c6a465ae9044b5f01b4500766c9f3a","rev_tree":[{"pos":1,"ids":["18c6a465ae9044b5f01b4500766c9f3a",{"status":"available"},[]]}],"rev_map":{"1-18c6a465ae9044b5f01b4500766c9f3a":3805},"winningRev":"1-18c6a465ae9044b5f01b4500766c9f3a","deleted":false,"seq":3805}ÿby-sequenceÿ0000000000003805ò {"name":"Sphero-Node-SDK","description":"SDK for working with Sphero robots","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"Sphero-Node-SDK","description":"SDK for working with Sphero robots","version":"0.1.0","author":{"name":"Dan DeFelippi","url":"http://driverdan.com"},"repository":{"type":"git","url":"git://github.com/driverdan/Sphero-Node-SDK.git"},"directories":{"lib":"./lib"},"main":"./lib/sphero.js","engines":{"node":"~0.6.2"},"dependencies":{"serialport":"0.6.3"},"devDependencies":{},"_npmUser":{"name":"driverdan","email":"dan@driverdan.com"},"_id":"Sphero-Node-SDK@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"667f22960470e21fdbc4a86f8c479192008dfea1","tarball":"http://registry.npmjs.org/Sphero-Node-SDK/-/Sphero-Node-SDK-0.1.0.tgz"},"maintainers":[{"name":"driverdan","email":"dan@driverdan.com"}]}},"readme":"Sphero SDK for NodeJS\n=====================\n\nSDK for controlling a Sphero robot on a POSIX system. Must have a serial port setup for your Bluetooth connection.\n\nLicense: MIT\n","maintainers":[{"name":"driverdan","email":"dan@driverdan.com"}],"time":{"modified":"2012-06-13T21:24:29.339Z","created":"2012-06-13T21:24:27.437Z","0.1.0":"2012-06-13T21:24:29.339Z"},"author":{"name":"Dan DeFelippi","url":"http://driverdan.com"},"repository":{"type":"git","url":"git://github.com/driverdan/Sphero-Node-SDK.git"},"_id":"Sphero-Node-SDK","_rev":"1-18c6a465ae9044b5f01b4500766c9f3a"}ÿdocument-storeÿPictionary{"id":"Pictionary","rev":"1-7fdd1bb76273a0019abecacc97b2e0c6","rev_tree":[{"pos":1,"ids":["7fdd1bb76273a0019abecacc97b2e0c6",{"status":"available"},[]]}],"rev_map":{"1-7fdd1bb76273a0019abecacc97b2e0c6":3804},"winningRev":"1-7fdd1bb76273a0019abecacc97b2e0c6","deleted":false,"seq":3804}ÿby-sequenceÿ0000000000003804µ6{"name":"Pictionary","description":"Enjoyable Pictionary game working with Node.js and Socket.io","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"Pictionary","version":"0.0.1","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.0.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"946ab204b6c5af51d7d6586c58bc9e8cb3d6ce17","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.0.1.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}],"directories":{}},"0.0.2":{"name":"Pictionary","version":"0.0.2","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.0.2","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"fd7d70cf345a9ec68a1633a130fb630a5688073c","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.0.2.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}],"directories":{}},"0.0.3":{"name":"Pictionary","version":"0.0.3","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.0.3","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"0c7105aece2f6423c330e14afbf9260e6769c3eb","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.0.3.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}],"directories":{}},"0.1.0":{"name":"Pictionary","version":"0.1.0","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.1.0","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"7ecbdf27e76d8cdad5913906d94fd62ac69175a2","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.1.0.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}],"directories":{}},"0.1.1":{"name":"Pictionary","version":"0.1.1","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.1.1","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"3aae5e562021f5570512331fe0a41cfabddae07b","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.1.1.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}]},"0.1.2":{"name":"Pictionary","version":"0.1.2","description":"Enjoyable Pictionary game working with Node.js and Socket.io","keywords":["pictionary","draw","drawing","game","socket.io","nodejs","node.js"],"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"dependencies":{"socket.io":"","sanitizer":""},"engine":"node >= 0.4.7","repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_npmUser":{"name":"davefrassoni","email":"davefrassoni@gmail.com"},"_id":"Pictionary@0.1.2","scripts":{"start":"node server.js"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"2bcd73390e667efc693c7665e8dcd9719d2ad19a","tarball":"http://registry.npmjs.org/Pictionary/-/Pictionary-0.1.2.tgz"},"maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}]}},"readme":"# Pictionary #\ncurrent version: 0.0.1\n\n## Description ##\n\n### Enjoyable Pictionary game working with Node.js and Socket.io ###\n\n## Installation ##\n\n### Either download from GitHub or run: ###\n\n\t\tnpm install Pictionary\n\n## Setup ##\n\n1. Run:\n\n\t\tnode server.js\n\n1. Browse to:\n\n\t\thttp://localhost:8080/index.html\n\n1. Modify code as you want\n\n1. Enjoy the Pictionary!","maintainers":[{"name":"davefrassoni","email":"davefrassoni@gmail.com"}],"time":{"modified":"2012-06-26T23:03:44.188Z","created":"2012-05-25T14:51:21.547Z","0.0.1":"2012-05-25T14:51:25.333Z","0.0.2":"2012-05-27T19:49:58.982Z","0.0.3":"2012-05-30T03:45:21.411Z","0.1.0":"2012-06-14T03:37:10.141Z","0.1.1":"2012-06-15T03:23:31.392Z","0.1.2":"2012-06-26T23:03:44.188Z"},"author":{"name":"Dave Frassoni","email":"me@davefrassoni.com","url":"http://davefrassoni.com/"},"repository":{"type":"git","url":"git://github.com/davefrassoni/Pictionary.git"},"_id":"Pictionary","_rev":"1-7fdd1bb76273a0019abecacc97b2e0c6"}ÿdocument-storeÿMonorail.jsž{"id":"Monorail.js","rev":"1-d412db422b2221e38ee81c4a2467c451","rev_tree":[{"pos":1,"ids":["d412db422b2221e38ee81c4a2467c451",{"status":"available"},[]]}],"rev_map":{"1-d412db422b2221e38ee81c4a2467c451":3803},"winningRev":"1-d412db422b2221e38ee81c4a2467c451","deleted":false,"seq":3803}ÿby-sequenceÿ0000000000003803ž^{"name":"Monorail.js","description":"Ultra lightweight MVC for Node.js","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"author":{"name":"Ryan Kelker","url":"https://github.com/runexec"},"name":"Monorail.js","description":"Ultra lightweight MVC for Node.js","version":"1.0.1","homepage":"https://github.com/runexec/Monorail.js","repository":{"type":"git","url":"git://github.com/runexec/Monorail.js.git"},"dependencies":{"express":">=2.5.8","nohm":">=0.9.0-pre2","node-native-zip":">=1.0.1"},"optionalDependencies":{},"engines":{"node":"*"},"bin":{"monorail":"monorail.js"},"_npmUser":{"name":"runexec","email":"theinternet@yandex.com"},"_id":"Monorail.js@1.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"6f506d57d34e3128c953ec814f792e23c249138a","tarball":"http://registry.npmjs.org/Monorail.js/-/Monorail.js-1.0.1.tgz"},"maintainers":[{"name":"runexec","email":"theinternet@yandex.com"}]}},"readme":"[![endorse](http://api.coderwall.com/runexec/endorsecount.png)](http://coderwall.com/runexec)\n#### Monorail.js - Ultra lightweight MVC Framework for Node.js\n\n>**TLDR; Monorail.js will never force you, and uses only what you need.**
\n>Monorail.js **will never force you** to install anything not needed for your project.
\n>The goal is to **use what you need.**
\n>Anything other than creating a project will **always be optional**.
\n>**Scaffold models in seconds**\n\n![Monorail.js Logo](https://github.com/runexec/Monorail.js/raw/master/monorail.js-small.png)\n\n\tnpm install Monorail.js\n\t\nOr start a project right now with Railing.sh\n\n\t./railing.sh Project_Name\n\t\n**No configuration required.**
\nZero Touch Configuration to get you up and running.
\n\n $ ./monorail.js new project example\n Creating Project example\n Making directory example\n Making directory example/static\n Making directory example/static/img\n Making directory example/static/js\n Making directory example/static/css\n Making directory example/themes\n Making directory example/themes/classic\n Making directory example/themes/classic/img\n Making directory example/themes/classic/js\n Making directory example/themes/classic/css\n Making directory example/models\n Making directory example/views\n Making file example/monorail.project\n Making file example/routes.js\n Making file example/redis.config\n Making file example/themes/classic/classic.html\n Making file example/themes/classic/css/classic.css\n Copying libs...\n\n $ cd example\n\n $ cat monorail.project\n name : example\n theme : classic\n express_port : 8123\n\n $ ../monorail.js start server\n Starting Redis...\n Redis Running on Process 3822\n Starting Express\n Express Running on Process 3825\n\nCongratulations. You're DONE!
\n\n# Example\nLets install Mootools and RightJS\n\n\t[user@machine tmp]$ ls \n\tExample README.md lib monorail.js monorail.js-small.png monorail.js.png package.json\n\t\n\t[user@machine tmp]$ cd Example/\n\t\n\t[user@machine Example]$ ../monorail.js\n\tinstall [mootools | rightjs | jquery | dojo | prototype ] ; Install JS Framework in this project\n\tstart server ; Start project Redis & Express server\n\tnew project [project_name] ; Creates project\n\tnew page [page_name] ; Creates new project page\n\t\n\t[user@machine Example]$ ../monorail.js install mootools\n\t[user@machine Example]$ ../monorail.js install rightjs \n\t[user@machine Example]$ tree static/\n\tstatic/\n\t|-- css\n\t|-- img\n\t`-- js\n\t\t |-- mootools-core-1.4.5-full-compat.js\n\t\t `-- right-2.3.1.js\n\n\t3 directories, 2 files\n\n\nMake a new page
\n\n\t$ ../monorail.js new page user\n\nLets view our user view
\n\n\t$ cat views/user.xml \n\t<#CODE#>html_body = 'This code block takes 100% node.js code.';\n\nChange it to this
\n\n\t<#CODE#>html_body = 'Viewing profile of '+username;\n\nLets view our user model
\n\n\t$ cat models/user.js \n\t\n\tvar nohm = require('../lib/nohm').Nohm;\n\tvar redis = require('../lib/nohm/node_modules/redis');\n\tvar client = redis.createClient();\n\t\n\tnohm.setClient(client);\n\tnohm.model('user',{});\n\nLets add a controller to the bottom of route.js\n
\n\n\tapp.get('/user/:name', function(req, res) {\n\t user = req.params.name;\n\t view = loadView('user',{ username: user });\n\t page = railed('Viewing User - '+user, view);\n\t res.send(page);\n\t});\n\n\tapp.listen(express_port);\n \nLets start the server up and point our browser to http://localhost:8123/user/any_name_here\n\n\t$ ../monorail.js start server\n\tStarting Redis...\n\tRedis Running on Process 3822\n\tStarting Express\n\tExpress Running on Process 3825\n\nThere's more examples in the wiki :)\n\n# Scaffolding in Node.js\n\t\t[user@machine Exampel]$ ../monorial.js generate blogpost title:string pubDate:timestamp\n\t\t[user@machine Example]$ cat models/blogpost.js\n\t\tvar nohm = require('../lib/nohm').Nohm;\n\t\tvar redis = require('../lib/nohm/node_modules/redis');\n\t\tvar client = redis.createClient();\n\n\t\tnohm.setClient(client);\n\t\tnohm.model('blogpost', {\n\t\t\t idGenerator: 'increment',\n\t\t\t properties: {\n\t\t\t\t title: {\n\t\t\t\t type: 'string',\n\t\t\t\t validations: ['notEmpty']\n\t\t\t\t },\n\t\t\t\t pubDate: {\n\t\t\t\t type: 'timestamp',\n\t\t\t\t defaultValue: new Date()\n\t\t\t\t }\n\t\t\t }\n\t\t});\n\n# What's new in version 1\n\n\n\n\t\t[user@machine Monorail.js]$ ./monorail.js new project Example\n\t\tCreating Project Example\n\t\tMaking directory Example\n\t\tMaking directory Example/static\n\t\tMaking directory Example/static/img\n\t\tMaking directory Example/static/js\n\t\tMaking directory Example/static/css\n\t\tMaking directory Example/themes\n\t\tMaking directory Example/themes/classic\n\t\tMaking directory Example/themes/classic/img\n\t\tMaking directory Example/themes/classic/js\n\t\tMaking directory Example/themes/classic/css\n\t\tMaking directory Example/models\n\t\tMaking directory Example/views\n\t\tMaking file Example/monorail.project\n\t\tMaking file Example/routes.js\n\t\tMaking file Example/redis.config\n\t\tMaking file Example/themes/classic/classic.html\n\t\tMaking file Example/themes/classic/css/classic.css\n\t\tCopying libs...\n\t\t[user@machine Monorail.js]$ cd Example/\n\t\t[user@machine Example]$ ls\n\t\tlib models monorail.project redis.config routes.js static themes views\n\n\t\t[user@machine Example]$ ../monorail.js \n\t\thashtree \n\t\t|_ Return a hash tree of the current project\n\n\t\tinstall [mootools | rightjs | jquery | dojo | prototype ] \n\t\t|_ Install JS Framework in this project\n\n\t\tnew model [model_name] \n\t\t|_ Creates model w/ no view\n\n\t\tnew page [page_name] \n\t\t|_ Creates new project page\n\n\t\tnew project [project_name] \n\t\t|_ Creates project\n\n\t\tnew view [view_name] \n\t\t|_ Creates view w/ no model\n\n\t\treset project \n\t\t|_ Removes files from static, models, and views\n\n\t\tsnapshot [ create | clean ] \n\t\t|_ backup your models, views, and routes\n\n\t\tstart server \n\t\t|_ Start project Redis & Express server\n\n\t\tsummary \n\t\t|_ Returns a project summary\n\n\t\tupdate \n\t\t|_ Download the latest Monorail.js (script only)\n\n\t\t[user@machine Example]$ ../monorail.js snapshot create\n\t\tSaved\n\t\t[user@machine Example]$ ls -l snapshots/\n\t\ttotal 16\n\t\t-rw-r--r-- 1 user users 3371 Mar 29 00:58 2012.03.28T15.58.43.524Z.zip\n\t\t-rw-r--r-- 1 user users 3371 Mar 29 00:58 2012.03.28T15.58.45.467Z.zip\n\t\t-rw-r--r-- 1 user users 3371 Mar 29 00:58 2012.03.28T15.58.46.133Z.zip\n\t\t-rw-r--r-- 1 user users 3371 Mar 29 00:58 2012.03.28T15.58.46.829Z.zip\n\t\t[user@machine Example]$ ../monorail.js snapshot clean\n\n\t\tWARNING: All snapshots will be DELETED!\n\t\tType continue to continue: continue\n\t\tSnapshots deleted.\n\n\t\t[user@machine Example]$ ls -l snapshots/\n\t\ttotal 0\n\t\t\n\t\t[user@machine Example]$ ../monorail.js new page home\n\t\t[user@machine Example]$ ../monorail.js new view about\n\t\t[user@machine Example]$ ../monorail.js new model user\n\t\t[user@machine Example]$ ../monorail.js summary \n\t\tviews: 2\n\t\tmodels: 2\n\t\tthemes: 1\n\t\t\n\t\t[user@machine Example]$ ../monorail.js hashtree\n\t\t./views/about.xml: 72c05ce377c77bf828f19290f6a984f3133cabbb\n\t\t./views/home.xml: 6a1f00f99f017f79d7f683e080f7ebdfa5783211\n\t\t./models/user.js: be9f2b1e2cf13d2c7ecdb65104b110593718600f\n\t\t./models/home.js: 5bd607fa91b475405f49ba6314552c0ede345e99\n\t\t./routes.js: cf579e914e61a235aab5ad25fc72d4052c42fa3d\n\t\t./redis.config: c220348239ca26abdb54651cd7f340b2a98f0e83\n\t\t./monorail.project: 958f07662d6ca27b36d744703094ed8d1e761341\n\t\t\n\t\t[user@machine Example]$ ../monorail.js reset project\n\n\t\tWARNING: All files in the views, models, and static folders will be DELETED!\n\t\tType the word continue to continue: continue\n\t\tCleaning up ./views/about.xml...\n\t\tCleaning up ./views/home.xml...\n\t\tCleaning up ./models/home.js...\n\t\tCleaning up ./models/user.js...\n\t\tYour project has been reset :)\n\t\t\n\t\t[user@machine Example]$ ../monorail.js update\n\t\tSaving to new_monorail.js\n\t\t\n\t\t[user@machine Example]$ du -hs new_monorail.js \n\t\t888K\tnew_monorail.js\n\n\n# Documentation\n\n\n\n###### Monorail.js\nhttps://github.com/runexec/Monorail.js/wiki\n\n###### JS Frameworks\nhttp://docs.jquery.com/Main_Page
\nhttp://mootools.net/docs/core
\nhttp://rightjs.org/docs
\nhttp://api.prototypejs.org/
\nhttp://dojotoolkit.org/documentation/ \n\n###### Redis ORM\nhttp://maritz.github.com/nohm/\n\n###### Redis\nhttps://github.com/mranney/node_redis\n\n###### Express Routing, Cookies, and Sessions\nhttp://expressjs.com/guide.html#session-support
\nhttp://expressjs.com/guide.html#http-methods
\nhttp://expressjs.com/guide.html#routing
\nhttp://expressjs.com/guide.html#passing-route%20control
\nhttp://expressjs.com/guide.html#route-middleware
\nhttp://expressjs.com/guide.html#route-param%20pre-conditions
\n\t\n# Compatibility\nIt has currently only been tested on unix, but should work on windows with little or no changes.\n\nBuilt and tested with node v0.6.13
\nnohm ORM vs 0.9.0
\nexpress 2.58
\n\n# TODO\n\n\n
\nAdd easy html.escape/html.unescape functions
\nCreate examples for the new switches below
\nAdd scaffolding
\nAdd update Monorail.js switch
\nAdd reset project switch
\nAdd create snapshot switch
\nAdd clear snapshots switch
\nAdd build hash tree switch
\nAdd create model (independent of view) switch
\nAdd create view (independent of model) switch
\nAdd project summary switch
\n(MAYBE) Add recover snapshot switch  Never
\n(MAYBE) Add compare snapshot switch  Never
\nTheme/Template documentation
\nMore Wiki-Examples coming very very soon.
\nHeavy Bug Testing
\n\n\n# License\n\nMIT License Copyright (c) 2012 Ryan Kelker and individual contributors.\n","maintainers":[{"name":"runexec","email":"theinternet@yandex.com"}],"time":{"modified":"2012-05-14T11:56:49.984Z","created":"2012-05-14T11:56:47.319Z","1.0.1":"2012-05-14T11:56:49.984Z"},"author":{"name":"Ryan Kelker","url":"https://github.com/runexec"},"repository":{"type":"git","url":"git://github.com/runexec/Monorail.js.git"},"_id":"Monorail.js","_rev":"1-d412db422b2221e38ee81c4a2467c451"}ÿdocument-storeÿDOM–{"id":"DOM","rev":"1-cd4076cc321bae466f2a2515e214dff0","rev_tree":[{"pos":1,"ids":["cd4076cc321bae466f2a2515e214dff0",{"status":"available"},[]]}],"rev_map":{"1-cd4076cc321bae466f2a2515e214dff0":3802},"winningRev":"1-cd4076cc321bae466f2a2515e214dff0","deleted":false,"seq":3802}ÿby-sequenceÿ0000000000003802à{"name":"DOM","description":"Templating without HTML.","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"author":{"name":"Arpith Siromoney","email":"arpith@shelf.name","url":"http://twitter.com/arpith"},"name":"DOM","description":"Template engine without the HTML.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/arpith/DOM.js.git"},"engines":{"node":"~0.6.17"},"main":"DOM.js","_npmUser":{"name":"arpith","email":"arpith@shelf.name"},"_id":"DOM@0.0.1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"b7e9b401bad91f0b1e85916d9364db3cd372f6e4","tarball":"http://registry.npmjs.org/DOM/-/DOM-0.0.1.tgz"},"readme":"","maintainers":[{"name":"arpith","email":"arpith@shelf.name"}]},"0.0.2":{"author":{"name":"Arpith Siromoney","email":"arpith@shelf.name","url":"http://twitter.com/arpith"},"name":"DOM","description":"Templating without HTML. Eventually.","version":"0.0.2","repository":{"type":"git","url":"git://github.com/arpith/DOM.js.git"},"engines":{"node":"~0.6.17"},"main":"DOM.js","_npmUser":{"name":"arpith","email":"arpith@shelf.name"},"_id":"DOM@0.0.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"2b3bf18bb32fee9d1058886becd80c95e8531130","tarball":"http://registry.npmjs.org/DOM/-/DOM-0.0.2.tgz"},"readme":"","maintainers":[{"name":"arpith","email":"arpith@shelf.name"}]},"0.0.3":{"author":{"name":"Arpith Siromoney","email":"arpith@shelf.name","url":"http://twitter.com/arpith"},"name":"DOM","description":"Templating without HTML.","version":"0.0.3","repository":{"type":"git","url":"git://github.com/arpith/DOM.js.git"},"engines":{"node":"~0.6.17"},"main":"DOM.js","_npmUser":{"name":"arpith","email":"arpith@shelf.name"},"_id":"DOM@0.0.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"241ae6ef0286f10ebc3be80f6c5111047ab803da","tarball":"http://registry.npmjs.org/DOM/-/DOM-0.0.3.tgz"},"readme":"","maintainers":[{"name":"arpith","email":"arpith@shelf.name"}]}},"readme":"","maintainers":[{"name":"arpith","email":"arpith@shelf.name"}],"time":{"modified":"2012-05-12T17:31:55.512Z","created":"2012-05-12T12:54:21.688Z","0.0.1":"2012-05-12T12:54:21.897Z","0.0.2":"2012-05-12T17:09:57.189Z","0.0.3":"2012-05-12T17:31:55.512Z"},"author":{"name":"Arpith Siromoney","email":"arpith@shelf.name","url":"http://twitter.com/arpith"},"repository":{"type":"git","url":"git://github.com/arpith/DOM.js.git"},"_id":"DOM","_rev":"1-cd4076cc321bae466f2a2515e214dff0"}ÿdocument-storeÿ3scale-senico {"id":"3scale-senico","rev":"1-88b1996dd362cacfbbc54620931e8771","rev_tree":[{"pos":1,"ids":["88b1996dd362cacfbbc54620931e8771",{"status":"available"},[]]}],"rev_map":{"1-88b1996dd362cacfbbc54620931e8771":3801},"winningRev":"1-88b1996dd362cacfbbc54620931e8771","deleted":false,"seq":3801}ÿby-sequenceÿ0000000000003801¥7{"name":"3scale-senico","description":"Client for 3Scale Networks API","dist-tags":{"latest":"0.3.3"},"versions":{"0.3.2":{"name":"3scale-senico","description":"Client for 3Scale Networks API","version":"0.3.2","homepage":"http://www.3scale.net","repository":{"type":"git","url":"git://github.com/3scale/3scale_ws_api_for_nodejs.git"},"author":{"name":"3scale","email":"support@3scale.net"},"contributors":[{"name":"Carlos Villuendas","email":"carlosvillu@3scale.net"},{"name":"Michal Cichra","email":"michal@3scale.net"},{"name":"Daniel Stevens","email":"daniel.stevens@senicolabs.com"}],"main":"lib/index.js","bugs":{"url":"http://github.com/3scale/3scale_ws_api_for_nodejs/issues"},"keywords":["api","authorization","3scale","web"],"scripts":{"prepublish":"coffee --bare -o lib -c src","test":"vows test/* --spec"},"directories":{"lib":"./lib"},"dependencies":{"libxmljs":"*","qs":"*"},"devDependencies":{"coffee-script":"1.x","vows":"0.5.x"},"engines":{"node":"0.8.x"},"optionalDependencies":{},"readme":"# 3scale integration plugin for JavaScript/CoffeeScript/Node.js applications [![Build Status](https://secure.travis-ci.org/3scale/3scale_ws_api_for_nodejs.png?branch=master)](http://travis-ci.org/3scale/3scale_ws_api_for_nodejs)\n\n3scale is an API Infrastructure service which handles API Keys, Rate Limiting, Analytics, Billing Payments and Developer Management.\nIncludes a configurable API dashboard and developer portal CMS.\nMore product stuff at http://www.3scale.net/, support information at http://support.3scale.net/.\n\n#### Requirements\n\n* libxml2 library\n\n#### Installation\n\nThe module is delivered through the package manager npm, so that the installation should be easy as: `npm install 3scale`\n\n#### Testing\n\nTo run tests: `vows test/* --spec`\n\nIn the root of the project.\n\n#### Usage\n\n var Client = require('3scale').Client;\n\n client = new Client(\"your provider key\");\n\n client.authorize({app_id: \"your application id\", app_key: \"your application key\"}, function(response){\n sys.log(sys.inspect(response));\n });\n\n // Or for reports\n\n var trans = [\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1}},\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1000}}\n ]\n\n client.report(trans, function(response){\n sys.log(sys.inspect(response));\n });\n\n","_id":"3scale-senico@0.3.2","dist":{"shasum":"67ceaec0f86d0b4ec91dddbc1e9f2161365ce3fc","tarball":"http://registry.npmjs.org/3scale-senico/-/3scale-senico-0.3.2.tgz"},"maintainers":[{"name":"senico","email":"daniel.stevens@senicolabs.com"}]},"0.3.3":{"name":"3scale-senico","description":"Client for 3Scale Networks API","version":"0.3.3","homepage":"http://www.3scale.net","repository":{"type":"git","url":"git://github.com/3scale/3scale_ws_api_for_nodejs.git"},"author":{"name":"3scale","email":"support@3scale.net"},"contributors":[{"name":"Carlos Villuendas","email":"carlosvillu@3scale.net"},{"name":"Michal Cichra","email":"michal@3scale.net"},{"name":"Daniel Stevens","email":"daniel.stevens@senicolabs.com"}],"main":"lib/index.js","bugs":{"url":"http://github.com/3scale/3scale_ws_api_for_nodejs/issues"},"keywords":["api","authorization","3scale","web"],"scripts":{"prepublish":"coffee --bare -o lib -c src","test":"vows test/* --spec"},"directories":{"lib":"./lib"},"dependencies":{"libxmljs":"*","qs":"*"},"devDependencies":{"coffee-script":"1.x","vows":"0.5.x"},"engines":{"node":"0.8.x"},"optionalDependencies":{},"readme":"# 3scale integration plugin for JavaScript/CoffeeScript/Node.js applications [![Build Status](https://secure.travis-ci.org/3scale/3scale_ws_api_for_nodejs.png?branch=master)](http://travis-ci.org/3scale/3scale_ws_api_for_nodejs)\n\n3scale is an API Infrastructure service which handles API Keys, Rate Limiting, Analytics, Billing Payments and Developer Management.\nIncludes a configurable API dashboard and developer portal CMS.\nMore product stuff at http://www.3scale.net/, support inform¼I]ÕÓ ation at http://support.3scale.net/.\n\n#### Requirements\n\n* libxml2 library\n\n#### Installation\n\nThe module is delivered through the package manager npm, so that the installation should be easy as: `npm install 3scale`\n\n#### Testing\n\nTo run tests: `vows test/* --spec`\n\nIn the root of the project.\n\n#### Usage\n\n var Client = require('3scale').Client;\n\n client = new Client(\"your provider key\");\n\n client.authorize({app_id: \"your application id\", app_key: \"your application key\"}, function(response){\n sys.log(sys.inspect(response));\n });\n\n // Or for reports\n\n var trans = [\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1}},\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1000}}\n ]\n\n client.report(trans, function(response){\n sys.log(sys.inspect(response));\n });\n\n","_id":"3scale-senico@0.3.3","dist":{"shasum":"83f4aff7ff67a7ebdd6f8cdd3c85120ff0645785","tarball":"http://registry.npmjs.org/3scale-senico/-/3scale-senico-0.3.3.tgz"},"maintainers":[{"name":"senico","email":"daniel.stevens@senicolabs.com"}]}},"readme":"# 3scale integration plugin for JavaScript/CoffeeScript/Node.js applications [![Build Status](https://secure.travis-ci.org/3scale/3scale_ws_api_for_nodejs.png?branch=master)](http://travis-ci.org/3scale/3scale_ws_api_for_nodejs)\n\n3scale is an API Infrastructure service which handles API Keys, Rate Limiting, Analytics, Billing Payments and Developer Management.\nIncludes a configurable API dashboard and developer portal CMS.\nMore product stuff at http://www.3scale.net/, support information at http://support.3scale.net/.\n\n#### Requirements\n\n* libxml2 library\n\n#### Installation\n\nThe module is delivered through the package manager npm, so that the installation should be easy as: `npm install 3scale`\n\n#### Testing\n\nTo run tests: `vows test/* --spec`\n\nIn the root of the project.\n\n#### Usage\n\n var Client = require('3scale').Client;\n\n client = new Client(\"your provider key\");\n\n client.authorize({app_id: \"your application id\", app_key: \"your application key\"}, function(response){\n sys.log(sys.inspect(response));\n });\n\n // Or for reports\n\n var trans = [\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1}},\n { \"app_id\": \"your application id\", \"usage\": {\"hits\": 1000}}\n ]\n\n client.report(trans, function(response){\n sys.log(sys.inspect(response));\n });\n\n","maintainers":[{"name":"senico","email":"daniel.stevens@senicolabs.com"}],"time":{"modified":"2012-08-08T20:57:56.674Z","created":"2012-08-08T20:48:35.003Z","0.3.2":"2012-08-08T20:48:36.098Z","0.3.3":"2012-08-08T20:57:56.674Z"},"author":{"name":"3scale","email":"support@3scale.net"},"repository":{"type":"git","url":"git://github.com/3scale/3scale_ws_api_for_nodejs.git"},"_id":"3scale-senico","_rev":"1-88b1996dd362cacfbbc54620931e8771"}