12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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;
|