{"_id":"mimic-function","_rev":"3374064","name":"mimic-function","description":"Make a function mimic another one","dist-tags":{"latest":"5.0.1"},"maintainers":[{"name":"sindresorhus","email":""}],"time":{"modified":"2024-08-26T02:59:42.000Z","created":"2023-11-05T19:53:09.458Z","5.0.1":"2024-03-14T08:37:42.297Z","5.0.0":"2023-11-05T19:53:09.458Z"},"users":{},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"repository":{"type":"git","url":"git+https://github.com/sindresorhus/mimic-function.git"},"versions":{"5.0.1":{"name":"mimic-function","version":"5.0.1","description":"Make a function mimic another one","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/mimic-function.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsd"},"keywords":["function","mimic","imitate","rename","copy","inherit","properties","name","func","fn","set","infer","change"],"devDependencies":{"ava":"^5.3.1","tsd":"^0.29.0","xo":"^0.56.0"},"types":"./index.d.ts","gitHead":"e451d0af761bed2cde0b9bc252dc6a2dfeb35844","bugs":{"url":"https://github.com/sindresorhus/mimic-function/issues"},"homepage":"https://github.com/sindresorhus/mimic-function#readme","_id":"mimic-function@5.0.1","_nodeVersion":"20.11.1","_npmVersion":"9.2.0","dist":{"shasum":"acbe2b3349f99b9deaca7fb70e48b83e94e67076","size":3203,"noattachment":false,"key":"/mimic-function/-/mimic-function-5.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/mimic-function/download/mimic-function-5.0.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimic-function_5.0.1_1710405462144_0.5510414973189222"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-14T08:37:42.297Z","publish_time":1710405462297,"_source_registry_name":"default","_cnpm_publish_time":1710405462297},"5.0.0":{"name":"mimic-function","version":"5.0.0","description":"Make a function mimic another one","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/mimic-function.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsd"},"keywords":["function","mimic","imitate","rename","copy","inherit","properties","name","func","fn","set","infer","change"],"devDependencies":{"ava":"^5.3.1","tsd":"^0.29.0","xo":"^0.56.0"},"types":"./index.d.ts","gitHead":"7748ad022edb602feb1d6ab1920c1097e63785c5","bugs":{"url":"https://github.com/sindresorhus/mimic-function/issues"},"homepage":"https://github.com/sindresorhus/mimic-function#readme","_id":"mimic-function@5.0.0","_nodeVersion":"20.9.0","_npmVersion":"9.2.0","dist":{"shasum":"6cb5a922d17923ee58cf2f7d904f3eb350e0c87a","size":3155,"noattachment":false,"key":"/mimic-function/-/mimic-function-5.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/mimic-function/download/mimic-function-5.0.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimic-function_5.0.0_1699213989270_0.19737321168271826"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-11-05T19:53:09.458Z","publish_time":1699213989458,"_source_registry_name":"default","_cnpm_publish_time":1699213989458}},"readme":"<picture>\n\t<source media=\"(prefers-color-scheme: dark)\" srcset=\"media/logo_dark.svg\">\n\t<img alt=\"mimic-function logo\" src=\"media/logo.svg\" width=\"400\">\n</picture>\n<br>\n\n> Make a function mimic another one\n\nUseful when you wrap a function in another function and you would like to preserve the original name and other properties.\n\n## Install\n\n```sh\nnpm install mimic-function\n```\n\n## Usage\n\n```js\nimport mimicFunction from 'mimic-function';\n\nfunction foo() {}\nfoo.unicorn = '????';\n\nfunction wrapper() {\n\treturn foo();\n}\n\nconsole.log(wrapper.name);\n//=> 'wrapper'\n\nmimicFunction(wrapper, foo);\n\nconsole.log(wrapper.name);\n//=> 'foo'\n\nconsole.log(wrapper.unicorn);\n//=> '????'\n\nconsole.log(String(wrapper));\n//=> '/* Wrapped with wrapper() */\\nfunction foo() {}'\n```\n\n## API\n\n### mimicFunction(to, from, options?)\n\nModifies the `to` function to mimic the `from` function. Returns the `to` function.\n\n`name`, `displayName`, and any other properties of `from` are copied. The `length` property is not copied. Prototype, class, and inherited properties are copied.\n\n`to.toString()` will return the same as `from.toString()` but prepended with a `Wrapped with to()` comment.\n\n#### to\n\nType: `Function`\n\nMimicking function.\n\n#### from\n\nType: `Function`\n\nFunction to mimic.\n\n#### options\n\nType: `object`\n\n##### ignoreNonConfigurable\n\nType: `boolean`\\\nDefault: `false`\n\nSkip modifying [non-configurable properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor#Description) instead of throwing an error.\n\n## Related\n\n- [rename-fn](https://github.com/sindresorhus/rename-fn) - Rename a function\n- [keep-func-props](https://github.com/ehmicky/keep-func-props) - Wrap a function without changing its name and other properties\n","_attachments":{},"homepage":"https://github.com/sindresorhus/mimic-function#readme","bugs":{"url":"https://github.com/sindresorhus/mimic-function/issues"},"license":"MIT"}