/// import { ZlibOptions } from 'zlib'; import MemcacheRequest = require('./request'); import MemcacheResponse = require('./response'); import MemcacheError = require('./error'); export interface CommandCallback { (error?: MemcacheError, response?: T): void; } export interface Flow { (arg: T, callback: CommandCallback): void; } export interface Encoder { (request: MemcacheRequest, callback: CommandCallback): void; } export interface Decoder { ( response: MemcacheResponse, callback: CommandCallback> ): void; } export interface Get { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, callback: CommandCallback> ): void; } export interface Gat { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, ttl: number | Date ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, ttl: number | Date, callback: CommandCallback> ): void; } export interface Touch { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, ttl: number | Date ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, ttl: number | Date, callback: CommandCallback> ): void; } export interface Del { (key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView): Promise< MemcacheResponse >; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, callback: CommandCallback> ): void; } export interface Flush { (ttl?: number | Date): Promise>; (callback: CommandCallback>): void; (ttl: number | Date, callback: CommandCallback>): void; } export interface Version { (callback: CommandCallback): void; (): Promise; } export interface Stat { ( key?: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView ): Promise<{ [property: string]: string; }>; ( callback: CommandCallback<{ [property: string]: string; }> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, callback: CommandCallback<{ [property: string]: string; }> ): void; } export interface AppendPrepend { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, cas?: Buffer | MemcacheResponse ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, cas: Buffer | MemcacheResponse, callback: CommandCallback> ): void; } export interface SetReplace { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, ttl?: number | Date ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, options?: { ttl?: number | Date; flags?: number; cas?: Buffer | MemcacheResponse; } ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, ttl: number | Date, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, options: { ttl?: number | Date; flags?: number; cas?: Buffer | MemcacheResponse; }, callback: CommandCallback> ): void; } export interface Add { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, ttl?: number | Date ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, options?: { ttl?: number | Date; flags?: number; } ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, ttl: number | Date, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, value: any, options: { ttl?: number | Date; flags?: number; }, callback: CommandCallback> ): void; } export interface IncrDecr { ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, amount: number, ttl?: number | Date ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, amount: number, options?: { ttl?: number | Date; initial?: number; cas?: Buffer | MemcacheResponse; } ): Promise>; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, amount: number, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, amount: number, ttl: number | Date, callback: CommandCallback> ): void; ( key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView, amount: number, options: { ttl?: number | Date; initial?: number; cas?: Buffer | MemcacheResponse; }, callback: CommandCallback> ): void; } export interface MemcacheOptions { port?: number; host?: string; path?: string; queueSize?: number; maxKeySize?: number; maxValueSize?: number; connectTimeout?: number; multiResponseOpCodes?: number[]; retries?: number; minDelay?: number; maxDelay?: number; backoff?: (attempt: number) => number; username?: string; password?: string; commandTimeout?: number; ttl?: number; compression?: Partial | false; serialization?: Partial | false; } export interface MemcacheRequestOptions { opcode: number; key: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView; value: string | Buffer | ArrayBuffer | SharedArrayBuffer | DataView; amount: number; ttl: number | Date; cas: Buffer | MemcacheResponse; flags: number; initial: number; } export interface CompressionOptions { flag: number; options: ZlibOptions; threshold: number; compress: ( buf: Buffer, options?: any, callback?: (error: Error | null, result: Buffer) => void ) => void; decompress: ( buf: Buffer, options?: any, callback?: (error: Error | null, result: Buffer) => void ) => void; } export interface SerializationOptions { stringFlag: number; jsonFlag: number; binaryFlag: number; numberFlag: number; serialize: (value: any, options?: any) => Buffer | string; deserialize: (value: string, options?: any) => any; }