Multi-strategy resource management for NestJS with file system, blob storage, and embedded buffer support.
Features
- Pluggable strategies — File system, blob storage, or embedded buffers
- MIME type detection — Automatic via the
mime-types library
- Optional caching — Integrates with
@breadstone/archipel-platform-caching
- NestJS integration — Global
ResourceModule.forRoot() with injectable ResourceManager
Quick Start
import { ResourceModule, ResourceManager } from '@breadstone/archipel-platform-resources';
import { FileResourceStrategy } from '@breadstone/archipel-platform-resources';
@Module({
imports: [
ResourceModule.forRoot({
strategies: [new FileResourceStrategy({ basePath: './assets' })],
}),
],
})
export class AppModule {}Supported Strategies
| Strategy |
Description |
FileResourceStrategy |
Loads resources from the local file system with glob support |
BlobResourceStrategy |
Loads resources from a blob storage adapter (Vercel, Azure, S3) |
EmbeddedResourceStrategy |
Serves pre-loaded in-memory buffers |
Import Options
import { ResourceModule, ResourceManager } from '@breadstone/archipel-platform-resources';
import { FileResourceStrategy } from '@breadstone/archipel-platform-resources/file';
import { BlobResourceStrategy } from '@breadstone/archipel-platform-resources/blob';
import { EmbeddedResourceStrategy } from '@breadstone/archipel-platform-resources/embedded';Error Handling
| Error Class |
When Thrown |
ResourceNotFoundError |
Requested resource does not exist |
Resource Limits
| Limit |
Value |
Description |
| Strategy timeout |
30 seconds |
ResourceManager aborts strategy calls after 30s |
Peer Dependencies
| Package |
Required |
Notes |
@breadstone/archipel-platform-caching |
No |
Optional caching support |
@nestjs/common |
Yes |
NestJS core |
glob |
Yes |
File glob matching |
mime-types |
Yes |
MIME type detection |
Documentation
📖 Package Docs: .docs/packages/platform-resources/index.md
Development
yarn nx build platform-resources
yarn nx test platform-resources
yarn nx lint platform-resources