# @mostajs/blob-store — 0.2.0
Auteur : Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later · Niveau N0 · ZÉRO dépendance

RÔLE
  Ranger des octets. Contrat StorageDriver + pilotes. Ignore ce que les octets représentent.
  EXTRAIT de @mostajs/storage (qui le ré-exporte — extraction non cassante, 110/110 tests verts).

API
  import { FilesystemDriver, CachingDriver, StorageError, STORAGE_ERROR_HTTP } from '@mostajs/blob-store'
  sous-chemins : /driver · /types · /drivers/filesystem · /drivers/caching

  StorageDriver
    put(ref, body, opts)  -> { ref, size, etag, checksum }   opts: { mimeType, metadata?, size?, ifNotExists? }
    get(ref)              -> { stream, size, mimeType, etag, metadata? }
    delete(ref)           -> void
    exists(ref)           -> boolean
    stat(ref)             -> { size, mimeType, etag, metadata? }
    list({bucket,prefix?,limit?,cursor?}) -> { items: [{path,size,modifiedAt}], nextCursor? }

  ObjectRef        { bucket, path }
  PutObjectResult  { ref, size, etag, checksum }   checksum = sha256 hex
  StorageError     code: not_found | access_denied | invalid_path | invalid_mime | too_large
                       | tenant_violation | signature_invalid | signature_expired | driver_error
  FilesystemDriver new FilesystemDriver({ rootDir })   — refuse '..' (path traversal)
  CachingDriver    décorateur de cache devant un driver d'origine
  S3Driver         new S3Driver({ endpoint, region, accessKeyId, secretAccessKey,
                                  forcePathStyle?, sessionToken?, timeoutMs? })
                   S3 + TOUT service S3-compatible (MinIO/Scaleway/Wasabi/Backblaze).
                   SigV4 intégré (zéro dépendance — pas d'@aws-sdk). Sous-chemin /drivers/s3.
  signRequest, hashPayload, uriEncode  — SigV4 exposée (sous-chemin /sigv4)

CE QUI N'EST PAS ICI
  FileMeta (row File en base, accountId multi-tenant) reste dans @mostajs/storage : c'est une
  métadonnée applicative, pas un octet. La séparation est le point du module.

CONSOMMATEURS
  @mostajs/storage (octets + ORM + RBAC) · @mostajs/archive-box · @mostajs/backup

TESTS
  npm test   28 tests mjs-unit :
             - filesystem : disque réel, sha256 vérifié indépendamment
             - sigv4      : VECTEURS OFFICIELS AWS (get-vanilla) — signature exacte
             - s3         : serveur S3 simulé qui REFUSE toute requête non signée
