{"_id":"@aidalinfo/nuxt-file-storage-s3","_rev":"8-c6d180f9a7cf8a81805d234c0a78001b","name":"@aidalinfo/nuxt-file-storage-s3","dist-tags":{"latest":"0.3.7"},"versions":{"0.3.0":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.0","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.0","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"855de136129b86498ef1d8467643415b6f811ac8","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.0.tgz","fileCount":17,"integrity":"sha512-Fh/NSUzZVTTqfhtQcMxXwIKWYpC5I+hbt4zBKg1YcuTPEFUhzPtjZIbOxAjAPx5T/rLak/TCFFUM79VngvRICw==","signatures":[{"sig":"MEUCIBtsV8Uq5o9L7yyF9gQvHEnAPIMP4VWXKd/jbKytK1p0AiEA1ouVe1E9u5vVFMNxeY0XP57N1oBedSnuWBp5Yf7OAz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30954},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"330b3177a84dcbd5fbf6b53d0846ecf35dba38d3","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.4","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"defu":"^6.1.4","@nuxt/kit":"^4.3.1","@aws-sdk/client-s3":"^3.884.0","@aws-sdk/s3-request-presigner":"^3.884.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.3.1","eslint":"^9.0.0","vitest":"^3.2.0","@types/node":"^22.0.0","changelogen":"^0.5.7","@nuxt/schema":"^4.3.1","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^3.23.0","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.0_1773151002316_0.22100773444862565","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.1","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.1","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"4c5ed5fe4dfe17570a0aa71a4f598b152280b29a","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.1.tgz","fileCount":29,"integrity":"sha512-pRFZPv3RRbqWxpp7bUbX51A+SLBpc3pPBDys3iLrVi/U9bbJHa7pf9yZeAaO8tTZpFclowohsWpMkASC7Vp/ww==","signatures":[{"sig":"MEUCIEuENbdaI6kfillZKdjr3pH26zQZXTuarYAbKYIGusptAiEAgO/M7KrNtbfC/YFySnzo4O8NYVlf8ba36ez2wS8xIxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44523},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"3b4be81221eea3de4ed6b1b8a0e8f5c63c2c6563","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.4","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"defu":"^6.1.4","pdf-lib":"^1.17.1","@nuxt/kit":"^4.3.1","@aws-sdk/client-s3":"^3.884.0","@aws-sdk/s3-request-presigner":"^3.884.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.3.1","eslint":"^9.0.0","vitest":"^3.2.0","@types/node":"^22.0.0","changelogen":"^0.5.7","@nuxt/schema":"^4.3.1","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^3.23.0","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.1_1774523031873_0.7880748694873152","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.2","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.2","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"10068356679f255f5af5b9859ca661c4ed63ab21","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.2.tgz","fileCount":29,"integrity":"sha512-TpkUZb6yOSWTlyiS9iA2UxswOY1iMtXno/lvEbGbwhfT0uF1T9uK/zcOKTO2mAxslQY8wuMH7bTgSUvELSSwYQ==","signatures":[{"sig":"MEUCICKlyFQLHGBhoh0op9p9avfeumvJTYmi26uEZ1Ghr3owAiEA3DUvT5EM+mc/Nif5Mav4MFl1QIvb8dEFX9ITdLU/5I8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44523},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"5e0c6c962262ca4dd995348daa51838c7d399af6","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.4","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"defu":"^6.1.4","pdf-lib":"^1.17.1","@nuxt/kit":"^4.3.1","@aws-sdk/client-s3":"^3.884.0","@aws-sdk/s3-request-presigner":"^3.884.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.3.1","eslint":"^9.0.0","vitest":"^3.2.0","@types/node":"^22.0.0","changelogen":"^0.6.2","@nuxt/schema":"^4.3.1","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^3.23.0","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.2_1774531924810_0.395864938349447","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.3","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.3","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"37927842cd335d455125413c2e0fca2bc0970091","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.3.tgz","fileCount":29,"integrity":"sha512-30cIoFHVHlZ9asPh7sAAQvzLBH3CKDsmIJoEP7ht/jj6qVhAV7d3/MITlkYN4sfcNPDaFecv+fg0X9IfpWOOHw==","signatures":[{"sig":"MEYCIQCo+Hp5RboKLgHBFekYyrd5HseZS84cNzEd/r0vpnN0KgIhAJuR/u8F0iXN3NT/B/WqOXHJnKZguZ4GrIdJaqZ/SM/E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44525},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"907a8d10c4147f30cd8ddf2aca70cf1eec34e460","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.7","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"defu":"^6.1.7","pdf-lib":"^1.17.1","@nuxt/kit":"^4.4.5","@aws-sdk/client-s3":"^3.1045.0","@aws-sdk/s3-request-presigner":"^3.1045.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.3.1","eslint":"^9.0.0","vitest":"^3.2.0","@types/node":"^22.0.0","changelogen":"^0.6.2","@nuxt/schema":"^4.3.1","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^3.23.0","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.3_1778679391657_0.700668866117073","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.4","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.4","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"155af825e33d002bbe72ead0f436a7651d4ee066","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.4.tgz","fileCount":31,"integrity":"sha512-2QaQqRNKkOc6Tut+FPzfG624PYAbG4jk8mvQPMtxbR5oXcE92zPtIFAyOHvhQtZvObU24QjchrxVT3bv6WJ7hw==","signatures":[{"sig":"MEUCIDyOCT3c7cgkcxCNhI67+5jE+x3o/9JJTPGdopERZAqGAiEAjxlmxqFtYy5YZvdvAicXdFun71PJX+UrQ7aGq372Kg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45207},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"9af31bc572589859f9b8276eca158c1ee69e0753","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.8","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"defu":"^6.1.7","pdf-lib":"^1.17.1","@nuxt/kit":"^4.4.6","@aws-sdk/client-s3":"^3.1045.0","@aws-sdk/s3-request-presigner":"^3.1045.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.6","eslint":"^9.0.0","vitest":"^3.2.0","@types/node":"^22.0.0","changelogen":"^0.6.2","@nuxt/schema":"^4.4.6","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^3.23.0","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.4_1779825783920_0.8039372612400215","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.5","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.5","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"389fe9f54b8e0294ad448bf3110ee8167ac38806","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.5.tgz","fileCount":31,"integrity":"sha512-3njXlEJpAd7u4p++0vZWpfK1WCTfGNoPJkV3yet6zz6l6f/gC9CoczDf8n0XneUx+Sj9gjkFLMzaxqaA/b34hA==","signatures":[{"sig":"MEUCIELMODUktLpg6pF7tgrKgmCpJYKGAuzKwLn/kwy0zUduAiEA+memU4Fc4XmnrYFvD9XaMitTIFKRs5j7mg6MPIud+6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45206},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"6738be2b8f97829da5625db94a5093a993348314","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.8","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"defu":"^6.1.7","pdf-lib":"^1.17.1","@nuxt/kit":"^4.4.6","@aws-sdk/client-s3":"^3.1045.0","@aws-sdk/s3-request-presigner":"^3.1045.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.6","eslint":"^9.0.0","vitest":"^4.1.8","@types/node":"^22.0.0","changelogen":"^0.6.2","@nuxt/schema":"^4.4.6","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^4.0.3","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.5_1780611749629_0.8565079590219979","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.6","license":"MIT","_id":"@aidalinfo/nuxt-file-storage-s3@0.3.6","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"dist":{"shasum":"c59788b46f7c957c761bade70253785eb00913eb","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.6.tgz","fileCount":31,"integrity":"sha512-VGpbB4hioJjKa2+++zJdnSQbxFGN/skhZloSbFGsfNOa1rhAxGb0N00MFvPPMQN+bzV8rOALL2mqr9Csx4LogQ==","signatures":[{"sig":"MEYCIQD+W9xUHdiJM0dkWelXsynUb4AMO13VlCv7wXHzg/WtFQIhANTd3srQsi0sM9V9ho0rgIDcOdgL71TDqpulEmB3W5YY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46024},"main":"./dist/module.mjs","type":"module","types":"./dist/types.d.mts","exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"gitHead":"e3025c9a7ba6d6188d7ffb38cd558d7c37959d7b","scripts":{"dev":"nuxi dev playground","lint":"eslint .","test":"vitest run","prepack":"nuxt-module-build prepare && nuxt-module-build build","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","dev:build":"nuxi build playground","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground"},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"repository":{"url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git","type":"git"},"_npmVersion":"10.9.8","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"defu":"^6.1.7","pdf-lib":"^1.17.1","@nuxt/kit":"^4.4.6","@aws-sdk/client-s3":"^3.1045.0","@aws-sdk/s3-request-presigner":"^3.1045.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.4.6","eslint":"^9.0.0","vitest":"^4.1.8","@types/node":"^22.0.0","changelogen":"^0.6.2","@nuxt/schema":"^4.4.6","@nuxt/devtools":"3.2.3","@nuxt/test-utils":"^4.0.3","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/nuxt-file-storage-s3_0.3.6_1780612555226_0.7440129566227263","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@aidalinfo/nuxt-file-storage-s3","version":"0.3.7","description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","repository":{"type":"git","url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git"},"license":"MIT","type":"module","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"exports":{".":{"types":"./dist/types.d.mts","import":"./dist/module.mjs"}},"main":"./dist/module.mjs","types":"./dist/types.d.mts","scripts":{"prepack":"nuxt-module-build prepare && nuxt-module-build build","dev":"nuxi dev playground","dev:build":"nuxi build playground","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","release":"npm run lint && npm run prepack && changelogen && npm publish && git push --follow-tags","lint":"eslint .","test":"vitest run","test:watch":"vitest watch"},"dependencies":{"@aws-sdk/client-s3":"^3.1045.0","@aws-sdk/s3-request-presigner":"^3.1045.0","@nuxt/kit":"^4.4.6","defu":"^6.1.7","pdf-lib":"^1.17.1"},"devDependencies":{"@nuxt/devtools":"3.2.3","@nuxt/eslint-config":"^0.7.0","@nuxt/module-builder":"^1.0.2","@nuxt/schema":"^4.4.6","@nuxt/test-utils":"^4.0.3","@types/node":"^22.0.0","changelogen":"^0.6.2","eslint":"^9.0.0","nuxt":"^4.4.6","vitest":"^4.1.8"},"_id":"@aidalinfo/nuxt-file-storage-s3@0.3.7","gitHead":"42616c53fab673229d111b494e6c5b44c914475e","bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-HjpjCFINuVg3FKpYURTKxiyEW8zX01zD3xWF1eK4LeCIkPNwQt9LdWK2BmedD2IfLTgmFhG/fTVgF/W9r4KF6Q==","shasum":"34cdfc4e5e5a17fb0adaf11db02921492280aa4e","tarball":"https://registry.npmjs.org/@aidalinfo/nuxt-file-storage-s3/-/nuxt-file-storage-s3-0.3.7.tgz","fileCount":31,"unpackedSize":46398,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCUiQ3NgUrrIDtTxJqTsiGPCHmEKvPvi9LKd8Pdrwv8ugIhAK6Kj8UUDkkpEsPbs3z5nNw+tPohkO5SphRhLOP3NrLd"}]},"_npmUser":{"name":"aidalinfo","email":"dev@pulsemyit.fr"},"directories":{},"maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nuxt-file-storage-s3_0.3.7_1780622346751_0.34731631356377335"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T13:56:42.209Z","modified":"2026-06-05T01:19:07.004Z","0.3.0":"2026-03-10T13:56:42.473Z","0.3.1":"2026-03-26T11:03:52.002Z","0.3.2":"2026-03-26T13:32:04.960Z","0.3.3":"2026-05-13T13:36:32.100Z","0.3.4":"2026-05-26T20:03:04.066Z","0.3.5":"2026-06-04T22:22:29.772Z","0.3.6":"2026-06-04T22:35:55.426Z","0.3.7":"2026-06-05T01:19:06.895Z"},"bugs":{"url":"https://github.com/aidalinfo/nuxt-file-storage-s3/issues"},"license":"MIT","homepage":"https://github.com/aidalinfo/nuxt-file-storage-s3#readme","repository":{"type":"git","url":"git+https://github.com/aidalinfo/nuxt-file-storage-s3.git"},"description":"Easy solution to store files in your nuxt apps. Be able to upload files from the frontend and recieve them from the backend to then save the files in your project.","maintainers":[{"name":"aidalinfo","email":"dev@pulsemyit.fr"}],"readme":"![Nuxt File Storage Banner](./playground/public/nuxt-file-storage-banner.svg)\n\n# @aidalinfo/nuxt-file-storage-s3\n\n[![Nuxt][nuxt-src]][nuxt-href]\n\nEasy solution to store files in your Nuxt apps — supports **local storage** and **S3-compatible storage** (AWS S3, Garage, MinIO, DigitalOcean Spaces…).\n\n## Features\n\n- 📁 &nbsp;Handle file inputs on the frontend and serialize them for the backend\n- 🗜️ &nbsp;Optional client-side compression before serialization (images, PDF strategy-ready)\n- 🧾 &nbsp;Optional server-side PDF optimization before local/S3 storage (with safe fallback)\n- 🖴 &nbsp;Store files locally via Nitro server engine\n- ☁️ &nbsp;Store files on S3 or any S3-compatible service\n- 🔀 &nbsp;Unified API — same functions work for both local and S3, automatically detected from config\n\n## Quick Setup\n\n```bash\nnpm install @aidalinfo/nuxt-file-storage-s3\n```\n\n```ts\n// nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['@aidalinfo/nuxt-file-storage-s3'],\n  fileStorage: {\n    mount: './uploads', // local storage\n  },\n})\n```\n\n## Configuration\n\n### Local storage\n\n```ts\nfileStorage: {\n  mount: process.env.mount || './uploads',\n}\n```\n\n### S3 / S3-compatible (recommended multi-bucket mode)\n\n```ts\nfileStorage: {\n  s3: {\n    accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',\n    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || '',\n    region: process.env.AWS_REGION || 'us-east-1',\n    defaultBucketName: 'private',\n    buckets: {\n      private: { bucket: process.env.AWS_S3_PRIVATE_BUCKET || 'my-private-bucket' },\n      public: { bucket: process.env.AWS_S3_PUBLIC_BUCKET || 'my-public-bucket' },\n    },\n    endpoint: process.env.AWS_ENDPOINT,  // optional, for S3-compatible services\n    forcePathStyle: true,                // required for most S3-compatible services\n  },\n}\n```\n\nBucket resolution order is: explicit `bucketName` argument -> `defaultBucketName` -> legacy `s3.bucket`.\n`defaultBucketName` is a logical name (`private` / `public`) and is used automatically when you do not pass an explicit `bucketName` to server utils.\n\nLegacy single-bucket mode is still supported:\n\n```ts\nfileStorage: {\n  s3: {\n    accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',\n    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || '',\n    region: process.env.AWS_REGION || 'us-east-1',\n    bucket: process.env.AWS_S3_BUCKET || 'my-bucket',\n  },\n}\n```\n\nIf `s3` is configured, all server utilities will automatically use S3. Otherwise they fall back to local storage.\n\n> [!IMPORTANT]\n> **S3 credentials are kept server-side.** When you declare `s3` under the `fileStorage` module config, the module routes it to the **private** runtime config (`runtimeConfig.fileStorage.s3`) — it is **never** serialized into the public runtime config that ships to the browser. The S3 server utilities read from `runtimeConfig.fileStorage.s3` first, falling back to `runtimeConfig.public.fileStorage.s3` only for backward compatibility.\n>\n> Do **not** put credentials under `runtimeConfig.public.*`. To override them at runtime, use the private env vars (e.g. `NUXT_FILE_STORAGE_S3_SECRET_ACCESS_KEY`, `NUXT_FILE_STORAGE_S3_ACCESS_KEY_ID`), not the `NUXT_PUBLIC_*` ones.\n\n### Compression (client + server PDF)\n\nThe payload contract between frontend and backend stays unchanged (`ServerFile[]`).\n\n- **Client compression** happens before `FileReader.readAsDataURL`.\n- **Server compression** (PDF only) happens right before storage (`storeFile` pipeline), for both local and S3 backends.\n\n```ts\nfileStorage: {\n  compression: {\n    client: {\n      enabled: true,\n      image: {\n        enabled: true,\n        quality: 0.8,\n        maxWidth: 1920,\n        maxHeight: 1920,\n      },\n      pdf: {\n        enabled: true,\n      },\n    },\n    server: {\n      enabled: true,\n      pdf: {\n        enabled: true,\n      },\n    },\n  },\n}\n```\n\nLegacy flat client configuration is still supported:\n\n```ts\nfileStorage: {\n  compression: {\n    enabled: true,\n    image: { enabled: true, quality: 0.8, maxWidth: 1920, maxHeight: 1920 },\n    pdf: { enabled: true },\n  },\n}\n```\n\nOption priority is:\n\n1. `handleFileInput(event, override)`\n2. `useFileStorage(options)`\n3. module global config (`nuxt.config.ts`)\n4. internal defaults\n\nV1 behavior:\n\n- Images are compressed when enabled.\n- PDF can be optimized server-side with `pdf-lib` when `compression.server` is enabled.\n- Non-image / non-PDF files are not processed.\n- Server-side PDF fallback is automatic when optimization fails, output is invalid, or size is not smaller.\n- If client compression fails or is unsupported, upload falls back to original file automatically.\n- No format conversion in V1 (if output MIME differs, original file is used).\n\n---\n\n## Usage\n\n### Frontend — `useFileStorage()`\n\n```vue\n<script setup>\nconst { files, handleFileInput } = useFileStorage({ clearOldFiles: true })\n\nconst submit = async () => {\n  await $fetch('/api/upload', {\n    method: 'POST',\n    body: { files: files.value },\n  })\n}\n</script>\n\n<template>\n  <input type=\"file\" multiple @input=\"handleFileInput\" />\n  <button @click=\"submit\">Upload</button>\n</template>\n```\n\nPer-upload override example:\n\n```vue\n<script setup>\nconst { handleFileInput } = useFileStorage({\n  compression: { enabled: true },\n})\n\nconst onInputNoCompression = (event) => {\n  return handleFileInput(event, {\n    compression: { enabled: false },\n  })\n}\n</script>\n\n<template>\n  <input type=\"file\" @input=\"onInputNoCompression\" />\n</template>\n```\n\n**Multiple file inputs:** create a new instance per input.\n\n```vue\n<script setup>\nconst { handleFileInput: handleAvatar, files: avatar } = useFileStorage()\nconst { handleFileInput: handleBanner, files: banner } = useFileStorage()\n</script>\n```\n\n---\n\n### Backend — server utilities\n\nAll functions are auto-imported in server routes (`server/api/`, `server/routes/`…).\n\n#### Unified functions (recommended)\n\nAutomatically use S3 or local storage based on your config.\n\n```ts\n// server/api/upload.post.ts\nimport type { ServerFile } from '@aidalinfo/nuxt-file-storage-s3'\n\nexport default defineEventHandler(async (event) => {\n  const { files } = await readBody<{ files: ServerFile[] }>(event)\n\n  const keys = await Promise.all(\n    files.map(file => storeFile(file, 12, 'uploads'))\n  )\n\n  return keys\n})\n```\n\n| Function | Description |\n|---|---|\n| `storeFile(file, name, folder?, bucketName?)` | Store a file. `name` can be a string (fixed name) or number (random ID length). Returns the file key. |\n| `getFile(key, expiresIn?, bucketName?)` | Returns a signed URL (S3) or local path. `expiresIn` defaults to 3600s. |\n| `listFiles(folder?, bucketName?)` | List all files in a folder / S3 prefix. |\n| `removeFile(key, bucketName?)` | Delete a file. |\n\nExample with explicit logical bucket:\n\n```ts\nawait storeFile(file, 12, 'avatars', 'public')\n```\n\n#### S3-specific functions\n\n```ts\nstoreFileToS3(file, name, folder?, bucketName?)     // → key\ngetFileFromS3(key, expiresIn?, bucketName?)         // → signed URL\ngetFileStreamFromS3(key, bucketName?)               // → ReadableStream\nlistFilesFromS3(prefix?, maxKeys?, bucketName?)     // → string[]\ndeleteFileFromS3(key, bucketName?)\n```\n\n#### Local-specific functions\n\n```ts\nstoreFileLocally(file, name, folder?)  // → filename\ngetFileLocally(filename, folder?)      // → path\ngetFilesLocally(folder?)               // → string[]\ndeleteFile(filename, folder?)\n```\n\n---\n\n## Local dev with Garage (S3-compatible)\n\n[Garage](https://garagehq.deuxfleurs.fr) is a lightweight self-hosted S3-compatible storage server, great for local development.\n\nA `docker-compose.yml` is included at the root of this repo. Start it with:\n\n```bash\ndocker compose up -d\n./docker/init-garage.sh\n```\n\nThe init script creates a bucket and an access key, and prints the credentials to use in your `.env`:\n\n```env\nAWS_ACCESS_KEY_ID=...\nAWS_SECRET_ACCESS_KEY=...\nAWS_REGION=garage\nAWS_S3_PRIVATE_BUCKET=my-private-bucket\nAWS_S3_PUBLIC_BUCKET=my-public-bucket\n# Legacy mode:\n# AWS_S3_BUCKET=my-bucket\nAWS_ENDPOINT=http://localhost:3900\n```\n\nA web UI (s3manager) is also available at **http://localhost:8080**.\n\n---\n\n## Contribution\n\nRun into a problem? Open a [new issue](https://github.com/aidalinfo/nuxt-file-storage-s3/issues/new).\n\nWant to add a feature? PRs are welcome!\n\n```bash\ngit clone https://github.com/aidalinfo/nuxt-file-storage-s3 && cd nuxt-file-storage-s3\nnpm i\nnpm run dev:prepare\nnpm run dev\n```\n\n<!-- Badges -->\n\n[nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js\n[nuxt-href]: https://nuxt.com\n","readmeFilename":"README.md"}