Aviary
Reference

Changelog

Release history for the nestjs-media packages.

All packages are versioned together via changesets.

0.5.0

Adds the direct (presigned multipart) upload path end-to-end: the browser PUTs each part straight to S3 while the backend only orchestrates.

  • DirectUploadManager (core): createUpload / presignPart / completeUpload / abortUpload over a presign/multipart-capable disk, exposed as media.directUploads. Configurable defaultPartSize (8 MiB) and presignExpirySeconds (3600).
  • Multipart driver surface: the optional MultipartUploadDriver add-on (createMultipartUpload / presignUploadPart / completeMultipartUpload / abortMultipartUpload), implemented by the S3 driver and gated by capabilities.multipart.
  • MediaModule.direct option + MediaDirectUploadController mounted at media/uploads/direct (initiate / per-part presign / complete / abort). New MEDIA_DIRECT token.
  • Redis session store: @dudousxd/nestjs-media-upload-redis ships RedisUploadSessionStore so resumable (proxy/tus) sessions survive across instances, with keyPrefix + sliding ttlSeconds (24h default).

0.4.0

Media lifecycle events now flow through @dudousxd/nestjs-diagnostics — auto-captured by the generic Telescope bridge with no per-event wiring.

0.3.0

  • list() added to the StorageDriver SPI (folders + paginated file entries, with an optional cross-bucket override), implemented for local, S3 (ListObjectsV2), and the in-memory testing driver.
  • MikroORM 7 supported as a peer alongside v6.

0.2.0

Adds the attachment column model (adonis-attachment style) alongside the existing media table, and an owner-binding ergonomic for the table model.

  • Attachments (layer 2, column model): the Attachment value object + AttachmentManager (createFromFile / url / temporaryUrl / delete, eager image variants), exposed as media.attachments.
  • ORM column integration: TypeORM @AttachmentColumn(), MikroORM AttachmentType, Prisma toAttachmentJson / fromAttachmentJson, Drizzle attachment() — all storing the same portable JSON shape.
  • Owner binding: media.library.for(ownerType, id) so attach / list no longer repeat the owner — the table-model take on spatie's HasMedia/InteractsWithMedia.
  • Lifecycle diagnostics: resumable uploads now emit upload.start / upload.progress / upload.complete / upload.abort, and attachments emit attachment.create / attachment.delete — all typed, all on nestjs:media:* channels (MEDIA_DIAGNOSTIC_EVENTS exported). The Telescope watcher records every milestone (skipping per-chunk progress).

0.1.0

Initial release — filesystem + media-library for NestJS in one package.

  • Storage (layer 1): StorageDriver SPI + StorageManager; local and S3 drivers; uploadMode resolution; resumable upload engine + tus 1.0.0 HTTP handler.
  • Media-library (layer 2): spatie-style collections (single-file replace, MIME validation, ordering, custom properties), image conversions (sharp, lazy + eager).
  • ORM stores: TypeORM, MikroORM, Drizzle, Prisma — one shared MediaStore conformance suite.
  • Glue points: nestjs:media:* diagnostics, Telescope watcher, codegen client, React useMediaUpload / MediaUploader.
  • NestJS MediaModule wiring all layers; /storage subpath for raw-filesystem consumers.

On this page