1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- declare namespace mimicFn {
- 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 mimicFn = require('mimic-fn');
- function foo() {}
- foo.unicorn = '🦄';
- function wrapper() {
- return foo();
- }
- console.log(wrapper.name);
- //=> 'wrapper'
- mimicFn(wrapper, foo);
- console.log(wrapper.name);
- //=> 'foo'
- console.log(wrapper.unicorn);
- //=> '🦄'
- ```
- */
- declare function mimicFn<
- ArgumentsType extends unknown[],
- ReturnType,
- FunctionType extends (...arguments: ArgumentsType) => ReturnType
- >(
- to: (...arguments: ArgumentsType) => ReturnType,
- from: FunctionType,
- options?: mimicFn.Options,
- ): FunctionType;
- export = mimicFn;
|