/** * A value or a promise of a value */ export type Await = Promise | T; export type Driver = DriverSync | DriverAsync; export interface DriverSync { get: (key: string) => unknown; has: (key: string) => boolean; set: (key: string, value: unknown) => DriverSync; delete: (key: string) => void; clear: () => void; [Symbol.iterator]: () => IterableIterator<[string, unknown]>; } export interface DriverAsync { get: (key: string) => Promise; has: (key: string) => Promise; set: (key: string, value: unknown) => Promise; delete: (key: string) => Promise; clear: () => Promise; [Symbol.asyncIterator]: () => AsyncIterableIterator<[string, unknown]>; } export interface Options { driver?: Driver; } export type KvKeyPart = number | string | Date | BufferSource; export type KvKey = KvKeyPart[]; export interface KVStoredValue { value: T; expires: number | null; } export interface KvEntry { key: KvKey; value: T; } /** * KvListSelector is used to select a range of keys from the database. * * The selector can either be a prefix selector or a range selector. A prefix selector selects all keys that start with the given prefix (optionally starting at a given key). A range selector selects all keys that are lexicographically between the given start and end keys. */ export type KvListSelector = { prefix: KvKey; } | { prefix: KvKey; start: KvKey; } | { prefix: KvKey; end: KvKey; } | { start: KvKey; end: KvKey; }; export interface KvListOptions { /** * The maximum number of key-value pairs to return. If not specified, all matching key-value pairs will be returned. */ limit?: number; /** * Whether to reverse the order of the returned key-value pairs. If not specified, the order will be ascending from the start of the range as per the lexicographical ordering of the keys. If true, the order will be descending from the end of the range. The default value is false. */ reverse?: boolean; } export type KvListIterator = IterableIterator | AsyncIterableIterator; export interface SetOptions { /** * Time-to-live (TTL) for the key. The TTL is specified in seconds, and the key will be deleted from the database at earliest after the specified number of seconds have elapsed. */ ttl?: number | null; /** * Expiration time for the key. The expiration time is specified as a Unix timestamp in seconds since UNIX epoch, and the key will be deleted from the database at the specified time. */ expiration?: number | null; } export interface IKV { onChange: (key: KvKey, callback: (newValue?: T, oldValue?: T) => void, once?: boolean) => void; get: (key: KvKey) => Promise; has: (key: KvKey) => Await; /** * Set a value in the key-value store. * * @param key * @param value * @param options - {@link SetOptions} */ set: (key: KvKey, value: T, options?: SetOptions) => Promise; delete: (key: KvKey) => Promise; clear: () => Promise; list: (selector: KvListSelector, options?: KvListOptions) => KvListIterator>; [Symbol.asyncIterator]: () => AsyncIterableIterator>; } /** * Kysely SQL types */ export interface KVTable { key: string; value: string; } export type KVDatabase = { [P in Name]: KVTable; }; //# sourceMappingURL=types.d.ts.map