{"_id":"s3-upload-stream","_rev":"289850","name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","dist-tags":{"latest":"1.0.7"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"time":{"modified":"2021-06-03T18:48:12.000Z","created":"2013-07-31T23:45:54.516Z","1.0.7":"2014-12-04T15:20:20.067Z","1.0.6":"2014-10-20T16:15:09.747Z","1.0.5":"2014-10-13T20:00:38.588Z","1.0.4":"2014-10-13T15:02:02.893Z","1.0.3":"2014-10-12T17:00:09.978Z","1.0.2":"2014-09-26T15:05:23.578Z","1.0.1":"2014-09-26T14:58:45.994Z","1.0.0":"2014-09-15T20:30:55.290Z","0.6.2":"2014-08-31T23:22:19.080Z","0.6.1":"2014-08-22T14:05:07.900Z","0.6.0":"2014-08-15T16:27:24.757Z","0.5.0":"2014-08-11T21:09:36.784Z","0.4.0":"2014-06-23T15:12:07.865Z","0.3.0":"2014-05-06T16:38:15.782Z","0.2.0":"2014-04-25T19:28:19.698Z","0.1.0":"2014-04-17T15:20:02.286Z","0.0.3":"2013-12-25T21:17:10.266Z","0.0.2":"2013-08-01T00:04:37.188Z","0.0.1":"2013-07-31T23:45:54.516Z"},"users":{"richardleggett":true,"nathanpeck":true,"markthethomas":true,"markstos":true,"jmelanson-balihoo":true,"mjurincic":true,"stdarg":true,"fredyu":true,"mlohscheidt":true,"hengkiardo":true,"cslater":true,"arnoldstoba":true,"andrao":true,"kanreisa":true,"parkerproject":true,"quocnguyen":true,"igasho":true,"maelsaiedy":true,"broadway69":true,"narunarthy":true},"author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"versions":{"1.0.7":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.7","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"dependencies":{},"peerDependencies":{"aws-sdk":"2.x"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"d410c27148b30c14de2e97d61d42971b8c37f5af","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.7","_shasum":"e3f80253141c569f105a62aa50ca9b45760e481d","_from":".","_npmVersion":"2.1.10","_nodeVersion":"0.10.33","_npmUser":{"name":"nathanpeck","email":"nathan.peck1@gmail.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"e3f80253141c569f105a62aa50ca9b45760e481d","size":11950,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.7.tgz"},"directories":{},"publish_time":1417706420067,"_cnpm_publish_time":1417706420067,"_hasShrinkwrap":false},"1.0.6":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.6","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"dependencies":{},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"f75070772883285e167f47a041896214dc1417e2","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.6","_shasum":"6fc3e944aadbd30455e043d502abfe6f466b6a99","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"6fc3e944aadbd30455e043d502abfe6f466b6a99","size":11993,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.6.tgz"},"directories":{},"publish_time":1413821709747,"_cnpm_publish_time":1413821709747,"_hasShrinkwrap":false},"1.0.5":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.5","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"dependencies":{},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"932da15564bb61a18747a1e1869041401ef835ec","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.5","_shasum":"6b2402667dcf1c7541819ae935489bb0fbff79b0","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"6b2402667dcf1c7541819ae935489bb0fbff79b0","size":10387,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.5.tgz"},"directories":{},"publish_time":1413230438588,"_cnpm_publish_time":1413230438588,"_hasShrinkwrap":false},"1.0.4":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.4","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"dependencies":{},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"a8cf486b996ba5f4a16c83178886baecacda36cd","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.4","_shasum":"8e66e35e42e35c9f2d6d7aa3c9f3184a9cc2fee5","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"8e66e35e42e35c9f2d6d7aa3c9f3184a9cc2fee5","size":10323,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.4.tgz"},"directories":{},"publish_time":1413212522893,"_cnpm_publish_time":1413212522893,"_hasShrinkwrap":false},"1.0.3":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.3","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"856990f7962afd2dc6b219cdfe006dfaa90d5473","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.3","_shasum":"86ff1a72e921334b4a3a2e2f6fca76e9de1630cc","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"86ff1a72e921334b4a3a2e2f6fca76e9de1630cc","size":10174,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.3.tgz"},"directories":{},"publish_time":1413133209978,"_cnpm_publish_time":1413133209978,"_hasShrinkwrap":false},"1.0.2":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.2","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"140c4671cbc7225e74cd51dd607952bd9baf8518","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.2","_shasum":"3e717d5cf8515a0b29a170a954fc4abf73ea559a","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"3e717d5cf8515a0b29a170a954fc4abf73ea559a","size":10153,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.2.tgz"},"directories":{},"publish_time":1411743923578,"_cnpm_publish_time":1411743923578,"_hasShrinkwrap":false},"1.0.1":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.1","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":">=0.10.x"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"1da8b246923b9af0242a42223c84c3a866c0d83f","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.1","_shasum":"67bac915502bc307ac5145978d52ba5eb70449e7","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"67bac915502bc307ac5145978d52ba5eb70449e7","size":10088,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.1.tgz"},"directories":{},"publish_time":1411743525994,"_cnpm_publish_time":1411743525994,"_hasShrinkwrap":false},"1.0.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"1.0.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"devDependencies":{"mocha":"1.17.1","aws-sdk":"2.0.17","chai":"1.8.1"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"72fb52d24e9daa5af0b3b3338a408e48a3cd4a23","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@1.0.0","_shasum":"6f30f9abf1218aaaf389523dcbb7cb6d85142a13","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"6f30f9abf1218aaaf389523dcbb7cb6d85142a13","size":9759,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-1.0.0.tgz"},"directories":{},"publish_time":1410813055290,"_cnpm_publish_time":1410813055290,"_hasShrinkwrap":false},"0.6.2":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.6.2","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"2.0.15"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"094086c4483286e50e0baa1d77d94010996baf3b","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.6.2","_shasum":"8980339963fbbe5ce3eb20c341a0cf2b50e97c0d","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"8980339963fbbe5ce3eb20c341a0cf2b50e97c0d","size":9656,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.6.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.6.2.tgz"},"directories":{},"publish_time":1409527339080,"_cnpm_publish_time":1409527339080,"_hasShrinkwrap":false},"0.6.1":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.6.1","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"f0ee7a07f9e2b0148124647effb3d1e849a08916","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.6.1","_shasum":"819541f297722c0ae58b809013f816517c009212","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"819541f297722c0ae58b809013f816517c009212","size":9624,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.6.1.tgz"},"directories":{},"publish_time":1408716307900,"_cnpm_publish_time":1408716307900,"_hasShrinkwrap":false},"0.6.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.6.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"d9674f2e3a888706ff471836a79bb418830ea119","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.6.0","_shasum":"62b6ffdb18450be4d3f7554629ceb9e7ab06e3ab","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"62b6ffdb18450be4d3f7554629ceb9e7ab06e3ab","size":9457,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.6.0.tgz"},"directories":{},"publish_time":1408120044757,"_cnpm_publish_time":1408120044757,"_hasShrinkwrap":false},"0.5.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.5.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"221d7e6be6639560df61fc02be0aa9df301fa514","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.5.0","_shasum":"93d152743ed4e61456d405be51e3733960fd95ef","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"93d152743ed4e61456d405be51e3733960fd95ef","size":9382,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.5.0.tgz"},"directories":{},"publish_time":1407791376784,"_cnpm_publish_time":1407791376784,"_hasShrinkwrap":false},"0.4.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.4.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"gitHead":"fdf14389694a5365ec8eac335029f42747eaf512","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.4.0","_shasum":"230d87714c53a63df127f79d9df901a19e3c790e","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"230d87714c53a63df127f79d9df901a19e3c790e","size":7894,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.4.0.tgz"},"directories":{},"publish_time":1403536327865,"_cnpm_publish_time":1403536327865,"_hasShrinkwrap":false},"0.3.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.3.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"devDependencies":{"mocha":"1.17.1","chai":"1.8.1","proxyquire":"0.6.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"mocha -R spec -s 100 ./tests/test.js"},"bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.3.0","_shasum":"c1edba5801729b0f4c6aecd165d2c6978ba4563a","_from":".","_npmVersion":"1.4.8","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"dist":{"shasum":"c1edba5801729b0f4c6aecd165d2c6978ba4563a","size":7190,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.3.0.tgz"},"directories":{},"publish_time":1399394295782,"_cnpm_publish_time":1399394295782,"_hasShrinkwrap":false},"0.2.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.2.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.2.0","dist":{"shasum":"fd7993889060792a09c3e6e32c4974e9c318c3f5","size":5677,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"directories":{},"publish_time":1398454099698,"_cnpm_publish_time":1398454099698,"_hasShrinkwrap":false},"0.1.0":{"name":"s3-upload-stream","description":"Writeable stream for uploading content of unknown size to S3 via the multipart API.","version":"0.1.0","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"aws-sdk":"1.18.0"},"keywords":["aws","s3","upload","pipe","stream"],"license":"MIT","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"homepage":"https://github.com/nathanpeck/s3-upload-stream","_id":"s3-upload-stream@0.1.0","dist":{"shasum":"c6df64c8dda6c0f2c26a88971f4c8f9dbf7ad6b8","size":5101,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"directories":{},"publish_time":1397748002286,"_hasShrinkwrap":false,"_cnpm_publish_time":1397748002286},"0.0.3":{"name":"s3-upload-stream","description":"Writeable stream for uploading to S3 via the multipart API.","version":"0.0.3","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"async":"","aws-sdk":""},"keywords":["aws","s3","stream"],"license":"MIT","readmeFilename":"README.md","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"./test/test.js"},"bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"_id":"s3-upload-stream@0.0.3","dist":{"shasum":"c7bc149fce1e48b1f0cc65d0b324f756923922e6","size":4035,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.0.3.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"directories":{},"publish_time":1388006230266,"_cnpm_publish_time":1388006230266,"_hasShrinkwrap":false},"0.0.2":{"name":"s3-upload-stream","description":"Writeable stream for uploading to S3 via the multipart API.","version":"0.0.2","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"async":"","aws-sdk":""},"keywords":["aws","s3","stream"],"license":"MIT","readmeFilename":"README.md","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"./test/test.js"},"_id":"s3-upload-stream@0.0.2","dist":{"shasum":"cd23c6be811d07f1223a48fc8b5fd5958c10a65a","size":4041,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.0.2.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"directories":{},"publish_time":1375315477188,"_cnpm_publish_time":1375315477188,"_hasShrinkwrap":false},"0.0.1":{"name":"s3-upload-stream","description":"Writeable stream for uploading to S3 via the multipart API.","version":"0.0.1","author":{"name":"Nathan Peck","email":"nathan@storydesk.com"},"repository":{"type":"git","url":"git://github.com/nathanpeck/s3-upload-stream.git"},"dependencies":{"async":"","aws-sdk":""},"keywords":["aws","s3","stream"],"license":"MIT","readmeFilename":"README.md","main":"./lib/s3-upload-stream.js","engines":{"node":"*"},"scripts":{"test":"./test/test.js"},"bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"_id":"s3-upload-stream@0.0.1","dist":{"shasum":"798312ff7b8ce477c39d2afe42cc131752c2d1f2","size":4004,"noattachment":false,"key":"/s3-upload-stream/-/s3-upload-stream-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/s3-upload-stream/download/s3-upload-stream-0.0.1.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"nathanpeck","email":"nathan@storydesk.com"},"maintainers":[{"name":"nathanpeck","email":"nathan@storydesk.com"}],"directories":{},"publish_time":1375314354516,"_cnpm_publish_time":1375314354516,"_hasShrinkwrap":false}},"readme":"## s3-upload-stream [![Build Status](https://travis-ci.org/nathanpeck/s3-upload-stream.svg)](https://travis-ci.org/nathanpeck/s3-upload-stream)\n\nA pipeable write stream which uploads to Amazon S3 using the multipart file upload API.\n\n[![NPM](https://nodei.co/npm/s3-upload-stream.png?downloads=true)](https://www.npmjs.org/package/s3-upload-stream)\n\n### Changelog\n\n#### 1.0.6 (2014-10-20)\n\nRemoving global state, and adding pause and resume functionality.\n\n[Historical Changelogs](CHANGELOG.md)\n\n### Why use this stream?\n\n* This upload stream does not require you to know the length of your content prior to beginning uploading. Many other popular S3 wrappers such as [Knox](https://github.com/LearnBoost/knox) also allow you to upload streams to S3, but they require you to specify the content length. This is not always feasible.\n* By piping content to S3 via the multipart file upload API you can keep memory usage low even when operating on a stream that is GB in size. Many other libraries actually store the entire stream in memory and then upload it in one piece. This stream avoids high memory usage by flushing the stream to S3 in 5 MB parts such that it should only ever store 5 MB of the stream data at a time.\n* This package is designed to use the official Amazon SDK for Node.js, helping keep it small and efficient. For maximum flexibility you pass in the aws-sdk client yourself, allowing you to use a uniform version of AWS SDK throughout your code base.\n* You can provide options for the upload call directly to do things like set server side encryption, reduced redundancy storage, or access level on the object, which some other similar streams are lacking.\n* Emits \"part\" events which expose the amount of incoming data received by the writable stream versus the amount of data that has been uploaded via the multipart API so far, allowing you to create a progress bar if that is a requirement.\n* Support for pausing and later resuming in progress multipart uploads.\n\n### Limits\n\n* The multipart upload API does not accept parts less than 5 MB in size. So although this stream emits \"part\" events which can be used to show progress, the progress is not very granular, as the events are only per part. By default this means that you will receive an event each 5 MB.\n* The Amazon SDK has a limit of 10,000 parts when doing a mulitpart upload. Since the part size is currently set to 5 MB this means that your stream will fail to upload if it contains more than 50 GB of data. This can be solved by using the 'stream.maxPartSize()' method of the writable stream to set the max size of an upload part, as documented below. By increasing this value you should be able to save streams that are many TB in size.\n\n## Example\n\n```js\nvar AWS      = require('aws-sdk'),\n    zlib     = require('zlib'),\n    fs       = require('fs');\n    s3Stream = require('s3-upload-stream')(new AWS.S3()),\n\n// Set the client to be used for the upload.\nAWS.config.loadFromPath('./config.json');\n\n// Create the streams\nvar read = fs.createReadStream('/path/to/a/file');\nvar compress = zlib.createGzip();\nvar upload = s3Stream.upload({\n  \"Bucket\": \"bucket-name\",\n  \"Key\": \"key-name\"\n});\n\n// Optional configuration\nupload.maxPartSize(20971520); // 20 MB\nupload.concurrentParts(5);\n\n// Handle errors.\nupload.on('error', function (error) {\n  console.log(error);\n});\n\n/* Handle progress. Example details object:\n   { ETag: '\"f9ef956c83756a80ad62f54ae5e7d34b\"',\n     PartNumber: 5,\n     receivedSize: 29671068,\n     uploadedSize: 29671068 }\n*/\nupload.on('part', function (details) {\n  console.log(details);\n});\n\n/* Handle upload completion. Example details object:\n   { Location: 'https://bucketName.s3.amazonaws.com/filename.ext',\n     Bucket: 'bucketName',\n     Key: 'filename.ext',\n     ETag: '\"bf2acbedf84207d696c8da7dbb205b9f-5\"' }\n*/\nupload.on('uploaded', function (details) {\n  console.log(details);\n});\n\n// Pipe the incoming filestream through compression, and up to S3.\nread.pipe(compress).pipe(upload);\n```\n\n## Usage\n\nBefore uploading you must configure the S3 client for s3-upload-stream to use. Please note that this module has only been tested with AWS SDK 2.0 and greater.\n\nThis module does not include the AWS SDK itself. Rather you must require the AWS SDK in your own application code, instantiate an S3 client and then supply it to s3-upload-stream.\n\nThe main advantage of this is that rather than being stuck with a set version of the AWS SDK that ships with s3-upload-stream you can ensure that s3-upload-stream is using whichever verison of the SDK you want.\n\nWhen setting up the S3 client the recommended approach for credential management is to [set your AWS API keys using environment variables](http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html) or [AMI roles](http://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html).\n\nIf you are following this approach then you can configure the S3 client very simply:\n\n```js\nvar AWS      = require('aws-sdk'),\n    s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n```\n\nHowever, some environments may require you to keep your credentials in a file, or hardcoded. In that case you can use the following form:\n\n```js\nvar AWS      = require('aws-sdk');\n\n// Make sure AWS credentials are loaded using one of the following techniques\nAWS.config.loadFromPath('./config.json');\nAWS.config.update({accessKeyId: 'akid', secretAccessKey: 'secret'});\n\n// Create a stream client.\nvar s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n```\n\n### client.upload(destination)\n\nCreate an upload stream that will upload to the specified destination. The upload stream is returned immeadiately.\n\nThe destination details is an object in which you can specify many different [destination properties enumerated in the AWS S3 documentation](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#createMultipartUpload-property).\n\n__Example:__\n\n```js\nvar AWS      = require('aws-sdk'),\n    s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n\nvar read = fs.createReadStream('/path/to/a/file');\nvar upload = s3Stream.upload({\n  Bucket: \"bucket-name\",\n  Key: \"key-name\",\n  ACL: \"public-read\",\n  StorageClass: \"REDUCED_REDUNDANCY\",\n  ContentType: \"binary/octet-stream\"\n});\n\nread.pipe(upload);\n```\n\n### client.upload(destination, [session])\n\nResume an incomplete multipart upload from a previous session by providing a `session` object with an upload ID, and ETag and numbers for each part. `destination` details is as above.\n\n__Example:__\n\n```js\nvar AWS      = require('aws-sdk'),\n    s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n\nvar read = fs.createReadStream('/path/to/a/file');\nvar upload = s3Stream.upload(\n  {\n    Bucket: \"bucket-name\",\n    Key: \"key-name\",\n    ACL: \"public-read\",\n    StorageClass: \"REDUCED_REDUNDANCY\",\n    ContentType: \"binary/octet-stream\"\n  },\n  {\n    UploadId: \"f1j2b47238f12984f71b2o8347f12\",\n    Parts: [\n      {\n        ETag: \"3k2j3h45t9v8aydgajsda\",\n        PartNumber: 1\n      },\n      {\n        Etag: \"kjgsdfg876sd8fgk3j44t\",\n        PartNumber: 2\n      }\n    ]\n  }\n);\n\nread.pipe(upload);\n```\n\n## Stream Methods\n\nThe following methods can be called on the stream returned by from `client.upload()`\n\n### stream.pause()\n\nPause an active multipart upload stream.\n\nCalling `pause()` will immediately:\n\n* stop accepting data from an input stream,\n* stop submitting new parts for upload, and\n* emit a `pausing` event with the number of parts that are still mid-upload.\n\nWhen mid-upload parts are finished, a `paused` event will fire, including an object with `UploadId` and `Parts` data that can be used to resume an upload in a later session.\n\n### stream.resume()\n\nResume a paused multipart upload stream.\n\nCalling `resume()` will immediately:\n\n* resume accepting data from an input stream,\n* resume submitting new parts for upload, and\n* echo a `resume` event back to any listeners.\n\nIt is safe to call `resume()` at any time after `pause()`. If the stream is between `pausing` and `paused`, then `resume()` will resume data flow and the `paused` event will not be fired.\n\n### stream.maxPartSize(sizeInBytes)\n\nUsed to adjust the maximum amount of stream data that will be buffered in memory prior to flushing. The lowest possible value, and default value, is 5 MB. It is not possible to set this value any lower than 5 MB due to Amazon S3 restrictions, but there is no hard upper limit. The higher the value you choose the more stream data will be buffered in memory before flushing to S3.\n\nThe main reason for setting this to a higher value instead of using the default is if you have a stream with more than 50 GB of data, and therefore need larger part sizes in order to flush the entire stream while also staying within Amazon's upper limit of 10,000 parts for the multipart upload API.\n\n```js\nvar AWS      = require('aws-sdk'),\n    s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n\nvar read = fs.createReadStream('/path/to/a/file');\nvar upload = s3Stream.upload({\n  \"Bucket\": \"bucket-name\",\n  \"Key\": \"key-name\"\n});\n\nupload.maxPartSize(20971520); // 20 MB\n\nread.pipe(upload);\n```\n\n### stream.concurrentParts(numberOfParts)\n\nUsed to adjust the number of parts that are concurrently uploaded to S3. By default this is just one at a time, to keep memory usage low and allow the upstream to deal with backpressure. However, in some cases you may wish to drain the stream that you are piping in quickly, and then issue concurrent upload requests to upload multiple parts.\n\nKeep in mind that total memory usage will be at least `maxPartSize` * `concurrentParts` as each concurrent part will be `maxPartSize` large, so it is not recommended that you set both `maxPartSize` and `concurrentParts` to high values, or your process will be buffering large amounts of data in its memory.\n\n```js\nvar AWS      = require('aws-sdk'),\n    s3Stream = require('../lib/s3-upload-stream.js')(new AWS.S3());\n\nvar read = fs.createReadStream('/path/to/a/file');\nvar upload = s3Stream.upload({\n  \"Bucket\": \"bucket-name\",\n  \"Key\": \"key-name\"\n});\n\nupload.concurrentParts(5);\n\nread.pipe(upload);\n```\n\n### Tuning configuration of the AWS SDK\n\nThe following configuration tuning can help prevent errors when using less reliable internet connections (such as 3G data if you are using Node.js on the Tessel) by causing the AWS SDK to detect upload timeouts and retry.\n\n```js\nvar AWS = require('aws-sdk');\nAWS.config.httpOptions = {timeout: 5000};\n```\n\n### Installation\n\n```\nnpm install s3-upload-stream\n```\n\n### Running Tests\n\n```\nnpm test\n```\n\n### License\n\n(The MIT License)\n\nCopyright (c) 2014 Nathan Peck <nathan@storydesk.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","_attachments":{},"homepage":"https://github.com/nathanpeck/s3-upload-stream","bugs":{"url":"https://github.com/nathanpeck/s3-upload-stream/issues"},"license":"MIT"}