UNPKG

@iobroker/js-controller-common-db

Version:

The Library contains the common utils for the ioBroker controller which can be used by db classes too, as they do not rely on the db (circular dependencies).

17 lines 2.21 kB
type MaybeCbCallback<T extends any[]> = (...args: T) => void; type MaybeCbErrCallback<T extends any[]> = (error: Error | null | undefined, ...args: T) => void; type MaybeCbErrReturnType<TCb extends MaybeCbErrCallback<any> | null | undefined, TErr extends Error | string | null | undefined, TArgs extends any[]> = TCb extends MaybeCbErrCallback<any> ? void : TErr extends Error | string ? Promise<never> : Promise<[ ] extends TArgs ? void : [any] extends TArgs ? TArgs[0] : TArgs>; type MaybeCbErrCallbackParameters<CB extends MaybeCbErrCallback<any> | null | undefined, TErr extends Error | string | null | undefined> = Exclude<CB, undefined | null> extends MaybeCbErrCallback<infer U> ? TErr extends Error | string ? // don't require arguments, but allow passing them U | [] : U : any[]; type MaybeCbCallbackParameters<CB extends MaybeCbCallback<any> | null | undefined> = Exclude<CB, undefined | null> extends MaybeCbCallback<infer U> ? U : any[]; type MaybeCbReturnType<TCb extends MaybeCbErrCallback<any> | null | undefined, TArgs extends any[]> = TCb extends MaybeCbCallback<any> ? void : Promise<[ ] extends TArgs ? void : [any] extends TArgs ? TArgs[0] : TArgs>; type NoInfer<T> = T & { [K in keyof T]: T[K]; }; export declare function maybeCallback<TCb extends MaybeCbCallback<any> | null | undefined, TArgs extends MaybeCbCallbackParameters<TCb> = MaybeCbCallbackParameters<TCb>>(callback: TCb, ...args: NoInfer<TArgs>): MaybeCbReturnType<TCb, TArgs>; export declare function maybeCallbackWithError<TCb extends MaybeCbErrCallback<any> | null | undefined, TErr extends Error | string | null | undefined, TArgs extends MaybeCbErrCallbackParameters<TCb, TErr> = MaybeCbErrCallbackParameters<TCb, TErr>>(callback: TCb, error: TErr, ...args: NoInfer<TArgs>): MaybeCbErrReturnType<TCb, TErr, TArgs>; export declare function maybeCallbackWithRedisError<TCb extends MaybeCbErrCallback<any> | null | undefined, TErr extends Error | string | null | undefined, TArgs extends MaybeCbErrCallbackParameters<TCb, TErr> = MaybeCbErrCallbackParameters<TCb, TErr>>(callback: TCb, error: TErr, ...args: NoInfer<TArgs>): MaybeCbErrReturnType<TCb, TErr, TArgs>; export {}; //# sourceMappingURL=maybeCallback.d.ts.map