Storage
Storage Vercel Blob Adapter Integration
Alpha
DSAR is currently in alpha. APIs, package surfaces, configuration, and documentation may change as the project evolves.
This document describes how to register and use @dsar/storage-vercel-blob with backend runtime.
Runtime Registration
Config Fields
readWriteToken(optional, defaults toprocess.env.BLOB_READ_WRITE_TOKEN)prefix(optional, defaultartifacts)addRandomSuffix(optional, defaultfalse)allowOverwrite(optional, defaultfalse)cacheControlMaxAge(optional)timeoutMs(optional, default10000)retryMaxAttempts(optional, default3)
Key Strategy Reference
Default deterministic key layout:
<prefix>/<requestId>/<manifestId>/<category>/<redaction>/<thirdParty>/<artifactName>
Fallback behavior:
- missing
requestId=>request-unknown - missing
manifestId=>manifest-unknown - missing
category=>uncategorized - missing name/id =>
artifact.bin
Error and Retry Behavior Matrix
| Category | Retriable | Examples |
|---|---|---|
timeout | yes | request abort, blob service unavailable |
rate_limit | yes | blob rate limiting / throttling |
network | yes | fetch/socket connectivity failures |
auth | no | invalid token, store suspended/not found |
validation | no | malformed input/config |
config | no | adapter setup invalid |
unknown | no | unmatched provider errors |
Manifest Linkage
Storage operations preserve manifest-linked metadata on artifact references:
requestIdmanifestIdmanifestHashmanifestSignature
For providers that do not expose arbitrary object metadata, the adapter keeps in-process reference metadata and falls back to deterministic key parsing for requestId and manifestId.
Caching and Overwrite Notes
- Vercel Blob
put(...)requiresaccess: "public"and serves content through CDN cache. - Prefer immutable pathnames and keep
allowOverwritedisabled unless you explicitly need mutation. - If overwrite is enabled, cached clients may still observe stale content until cache expiry (
cacheControlMaxAge).