diff --git a/lib/util/stylesheet.js b/lib/util/stylesheet.js index 21bf520..81697bd 100644 --- a/lib/util/stylesheet.js +++ b/lib/util/stylesheet.js @@ -95,15 +95,30 @@ const getSourceCode = node => currentContent const getStyleSheetObjectNames = settings => settings['react-native/style-sheet-object-names'] || ['StyleSheet']; +const getNamespaces = settings => + settings['react-native/react-native-namespaces'] || ['RN']; + const astHelpers = { - containsStyleSheetObject: function (node, objectNames) { + + containsStyleSheetObject: function (node, namespaces, objectNames) { return Boolean( node && - node.init && - node.init.callee && - node.init.callee.object && - node.init.callee.object.name && - objectNames.includes(node.init.callee.object.name) + node.init && + node.init.callee && + ((node.init.callee.object && + node.init.callee.object.name && + objectNames.includes(node.init.callee.object.name)) || + (node.init.callee.type && + node.init.callee.type === 'MemberExpression' && + node.init.callee.object && + node.init.callee.object.type && + node.init.callee.object.type === 'MemberExpression' && + node.init.callee.object.object && + node.init.callee.object.object.name && + namespaces.includes(node.init.callee.object.object.name) && + node.init.callee.object.property && + node.init.callee.object.property.name && + objectNames.includes(node.init.callee.object.property.name))) ); }, @@ -118,10 +133,12 @@ const astHelpers = { }, isStyleSheetDeclaration: function (node, settings) { + + const namespaces = getNamespaces(settings); const objectNames = getStyleSheetObjectNames(settings); return Boolean( - astHelpers.containsStyleSheetObject(node, objectNames) && + astHelpers.containsStyleSheetObject(node, namespaces, objectNames) && astHelpers.containsCreateCall(node) ); },