{"_id":"eslint-rule-extender","_rev":"1-abf4aa3decfe56d4aa209b698ec7b61c","name":"eslint-rule-extender","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"eslint-rule-extender","version":"0.0.1","description":"Utility to extend existing ESLint rules","license":"MIT","author":{"name":"Kai Cataldo","email":"kai@kaicataldo.com"},"funding":{"type":"github","url":"https://github.com/sponsors/kaicataldo"},"repository":{"type":"git","url":"git+https://github.com/kaicataldo/eslint-rule-extender.git"},"bugs":{"url":"https://github.com/kaicataldo/eslint-rule-extender/issues"},"homepage":"https://github.com/kaicataldo/eslint-rule-extender#readme","keywords":["eslint","custom","rule","rules","plugin","plugins"],"engines":{"node":">=10"},"main":"lib/index.js","scripts":{"lint":"eslint .","format":"prettier '**/*.js' --write","test":"jest"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"pretty-quick --staged"}},"devDependencies":{"@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","eslint":"^7.6.0","eslint-config-prettier":"^6.11.0","eslint-plugin-node":"^11.1.0","husky":"^4.2.5","jest":"^26.5.3","prettier":"^2.0.5","pretty-quick":"^3.1.0"},"gitHead":"86aab9889512fd6d2fcc9d64ab323a1c744faadc","_id":"eslint-rule-extender@0.0.1","_nodeVersion":"14.8.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F0j1Twve3lamL3J0rRSVAynlp58sDPG39JFcQrM+u9Na7PmCgiPHNODh6YE9mduaGcsn3NBqbf6LZRj0cLr8Ng==","shasum":"ae9faf15d1e651a714d579af0961fd80456f3b16","tarball":"https://registry.npmjs.org/eslint-rule-extender/-/eslint-rule-extender-0.0.1.tgz","fileCount":4,"unpackedSize":8392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfigHWCRA9TVsSAnZWagAA8zwP+QBvJul2a0OjH18N+9gr\n3fV27kIH7JUDbM98dvSkca57y/iMQKt7J5g99Iixm62he3e4Y6huRRPi33lx\nXleftOHfrwh/Z9+d3i3MY3YuyvybuPjEjmZfuczfY709MUMC+X86hc5XNCIX\nPKXPDMGSvFr4zr/BHnLfbHS1ul0cwoVcTtCQ95a3E+OoHdopBuNuQ0IePtwx\nQlAljHLes1+6y+v6bwa4VoOJ/gB6G+W64AyZk+uAOTcGCCILpoG1qKETVR1W\nOWh/q1mwXmztgR4A3u8F4OqSAHhl6pgVk4iR3emOp2FuN0f5EbADbIUmQzAN\nFQ+WC+UgamNVu4SQBrzls3MR5tCzlc9yCm0NtEu4DegXnggslAGJeE4o8fNO\n6wiqwCPvG07tLXhhxa1YMFQ9b7Ou6urp5ZbPVNTaSHTCA5V26O8YCheTuP0/\nyOXW19nq+UrGwc5hEm++gyiO7zmsE/ilkZtP720Hmdvax9R5rZnS0QiSoXT0\nsqRWi9jwcH3sPcUgTHMWRSKocQZ3nCsZNF9c7w1/njE7htAP2z71wCumvNHG\nqcNzeCwXNqDx8QP/Zj9m1eMBeOOZt8xUbuwWJ4D49P2cwceYM3QCXT5dXizd\nitt3oA7graaKROeKuwmy/s/xvkg9g3nzWaH0Ihev1a1AxIy71Avj11CiKCcl\nESO7\r\n=DC4S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYWfzV7dYFAa3kluPOK1xaXedDcKCyuEHLOTpOVlMdlAiEAiMcpa0pVhUaycCCeDhgdYFMufIR27OeWBeeYNkgxGFY="}]},"maintainers":[{"name":"kaicataldo","email":"kai@kaicataldo.com"}],"_npmUser":{"name":"kaicataldo","email":"kai@kaicataldo.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-rule-extender_0.0.1_1602879957617_0.16358780422149422"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-16T20:25:57.617Z","0.0.1":"2020-10-16T20:25:58.534Z","modified":"2022-05-01T17:16:17.521Z"},"maintainers":[{"name":"kaicataldo","email":"kai@kaicataldo.com"}],"description":"Utility to extend existing ESLint rules","homepage":"https://github.com/kaicataldo/eslint-rule-extender#readme","keywords":["eslint","custom","rule","rules","plugin","plugins"],"repository":{"type":"git","url":"git+https://github.com/kaicataldo/eslint-rule-extender.git"},"author":{"name":"Kai Cataldo","email":"kai@kaicataldo.com"},"bugs":{"url":"https://github.com/kaicataldo/eslint-rule-extender/issues"},"license":"MIT","readme":"# eslint-rule-extender\n\n[![npm](https://img.shields.io/npm/v/eslint-rule-extender.svg?style=flat-square)](https://www.npmjs.com/package/eslint-rule-extender/)\n[![node](https://img.shields.io/node/v/eslint-rule-extender.svg?style=flat-square)](https://nodejs.org/en/)\n\nA utility to extend existing ESLint rules.\n\n## Installation\n\n```sh\nnpm install eslint-rule-extender\n```\n\nor\n\n```sh\nyarn add eslint-rule-extender\n```\n\n## Usage\n\nThe default export is a function that takes two arguments and returns the modified rule.\n\n### API\n\n```ts\nruleExtender(originalRule: ESLintRule, options: Object) => ESLintRule;\n```\n\n- `originalRule` - The original rule to extend\n- options - An object with the desired overrides (options can be viewed [below](#options))\n\n### Example Usage\n\n```js\nconst ruleExtender = require('eslint-rule-extender');\nconst { originalRule } = require('eslint-plugin-example');\n\nconst extendedRule = ruleExtender(originalRule, options);\n\nmodule.exports = {\n  extendedRule,\n};\n```\n\n## Options\n\n### `metaOverrides`\n\nOverrides for the original rule's `meta` property. The properties of the `meta` object can be found [here](https://eslint.org/docs/developer-guide/working-with-rules#rule-basics).Options\n\n```js\nconst extendedRule = ruleExtender(originalRule, {\n  metaOverrides: {\n    type: 'suggestion',\n    fixable: false,\n  },\n});\n```\n\n### `createAdditionalVisitors`\n\nA function that has the same signature as ESLint rules' `create` method. It is passed the [`context`](https://eslint.org/docs/developer-guide/working-with-rules#the-context-object) object and should return a object of visitor callbacks. See [the official ESLint docs](https://eslint.org/docs/developer-guide/working-with-rules#rule-basics) for more details!\n\n### Example Usage\n\n```js\nconst extendedRule = ruleExtender(originalRule, {\n  createAdditionalVisitors(context) {\n    return {\n      ArrowFunctionExpression(node) {\n        context.report({ node, messageId: 'anAdditionalSuggestion' });\n      },\n    };\n  },\n});\n```\n\n### `reportOverrides`\n\nA function that is called with the report metadata of the original rule's [`context.report()`](https://eslint.org/docs/developer-guide/working-with-rules#contextreport) calls. The return value of this function is a trinary with the following behavior:\n\n- `true`: report with original metadata (unchanged)\n- `false`: do not report\n- modified report metadata object: report with this metadata instead\n\n### Example Usage\n\n```js\nconst extendedRule = ruleExtender(originalRule, {\n  reportOverrides(meta) {\n    return meta.node.type !== 'ThisExpression';\n  },\n});\n```\n\n## Putting It All Together\n\n```js\nconst ruleExtender = require('eslint-rule-extender');\nconst { originalRule } = require('eslint-plugin-example');\n\nconst extendedRule = ruleExtender(originalRule, {\n  metaOverrides: {\n    type: 'suggestion',\n    fixable: false,\n  },\n  createAdditionalVisitors(context) {\n    return {\n      ArrowFunctionExpression(node) {\n        context.report({ node, messageId: 'anAdditionalSuggestion' });\n      },\n    };\n  },\n  reportOverrides(meta) {\n    return meta.node.type !== 'ThisExpression';\n  },\n});\n\nmodule.exports = {\n  extendedRule,\n};\n```\n\n## Prior art\n\n- [eslint-rule-composer](https://github.com/not-an-aardvark/eslint-rule-composer)\n","readmeFilename":"README.md"}