{"_id":"body","_rev":"291700","name":"body","description":"Body parsing","dist-tags":{"latest":"5.1.0"},"maintainers":[{"name":"raynos","email":""}],"time":{"modified":"2021-06-03T18:51:47.000Z","created":"2012-09-23T21:04:44.602Z","5.1.0":"2015-06-20T04:31:30.810Z","5.0.0":"2015-02-09T20:21:29.776Z","4.6.0":"2015-02-03T20:20:36.442Z","4.5.0":"2014-07-14T04:28:41.720Z","4.4.2":"2013-11-27T21:10:51.422Z","4.4.1":"2013-11-27T20:57:37.291Z","4.3.1":"2013-11-27T20:26:42.255Z","4.2.1":"2013-11-27T05:47:30.606Z","4.1.1":"2013-11-27T05:36:39.739Z","4.0.2":"2013-11-27T03:54:33.997Z","4.0.1":"2013-11-27T03:50:56.845Z","3.1.2":"2013-11-25T08:58:54.035Z","3.1.1":"2013-11-25T08:35:49.966Z","3.0.1":"2013-11-25T07:57:26.499Z","2.0.1":"2013-06-20T18:35:19.144Z","1.1.1":"2013-05-22T08:52:16.393Z","1.1.0":"2013-05-20T07:42:09.670Z","1.0.3":"2013-05-09T21:20:15.226Z","1.0.2":"2013-05-09T21:15:21.575Z","1.0.1":"2013-04-26T21:27:15.698Z","0.1.0":"2012-09-23T21:04:44.602Z"},"users":{"qawemlilo":true,"substack":true,"joakin":true,"wenbing":true,"nichoth":true,"akiva":true,"nickleefly":true,"itonyyo":true,"bret":true,"kparkov":true,"hecto932":true,"qubyte":true,"cable023":true,"nomemires":true,"irliao":true,"vbv":true,"snowdream":true,"j.su":true,"moueza":true,"flozz":true,"desmondddd":true,"zanner":true,"camus":true,"jsbilton":true,"chatm":true,"robmcguinness":true,"crazy4groovy":true,"shuoshubao":true,"yichan":true,"tdmalone":true,"danday74":true},"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"versions":{"5.1.0":{"name":"body","version":"5.1.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"continuable-cache":"^0.3.1","error":"^7.0.0","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","hammock":"^1.0.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/index.js"},"gitHead":"d0f0d98a923b8690d694dcc4272b5ce998470d6e","_id":"body@5.1.0","_shasum":"e4ba0ce410a46936323367609ecb4e6553125069","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.10.32","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"dist":{"shasum":"e4ba0ce410a46936323367609ecb4e6553125069","size":5560,"noattachment":false,"key":"/body/-/body-5.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-5.1.0.tgz"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1434774690810,"_cnpm_publish_time":1434774690810,"_hasShrinkwrap":false},"5.0.0":{"name":"body","version":"5.0.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"continuable-cache":"^0.3.1","error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","hammock":"^1.0.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/index.js"},"gitHead":"4180f443ed616bd79a7e7e78929ae3d8a852fb54","_id":"body@5.0.0","_shasum":"7b7d1397f5956284992c8113497dba4695519286","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"dist":{"shasum":"7b7d1397f5956284992c8113497dba4695519286","size":5534,"noattachment":false,"key":"/body/-/body-5.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-5.0.0.tgz"},"directories":{},"publish_time":1423513289776,"_cnpm_publish_time":1423513289776,"_hasShrinkwrap":false},"4.6.0":{"name":"body","version":"4.6.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","hammock":"^1.0.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/index.js"},"gitHead":"bbb63bf00f3a1eb06c69230263ae74b1e20ec82a","_id":"body@4.6.0","_shasum":"50d872d653c85e586efaf4d90b738cec7cf5b7a6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"dist":{"shasum":"50d872d653c85e586efaf4d90b738cec7cf5b7a6","size":5384,"noattachment":false,"key":"/body/-/body-4.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.6.0.tgz"},"directories":{},"publish_time":1422994836442,"_cnpm_publish_time":1422994836442,"_hasShrinkwrap":false},"4.5.0":{"name":"body","version":"4.5.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"_id":"body@4.5.0","_shasum":"6bc3f40400b5bc909b0f4f17f25c9fc6c74a9a58","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"dist":{"shasum":"6bc3f40400b5bc909b0f4f17f25c9fc6c74a9a58","size":4900,"noattachment":false,"key":"/body/-/body-4.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.5.0.tgz"},"directories":{},"publish_time":1405312121720,"_cnpm_publish_time":1405312121720,"_hasShrinkwrap":false},"4.4.2":{"name":"body","version":"4.4.2","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.4.2","dist":{"shasum":"9a08398fa8fa07aa9186bb29ee67892cf4661f23","size":4914,"noattachment":false,"key":"/body/-/body-4.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.4.2.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385586651422,"_cnpm_publish_time":1385586651422,"_hasShrinkwrap":false},"4.4.1":{"name":"body","version":"4.4.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.4.1","dist":{"shasum":"49730d8b893430bc07afb9f501a42352c66adf16","size":4917,"noattachment":false,"key":"/body/-/body-4.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.4.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385585857291,"_cnpm_publish_time":1385585857291,"_hasShrinkwrap":false},"4.3.1":{"name":"body","version":"4.3.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.3.1","dist":{"shasum":"eb89e6a9581157cba95a619a7a653d82e2efa9f5","size":4895,"noattachment":false,"key":"/body/-/body-4.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.3.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385584002255,"_cnpm_publish_time":1385584002255,"_hasShrinkwrap":false},"4.2.1":{"name":"body","version":"4.2.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.2.1","dist":{"shasum":"512d30c1be3fea90316575856a60fb52c0ab132d","size":4581,"noattachment":false,"key":"/body/-/body-4.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.2.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385531250606,"_cnpm_publish_time":1385531250606,"_hasShrinkwrap":false},"4.1.1":{"name":"body","version":"4.1.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"error":"~2.0.4","raw-body":"~1.1.0","safe-json-parse":"~1.0.1"},"devDependencies":{"after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.1.1","dist":{"shasum":"33419d27284c021fe69da768a4e22ec315d72e63","size":4135,"noattachment":false,"key":"/body/-/body-4.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.1.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385530599739,"_cnpm_publish_time":1385530599739,"_hasShrinkwrap":false},"4.0.2":{"name":"body","version":"4.0.2","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","error":"~2.0.4","raw-body":"~1.1.0"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.0.2","dist":{"shasum":"8ed229971366b4d799da1fa0ca4e0b58e75d7208","size":2897,"noattachment":false,"key":"/body/-/body-4.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.0.2.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385524473997,"_cnpm_publish_time":1385524473997,"_hasShrinkwrap":false},"4.0.1":{"name":"body","version":"4.0.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","error":"~2.0.4","raw-body":"git://github.com/Raynos/raw-body"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@4.0.1","dist":{"shasum":"35a23ac874e789dcb29d3247d9077d4943191181","size":2896,"noattachment":false,"key":"/body/-/body-4.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-4.0.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385524256845,"_cnpm_publish_time":1385524256845,"_hasShrinkwrap":false},"3.1.2":{"name":"body","version":"3.1.2","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","error":"~2.0.4"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@3.1.2","dist":{"shasum":"9cfc446cd96cec165cfbf919837fe4e1cc692dea","size":3272,"noattachment":false,"key":"/body/-/body-3.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-3.1.2.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385369934035,"_cnpm_publish_time":1385369934035,"_hasShrinkwrap":false},"3.1.1":{"name":"body","version":"3.1.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","error":"~2.0.4"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@3.1.1","dist":{"shasum":"d880a1e11e7fe034aefda9220c669b042ef5d3dd","size":3146,"noattachment":false,"key":"/body/-/body-3.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-3.1.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385368549966,"_cnpm_publish_time":1385368549966,"_hasShrinkwrap":false},"3.0.1":{"name":"body","version":"3.0.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~2.3.0","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@3.0.1","dist":{"shasum":"635bfaed00328061fb4af28c05967e17737ed5a4","size":2764,"noattachment":false,"key":"/body/-/body-3.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-3.0.1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1385366246499,"_cnpm_publish_time":1385366246499,"_hasShrinkwrap":false},"2.0.1":{"name":"body","version":"2.0.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","continuable":"~0.2.3"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@2.0.1","dist":{"shasum":"1d2fab85ff3f10f500167ec9aa356a19efb8a390","size":2943,"noattachment":false,"key":"/body/-/body-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-2.0.1.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1371753319144,"_cnpm_publish_time":1371753319144,"_hasShrinkwrap":false},"1.1.1":{"name":"body","version":"1.1.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","continuable":"~0.2.3"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@1.1.1","dist":{"shasum":"fd5c245f8c1c5509290683b8609b6be7a6fe7c6a","size":2855,"noattachment":false,"key":"/body/-/body-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-1.1.1.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1369212736393,"_cnpm_publish_time":1369212736393,"_hasShrinkwrap":false},"1.1.0":{"name":"body","version":"1.1.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1","continuable":"~0.2.3"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@1.1.0","dist":{"shasum":"93e34b90ef6a2f46feeeaa7c97d926d7017da4a0","size":2783,"noattachment":false,"key":"/body/-/body-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-1.1.0.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1369035729670,"_cnpm_publish_time":1369035729670,"_hasShrinkwrap":false},"1.0.3":{"name":"body","version":"1.0.3","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"qs":"~0.6.1"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@1.0.3","dist":{"shasum":"6559bc9bacff3cfc54a87f67ff3f6b93d211e489","size":2660,"noattachment":false,"key":"/body/-/body-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-1.0.3.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1368134415226,"_cnpm_publish_time":1368134415226,"_hasShrinkwrap":false},"1.0.2":{"name":"body","version":"1.0.2","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"continuable":"git://github.com/Raynos/continuable","qs":"~0.6.1"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3","process":"~0.5.1"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@1.0.2","dist":{"shasum":"37744631b53803024cf558c81dcf914354279c00","size":2687,"noattachment":false,"key":"/body/-/body-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-1.0.2.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1368134121575,"_cnpm_publish_time":1368134121575,"_hasShrinkwrap":false},"1.0.1":{"name":"body","version":"1.0.1","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"content-types":"~0.1.0","continuable":"git://github.com/Raynos/continuable","qs":"~0.6.1"},"devDependencies":{"tap":"0.2.5","after":"~0.7.0","test-server":"~0.1.3","send-data":"~1.0.1","tape":"~0.3.3"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"node ./test/integration.js"},"readmeFilename":"README.md","_id":"body@1.0.1","dist":{"shasum":"592c67579ab51a33105dd7eeb09ae41acbb46ccf","size":2954,"noattachment":false,"key":"/body/-/body-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-1.0.1.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1367011635698,"_cnpm_publish_time":1367011635698,"_hasShrinkwrap":false},"0.1.0":{"name":"body","version":"0.1.0","description":"Body parsing","keywords":[],"author":{"name":"Raynos","email":"raynos2@gmail.com"},"repository":{"type":"git","url":"git://github.com/Raynos/body.git"},"main":"index","homepage":"https://github.com/Raynos/body","contributors":[{"name":"Jake Verbaten"}],"bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"},"dependencies":{"content-types":"~0.1.0"},"devDependencies":{"tap":"0.2.5","after":"~0.6.0","test-server":"0.0.1","send-data":"~0.1.0"},"licenses":[{"type":"MIT","url":"http://github.com/Raynos/body/raw/master/LICENSE"}],"scripts":{"test":"tap --stderr --tap ./test"},"_id":"body@0.1.0","dist":{"shasum":"e714fe28cd8848aa34cdf2c9f242bbe2e15d1cd8","size":2507,"noattachment":false,"key":"/body/-/body-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/body/download/body-0.1.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"raynos","email":"raynos2@gmail.com"},"maintainers":[{"name":"raynos","email":""}],"directories":{},"publish_time":1348434284602,"_cnpm_publish_time":1348434284602,"_hasShrinkwrap":false}},"readme":"# body [![build status][1]][2]\n\nBody parsing\n\nOriginally taken from [npm-www](https://github.com/isaacs/npm-www)\n\n## Example\n\n```js\nvar textBody = require(\"body\")\nvar jsonBody = require(\"body/json\")\nvar formBody = require(\"body/form\")\nvar anyBody = require(\"body/any\")\nvar http = require(\"http\")\nvar sendJson = require(\"send-data/json\")\n\nhttp.createServer(function handleRequest(req, res) {\n    function send(err, body) {\n        sendJson(req, res, body)\n    }\n\n    if (req.url === \"/body\") {\n        // all functions can be called with (req, cb)\n        textBody(req, send)\n    } else if (req.url === \"/form\") {\n        // all functions can be called with (req, opts, cb)\n        formBody(req, {}, send)\n    } else if (req.url === \"/json\") {\n        // all functions can be called with (req, res, cb)\n        jsonBody(req, res, send)\n    } else if (req.url === \"/any\") {\n        // all functions can be called with (req, res, opts, cb)\n        anyBody(req, res, {}, send)\n    }\n})\n```\n\n`body` simply parses the request body and returns it in the callback. `jsonBody` and `formBody` call JSON.parse and querystring.parse respectively on the body.\n\nanyBody will detect the content-type of the request and use the appropiate body method.\n\n## Example generators\n\nYou can use `body` with generators as the body functions will\n    return a continuable if you don't pass a callback.\n\n```js\nvar http = require(\"http\")\nvar Router = require(\"routes-router\")\nvar jsonBody = require(\"body/json\")\nvar formBody = require(\"body/form\")\n// async turns a generator into an async function taking a cb\nvar async = require(\"gens\")\n\n// the router works with normal async functions.\n// router automatically handles errors as 500 responses\nvar app = Router({\n    // do whatever you want. the jsonBody error would go here\n    errorHandler: function (req, res, err) {\n        res.statusCode = 500\n        res.end(err.message)\n    }\n})\n\napp.addRoute(\"/json\", async(function* (req, res) {\n    // if jsonBody has an error it just goes to the cb\n    // in the called in the router. and it does the correct thing\n    // it shows your 500 page.\n    var body = yield jsonBody(req, res)\n\n    res.setHeader(\"content-type\", \"application/json\")\n    res.end(JSON.stringify(body))\n}))\n\napp.addRoute(\"/form\", async(function* (req, res) {\n    var body = yield formBody(req, res)\n\n    res.setHeader(\"content-type\", \"application/json\")\n    res.end(JSON.stringify(body))\n}))\n\n// app returned from the router is just a function(req, res) {}\n// that dispatches the req/res to the correct route based on\n// the routers routing table & req.url\nhttp.createServer(app).listen(8080)\n```\n\n## Documentation\n\n### `textBody(req, res?, opts?, cb<Error, String>)`\n\n```ocaml\ntextBody := (\n    req: HttpRequest,\n    res?: HttpResponse,\n    opts?: {\n        limit?: Number,\n        cache?: Boolean,\n        encoding?: String\n    },\n    cb: Callback<err: Error, bodyPayload: String>\n) => void\n```\n\n`textBody` allows you to get the body from any readable stream.\nIt will read the entire content of the stream into memory and\ngive it back to you in the callback.\n\n - `limit`: You can set `opts.limit` to a custom number to change the \n    limit at which `textBody` gives up. By default it will only\n    read a 1MB body, if a stream contains more then 1MB it returns\n    an error. This prevents someone attacking your HTTP server\n    with an infinite body causing an out of memory attack.\n - `encoding`: You can set `encoding`. All encodings that are valid on a \n    [`Buffer`](http://nodejs.org/api/buffer.html#buffer_buffer) are\n    valid options. It defaults to `'utf8'`\n\n```js\nvar textBody = require(\"body\")\nvar http = require(\"http\")\n\nhttp.createServer(function (req, res) {\n    textBody(req, res, function (err, body) {\n        // err probably means invalid HTTP protocol or some shiz.\n        if (err) {\n            res.statusCode = 500\n            return res.end(\"NO U\")\n        }\n\n        // I am an echo server\n        res.end(body)\n    })\n}).listen(8080)\n```\n\n### `formBody(req, res?, opts?, cb<Error, Any>)`\n\n```ocaml\nformBody := (\n    req: HttpRequest,\n    res?: HttpResponse,\n    opts?: {\n        limit?: Number,\n        encoding?: String,\n        querystring: {\n            parse: (String, Callback<Error, Any>) => void\n        }\n    },\n    cb: Callback<err: Error, bodyPayload: Any>\n) => void\n```\n\n`formBody` allows you to get the body of a readable stream. It\ndoes the same as `textBody` but assumes the content is querystring\nencoded and parses just like it was a &lt;form&gt; submit.\n\n - `limit`: same as `textBody`\n - `encoding`: same as `textBody`\n - `querystring`: You can pass a custom querystring parser if \n    you want. It should have a `parse` method that takes a \n    string and a callback. It should return the value in the\n    callback or a parsing error\n\n```js\nvar formBody = require(\"body/form\")\nvar http = require(\"http\")\n\nhttp.createServer(function (req, res) {\n    formBody(req, res, function (err, body) {\n        // err probably means invalid HTTP protocol or some shiz.\n        if (err) {\n            res.statusCode = 500\n            return res.end(\"NO U\")\n        }\n\n        // I am an echo server\n        res.setHeader(\"content-type\", \"application/json\")\n        res.end(JSON.stringify(body))\n    })\n}).listen(8080)\n```\n\n### `jsonBody(req, res?, opts?, cb<Error, Any>)`\n\n```ocaml\njsonBody := (\n    req: HttpRequest,\n    res?: HttpResponse,\n    opts?: {\n        limit?: Number,\n        encoding?: String,\n        reviver?: (Any) => Any\n        JSON?: {\n            parse: (String, reviver?: Function, Callback<Error, Any>) => void\n        }\n    },\n    cb: Callback<err: Error, bodyPayload: Any>\n) => void\n```\n\n`jsonBody` allows you to get the body of a readable stream. It\ndoes the same as `textbody` but assumes the content it a JSON\nvalue and parses it using `JSON.parse`. If `JSON.parse` throws\nan exception then it calls the callback with the exception.\n\n - `limit`: same as `textBody`\n - `encoding`: same as `textBody`\n - `reviver`: A reviver function that will be passed to `JSON.parse`\n    as the second argument\n - `JSON`: You can pass a custom JSON parser if you want.\n    It should have a `parse` method that takes a string, an\n    optional reviver and a callback. It should return the value\n    in the callback or a parsing error.\n\n```js\nvar jsonBody = require(\"body/json\")\nvar http = require(\"http\")\n\nhttp.createServer(function (req, res) {\n    jsonBody(req, res, function (err, body) {\n        // err is probably an invalid json error\n        if (err) {\n            res.statusCode = 500\n            return res.end(\"NO U\")\n        }\n\n        // I am an echo server\n        res.setHeader(\"content-type\", \"application/json\")\n        res.end(JSON.stringify(body))\n    })\n}).listen(8080)\n```\n\n### `anyBody(req, res?, opts?, cb<Error, Any>)`\n\n```ocaml\nanyBody := (\n    req: HttpRequest,\n    res?: HttpResponse,\n    opts?: {\n        limit?: Number,\n        encoding?: String,\n        reviver?: (Any) => Any\n        JSON?: {\n            parse: (String, reviver?: Function, Callback<Error, Any>) => void\n        },\n        querystring: {\n            parse: (String, Callback<Error, Any>) => void\n        }\n    },\n    cb: Callback<err: Error, bodyPayload: Any>\n) => void\n```\n\n`anyBody` allows you to get the body of a HTTPRequest. It \ndoes the same as `textBody` except it parses the `content-type`\nheader and uses either the jsonBody or the formBody function.\n\nThis allows you to write POST route handlers that work with\nboth ajax and html form submits.\n\n - `limit`: same as `textBody`\n - `encoding`: same as `textBody`\n - `reviver`: same as `jsonBody`\n - `JSON`: same as `jsonBody`\n - `querystring`: same as `formBody`\n\n```js\nvar anyBody = require(\"body/any\")\nvar http = require(\"http\")\n\nhttp.createServer(function (req, res) {\n    anyBody(req, res, function (err, body) {\n        // err is probably an invalid json error\n        if (err) {\n            res.statusCode = 500\n            return res.end(\"NO U\")\n        }\n\n        // I am an echo server\n        res.setHeader(\"content-type\", \"application/json\")\n        res.end(JSON.stringify(body))\n    })\n}).listen(8080)\n```\n\n\n## Installation\n\n`npm install body`\n\n## Tests\n\n`npm test`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n  [1]: https://secure.travis-ci.org/Raynos/body.png\n  [2]: http://travis-ci.org/Raynos/body\n","_attachments":{},"homepage":"https://github.com/Raynos/body","bugs":{"url":"https://github.com/Raynos/body/issues","email":"raynos2@gmail.com"}}