@nwire/storage-s3
v0.7.1
Published
Nwire — S3 storage adapter. Works with AWS S3, MinIO, Cloudflare R2, Backblaze B2, and anything else speaking the S3 API. Wraps @aws-sdk/client-s3 + @aws-sdk/s3-request-presigner.
Readme
@nwire/storage-s3
S3-compatible adapter for
@nwire/storage— AWS S3, MinIO, R2, B2, Spaces, Wasabi.
What it does
A thin shim over @aws-sdk/client-s3 that satisfies the @nwire/storage Storage contract. Translates calls to S3 commands, maps NotFound to StorageObjectNotFoundError, uses @aws-sdk/s3-request-presigner for url(), and ships a healthCheck that calls HeadBucket (fast, cheap, exact).
Install
pnpm add @nwire/storage-s3 @nwire/storage @aws-sdk/client-s3 @aws-sdk/s3-request-presignerQuick start
import { s3Storage } from "@nwire/storage-s3";
import { storagePlugin } from "@nwire/storage";
import { defineApp } from "@nwire/forge";
const storage = s3Storage({
bucket: "uploads",
region: "us-east-1",
// For MinIO:
// endpoint: "http://localhost:9000",
// forcePathStyle: true,
// credentials: { accessKeyId: "minioadmin", secretAccessKey: "minioadmin" },
});
defineApp("my-app", { plugins: [storagePlugin({ storage })] });API surface
s3Storage({ bucket, region, endpoint?, forcePathStyle?, credentials? })— implementsStorage.
When to use
Anything multi-node or production. nwire infra up boots MinIO locally at :9000 so the same adapter covers dev + prod.
Within nwire-app
For developers using this package as part of the Nwire stack — register it via app.use(...) or it auto-wires when you compose createApp({ modules }).
import { createApp } from "@nwire/forge";
const app = createApp({
/* ...config... */
});
// Adapter/plugin wiring happens here when applicable.