{"_id":"socketio-file-upload","_rev":"56-c129866b2dba9a15749c8e2907847a89","name":"socketio-file-upload","description":"Uploads files to a Node.JS server using Socket.IO","dist-tags":{"latest":"0.7.3"},"versions":{"0.1.0":{"name":"socketio-file-upload","version":"0.1.0","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.1.0","dist":{"shasum":"ba0c54d41386cc497dd6a26e18756633dd1ae916","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.1.0.tgz","integrity":"sha512-shdbWjCOp+1gXFpF0sqPxIwGI5KEafk0nojNiyRSfIhJZiAQ9/nTTv20p1dXM1FJDnYToKs4py5fz6E5N3D1Cw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHA5tf0D/rUsku4PC+OM0wj5PlN6Hk+ZIS7qmrD3Uir+AiBL/7zBwCg3BhNN1jGuWYn7ng5YeG2ZJ9KRKTi8b8G64Q=="}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.1":{"name":"socketio-file-upload","version":"0.2.1","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.2.1","dist":{"shasum":"ddb2956ecffc937562006263b32bb57fe0c1619c","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.1.tgz","integrity":"sha512-CigjLOFycJEjXpfZnmhaPYhmH8p9vE4M8PRqCQql2No9vYVp8FPg0cKzLegMpjVlQRA5IBlQ8FOfvRove7PUDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxeUXp6yxfDJ4/chfw7P3iUsxUuOqDlpsexeUPX8Qv0gIhAOmEplIn6DuD0p6zae4uT1tXGhE+BJdnaHVwc4mvDNoC"}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.2":{"name":"socketio-file-upload","version":"0.2.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.2.2","dist":{"shasum":"80f6052cc248f8b89b4d7f9b348befe91c5b1f2c","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.2.tgz","integrity":"sha512-cuhNiJf9DWwm6ynhuw9xnyHj0YI+1HDhJ4m+6i4sStORYVz81bZCOdJSWLa0G+2POVrEp/ar+w76Q2SJ2NTG/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVRlqQRnItbbD6KZs0aRf3Uw8e7R+BLpphfrbrmFtqZAIhAJvFp1lg8QeH6G0s76bju1pLoNd4WE4iuq1+HOURQOOb"}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.3":{"name":"socketio-file-upload","version":"0.2.3","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.2.3","dist":{"shasum":"3f416b1c1200b3bdb32294b7713e048bd0537984","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.3.tgz","integrity":"sha512-CxrhLNVkJqESE9iYseiM0N7vzxGN2KMYg6Kv7BN34OqJetwCa9nZvI1aHbzBKJG5RQ1p5tQVRMdD7qg29Xq2xQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSFuJbHjXPWcTKSWFTbZCE8uzgQqrks8EDhyPYnWxpZAiBjU9ThxZ1u2P7yMHVeJojpk2Ixc7Y9IgIqsxgIFu3L2w=="}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.4":{"name":"socketio-file-upload","version":"0.2.4","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.2.4","dist":{"shasum":"251a801c0567877fb9e6e2f78a0f5cbc1748188c","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.4.tgz","integrity":"sha512-eup0w++m66Cq4kyUVeoY7JkgmXFjiDjVYvzZA5AC4SyPCS+MqQS9ncihvUYVC1GPA4yeDSrGOuOhOAl64tLD7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXoj1XiojDuaARbDGULccDI5y13THzzrNLLJDf7z/UuAiEA4c0Q30bVGeFQ1+k3BItK3q/0jNK2j+GWQ0s9A5x1xDw="}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.5":{"name":"socketio-file-upload","version":"0.2.5","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"_id":"socketio-file-upload@0.2.5","dist":{"shasum":"0f9ca7f5798cdac7b9ad40ea9ee97a3ca95c29f2","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.5.tgz","integrity":"sha512-pKBTn136k7WagadVB9P3RllKbbPDrQXon+tRA2aVPQ43ud1MFmcQR4elVCeF+AQ1NmkeGLxG+PrvtuHZs8clzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhfL7r7RAcVL9kfPuPHpssDLXzu4QhZII84mGJwQhGYAiBpty7V0I+pQO27WY2CVrzGnXN6KK3Vi28mBVpkm+ry6g=="}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.6":{"name":"socketio-file-upload","version":"0.2.6","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.2.6","dist":{"shasum":"389579ac8e5cf3572d3276167a3f298bd343746c","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.6.tgz","integrity":"sha512-3zv56u2Gn4dOH1EClojBGaCpaE8y+hVISR95SNNGazLZNcSjAoXHj/fo+MFHdab7LwdRj80CniXG97tlnHdq9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzwIQKwp2bTaXMBeTPd9uaMeGbN4CXGPewHKoLMcTW4AiAhwuqIoapVWNrHY2AsPmVBC476hvUwzBIvZg3wZE1Gqg=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.2.7":{"name":"socketio-file-upload","version":"0.2.7","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{"socket.io":"*"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.2.7","dist":{"shasum":"98d6d3de8e879bf997c647ba0590cb0b8a613f82","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.2.7.tgz","integrity":"sha512-aN6REcesdYwySbCaK30n+2nCCj5Bzec0bKPpSj+gCIrG3AtomWclz5dg3By6og6JGWluj4x0oUs1RsrRw+9c5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeZkKaYNVUwZRVEpdM3s9V6/EbslcMdxSwrZybaxPS/gIgOs54VWrPIc3KDVt5Ud3s3dRAjKDyc8o+YInhKfO3HDg="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.3.1":{"name":"socketio-file-upload","version":"0.3.1","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.3.1","dist":{"shasum":"e34aefb4dbc03c2cfa2d1778db86b02dbc4d1d1f","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.3.1.tgz","integrity":"sha512-ny6vX+MoxD5x1YpU1fWA5RCT0Hz496Xp/IIljX9HlIQz+YKvfehriIs7YjUBghc3P0lSTqradoAlvT1rvpFiUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH1GZ4x163jOKSmGXhDPumHhwEBbvC0SotvveBc39JcmAiA1CR9CzE2Y2qluCgzbwYPNOUp8Pq6idwkh50EboHnMwg=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.3.2":{"name":"socketio-file-upload","version":"0.3.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.3.2","dist":{"shasum":"af3c0a55bcdfacca9bba12105610ed58a606068d","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.3.2.tgz","integrity":"sha512-Bj9k7jpfVONqMQvpOYN7+obVY/S9t7wkuEdB8S+Fv+ZW77pZWZPatnTtUcnAcFG6MNbKpFG444cojySwJcWzMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8ifLs1SYZj108erOve3qUmBi1fwGB9B9wOkjJdjusPwIgNLy2S8Hshahocyu4tgDRnZlc06KOaMtJY1tmUE+wH7U="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.3.3":{"name":"socketio-file-upload","version":"0.3.3","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"96f0af609b20f6359063c5dd823b4e370eb9bdb4","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.3.3","_shasum":"e9f81e9642ae92be0c328dce16fde2b933e07aba","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.33","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"dist":{"shasum":"e9f81e9642ae92be0c328dce16fde2b933e07aba","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.3.3.tgz","integrity":"sha512-YXNokoyFQFFs+UiU+QSVzayeRC05B1WUeLuAqwW+mdEXl2jioocEsGeJXXsj0FRffOr2hU+9gPOk+qKwKhYI2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEg38QCLqMa21110CgVtwo7YhigtSRrCnBpJ9PrkVyPyAiBgtRLpQta2bQQJ9B/OgI2UcI2uShqzN2IVgSm4QcnyUw=="}]},"directories":{}},"0.4.0":{"name":"socketio-file-upload","version":"0.4.0","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"5ff5f312f404560158e65d5bb049a4e669e16434","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.0","_shasum":"7e9e57e1a1421084fc0c4a51b8c80109668e40ff","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.33","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"dist":{"shasum":"7e9e57e1a1421084fc0c4a51b8c80109668e40ff","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.0.tgz","integrity":"sha512-FvMam1JwOVBuUlrJNNGyWcPMjyw5rD17BNoQWrHDlBeS2ZZVTltOJRVlKfH2K0x/SZJ6T3815zvZ49Z8VzFAkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkq2jlRFnrSBNQiu7HgtQy8Fls3GCbdrUff/X8v2G+ogIgQlg0+ku97k8v7Ahg/ZppL/s4uOMQNVlbH+hEyqBFghE="}]},"directories":{}},"0.4.1":{"name":"socketio-file-upload","version":"0.4.1","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"3e4c196a78f48c4405026dbe5b80417d7c179529","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.1","_shasum":"5904533f3ba29b2fb6a478fb6a40a3b2adaf7c59","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"5904533f3ba29b2fb6a478fb6a40a3b2adaf7c59","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.1.tgz","integrity":"sha512-mfFBILbWTGH99+1rdhldXkDewOzr3hhxIlH+LzSW0fEfBu2gvpm/oLmrAvqsd9/oNOkwiVIeYtixO42G6MdBuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8T5n0aFA+pGsDDaCWsPGf/agC7JVohhgaDIDRlZ2Z5wIgO2GyUZn/56ZeAw1vzdeI0JJECobj/J1y+qF/WMHcFY8="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.4.2":{"name":"socketio-file-upload","version":"0.4.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"3ab317806dfc8478724e15c0d456b6b942c66e63","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.2","_shasum":"62c0bb3895d635d3e1b3ca6b903bdcc2ac8904af","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.33","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"dist":{"shasum":"62c0bb3895d635d3e1b3ca6b903bdcc2ac8904af","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.2.tgz","integrity":"sha512-HouL5hXL5rnioROE96+ECT01d2km1kXvhFZtUxlrfmkkdRlSqRCb2FF14eKT5f8nhdqBDzso+VbOQm8Kywh6mQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSlx9FcjZNL6POBNkNzoA+x/YUV7xounNGXIJ1CPWIRwIgHVblNwzYWJUuWjmiRMG04Tp+/8Omnw5fGpEH4mZyiT4="}]},"directories":{}},"0.4.3":{"name":"socketio-file-upload","version":"0.4.3","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"3bf6dd652e57af657ee674d0f4330e7131c8ee27","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.3","_shasum":"46fc863e8e8c7aa879757d01216d1d8d4753cb3b","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"46fc863e8e8c7aa879757d01216d1d8d4753cb3b","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.3.tgz","integrity":"sha512-oCgO+loQD+H4mbk1PMCM4v8yu+MP/pZaNX9UTwjcY76/P01ziYyNM+AV1uB4HzE0eFGIRJuJ+bb6QaqOyF6aOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF3yhKVqowDN8cPshknDQpTp7MYLzZ5ElxbIpOtq9cH7AiA3NgB8CSOH+VeJpiKwM4pOUgXsOutvwqlFwN+M9Wr0+A=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.4.4":{"name":"socketio-file-upload","version":"0.4.4","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","scripts":{"start":"node server.js"},"gitHead":"a45ccbbc5be114ff6a28116f2781cafac09fdea8","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.4","_shasum":"eda810735915fc663a26cf76536bf3e4b7dba7fc","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"eda810735915fc663a26cf76536bf3e4b7dba7fc","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.4.tgz","integrity":"sha512-sjj7P5BSPj7GQF3CzzQZcxX/XSuL6B5qQlFc8QYVMjG6BtMmcNtl5sxbGy5vfSLFh6sJuIdYt516RzltiZ+sSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9GM2X/Ft8bZU9+IvNT6sA7ClM/7gIG3ust65ToHX6jgIhAO7H0Lb857HIuB7SEmqB9UnPtWx3ySwDNiR2f/1+PErk"}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{}},"0.4.5":{"name":"socketio-file-upload","version":"0.4.5","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"ca61baf50fc327c72a09b59fa4e3de0933366b17","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.5","_shasum":"abb351569f5b54317cdcd98a55ef51ab27888b87","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"abb351569f5b54317cdcd98a55ef51ab27888b87","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.5.tgz","integrity":"sha512-K/R7Wtdoq+2ZwkhVM6EfDYPZdWmU2Q1ghNvU3jHwFyrQN+t2VKlBE70rZDLaHdMEHIY6Q7zq7hX2qkbeUooOew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNiHORtCjk7foVxPQuelgQ5h5pof8sPLI/jzqBeQnZnAiEAqiKlH5QVs3L2eL5YxwXhsx4ukpOIFBOrP/KFTb4XwBw="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.4.5.tgz_1455523933574_0.6837882506661117"},"directories":{}},"0.4.6":{"name":"socketio-file-upload","version":"0.4.6","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"6ac38d8b760a4bd943a5511eacb05ac940d2e905","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.6","_shasum":"59f84eea8e689ff7ba62a2c6fd1e06d05371952b","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"59f84eea8e689ff7ba62a2c6fd1e06d05371952b","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.6.tgz","integrity":"sha512-WiQwz5B+YwKGTskR9XJ/WG3R9EaQWZY6EWwKfqTyiGYuXGC5IZv6HVaT1behxdKv2B/RsYUnqB4YRCFxdaSH9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn3MuRR3NhQTPvjf9+6kAl/+MbX3ezqspRblYDaoKnyQIge18PjZJFeJOykC020YvOcWv7XsGCklGtFVlfDL+9SCQ="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.4.6.tgz_1455560859115_0.3049439266324043"},"directories":{}},"0.4.7":{"name":"socketio-file-upload","version":"0.4.7","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"a47fbe48180e1c67a1557c9e7b85f6628b8cd269","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.7","_shasum":"e56d1f9c714b97deaed0c172a27728116714e1c8","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"e56d1f9c714b97deaed0c172a27728116714e1c8","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.7.tgz","integrity":"sha512-99AzimWWUl6ASrvThK43nv3hkYwSDv5GNQc0PFBsmb66JCdgyS/Yaj9mhPEqs2p2OjMoZiUr8Jo079V9ag0oYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA14aBvvZyOcnp36rsxkpUktW2u2g1FJFVrAXeiPNUWtAiA7GRjoKTKhUkIhOd6SQd06ll6GOqZT0P4TP8xC8HvPhA=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.4.7.tgz_1469604796675_0.9178597589489073"},"directories":{}},"0.5.0":{"name":"socketio-file-upload","version":"0.5.0","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"b94d75a8bce6dd068fdd9c19d24840069df505f5","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.5.0","_shasum":"32432931abbaa5a2da52e8825bdd131ae36853f5","_from":".","_npmVersion":"2.15.1","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"32432931abbaa5a2da52e8825bdd131ae36853f5","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.5.0.tgz","integrity":"sha512-J0DhVR49VCLTRQU2fkT8I+5R5CSzIyElMxGAgHZEMWI2e2tiDKVHrrdvFFBI0dFzm5KUeMXrDBBPEk2lGQEA2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+zS/MBIyX6D07eWmTpj5xplEDAyoz5SuYEmzP81CgogIhALjhefwAdISgPFJfsW16Oz3XaRzQHtxDyXww4nRAngXo"}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.5.0.tgz_1475576780148_0.7516379777807742"},"directories":{}},"0.5.1":{"name":"socketio-file-upload","version":"0.5.1","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"69c95b90543f50de7126fbdd428a552e4010e2ee","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.5.1","_shasum":"f0cf28ab92a3426320e7e2bfe6a855741f3262ed","_from":".","_npmVersion":"2.15.1","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"f0cf28ab92a3426320e7e2bfe6a855741f3262ed","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.5.1.tgz","integrity":"sha512-hlbTR9tnFeRdhFmS1XArowiG9iXSGUmmhx7RBOCy4tQm0LOp4b2vdjxUwZ3kOKKOI3dKExsrP7f5RsUFrm53cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfFich61s+RROrkOd22UtaYT0wnUFZ+g0x8PC7uTL5vAiBVMe8DEgvA/JxyZNz3TKFCyalHb4CvUYNjHlu1u+xwCQ=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.5.1.tgz_1476473153676_0.06006077257916331"},"directories":{}},"0.4.8":{"name":"socketio-file-upload","version":"0.4.8","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"a20b94fb715d3a89431ac3322b1230bf46d38808","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.4.8","_shasum":"2f651c27e94cdc205a39f9a2a7bf0724eb39676a","_from":".","_npmVersion":"2.15.1","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"2f651c27e94cdc205a39f9a2a7bf0724eb39676a","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.4.8.tgz","integrity":"sha512-oWa6r4TvcrirsL5sxHbmJ0gUI3eomTU1eoakFRc+7esa3liYOtawcGpv2h0K8s1UjuUiOowdr1zKXmKK+rScEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjrLlx0xQVfYZRhQglZpRpZaA08JVHU0fHdiDSfWo41AiA1NVeRNY1xqLsFrX90pdZGnRMzc56JKwDlp0ERCUkyOg=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.4.8.tgz_1476612154395_0.9153632761444896"},"directories":{}},"0.5.2":{"name":"socketio-file-upload","version":"0.5.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"87cb771704637c87d0534e06c7a4d40b2b342096","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.5.2","_shasum":"aaa309ef67fc5ef6200890366c3a3e0e93165fe2","_from":".","_npmVersion":"2.15.1","_nodeVersion":"5.4.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"aaa309ef67fc5ef6200890366c3a3e0e93165fe2","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.5.2.tgz","integrity":"sha512-K4P1QCjvAB5e/J1+dWNONypjlhaMrnhd6ykFGLB8tSfbJXk+pYhip7IkcoJtU6p4+wzKsND7bvGpPT/i0Mi+Kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7bAGs6A6dux6YLRLYTMTf1WQn0lJyhWMX+B4WMWKytAiAXubAcAwFjY2fKiFdbdnKRK3sRsKz5P2GnZ0w+6vfmSw=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.5.2.tgz_1476612812999_0.7005459000356495"},"directories":{}},"0.6.0":{"name":"socketio-file-upload","version":"0.6.0","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^11.0.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^0.8.0","socket.io":"^1.3.6","socket.io-client":"^1.3.6","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"a275a6b6ceaefe64f5cdd3284a69e1952ae35d8d","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.6.0","_shasum":"813cf79bcf6b6dd4cf9b57a42c9efb4b6786a596","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.1","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"813cf79bcf6b6dd4cf9b57a42c9efb4b6786a596","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.6.0.tgz","integrity":"sha512-p79UYlbbcVwZr8YK5au/knCQ+4JOLkHcOOAzvC5O+n8BGF6g4eLTsVOQBj9RssAsTr8fqVRaz8iPZ/BQ79e8Dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGN1hdCGiD26uZNaD8XDfrqNMa9IFWCn+HWE0u5nc8Z6AiB2sfqpGUxUB/on9A2g4atAFpZfeTttxm2zhbjnL59ceg=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/socketio-file-upload-0.6.0.tgz_1483094673881_0.21287301066331565"},"directories":{}},"0.6.1":{"name":"socketio-file-upload","version":"0.6.1","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.2.2","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^2.0.0","socket.io":"^2.1.1","socket.io-client":"^2.1.1","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"bd3c77152822816322863c66dc1c532c959bc07d","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.6.1","_shasum":"768d0ebb886c223747d5ff06432f29e9ff5a2872","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"768d0ebb886c223747d5ff06432f29e9ff5a2872","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.6.1.tgz","fileCount":5,"unpackedSize":61765,"integrity":"sha512-hKCzi4jpri22mYb4t3jQQ0vEsbqPLer6XheSVmTCwU6kDZ6Fnr5Fm0sWLTVunRMaV6HNNkHZBqREkFv+4EOfsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGxo8g1WP36/orFpXh7QcY9MOoNwdGHy41wqrGB6b3HAIhALKEbXYXTi/A8ws4g+EMoNT+++vGVipQlvwBNUWtjfZr"}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.6.1_1530691614283_0.8165697580388305"},"_hasShrinkwrap":false},"0.6.2":{"name":"socketio-file-upload","version":"0.6.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.2.2","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^2.0.0","socket.io":"^2.1.1","socket.io-client":"^2.1.1","tape":"^4.2.0"},"files":["client.js","client.min.js","server.js","README.md"],"main":"server.js","browser":"client.js","scripts":{"pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"0a49d776c227881640e101866252d51b16f42cbe","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.6.2","_shasum":"0e13c5e2b2a6798f0754d2bdcf2b404f8707e192","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"shasum":"0e13c5e2b2a6798f0754d2bdcf2b404f8707e192","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.6.2.tgz","integrity":"sha512-agXSl7avfSE3fG0R7mARnT7KqW9V8nnUWmyzJLAvQIk1rMv2W0Hkmo3biqV7kHnl8SxljbcQpPGmIdERvZ4rCg==","fileCount":5,"unpackedSize":61756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaz1pCRA9TVsSAnZWagAARL8P/3oNV1KUa5DjlfDaR2bV\nlv4JrpkxZqlIOlLd6fz6Mo9KXMYkqP3xSsiCY977OCd1UU+3uJqI2q12X5sg\n/eCw7XPiB+MFxC+uNp07Q81c/Bf3Ti/AzL2ruC2VI4mUWbXQSs//YLWR+VgL\nSywNcYUuMYCDEwMHcemj7hIf477reM38FGZJ7mvwVQC78S7yGMmhEQ9STTkL\n/h87Cocn5kyPAXp43osJSwZuqyzSClo6pXa8XgLfhfdayesAirhuqbhG020P\ndOGqf9zf3TDezXLviTgqBKP3XpU+8IMdOrvSO29e81tP4t0sYPzGoGhqmBjj\ntvxgwfVDhHTxykWgQ3FukEqBFDJGJ5TZsYnpWfnI2o9HCyRImSsUWZ5AMTMc\nqJmemNymGzttm2xoZInBGd0q6UDqmUhePKW0sazvDT/EXECv7NqHrDxpTRC7\nln6FLOEXCR6LOZ7nZn+T/Uuof3Yuqdkg7em73EQbckwMXxC3gn5BIBtKJQPF\nVPMwiyBLrGMfUz+MRmicF4x7qh6yfYv6dY6/zC36T6X++exaZlLFHBGD8yaa\nnLdpIS0Fsh6yxFUBOC4Y6PVooGndr4i07qDezVPTaG28UQ73h510+mJT3VAl\n/tarnUFwJMozSzKLodmOhf3hORoRdwcLu1ureS/66XJgwrz7vQ7G6La5669l\nS8/2\r\n=Po5A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEr6vH45wgbSItiuMCKHTd6KZ3eclqOhH92eVFSgMailAiEAzAcJ5/x7JmpuTDC8N50iC5XRe3YzWHAMqEX5FzbQTP8="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.6.2_1533754729905_0.2500487893420993"},"_hasShrinkwrap":false},"0.6.3":{"name":"socketio-file-upload","version":"0.6.3","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.2.2","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^2.0.0","eslint":"^5.6.1","phantom":"^6.0.3","socket.io":"^2.1.1","socket.io-client":"^2.1.1","tape":"^4.9.0"},"main":"server.js","browser":"client.js","scripts":{"lint":"eslint .","pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/vote539/socketio-file-upload.git"},"homepage":"https://github.com/vote539/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"41f561f57c68232d03c8039b633cebc4ce0f7ea0","bugs":{"url":"https://github.com/vote539/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.6.3","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"integrity":"sha512-y9oPnOmVTPHUCNwfPkeBMZTdwK0Fk2Xb2dCLxvbhHYSZGhlQxQAjzkvPWvZYtgu8oCyUJIoe/9AbzJqVQU11Hg==","shasum":"2145094a52c5ead27ca3a4a54e07dd1403accbbb","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.6.3.tgz","fileCount":5,"unpackedSize":63828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbuj5GCRA9TVsSAnZWagAACsUP/A96LqnsJ8jbuN0EvLvN\nCVh52C/VTDUaSK6PKuqWeFVAQjT3QelU46X/1jcbg+2C93xAYAUiUkAdbs9O\nKeUBMpUhL8+8sE3d8tLICrRtDWh1T+Sj4d8iSuM5PTACFcfD4cne8CQT9PP7\n3leV5TZs7Lk3+SGmimWv8zvQWFsWp5YOXpw9vmyEETv7dyJEmy5soE0vyQrQ\ncUxrfwP4Mq5E2qShMXzE/zuOlQr2aAJKQeYd3ICqOPBTxT1xYqBasb69hRIv\n+Sy42oFn0fQLq9/s+QjNKrkkrZCOuEn8zc1A7Vzuyf7DxdJoK1Ureg6U0rmL\nok2f3p8nMTJjCFNxHmDiPeB1ixHmvNflHlb9aj/tTjnLi108e54j1/ZVs/eu\nm0TzUQP4upeL1puwWf9781jCWT3gj8Idl8SEIsDz1OWzVPhQ5W5u/mNvK5n9\n7il6kUcRLpIsJRo8/sacQreUzh50GB/yWcRdJ+lAqANqIInqK1RuOb+W61WX\nZlUEN3x9K+xITK4XXwtErAEkv9wd3WZEoGsU7RxAiyy8m9rfhN0irMIaYI8H\nR7ja3DX1+Kdx7SM48QdQltXMdWD6RBLCTeegma+pvpmBOhNJQNVlHllbFnNR\nDPNNi0onirZ+LkU8B+1QP32kV18nJw49KvRlSKn4aRyXJXOJ78eYNlocJw15\nYCTM\r\n=ppib\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1AOnBKuGkn1o6LEeiJ+Qt5GhuB4Ikewy4cXk8+x0M+wIgfvuzW3JGwChM2e42puaWnPSD/sr0DZJGfF8Lxh7lMhk="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.6.3_1538932293399_0.39800011914824696"},"_hasShrinkwrap":false},"0.6.4":{"name":"socketio-file-upload","version":"0.6.4","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.2.2","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^2.0.0","eslint":"^5.6.1","phantom":"^6.0.3","socket.io":"^2.1.1","socket.io-client":"^2.1.1","tape":"^4.9.0"},"main":"server.js","browser":"client.js","scripts":{"lint":"eslint .","pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/sffc/socketio-file-upload.git"},"homepage":"https://github.com/sffc/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"51814c36d464f146a39210718d6d223faaba0e11","bugs":{"url":"https://github.com/sffc/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.6.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"integrity":"sha512-P0Z2kSrDm7zI7P6Q0lBIszdwuFhBHdPbTbORuQetWWbj26KXCVicjd6bdiT1N9n2oplK9VU8DJrX3P9Ur7FX3g==","shasum":"7bc8db9341a856aed6f1640c9f8ab47687c67ffc","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.6.4.tgz","fileCount":5,"unpackedSize":63822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0XiACRA9TVsSAnZWagAAp6YQAJTHlzg9jhUf/9f2ptDW\njadQcLs+7CAMMPgeMCI99XK0/7/lgFPk4auRGZifNC63zwmMGHWznLDjsBn3\nu+xdr1amXVHMKmsrsbbFDzWtKzB5UAmMrK9T/BIr8NTwXPRYYv19SlO0BGiJ\nu2YZ5vgEfv+1Ale0A20RwZ18DaOQfL1bb4K50MnI3TdcWzk90TcRhCzxcE3Y\nkZ/XqUap7FBQ3U7Uy4M0BDLdDVWO3qDk/Lu3xh1ZslzeoXnBsCXg5hykWjb+\n3pDxiNwaV5n+mH/W/tKPGjiO/SmoEKs5IJ1RzythTTWLjU8vnTfr6Jm9lXkt\nG1qXrjk4ZOv/oOM1jR8yG1EjxwBeoQ5fd36hwNw4o2MptzHklXQs9xysfOAy\n4CLLVhKaOSwXWmzjIm0RnFCIk6pgLo/0wCghbqnD96oq5eJ/s4tlKQB2/gp2\n6Eh3zBNyWaEX50BR2M0RNZYMo0QBZoyLxzeXBfCr2A8R8R/7fHdf8F8KPEKl\nnyevuCC/H8+7wrhBOdyc44uNCiqZIMUUoW8qZH0Bvla1Vv4Mz+Ks8b9hL/fg\nFn6fJ/PTkRdKdJ7TfD8T3S4H4/hUcZhR9EIuKdonizp19hxxr61EjniNMjXS\nekuPYCmpsLQSp0VUjVZO3ehlzHEZnLlBrPxY6cwxqZtwMhcgfkgWZP0vGKSZ\n/qT1\r\n=Q8f6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEMWgzzbyTkHpK1KTSopdC/NLbP8xNWRZt10Vo+gJNkAiA1Riv+EyB9sO8+XR5ckcPI71d5lvuea/xPCLpH7coYGw=="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.6.4_1540454527578_0.4302643753419939"},"_hasShrinkwrap":false},"0.7.0":{"name":"socketio-file-upload","version":"0.7.0","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.2.2","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.5.0","ecstatic":"^2.0.0","eslint":"^5.6.1","google-closure-compiler":"^20181028.0.1","phantom":"^6.0.3","socket.io":"^2.1.1","socket.io-client":"^2.1.1","tape":"^4.9.0"},"main":"server.js","browser":"client.js","scripts":{"lint":"eslint .","pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","minify:compile":"google-closure-compiler --js=client.js --js_output_file=client.min.js.tmp","minify:license":"echo \"$(head -n5 client.min.js)\n$(cat client.min.js.tmp)\" > client.min.js.tmp","minify:move":"mv client.min.js.tmp client.min.js","minify":"npm run minify:compile && npm run minify:license && npm run minify:move","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/sffc/socketio-file-upload.git"},"homepage":"https://github.com/sffc/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"1f2f4f9848c2fc67706c7173da8252adb1638a29","bugs":{"url":"https://github.com/sffc/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.7.0","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"dist":{"integrity":"sha512-eKL6LAPiDH9xIsn2eP0ZDzw/EUsnDiZxuDN6TpyPcsaS42Q5wt5VmeN6CGcPsMx57UMQ6jxjIljoBTnCVsG8Qw==","shasum":"aec62bb20051cbc6019792ff4dcc3907101eb466","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.7.0.tgz","fileCount":5,"unpackedSize":80643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDgZoCRA9TVsSAnZWagAAN6AP/08r9MiLZw/qZCK4IJuA\nRMnYSIlYv/Y7taiC6vBWqAhcXySZ6GZ4H60Oj2aeNsLduLK2sjSI/dWZf9fC\nYe2/9+U8L866sIdJ3UT7SnR7E4DXmVu1JFaijBl3vn947TlJ+Val3kxCJpHw\nqfUqFAlvECqpWvLiBsoB5V47FQXBz9MfSaZQGJ67NtnNLho4R86puQvr6NoF\nCLRH37+VYyDjk1v/bavh2dAbOjWgKRNIRwsa3iqg3pF0B2s32OX+JtIfdBw1\nGy2XN2GEwtJJxLDPn8zTTiFDFPbVai56sJmSYELvnCBUXZRs8vJ9Kt5LHPXJ\nYmyFQIL78G+AKwna7Jwiu1ZS6zj2Rg4GvzchFauIeR1FmJpHRpDBDKUp+7px\npDPVucaAiv2rGXopiv5PVcbWeon9WKgvAVDyw7FfE4BVt11CTmnZ82CZsCDD\nTINFmgwmu60Uz3f3r00YHkfXkeEGXn+uaoJr6C35IrMqmCCaHk+UxTqeC4S9\n6OUQ3+DrdrEf+3mENZi2xh7gBYvjug/fz94kBk6NEjiK5K8lhs2ZO5JP7SbI\nsf1LtRTN3iCpl2O4sols7MmpGTC+mIMByXUg+FwPGD5625ef3s+jZqIJby+4\n/V0bohAUliuzPbyl54JLRqBUXo7ILmqZEZh1XvNE8LpCqwAWcG0ktE4wWPtE\nD88Z\r\n=j1wQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlXJnIVjEXrhM9J5MoGHBF3tGMtHUCHwZpOcEBDQq82AiEAlTS6Z/JVf299rhQ+a/NSi2wR/Wf0E8133ZAV33mRlow="}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.7.0_1544423015992_0.572602562104698"},"_hasShrinkwrap":false},"0.7.2":{"name":"socketio-file-upload","version":"0.7.2","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.5.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.6.2","ecstatic":"^2.0.0","eslint":"^5.16.0","google-closure-compiler":"^20181028.0.1","phantom":"^6.3.0","socket.io":"=2.1.1","socket.io-client":"=2.1.1","tape":"^4.13.3"},"main":"server.js","browser":"client.js","scripts":{"lint":"eslint .","pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","minify:compile":"google-closure-compiler --js=client.js --js_output_file=client.min.js.tmp","minify:license":"echo \"$(head -n5 client.min.js)\n$(cat client.min.js.tmp)\" > client.min.js.tmp","minify:move":"mv client.min.js.tmp client.min.js","minify":"npm run minify:compile && npm run minify:license && npm run minify:move","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/sffc/socketio-file-upload.git"},"homepage":"https://github.com/sffc/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"4c4e62df53f435b0411fb8a0461201606b5ec897","bugs":{"url":"https://github.com/sffc/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.7.2","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-T6LG2We7GoGlBQed988s3ACoe2ilmILt57clnFO0rc4QOQ2u1gq00XfMPdHZrb0zyRUtd98G2BhDi2DGiPoNvQ==","shasum":"1205a4d4c0ba9eb8df544442a920a3fcaaa29ff4","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.7.2.tgz","fileCount":5,"unpackedSize":80650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezQm4CRA9TVsSAnZWagAA8yYP/0+xuRaExjkRq8f1PERt\n162QcieNOeT05pJBtZu/uXQ3J9rWs3F44pncwkfjJtYQm4ZMS2PfaNEYnpTR\n9gsiABpjy4vbXHROz+lZyiiePFIJXwBt8qbhGDKoa9qtrSGVpw1vZ1B0FUbQ\n2EaJfHNnk7HacetBOSDqdVyMyAJ2pmxgYgcHhXoTSjSp2ZshPD5U2+FbRYH5\nGdgzL8lI69kKR/ZzaPe0yuvlpnFc6XjOacN5bijaWcwVOUt3Aap8+l4KLbbh\n6XPqa2sKUXTcKvbVcJo/kP2DAP4VWIxWBENyBN0aIOSH7SciIRI9vVPvw5qd\n3rz8kcDAqYVQFz47vteBsYcjulgJPJ5DaQ1V1GuG8fDGLhVppLFM2ipz7sqx\n16C6gnPH8t7xME2V3kqTMNj3hvv1+3FPnGFRfoB2eFEU8SipjDuHyxvOWkmz\n097RttkzLf4WCgbFJm0DJNVTMF9EqzGKDojxWECSfGsCkV3WQShI/tGmSQCJ\n77WdB6nH6G0PVOkcwQ3uu2e6JQ0wV73ApqdAJa7JVPsyiPxvBaS7T4UIvDlw\nqiaCVfsUDcULOmV7V2hOVnymB6GhugLEIwNntcCLNpQ4dWkxiFQqqORWB0/j\nVzX4/UzuBm8xgrjz0yk+kIRa0/fFRvi8ehOUQhprazuIM8fAix+q2wwA2+kz\n3ZC1\r\n=xVq+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM9QA5w8jFQEzqMSzjGpFUGI7kTeVtAmiKBKFhF4bekgIhAKoiBx6PknyXdhZe7zonryUlmipy9nLHkGXWDDpVhPHx"}]},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"}],"_npmUser":{"name":"vote539","email":"vote539@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.7.2_1590495671618_0.4892240129484069"},"_hasShrinkwrap":false},"0.7.3":{"name":"socketio-file-upload","version":"0.7.3","description":"Uploads files to a Node.JS server using Socket.IO","keywords":["upload","uploader","socket","socket.io"],"dependencies":{},"devDependencies":{"browserify":"^16.5.1","buffer-equals":"^1.0.3","chrome-location":"^1.2.1","concat-stream":"^1.6.2","ecstatic":"^4.1.4","eslint":"^5.16.0","google-closure-compiler":"^20181028.0.1","phantom":"^6.3.0","socket.io":"=2.1.1","socket.io-client":"=2.1.1","tape":"^4.13.3"},"main":"server.js","browser":"client.js","scripts":{"lint":"eslint .","pretest":"browserify test/serve/browser-file-transfer.js -o test/serve/bundle.js","test":"tape test/*.js","minify:compile":"google-closure-compiler --js=client.js --js_output_file=client.min.js.tmp","minify:license":"echo \"$(head -n5 client.min.js)\n$(cat client.min.js.tmp)\" > client.min.js.tmp","minify:move":"mv client.min.js.tmp client.min.js","minify":"npm run minify:compile && npm run minify:license && npm run minify:move","start":"node server.js"},"repository":{"type":"git","url":"git://github.com/sffc/socketio-file-upload.git"},"homepage":"https://github.com/sffc/socketio-file-upload","author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"license":"X11","gitHead":"8a82cb73303c86edb35c3d5c5674d1d779a6ce07","bugs":{"url":"https://github.com/sffc/socketio-file-upload/issues"},"_id":"socketio-file-upload@0.7.3","_nodeVersion":"10.23.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JUvzi8Vvp2+GBfQtOehPSfecetZOo4g1JTl6+zmKhPiljn+z09lLL8zYeX4AJVSNpmRkGJnypbHkiPjPSkk5UA==","shasum":"fb71599a4cab3f27d1bf7dbbbfd6149170ad44e2","tarball":"https://registry.npmjs.org/socketio-file-upload/-/socketio-file-upload-0.7.3.tgz","fileCount":5,"unpackedSize":80665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6aRjCRA9TVsSAnZWagAA12sP/05wquvzX8godzdQzL2S\n9RHK/gpYWMzOJc44BPY+rFklkTrib85XkDp9kGDmIVmViafqMcBs9FZXzZJ9\nHadaNbw+x17qvBcRrsnT4Wd66hYW/4CiKdIjP4d7aQh+H4hofcM/oWIq5Wi/\n+OH61HuR+6oblU0onQGGyu7PPZKKLDq6mqCjqJtZXky+PmX7TYDnvZrg5+lQ\njLhpe9RGr85E2LIRbaKDjhYt0IrqGK+N6E8E2m1H20jm208Ax0adlP43gwfS\nLsanrzfcqV03vzFFnVzlFpcKEakKr+LpuMasjUUtfA0r2WlAz6UsRc4/KotG\nbFketjML+0EXi3UIlb0mXzTSv6UjOkyDOpEo/W9diCS54Jzo13q8yWxQFZY+\nXPJ8JwbQPl+R/0Oe15veSD5vVB3k2dYBkRVTmoa5ZZKRWlrM3222G1cDbJSp\n4XtEYeUsI9e6x4UefmBvoyLVyj/rVFAJJVwlLS3/4N3UEpVgZugDkpYyE60l\ncNqK33GAeDXrt/iKEs5qjMqMgGRC6dap6zRwREt/nWA0OHJti9shmy0h+zwF\nFf1aaK8i7eb9m4qclQiuVqzgwLAwJd6ghyOhCOHWHKGVwLOyjiPPU5mz5Sg6\njlhPrHCtq+5rHlne+0jnsVy6bMrwT4gaH+2M+Qih8JVPNyeLhFCc4dJHkRTG\nxeuT\r\n=Assq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCb1LO1Ei+khqBi2iWiUQf33OiCVmtS03/BWThmLxfokgIgMiSPdB0fu6hxh5yxatYZLv/9UZS0SjsHYEJpJjeWL0I="}]},"_npmUser":{"name":"sffc","email":"shane@sffc.xyz"},"directories":{},"maintainers":[{"name":"vote539","email":"vote539@gmail.com"},{"name":"sffc","email":"shane@sffc.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socketio-file-upload_0.7.3_1609147491194_0.13263356546433713"},"_hasShrinkwrap":false}},"readme":"Socket.IO File Upload\n=====================\n\nThis module provides functionality to upload files from a browser to a Node.JS server that runs Socket.IO.  Throughout the process, if their browser supports WebSockets, the user will not submit a single HTTP request.  Supports Socket.IO 0.9 and higher.\n\nThe intended audience are single-page web apps, but other types of Node.JS projects may benefit from this library.\n\nSince version 0.4, this module also supports monitoring file upload progress.\n\nThe module is released under the X11 open-source license.\n\n[![Node.js CI](https://github.com/sffc/socketio-file-upload/workflows/Node.js%20CI/badge.svg)](https://github.com/sffc/socketio-file-upload/actions)\n[![Known Vulnerabilities](https://snyk.io/test/github/sffc/socketio-file-upload/badge.svg)](https://snyk.io/test/github/sffc/socketio-file-upload)\n[![npm version](http://img.shields.io/npm/v/socketio-file-upload.svg?style=flat)](https://npmjs.org/package/socketio-file-upload \"View this project on npm\")\n\n\n## Quick Start\n\nNavigate to your project directory and run:\n\n    $ npm install --save socketio-file-upload\n\nIn your Express app, add the router like this (if you don't use Express, read the docs below):\n\n```javascript\nvar siofu = require(\"socketio-file-upload\");\nvar app = express()\n    .use(siofu.router)\n    .listen(8000);\n```\n\nOn a server-side socket connection, do this:\n\n```javascript\nio.on(\"connection\", function(socket){\n    var uploader = new siofu();\n    uploader.dir = \"/path/to/save/uploads\";\n    uploader.listen(socket);\n});\n```\n\nThe client-side script is served at `/siofu/client.js`.  Include it like this:\n\n```html\n<script src=\"/siofu/client.js\"></script>\n```\n\nIf you use browserify, just require it like this:\n\n```javascript\nvar SocketIOFileUpload = require('socketio-file-upload');\n```\n\nThe module also supports AMD; see the docs below for more information.\n\nThen, in your client side app, with this HTML:\n\n```html\n<input type=\"file\" id=\"siofu_input\" />\n```\n\nJust do this in JavaScript:\n\n```javascript\nvar socket = io.connect();\nvar uploader = new SocketIOFileUpload(socket);\nuploader.listenOnInput(document.getElementById(\"siofu_input\"));\n```\n\nThat's all you need to get started.  For the detailed API, continue reading below.  A longer example is available at the bottom of the readme.\n\n## Table of Contents\n\n- [Client-Side API](#client-side-api)\n    - [instance.listenOnInput(input)](#instancelistenoninputinput)\n    - [instance.listenOnDrop(element)](#instancelistenondropelement)\n    - [instance.listenOnSubmit(submitButton, input)](#instancelistenonsubmitsubmitbutton-input)\n    - [instance.listenOnArraySubmit(submitButton, input[])](#instancelistenonarraysubmitsubmitbutton-input)\n    - [instance.prompt()](#instanceprompt)\n    - [instance.submitFiles(files)](#instancesubmitfilesfiles)\n    - [instance.destroy()](#instancedestroy)\n    - [instance.resetFileInputs = true](#instanceresetFileInputs--true)\n    - [instance.maxFileSize = null](#instancemaxfilesize--null)\n    - [instance.chunkSize = 100 KiB](#instancechunksize--100-kib)\n    - [instance.useText = false](#instanceusetext--false)\n    - [instance.useBuffer = true](#instanceusebuffer--true)\n    - [instance.serializeOctets = false](#instanceserializeoctets--false)\n    - [instance.topicName = \"siofu\"](#instancetopicname--siofu)\n    - [instance.wrapData = false](#instancewrapdata--false)\n    - [instance.exposePrivateFunction = false](#instanceexposeprivatefunction--false)\n- [Client-Side Events](#events)\n    - [choose](#choose)\n    - [start](#start)\n    - [progress](#progress)\n    - [load](#load)\n    - [complete](#complete)\n    - [error](#error)\n- [Server-Side API](#server-side-api)\n    - [SocketIOFileUpload.listen(app)](#socketiofileuploadlistenapp)\n    - [SocketIOFileUpload.router](#socketiofileuploadrouter)\n    - [instance.listen(socket)](#instancelistensocket)\n    - [instance.abort(id, socket)](#instanceabortid-socket)\n    - [instance.dir = \"/path/to/upload/directory\"](#instancedir--pathtouploaddirectory)\n    - [instance.mode = \"0666\"](#instancemode--0666)\n    - [instance.maxFileSize = null](#instancemaxfilesize--null-1)\n    - [instance.emitChunkFail = false](#instanceemitchunkfail--false)\n    - [instance.uploadValidator(event, callback)](#instanceuploadvalidatorevent-callback)\n    - instance.topicName = \"siofu\" (see [client](#instancetopicname--siofu))\n    - instance.wrapData = false (see [client](#instancewrapdata--false))\n    - instance.exposePrivateFunction = false (see [client](#instanceexposeprivatefunction--false))\n- [Server-Side Events](#events-1)\n    - [start](#start-1)\n    - [progress](#progress-1)\n    - [complete](#complete-1)\n    - [saved](#saved)\n    - [error](#error)\n- [Adding Meta Data](#adding-meta-data)\n    - [Client to Server](#client-to-server-meta-data)\n    - [Server to Client](#server-to-client-meta-data)\n- [Example](#example)\n\n## Client-Side API\n\nThe client-side interface is inside the `SocketIOFileUpload` namespace.  Include it with:\n\n```html\n<script src=\"/siofu/client.js\"></script>\n```\n\nIf you're awesome and you use AMD/RequireJS, set up your paths config like this:\n\n```javascript\nrequirejs.config({\n    paths: {\n        \"SocketIOFileUpload\": \"/siofu/client\",\n        // ...\n    }\n});\n```\n\nand then include it in your app like this:\n\n```javascript\ndefine(\"app\", [\"SocketIOFileUpload\"], function(SocketIOFileUpload){\n    // ...\n});\n```\n\nWhen instantiating an instance of the `SocketIOFileUpload`, pass a reference to your socket.\n\n```javascript\nvar instance = new SocketIOFileUpload(socket);\n```\n\n### Public Properties and Methods\n\nEach public property can be set up in an object passing at second parameter of the Siofu constructor:\n\n```javascript\nvar instance = new SocketIOFileUpload(socket);\ninstance.chunkSize = 1024 * 1000\n// is the same that\nvar instance = new SocketIOFileUpload(socket, {\n\tchunkSize: 1024 * 1000\n});\n```\n\n\n#### instance.listenOnInput(input)\n\nWhen the user selects a file or files in the specified HTML Input Element, the library will begin to upload that file or those files.\n\nJavaScript:\n\n```javascript\ninstance.listenOnInput(document.getElementById(\"file_input\"));\n```\n\nHTML:\n\n```html\n<label>Upload File: <input type=\"file\" id=\"file_input\" /></label>\n```\n\nAll browsers tested support this method.\n\n#### instance.listenOnDrop(element)\n\nWhen the user drags and drops a file or files onto the specified HTML Element, the library will begin to upload that file or those files.\n\nJavaScript:\n\n```javascript\ninstance.listenOnDrop(document.getElementById(\"file_drop\"));\n```\n\nHTML:\n\n```html\n<div id=\"file_drop\">Drop Files Here</div>\n```\n\nIn order to work, this method requires a browser that supports the HTML5 drag-and-drop interface.\n\n#### instance.listenOnSubmit(submitButton, input)\n\nLike `instance.listenOnInput(input)`, except instead of listening for the \"change\" event on the input element, listen for the \"click\" event of a button.\n\nJavaScript:\n\n```javascript\ninstance.listenOnSubmit(document.getElementById(\"my_button\"), document.getElementById(\"file_input\"));\n```\n\nHTML:\n\n```html\n<label>Upload File: <input type=\"file\" id=\"file_input\" /></label>\n<button id=\"my_button\">Upload File</button>\n```\n\n#### instance.listenOnArraySubmit(submitButton, input[])\n\nA shorthand for running `instance.listenOnSubmit(submitButton, input)` repeatedly over multiple file input elements.  Accepts an array of file input elements as the second argument.\n\n#### instance.prompt()\n\nWhen this method is called, the user will be prompted to choose a file to upload.\n\nJavaScript:\n\n```javascript\ndocument.getElementById(\"file_button\").addEventListener(\"click\", instance.prompt, false);\n```\n\nHTML:\n\n```html\n<button id=\"file_button\">Upload File</button>\n```\n\nUnfortunately, this method does not work in Firefox for security reasons.  Read the code comments for more information.\n\n#### instance.submitFiles(files)\n\nCall this method to manually submit an array of files.  The argument can be either a [FileList](https://developer.mozilla.org/en-US/docs/Web/API/FileList) or an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects.\n\n#### instance.destroy()\n\nUnbinds all events and DOM elements created by this instance of SIOFU.\n\n**Important Memory Note:** In order to remove the instance of SIOFU from memory, you need to do at least three things:\n\n1. Remove all `siofu.prompt` event listeners *and then*\n2. Call this function *and then*\n3. Set this reference (and all references) to the instance to `null`\n\nFor example, if you created an instance like this:\n\n```javascript\n// ...\nvar instance = new SocketIOFileUpload(socket);\nmyBtn.addEventListener(\"click\", instance.prompt, false);\n// ...\n```\n\nthen you can remove it from memory like this:\n\n```javascript\nmyBtn.removeEventListener(\"click\", instance.prompt, false);\ninstance.destroy();\ninstance = null;\n```\n\n#### instance.resetFileInputs = true\n\nDefaults to `true`, which resets file input elements to their empty state after the user selects a file.  If you do not reset the file input elements, if the user selects a file with the same name as the previous file, then the second file may not be uploaded.\n\n#### instance.maxFileSize = null\n\nWill cancel any attempt by the user to upload a file larger than this number of bytes.  An \"error\" event with code 1 will be emitted if such an attempt is made.  Defaults to a value of `null`, which does not enforce a file size limit.\n\nTo tell the client when they have tried to upload a file that is too large, you can use the following code:\n\n```javascript\nsiofu.addEventListener(\"error\", function(data){\n    if (data.code === 1) {\n        alert(\"Don't upload such a big file\");\n    }\n});\n```\n\nFor maximum security, if you set a maximum file size on the client side, you should also do so on the server side.\n\n#### instance.chunkSize = 100 KiB\n\nThe size of the file \"chunks\" to be loaded at a time.  This enables you to monitor the upload progress with a progress bar and the \"progress\" event (see below).\n\nThe default value is 100 KiB, which is specified as\n\n`instance.chunkSize = 1024 * 100;`\n\nSetting this parameter to 0 disables chunking of files.\n\n#### instance.useText = false\n\nDefaults to `false`, which reads files as an octet array.  This is necessary for binary-type files, like images.\n\nSet to `true` to read and transmit files as plain text instead.  This will save bandwidth if you expect to transmit only text files.  If you choose this option, it is recommended that you perform a filter by returning `false` to a `start` event if the file does not have a desired extension.\n\n#### instance.useBuffer = true\n\nStarting with Socket.IO 1.0, binary data may now be transmitted through the Web Socket.  Begining with SIOFU version 0.3.2 (December 17, 2014), this option is enabled by default.  To support older versions of Socket.IO (e.g. version 0.9.x), set this option to `false`, which transmits files as base 64-encoded strings.\n\nAdvantages of enabling this option:\n\n- Less overhead in the socket, since base 64 increases overhead by approximately 33%.\n- No serialization and deserialization into and out of base 64 is required on the client and server side.\n\nDisadvantages of enabling this option:\n\n- Transmitting buffer types through a WebSocket is not supported in older browsers.\n- This option is relatively new in both Socket.IO and Socket.IO File Upload and has not been rigorously tested.\n\nAs you use this option, [please leave feedback](https://github.com/vote539/socketio-file-upload/issues/16).\n\n#### instance.serializeOctets = false\n\n*This method is experimental, and has been deprecated in Socket.IO File Upload as of version 0.3 in favor of instance.useBuffer.*\n\nDefaults to `false`, which transmits binary files as Base 64 data (with a 33% overhead).\n\nSet to `true` to instead transmit the data as a serialized octet array.  This will result in an overhead of over 1000% (not recommended for production applications).\n\n*Note:* This option is not supported by Firefox.\n\n#### instance.topicName = \"siofu\"\n\nCustomize the name of the topic where Siofu emit message. Need to be the same that the one specified in the server options.\n\nCan be used in team with instance.wrapData and instance.exposePrivateFunction to use a topic already used for something else.\n\n#### instance.wrapData = false\n\nBy default Siofu client sends data the server on a different topic depending of the progress of the upload:\n\n```\nsiofu_start\nsiofu_progress\nsiofu_done\n```\n\nAnd events received from the server to the client:\n\n```\nsiofu_ready\nsiofu_chunk\nsiofu_complete\nsiofu_error\n```\n\nIf wrapData is set to true, Siofu will use only one topic specified by instance.topicName and wrap the data into a parent message.\n\nThe following examples are example settings for the client. :warning: IF YOU USE `wrapData` ON THE CLIENT, YOU MUST ALSO USE IT ON THE SERVER. :warning:\n\nex:\n\n```javascript\n// wrapData false:\n{\n\tid: id,\n\tsuccess: success,\n\tdetail: fileInfo.clientDetail\n}\n// wrapData true\n{\n\taction: 'complete',\n\tmessage: {\n\t\tid: id,\n\t\tsuccess: success,\n\t\tdetail: fileInfo.clientDetail\n\t}\n}\n```\n\nYou can personalise the 'action' and 'message' key by passing a object to wrapData instance. The settings on the server should be the inverse of the settings on the client. For example, if the client has wrapData.wrapKey.message = \"data\", then the server should have wrapData.unwrapKey.message = \"data\".\n\n```javascript\ninstance.wrapData = {\n\twrapKey: {\n\t\taction: 'actionType',\n\t\tmessage: 'data'\n\t},\n\tunwrapKey: {\n\t\taction: 'actionType',\n\t\tmessage: 'message'\n\t}\n}\n// Send a message like this:\n{\n\tactionType: 'complete',\n\tdata: {\n\t\tid: id,\n\t\tsuccess: success,\n\t\tdetail: fileInfo.clientDetail\n\t}\n}\n// Expect message like this from the server:\n{\n\tactionType: 'complete',\n\tmessage: {\n\t\tid: id,\n\t\tsuccess: success,\n\t\tdetail: fileInfo.clientDetail\n\t}\n}\n```\n\nIt's also possible to add additional data (for strongly typed topic or secure pipeline or acknowledgement):\n```javascript\ninstance.wrapData = {\n\tadtionalData: {\n\t\tuserId: '123456',\n\t},\n}\n// Send a message like this:\n{\n\tuserId: '123456',\n\taction: 'complete',\n\tmessage: {\n\t\tid: id,\n\t\tsuccess: success,\n\t\tdetail: fileInfo.clientDetail\n\t}\n}\n```\n\n#### instance.exposePrivateFunction = false\n\nIf true this will expose some functions used in intern to personalize action on the topic. This is used alongside with wrapData to add custom check or logic before process the file upload.\nIf true you will have access to: \n```\ninstance.chunckCallback\ninstance.readyCallback\ninstance.completCallback\ninstance.errorCallback\n```\n\n### Events\n\nInstances of the `SocketIOFileUpload` object implement the [W3C `EventTarget` interface](http://www.w3.org/wiki/DOM/domcore/EventTarget).  This means that you can do:\n\n* `instance.addEventListener(\"type\", callback)`\n* `instance.removeEventListener(\"type\", callback)`\n* `instance.dispatchEvent(event)`\n\nThe events are documented below.\n\n#### choose\n\nThe user has chosen files to upload, through any of the channels you have implemented.  If you want to cancel the upload, make your callback return `false`.\n\n##### Event Properties\n\n* `event.files` an instance of a W3C FileList object\n\n#### start\n\nThis event is fired immediately following the `choose` event, but once per file.  If you want to cancel the upload for this individual file, make your callback return `false`.\n\n##### Event Properties\n\n* `event.file` an instance of a W3C File object\n\n#### progress\n\nPart of the file has been loaded from the file system and ready to be transmitted via Socket.IO.  This event can be used to make an upload progress bar.\n\nYou can compute the percent progress via `event.bytesLoaded / event.file.size`\n\n##### Event Properties\n\n* `event.file` an instance of a W3C File object\n* `event.bytesLoaded` the number of bytes that have been loaded into memory\n* `event.name` the filename to which the server saved the file\n\n#### load\n\nA file has been loaded into an instance of the HTML5 FileReader object and has been transmitted through Socket.IO.  We are awaiting a response from the server about whether the upload was successful; when we receive this response, a `complete` event will be dispatched.\n\n##### Event Properties\n\n* `event.file` an instance of a W3C File object\n* `event.reader` an instance of a W3C FileReader object\n* `event.name` the filename to which the server saved the file\n\n#### complete\n\nThe server has received our file.\n\n##### Event Properties\n\n* `event.file` an instance of a W3C File object\n* `event.success` true if the server-side implementation ran without error; false otherwise\n* `event.detail` The value of `file.clientDetail` on the server side.  Properties may be added to this object literal during any event on the server side.\n\n#### error\n\nThe server encountered an error.\n\n##### Event Properties\n\n* `event.file` an instance of a W3C File object\n* `event.message` the error message\n* `event.code` the error code, if available\n\n## Server-Side API\n\nThe server-side interface is contained within an NPM module.  Require it with:\n\n```javascript\nvar SocketIOFileUpload = require(\"socketio-file-upload\");\n```\n\n### Static Properties and Methods\n\n#### SocketIOFileUpload.listen(app)\n\nIf you are using an HTTP server in Node, pass it into this method in order for the client-side JavaScript file to be served.\n\n```javascript\nvar app = http.createServer( /* your configurations here */ ).listen(80);\nSocketIOFileUpload.listen(app);\n```\n\n#### SocketIOFileUpload.router\n\nIf you are using Connect-based middleware like Express, pass this value into the middleware.\n\n```javascript\nvar app = express()\n            .use(SocketIOFileUpload.router)\n            .use( /* your other middleware here */ )\n            .listen(80);\n```\n\n### Public Properties and Methods\n\n#### instance.listen(socket)\n\nListen for uploads occuring on this Socket.IO socket.\n\n```javascript\nio.sockets.on(\"connection\", function(socket){\n    var uploader = new SocketIOFileUpload();\n    uploader.listen(socket);\n});\n```\n\n#### instance.abort(id, socket)\n\nAborts an upload that is in progress.  Example use case:\n\n```javascript\nuploader.on(\"start\", function(event){\n    if (/\\.exe$/.test(event.file.name)) {\n        uploader.abort(event.file.id, socket);\n    }\n});\n```\n\n#### instance.dir = \"/path/to/upload/directory\"\n\nIf specified, the module will attempt to save uploaded files in this directory.  The module will intelligently suffix numbers to the uploaded filenames until name conflicts are resolved.  It will also sanitize the filename to help prevent attacks.\n\nThe last-modified time of the file might be retained from the upload.  If this is of high importance to you, I recommend performing some tests, and if it does not meet your needs, submit an issue or a pull request.\n\n#### instance.mode = \"0666\"\n\nUse these UNIX permissions when saving the uploaded file.  Defaults to `0666`.\n\n#### instance.maxFileSize = null\n\nThe maximum file size, in bytes, to write to the disk.  If file data is received from the client that exceeds this bound, the data will not be written to the disk and an \"error\" event will be thrown.  Defaults to `null`, in which no maximum file size is enforced.\n\nNote that the other events like \"progress\", \"complete\", and \"saved\" will still be emitted even if the file's maximum allowed size had been exceeded.  However, in those events, `event.file.success` will be false.\n\n#### instance.emitChunkFail = false\n\nWhether or not to emit an error event if a progress chunk fails to finish writing.  In most cases, the failure is a harmless notification that the file is larger than the internal buffer size, but it could also mean that the file upload triggered an ENOSPC error.  It may be useful to enable this error event if you are concerned about uploads running out of space.\n\n#### instance.uploadValidator(event, callback)\n\nCan be overridden to enable async validation and preparing.\n\n```javascript\nuploader.uploadValidator = function(event, callback){\n    // asynchronous operations allowed here; when done,\n    if (/* success */) {\n        callback(true);\n    } else {\n        callback(false);\n    }\n};\n```\n\n### Events\n\nInstances of `SocketIOFileUpload` implement [Node's `EventEmitter` interface](http://nodejs.org/api/events.html#events_class_events_eventemitter).  This means that you can do:\n\n* `instance.on(\"type\", callback)`\n* `instance.removeListener(\"type\", callback)`\n* `instance.emit(\"type\", event)`\n* et cetera.\n\nThe events are documented below.\n\n#### start\n\nThe client has started the upload process, and the server is now processing the request.\n\n##### Event Properties\n\n* `event.file` An object containing the file's `name`, `mtime`, `encoding`, `meta`, `success`, `bytesLoaded`, and `id`.\n    *Note:* `encoding` is either \"text\" if the file is being transmitted as plain text or \"octet\" if it is being transmitted using an ArrayBuffer.  *Note:* In the \"progress\", \"complete\", \"saved\", and \"error\" events, if you are letting the module save the file for you, the file object will contain two additional properties: `base`, the new base name given to the file, and `pathName`, the full path at which the uploaded file was saved.\n\n#### progress\n\nData has been received from the client.\n\n##### Event Properties\n\n* `event.file` The same file object that would have been passed during the `start` event earlier.\n* `event.buffer` A buffer containing the data received from the client\n\n#### complete\n\nThe transmission of a file is complete.\n\n##### Event Properties\n\n* `event.file` The same file object that would have been passed during the `start` event earlier.\n* `event.interrupt` true if the client said that the data was interrupted (not completely sent); false otherwise\n\n#### saved\n\nA file has been saved.  It is recommended that you check `event.file.success` to tell whether or not the file was saved without errors.\n\nIn this event, you can safely move the saved file to a new location.\n\n##### Event Properties\n\n* `event.file` The same file object that would have been passed during the `start` event earlier.\n\n#### error\n\nAn error was encountered in the saving of the file.\n\n##### Event Properties\n\n* `event.file` The same file object that would have been passed during the `start` event earlier.\n* `event.error` The I/O error that was encountered.\n\n## Adding Meta Data\n\nIt is sometimes useful to add metadata to a file prior to uploading the file.  You may add metadata to a file on the client side by setting the `file.meta` property on the File object during the \"choose\" or \"start\" events.  You may also add metadata to a file on the server side by setting the `file.clientDetail` property on the fileInfo object during any of the server-side events.\n\n### Client to Server Meta Data\n\nTo add meta data to an individual file, you can listen on the \"start\" event as shown below.\n\n```javascript\n// client side\nsiofu.addEventListener(\"start\", function(event){\n    event.file.meta.hello = \"world\";\n});\n```\n\nThe data is then available on the server side as follows.\n\n```javascript\n// server side\nuploader.on(\"saved\", function(event){\n    console.log(event.file.meta.hello);\n});\n```\n\nYou can also refer back to your meta data at any time on the client side by referencing the same `event.file.meta` object literal.\n\n### Server to Client Meta Data\n\nYou can add meta data on the server.  The meta data will be available to the client on the \"complete\" event on the client as shown below.\n\n```javascript\n// server side\nsiofuServer.on(\"saved\", function(event){\n    event.file.clientDetail.hello = \"world\";\n});\n```\n\nThe information saved in `event.file.clientDetail` will be available in `event.detail` on the client side.\n\n```javascript\n// client side\nsiofu.addEventListener(\"complete\", function(event){\n    console.log(event.detail.hello);\n});\n```\n\n## Example\n\nThis example assumes that you are running your application via the Connect middleware, including Express.  If you are using a middleware that is not Connect-based or Node-HTTP-based, download the `client.js` file from the project repository and serve it on the path `/siofu/client.js`.  Alternatively, you may contribute an adapter for your middleware to this project and submit a pull request.\n\n### Server Code: app.js\n\n```javascript\n// Require the libraries:\nvar SocketIOFileUpload = require('socketio-file-upload'),\n    socketio = require('socket.io'),\n    express = require('express');\n\n// Make your Express server:\nvar app = express()\n    .use(SocketIOFileUpload.router)\n    .use(express.static(__dirname + \"/public\"))\n    .listen(80);\n\n// Start up Socket.IO:\nvar io = socketio.listen(app);\nio.sockets.on(\"connection\", function(socket){\n\n    // Make an instance of SocketIOFileUpload and listen on this socket:\n    var uploader = new SocketIOFileUpload();\n    uploader.dir = \"/srv/uploads\";\n    uploader.listen(socket);\n\n    // Do something when a file is saved:\n    uploader.on(\"saved\", function(event){\n        console.log(event.file);\n    });\n\n    // Error handler:\n    uploader.on(\"error\", function(event){\n        console.log(\"Error from uploader\", event);\n    });\n});\n```\n\n### Client Code: public/index.html\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n<title>Upload Files</title>\n<script src=\"/siofu/client.js\"></script>\n<script src=\"/socket.io/socket.io.js\"></script>\n\n<script type=\"text/javascript\">\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n\n    // Initialize instances:\n    var socket = io.connect();\n    var siofu = new SocketIOFileUpload(socket);\n\n    // Configure the three ways that SocketIOFileUpload can read files:\n    document.getElementById(\"upload_btn\").addEventListener(\"click\", siofu.prompt, false);\n    siofu.listenOnInput(document.getElementById(\"upload_input\"));\n    siofu.listenOnDrop(document.getElementById(\"file_drop\"));\n\n    // Do something on upload progress:\n    siofu.addEventListener(\"progress\", function(event){\n        var percent = event.bytesLoaded / event.file.size * 100;\n        console.log(\"File is\", percent.toFixed(2), \"percent loaded\");\n    });\n\n    // Do something when a file is uploaded:\n    siofu.addEventListener(\"complete\", function(event){\n        console.log(event.success);\n        console.log(event.file);\n    });\n\n}, false);\n</script>\n\n</head>\n<body>\n\n<p><button id=\"upload_btn\">Prompt for File</button></p>\n<p><label>Choose File: <input type=\"file\" id=\"upload_input\"/></label></p>\n<div id=\"file_drop\" dropzone=\"copy\" title=\"drop files for upload\">Drop File</div>\n\n</body>\n</html>\n```\n\n## Future Work\n\nFirst, I'm aware that this module currently lacks unit tests (mocha, etc).  This is a problem that should be solved.  I'm willing to accept PRs that add unit tests, or else one of these days when I have extra time I'll see if I can add them myself.\n\nIn addition, the following features would be useful for the module to support.\n\n1. Allow input of a file URL rather than uploading a file from your computer or mobile device.\n\nAs always PRs are welcome.\n","maintainers":[{"name":"vote539","email":"vote539@gmail.com"},{"name":"sffc","email":"shane@sffc.xyz"}],"time":{"modified":"2022-06-26T21:58:11.403Z","created":"2013-05-22T11:29:29.364Z","0.1.0":"2013-05-22T11:29:29.928Z","0.2.1":"2013-05-24T05:39:42.348Z","0.2.2":"2013-05-24T05:45:17.348Z","0.2.3":"2013-05-24T06:08:22.149Z","0.2.4":"2013-07-02T17:36:10.218Z","0.2.5":"2013-07-17T02:33:22.194Z","0.2.6":"2013-11-16T22:57:34.258Z","0.2.7":"2014-01-11T18:15:28.064Z","0.3.1":"2014-12-18T04:18:37.976Z","0.3.2":"2014-12-18T04:21:08.554Z","0.3.3":"2015-01-27T17:14:41.601Z","0.4.0":"2015-05-20T18:16:57.262Z","0.4.1":"2015-07-29T16:04:48.370Z","0.4.2":"2015-08-26T16:45:18.901Z","0.4.3":"2015-09-02T16:44:04.535Z","0.4.4":"2015-09-02T22:36:32.211Z","0.4.5":"2016-02-15T08:12:17.319Z","0.4.6":"2016-02-15T18:27:41.137Z","0.4.7":"2016-07-27T07:33:16.927Z","0.5.0":"2016-10-04T10:26:23.186Z","0.5.1":"2016-10-14T19:25:53.908Z","0.4.8":"2016-10-16T10:02:37.180Z","0.5.2":"2016-10-16T10:13:33.256Z","0.6.0":"2016-12-30T10:44:35.737Z","0.6.1":"2018-07-04T08:06:54.334Z","0.6.2":"2018-08-08T18:58:49.950Z","0.6.3":"2018-10-07T17:11:33.521Z","0.6.4":"2018-10-25T08:02:07.711Z","0.7.0":"2018-12-10T06:23:36.120Z","0.7.2":"2020-05-26T12:21:11.772Z","0.7.3":"2020-12-28T09:24:51.341Z"},"author":{"name":"Shane Carr","email":"shane.carr@wustl.edu"},"repository":{"type":"git","url":"git://github.com/sffc/socketio-file-upload.git"},"homepage":"https://github.com/sffc/socketio-file-upload","keywords":["upload","uploader","socket","socket.io"],"bugs":{"url":"https://github.com/sffc/socketio-file-upload/issues"},"license":"X11","readmeFilename":"README.md","users":{"anmol1771":true,"zhanghaili":true,"marshallswain":true,"aqkhan":true}}