@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
TypeScript
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