From 8785c169c25b09b33c95655bf508cf46263bc53f Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 25 Sep 2021 22:36:51 -0700 Subject: [PATCH] [Fix] `no-namespace`: avoid crash on non-string createElement values Fixes #3085 --- CHANGELOG.md | 2 ++ lib/rules/no-namespace.js | 4 ++-- tests/lib/rules/no-namespace.js | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe052d4475..6f62701bbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,12 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel ### Fixed * [`no-namespace`]: fix crash on non-string React.createElement name ([#3082] @ljharb) +* [`no-namespace`]: avoid crash on non-string createElement values ([#3085] @ljharb) ### Changed * [Docs] [`jsx-max-props-per-line`]: fix options example ([#3083] @MrRaiter) +[#3085]: https://github.com/yannickcr/eslint-plugin-react/issue/3085 [#3083]: https://github.com/yannickcr/eslint-plugin-react/pull/3083 [#3082]: https://github.com/yannickcr/eslint-plugin-react/pull/3082 diff --git a/lib/rules/no-namespace.js b/lib/rules/no-namespace.js index 9b86427001..dfd0a0be8c 100644 --- a/lib/rules/no-namespace.js +++ b/lib/rules/no-namespace.js @@ -40,7 +40,7 @@ module.exports = { CallExpression(node) { if (isCreateElement(node, context) && node.arguments.length > 0 && node.arguments[0].type === 'Literal') { const name = node.arguments[0].value; - if (!name || name.indexOf(':') === -1) return undefined; + if (typeof name !== 'string' || name.indexOf(':') === -1) return undefined; report(context, messages.noNamespace, 'noNamespace', { node, data: { @@ -51,7 +51,7 @@ module.exports = { }, JSXOpeningElement(node) { const name = elementType(node); - if (!name || name.indexOf(':') === -1) return undefined; + if (typeof name !== 'string' || name.indexOf(':') === -1) return undefined; report(context, messages.noNamespace, 'noNamespace', { node, data: { diff --git a/tests/lib/rules/no-namespace.js b/tests/lib/rules/no-namespace.js index bdad6b7888..fa381ccfe4 100644 --- a/tests/lib/rules/no-namespace.js +++ b/tests/lib/rules/no-namespace.js @@ -76,6 +76,10 @@ ruleTester.run('no-namespace', rule, { code: 'React.createElement("Object.TestComponent")' }, { code: 'React.createElement(null)' + }, { + code: 'React.createElement(true)' + }, { + code: 'React.createElement({})' }], invalid: [{