@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
158 lines (157 loc) • 4.09 kB
TypeScript
/**
* Cache Middleware
* Provides response caching for server adapters
*/
import type { CacheEntry, MiddlewareDefinition, ServerCacheConfig } from "../../types/index.js";
import type { CacheStore } from "../../types/index.js";
/**
* Cache entry
*/
/**
* Cache store interface
*/
/**
* In-memory LRU cache store
*/
export declare class InMemoryCacheStore implements CacheStore {
private cache;
private accessOrder;
private maxSize;
constructor(maxSize?: number);
get(key: string): Promise<CacheEntry | undefined>;
set(key: string, entry: CacheEntry): Promise<void>;
delete(key: string): Promise<void>;
clear(): Promise<void>;
private updateAccessOrder;
}
/**
* Create cache middleware
*
* Response headers set by this middleware:
* - `X-Cache`: "HIT" if served from cache, "MISS" if freshly generated
* - `X-Cache-Age`: Seconds since the response was cached (only on HIT)
* - `Cache-Control`: Caching directive with max-age (only on MISS)
*
* @example
* ```typescript
* const cacheMiddleware = createCacheMiddleware({
* ttlMs: 60 * 1000, // 1 minute
* methods: ["GET"],
* excludePaths: ["/api/health"],
* });
*
* server.registerMiddleware(cacheMiddleware);
* ```
*/
export declare function createCacheMiddleware(config: ServerCacheConfig): MiddlewareDefinition;
/**
* Create a cache invalidation helper
*/
export declare function createCacheInvalidator(store: CacheStore): {
invalidate: (pattern: string) => Promise<void>;
clear: () => Promise<void>;
};
/**
* Generic LRU (Least Recently Used) Cache
*
* Provides a simple in-memory cache with LRU eviction policy.
*
* @example
* ```typescript
* const cache = new LRUCache<string, number>(100);
*
* cache.set("key1", 42);
* cache.get("key1"); // => 42
* cache.has("key1"); // => true
* cache.delete("key1");
* ```
*/
export declare class LRUCache<K, V> {
private cache;
private accessOrder;
private maxSize;
constructor(maxSize?: number);
/**
* Get a value from the cache
*/
get(key: K): V | undefined;
/**
* Set a value in the cache
*/
set(key: K, value: V): void;
/**
* Check if a key exists in the cache
*/
has(key: K): boolean;
/**
* Delete a key from the cache
*/
delete(key: K): boolean;
/**
* Clear the cache
*/
clear(): void;
/**
* Get the current size of the cache
*/
get size(): number;
private updateAccessOrder;
}
/**
* Synchronous response cache store with TTL support
*
* Designed for caching HTTP responses with automatic expiration.
*
* @example
* ```typescript
* const store = new ResponseCacheStore(100, 60000); // 100 entries, 60s TTL
*
* store.set("GET:/api/users", { status: 200, data: [...] });
* const cached = store.get("GET:/api/users");
*
* // Invalidate specific key
* store.invalidate("GET:/api/users");
*
* // Invalidate by pattern (e.g., all user endpoints)
* store.invalidateByPattern("/api/users");
* ```
*/
export declare class ResponseCacheStore<T = unknown> {
private cache;
private ttlMs;
constructor(maxSize?: number, ttlMs?: number);
/**
* Get a value from the cache
*/
get(key: string): T | undefined;
/**
* Set a value in the cache
*/
set(key: string, value: T, ttlMs?: number): void;
/**
* Check if a key exists and is not expired
*/
has(key: string): boolean;
/**
* Invalidate (delete) a specific key
*/
invalidate(key: string): boolean;
/**
* Invalidate all keys matching a pattern (substring match or regex)
* @param pattern - String to match or RegExp
*/
invalidateByPattern(pattern: string | RegExp): number;
/**
* Invalidate all keys matching a pattern (substring match or regex)
* @param pattern - String to match or RegExp
*/
invalidatePattern(pattern: string | RegExp): number;
/**
* Clear the entire cache
*/
clear(): void;
/**
* Get the current size of the cache
*/
get size(): number;
}