/home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/rules
NameSizeModeActions
boolean-prop-naming.d.ts1260666editdlrm
boolean-prop-naming.d.ts.map1610666editdlrm
boolean-prop-naming.js132860666editdlrm
button-has-type.d.ts1220666editdlrm
button-has-type.d.ts.map1530666editdlrm
button-has-type.js45280666editdlrm
checked-requires-onchange-or-readonly.d.ts1440666editdlrm
checked-requires-onchange-or-readonly.d.ts.map1970666editdlrm
checked-requires-onchange-or-readonly.js35470666editdlrm
default-props-match-prop-types.d.ts1370666editdlrm
default-props-match-prop-types.d.ts.map1830666editdlrm
default-props-match-prop-types.js34680666editdlrm
destructuring-assignment.d.ts1310666editdlrm
destructuring-assignment.d.ts.map1710666editdlrm
destructuring-assignment.js98880666editdlrm
display-name.d.ts1190666editdlrm
display-name.d.ts.map1470666editdlrm
display-name.js91300666editdlrm
forbid-component-props.d.ts1290666editdlrm
forbid-component-props.d.ts.map1670666editdlrm
forbid-component-props.js77690666editdlrm
forbid-dom-props.d.ts1230666editdlrm
forbid-dom-props.d.ts.map1550666editdlrm
forbid-dom-props.js31900666editdlrm
forbid-elements.d.ts1220666editdlrm
forbid-elements.d.ts.map1530666editdlrm
forbid-elements.js32000666editdlrm
forbid-foreign-prop-types.d.ts1320666editdlrm
forbid-foreign-prop-types.d.ts.map1720666editdlrm
forbid-foreign-prop-types.js37140666editdlrm
forbid-prop-types.d.ts1240666editdlrm
forbid-prop-types.d.ts.map1570666editdlrm
forbid-prop-types.js88590666editdlrm
forward-ref-uses-ref.d.ts1270666editdlrm
forward-ref-uses-ref.d.ts.map1630666editdlrm
forward-ref-uses-ref.js31330666editdlrm
function-component-definition.d.ts1360666editdlrm
function-component-definition.d.ts.map1810666editdlrm
function-component-definition.js84130666editdlrm
hook-use-state.d.ts1210666editdlrm
hook-use-state.d.ts.map1510666editdlrm
hook-use-state.js73650666editdlrm
iframe-missing-sandbox.d.ts1290666editdlrm
iframe-missing-sandbox.d.ts.map1670666editdlrm
iframe-missing-sandbox.js40220666editdlrm
index.d.ts64790666editdlrm
index.d.ts.map2240666editdlrm
index.js63370666editdlrm
jsx-boolean-value.d.ts1240666editdlrm
jsx-boolean-value.d.ts.map1570666editdlrm
jsx-boolean-value.js45150666editdlrm
jsx-child-element-spacing.d.ts1320666editdlrm
jsx-child-element-spacing.d.ts.map1730666editdlrm
jsx-child-element-spacing.js29150666editdlrm
jsx-closing-bracket-location.d.ts1350666editdlrm
jsx-closing-bracket-location.d.ts.map1790666editdlrm
jsx-closing-bracket-location.js110060666editdlrm
jsx-closing-tag-location.d.ts1310666editdlrm
jsx-closing-tag-location.d.ts.map1710666editdlrm
jsx-closing-tag-location.js37660666editdlrm
jsx-curly-brace-presence.d.ts1310666editdlrm
jsx-curly-brace-presence.d.ts.map1710666editdlrm
jsx-curly-brace-presence.js138900666editdlrm
jsx-curly-newline.d.ts1240666editdlrm
jsx-curly-newline.d.ts.map1570666editdlrm
jsx-curly-newline.js61280666editdlrm
jsx-curly-spacing.d.ts1240666editdlrm
jsx-curly-spacing.d.ts.map1570666editdlrm
jsx-curly-spacing.js147950666editdlrm
jsx-equals-spacing.d.ts1250666editdlrm
jsx-equals-spacing.d.ts.map1590666editdlrm
jsx-equals-spacing.js36210666editdlrm
jsx-filename-extension.d.ts1290666editdlrm
jsx-filename-extension.d.ts.map1670666editdlrm
jsx-filename-extension.js32400666editdlrm
jsx-first-prop-new-line.d.ts1300666editdlrm
jsx-first-prop-new-line.d.ts.map1690666editdlrm
jsx-first-prop-new-line.js27340666editdlrm
jsx-fragments.d.ts1200666editdlrm
jsx-fragments.d.ts.map1490666editdlrm
jsx-fragments.js70430666editdlrm
jsx-handler-names.d.ts1240666editdlrm
jsx-handler-names.d.ts.map1570666editdlrm
jsx-handler-names.js63470666editdlrm
jsx-indent-props.d.ts1230666editdlrm
jsx-indent-props.d.ts.map1550666editdlrm
jsx-indent-props.js65790666editdlrm
jsx-indent.d.ts1170666editdlrm
jsx-indent.d.ts.map1430666editdlrm
jsx-indent.js146810666editdlrm
jsx-key.d.ts1140666editdlrm
jsx-key.d.ts.map1370666editdlrm
jsx-key.js101720666editdlrm
jsx-max-depth.d.ts1200666editdlrm
jsx-max-depth.d.ts.map1490666editdlrm
jsx-max-depth.js41330666editdlrm
jsx-max-props-per-line.d.ts1290666editdlrm
jsx-max-props-per-line.d.ts.map1670666editdlrm
jsx-max-props-per-line.js41620666editdlrm
jsx-newline.d.ts1180666editdlrm
jsx-newline.d.ts.map1450666editdlrm
jsx-newline.js50440666editdlrm
jsx-no-bind.d.ts1180666editdlrm
jsx-no-bind.d.ts.map1450666editdlrm
jsx-no-bind.js61720666editdlrm
jsx-no-comment-textnodes.d.ts1310666editdlrm
jsx-no-comment-textnodes.d.ts.map1710666editdlrm
jsx-no-comment-textnodes.js18470666editdlrm
jsx-no-constructed-context-values.d.ts1400666editdlrm
jsx-no-constructed-context-values.d.ts.map1890666editdlrm
jsx-no-constructed-context-values.js87780666editdlrm
jsx-no-duplicate-props.d.ts1290666editdlrm
jsx-no-duplicate-props.d.ts.map1670666editdlrm
jsx-no-duplicate-props.js16970666editdlrm
jsx-no-leaked-render.d.ts1270666editdlrm
jsx-no-leaked-render.d.ts.map1630666editdlrm
jsx-no-leaked-render.js76180666editdlrm
jsx-no-literals.d.ts9260666editdlrm
jsx-no-literals.d.ts.map1280666editdlrm
jsx-no-literals.js169120666editdlrm
jsx-no-script-url.d.ts1240666editdlrm
jsx-no-script-url.d.ts.map1570666editdlrm
jsx-no-script-url.js41560666editdlrm
jsx-no-target-blank.d.ts1260666editdlrm
jsx-no-target-blank.d.ts.map1610666editdlrm
jsx-no-target-blank.js110180666editdlrm
jsx-no-undef.d.ts1190666editdlrm
jsx-no-undef.d.ts.map1470666editdlrm
jsx-no-undef.js31570666editdlrm
jsx-no-useless-fragment.d.ts1300666editdlrm
jsx-no-useless-fragment.d.ts.map1690666editdlrm
jsx-no-useless-fragment.js70180666editdlrm
jsx-one-expression-per-line.d.ts1340666editdlrm
jsx-one-expression-per-line.d.ts.map1770666editdlrm
jsx-one-expression-per-line.js79490666editdlrm
jsx-pascal-case.d.ts1220666editdlrm
jsx-pascal-case.d.ts.map1530666editdlrm
jsx-pascal-case.js45940666editdlrm
jsx-props-no-multi-spaces.d.ts1320666editdlrm
jsx-props-no-multi-spaces.d.ts.map1730666editdlrm
jsx-props-no-multi-spaces.js39000666editdlrm
jsx-props-no-spread-multi.d.ts1320666editdlrm
jsx-props-no-spread-multi.d.ts.map1730666editdlrm
jsx-props-no-spread-multi.js15270666editdlrm
jsx-props-no-spreading.d.ts1290666editdlrm
jsx-props-no-spreading.d.ts.map1670666editdlrm
jsx-props-no-spreading.js41740666editdlrm
jsx-sort-default-props.d.ts1290666editdlrm
jsx-sort-default-props.d.ts.map1670666editdlrm
jsx-sort-default-props.js56350666editdlrm
jsx-sort-props.d.ts1210666editdlrm
jsx-sort-props.d.ts.map1510666editdlrm
jsx-sort-props.js182410666editdlrm
jsx-space-before-closing.d.ts1310666editdlrm
jsx-space-before-closing.d.ts.map1710666editdlrm
jsx-space-before-closing.js30490666editdlrm
jsx-tag-spacing.d.ts1220666editdlrm
jsx-tag-spacing.d.ts.map1530666editdlrm
jsx-tag-spacing.js106770666editdlrm
jsx-uses-react.d.ts1210666editdlrm
jsx-uses-react.d.ts.map1500666editdlrm
jsx-uses-react.js15720666editdlrm
jsx-uses-vars.d.ts1200666editdlrm
jsx-uses-vars.d.ts.map1490666editdlrm
jsx-uses-vars.js16550666editdlrm
jsx-wrap-multilines.d.ts1260666editdlrm
jsx-wrap-multilines.d.ts.map1610666editdlrm
jsx-wrap-multilines.js84420666editdlrm
no-access-state-in-setstate.d.ts1340666editdlrm
no-access-state-in-setstate.d.ts.map1770666editdlrm
no-access-state-in-setstate.js67900666editdlrm
no-adjacent-inline-elements.d.ts1340666editdlrm
no-adjacent-inline-elements.d.ts.map1770666editdlrm
no-adjacent-inline-elements.js31390666editdlrm
no-array-index-key.d.ts1250666editdlrm
no-array-index-key.d.ts.map1590666editdlrm
no-array-index-key.js75090666editdlrm
no-arrow-function-lifecycle.d.ts1340666editdlrm
no-arrow-function-lifecycle.d.ts.map1770666editdlrm
no-arrow-function-lifecycle.js51630666editdlrm
no-children-prop.d.ts1230666editdlrm
no-children-prop.d.ts.map1550666editdlrm
no-children-prop.js39680666editdlrm
no-danger-with-children.d.ts1300666editdlrm
no-danger-with-children.d.ts.map1690666editdlrm
no-danger-with-children.js51870666editdlrm
no-danger.d.ts1160666editdlrm
no-danger.d.ts.map1410666editdlrm
no-danger.js26950666editdlrm
no-deprecated.d.ts1200666editdlrm
no-deprecated.d.ts.map1490666editdlrm
no-deprecated.js99610666editdlrm
no-did-mount-set-state.d.ts1290666editdlrm
no-did-mount-set-state.d.ts.map1660666editdlrm
no-did-mount-set-state.js3080666editdlrm
no-did-update-set-state.d.ts1300666editdlrm
no-did-update-set-state.d.ts.map1680666editdlrm
no-did-update-set-state.js3100666editdlrm
no-direct-mutation-state.d.ts1310666editdlrm
no-direct-mutation-state.d.ts.map1710666editdlrm
no-direct-mutation-state.js45910666editdlrm
no-find-dom-node.d.ts1230666editdlrm
no-find-dom-node.d.ts.map1550666editdlrm
no-find-dom-node.js13890666editdlrm
no-invalid-html-attribute.d.ts1320666editdlrm
no-invalid-html-attribute.d.ts.map1740666editdlrm
no-invalid-html-attribute.js166010666editdlrm
no-is-mounted.d.ts1200666editdlrm
no-is-mounted.d.ts.map1490666editdlrm
no-is-mounted.js15220666editdlrm
no-multi-comp.d.ts1200666editdlrm
no-multi-comp.d.ts.map1490666editdlrm
no-multi-comp.js20660666editdlrm
no-namespace.d.ts1190666editdlrm
no-namespace.d.ts.map1470666editdlrm
no-namespace.js17440666editdlrm
no-object-type-as-default-prop.d.ts1370666editdlrm
no-object-type-as-default-prop.d.ts.map1830666editdlrm
no-object-type-as-default-prop.js32850666editdlrm
no-redundant-should-component-update.d.ts1430666editdlrm
no-redundant-should-component-update.d.ts.map1950666editdlrm
no-redundant-should-component-update.js24370666editdlrm
no-render-return-value.d.ts1290666editdlrm
no-render-return-value.d.ts.map1670666editdlrm
no-render-return-value.js23080666editdlrm
no-set-state.d.ts1190666editdlrm
no-set-state.d.ts.map1470666editdlrm
no-set-state.js23740666editdlrm
no-string-refs.d.ts1210666editdlrm
no-string-refs.d.ts.map1510666editdlrm
no-string-refs.js37700666editdlrm
no-this-in-sfc.d.ts1210666editdlrm
no-this-in-sfc.d.ts.map1510666editdlrm
no-this-in-sfc.js13260666editdlrm
no-typos.d.ts1150666editdlrm
no-typos.d.ts.map1390666editdlrm
no-typos.js89300666editdlrm
no-unescaped-entities.d.ts1280666editdlrm
no-unescaped-entities.d.ts.map1650666editdlrm
no-unescaped-entities.js47730666editdlrm
no-unknown-property.d.ts1260666editdlrm
no-unknown-property.d.ts.map1620666editdlrm
no-unknown-property.js281490666editdlrm
no-unsafe.d.ts1160666editdlrm
no-unsafe.d.ts.map1410666editdlrm
no-unsafe.js44420666editdlrm
no-unstable-nested-components.d.ts1360666editdlrm
no-unstable-nested-components.d.ts.map1810666editdlrm
no-unstable-nested-components.js155170666editdlrm
no-unused-class-component-methods.d.ts1400666editdlrm
no-unused-class-component-methods.d.ts.map1890666editdlrm
no-unused-class-component-methods.js67950666editdlrm
no-unused-prop-types.d.ts1270666editdlrm
no-unused-prop-types.d.ts.map1630666editdlrm
no-unused-prop-types.js48970666editdlrm
no-unused-state.d.ts1220666editdlrm
no-unused-state.d.ts.map1530666editdlrm
no-unused-state.js161590666editdlrm
no-will-update-set-state.d.ts1310666editdlrm
no-will-update-set-state.d.ts.map1700666editdlrm
no-will-update-set-state.js4410666editdlrm
prefer-es6-class.d.ts1230666editdlrm
prefer-es6-class.d.ts.map1550666editdlrm
prefer-es6-class.js15720666editdlrm
prefer-exact-props.d.ts1250666editdlrm
prefer-exact-props.d.ts.map1590666editdlrm
prefer-exact-props.js50450666editdlrm
prefer-read-only-props.d.ts1290666editdlrm
prefer-read-only-props.d.ts.map1670666editdlrm
prefer-read-only-props.js30690666editdlrm
prefer-stateless-function.d.ts1320666editdlrm
prefer-stateless-function.d.ts.map1730666editdlrm
prefer-stateless-function.js129520666editdlrm
prop-types.d.ts1170666editdlrm
prop-types.d.ts.map1430666editdlrm
prop-types.js74170666editdlrm
react-in-jsx-scope.d.ts1250666editdlrm
react-in-jsx-scope.d.ts.map1590666editdlrm
react-in-jsx-scope.js13280666editdlrm
require-default-props.d.ts1280666editdlrm
require-default-props.d.ts.map1650666editdlrm
require-default-props.js73610666editdlrm
require-optimization.d.ts1270666editdlrm
require-optimization.d.ts.map1630666editdlrm
require-optimization.js70760666editdlrm
require-render-return.d.ts1280666editdlrm
require-render-return.d.ts.map1650666editdlrm
require-render-return.js32370666editdlrm
self-closing-comp.d.ts1240666editdlrm
self-closing-comp.d.ts.map1570666editdlrm
self-closing-comp.js29300666editdlrm
sort-comp.d.ts1160666editdlrm
sort-comp.d.ts.map1410666editdlrm
sort-comp.js137330666editdlrm
sort-default-props.d.ts1250666editdlrm
sort-default-props.d.ts.map1590666editdlrm
sort-default-props.js52330666editdlrm
sort-prop-types.d.ts1220666editdlrm
sort-prop-types.d.ts.map1530666editdlrm
sort-prop-types.js101550666editdlrm
state-in-constructor.d.ts1270666editdlrm
state-in-constructor.d.ts.map1630666editdlrm
state-in-constructor.js19210666editdlrm
static-property-placement.d.ts1320666editdlrm
static-property-placement.d.ts.map1730666editdlrm
static-property-placement.js67340666editdlrm
style-prop-object.d.ts1240666editdlrm
style-prop-object.d.ts.map1570666editdlrm
style-prop-object.js41340666editdlrm
void-dom-elements-no-children.d.ts1360666editdlrm
void-dom-elements-no-children.d.ts.map1810666editdlrm
void-dom-elements-no-children.js41330666editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/rules/jsx-key.js (10172B)
/** * @fileoverview Report missing `key` props in iterators/collection literals. * @author Ben Mosher */ 'use strict'; const hasProp = require('jsx-ast-utils/hasProp'); const propName = require('jsx-ast-utils/propName'); const values = require('object.values'); const docsUrl = require('../util/docsUrl'); const pragmaUtil = require('../util/pragma'); const report = require('../util/report'); const astUtil = require('../util/ast'); const getText = require('../util/eslint').getText; // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ const defaultOptions = { checkFragmentShorthand: false, checkKeyMustBeforeSpread: false, warnOnDuplicates: false, }; const messages = { missingIterKey: 'Missing "key" prop for element in iterator', missingIterKeyUsePrag: 'Missing "key" prop for element in iterator. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead', missingArrayKey: 'Missing "key" prop for element in array', missingArrayKeyUsePrag: 'Missing "key" prop for element in array. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead', keyBeforeSpread: '`key` prop must be placed before any `{...spread}, to avoid conflicting with React’s new JSX transform: https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html`', nonUniqueKeys: '`key` prop must be unique', }; /** @type {import('eslint').Rule.RuleModule} */ module.exports = { meta: { docs: { description: 'Disallow missing `key` props in iterators/collection literals', category: 'Possible Errors', recommended: true, url: docsUrl('jsx-key'), }, messages, schema: [{ type: 'object', properties: { checkFragmentShorthand: { type: 'boolean', default: defaultOptions.checkFragmentShorthand, }, checkKeyMustBeforeSpread: { type: 'boolean', default: defaultOptions.checkKeyMustBeforeSpread, }, warnOnDuplicates: { type: 'boolean', default: defaultOptions.warnOnDuplicates, }, }, additionalProperties: false, }], }, create(context) { const options = Object.assign({}, defaultOptions, context.options[0]); const checkFragmentShorthand = options.checkFragmentShorthand; const checkKeyMustBeforeSpread = options.checkKeyMustBeforeSpread; const warnOnDuplicates = options.warnOnDuplicates; const reactPragma = pragmaUtil.getFromContext(context); const fragmentPragma = pragmaUtil.getFragmentFromContext(context); function isKeyAfterSpread(attributes) { let hasFoundSpread = false; return attributes.some((attribute) => { if (attribute.type === 'JSXSpreadAttribute') { hasFoundSpread = true; return false; } if (attribute.type !== 'JSXAttribute') { return false; } return hasFoundSpread && propName(attribute) === 'key'; }); } function checkIteratorElement(node) { if (node.type === 'JSXElement') { if (!hasProp(node.openingElement.attributes, 'key')) { report(context, messages.missingIterKey, 'missingIterKey', { node }); } else { const attrs = node.openingElement.attributes; if (checkKeyMustBeforeSpread && isKeyAfterSpread(attrs)) { report(context, messages.keyBeforeSpread, 'keyBeforeSpread', { node }); } } } else if (checkFragmentShorthand && node.type === 'JSXFragment') { report(context, messages.missingIterKeyUsePrag, 'missingIterKeyUsePrag', { node, data: { reactPrag: reactPragma, fragPrag: fragmentPragma, }, }); } } function getReturnStatements(node) { const returnStatements = arguments[1] || []; if (node.type === 'IfStatement') { if (node.consequent) { getReturnStatements(node.consequent, returnStatements); } if (node.alternate) { getReturnStatements(node.alternate, returnStatements); } } else if (node.type === 'ReturnStatement') { returnStatements.push(node); } else if (Array.isArray(node.body)) { node.body.forEach((item) => { if (item.type === 'IfStatement') { getReturnStatements(item, returnStatements); } if (item.type === 'ReturnStatement') { returnStatements.push(item); } }); } return returnStatements; } /** * Checks if the given node is a function expression or arrow function, * and checks if there is a missing key prop in return statement's arguments * @param {ASTNode} node */ function checkFunctionsBlockStatement(node) { if (astUtil.isFunctionLikeExpression(node)) { if (node.body.type === 'BlockStatement') { getReturnStatements(node.body) .filter((returnStatement) => returnStatement && returnStatement.argument) .forEach((returnStatement) => { checkIteratorElement(returnStatement.argument); }); } } } /** * Checks if the given node is an arrow function that has an JSX Element or JSX Fragment in its body, * and the JSX is missing a key prop * @param {ASTNode} node */ function checkArrowFunctionWithJSX(node) { const isArrFn = node && node.type === 'ArrowFunctionExpression'; const shouldCheckNode = (n) => n && (n.type === 'JSXElement' || n.type === 'JSXFragment'); if (isArrFn && shouldCheckNode(node.body)) { checkIteratorElement(node.body); } if (node.body.type === 'ConditionalExpression') { if (shouldCheckNode(node.body.consequent)) { checkIteratorElement(node.body.consequent); } if (shouldCheckNode(node.body.alternate)) { checkIteratorElement(node.body.alternate); } } else if (node.body.type === 'LogicalExpression' && shouldCheckNode(node.body.right)) { checkIteratorElement(node.body.right); } } const childrenToArraySelector = `:matches( CallExpression [callee.object.object.name=${reactPragma}] [callee.object.property.name=Children] [callee.property.name=toArray], CallExpression [callee.object.name=Children] [callee.property.name=toArray] )`.replace(/\s/g, ''); let isWithinChildrenToArray = false; const seen = new WeakSet(); return { [childrenToArraySelector]() { isWithinChildrenToArray = true; }, [`${childrenToArraySelector}:exit`]() { isWithinChildrenToArray = false; }, 'ArrayExpression, JSXElement > JSXElement'(node) { if (isWithinChildrenToArray) { return; } const jsx = (node.type === 'ArrayExpression' ? node.elements : node.parent.children).filter((x) => x && x.type === 'JSXElement'); if (jsx.length === 0) { return; } const map = {}; jsx.forEach((element) => { const attrs = element.openingElement.attributes; const keys = attrs.filter((x) => x.name && x.name.name === 'key'); if (keys.length === 0) { if (node.type === 'ArrayExpression') { report(context, messages.missingArrayKey, 'missingArrayKey', { node: element, }); } } else { keys.forEach((attr) => { const value = getText(context, attr.value); if (!map[value]) { map[value] = []; } map[value].push(attr); if (checkKeyMustBeforeSpread && isKeyAfterSpread(attrs)) { report(context, messages.keyBeforeSpread, 'keyBeforeSpread', { node: node.type === 'ArrayExpression' ? node : node.parent, }); } }); } }); if (warnOnDuplicates) { values(map).filter((v) => v.length > 1).forEach((v) => { v.forEach((n) => { if (!seen.has(n)) { seen.add(n); report(context, messages.nonUniqueKeys, 'nonUniqueKeys', { node: n, }); } }); }); } }, JSXFragment(node) { if (!checkFragmentShorthand || isWithinChildrenToArray) { return; } if (node.parent.type === 'ArrayExpression') { report(context, messages.missingArrayKeyUsePrag, 'missingArrayKeyUsePrag', { node, data: { reactPrag: reactPragma, fragPrag: fragmentPragma, }, }); } }, // Array.prototype.map // eslint-disable-next-line no-multi-str 'CallExpression[callee.type="MemberExpression"][callee.property.name="map"],\ CallExpression[callee.type="OptionalMemberExpression"][callee.property.name="map"],\ OptionalCallExpression[callee.type="MemberExpression"][callee.property.name="map"],\ OptionalCallExpression[callee.type="OptionalMemberExpression"][callee.property.name="map"]'(node) { if (isWithinChildrenToArray) { return; } const fn = node.arguments.length > 0 && node.arguments[0]; if (!fn || !astUtil.isFunctionLikeExpression(fn)) { return; } checkArrowFunctionWithJSX(fn); checkFunctionsBlockStatement(fn); }, // Array.from 'CallExpression[callee.type="MemberExpression"][callee.property.name="from"]'(node) { if (isWithinChildrenToArray) { return; } const fn = node.arguments.length > 1 && node.arguments[1]; if (!astUtil.isFunctionLikeExpression(fn)) { return; } checkArrowFunctionWithJSX(fn); checkFunctionsBlockStatement(fn); }, }; }, };