From a95a76be0da4cd57a0adb9233c58220d0ef7daae Mon Sep 17 00:00:00 2001 From: Charlie Croom Date: Mon, 5 Aug 2024 17:03:57 -0400 Subject: [PATCH] fix JSX key attribute --- src/lexers/jsx-lexer.js | 2 +- test/lexers/jsx-lexer.test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lexers/jsx-lexer.js b/src/lexers/jsx-lexer.js index f4950af3..1025ba1a 100644 --- a/src/lexers/jsx-lexer.js +++ b/src/lexers/jsx-lexer.js @@ -15,7 +15,7 @@ export default class JsxLexer extends JavascriptLexer { 'i', 'p', ] - this.omitAttributes = [this.attr, 'ns', 'defaults'] + this.omitAttributes = [this.attr, 'ns', 'key', 'defaults'] this.transIdentityFunctionsToIgnore = options.transIdentityFunctionsToIgnore || [] } diff --git a/test/lexers/jsx-lexer.test.js b/test/lexers/jsx-lexer.test.js index 3269f130..b0e6b935 100644 --- a/test/lexers/jsx-lexer.test.js +++ b/test/lexers/jsx-lexer.test.js @@ -43,6 +43,16 @@ describe('JsxLexer', () => { done() }) + it('ignores the protected React key attribute when defined', (done) => { + const Lexer = new JsxLexer() + const content = + 'Yo' + assert.deepEqual(Lexer.extract(content), [ + { key: 'first', defaultValue: 'Yo', count: '{count}' }, + ]) + done() + }) + it('extracts default value from string literal `defaults` prop', (done) => { const Lexer = new JsxLexer() const content =