12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * @fileoverview Prevent React to be marked as unused
- * @author Glen Mailer
- */
- 'use strict';
- const pragmaUtil = require('../util/pragma');
- const docsUrl = require('../util/docsUrl');
- const markVariableAsUsed = require('../util/eslint').markVariableAsUsed;
- // ------------------------------------------------------------------------------
- // Rule Definition
- // ------------------------------------------------------------------------------
- /** @type {import('eslint').Rule.RuleModule} */
- module.exports = {
- // eslint-disable-next-line eslint-plugin/prefer-message-ids -- https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/292
- meta: {
- docs: {
- description: 'Disallow React to be incorrectly marked as unused',
- category: 'Best Practices',
- recommended: true,
- url: docsUrl('jsx-uses-react'),
- },
- schema: [],
- },
- create(context) {
- const pragma = pragmaUtil.getFromContext(context);
- const fragment = pragmaUtil.getFragmentFromContext(context);
- /**
- * @param {ASTNode} node
- * @returns {void}
- */
- function handleOpeningElement(node) {
- markVariableAsUsed(pragma, node, context);
- }
- // --------------------------------------------------------------------------
- // Public
- // --------------------------------------------------------------------------
- return {
- JSXOpeningElement: handleOpeningElement,
- JSXOpeningFragment: handleOpeningElement,
- JSXFragment(node) {
- markVariableAsUsed(fragment, node, context);
- },
- };
- },
- };
|