{"_id":"@putout/plugin-return","_rev":"4160131","name":"@putout/plugin-return","description":"🐊Putout plugin adds ability to transform code related to return","dist-tags":{"latest":"3.0.0"},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"time":{"modified":"2026-03-01T20:37:33.000Z","created":"2025-01-29T15:17:38.372Z","3.0.0":"2025-12-29T21:06:17.351Z","2.0.0":"2025-04-16T14:54:00.710Z","1.1.2":"2025-01-29T19:01:43.331Z","1.1.1":"2025-01-29T15:35:47.159Z","1.1.0":"2025-01-29T15:30:28.871Z","1.0.0":"2025-01-29T15:17:38.372Z"},"users":{},"author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"versions":{"3.0.0":{"name":"@putout/plugin-return","version":"3.0.0","type":"module","author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"description":"🐊Putout plugin adds ability to transform code related to return","homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","main":"lib/index.js","release":false,"tag":false,"changelog":false,"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"scripts":{"test":"madrun test","watch:test":"madrun watch:test","lint":"madrun lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","fix:lint":"madrun fix:lint","coverage":"madrun coverage","report":"madrun report"},"dependencies":{},"keywords":["putout","putout-plugin","plugin","return"],"devDependencies":{"@putout/plugin-declare":"*","@putout/plugin-declare-before-reference":"*","@putout/plugin-putout":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-typescript":"*","@putout/plugin-variables":"*","@putout/test":"^14.0.0","c8":"^10.0.0","eslint":"^10.0.0-alpha.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^29.0.0","madrun":"^11.0.0","montag":"^1.2.1","nodemon":"^3.0.1"},"peerDependencies":{"putout":">=41"},"license":"MIT","engines":{"node":">=20"},"publishConfig":{"access":"public"},"_id":"@putout/plugin-return@3.0.0","gitHead":"539d27e4b9b16d8220d151f08c488cab6ec3d3b3","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"_nodeVersion":"25.2.1","_npmVersion":"11.4.2","dist":{"shasum":"9f59a540a5ef9b25a5c3522ddf0aaba22eb85570","size":4812,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-3.0.0.tgz"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"directories":{},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-return_3.0.0_1767042377202_0.9912041992474954"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-12-29T21:06:17.351Z","publish_time":1767042377351,"_source_registry_name":"default","_cnpm_publish_time":1767042377351},"2.0.0":{"name":"@putout/plugin-return","version":"2.0.0","type":"module","author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"description":"🐊Putout plugin adds ability to transform code related to return","homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","main":"lib/index.js","release":false,"tag":false,"changelog":false,"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"scripts":{"test":"madrun test","watch:test":"madrun watch:test","lint":"madrun lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","fix:lint":"madrun fix:lint","coverage":"madrun coverage","report":"madrun report"},"dependencies":{},"keywords":["putout","putout-plugin","plugin","return"],"devDependencies":{"@putout/eslint-flat":"^3.0.0","@putout/plugin-declare":"*","@putout/plugin-declare-before-reference":"*","@putout/plugin-putout":"*","@putout/plugin-remove-unused-variables":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-typescript":"*","@putout/test":"^13.0.0","c8":"^10.0.0","eslint":"^9.0.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^26.0.0","madrun":"^11.0.0","montag":"^1.2.1","nodemon":"^3.0.1"},"peerDependencies":{"putout":">=40"},"license":"MIT","engines":{"node":">=20"},"publishConfig":{"access":"public"},"_id":"@putout/plugin-return@2.0.0","gitHead":"748b2d5179c98d627f5805e1cc49456810ed983f","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"_nodeVersion":"22.14.0","_npmVersion":"11.1.0","dist":{"shasum":"bb286427afaefe96c48b7c841688cca29b61dc2d","size":4812,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-2.0.0.tgz"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"directories":{},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-return_2.0.0_1744815240511_0.2717045586935771"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-16T14:54:00.710Z","publish_time":1744815240710,"_source_registry_name":"default","_cnpm_publish_time":1744815240710},"1.1.2":{"name":"@putout/plugin-return","version":"1.1.2","type":"commonjs","author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"description":"🐊Putout plugin adds ability to transform code related to return","homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","main":"lib/index.js","release":false,"tag":false,"changelog":false,"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"scripts":{"test":"madrun test","watch:test":"madrun watch:test","lint":"madrun lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","fix:lint":"madrun fix:lint","coverage":"madrun coverage","report":"madrun report"},"dependencies":{},"keywords":["putout","putout-plugin","plugin","return"],"devDependencies":{"@putout/plugin-declare":"*","@putout/plugin-declare-before-reference":"*","@putout/plugin-putout":"*","@putout/plugin-remove-unused-variables":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-typescript":"*","@putout/test":"^11.0.0","c8":"^10.0.0","eslint":"^9.0.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^24.0.0","lerna":"^6.0.1","madrun":"^10.0.0","montag":"^1.2.1","nodemon":"^3.0.1"},"peerDependencies":{"putout":">=38"},"license":"MIT","engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@putout/plugin-return@1.1.2","gitHead":"a387499642df0de725667eef595c878a056a8e5d","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"_nodeVersion":"22.13.1","_npmVersion":"10.9.0","dist":{"shasum":"dc069f1134ab30375928c1777cde407d38c0a126","size":4827,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-1.1.2.tgz"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"directories":{},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-return_1.1.2_1738177303105_0.26800369889673203"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-01-29T19:01:43.331Z","publish_time":1738177303331,"_source_registry_name":"default","_cnpm_publish_time":1738177303331},"1.1.1":{"name":"@putout/plugin-return","version":"1.1.1","type":"commonjs","author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"description":"🐊Putout plugin adds ability to transform code related to return","homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","main":"lib/index.js","release":false,"tag":false,"changelog":false,"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"scripts":{"test":"madrun test","watch:test":"madrun watch:test","lint":"madrun lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","fix:lint":"madrun fix:lint","coverage":"madrun coverage","report":"madrun report"},"dependencies":{},"keywords":["putout","putout-plugin","plugin","return"],"devDependencies":{"@putout/plugin-declare":"*","@putout/plugin-declare-before-reference":"*","@putout/plugin-putout":"*","@putout/plugin-remove-unused-variables":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-typescript":"*","@putout/test":"^11.0.0","c8":"^10.0.0","eslint":"^9.0.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^24.0.0","lerna":"^6.0.1","madrun":"^10.0.0","montag":"^1.2.1","nodemon":"^3.0.1"},"peerDependencies":{"putout":">=38"},"license":"MIT","engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@putout/plugin-return@1.1.1","gitHead":"efbc6c838dc470d9f0a9b0a09d7706d90f55a316","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"_nodeVersion":"22.13.1","_npmVersion":"10.9.0","dist":{"shasum":"81576be33058f0d8295f93c75898f0ea262bfcc8","size":4808,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-1.1.1.tgz"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"directories":{},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-return_1.1.1_1738164946935_0.529266311797778"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-01-29T15:35:47.159Z","publish_time":1738164947159,"_source_registry_name":"default","_cnpm_publish_time":1738164947159},"1.1.0":{"name":"@putout/plugin-return","version":"1.1.0","type":"commonjs","author":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com","url":"https://github.com/coderaiser"},"description":"🐊Putout plugin adds ability to transform code related to return","homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","main":"lib/index.js","release":false,"tag":false,"changelog":false,"repository":{"type":"git","url":"git+https://github.com/coderaiser/putout.git"},"scripts":{"test":"madrun test","watch:test":"madrun watch:test","lint":"madrun lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","fix:lint":"madrun fix:lint","coverage":"madrun coverage","report":"madrun report"},"dependencies":{},"keywords":["putout","putout-plugin","plugin","return"],"devDependencies":{"@putout/plugin-declare":"*","@putout/plugin-declare-before-reference":"*","@putout/plugin-putout":"*","@putout/plugin-remove-unused-variables":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-typescript":"*","@putout/test":"^11.0.0","c8":"^10.0.0","eslint":"^9.0.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^23.0.0","lerna":"^6.0.1","madrun":"^10.0.0","montag":"^1.2.1","nodemon":"^3.0.1"},"peerDependencies":{"putout":">=37"},"license":"MIT","engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@putout/plugin-return@1.1.0","gitHead":"a309b9970d8eb4f4a6e5e6f79e3c0bc07bca96a6","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"_nodeVersion":"22.13.1","_npmVersion":"10.9.0","dist":{"shasum":"2730cd0faa877776936a6a93a5b3c2236113beeb","size":4810,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-1.1.0.tgz"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"directories":{},"maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-return_1.1.0_1738164628674_0.4549975245428195"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-01-29T15:30:28.871Z","publish_time":1738164628871,"_source_registry_name":"default","_cnpm_publish_time":1738164628871},"1.0.0":{"name":"@putout/plugin-return","version":"1.0.0","keywords":["putout","putout-plugin","plugin","return"],"author":{"url":"https://github.com/coderaiser","name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"license":"MIT","_id":"@putout/plugin-return@1.0.0","maintainers":[{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"}],"homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"tag":false,"dist":{"shasum":"7773a1e3c53fcbb42802f34f39d8cffcb075f44b","size":4669,"noattachment":false,"key":"/@putout/plugin-return/-/@putout/plugin-return-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@putout/plugin-return/download/@putout/plugin-return-1.0.0.tgz"},"main":"lib/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"0a04e7bdba57b1cda825c9e230312b33964f7fc7","release":false,"scripts":{"lint":"madrun lint","test":"madrun test","report":"madrun report","coverage":"madrun coverage","fix:lint":"madrun fix:lint","fresh:lint":"madrun fresh:lint","lint:fresh":"madrun lint:fresh","watch:test":"madrun watch:test"},"_npmUser":{"name":"coderaiser","email":"mnemonic.enemy@gmail.com"},"changelog":false,"repository":{"url":"git+https://github.com/coderaiser/putout.git","type":"git"},"_npmVersion":"10.9.0","description":"🐊Putout plugin adds ability to transform code related to return","directories":{},"_nodeVersion":"22.13.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.0.0","lerna":"^6.0.1","eslint":"^9.0.0","madrun":"^10.0.0","montag":"^1.2.1","nodemon":"^3.0.1","@putout/test":"^11.0.0","eslint-plugin-n":"^17.0.0","eslint-plugin-putout":"^23.0.0","@putout/plugin-putout":"*","@putout/plugin-declare":"*","@putout/plugin-typescript":"*","@putout/plugin-reuse-duplicate-init":"*","@putout/plugin-remove-unused-variables":"*","@putout/plugin-declare-before-reference":"*"},"peerDependencies":{"putout":">=37"},"_npmOperationalInternal":{"tmp":"tmp/plugin-return_1.0.0_1738163858160_0.06447071997998943","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2025-01-29T15:17:38.372Z","publish_time":1738163858372,"_source_registry_name":"default","_cnpm_publish_time":1738163858372}},"readme":"# @putout/plugin-return [![NPM version][NPMIMGURL]][NPMURL]\n\n[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-return.svg?style=flat&longCache=true\n[NPMURL]: https://npmjs.org/package/@putout/plugin-return \"npm\"\n\n> The `return` statement ends function execution and specifies a value to be returned to the function caller.\n>\n> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return)\n\n????[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to transform to new **Node.js** API and apply best practices.\n\n## Install\n\n```\nnpm i putout @putout/plugin-return -D\n```\n\n## Rules\n\n- ✅ [apply-early-return](#apply-early-return);\n- ✅ [convert-from-continue](#convert-from-continue);\n- ✅ [convert-from-break](#convert-from-continue);\n- ✅ [merge-with-next-sibling](#merge-with-next-sibling);\n- ✅ [remove-useless](#remove-useless);\n- ✅ [simplify-boolean](#simplify-boolean);\n\n## Config\n\n```json\n{\n    \"rules\": {\n        \"return/apply-early-return\": \"on\",\n        \"return/convert-from-continue\": \"on\",\n        \"return/convert-from-break\": \"on\",\n        \"return/merge-with-next-sibling\": \"on\",\n        \"return/remove-useless\": \"on\",\n        \"return/simplify-boolean\": \"on\"\n    }\n}\n```\n\n## apply-early-return\n\n> In short, an **early return** provides functionality so the result of a conditional statement can be returned as soon as a result is available, rather than wait until the rest of the function is run.\n>\n> (c) [dev.to](https://dev.to/jenniferlynparsons/early-returns-in-javascript-5hfb)\n\n### ❌ Example of incorrect code\n\n```js\nfunction get(a) {\n    const b = 0;\n    \n    {\n        if (a > 0)\n            return 5;\n        \n        return 7;\n    }\n}\n```\n\n### ✅ Example of correct code\n\n```js\nfunction get(a) {\n    if (a > 0)\n        return 5;\n    \n    return 7;\n}\n```\n\n## convert-from-continue\n\n> The `continue` statement terminates execution of the statements in the current iteration of the current or labeled loop, and continues execution of the loop with the next iteration.\n>\n> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue)\n\n> `SyntaxError: Illegal continue statement: no surrounding iteration statement`\n>\n> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_continue)\n\nCheckout in ????[**Putout Editor**](https://putout.cloudcmd.io/#/gist/a321ee4d76a066c17835b4aa50f91499/e0d161c7bd8b0d63ebf8d5a5026529c2fb8e0cb3).\n\n### ❌ Example of incorrect code\n\n```ts\nfunction x() {\n    if (a)\n        continue;\n    \n    return b;\n}\n```\n\n### ✅ Example of correct code\n\n```js\nfunction x() {\n    if (a)\n        return;\n    \n    return b;\n}\n```\n\n## convert-from-break\n\n> The `break` statement terminates the current loop or switch statement and transfers program control to the statement following the terminated statement.\n>\n> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax)\n\n> `SyntaxError: unlabeled break must be inside loop or switch`\n>\n> (c) [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_break)\n\nCheckout in ????[**Putout Editor**](https://putout.cloudcmd.io/#/gist/a321ee4d76a066c17835b4aa50f91499/10646f7383b8d58cda02417485d5281955da95be).\n\n### ❌ Example of incorrect code\n\n```ts\nfunction x() {\n    if (a)\n        break;\n    \n    return false;\n}\n```\n\n### ✅ Example of correct code\n\n```js\nfunction x() {\n    if (a)\n        return;\n    \n    return false;\n}\n```\n\n## merge-with-next-sibling\n\nCheckout in ????[**Putout Editor**](https://putout.cloudcmd.io/#/gist/2cb7e8836ce0adb6009f21859f8a0c15/9eea5b36a4f6664b05f2f9f0abd271a62a4dbbbe).\n\n### ❌ Example of incorrect code\n\n```js\nfunction x() {\n    return;\n    {\n        hello: 'world';\n    }\n    \n    return;\n    5;\n    \n    return;\n    a ? 2 : 3;\n}\n```\n\n### ✅ Example of correct code\n\n```js\nfunction x() {\n    return {\n        hello: 'world',\n    };\n    \n    return 5;\n    \n    return a ? 2 : 3;\n}\n```\n\n### remove-useless\n\n### ❌ Example of incorrect code\n\n```js\nconst traverse = ({push}) => {\n    return {\n        ObjectExpression(path) {\n            push(path);\n        },\n    };\n};\n```\n\n### ✅ Example of correct code\n\n```js\nconst traverse = ({push}) => ({\n    ObjectExpression(path) {\n        push(path);\n    },\n});\n```\n\n## simplify-boolean\n\nCheck out in ????[**Putout Editor**](https://putout.cloudcmd.io/#/gist/304035b9529830cf20e76e9a1f35f14c/39c743921c6bfad3984a3989f25c2986ab51e8c8).\n\n### ❌ Example of incorrect code\n\n```js\nfunction isA(a, b) {\n    if (a.length === b.length)\n        return true;\n    \n    return false;\n}\n```\n\n### ✅ Example of correct code\n\n```js\nfunction isA(a, b) {\n    return a.length !== b.length;\n}\n```\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/coderaiser/putout/tree/master/packages/plugin-return#readme","bugs":{"url":"https://github.com/coderaiser/putout/issues"},"license":"MIT"}