type FunctionPropertyNames = { [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never }[keyof T] & string export function suppressConsoleLogs( cb: (...args: T) => unknown, type: FunctionPropertyNames = 'error' ) { return (...args: T) => { let spy = jest.spyOn(globalThis.console, type).mockImplementation(jest.fn()) return new Promise((resolve, reject) => { Promise.resolve(cb(...args)).then(resolve, reject) }).finally(() => spy.mockRestore()) } } export function mockingConsoleLogs( cb: (spy: jest.SpyInstance, ...args: T) => unknown, type: FunctionPropertyNames = 'error' ) { return (...args: T) => { let spy = jest.spyOn(globalThis.console, type).mockImplementation(jest.fn()) return new Promise((resolve, reject) => { Promise.resolve(cb(spy, ...args)).then(resolve, reject) }).finally(() => spy.mockRestore()) } }