{"_id":"@appunto/aoj-uploads","_rev":"13-5d2848f2ea957561f7dd0acb9feea0ec","name":"@appunto/aoj-uploads","dist-tags":{"latest":"0.1.12"},"versions":{"0.0.3-0":{"name":"@appunto/aoj-uploads","version":"0.0.3-0","description":"Uploads model for API on JSON framework","main":"src/index.js","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.1.6","express-fileupload":"^1.1.6","lodash.kebabcase":"^4.1.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.1","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"932a539a0ef92bac3d5a2cc8d1c5188c920b45df","_id":"@appunto/aoj-uploads@0.0.3-0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-99iD29bVUiFpUredLUhZm6TtOkPymBPrGUVkYaL30BqA29IpUGax3ZuSp/QfVHJeKSW+beBtUCh8lXjsVaovng==","shasum":"d8a26f58b798526c3687354ce1f43c40c32cc012","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.0.3-0.tgz","fileCount":20,"unpackedSize":4223103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEb6yCRA9TVsSAnZWagAAcLQP/RqmFPeUnd3bkM3Gxi8T\nN00LhqaI/ZHZqXVoc8Ej3oV3jQlaqbSyx0aCLNgoiIZ2tGYGwXQTtw5c3b3U\nq5Sf6pDfh/rMUg9ATWuG+C/w7+NDsH5neCwgCmed1s43d9DAx9PM8/s3qp/k\ng4NuYiIt+XWrMLfDF01Xp8k57/yx/UsRPAhErgdCzIyxmIZiISAXgUN9zvKH\nLPpU74/7O7m/HyJUAkPNVpUoXh1xXxgIrwVbhtenC1eJYe4xSO36dMPduSnw\nB8ZzmJZZjHZChS1WwyuOZd2E5gniU/pK6b1BBNnyEEQaff6KOuLWu2Kigcqi\nWgx9kXwI0WEDN6b9m8VMW/MkYqeU953seFUJ5fSdffQt1uLoShxyeAuJjUzM\nD2BT+16RxWN31a1Qj35xwCmmyeH0eVGWy6nXQisG6xWit30/HzXfqJlyVHCp\nY1aQp13K9xg6lX9QUdmCTYHkR3/xz5I4LkGaLivt+5lUfbnaAUvELaIlNMCJ\n+GI7+Oa7om/GSLLTJvfwSpVLedko+Xz/d0QMwiuYsCCRCuuLnmkom+RHVu44\nM+5Qe27FpMwqePi+qU5fBxcovKIfC/tEmI+X7lK46AsKonG6ueERnVjikmCG\nGWR5a/XQ9hf4YJjOxYroIHFklZ6pqVVHmIuH4Uyp/fZptvDYdjJMTdzfqhq1\ngX4K\r\n=evMy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoBtXkFwOWXxuezf1VeJu4ggxXR/bbQaumf06wjmJuqAiA5HGamyyackBuvyupm6k1UDZcjvourBhbVdZ+yHi8QiQ=="}]},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.0.3-0_1594998449798_0.9654717894476266"},"_hasShrinkwrap":false},"0.1.0":{"name":"@appunto/aoj-uploads","version":"0.1.0","description":"Uploads model for API on JSON framework","main":"src/index.js","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.1.6","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.1","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"12500a039eb872f76547a9de1222899967d4dde2","_id":"@appunto/aoj-uploads@0.1.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1D1iuHv0Fj1ppb74RzdT+rH4FwFlK/yhZT4yziUmmcS6vSFnTWmI0b0CvuZtXKfOgebNVtdOlRvMcf76KO0v1Q==","shasum":"aaed32b2f2c15a9566d82d72725d9dd1c483b2d6","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.0.tgz","fileCount":21,"unpackedSize":4235935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEryMCRA9TVsSAnZWagAAwzMP/2ht94eaKWwflQKmTn5r\npgLeq6lgoBwB7cHCFQYA94lUNqRKna2I6eX8mHJ58Y9C6NFN73UIbAfLPyZD\nkY/5917giG5hI2JA2e3aVDHwvdOwqZppjEAekmROkxVHPzNV/sQbTQK4/VfD\n4JyO6wuT5AV2Su0lw8gUWTDWS/HoztVyjNv4zirVFOSrzAWwZdCaUM5cEjm3\nDBftyBqntB2Z/6aH0AV83B4uIH5Tj6R1tvK9Oo3cuZOi0GH4ikLMCnQBY0h4\neDOkb0yakC0IFlgM6X6QJihpQPNkblSjtvg8vB62RUYgKRDoRwZY2ORRLd83\nkbaRV9i5qtp1/cBXsy+7YI+QB31YJB3LggKZYTlnU2Ug6AfPfbk+HlClf4Eg\nADQeowabGb3boMFEQlENZccNQOI2E7dNyRxl769kI3MgK3RFNhLdEKSOWZRd\nJpj4K4SGwbYI6WgDMy2fjV2MlY4EEmZVLHTHFdFp69TVTZAXd+W26jcmZ8wu\nC8Io6lW6V59YUYqPfUoT0k+drR5cmyiwbWKSrdS2nnrJ47Z18RXINsCUuawW\nPbze0LGOka5JoVRaMVveY7lqfNXA35K+Oh3z0HU98s1pESWbzcBrhBG+Neji\nt5dLx9w9mH9VidNkwEJSW/17e8w06aBMOrBckMnWoqJl9aChaH4aLmlidCVA\nk06/\r\n=CIyP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyD0PieLkiGcwEt3yyQ5g9BlZRDvJYg//rqwG7ecFlOgIgb1r6DRzUduQ/wccJoPeZ+L+sXaXxl0tyflgPEqr0hKM="}]},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.0_1595063435173_0.9548516106098492"},"_hasShrinkwrap":false},"0.1.1":{"name":"@appunto/aoj-uploads","version":"0.1.1","description":"Uploads model for API on JSON framework","main":"src/index.js","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.1.6","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"github:dimer47/node-ovh-objectstorage#pull/11/head","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"1faaf486d777f80c36c44be7d53e46b3793ecece","_id":"@appunto/aoj-uploads@0.1.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-y5sxvw0Fs/7T64aI/vf8uqve1wDZV5NFlYnQF3u55bNfqNXtnC7uxrNltzaNFlrgCqjUsySoCPLnxpWfEJCCLA==","shasum":"06697d5994a6cb25f00dba495f6ecd43c3ee15eb","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.1.tgz","fileCount":25,"unpackedSize":5435736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFVImCRA9TVsSAnZWagAAp/oQAJ7tftk5s/zoJe914XpK\nRwA+KRY1eXxodEyM8zM2ZmA8dXb3eNYAAAdHhVF6i5zX0lqJmu3wXA9O12ao\n/zxOKpMULs0Tmw+RmuLzraOWCjzF7IfoBTbOhtPnecs2m0ODjl2Vb2xyYIzd\npazozuoLMngYUAFK6gsYMjAH+S4NtMR0c0NHbcTpGZXFCh2OSGVL7Yq4q2iY\nnVhBXdH7mlF5VIYjxyKgen03wVJ1QSnhhVrmHw6L7KW4mxEhXNL6ofWNTbDl\npjCMVW2NCIejp/QPj0ptNNr/8Xa47wHUVrmvyuAGaGrSYpAgrAfu+5UpCBii\nCV6pfldHWRlHW53f97ieo8Z2uHsGaLYPeeUH4WcwvUQFgUwFj/q5Yh4o3CwW\niaIO2JJJQgipQUACodJuoEr9LJxxD7hVbyy2SPSBxuz4X4WMf8Pc0xa1NV6l\nk8OzwgPRFdcDL2NS6NvQ93nQSYKnaeuRlI6STNOUntsiFKJwzKZliHJFsNFH\nocGrvxibDs4FbBf9kFVKQS6+KZF7Fk/LdPMUEG+R97V3G5tKinLIKPp6Q7V1\nifCsDw7+6G/THgGRDHPfu2rO5YiwHtqjVu4a9i4GCyhRWmF5GVtlDwiE2Q3X\nSJ+9RWP4YrGCZ48rE8nvflM5NACCxHj5OUsvxjr8X/7YCI8qq8gAGBV5JSmn\nkqHZ\r\n=pFWF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCL8uoMM51f/xRJLwWOWkkYJWkRm/B80p2Er7YtADrPAiEAiQdQzzhFWmu1eCfSgajuLbl7EfD67t8G1ph7gwvwqTQ="}]},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.1_1595232805887_0.6645497361093828"},"_hasShrinkwrap":false},"0.1.2":{"name":"@appunto/aoj-uploads","version":"0.1.2","description":"Uploads model for API on JSON framework","main":"src/index.js","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.1.6","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"github:dimer47/node-ovh-objectstorage#b072c97777966b55dc6598c459725a752b6b352f","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"6bc5bed888354f0063992d163964384aeef9e32a","_id":"@appunto/aoj-uploads@0.1.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-JSuGu0Km2KkjpMwNVl/Vj9GEkvnkExuSMp22laKRTLUuTg7zip9dbhozV/7n/AJ8LT7buq+vjdTyj394pMw12A==","shasum":"cd51471e2d8d3cc57993b2f516518b5d135f1241","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.2.tgz","fileCount":25,"unpackedSize":5435764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFvbFCRA9TVsSAnZWagAAiOcP+gIu/VxWyH11ge9ZkG7p\no1RkrH3fgpAUa3GkBwLLDvVhzJmVmG1fyyKGr3SlzE6RUERXAjxsZtt3eLvp\n1+p/QcjrQwLMpWaI+wYpznBg+FM0B4FJbPPj9pAs0Z94dCXbBXjVtWVRBw2T\nAIdBG3zb41f5vkYoRwmQzSfMZPPTZPpKvHFUGnnODzBgLs90qEKHxR3vuYed\nIAjT3hE0ZuOYKhMd4hUyx9B/sC/qThpmZK5GGCN5QeWfTZw798HE+FzjvhEg\npKWxfG3jXw+OAikXYti42+key+J3VVZZGVkrfPK4+KMYXEcQsnT7CIqHsytu\nnuJkElsf9hSVVqFuLA0cpPwRXui1w6Yq/7jVceD/RSul1YRBkJWsq4WtiuJm\nUXAND3gBuphunrQ+c5TKO2duJKrtJoG25JmF3DdicDf3vbx34HkqQ9ou+4vI\nupHqOzBojqucmdAeytTVvyezfjdocXPzQIXT3Z+VeLYPur/WoNTV7NCi7BkF\nCLEkoGireZgPQx8khgy8KFBl6ey+R8T1sdoJdMTWmaxQSAe2K8QA8YYEeLG+\nGcb002FU3kXRHrh6bqz9cHc6lvrJt1WClS7K8vsiSIBCVMsluiFjmHQc8hc0\nDlmynD6BlIj56oQdqRB5yKYHxyqE4xaSS2C6x2dvii31LgjHuJAvpiotAu+s\ntTg5\r\n=Hg1S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCN1H2cZDoEMKGPI9PU4vkKV7GFmWWwDSoYtBY++C9GrwIhANTB2OTDMeXZnomeTJ4FGf1qOZjk2tNNQjBZ1qa0Zk13"}]},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.2_1595340484804_0.14447949162662943"},"_hasShrinkwrap":false},"0.1.4":{"name":"@appunto/aoj-uploads","version":"0.1.4","description":"Uploads model for API on JSON framework","main":"src/index.js","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.2.3","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"31e0d8901dda898846d524d8e5b5469097175d19","_id":"@appunto/aoj-uploads@0.1.4","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-woqkr6mFzrSJx9GYs7UOYBv7cuSSJ6uLPaAkTiJmB6YuONsJIlnY8SQI2GrMdVWPbtpfYWsswi1rYktnSUMvdw==","shasum":"86e3f8f795a2449e2e90a15fa053b1ecd68a6976","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.4.tgz","fileCount":25,"unpackedSize":5755423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4yF5CRA9TVsSAnZWagAAd9wP/0gCUgauwYWyy1e8+JIk\nSOOS5mh/EbYz/08iv7jUHJOm6I63PiYfTWrjEHQKwFZ+Zo+7A29AsXaCIXDC\nHQE6JPtq/tu/9Xsu3c4l6IILh7IRcwCMAVLassZGKKfGlIPG2Fqdzv3SiLmd\nkjgLzoT8J5CrA+113DWHkEgdh59C3nTP7sXpHuCHhoqiJXgoLqB4VYfjC55Y\ne747/aBfUxjZcWhFQnJILNNg56N/E+NXrdViO7PzFR/l3vIccjRSQvvJx9IW\na/4f1lr7HxHsKLA8n9YNP5gvkC3ZzRbXni1YFhSRzoTX2gTaU9r2XNvC58SS\nGdcMYnJE5JMcL+7LbHxYYyF/xQgSrr7OaV4lff+KYteSVT4ELiigfrY3rpAn\nCktMYzRIdi/Vgh30WsxQXCG0o3SqkWIVRuhrrVXt4sbKhiyiz1TIOqeM9O81\nz/49gaT83ZoZCzlxRCccnY9a14tY9qa9vRtiyAdYUFa7sHnyve2ufyLIsc1P\nacef6qEeN4udVVgcC4OVN5pPs04j64jWPs37T9lAel7SRzX2TGSR3ffx8SXQ\nyBxNxfIpUKQVhtFSdDoBNklJpm59yg4otD/bik42Vrtc2nh8jYfAB9PhwA75\nBtRJx1gTxMuM9a0qKxreVKHLSsnlk1L8BpyR9fhe92GUixBxUQDadAA9yka3\nHP/r\r\n=b1VE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA5q0m2grL4DLKtNruNkcIf+xiOi4hLp7tZAa+8uxnLyAiAEHzIUOrnNwUmSTmTAODcVMMU8vJ1/xqltazCcRshPVQ=="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.4_1625497976961_0.10255756103681679"},"_hasShrinkwrap":false},"0.1.5":{"name":"@appunto/aoj-uploads","version":"0.1.5","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.2.3","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"f7a6b9c7f38dad9afd8d30cba81232476dc95a9a","_id":"@appunto/aoj-uploads@0.1.5","_nodeVersion":"12.22.7","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wDdYpD9lJ3QFsGfwFjT0GD86WIuZyh3A41c+a1t8Wkah1xDi4ueirmOMeOCp6eJy3MVhEd5QQqmIzYw9DfopuA==","shasum":"0d6fe1927fd70e2048d2e3e9352877939e0b8635","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.5.tgz","fileCount":26,"unpackedSize":5757198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzFqMCRA9TVsSAnZWagAA0qIP/R8ZValWp/9m61YRNaTh\n12WRzHjkmCQsXYOgdfpl6mcOkH0huJbXbPxtD23vMqQTJRfMwSsk2itz7Tol\nK6OMHg0v5nQSZlL5OcPlZxDNp1xkchShi2NoKVUPdF94+h1/wnzrrqq+3Sro\nUlMK5jIJe4bVo/mBWooWSkX40Ql0CHHpTgHvvo4auqOTR6noUqmuQpIt4LYG\n0BAsTOk9nq1mxuVO+IUnFpQPYL2NiW6+b8d7SXJe2YD2N/VBR0togpXM6hQN\nOxYrOZQ8qEWUu96NlBlNElpJ69W0qp3XtvQDvAUwdjrvzjLDdCfga5DqeeY9\npPvOY6URgVvWoFriioeotZei6YUIGjg5nzFcMxuHucUHN6TcaID8Djt9R/cq\nR+SSUnKcb3q4l3GtRT8Xn7xKs/bLZakb1j0a/7r2Vmp/JNZgbDxFAaAxgV5+\nQKI5boSG4gk80FV6KDFf3RiZBvZBDAg/gDn4CnJCJuRl8rnU3EWzYAWQvuUl\n9229RR8mPYI/ihDL6wowaN4MqdY72gf10ygWWETg0mOkWG6Wjtc73eXX+IEj\ndaZ/MTFWmgctNEynS2CxaLuvXb/imitYLBFYSsNoZeop9mw2rtA7ezLs+qtJ\nPVOiZGH6nhMYegL9jtuCYwbnE6ZOhTae/+Os8EZ96/6sc3nmcFnems6h1kiF\nQlR+\r\n=c+rF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi9RsNXLEyQdzyqslkxlgL2C9V8Ne/h3K9jlfcRDk4zAIgSBocppNjEcPjlDe4So+8ewwgyOO2W3mT9CvTu6uqeMI="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.5_1636982447103_0.8963524333133492"},"_hasShrinkwrap":false},"0.1.6":{"name":"@appunto/aoj-uploads","version":"0.1.6","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.2.3","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"d9069f0ca374e302e4d629c2490f9268d6c8b70a","_id":"@appunto/aoj-uploads@0.1.6","_nodeVersion":"12.22.10","_npmVersion":"6.14.16","dist":{"integrity":"sha512-NpsBRqhPqIJdY/smRjNn5C7B/t/e3Qhw/zIs1qP3mm4uWht53DXela65ac38Fk/sUDyM5f237dPdwSbo/J8NHQ==","shasum":"261c201ccb781bf2d1558067477977376c20bdd5","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.6.tgz","fileCount":26,"unpackedSize":5757204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJi6NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpF1w/5AEUrulBf21DeRsqOWnitghJwBoUPz1s4wWIDDWhAlZZSOQTg\r\noAZxsb26U90F8utoW5ZovtpilCOCgnDljY52Li2gsUgUoCdZwOaMdNzqMa72\r\nOmkJRQlw9hYaNZKD2W9v9R1qSIEhWq28MIGa6mFunUQz7IFCqbdggo+dtVNM\r\nrJOEDC0b/V4JQVMkamYX5JGEtJY06OP5SgZplzxq9gweVPAgr20kp6S5UQgi\r\nepTuKyGVs2nVZOA6wSXCT945gfJOJEWD5c7gwzC28iSNmWVqAT1iB5gc/fg2\r\nk0Pzm/0r19vJu3lNZkuAgEHm8arRfY/sGdaIhbw2baCdoNwhiNHSU9yr4ptu\r\nS4fwD3w/p/JJAjNCl4mN0RQm8hY5CL8BvNs1BFNgh8sNeo0QvetyyCtpfaWZ\r\nFq/vcoTOK1WqCla5OXUKtBTGB4k2krLKOadymQV9bI7xEhthl8UB4oha9ZGw\r\n0ruyJa2Sl0D67e8RQ3Hy3/pyoo+LXgTxkxWKxXDzO8vIE407K5rCNYfURMPp\r\nYrbV9XteOpRRwsLSUKMDrBPmpC0Fa9luCVrCugJ3iTkt9/sqo2m0wFDkj4F6\r\n06dhOxAYH985f/MJ5eIiZ+DnQEgTe292xRxbLDEXdaq++Jpn5Jo1v1TzKAzY\r\nHAg5s19fwmMBto6M4R2oDNa+VMtlCGIdhrQ=\r\n=hKhs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCg5sH+QIURI2xyyxr32Pmakm4NaHZeD7yfFM8VADRADgIhAOgcCm2K/UoZIaoCmOPx22511EO7ndHCzgNJuOxrRYRz"}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.6_1646669453032_0.58619238505136"},"_hasShrinkwrap":false},"0.1.7":{"name":"@appunto/aoj-uploads","version":"0.1.7","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.3.0-7","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"6c4b901654c10064529eec0c9a802e57c35399e7","_id":"@appunto/aoj-uploads@0.1.7","_nodeVersion":"12.22.12","_npmVersion":"6.14.16","dist":{"integrity":"sha512-j6NSZ65i3f6M4Sz5YpaUct5fqLVySlbld66Jwo5oKzimKEAEkAiZcu7gsiEkBKMkZm3pSbKJXiXr8Hs5QhbyxA==","shasum":"962bd364f7ed8d1767febc84f0bb443e3ca686e2","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.7.tgz","fileCount":26,"unpackedSize":5757206,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJFmdWwGa0Jh1gLdWRGktW9pfWBRc+1qmAvkqICH4tnAIhAM4zRru7TY4iSYbfuHDfvzs0Boa/F3c8ilHR9KKCQRT0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7pHdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYKw//aObp0waRBdMOZXGpm5xlaAcL0lMwZzqD0UMuq00iqF6CKutA\r\niXCjPsQ6U7qs3JI8hFTTf6tyHyrCcPKT3+R9m4NkTMGLhqrVL+Ey+JlZlvLu\r\nwwstyK8ngLW7Jw6wH8iqWIWsuWc6qkqS7ryj4qU1HQV1nVQA3lpzowuopJJF\r\nxKpCldt48yyVnTcp09Fy096AwyfiR70sWzU6wFUpnamuVDO575ytQ30bn5Xt\r\n3tSbrxdHbVBfZOHrulOoqcVwCpebkNfqQmQqJg3zQp9ChcpHdrSbosqV4MkF\r\n6yhQXZw0VdngvWUXZ6x8xdIUA7WpTgIIZGG58wjFgotKhIYJ9lHGr38pbBdN\r\nloTPSuhPaFCx9QjindEtw6CqB1S3FgIACS3oNtDvY74N/7UiJa/kU83VdUvq\r\no2YcVbKv48xVBIf4HKlNwH9DbT7NFvYtliG32BxDLNWQtAMaBCYJJK6NWtSD\r\n9ZlstB+1GRsA0AWyZ2O+46svsuqBKZEYgkRuV0yYdn+82zho8AL4qFB6RVWF\r\nK2fb+t0X7+F7i3yaLUze8kicx1HupAN1z0l5r6mCP6JHKLu0xENqg723yUQg\r\nwosH7ITcmOx+d51+ASyJDz5yUeYVv2oXepy5lLFtntSZDEhYU/GF102nMNmV\r\nx0Cd0NP3twbgUklOBNsBXl4Gx/kDamTRcQw=\r\n=L3Ww\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.7_1676579293072_0.45537474671817524"},"_hasShrinkwrap":false},"0.1.8":{"name":"@appunto/aoj-uploads","version":"0.1.8","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.3.0-7","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"745eaa5bbdf6554045693c75ebf2acbd2a0ddd4b","_id":"@appunto/aoj-uploads@0.1.8","_nodeVersion":"12.22.12","_npmVersion":"6.14.16","dist":{"integrity":"sha512-pLreXie47GFeWfQXaK+uk3qMN6gDK4LK2A67nF4KoIZ668bvhNa/rLme1myCcfi1+j5lZNYtmL8NDRb+Ntvwkg==","shasum":"07fe0c7fad46261ed45fd749471cf4e87f2b29bc","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.8.tgz","fileCount":28,"unpackedSize":5918420,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH2vtVW6eIPngbiSXP7z/QIms+Xc2uJF2jKeRUh4Vi8gCIQDqInKPFerM+f8th74o3SKA4kmWAXp7dIE1ZqT7KuJh2Q=="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.8_1683410138893_0.44277450276870933"},"_hasShrinkwrap":false},"0.1.9":{"name":"@appunto/aoj-uploads","version":"0.1.9","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.3.1","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.25.4","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"7d2377dd5cb63a340365501e9b1ae9028b65f7a9","_id":"@appunto/aoj-uploads@0.1.9","_nodeVersion":"12.22.12","_npmVersion":"6.14.16","dist":{"integrity":"sha512-/zOjZZGhkNNvuNaszcMH/T9Uecm4UgOOI/ps19zNEajcMqpN/O9u5VB24yN5iLfot+oDfrkaSg2CElC7YRqYfg==","shasum":"b5c7f2921ebdde5b981a53831107691f1c2e72e7","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.9.tgz","fileCount":28,"unpackedSize":5918418,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfE3Hfu9cQyc6gnPClB+s4fvSMpAPuf//fFU8KLwZukAIgaJulRJSTdZl9U2OdAqVX4yvW+5h/v8ab6N0jkk23Uh4="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.9_1683447494259_0.05314512530537008"},"_hasShrinkwrap":false},"0.1.11":{"name":"@appunto/aoj-uploads","version":"0.1.11","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.3.3","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.32.1","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"8c903d4457c8c5c76ef0a90ab081523391eebba8","_id":"@appunto/aoj-uploads@0.1.11","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-jSVLSiwcVEQcN37ik+rtalu4ksrhfZ77adkKeyPsr0ZbikQAanfrAa4CR7vKHRjxF4G8T7VSInIBUvdlwe5RZw==","shasum":"abc5664a1660afbcc3bdcfe6e080d02f47bd2b2f","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.11.tgz","fileCount":28,"unpackedSize":5918419,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/SYUI33ao/yMIY76fDcm93O3HcNR6GUvd+qFFrTVrsAiB5v20YwoNvykmstwtCsKOgE5Z4VooIVEvQ6PV11/PJRw=="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.11_1688135571663_0.04722246690338672"},"_hasShrinkwrap":false},"0.1.12":{"name":"@appunto/aoj-uploads","version":"0.1.12","description":"Uploads model for API on JSON framework","main":"src/index.js","types":"types/index.d.ts","scripts":{"test:local":"mocha './test/localhandler.test.js' --timeout 50000 --exit","test:ovh":"mocha './test/ovhhandler.test.js' --timeout 50000 --exit","doc":"jsdoc -c jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"homepage":"https://github.com/appunto-io/aoj-uploads#readme","devDependencies":{"chai":"^4.2.0","chai-http":"^4.3.0","dotenv":"^8.2.0","eslint":"^5.0.1","eslint-loader":"^2.0.0","mocha":"^6.2.2","mongodb-memory-server":"^6.6.1","yargs":"^10.0.3"},"dependencies":{"@appunto/api-on-json":"^0.3.3","express-fileupload":"^1.1.7-alpha.4","lodash.kebabcase":"^4.1.1","md5":"^2.2.1","mustache":"^4.0.1","mv":"^2.1.1","node-ovh-objectstorage":"^2.0.3","sharp":"^0.32.1","tmp":"^0.2.1","uuid":"^3.3.2"},"gitHead":"1a69f700fc49d94d2322095a10fe5569f492bbbf","_id":"@appunto/aoj-uploads@0.1.12","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-I7WRwRPVw+dJApLzlPUxX4pkpab2+0xOv6oCJhrn4iuFGivDcoQqy9m7pRJV3pDPTRMSC9Le3DOQGMgfQxKQEw==","shasum":"ea90a623f9c3e4503c273d23eff0e5ddb595c5ed","tarball":"https://registry.npmjs.org/@appunto/aoj-uploads/-/aoj-uploads-0.1.12.tgz","fileCount":28,"unpackedSize":5918781,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID+N566kzItJptEVFsNHAQZ0uWLEszQ1Mk+8/aybDlz3AiEA6XRyV4xDowOsrAFL4eeXFz2GHssggFebGaFwDOM0eso="}]},"_npmUser":{"name":"mattia.longhin","email":"mattia@appunto.io"},"directories":{},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aoj-uploads_0.1.12_1689787347720_0.8248744343499939"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-17T15:07:29.578Z","0.0.3-0":"2020-07-17T15:07:30.088Z","modified":"2023-07-19T17:22:28.208Z","0.1.0":"2020-07-18T09:10:35.472Z","0.1.1":"2020-07-20T08:13:26.230Z","0.1.2":"2020-07-21T14:08:05.175Z","0.1.4":"2021-07-05T15:12:57.231Z","0.1.5":"2021-11-15T13:20:47.369Z","0.1.6":"2022-03-07T16:10:53.287Z","0.1.7":"2023-02-16T20:28:13.446Z","0.1.8":"2023-05-06T21:55:39.135Z","0.1.9":"2023-05-07T08:18:14.521Z","0.1.11":"2023-06-30T14:32:52.032Z","0.1.12":"2023-07-19T17:22:28.022Z"},"maintainers":[{"name":"mattia.longhin","email":"mattia@appunto.io"}],"description":"Uploads model for API on JSON framework","homepage":"https://github.com/appunto-io/aoj-uploads#readme","repository":{"type":"git","url":"git+https://github.com/appunto-io/aoj-uploads.git"},"bugs":{"url":"https://github.com/appunto-io/aoj-uploads/issues"},"license":"ISC","readme":"# aoj-uploads\n\nDisclaimer : this library was build for and is used by [Appunto](https://www.appunto.io) for its own internal projets. It has bleeding edges. Use at you own risk.\n\n## Concepts\n\n`@appunto/aoj-uploads` provides file upload functionalities for `@appunto/api-on-json`.\n\nThe module exports the function `createUploadApiModel(options)` that created both a `DataModel` and `ApiModel` objects. These can be used as explained in `@appunto/api-on-json` documentation.\n\nActual file storage is done by a separated Handler object. Handler can be provided through `options` object. This allows library user to choose between different storage solutions (filesystem, OpenStack block storage, AWS S3, etc.).\n\nA generator object can be provided to create file variants. This is useful for image resizing, etc.\n\n\n## Installation\n\n```\nnpm install @appunto/aoj-uploads\n```\n\n## API\n\n### `createUploadApiModel`\n\nThe function accept a configuration object `options` and returns an object with two fields: `dataModel` and `apiModel`.\n\n```js\nconst { dataModel, apiModel } = createUploadApiModel(options);\n```\n\n### Example\n\n```js\nconst { Mongo }                = require('@appunto/api-on-json');\nconst { createUploadApiModel } = require('@appunto/aoj-uploads');\n\nconst { dataModel, apiModel } = createUploadApiModel({\n  /*\n   options, see below\n  */\n});\n\nconst db        = new Mongo(mongoUri);\nconst port      = 8080;\nconst jwtSecret = 'secret';\n\ndb.connect();\ndb.init(dataModel);\n\napiModel\n  .toServer({db, jwtSecret})\n  .listen(port);\n\n```\n\n\n#### options\n\nBelow you can find the list of options parameters and their default values.\n\n```js\noptions = {\n  /*\n    API endpoint. Upload api is accessible at http(s)://<domain>/<apiName>.\n    Example: https://localhost:8080/uploads\n\n    If this is not defined, it defaults to the value of collection option\n  */\n  apiName : 'uploads',\n\n  /*\n    Name of the database table that stores file informations\n  */\n  collection : 'uploads',\n\n  /*\n    Accepted mime types or array of accepted mime types.\n    Mime type filtering can be disabled with '*' (default).\n\n    If a file with unsupported mime type is uploaded the server responds with\n    a HTTP 415 error.\n\n    Example : 'application/pdf'\n    Example : ['image/png', 'image/jpeg']\n  */\n  accept : '*',\n\n  /*\n    Name of the form-data field that holds the file\n  */\n  fileField : 'file',\n\n  /*\n    Maximum file size in bytes. The default value ('*') disables size\n    limitations. Files are nevertheless truncated at 500MB.\n\n    If a file is larger than maxSize, a HTTP 413 error is generated.\n  */\n  maxSize : '*',\n\n  /*\n    If true, the file is served with 'Content-Disposition : Attachment' header.\n    This implies that browser opens the file in another window or opens the 'save as' dialog.\n\n    If false, the file is served with 'Content-Disposition : inline' header.\n  */\n  attachment : false,\n\n  /*\n    If true, looks for existing files with the same name and passes the existing storage names\n    to handler.store. This should replace the existing files instead of creating new copies.\n    Actual file replace implementation is left to handler instances.\n  */\n  replace : false,\n\n  /*\n    Handler object that implement the actual storage logic.\n\n    See below for handler signature.\n\n    The default handler uses local filesystem to store uploaded files.\n  */\n  handler : LocalFilesHandler,\n\n  /*\n    Options provided to handler.\n  */\n  handlerOptions : {},\n\n  /*\n    Optional variants generator. This is called before storing uploaded files.\n\n    See below for signature.\n  */\n  generator : undefined,\n\n  /*\n    Options provided to generator\n  */\n  generatorOptions : {}\n}\n```\n\n### Accessing the API\n\n```\nPOST https://<host>/<apiName>\n\n{\n  \"id\" : \"...\",\n  \"name\" : \"filename.extension\",\n  \"ownerId\": null,\n  \"storageName\": \"...\",\n  \"mimetype\": \"...\",\n  \"size\": 2399020,\n  \"createdAt\": \"2020-07-17T17:28:42.553Z\",\n  \"updatedAt\": \"2020-07-17T17:28:42.553Z\",\n  variants : [{\n    \"variantId\": \"tiny\",\n    \"name\":\"filename_tiny.extension\",\n    \"storageName\": \"f5d40dd0-c852-11ea-9fbc-b9e17722a014\",\n    \"mimetype\": \"image/png\",\n  }]\n}\n```\n\n```\nGET https://<host>/<apiName>/<id>\n\n{\n  same as POST\n}\n```\n\n```\nDELETE https://<host>/<apiName>/<id>\n\n{}\n```\n\n```\nGET https://<host>/<apiName>/<id>/binary\n\nReturns file content\n```\n\n```\nGET https://<host>/<apiName>/<id>/binary/<variantId>\n\nReturns variant content\n```\n\n## Handlers\n\nHandlers are objects with the following signature:\n\n```js\nhandler = {\n  // Store uploaded file\n  store : async (uploadPath, options, name)  => storagePath,\n\n  // Retrieve stored file content\n  get   : async (storagePath, options) => content,\n\n  // Delete stored file\n  del   : async (storagePath, options) => void\n}\n```\n\n`uploadPath` is the path to the uploaded file. This can be moved on a different directory or uploaded on a cloud service such as AWS S3 or some OpenStack provider.\n\n`storagePath` is a `String` stored in database that should uniquely identify the stored file. This should be generated by `store` and is provided to `get` and `del`.\n\n`options` implementation depending options.\n\n`name` if provided, this should be the name of the stored file. Used when replace option is active.\n\n### `LocalFilesHandler`\n\nStores files into local file system. Useful for local testing or single-server\nconfiguration. Do not use this handler for K8s or AWS ElasticBeanStalk deployments.\n\n```js\nconst { LocalFilesHandler } = require('@appunto/aoj-uploads');\n\nconst options = {\n  // ...\n\n  handler : LocalFilesHandler,\n  handlerOptions : {\n    // see below\n  },\n\n  // ...\n};\n\n// ...\n```\n#### `LocalFilesHandler` options\n\n```js\nconst handlerOptions = {\n  /*\n    Path to the local directory where files should be stored.\n\n    If not specified, 'del' and 'get' fails with an exception. 'store' does not fail but emits a warning in console. Uploaded files are stored into './'.\n  */\n  storagePath : undefined // REQUIRED\n};\n```\n\n### `OvhObjectStorageHandler`\n\nStores files into OpenStack object storage provided by OVH.\n\n```js\nconst { OvhObjectStorageHandler } = require('@appunto/aoj-uploads');\n\nconst options = {\n  // ...\n\n  handler : OvhObjectStorageHandler,\n  handlerOptions : {\n    // see below\n  },\n\n  // ...\n};\n\n// ...\n```\n\n#### `OvhObjectStorageHandler` options\n\n```js\nconst handlerOptions = {\n  /*\n    OpenStack username created through OVH cloud console.\n\n    WARNING: This is not the username that gives you access to the OVH mananger console.\n  */\n  ovhUsername : undefined, // REQUIRED\n\n  /*\n    OpenStack user password\n  */\n  ovhPassword : undefined, // REQUIRED\n\n  /*\n    ID of the OVH Cloud project. This can be found in Cloud section of OVH manager.\n  */\n  ovhTenantId : undefined, // REQUIRED\n\n  /*\n    The region where your project is hosted: GRA, SBG, etc..\n  */\n  ovhRegion : undefined, // REQUIRED\n\n  /*\n    The name of OpenStack container. This is the equivalent of bucket name in S3.\n  */\n  ovhContainer : undefined // REQUIRED\n};\n```\n\n\n## Generators\n\nGenerator are functions with the following signature:\n\n```js\ngenerator = async (file, options) => ({\n  variants : [{/* ... */}, /* ... */],\n  cleanup : () => {/* ... */}\n})\n```\n\nA generator accepts two arguments: `file` and `options`\n\n`file` is an object with the following signature\n\n```js\nfile = {\n  name         : String // Name of the original file. Ex: flowers.jpeg,\n  tempFilePath : String // Path to uploaded file\n  mimetype     : String // Standard mimetype\n}\n```\n\n`options` depends on actual generator implementation.\n\nA generator should return an object with two fields: `variants` and `cleanup`.\n\n`variants` is an array of object with the same signature of file, except that each object should contain one more field (`variantId`) that is used to discriminate between variants:\n\n```js\nvariants = [\n  {\n    variantId    : String, // Identifies the variant. Ex: 'small', 'cropped', etc..\n    name         : String, // Can be different from original name\n    tempFilePath : String, // Path to variant file\n    mimetype     : String  // Can be different from origin file\n  },\n  /// ...\n]\n```\n\n`cleanup` is a function that is called after variants are stored. This should remove generated files, release resources, etc. It has no arguments and returns no value but can fail and throw an exception. This will not prevent files to be stored but a warning is emitted in console to prevent user that cleanup is not working.\n\n### `ImageResizer`\n\nGeneric uploaded image resizer. It is a wrapper around the `sharp` library.\n\nThe generator fails with a 400 HTTP error if uploaded file is not an image. You should use the general `accept` option to filter mimetypes. This will generate a more meaningful 415 HTTP error.\n\n```js\nconst { ImageResizer } = require('@appunto/aoj-uploads');\n\nconst options = {\n  // ...\n\n  generator : ImageResizer,\n  generatorOptions : {\n    sizes : [{\n      id : 'small',\n      width : 300,\n      height : 300\n    }]\n  },\n\n  // ...\n};\n\n// ...\n```\n\n#### `ImageResizer` options\n\n```js\ngeneratorOptions = {\n  /*\n    Array of size definition objects. Each element in the array will generate\n    a variant.\n  */\n  sizes : []\n}\n\n```\n\nA size definition object has the following signature:\n\n```js\nsize = {\n  /*\n    Variant id. Ex: 'small', 'cropped', etc..\n  */\n  id : String\n\n  /*\n    Width and height. The resize behaviour depends on fit option.\n  */\n  width,\n  height,\n\n  /*\n    One of 'cover', 'contain', 'fill', 'inside' or 'outside'.\n    See sharp documentation for details:\n    https://sharp.pixelplumbing.com/api-resize#resize\n  */\n  fit = 'inside',\n\n  /*\n    Resize position. Depends on fit.\n    See sharp documentation for details:\n    https://sharp.pixelplumbing.com/api-resize#resize\n  */\n  position = 'centre',\n\n  /*\n    Output format. One of 'jpeg', 'png', 'webp'.\n    This defaults to input format, if this is a supported output format,\n    otherwise 'jpeg' is used.\n  */\n  format = inputFormat || 'jpeg',\n\n  /*\n    Sharp output options. this object is provided as is to sharp 'toFormat'\n    function. See sharp documentation for details:\n    https://sharp.pixelplumbing.com/api-output#toformat\n  */\n  outputOptions = {},\n\n  /*\n    Mustache template that is used to generate the file name for each variant.\n    The generator exposes three values:\n       'name' : the original name\n       'base' : the original name without extension\n       'ext'  : original file name extension with dot.\n\n    This can be useful to add prefix or change extension when output format is different from input. Ex: '{{ base }}_small.jpeg'.\n\n    By default, the same name of the original file is used.\n  */\n  nameFormat = '{{ name }}'\n}\n```\n","readmeFilename":"README.md"}