mastercache
Version:
Multi-tier cache module for Node.js. Redis, Upstash, CloudfareKV, File, in-memory and others drivers
74 lines (64 loc) • 1.63 kB
text/typescript
import type { CacheDriver } from './driver';
import type { MasterCache } from '../mastercache';
import type { BusDriver, BusOptions } from './bus';
export * from './bus';
export * from './events';
export * from './driver';
export * from './helpers';
export * from './provider';
export * from './options/options';
export * from './options/drivers-options';
export * from './options/methods-options';
/**
* Interface for a L1 cache driver. Probably a memory driver
*/
export interface L1CacheDriver extends CacheDriver<false> {
type: 'l1'
getRemainingTtl(key: string): number | undefined
}
/**
* Interface for a L2, distributed cache driver.
*/
export interface L2CacheDriver extends CacheDriver<true> {
type: 'l2'
}
/**
* Factory result for a cache driver
*/
export interface CreateDriverResult<T extends L1CacheDriver | L2CacheDriver> {
options: Record<string, any>
factory: (config: any) => T
}
/**
* Contract for a bus driver factory
*/
export interface CreateBusDriverResult {
options: BusOptions
factory: (config: any) => BusDriver
}
/**
* Cache serializer contract
*/
export interface CacheSerializer {
serialize: (value: any) => string
deserialize: (value: any) => any
}
/**
* Stack of cache drivers
*/
export interface CacheStackDrivers {
l1Driver?: L1CacheDriver
l2Driver?: L2CacheDriver
busDriver?: BusDriver
busOptions?: BusOptions
}
/**
* A Mastercache Plugin
*/
export interface MasterCachePlugin {
register(mastercache: MasterCache<any>): void
}
/**
* Dialect available for the SQL driver
*/
export type DialectName = 'pg' | 'mysql2' | 'better-sqlite3' | 'sqlite3'