{"_id":"@remix-run/file-storage-s3","_rev":"7-72e36df1632b535ab9f269f1bbf17f11","name":"@remix-run/file-storage-s3","dist-tags":{"latest":"0.1.5"},"versions":{"0.0.0":{"name":"@remix-run/file-storage-s3","version":"0.0.0","license":"MIT","_id":"@remix-run/file-storage-s3@0.0.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f87bb4bcc64c3637bce48123869c2650f033d71b","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.0.0.tgz","fileCount":2,"integrity":"sha512-ROmD1h09STYw8cu6rkafXSj9VES1w7iBTFSX9RA7k4uJIPbQTNoC0Bb2CdLRtr3OEQTArtFOFGThXyKrpmRy5A==","signatures":[{"sig":"MEUCIEkAYHlYVm7GzCSvCSc+P6Pd2KnmEbQjT1wUkII/5DEdAiEA6gJ/XnYijMuwsDB0O16L+0iGJ6ozQweb1lp7rBmZ9Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.10.1","description":"Placeholder package for Remix CI/OIDC setup","directories":{},"_nodeVersion":"25.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.0.0_1772225461477_0.4381615870699196","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@remix-run/file-storage-s3","version":"0.1.0","keywords":["file","storage","s3","aws"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/file-storage-s3@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"8783267c7086269320014d72a330a68b3efa25a8","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.0.tgz","fileCount":11,"integrity":"sha512-r80An7nSFidK/0xn9O9/HxfUcgxVpM4kprnTGr6pGhKdgbaTCEtA+U5ETYGfeedFxhDcT+7ue+4Fv/VxeIvFwQ==","signatures":[{"sig":"MEUCIFOXyTcRIquYoN7LMozT3Emkx4+mRSqngTB0EM79ijkuAiEAmlk4KQ0B3/Er46GTubx6OkpmHGtgg29JHbrr8NCAZuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27303},"type":"module","_from":"file:remix-run-file-storage-s3-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"_resolved":"/tmp/179969460d574de1cfbae3b8832855e6/remix-run-file-storage-s3-0.1.0.tgz","_integrity":"sha512-r80An7nSFidK/0xn9O9/HxfUcgxVpM4kprnTGr6pGhKdgbaTCEtA+U5ETYGfeedFxhDcT+7ue+4Fv/VxeIvFwQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.10.1","description":"S3 backend for @remix-run/file-storage","directories":{},"_nodeVersion":"25.7.0","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.1.0_1772241747595_0.9916498940954144","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@remix-run/file-storage-s3","version":"0.1.1","keywords":["file","storage","s3","aws"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/file-storage-s3@0.1.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"5054d5f8f1c75af8a57321112c60565104dc7e93","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.1.tgz","fileCount":11,"integrity":"sha512-ylE9w6A6mrX4OystdNbIRNqozADgnnnEly9m53VDb3yO+CDYc+izFQZ93R3uPqC7jUenuG4Jc07Yv709J8Z/SA==","signatures":[{"sig":"MEUCIQDKFlthWQuiQFaJaCCpoCM5veOI2YvaqWEVIht4hHCejAIgWCzGq6E6e6ECIVCUKLHhP73F/Lm/a8GooGeRZdC/Vz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27522},"type":"module","_from":"file:remix-run-file-storage-s3-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"_resolved":"/tmp/13085929dde5a55a297826535b7a42aa/remix-run-file-storage-s3-0.1.1.tgz","_integrity":"sha512-ylE9w6A6mrX4OystdNbIRNqozADgnnnEly9m53VDb3yO+CDYc+izFQZ93R3uPqC7jUenuG4Jc07Yv709J8Z/SA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.11.0","description":"S3 backend for remix/file-storage","directories":{},"_nodeVersion":"24.14.1","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.2.0","@remix-run/assert":"0.1.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.1.1_1777483839293_0.3241856178813687","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@remix-run/file-storage-s3","version":"0.1.2","keywords":["file","storage","s3","aws"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/file-storage-s3@0.1.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"ea3726b795d958e0abec6945c1dbe681bb7c771e","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.2.tgz","fileCount":11,"integrity":"sha512-HJEHEtXqjGk+uhQ1A97Wkzfg5RxmiQgyvQMiqZ2q6fGKPXgzWplnXmFegmKg3CjXPEENqBbsp+AKSnhj02BaUw==","signatures":[{"sig":"MEQCIBwcSE/hDdrc+ipNerWj3/IQ8MOa12KnVDvYoDM9Ti5cAiADhDA40pVccq0RVj6e7+B5qZ7ByeP1T8f5otwIMEa4Mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27588},"type":"module","_from":"file:remix-run-file-storage-s3-0.1.2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"_resolved":"/tmp/4b83a53dbe32617c0de4bf2742c7ffc4/remix-run-file-storage-s3-0.1.2.tgz","_integrity":"sha512-HJEHEtXqjGk+uhQ1A97Wkzfg5RxmiQgyvQMiqZ2q6fGKPXgzWplnXmFegmKg3CjXPEENqBbsp+AKSnhj02BaUw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.12.1","description":"S3 backend for remix/file-storage","directories":{},"_nodeVersion":"24.15.0","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.5"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.1","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.1.2_1779308343254_0.4916628349035215","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@remix-run/file-storage-s3","version":"0.1.3","keywords":["file","storage","s3","aws"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/file-storage-s3@0.1.3","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"a0d8f26360aa7c0ddbeea2790bc75faf5cd3adbd","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.3.tgz","fileCount":11,"integrity":"sha512-15OlGiiiSJnM4KlrcCxYBqIRHAubNEy8LsBRnI/bXXzsSgNOS/gnAi9dhjkgHScLPtgr8Xf0kyO1zUl82/41dA==","signatures":[{"sig":"MEQCIF2P19oeO7MMAub2LC8LYlhtxlkn1bn3N5tCv/QaQ3hSAiBlZ6jID8DAIoZN1HrLp305SwQtqq3nCqZDU1S0WuBhCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27588},"type":"module","_from":"file:remix-run-file-storage-s3-0.1.3.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"_resolved":"/tmp/b2812bdd7a779720770ba1f7af4612d0/remix-run-file-storage-s3-0.1.3.tgz","_integrity":"sha512-15OlGiiiSJnM4KlrcCxYBqIRHAubNEy8LsBRnI/bXXzsSgNOS/gnAi9dhjkgHScLPtgr8Xf0kyO1zUl82/41dA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.13.0","description":"S3 backend for remix/file-storage","directories":{},"_nodeVersion":"24.16.0","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.6"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.2","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.1.3_1780078688669_0.6236395108299231","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@remix-run/file-storage-s3","version":"0.1.4","keywords":["file","storage","s3","aws"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/file-storage-s3@0.1.4","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"e8f1a9b59e4a8364b994eba8bbeb6b4b4ee04716","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.4.tgz","fileCount":11,"integrity":"sha512-n1Z97PpaDIE5tOiRBJTy864ieZtWO1laqdz4pvKbr9KdfUxLRaWmk5gj+UaH7nC+e0sB3wBK9QhjfyoFuGOY6A==","signatures":[{"sig":"MEYCIQDjLi2skvSRtq9fQBMQo2I24ZHr6fQVj3aLnppuVCDNOAIhAL91dolNj6Z2VK28dd2Xqyqf7mdzUA8j/dvhwuX8vuS3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27588},"type":"module","_from":"file:remix-run-file-storage-s3-0.1.4.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"_resolved":"/tmp/2aa508659ebc73cc848507e846746bde/remix-run-file-storage-s3-0.1.4.tgz","_integrity":"sha512-n1Z97PpaDIE5tOiRBJTy864ieZtWO1laqdz4pvKbr9KdfUxLRaWmk5gj+UaH7nC+e0sB3wBK9QhjfyoFuGOY6A==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.13.0","description":"S3 backend for remix/file-storage","directories":{},"_nodeVersion":"24.17.0","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.7"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.5.0","@remix-run/assert":"0.3.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/file-storage-s3_0.1.4_1782932620493_0.4042271893892144","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"_id":"@remix-run/file-storage-s3@0.1.5","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"b4f46147d3da339b988fa8460c60b3a7359fc492","tarball":"https://registry.npmjs.org/@remix-run/file-storage-s3/-/file-storage-s3-0.1.5.tgz","fileCount":11,"integrity":"sha512-sD9zs+9DaUneDeimr+9C5tozvpTLGXDQVPNKfUsjTOza+dNAg7WwO4ytchByFPSkUmJUPSioz6ET+WPXIcyHng==","signatures":[{"sig":"MEUCIF5QyB/v/gyy1jAAxXys8iYCP2kfDSj/WQif/rsWq5QuAiEAuEUzRr8se+lzrlRJAvYmBNBHdOQMANle+Z49B2m8mh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDK4675D1+uuwg/YFtR7UUkr9ZGj+CU0ceTsGnTenxAmQIhAN3X0cJoIEnx6OVIZ5ijFepmIAeob1/hH83kdJP2CEzZ"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2ffile-storage-s3@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28125},"name":"@remix-run/file-storage-s3","type":"module","_from":"file:/tmp/remix-publish-file-storage-s3-n3Z9dX/remix-run-file-storage-s3-0.1.5.tgz","author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"version":"0.1.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17a223e1-9c1d-4ff4-abbd-37ba5c76dc27"}},"homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","keywords":["file","storage","s3","aws"],"_resolved":"/tmp/remix-publish-file-storage-s3-n3Z9dX/remix-run-file-storage-s3-0.1.5.tgz","_integrity":"sha512-sD9zs+9DaUneDeimr+9C5tozvpTLGXDQVPNKfUsjTOza+dNAg7WwO4ytchByFPSkUmJUPSioz6ET+WPXIcyHng==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"_npmVersion":"11.19.0","description":"S3 backend for remix/file-storage","directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"aws4fetch":"^1.0.20","@remix-run/file-storage":"^0.13.7"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.1","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/file-storage-s3_0.1.5_1789770900514_0.04765749821415466"}}},"time":{"created":"2026-02-27T20:51:01.354Z","modified":"2026-09-18T22:35:00.949Z","0.0.0":"2026-02-27T20:51:01.618Z","0.1.0":"2026-02-28T01:22:27.737Z","0.1.1":"2026-04-29T17:30:39.483Z","0.1.2":"2026-05-20T20:19:03.410Z","0.1.3":"2026-05-29T18:18:08.821Z","0.1.4":"2026-07-01T19:03:40.646Z","0.1.5":"2026-09-18T22:35:00.596Z"},"bugs":{"url":"https://github.com/remix-run/remix/issues"},"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","homepage":"https://github.com/remix-run/remix/tree/main/packages/file-storage-s3#readme","keywords":["file","storage","s3","aws"],"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/file-storage-s3"},"description":"S3 backend for remix/file-storage","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# file-storage-s3\n\nS3 backend for [`remix/file-storage`](https://github.com/remix-run/remix/tree/main/packages/file-storage). Use this package when you want the `FileStorage` API backed by AWS S3 or an S3-compatible provider.\n\n## Features\n\n- **S3-Compatible API** - Works with AWS S3 and S3-compatible APIs (e.g. MinIO, LocalStack)\n- **Metadata Preservation** - Preserves `File` metadata (`name`, `type`, `size`, `lastModified`)\n- **Runtime-Agnostic Signing** - Uses [`aws4fetch`](https://github.com/mhart/aws4fetch) for SigV4 signing\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\n```ts\nimport { createS3FileStorage } from 'remix/file-storage/s3'\n\nlet storage = createS3FileStorage({\n  accessKeyId: process.env.AWS_ACCESS_KEY_ID!,\n  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,\n  bucket: 'my-app-uploads',\n  region: 'us-east-1',\n})\n\nawait storage.set(\n  'uploads/hello.txt',\n  new File(['hello world'], 'hello.txt', { type: 'text/plain' }),\n)\nlet file = await storage.get('uploads/hello.txt')\nawait storage.remove('uploads/hello.txt')\n```\n\nFor S3-compatible providers such as MinIO and LocalStack, set `endpoint` and `forcePathStyle: true`.\n\n## Related Packages\n\n- [`file-storage`](https://github.com/remix-run/remix/tree/main/packages/file-storage) - Core `FileStorage` interface and filesystem/memory backends\n- [`form-data-parser`](https://github.com/remix-run/remix/tree/main/packages/form-data-parser) - Parses `multipart/form-data` uploads into `FileUpload` objects\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}