Documentation
    Preparing search index...

    Module @quatrain/cache

    @quatrain/cache

    Base package defining generic caching interfaces and middlewares for the Quatrain ecosystem.

    This package is meant to be extended by specific caching implementations (e.g., @quatrain/cache-redis, @quatrain/cache-memcached). It provides:

    • CacheAdapterInterface: The standard interface every Quatrain cache adapter must implement.
    • AbstractCacheInvalidationMiddleware: A base class for invalidating cache namespaces following CRUD operations.
    • MediaCacheProxy: A generic proxy layer over @quatrain/storage to temporarily cache binary media and provide immutable URLs.

    Create a new class that implements CacheAdapterInterface:

    import { CacheAdapterInterface } from '@quatrain/cache'

    export class MyCustomCacheAdapter implements CacheAdapterInterface {
    async get(key: string): Promise<string | null> {
    // Implementation
    }

    async getBuffer(key: string): Promise<Buffer | null> {
    // Implementation
    }

    async set(key: string, value: string | Buffer, ttlSeconds?: number): Promise<void> {
    // Implementation
    }

    async del(...keys: string[]): Promise<void> {
    // Implementation
    }

    async keys(pattern: string): Promise<string[]> {
    // Implementation
    }
    }

    Combine your adapter with a storage adapter:

    import { MediaCacheProxy } from '@quatrain/cache'
    import { LocalStorageAdapter } from '@quatrain/storage-local'

    const storage = new LocalStorageAdapter(...)
    const myCache = new MyCustomCacheAdapter()

    // Cache for 10 minutes (600s)
    const proxy = new MediaCacheProxy(storage, myCache, 600)
    const buffer = await proxy.getMedia({ ref: 'file.jpg' })

    Classes

    Cache
    CacheInvalidateMiddleware
    MediaCacheProxy

    Interfaces

    CacheAdapterInterface

    Type Aliases

    PrefixResolver