diff --git a/src/lexers/javascript-lexer.js b/src/lexers/javascript-lexer.js index 907d8e09..caac5bc5 100644 --- a/src/lexers/javascript-lexer.js +++ b/src/lexers/javascript-lexer.js @@ -199,7 +199,7 @@ export default class JavascriptLexer extends BaseLexer { optionsArgument.kind === ts.SyntaxKind.ObjectLiteralExpression ) { const keyPrefixNode = optionsArgument.properties.find( - (p) => p.name.escapedText === 'keyPrefix' + (p) => p.name?.escapedText === 'keyPrefix' ) if (keyPrefixNode != null) { this.keyPrefix = keyPrefixNode.initializer.text diff --git a/test/lexers/javascript-lexer.test.js b/test/lexers/javascript-lexer.test.js index 2fe09e1f..67cf1e3c 100644 --- a/test/lexers/javascript-lexer.test.js +++ b/test/lexers/javascript-lexer.test.js @@ -274,6 +274,15 @@ describe('JavascriptLexer', () => { ]) }) + it('extracts namespace with spread syntax in useTranslation options', () => { + const Lexer = new JavascriptLexer() + const content = + 'const options = {}; const {t} = useTranslation("foo", {...options}); t("bar");' + assert.deepEqual(Lexer.extract(content), [ + { namespace: 'foo', key: 'bar' }, + ]) + }) + it('extracts namespace with a custom hook', () => { const Lexer = new JavascriptLexer({ namespaceFunctions: ['useCustomTranslationHook'],