Files
react-native-devtools-frontend/node_modules/eslint-rule-extender
Tim van der Lippe 6d109a9d45 Update Mocha to 8.3.0
This also adds Python-2.0 to the list of accepted licenses.

Lastly, it fixes a bug where the package.json files were incorrectly
reordered. For the `exports` of a particular package, the order that
the entrypoints are defined in is crucial. Therefore, we should not
alter the order of entrypoints and instead maintain the originally
defined ordering. We can use an `OrderedDict` to ensure that Python
always loads the JSON files in the same order.

DISABLE_THIRD_PARTY_CHECK=NPM update
R=jacktfranklin@chromium.org

Bug: none
Change-Id: I5a309782de6015edea6ba3b502aa0db1f008d973
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2692909
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
2021-02-17 12:08:49 +00:00
..
2021-02-17 12:08:49 +00:00

eslint-rule-extender

npm node

A utility to extend existing ESLint rules.

Installation

npm install eslint-rule-extender

or

yarn add eslint-rule-extender

Usage

The default export is a function that takes two arguments and returns the modified rule.

API

ruleExtender(originalRule: ESLintRule, options: Object) => ESLintRule;
  • originalRule - The original rule to extend
  • options - An object with the desired overrides (options can be viewed below)

Example Usage

const ruleExtender = require('eslint-rule-extender');
const { originalRule } = require('eslint-plugin-example');

const extendedRule = ruleExtender(originalRule, options);

module.exports = {
  extendedRule,
};

Options

metaOverrides

Overrides for the original rule's meta property. The properties of the meta object can be found here.Options

const extendedRule = ruleExtender(originalRule, {
  metaOverrides: {
    type: 'suggestion',
    fixable: false,
  },
});

createAdditionalVisitors

A function that has the same signature as ESLint rules' create method. It is passed the context object and should return a object of visitor callbacks. See the official ESLint docs for more details!

Example Usage

const extendedRule = ruleExtender(originalRule, {
  createAdditionalVisitors(context) {
    return {
      ArrowFunctionExpression(node) {
        context.report({ node, messageId: 'anAdditionalSuggestion' });
      },
    };
  },
});

reportOverrides

A function that is called with the report metadata of the original rule's context.report() calls. The return value of this function is a trinary with the following behavior:

  • true: report with original metadata (unchanged)
  • false: do not report
  • modified report metadata object: report with this metadata instead

Example Usage

const extendedRule = ruleExtender(originalRule, {
  reportOverrides(meta) {
    return meta.node.type !== 'ThisExpression';
  },
});

Putting It All Together

const ruleExtender = require('eslint-rule-extender');
const { originalRule } = require('eslint-plugin-example');

const extendedRule = ruleExtender(originalRule, {
  metaOverrides: {
    type: 'suggestion',
    fixable: false,
  },
  createAdditionalVisitors(context) {
    return {
      ArrowFunctionExpression(node) {
        context.report({ node, messageId: 'anAdditionalSuggestion' });
      },
    };
  },
  reportOverrides(meta) {
    return meta.node.type !== 'ThisExpression';
  },
});

module.exports = {
  extendedRule,
};

Prior art