@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
71 lines (70 loc) • 2.25 kB
TypeScript
import { Observable } from 'rxjs';
import { TagNotification } from '../notifications';
import { Logger, BasicLogger, LogOn } from '../logging';
declare type Timestamp = [number, number];
interface IDetails {
[key: string]: string | number | boolean;
}
interface IState {
hit(name: string): void;
memo(name: string, details?: IDetails, transformTookTime?: (metric: number) => number): number | null;
}
export declare function createState(deps?: {
timestamp: () => [number, number];
timestampDiff: (timestamp: Timestamp) => [number, number];
}): IState;
export declare function attach(params: {
name: string;
from: TagNotification;
till: TagNotification;
cb?: (value: number) => void;
details?: IDetails;
transformTimeTook?: (value: number) => number;
state?: IState;
}): <T>(source: Observable<T>) => Observable<T>;
export declare function registerStarts(params: {
name: string;
on: Observable<unknown>;
}, state?: IState): Observable<never>;
export declare function start(paramsRaw: {
name: string;
on?: TagNotification;
logger?: BasicLogger;
}, state?: IState): <T>(stream: Observable<T>) => Observable<T>;
export declare function registerStops(params: {
name: string;
on: Observable<unknown>;
details?: IDetails;
cb?: (time: number) => void;
transformTookTime?: (time: number) => number;
}, state?: IState): Observable<never>;
export declare function stop(paramsRaw: {
name: string;
till: TagNotification;
details?: IDetails;
cb?: (time: number) => void;
transformTookTime?: (time: number) => number;
logger?: BasicLogger;
}, state?: IState): <T>(stream: Observable<T>) => Observable<T>;
interface ISummary {
numberOfSamples: number;
average: number;
mostOfTheTimesLessThan: number;
min: number;
max: number;
}
export declare function logSummaries(params: {
name: string;
on?: LogOn;
logger?: Logger;
}): Observable<never>;
export declare function timesRegistered(name?: string | RegExp): Observable<{
name: string;
time: number;
details?: IDetails | undefined;
}>;
export declare function summariesLogged(name?: string): Observable<{
name: string;
summary: ISummary;
}>;
export {};