@@ -43,16 +43,43 @@ module.exports = {
43
43
const { deprecations, source} = context . options [ 0 ] ;
44
44
let localImportSpecifier ;
45
45
46
- function setLocalImportSpecifier ( node ) {
46
+ function setLocalImportSpecifierFromImport ( node ) {
47
47
localImportSpecifier = utils . getLocalImportSpecifier ( node , source , defaultImportName ) ;
48
48
}
49
49
50
+ function setLocalImportSpecifierFromRequire ( node ) {
51
+ if ( node . init && node . init . callee && node . init . callee . name === 'require' ) {
52
+ if ( node . id && node . id . properties ) {
53
+ _ . map ( node . id . properties , property => {
54
+ if ( property . key && property . key . name === defaultImportName ) {
55
+ if ( property . value && property . value . name ) {
56
+ localImportSpecifier = property . value . name ;
57
+ } else {
58
+ localImportSpecifier = property . key . name ;
59
+ }
60
+ }
61
+ } ) ;
62
+ }
63
+ }
64
+ }
65
+
50
66
function getAssetString ( node , pathString = '' ) {
51
67
if ( node ) {
52
68
if ( node . object ) {
53
- if ( node . property && node . property . name ) {
54
- pathString = ( pathString === '' ) ? `${ node . property . name } ` : `${ node . property . name } .${ pathString } ` ;
55
- return getAssetString ( node . object , pathString ) ;
69
+ if ( node . property ) {
70
+ let name ;
71
+ if ( node . property . type === 'Identifier' && node . property . name ) {
72
+ name = node . property . name ;
73
+ } else if ( node . property . type === 'Literal' && node . property . value ) {
74
+ name = node . property . value ;
75
+ } else if ( node . property . type === 'CallExpression' && node . property . callee && node . property . callee . name ) {
76
+ // TODO: ¯\_(ツ)_/¯
77
+ }
78
+
79
+ if ( name ) {
80
+ pathString = ( pathString === '' ) ? `${ name } ` : `${ name } .${ pathString } ` ;
81
+ return getAssetString ( node . object , pathString ) ;
82
+ }
56
83
}
57
84
} else if ( node . name === localImportSpecifier ) {
58
85
pathString = `${ node . name } .${ pathString } ` ;
@@ -79,11 +106,12 @@ module.exports = {
79
106
}
80
107
81
108
return {
82
- ImportDeclaration : node => ! localImportSpecifier && setLocalImportSpecifier ( node ) ,
109
+ ImportDeclaration : node => ! localImportSpecifier && setLocalImportSpecifierFromImport ( node ) ,
110
+ VariableDeclarator : node => ! localImportSpecifier && setLocalImportSpecifierFromRequire ( node ) ,
83
111
MemberExpression : node => localImportSpecifier && testMemberDeprecation ( node ) ,
84
112
85
-
86
- // VariableDeclarator : node => testVariableDeclarator (node),
113
+ // ExpressionStatement: node => testExpressionStatement(node),
114
+ // AssignmentExpression : node => testAssignmentExpression (node),
87
115
// JSXAttribute: node => testJSXAttribute(node),
88
116
// JSXOpeningElement: node => testJSXOpeningElement(node),
89
117
// JSXSpreadAttribute: node => testJSXSpreadAttribute(node),
0 commit comments