5
5
*/
6
6
'use strict' ;
7
7
8
+ var pragmaUtil = require ( '../util/pragma' ) ;
9
+
8
10
// ------------------------------------------------------------------------------
9
11
// Constants
10
12
// ------------------------------------------------------------------------------
11
13
12
14
var DEPRECATED_MESSAGE = '{{oldMethod}} is deprecated since React {{version}}{{newMethod}}' ;
13
15
14
- var DEPRECATED = {
15
- MemberExpression : {
16
- // 0.12.0
17
- 'React.renderComponent' : [ '0.12.0' , 'React.render' ] ,
18
- 'React.renderComponentToString' : [ '0.12.0' , 'React.renderToString' ] ,
19
- 'React.renderComponentToStaticMarkup' : [ '0.12.0' , 'React.renderToStaticMarkup' ] ,
20
- 'React.isValidComponent' : [ '0.12.0' , 'React.isValidElement' ] ,
21
- 'React.PropTypes.component' : [ '0.12.0' , 'React.PropTypes.element' ] ,
22
- 'React.PropTypes.renderable' : [ '0.12.0' , 'React.PropTypes.node' ] ,
23
- 'React.isValidClass' : [ '0.12.0' ] ,
24
- 'this.transferPropsTo' : [ '0.12.0' , 'spread operator ({...})' ] ,
25
- // 0.13.0
26
- 'React.addons.classSet' : [ '0.13.0' , 'the npm module classnames' ] ,
27
- 'React.addons.cloneWithProps' : [ '0.13.0' , 'React.cloneElement' ] ,
28
- // 0.14.0
29
- 'React.render' : [ '0.14.0' , 'ReactDOM.render' ] ,
30
- 'React.unmountComponentAtNode' : [ '0.14.0' , 'ReactDOM.unmountComponentAtNode' ] ,
31
- 'React.findDOMNode' : [ '0.14.0' , 'ReactDOM.findDOMNode' ] ,
32
- 'React.renderToString' : [ '0.14.0' , 'ReactDOMServer.renderToString' ] ,
33
- 'React.renderToStaticMarkup' : [ '0.14.0' , 'ReactDOMServer.renderToStaticMarkup' ]
34
- }
35
- } ;
36
-
37
16
// ------------------------------------------------------------------------------
38
17
// Rule Definition
39
18
// ------------------------------------------------------------------------------
@@ -48,6 +27,37 @@ module.exports = function(context) {
48
27
return Number ( part ) ;
49
28
} ) ;
50
29
30
+ var pragma = pragmaUtil . getFromContext ( context ) ;
31
+
32
+ function getDeprecated ( ) {
33
+ var deprecated = {
34
+ MemberExpression : { }
35
+ } ;
36
+ // 0.12.0
37
+ deprecated . MemberExpression [ pragma + '.renderComponent' ] = [ '0.12.0' , pragma + '.render' ] ;
38
+ deprecated . MemberExpression [ pragma + '.renderComponentToString' ] = [ '0.12.0' , pragma + '.renderToString' ] ;
39
+ deprecated . MemberExpression [ pragma + '.renderComponentToStaticMarkup' ] = [
40
+ '0.12.0' ,
41
+ pragma + '.renderToStaticMarkup'
42
+ ] ;
43
+ deprecated . MemberExpression [ pragma + '.isValidComponent' ] = [ '0.12.0' , pragma + '.isValidElement' ] ;
44
+ deprecated . MemberExpression [ pragma + '.PropTypes.component' ] = [ '0.12.0' , pragma + '.PropTypes.element' ] ;
45
+ deprecated . MemberExpression [ pragma + '.PropTypes.renderable' ] = [ '0.12.0' , pragma + '.PropTypes.node' ] ;
46
+ deprecated . MemberExpression [ pragma + '.isValidClass' ] = [ '0.12.0' ] ;
47
+ deprecated . MemberExpression [ 'this.transferPropsTo' ] = [ '0.12.0' , 'spread operator ({...})' ] ;
48
+ // 0.13.0
49
+ deprecated . MemberExpression [ pragma + '.addons.classSet' ] = [ '0.13.0' , 'the npm module classnames' ] ;
50
+ deprecated . MemberExpression [ pragma + '.addons.cloneWithProps' ] = [ '0.13.0' , pragma + '.cloneElement' ] ;
51
+ // 0.14.0
52
+ deprecated . MemberExpression [ pragma + '.render' ] = [ '0.14.0' , 'ReactDOM.render' ] ;
53
+ deprecated . MemberExpression [ pragma + '.unmountComponentAtNode' ] = [ '0.14.0' , 'ReactDOM.unmountComponentAtNode' ] ;
54
+ deprecated . MemberExpression [ pragma + '.findDOMNode' ] = [ '0.14.0' , 'ReactDOM.findDOMNode' ] ;
55
+ deprecated . MemberExpression [ pragma + '.renderToString' ] = [ '0.14.0' , 'ReactDOMServer.renderToString' ] ;
56
+ deprecated . MemberExpression [ pragma + '.renderToStaticMarkup' ] = [ '0.14.0' , 'ReactDOMServer.renderToStaticMarkup' ] ;
57
+
58
+ return deprecated ;
59
+ }
60
+
51
61
function checkVersion ( methodVer ) {
52
62
methodVer = methodVer . split ( '.' ) . map ( function ( part ) {
53
63
return Number ( part ) ;
@@ -60,10 +70,12 @@ module.exports = function(context) {
60
70
}
61
71
62
72
function isDeprecated ( type , method ) {
73
+ var deprecated = getDeprecated ( ) ;
74
+
63
75
return (
64
- DEPRECATED [ type ] &&
65
- DEPRECATED [ type ] [ method ] &&
66
- checkVersion ( DEPRECATED [ type ] [ method ] [ 0 ] )
76
+ deprecated [ type ] &&
77
+ deprecated [ type ] [ method ] &&
78
+ checkVersion ( deprecated [ type ] [ method ] [ 0 ] )
67
79
) ;
68
80
}
69
81
@@ -78,11 +90,16 @@ module.exports = function(context) {
78
90
if ( ! isDeprecated ( node . type , method ) ) {
79
91
return ;
80
92
}
93
+ var deprecated = getDeprecated ( ) ;
81
94
context . report ( node , DEPRECATED_MESSAGE , {
82
95
oldMethod : method ,
83
- version : DEPRECATED [ node . type ] [ method ] [ 0 ] ,
84
- newMethod : DEPRECATED [ node . type ] [ method ] [ 1 ] ? ', use ' + DEPRECATED [ node . type ] [ method ] [ 1 ] + ' instead' : ''
96
+ version : deprecated [ node . type ] [ method ] [ 0 ] ,
97
+ newMethod : deprecated [ node . type ] [ method ] [ 1 ] ? ', use ' + deprecated [ node . type ] [ method ] [ 1 ] + ' instead' : ''
85
98
} ) ;
99
+ } ,
100
+
101
+ BlockComment : function ( node ) {
102
+ pragma = pragmaUtil . getFromNode ( node ) || pragma ;
86
103
}
87
104
88
105
} ;
0 commit comments