UNPKG

@lesnoypudge/utils

Version:

lesnoypudge's utils

16 lines (15 loc) 1.19 kB
import { T } from '@lesnoypudge/types-utils-base/namespace'; export declare namespace patch { type GetNamesOfMethods<_ObjectToPatch extends object> = keyof T.ConditionalPick<_ObjectToPatch, T.AnyFunction>; type GetPatchedMethod<_ObjectToPatch extends object, _MethodName extends GetNamesOfMethods<_ObjectToPatch>> = (_ObjectToPatch[_MethodName] extends T.AnyFunction ? _ObjectToPatch[_MethodName] : never); type GetPatchedMethodFactory<_ObjectToPatch extends object, _MethodName extends GetNamesOfMethods<_ObjectToPatch>, _PatchedMethod extends patch.GetPatchedMethod<_ObjectToPatch, _MethodName>> = (_PatchedMethod extends never ? never : (originalMethod: _PatchedMethod) => _PatchedMethod); } /** * Replaces desired method with custom one. */ export declare const patch: <_ObjectToPatch extends object, _MethodName extends patch.GetNamesOfMethods<_ObjectToPatch>, _PatchedMethod extends patch.GetPatchedMethod<_ObjectToPatch, _MethodName>>(options: { objectToPatch: _ObjectToPatch; providedThis: _ObjectToPatch; methodName: _MethodName; patchedMethodFactory: patch.GetPatchedMethodFactory<_ObjectToPatch, _MethodName, _PatchedMethod>; }) => () => void;