@@ -129,24 +129,35 @@ function findStartOfLineWithComments(sourceCode, node) {
129129 return result ;
130130}
131131
132- function isPlainRequireModule ( node ) {
132+ function isRequireExpression ( expr ) {
133+ return expr != null &&
134+ expr . type === 'CallExpression' &&
135+ expr . callee != null &&
136+ expr . callee . name === 'require' &&
137+ expr . arguments != null &&
138+ expr . arguments . length === 1 &&
139+ expr . arguments [ 0 ] . type === 'Literal' ;
140+ }
141+
142+ function isSupportedRequireModule ( node ) {
133143 if ( node . type !== 'VariableDeclaration' ) {
134144 return false ;
135145 }
136146 if ( node . declarations . length !== 1 ) {
137147 return false ;
138148 }
139149 const decl = node . declarations [ 0 ] ;
140- const result = decl . id &&
150+ const isPlainRequire = decl . id &&
151+ ( decl . id . type === 'Identifier' || decl . id . type === 'ObjectPattern' ) &&
152+ isRequireExpression ( decl . init ) ;
153+ const isRequireWithMemberExpression = decl . id &&
141154 ( decl . id . type === 'Identifier' || decl . id . type === 'ObjectPattern' ) &&
142155 decl . init != null &&
143156 decl . init . type === 'CallExpression' &&
144157 decl . init . callee != null &&
145- decl . init . callee . name === 'require' &&
146- decl . init . arguments != null &&
147- decl . init . arguments . length === 1 &&
148- decl . init . arguments [ 0 ] . type === 'Literal' ;
149- return result ;
158+ decl . init . callee . type === 'MemberExpression' &&
159+ isRequireExpression ( decl . init . callee . object ) ;
160+ return isPlainRequire || isRequireWithMemberExpression ;
150161}
151162
152163function isPlainImportModule ( node ) {
@@ -158,7 +169,7 @@ function isPlainImportEquals(node) {
158169}
159170
160171function canCrossNodeWhileReorder ( node ) {
161- return isPlainRequireModule ( node ) || isPlainImportModule ( node ) || isPlainImportEquals ( node ) ;
172+ return isSupportedRequireModule ( node ) || isPlainImportModule ( node ) || isPlainImportEquals ( node ) ;
162173}
163174
164175function canReorderItems ( firstNode , secondNode ) {
@@ -276,7 +287,7 @@ function getSorter(ascending) {
276287 result = a < b ? - 1 : 1 ;
277288 }
278289 }
279-
290+
280291 return result * multiplier ;
281292 } ;
282293}
0 commit comments