You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
export interface Options { |
|
/** |
|
Skip modifying [non-configurable properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor#Description) instead of throwing an error. |
|
|
|
@default false |
|
*/ |
|
readonly ignoreNonConfigurable?: boolean; |
|
} |
|
|
|
/** |
|
Modifies the `to` function to mimic the `from` function. Returns the `to` function. |
|
|
|
`name`, `displayName`, and any other properties of `from` are copied. The `length` property is not copied. Prototype, class, and inherited properties are copied. |
|
|
|
`to.toString()` will return the same as `from.toString()` but prepended with a `Wrapped with to()` comment. |
|
|
|
@param to - Mimicking function. |
|
@param from - Function to mimic. |
|
@returns The modified `to` function. |
|
|
|
@example |
|
``` |
|
import mimicFunction from 'mimic-fn'; |
|
|
|
function foo() {} |
|
foo.unicorn = '🦄'; |
|
|
|
function wrapper() { |
|
return foo(); |
|
} |
|
|
|
console.log(wrapper.name); |
|
//=> 'wrapper' |
|
|
|
mimicFunction(wrapper, foo); |
|
|
|
console.log(wrapper.name); |
|
//=> 'foo' |
|
|
|
console.log(wrapper.unicorn); |
|
//=> '🦄' |
|
``` |
|
*/ |
|
export default function mimicFunction< |
|
ArgumentsType extends unknown[], |
|
ReturnType, |
|
FunctionType extends (...arguments: ArgumentsType) => ReturnType |
|
>( |
|
to: (...arguments: ArgumentsType) => ReturnType, |
|
from: FunctionType, |
|
options?: Options, |
|
): FunctionType;
|
|
|