/** * Binds all methods of an object to this object * @param {any} self - object reference */ export declare const autoBind: (self: any) => void; export declare type Cancelable = Executed | Canceled; declare type Canceled = { type: 'canceled'; prevValue?: T; }; declare type Context = { checkCanceled: () => boolean; executeCount: number; }; export declare function debounce(fn: (...args: ArgsT) => ResT, time: number, memoLastResult?: boolean): ResultFunction; export declare function debounceWithTeardown(fn: (...args: ArgsT) => ResT, time: number, memoLastResult?: boolean): TeardownTuple; export declare function deepFreeze>(o: T): T; declare type EmitterHandler = (payload: PayloadT) => void; declare type EventId = { eventId: number; }; declare type Executed = { type: 'executed'; value: T; prevValue?: T; }; export declare function getterAndSetter(initValue: T): [() => T, (newValue: T) => void]; export declare interface IEmitEvent { emit(data: T): void; } export declare interface IEvent extends ISubscribeEvent, IEmitEvent { } export declare interface IExecuteHandler { execute(params: ParamsT): Promise; } export declare function ignoreFirstArg(fn: (...args: ArgsT) => ResT): (_first: any, ...args: ArgsT) => ResT; export declare interface IHandler extends IRegiterHandler, IExecuteHandler { } export declare interface IReadState { get(): T; subscribe(callback: SubscribeCallback): UnsubscribeFunction; } export declare interface IRegiterHandler { regiter(handler: (params: ParamsT) => ResT | Promise): () => void; } export declare interface IState extends IReadState, IWriteState { } export declare interface IStopwatchPerformance { now(): number; } export declare interface ISubscribeEvent { on(handler: (data: T) => void): () => void; off(handler: (data: T) => void): void; once(handler: (data: T) => void): () => void; } export declare interface IWriteState { set(newValue: T): void; } /** * Binds all methods of an class to this class * @example class SomeClass extends LiteAutoBind */ export declare abstract class LiteAutoBind { constructor(); } export declare class LiteCache extends LiteAutoBind { private readonly _get; private readonly _set; constructor(_get: () => Promise, _set: (value: string) => Promise); setCache(value: T): Promise; getCache(maxDiffMs: number): Promise; getCacheIgnoringMaxDiffMs(): Promise; } export declare class LiteCancelableWaiting { private resolve; private reject; private promise; private timer; constructor(); wait(delay: number): Promise; cancel(): void; } export declare class LiteCanceledError implements Error { name: string; message: string; stack?: string; constructor(message?: string); } /** * @deprecated use nextCancelsPrev instead */ export declare class LiteCancellationOperation extends LiteAutoBind { private readonly name; private readonly operation; private readonly writeLog; private cancelToken; private executeCount; private working; get executing(): boolean; constructor(name: string, operation: (params: ParamsT, cancelToken: LiteCancellationToken, executeCount: number) => Promise, writeLog?: (text: string) => void); doOperation(params: ParamsT): Promise; } export declare class LiteCancellationToken { private canceled; readonly onCanceled: LiteEvent; get isCanceled(): boolean; cancel(): void; throwIfCanceled(): void; } export declare class LiteEndlesslyTimer extends LiteAutoBind { private readonly fun; private readonly timeMs; private readonly params; private _tmId; private _started; constructor(fun: () => void, timeMs: number, params: TimerParams_2); start(): void; stop(): void; restart(): void; private _createTimeout; private _run; } export declare class LiteEvent extends LiteAutoBind implements IEvent { private readonly params; private handlers; private onceHandlers; constructor(params?: { quiet: boolean; }); on(handler: (data: T) => void): () => void; off(handler: (data: T) => void): void; private execute; emit(data: T): void; once(handler: (data: T) => void): () => void; unsubscribeAll(): void; } export declare class LiteEventEmitter> extends LiteAutoBind { private readonly params; constructor(params?: { quiet: boolean; }); readonly onEmit: LiteEvent<{ eventName: string; payload: any; }>; private readonly _handlersMap; private readonly _onceHandlersMap; on(eventName: E, handler: EmitterHandler): () => void; once(eventName: E, handler: EmitterHandler): () => void; off(eventName: E, handler: (payload: EventsT[E]) => void): void; emit(eventName: E, event: EventsT[E]): void; emit(eventName: undefined extends EventsT[E] ? E : never): void; unsubscribeAll(): void; private _unsubscribe; private _subscribe; private _execute; } export declare class LiteHandler extends LiteAutoBind implements IHandler { private eventId; protected readonly requestEvent: LiteEvent>; protected readonly responseEvent: LiteEvent>; regiter(handler: (params: ParamsT) => ResT | Promise): () => void; execute(params: ParamsT): Promise; } export declare class LitePromise extends LiteAutoBind { private _resolve; private _reject; readonly instance: Promise; get resolve(): Resolve; get reject(): Reject; constructor(); } export declare class LiteRepeatTimer extends LiteAutoBind { private readonly fun; private readonly timeMs; private readonly params; private _tmId; private _runCount; private _started; get runCount(): number; constructor(fun: () => void, timeMs: number | RangeTimes, params: TimerParams_4); start(): void; stop(): void; restart(): void; private _createTimeout; private _run; } export declare class LiteRetryTimer extends LiteAutoBind { private readonly fun; private readonly timeMs; private readonly params; private _tmId; private _runCount; private _started; get runCount(): number; constructor(fun: () => void, timeMs: number | RangeTimes, params: TimerParams_3); start(): void; stop(): void; restart(): void; private _createTimeout; private _run; } export declare class LiteSlider extends LiteAutoBind { private slides; private index; constructor(slides: SlideT[]); /** * Get current position * @returns number Current position */ get position(): number; /** * Get current slide * @returns any Current slide */ get current(): SlideT | null; /** * Return current slide and then go to the next slide * After that current slide will be next * @returns any Current slide */ next(): SlideT | null; /** * Set slides position to 0 */ reset(): void; /** * Set slides position * @param {number} position */ set(position: number): void; } export declare class LiteState extends LiteAutoBind implements IState { private value; private subscribers; constructor(initValue: T); get(): T; set(newValue: T): void; subscribe(callback: SubscribeCallback): UnsubscribeFunction; } export declare class LiteStopwatch extends LiteAutoBind { private performance; private pausedTime; private startTime; private _elapsedTime; private stoped; private paused; constructor(performance?: IStopwatchPerformance); get elapsedTime(): number; start(): void; clear(): void; restart(): void; pause(): number; private _calcElapsedTime; stop(): number; } export declare class LiteTimer extends LiteAutoBind { private readonly fun; private readonly timeMs; private readonly params?; private _tmId; constructor(fun: () => void, timeMs: number, params?: TimerParams | undefined); start(): void; stop(): void; restart(): void; private _run; } export declare function nextCancelsPrev(fn: (ctx: Context, ...args: ArgsT) => ResT, memoLastResult?: boolean): ResultFunction; export declare function nextCancelsPrevWithTeardown(fn: (ctx: Context, ...args: ArgsT) => ResT, memoLastResult?: boolean): TeardownTuple; export declare function nextWaitsPrev(fn: (...args: ArgsT) => ResT, memoLastResult?: boolean): ResultFunction; export declare function nextWaitsPrevWithTeardown(fn: (...args: ArgsT) => ResT, memoLastResult?: boolean): TeardownTuple; export declare function noThrow(fn: (...args: T) => void): (...args: T) => void; /** * Performs left-to-right function composition. The first argument may have any arity, the remaining arguments must be unary. * * @example * import { pipeFn } from 'lite-utility/function' * * const len = (s: string): number => s.length * const double = (n: number): number => n * 2 * * const f = pipeFn(len, double) * * assert.strictEqual(f('aaa'), 6) * */ export declare function pipeFn, B>(ab: (...a: A) => B): (...a: A) => B; export declare function pipeFn, B, C>(ab: (...a: A) => B, bc: (b: B) => C): (...a: A) => C; export declare function pipeFn, B, C, D>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...a: A) => D; export declare function pipeFn, B, C, D, E>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): (...a: A) => E; export declare function pipeFn, B, C, D, E, F>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): (...a: A) => F; export declare function pipeFn, B, C, D, E, F, G>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): (...a: A) => G; export declare function pipeFn, B, C, D, E, F, G, H>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H): (...a: A) => H; export declare function pipeFn, B, C, D, E, F, G, H, I>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I): (...a: A) => I; export declare function pipeFn, B, C, D, E, F, G, H, I, J>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J): (...a: A) => J; export declare function promisifyFn(fn: (...args: T) => R | Promise): (...args: T) => Promise; declare type RangeTimes = Record; declare type ReceiveError = EventId & { type: 'error'; name: string | null; message: string; payload: any | null; }; declare type ReceiveResult = EventId & { type: 'result'; result: T; }; declare type Reject = (reason?: any) => void; export declare type ReplaceEmitEvents = ReplaceKeyTypes, IEmitEvent>; declare type ReplaceKeyTypes = { [Key in keyof Type]: Type[Key] extends OldKeyType ? NewKeyType : Type[Key]; }; export declare type ReplaceSubscribeEvents = ReplaceKeyTypes, ISubscribeEvent>; declare type RequestParams = EventId & { params: T; }; declare type Resolve = (value: T | PromiseLike) => void; declare type ResponseParams = ReceiveError | ReceiveResult; declare type ResultFunction = (...args: ArgsT) => Promise>>; export declare function runFn(args: T, fn: (...args: T) => U): U; export declare function runNoThrow(fn: () => void): void; declare type SubscribeCallback = (newValue: T) => void; declare type TeardownTuple = [ResultFunction, () => void]; export declare function throttle(fn: (...args: ArgsT) => ResT, time: number, memoLastResult?: boolean): ResultFunction; export declare function throttleWithTeardown(fn: (...args: ArgsT) => ResT, time: number, memoLastResult?: boolean): TeardownTuple; declare type TimerParams = { logError?: (...args: any[]) => void; }; declare type TimerParams_2 = { instantStart: boolean; logError?: (...args: any[]) => void; }; declare type TimerParams_3 = { instantStart: boolean; maxTryCount: number; logError?: (...args: any[]) => void; }; declare type TimerParams_4 = { instantStart: boolean; runCount: number; logError?: (...args: any[]) => void; }; export declare function tryCatch(fn: (...args: T) => U, onCatch: (err: unknown) => U): (...args: T) => U; declare type UnsubscribeFunction = () => void; export declare function wait(delay: number): Promise; export declare function withStopwatch(fn: (...args: T) => U, onElapsedTime: (elapsedTime: number) => void): (...args: T) => U | void; export { }