UNPKG

@znode/influx

Version:
73 lines (72 loc) 2.08 kB
import doreamon from '@zodash/doreamon'; import { AxiosResponse } from 'axios'; import { IInfluxItem } from './item'; import { InfluxURIOptions } from './uri'; export interface IInfluxClient { write(items: IInfluxItem | IInfluxItem[]): Promise<void>; query<Item>(statement: string): Promise<Item[]>; query<Item>(statement: string[]): Promise<Item[][]>; } export interface InfluxDBRawResultItem { statement_id: number; error?: string; series: InfluxDBRawSerieItem[]; } export interface InfluxDBRawSerieItem { name: string; columns: string[]; values: (string | number | boolean | null)[][]; } export interface InfluxClientOptions extends InfluxURIOptions { /** * queue mode * default: true */ queued?: boolean; /** * should .write to throw when error, * default: false */ shouldThrowAtWrite?: boolean; /** * the interval it will flush in queue mode * default: 5000 ms */ queuedFlushInterval?: number; /** * the max items it will flush (once) in queue mode * default: 10000 */ queuedFlushMaxItems?: number; } export interface IRequest { server: string; database: string; data: string; } export interface IRequestError extends Error { request: IRequest; response?: AxiosResponse; } export interface InfluxDBEvent { error(error: IRequestError): void; } export declare class InfluxClient extends doreamon.event.Event<InfluxDBEvent> implements IInfluxClient { private readonly options; private logger; private queue; private safeCheckFlushIt; private isScheduling; private uri; constructor(options: InfluxClientOptions); query<Item>(statement: string[]): Promise<Item[][]>; query<Item>(statement: string): Promise<Item[]>; write(items: IInfluxItem | IInfluxItem[]): Promise<void>; private _write; startSchedule(): void; stopSchedule(): void; private flush; private get queuedFlushInterval(); private get queuedFlushMaxItemsOnce(); private scheduleFlush; }