{"_id":"mongoose-crate","_rev":"31-70ee8a3d9099377dc9dadfe6cb93fbb7","name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.0","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.2","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^3.2","mongoose":"^3.8","istanbul":"^0.2","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.0","dist":{"shasum":"9843bce1bfeb5aafa637b51c84cc6c151b122459","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.0.tgz","integrity":"sha512-1V5cky/l3d6BBj1tLKXYHjeHnL3fDvX3cieEou8WwYM0ID5o576gxTyIHOSa9wdF0TWf/cbSzcKegNf0KmEnNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAp4dvQbod+3jJcEu6nP6c91pLYfRIYdDnnRVmvF/w3CAiAhcLN/SZt/TzsmGKgdNYhZt9Blm8Nqt3yrKjhe6ctthg=="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}]},"1.0.1":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.1","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.4","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^3.2","mongoose":"^3.8","istanbul":"^0.2","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.1","dist":{"shasum":"1e83e43b4ea0b85327ffdca1f11811af5edda336","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.1.tgz","integrity":"sha512-N3OeV/RfAzfT/VzZZpjFDFCpbXOTYeDetNAHr7xdGC7LPQZE8zWRtapZyvF7xKfGfVoD4vrx1Abc/yqsXyIzow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoToUzDHlDYpHVXUX6hSU+tXOlHdv2ssKF/81zC9U5fwIgVXMF4BxmXmq/wvj0IC2bzNf2U+ZTVQvC6lEfWD9uDPA="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}]},"1.0.2":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.2","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.4","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^3.2","mongoose":"^3.8","istanbul":"^0.2","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.2","dist":{"shasum":"7a36189ae3709c562578b3fc08db1277c1a28aec","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.2.tgz","integrity":"sha512-Fcd6lawCGiLCqhWX9GOP2YF61cpw3RRwiVIoX/K6XQr1o//TZwonOwlHYAPJzxuqRS/UbPwv5es+6M/St044IA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6FudIuk/CFh4Pc/gWWxMf80fmewo0BOLsSpn4pdwRMAiAYdZUiNDfpeCi0uFCS5vba3eVbny96II9Dn0tyvscUsg=="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}]},"1.0.3":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.3","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.4","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^3.2","mongoose":"^3.8","istanbul":"^0.2","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.3","dist":{"shasum":"ae4b533e8cb94943320eb51b71e957153a2e2622","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.3.tgz","integrity":"sha512-eDkzXAIaSssFoQO//LIefQKsnZoRZzEQkcL+F6aUPdOdTC1XXrIiwG0N4EjB9V71ZMGlFAOiL7ah2h1to4bfsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID/EbN4v8CT/my0CBbPQ/f+YHvh5XlfzyMfo6j+ws4tCAiBEzRq1kyHVZPF4jxlkaCOUZrtTOu28mhtEcM4fUNAe+w=="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}]},"1.0.4":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.4","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.7","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^3.2","mongoose":"^3.8","istanbul":"^0.2","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.4","dist":{"shasum":"0f0a74fe51c9d09f24195cc8c4797ed6fb03a79f","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.4.tgz","integrity":"sha512-LW/5IJWsPSfnkgeqP678faA6CogLm5AeEfX7eqlCR8AsJIvFNYnjJjBcBjCJpUjx9C7eFb0kv0KOEgQQ9gS6MA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbOEeMauTrMOYTwRxzuZkzifc/gADRr14ZuV7QXlp+mQIhAOoGhAfqs1v3tvTiywyVuog+yfK4ZsnH1PNyjPt7xYvP"}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}]},"1.0.5":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.5","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^4.0","mongoose":"^3.8","istanbul":"^0.3","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"gitHead":"1aeec5ad30eb028e3e71193d83edb4a4ad07dfa9","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.5","_shasum":"b23fb1ea38de4d5ec012d369524d58ceb2910f2f","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"b23fb1ea38de4d5ec012d369524d58ceb2910f2f","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.5.tgz","integrity":"sha512-Qnai/ISW3ueC/Mbl2fBCJxfOwOdvJAtMjoFnXqDTfZlJXHLR1jmORBZAt5az/UZrZsP3zsz62Lprehc3NcwLxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDKU363PGn0IaTfpiEWz/ZFfTJLo5BxJL/u0YOAMBuBgIgV7FDEkCz8fecOHiZa6HYlivm7FPQGzb+eQhWWxnXU9A="}]}},"1.0.6":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.6","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^4.0","mongoose":"^3.8","istanbul":"^0.3","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"gitHead":"a12f57aff6b719aa08e533eb543cf3067b50d6d6","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.6","_shasum":"1ee63664b5bc04425dd912788fb505c75c5e855e","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"1ee63664b5bc04425dd912788fb505c75c5e855e","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.6.tgz","integrity":"sha512-46cLiFAc6Bny7g1SmnD+BebhtTMxQ82BvhlcZpUsOaND2yEN8cBNBeE8TGfS73w8oE20Rp1cRFkr83zCmm9kuw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ndPIy09t4NFfF+cIguQ6Y6UK4n6nwvYEBJ2uXL2N1AIhAIkds8QH/ppeUQkNGs+rYC5RytgOZ3lqpQ+kUci4dYJe"}]}},"1.0.7":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.7","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","mmmagic":"^0.3","check-types":"^1.2"},"devDependencies":{"mocha":"^1.18","should":"^4.0","mongoose":"^3.8","istanbul":"^0.3","sinon":"^1.9","coveralls":"^2.8","tingodb":"^0.2","tungus":"^0.0"},"gitHead":"6d7d60d390489e37d63bb8661c7063bdafc43ca8","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.7","_shasum":"cb8c51f216655e17412db1eeab2f764f7eacc9b8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"cb8c51f216655e17412db1eeab2f764f7eacc9b8","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.7.tgz","integrity":"sha512-RiOJehqGj2/uEq04tllOQpRDh6/qYifcdhB2ULOnSDWqLJs3n5eODHtTA7HIng3M3VYiM3EbZIyCVNkWCbtF+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvozAatWb66H/CtXkW9B7NLjZ1T0abXdmS9rFPSCNCdgIgA3AKp13CSt/95timscHfgHE0LNDexhLUj+COiO5AOvg="}]}},"1.0.8":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.8","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","check-types":"^2.2","mmmagic":"^0.3"},"devDependencies":{"coveralls":"^2.8","istanbul":"^0.3","mocha":"^2.1","mongoose":"^3.8","pre-commit":"^0.0","should":"^4.0","sinon":"^1.9","tingodb":"^0.3","tungus":"^0.0"},"gitHead":"c5a05a34e3fb7defb05dad54d950a284366ea871","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.8","_shasum":"a9273fef0102f8fdcceaacd84f72fe4326f4bf00","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"a9273fef0102f8fdcceaacd84f72fe4326f4bf00","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.8.tgz","integrity":"sha512-gEefqdKTb1Y76NWBbd2jZ8q4f/IBSKED56kY9ltuNA/aHYywV8iZfRnscx7i04GQS8Str3+5qsy3s7wuaGl9vA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV4h0v1Fb/L39JDpVE1IxcecdHG2/8W+43J+Irye79wwIhAOgTW+eHCCBZyo1LkI0pMo93RAD+5gdjEaUCp43T+YB5"}]}},"1.0.9":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.9","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","check-types":"^2.2","mmmagic":"^0.3"},"devDependencies":{"coveralls":"^2.8","istanbul":"^0.3","mocha":"^2.1","mongoose":"^3.8","pre-commit":"^0.0","should":"^4.0","sinon":"^1.9","tingodb":"^0.3","tungus":"^0.0"},"gitHead":"6f15e4f039f09c4780acfa050b21e94ebcd944c2","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.9","_shasum":"0fc7ad7e59c6c0c8309707c817668fc2a21ccd11","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"0fc7ad7e59c6c0c8309707c817668fc2a21ccd11","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.9.tgz","integrity":"sha512-32qePJ5+xaBCvbPIHJUCyyQvmraAXH+TwbYFFgMQS6sNPAtUDLnqrNl8//EhIkWv+UbojrbIXAq1XOWrdkPqgA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDsSuG8EIvvp9J0VSX+cZe8ToKiLi0kLnbjkFe5dEbUXAiBD3pnyuvFTpmRNdzMOC5T7sGkhPWgoHAi4tLoXVOfRDA=="}]}},"1.0.10":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.10","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha","coveralls":"istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^0.9","check-types":"^2.2","mmmagic":"^0.3"},"devDependencies":{"coveralls":"^2.8","istanbul":"^0.3","mocha":"^2.1","mongoose":"^3.8","pre-commit":"^0.0","should":"^4.0","sinon":"^1.9","tingodb":"^0.3","tungus":"^0.0"},"gitHead":"906ea9cb29f90f4da8e92bbb8c9c7e3726488303","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.10","_shasum":"d29ccf7f7f0c6cc8517952cda6d88dc2083be3c6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"d29ccf7f7f0c6cc8517952cda6d88dc2083be3c6","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.10.tgz","integrity":"sha512-H2KyDyaQRtbcAp8NSoGC2tHiGfSU4jXLXXdaWSrypXx/lBBObcVFrnQ5CY3oYtoh9UHIbR/T+WPljrMoi/1Mbg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7qqnRDR79G/2VCYj/A6m9LnkSyl2E0UJUKgCjQFxM+AiEAozxqaVUrnamf1hnvpg6xvx4YXKmwSg7fkGt+sMqhvRg="}]}},"1.0.11":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","license":"ISC","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.0.11","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"mocha --recursive","test:coverage":"istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive","test:coverage:check":"istanbul cover _mocha -- --recursive && istanbul check-coverage --statement 100 --branch 100 --function 100","lint":"standard","coveralls":"cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^1.5.2","check-types":"^7.0.0","mmmagic":"^0.4.4"},"devDependencies":{"coveralls":"^2.8","istanbul":"^0.4.3","mocha":"^2.1","mongoose":"3.8.40","pre-commit":"^1.0.6","should":"^9.0.1","sinon":"^1.9","standard":"^7.1.2","tingodb":"^0.4.2","tungus":"0.0.5"},"pre-commit":["test:coverage:check","lint"],"gitHead":"0356b94104dee6a12158024c6d881585ca3fffb5","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.0.11","_shasum":"9f012472ed74a6dbfd5ec48906cff6de5cde7c25","_from":".","_npmVersion":"2.15.5","_nodeVersion":"4.4.5","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"dist":{"shasum":"9f012472ed74a6dbfd5ec48906cff6de5cde7c25","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.0.11.tgz","integrity":"sha512-iJS6FgHmVMsUMrVTphBLNL3YzaUwRwbQyqMrF1u0ImJvaFj0J4Qqjq7NAnQETKsvQl8kQz8w1t3WjB8ySXi/7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA426VKRyNvclXWDdYRS01yS1SYT7ZrA/sudjhTJ/o/4AiAGsOQv8qg9NGB/dSnIRjh3w9QnIbFl1jSYFJzd7vVglQ=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/mongoose-crate-1.0.11.tgz_1465823720947_0.9392469513695687"}},"1.1.0":{"author":{"name":"Alex Potsides"},"name":"mongoose-crate","description":"Attach files to MongoDB models via Mongoose.js","license":"ISC","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"version":"1.1.0","homepage":"https://github.com/achingbrain/mongoose-crate","repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"main":"index.js","scripts":{"test":"mocha --recursive","test:coverage":"istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive","test:coverage:check":"istanbul cover _mocha -- --recursive && istanbul check-coverage --statement 100 --branch 100 --function 100","lint":"standard","coveralls":"cat ./coverage/lcov.info | coveralls"},"dependencies":{"async":"^2.1.4","check-types":"^7.0.0","mmmagic":"^0.4.4"},"devDependencies":{"coveralls":"^2.8","istanbul":"^0.4.3","mocha":"^3.2.0","mockgoose":"^6.0.8","mongoose":"^4.7.0","pre-commit":"^1.0.6","should":"^11.1.1","sinon":"^1.9","standard":"^8.6.0"},"pre-commit":["test:coverage:check","lint"],"gitHead":"13aa291baff667f9d7d6d50607fd05dd67b1af10","bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"_id":"mongoose-crate@1.1.0","_shasum":"bf234ecf4ef30ccb79b9d67f660a6085e6d7291c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"dist":{"shasum":"bf234ecf4ef30ccb79b9d67f660a6085e6d7291c","tarball":"https://registry.npmjs.org/mongoose-crate/-/mongoose-crate-1.1.0.tgz","integrity":"sha512-KDwoeQbFxAKia0y2tlpQuFMF2Tc80FUJLgFIb8m5Qw4dkvCFFL3YEH7RwTDqo5AWfsFPnp+kVfptXZhLEWMkLw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHUENMZwYtwiZx2pq0Afvag2P6N5vtm03Us4H5k8aVnAiEAxM/R+SG1syuGOEn7z8zqEzuH0rzqPphT0ykxmcRy8hs="}]},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/mongoose-crate-1.1.0.tgz_1481491341616_0.9643410695716739"}}},"readme":"# mongoose-crate\n\n[![Dependency Status](https://david-dm.org/achingbrain/mongoose-crate.svg?theme=shields.io)](https://david-dm.org/achingbrain/mongoose-crate) [![devDependency Status](https://david-dm.org/achingbrain/mongoose-crate/dev-status.svg?theme=shields.io)](https://david-dm.org/achingbrain/mongoose-crate#info=devDependencies) [![Build Status](https://img.shields.io/travis/achingbrain/mongoose-crate/master.svg)](https://travis-ci.org/achingbrain/mongoose-crate) [![Coverage Status](http://img.shields.io/coveralls/achingbrain/mongoose-crate/master.svg)](https://coveralls.io/r/achingbrain/mongoose-crate)\n\nmongoose-crate is a plugin for [Mongoose](http://mongoosejs.com/) for attaching files to documents.\n\nFile meta data is stored in MongoDB, whereas the actual file itself is stored on the [local filesystem](https://github.com/achingbrain/mongoose-crate-localfs), [Amazon S3](https://github.com/achingbrain/mongoose-crate-s3) or [Google Cloud Storage](https://github.com/achingbrain/mongoose-crate-gcs).  For others pull requests are gratefully accepted.\n\nUploaded images can optionally be passed through [ImageMagick](https://github.com/achingbrain/mongoose-crate-imagemagick) to generate one or more images (e.g. thumbnails, full size, original image, etc) before saving.\n\nThe architecture is nominally based on [mongoose-attachments](https://github.com/heapsource/mongoose-attachments) but that project hasn't seen updates in a while.\n\n## Usage\n\nThe following example extends the 'Post' model to use attachments with a property called 'attachment'.\n\n```javascript\nconst mongoose = require('mongoose')\nconst crate = require('mongoose-crate')\nconst LocalFS = require('mongoose-crate-localfs')\n\nconst PostSchema = new mongoose.Schema({\n  title: String\n})\n\nPostSchema.plugin(crate, {\n  storage: new LocalFS({\n    directory: '/path/to/storage/directory'\n  }),\n  fields: {\n    attachment: {}\n  }\n})\n\nconst Post = mongoose.model('Post', PostSchema)\n```\n\n.. then later:\n\n```javascript\nconst post = new Post()\npost.attach('attachment', {path: '/path/to/file'}, (error) => {\n\t// attachment is now attached and post.attachment is populated e.g.:\n\t// post.attachment.url\n\n\t// don't forget to save it..\n\tpost.save((error) => {\n\t\t// post is now persisted\n\t})\n})\n```\n\n.. or using promises:\n\n```javascript\nconst post = new Post()\npost\n  .attach('attachment', {path: '/path/to/file'})\n  .then(() => post.save())\n```\n\n### Arrays\n\nFiles can be stored in arrays as well as individual properties. Just specify the `array` property to the field definition:\n\n```javascript\nconst mongoose = require('mongoose')\nconst crate = require('mongoose-crate')\nconst LocalFS = require('mongoose-crate-localfs')\n\nconst PostSchema = new mongoose.Schema({\n  title: String\n})\n\nPostSchema.plugin(crate, {\n  storage: new LocalFS({\n    directory: '/path/to/storage/directory'\n  }),\n  fields: {\n    attachments: {\n      array: true\n    }\n  }\n})\n\nconst Post = mongoose.model('Post', PostSchema)\n```\n\n.. then later:\n\n```javascript\nconst post = new Post()\npost.attach('attachments', {path: '/path/to/file'}, (error) => {\n  // post.attachments.length == 1\n\n  post.attach('attachments', {path: '/path/to/another/file'}, (error) => {\n    // post.attachments.length == 2\n  })\n})\n```\n\n.. or using promises:\n\n```javascript\nconst post = new Post()\npost.attach('attachments', {path: '/path/to/file'})\n  .then(() => post.attach('attachments', {path: '/path/to/another/file'}))\n```\n\n### Images\n\nSee [mongoose-crate-gm](https://github.com/achingbrain/mongoose-crate-gm).\n\n[mongoose-crate-imagemagick](https://github.com/achingbrain/mongoose-crate-imagemagick) is also available but should be considered deprecated because the underlying dependencies are no longer maintained.\n\n#### Using with Express.js uploads\n\nAssuming that the HTML form sent a file in a field called 'image':\n\n```javascript\napp.post('/upload', (req, res, next) => {\n  const post = new mongoose.model('Post')()\n  post.title = req.body.title\n  post.description = req.body.description\n  post.attach('image', req.files.image)\n    .then(() => post.save())\n    .then(() => res.send('Post has been saved with file!'))\n    .catch(err => next(err))\n})\n```\n\n### Metadata\n\nBasic meta data is captured about uploaded files.\n\nExample:\n\n```javascript\n{\n  \"name\" : \"dragon.png\",\n  \"size\" : 26887,\n  \"type\": \"image/png\",\n  \"url\" : \"http://my_bucket.s3.amazonaws.com/folder/4fbaaa31db8cec0923000019-medium.png\"\n}\n```\n\nPlugins can add extra meta data.  E.g. [mongoose-crate-imagemagick](https://github.com/achingbrain/mongoose-crate-imagemagick) adds width, height, etc.\n\n## Deletes and updates\n\nIf you delete a model, any attached files will be removed along with it (with one caveat, see Schema methods vs Queries below).  Similarly, if you attach a file to a field that already has an attachment, the old file will be deleted before the new one is added.\n\nFor attachment arrays, when the model is saved, any attachments that are no longer in the array will have their files removed.\n\n### Schema methods vs Queries\n\nRemoval of files happens via middleware - if you use `findById`, `findOne` or anything else that returns a [Query](http://mongoosejs.com/docs/queries.html) and call methods on that query, middleware is not executed. See the [Mongoose middleware docs](http://mongoosejs.com/docs/middleware.html#notes) for more.\n\nIn short, do this sort of thing:\n\n```javascript\nMySchema.remove({...}, callback)\n```\n\nor this:\n\n```javascript\nMySchema.findOne({...}, (err, doc) => {\n  doc.remove(callback)\n})\n```\n\n..but not this:\n\n```javascript\nMySchema.findOne({...}).remove(callback)\n```\n\n### Array attachment deletion\n\n```javascript\nconst mongoose = require('mongoose')\nconst crate = require('mongoose-crate')\nconst LocalFS = require('mongoose-crate-localfs')\n\nconst MySchema = new mongoose.Schema({\n  name: {\n    type: String,\n    required: true\n  }\n})\n\nMySchema.plugin(crate, {\n  storage: new LocalFS({\n    directory: '/path/to/storage/directory'\n  }),\n  fields: {\n    files: {\n      array: true\n    }\n  }\n})\n\n// ...\n\nconst model = new MySchema()\nmodel.name = 'hello'\nmodel.attach('files', {\n    path: file\n}, callback)\n\n// some time later remove one of the array entries\n\nmodel.files.pop()\nmodel.save()\n```\n\n### Non array attachment deletion\n\n```javascript\nconst mongoose = require('mongoose')\nconst crate = require('mongoose-crate')\nconst LocalFS = require('mongoose-crate-localfs')\n\nconst MySchema = new mongoose.Schema({\n  name: {\n    type: String,\n    required: true\n  }\n})\n\nMySchema.plugin(crate, {\n  storage: new LocalFS({\n    directory: '/path/to/storage/directory'\n  }),\n  fields: {\n    file: {}\n  }\n})\n\n// ...\n\nconst model = new MySchema()\nmodel.name = 'hello'\nmodel.attach('file', {\n    path: file\n}, callback)\n\n// some time later delete the file\n\nmodel.file = null\nmodel.save()\n```\n","maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"time":{"modified":"2022-06-20T06:58:40.364Z","created":"2014-03-29T08:28:16.176Z","1.0.0":"2014-03-29T08:28:16.176Z","1.0.1":"2014-03-30T07:41:57.484Z","1.0.2":"2014-03-30T19:22:43.584Z","1.0.3":"2014-03-31T06:50:42.523Z","1.0.4":"2014-04-14T06:27:51.095Z","1.0.5":"2014-08-01T07:28:05.670Z","1.0.6":"2014-08-01T09:45:30.954Z","1.0.7":"2014-09-04T14:12:18.583Z","1.0.8":"2015-01-09T09:15:56.307Z","1.0.9":"2015-01-09T09:45:13.730Z","1.0.10":"2015-01-09T09:56:10.934Z","1.0.11":"2016-06-13T13:15:23.730Z","1.1.0":"2016-12-11T21:22:24.255Z"},"homepage":"https://github.com/achingbrain/mongoose-crate","keywords":["mongoose","s3","imagemagick","uploads","attachments","files"],"repository":{"type":"git","url":"git://github.com/achingbrain/mongoose-crate.git"},"author":{"name":"Alex Potsides"},"bugs":{"url":"https://github.com/achingbrain/mongoose-crate/issues"},"readmeFilename":"README.md","users":{"chovy":true,"mdpauley":true,"markthethomas":true,"khanghoang":true,"ash0080":true},"license":"ISC"}