@solomonai/cache
Version:
<div align="center"> <h1 align="center">@solomonai/cache</h1> <h5>Cache all the things</h5> </div>
102 lines (96 loc) • 4.24 kB
text/typescript
import { Result } from '@unkey/error';
import { S as Store, E as Entry, C as CacheError } from './interface-D4FnSgmS.mjs';
import { Redis } from '@upstash/redis';
import { Client } from '@libsql/client';
type CloudflareStoreConfig = {
domain: string;
zoneId: string;
/**
* This token must have at least
*/
cloudflareApiKey: string;
/**
* As your data changes, it is important to keep backwards compatibility in mind. If your cached
* values are no longer backwards compatible, it can cause problems. For example when a value
* changes from optional to required. In these cases you should purge the entire cache by setting
* a new `cacheBuster` value. The `cacheBuster` is used as part of the cache key and changes
* ensure you are not reading old data anymore.
*
* @default "v1"
*/
cacheBuster?: string;
};
declare class CloudflareStore<TNamespace extends string, TValue = any> implements Store<TNamespace, TValue> {
private readonly config;
readonly name = "cloudflare";
constructor(config: CloudflareStoreConfig);
private createCacheKey;
get(namespace: TNamespace, key: string): Promise<Result<Entry<TValue> | undefined, CacheError>>;
set(namespace: TNamespace, key: string, entry: Entry<TValue>): Promise<Result<void, CacheError>>;
remove(namespace: TNamespace, keys: string | string[]): Promise<Result<void, CacheError>>;
}
type MemoryStoreConfig<TValue> = {
/**
* Remove expired entries on every `set` operation
*
* This flag is unstable and may be changed or removed later.
*
* ```
*/
unstableEvictOnSet?: {
/**
* Provide a number between 0 and 1 to calculate whether eviction should run on each set.
* @example
* ```
* 1 -> run eviction on every `set`
* 0.5 -> run eviction on every 2nd `set`
* 0 or undefined -> disable
*/
frequency: number;
/**
* Remove items until the number of items in the map is lower than `maxItems`
*/
maxItems: number;
};
persistentMap: Map<string, TValue>;
};
declare class MemoryStore<TNamespace extends string, TValue = any> implements Store<TNamespace, TValue> {
private readonly state;
private readonly unstableEvictOnSet?;
readonly name = "memory";
constructor(config: MemoryStoreConfig<{
expires: number;
entry: Entry<TValue>;
}>);
private buildCacheKey;
get(namespace: TNamespace, key: string): Promise<Result<Entry<TValue> | undefined, CacheError>>;
set(namespace: TNamespace, key: string, entry: Entry<TValue>): Promise<Result<void, CacheError>>;
remove(namespace: TNamespace, keys: string | string[]): Promise<Result<void, CacheError>>;
}
type UpstashRedisStoreConfig = {
redis: Redis;
};
declare class UpstashRedisStore<TNamespace extends string, TValue = any> implements Store<TNamespace, TValue> {
private readonly redis;
readonly name = "upstash-redis";
constructor(config: UpstashRedisStoreConfig);
private buildCacheKey;
get(namespace: TNamespace, key: string): Promise<Result<Entry<TValue> | undefined, CacheError>>;
set(namespace: TNamespace, key: string, entry: Entry<TValue>): Promise<Result<void, CacheError>>;
remove(namespace: TNamespace, keys: string | string[]): Promise<Result<void, CacheError>>;
}
type LibsqlStoreConfig = {
client: Client;
tableName?: string;
};
declare class LibSQLStore<TNamespace extends string, TValue = any> implements Store<TNamespace, TValue> {
private readonly tableName;
private readonly client;
readonly name = "libsql";
constructor(config: LibsqlStoreConfig);
private buildCacheKey;
get(namespace: TNamespace, key: string): Promise<Result<Entry<TValue> | undefined, CacheError>>;
set(namespace: TNamespace, key: string, entry: Entry<TValue>): Promise<Result<void, CacheError>>;
remove(namespace: TNamespace, keys: string | string[]): Promise<Result<void, CacheError>>;
}
export { CloudflareStore, type CloudflareStoreConfig, Entry, LibSQLStore, type LibsqlStoreConfig, MemoryStore, type MemoryStoreConfig, Store, UpstashRedisStore, type UpstashRedisStoreConfig };