| export type 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-function'; |
| |
| 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; |