/
home
/
techb158
/
balavpn.abdallabala.com
/
node_modules
/
eslint-plugin-react
/
lib
/
rules
/
/home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/rules
mkdir
upload
Name
Size
Mode
Actions
boolean-prop-naming.d.ts
126
0666
edit
dl
rm
boolean-prop-naming.d.ts.map
161
0666
edit
dl
rm
boolean-prop-naming.js
13286
0666
edit
dl
rm
button-has-type.d.ts
122
0666
edit
dl
rm
button-has-type.d.ts.map
153
0666
edit
dl
rm
button-has-type.js
4528
0666
edit
dl
rm
checked-requires-onchange-or-readonly.d.ts
144
0666
edit
dl
rm
checked-requires-onchange-or-readonly.d.ts.map
197
0666
edit
dl
rm
checked-requires-onchange-or-readonly.js
3547
0666
edit
dl
rm
default-props-match-prop-types.d.ts
137
0666
edit
dl
rm
default-props-match-prop-types.d.ts.map
183
0666
edit
dl
rm
default-props-match-prop-types.js
3468
0666
edit
dl
rm
destructuring-assignment.d.ts
131
0666
edit
dl
rm
destructuring-assignment.d.ts.map
171
0666
edit
dl
rm
destructuring-assignment.js
9888
0666
edit
dl
rm
display-name.d.ts
119
0666
edit
dl
rm
display-name.d.ts.map
147
0666
edit
dl
rm
display-name.js
9130
0666
edit
dl
rm
forbid-component-props.d.ts
129
0666
edit
dl
rm
forbid-component-props.d.ts.map
167
0666
edit
dl
rm
forbid-component-props.js
7769
0666
edit
dl
rm
forbid-dom-props.d.ts
123
0666
edit
dl
rm
forbid-dom-props.d.ts.map
155
0666
edit
dl
rm
forbid-dom-props.js
3190
0666
edit
dl
rm
forbid-elements.d.ts
122
0666
edit
dl
rm
forbid-elements.d.ts.map
153
0666
edit
dl
rm
forbid-elements.js
3200
0666
edit
dl
rm
forbid-foreign-prop-types.d.ts
132
0666
edit
dl
rm
forbid-foreign-prop-types.d.ts.map
172
0666
edit
dl
rm
forbid-foreign-prop-types.js
3714
0666
edit
dl
rm
forbid-prop-types.d.ts
124
0666
edit
dl
rm
forbid-prop-types.d.ts.map
157
0666
edit
dl
rm
forbid-prop-types.js
8859
0666
edit
dl
rm
forward-ref-uses-ref.d.ts
127
0666
edit
dl
rm
forward-ref-uses-ref.d.ts.map
163
0666
edit
dl
rm
forward-ref-uses-ref.js
3133
0666
edit
dl
rm
function-component-definition.d.ts
136
0666
edit
dl
rm
function-component-definition.d.ts.map
181
0666
edit
dl
rm
function-component-definition.js
8413
0666
edit
dl
rm
hook-use-state.d.ts
121
0666
edit
dl
rm
hook-use-state.d.ts.map
151
0666
edit
dl
rm
hook-use-state.js
7365
0666
edit
dl
rm
iframe-missing-sandbox.d.ts
129
0666
edit
dl
rm
iframe-missing-sandbox.d.ts.map
167
0666
edit
dl
rm
iframe-missing-sandbox.js
4022
0666
edit
dl
rm
index.d.ts
6479
0666
edit
dl
rm
index.d.ts.map
224
0666
edit
dl
rm
index.js
6337
0666
edit
dl
rm
jsx-boolean-value.d.ts
124
0666
edit
dl
rm
jsx-boolean-value.d.ts.map
157
0666
edit
dl
rm
jsx-boolean-value.js
4515
0666
edit
dl
rm
jsx-child-element-spacing.d.ts
132
0666
edit
dl
rm
jsx-child-element-spacing.d.ts.map
173
0666
edit
dl
rm
jsx-child-element-spacing.js
2915
0666
edit
dl
rm
jsx-closing-bracket-location.d.ts
135
0666
edit
dl
rm
jsx-closing-bracket-location.d.ts.map
179
0666
edit
dl
rm
jsx-closing-bracket-location.js
11006
0666
edit
dl
rm
jsx-closing-tag-location.d.ts
131
0666
edit
dl
rm
jsx-closing-tag-location.d.ts.map
171
0666
edit
dl
rm
jsx-closing-tag-location.js
3766
0666
edit
dl
rm
jsx-curly-brace-presence.d.ts
131
0666
edit
dl
rm
jsx-curly-brace-presence.d.ts.map
171
0666
edit
dl
rm
jsx-curly-brace-presence.js
13890
0666
edit
dl
rm
jsx-curly-newline.d.ts
124
0666
edit
dl
rm
jsx-curly-newline.d.ts.map
157
0666
edit
dl
rm
jsx-curly-newline.js
6128
0666
edit
dl
rm
jsx-curly-spacing.d.ts
124
0666
edit
dl
rm
jsx-curly-spacing.d.ts.map
157
0666
edit
dl
rm
jsx-curly-spacing.js
14795
0666
edit
dl
rm
jsx-equals-spacing.d.ts
125
0666
edit
dl
rm
jsx-equals-spacing.d.ts.map
159
0666
edit
dl
rm
jsx-equals-spacing.js
3621
0666
edit
dl
rm
jsx-filename-extension.d.ts
129
0666
edit
dl
rm
jsx-filename-extension.d.ts.map
167
0666
edit
dl
rm
jsx-filename-extension.js
3240
0666
edit
dl
rm
jsx-first-prop-new-line.d.ts
130
0666
edit
dl
rm
jsx-first-prop-new-line.d.ts.map
169
0666
edit
dl
rm
jsx-first-prop-new-line.js
2734
0666
edit
dl
rm
jsx-fragments.d.ts
120
0666
edit
dl
rm
jsx-fragments.d.ts.map
149
0666
edit
dl
rm
jsx-fragments.js
7043
0666
edit
dl
rm
jsx-handler-names.d.ts
124
0666
edit
dl
rm
jsx-handler-names.d.ts.map
157
0666
edit
dl
rm
jsx-handler-names.js
6347
0666
edit
dl
rm
jsx-indent-props.d.ts
123
0666
edit
dl
rm
jsx-indent-props.d.ts.map
155
0666
edit
dl
rm
jsx-indent-props.js
6579
0666
edit
dl
rm
jsx-indent.d.ts
117
0666
edit
dl
rm
jsx-indent.d.ts.map
143
0666
edit
dl
rm
jsx-indent.js
14681
0666
edit
dl
rm
jsx-key.d.ts
114
0666
edit
dl
rm
jsx-key.d.ts.map
137
0666
edit
dl
rm
jsx-key.js
10172
0666
edit
dl
rm
jsx-max-depth.d.ts
120
0666
edit
dl
rm
jsx-max-depth.d.ts.map
149
0666
edit
dl
rm
jsx-max-depth.js
4133
0666
edit
dl
rm
jsx-max-props-per-line.d.ts
129
0666
edit
dl
rm
jsx-max-props-per-line.d.ts.map
167
0666
edit
dl
rm
jsx-max-props-per-line.js
4162
0666
edit
dl
rm
jsx-newline.d.ts
118
0666
edit
dl
rm
jsx-newline.d.ts.map
145
0666
edit
dl
rm
jsx-newline.js
5044
0666
edit
dl
rm
jsx-no-bind.d.ts
118
0666
edit
dl
rm
jsx-no-bind.d.ts.map
145
0666
edit
dl
rm
jsx-no-bind.js
6172
0666
edit
dl
rm
jsx-no-comment-textnodes.d.ts
131
0666
edit
dl
rm
jsx-no-comment-textnodes.d.ts.map
171
0666
edit
dl
rm
jsx-no-comment-textnodes.js
1847
0666
edit
dl
rm
jsx-no-constructed-context-values.d.ts
140
0666
edit
dl
rm
jsx-no-constructed-context-values.d.ts.map
189
0666
edit
dl
rm
jsx-no-constructed-context-values.js
8778
0666
edit
dl
rm
jsx-no-duplicate-props.d.ts
129
0666
edit
dl
rm
jsx-no-duplicate-props.d.ts.map
167
0666
edit
dl
rm
jsx-no-duplicate-props.js
1697
0666
edit
dl
rm
jsx-no-leaked-render.d.ts
127
0666
edit
dl
rm
jsx-no-leaked-render.d.ts.map
163
0666
edit
dl
rm
jsx-no-leaked-render.js
7618
0666
edit
dl
rm
jsx-no-literals.d.ts
926
0666
edit
dl
rm
jsx-no-literals.d.ts.map
128
0666
edit
dl
rm
jsx-no-literals.js
16912
0666
edit
dl
rm
jsx-no-script-url.d.ts
124
0666
edit
dl
rm
jsx-no-script-url.d.ts.map
157
0666
edit
dl
rm
jsx-no-script-url.js
4156
0666
edit
dl
rm
jsx-no-target-blank.d.ts
126
0666
edit
dl
rm
jsx-no-target-blank.d.ts.map
161
0666
edit
dl
rm
jsx-no-target-blank.js
11018
0666
edit
dl
rm
jsx-no-undef.d.ts
119
0666
edit
dl
rm
jsx-no-undef.d.ts.map
147
0666
edit
dl
rm
jsx-no-undef.js
3157
0666
edit
dl
rm
jsx-no-useless-fragment.d.ts
130
0666
edit
dl
rm
jsx-no-useless-fragment.d.ts.map
169
0666
edit
dl
rm
jsx-no-useless-fragment.js
7018
0666
edit
dl
rm
jsx-one-expression-per-line.d.ts
134
0666
edit
dl
rm
jsx-one-expression-per-line.d.ts.map
177
0666
edit
dl
rm
jsx-one-expression-per-line.js
7949
0666
edit
dl
rm
jsx-pascal-case.d.ts
122
0666
edit
dl
rm
jsx-pascal-case.d.ts.map
153
0666
edit
dl
rm
jsx-pascal-case.js
4594
0666
edit
dl
rm
jsx-props-no-multi-spaces.d.ts
132
0666
edit
dl
rm
jsx-props-no-multi-spaces.d.ts.map
173
0666
edit
dl
rm
jsx-props-no-multi-spaces.js
3900
0666
edit
dl
rm
jsx-props-no-spread-multi.d.ts
132
0666
edit
dl
rm
jsx-props-no-spread-multi.d.ts.map
173
0666
edit
dl
rm
jsx-props-no-spread-multi.js
1527
0666
edit
dl
rm
jsx-props-no-spreading.d.ts
129
0666
edit
dl
rm
jsx-props-no-spreading.d.ts.map
167
0666
edit
dl
rm
jsx-props-no-spreading.js
4174
0666
edit
dl
rm
jsx-sort-default-props.d.ts
129
0666
edit
dl
rm
jsx-sort-default-props.d.ts.map
167
0666
edit
dl
rm
jsx-sort-default-props.js
5635
0666
edit
dl
rm
jsx-sort-props.d.ts
121
0666
edit
dl
rm
jsx-sort-props.d.ts.map
151
0666
edit
dl
rm
jsx-sort-props.js
18241
0666
edit
dl
rm
jsx-space-before-closing.d.ts
131
0666
edit
dl
rm
jsx-space-before-closing.d.ts.map
171
0666
edit
dl
rm
jsx-space-before-closing.js
3049
0666
edit
dl
rm
jsx-tag-spacing.d.ts
122
0666
edit
dl
rm
jsx-tag-spacing.d.ts.map
153
0666
edit
dl
rm
jsx-tag-spacing.js
10677
0666
edit
dl
rm
jsx-uses-react.d.ts
121
0666
edit
dl
rm
jsx-uses-react.d.ts.map
150
0666
edit
dl
rm
jsx-uses-react.js
1572
0666
edit
dl
rm
jsx-uses-vars.d.ts
120
0666
edit
dl
rm
jsx-uses-vars.d.ts.map
149
0666
edit
dl
rm
jsx-uses-vars.js
1655
0666
edit
dl
rm
jsx-wrap-multilines.d.ts
126
0666
edit
dl
rm
jsx-wrap-multilines.d.ts.map
161
0666
edit
dl
rm
jsx-wrap-multilines.js
8442
0666
edit
dl
rm
no-access-state-in-setstate.d.ts
134
0666
edit
dl
rm
no-access-state-in-setstate.d.ts.map
177
0666
edit
dl
rm
no-access-state-in-setstate.js
6790
0666
edit
dl
rm
no-adjacent-inline-elements.d.ts
134
0666
edit
dl
rm
no-adjacent-inline-elements.d.ts.map
177
0666
edit
dl
rm
no-adjacent-inline-elements.js
3139
0666
edit
dl
rm
no-array-index-key.d.ts
125
0666
edit
dl
rm
no-array-index-key.d.ts.map
159
0666
edit
dl
rm
no-array-index-key.js
7509
0666
edit
dl
rm
no-arrow-function-lifecycle.d.ts
134
0666
edit
dl
rm
no-arrow-function-lifecycle.d.ts.map
177
0666
edit
dl
rm
no-arrow-function-lifecycle.js
5163
0666
edit
dl
rm
no-children-prop.d.ts
123
0666
edit
dl
rm
no-children-prop.d.ts.map
155
0666
edit
dl
rm
no-children-prop.js
3968
0666
edit
dl
rm
no-danger-with-children.d.ts
130
0666
edit
dl
rm
no-danger-with-children.d.ts.map
169
0666
edit
dl
rm
no-danger-with-children.js
5187
0666
edit
dl
rm
no-danger.d.ts
116
0666
edit
dl
rm
no-danger.d.ts.map
141
0666
edit
dl
rm
no-danger.js
2695
0666
edit
dl
rm
no-deprecated.d.ts
120
0666
edit
dl
rm
no-deprecated.d.ts.map
149
0666
edit
dl
rm
no-deprecated.js
9961
0666
edit
dl
rm
no-did-mount-set-state.d.ts
129
0666
edit
dl
rm
no-did-mount-set-state.d.ts.map
166
0666
edit
dl
rm
no-did-mount-set-state.js
308
0666
edit
dl
rm
no-did-update-set-state.d.ts
130
0666
edit
dl
rm
no-did-update-set-state.d.ts.map
168
0666
edit
dl
rm
no-did-update-set-state.js
310
0666
edit
dl
rm
no-direct-mutation-state.d.ts
131
0666
edit
dl
rm
no-direct-mutation-state.d.ts.map
171
0666
edit
dl
rm
no-direct-mutation-state.js
4591
0666
edit
dl
rm
no-find-dom-node.d.ts
123
0666
edit
dl
rm
no-find-dom-node.d.ts.map
155
0666
edit
dl
rm
no-find-dom-node.js
1389
0666
edit
dl
rm
no-invalid-html-attribute.d.ts
132
0666
edit
dl
rm
no-invalid-html-attribute.d.ts.map
174
0666
edit
dl
rm
no-invalid-html-attribute.js
16601
0666
edit
dl
rm
no-is-mounted.d.ts
120
0666
edit
dl
rm
no-is-mounted.d.ts.map
149
0666
edit
dl
rm
no-is-mounted.js
1522
0666
edit
dl
rm
no-multi-comp.d.ts
120
0666
edit
dl
rm
no-multi-comp.d.ts.map
149
0666
edit
dl
rm
no-multi-comp.js
2066
0666
edit
dl
rm
no-namespace.d.ts
119
0666
edit
dl
rm
no-namespace.d.ts.map
147
0666
edit
dl
rm
no-namespace.js
1744
0666
edit
dl
rm
no-object-type-as-default-prop.d.ts
137
0666
edit
dl
rm
no-object-type-as-default-prop.d.ts.map
183
0666
edit
dl
rm
no-object-type-as-default-prop.js
3285
0666
edit
dl
rm
no-redundant-should-component-update.d.ts
143
0666
edit
dl
rm
no-redundant-should-component-update.d.ts.map
195
0666
edit
dl
rm
no-redundant-should-component-update.js
2437
0666
edit
dl
rm
no-render-return-value.d.ts
129
0666
edit
dl
rm
no-render-return-value.d.ts.map
167
0666
edit
dl
rm
no-render-return-value.js
2308
0666
edit
dl
rm
no-set-state.d.ts
119
0666
edit
dl
rm
no-set-state.d.ts.map
147
0666
edit
dl
rm
no-set-state.js
2374
0666
edit
dl
rm
no-string-refs.d.ts
121
0666
edit
dl
rm
no-string-refs.d.ts.map
151
0666
edit
dl
rm
no-string-refs.js
3770
0666
edit
dl
rm
no-this-in-sfc.d.ts
121
0666
edit
dl
rm
no-this-in-sfc.d.ts.map
151
0666
edit
dl
rm
no-this-in-sfc.js
1326
0666
edit
dl
rm
no-typos.d.ts
115
0666
edit
dl
rm
no-typos.d.ts.map
139
0666
edit
dl
rm
no-typos.js
8930
0666
edit
dl
rm
no-unescaped-entities.d.ts
128
0666
edit
dl
rm
no-unescaped-entities.d.ts.map
165
0666
edit
dl
rm
no-unescaped-entities.js
4773
0666
edit
dl
rm
no-unknown-property.d.ts
126
0666
edit
dl
rm
no-unknown-property.d.ts.map
162
0666
edit
dl
rm
no-unknown-property.js
28149
0666
edit
dl
rm
no-unsafe.d.ts
116
0666
edit
dl
rm
no-unsafe.d.ts.map
141
0666
edit
dl
rm
no-unsafe.js
4442
0666
edit
dl
rm
no-unstable-nested-components.d.ts
136
0666
edit
dl
rm
no-unstable-nested-components.d.ts.map
181
0666
edit
dl
rm
no-unstable-nested-components.js
15517
0666
edit
dl
rm
no-unused-class-component-methods.d.ts
140
0666
edit
dl
rm
no-unused-class-component-methods.d.ts.map
189
0666
edit
dl
rm
no-unused-class-component-methods.js
6795
0666
edit
dl
rm
no-unused-prop-types.d.ts
127
0666
edit
dl
rm
no-unused-prop-types.d.ts.map
163
0666
edit
dl
rm
no-unused-prop-types.js
4897
0666
edit
dl
rm
no-unused-state.d.ts
122
0666
edit
dl
rm
no-unused-state.d.ts.map
153
0666
edit
dl
rm
no-unused-state.js
16159
0666
edit
dl
rm
no-will-update-set-state.d.ts
131
0666
edit
dl
rm
no-will-update-set-state.d.ts.map
170
0666
edit
dl
rm
no-will-update-set-state.js
441
0666
edit
dl
rm
prefer-es6-class.d.ts
123
0666
edit
dl
rm
prefer-es6-class.d.ts.map
155
0666
edit
dl
rm
prefer-es6-class.js
1572
0666
edit
dl
rm
prefer-exact-props.d.ts
125
0666
edit
dl
rm
prefer-exact-props.d.ts.map
159
0666
edit
dl
rm
prefer-exact-props.js
5045
0666
edit
dl
rm
prefer-read-only-props.d.ts
129
0666
edit
dl
rm
prefer-read-only-props.d.ts.map
167
0666
edit
dl
rm
prefer-read-only-props.js
3069
0666
edit
dl
rm
prefer-stateless-function.d.ts
132
0666
edit
dl
rm
prefer-stateless-function.d.ts.map
173
0666
edit
dl
rm
prefer-stateless-function.js
12952
0666
edit
dl
rm
prop-types.d.ts
117
0666
edit
dl
rm
prop-types.d.ts.map
143
0666
edit
dl
rm
prop-types.js
7417
0666
edit
dl
rm
react-in-jsx-scope.d.ts
125
0666
edit
dl
rm
react-in-jsx-scope.d.ts.map
159
0666
edit
dl
rm
react-in-jsx-scope.js
1328
0666
edit
dl
rm
require-default-props.d.ts
128
0666
edit
dl
rm
require-default-props.d.ts.map
165
0666
edit
dl
rm
require-default-props.js
7361
0666
edit
dl
rm
require-optimization.d.ts
127
0666
edit
dl
rm
require-optimization.d.ts.map
163
0666
edit
dl
rm
require-optimization.js
7076
0666
edit
dl
rm
require-render-return.d.ts
128
0666
edit
dl
rm
require-render-return.d.ts.map
165
0666
edit
dl
rm
require-render-return.js
3237
0666
edit
dl
rm
self-closing-comp.d.ts
124
0666
edit
dl
rm
self-closing-comp.d.ts.map
157
0666
edit
dl
rm
self-closing-comp.js
2930
0666
edit
dl
rm
sort-comp.d.ts
116
0666
edit
dl
rm
sort-comp.d.ts.map
141
0666
edit
dl
rm
sort-comp.js
13733
0666
edit
dl
rm
sort-default-props.d.ts
125
0666
edit
dl
rm
sort-default-props.d.ts.map
159
0666
edit
dl
rm
sort-default-props.js
5233
0666
edit
dl
rm
sort-prop-types.d.ts
122
0666
edit
dl
rm
sort-prop-types.d.ts.map
153
0666
edit
dl
rm
sort-prop-types.js
10155
0666
edit
dl
rm
state-in-constructor.d.ts
127
0666
edit
dl
rm
state-in-constructor.d.ts.map
163
0666
edit
dl
rm
state-in-constructor.js
1921
0666
edit
dl
rm
static-property-placement.d.ts
132
0666
edit
dl
rm
static-property-placement.d.ts.map
173
0666
edit
dl
rm
static-property-placement.js
6734
0666
edit
dl
rm
style-prop-object.d.ts
124
0666
edit
dl
rm
style-prop-object.d.ts.map
157
0666
edit
dl
rm
style-prop-object.js
4134
0666
edit
dl
rm
void-dom-elements-no-children.d.ts
136
0666
edit
dl
rm
void-dom-elements-no-children.d.ts.map
181
0666
edit
dl
rm
void-dom-elements-no-children.js
4133
0666
edit
dl
rm
Edit:
/home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/rules/no-deprecated.js
(9961B)
/** * @fileoverview Prevent usage of deprecated methods * @author Yannick Croissant * @author Scott Feeney * @author Sergei Startsev */ 'use strict'; const entries = require('object.entries'); const astUtil = require('../util/ast'); const componentUtil = require('../util/componentUtil'); const docsUrl = require('../util/docsUrl'); const pragmaUtil = require('../util/pragma'); const testReactVersion = require('../util/version').testReactVersion; const report = require('../util/report'); const getText = require('../util/eslint').getText; // ------------------------------------------------------------------------------ // Constants // ------------------------------------------------------------------------------ const MODULES = { react: ['React'], 'react-addons-perf': ['ReactPerf', 'Perf'], 'react-dom': ['ReactDOM'], 'react-dom/server': ['ReactDOMServer'], }; // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ function getDeprecated(pragma) { const deprecated = {}; // 0.12.0 deprecated[`${pragma}.renderComponent`] = ['0.12.0', `${pragma}.render`]; deprecated[`${pragma}.renderComponentToString`] = ['0.12.0', `${pragma}.renderToString`]; deprecated[`${pragma}.renderComponentToStaticMarkup`] = ['0.12.0', `${pragma}.renderToStaticMarkup`]; deprecated[`${pragma}.isValidComponent`] = ['0.12.0', `${pragma}.isValidElement`]; deprecated[`${pragma}.PropTypes.component`] = ['0.12.0', `${pragma}.PropTypes.element`]; deprecated[`${pragma}.PropTypes.renderable`] = ['0.12.0', `${pragma}.PropTypes.node`]; deprecated[`${pragma}.isValidClass`] = ['0.12.0']; deprecated['this.transferPropsTo'] = ['0.12.0', 'spread operator ({...})']; // 0.13.0 deprecated[`${pragma}.addons.classSet`] = ['0.13.0', 'the npm module classnames']; deprecated[`${pragma}.addons.cloneWithProps`] = ['0.13.0', `${pragma}.cloneElement`]; // 0.14.0 deprecated[`${pragma}.render`] = ['0.14.0', 'ReactDOM.render']; deprecated[`${pragma}.unmountComponentAtNode`] = ['0.14.0', 'ReactDOM.unmountComponentAtNode']; deprecated[`${pragma}.findDOMNode`] = ['0.14.0', 'ReactDOM.findDOMNode']; deprecated[`${pragma}.renderToString`] = ['0.14.0', 'ReactDOMServer.renderToString']; deprecated[`${pragma}.renderToStaticMarkup`] = ['0.14.0', 'ReactDOMServer.renderToStaticMarkup']; // 15.0.0 deprecated[`${pragma}.addons.LinkedStateMixin`] = ['15.0.0']; deprecated['ReactPerf.printDOM'] = ['15.0.0', 'ReactPerf.printOperations']; deprecated['Perf.printDOM'] = ['15.0.0', 'Perf.printOperations']; deprecated['ReactPerf.getMeasurementsSummaryMap'] = ['15.0.0', 'ReactPerf.getWasted']; deprecated['Perf.getMeasurementsSummaryMap'] = ['15.0.0', 'Perf.getWasted']; // 15.5.0 deprecated[`${pragma}.createClass`] = ['15.5.0', 'the npm module create-react-class']; deprecated[`${pragma}.addons.TestUtils`] = ['15.5.0', 'ReactDOM.TestUtils']; deprecated[`${pragma}.PropTypes`] = ['15.5.0', 'the npm module prop-types']; // 15.6.0 deprecated[`${pragma}.DOM`] = ['15.6.0', 'the npm module react-dom-factories']; // 16.9.0 // For now the following life-cycle methods are just legacy, not deprecated: // `componentWillMount`, `componentWillReceiveProps`, `componentWillUpdate` // https://github.com/yannickcr/eslint-plugin-react/pull/1750#issuecomment-425975934 deprecated.componentWillMount = [ '16.9.0', 'UNSAFE_componentWillMount', 'https://reactjs.org/docs/react-component.html#unsafe_componentwillmount. ' + 'Use https://github.com/reactjs/react-codemod#rename-unsafe-lifecycles to automatically update your components.', ]; deprecated.componentWillReceiveProps = [ '16.9.0', 'UNSAFE_componentWillReceiveProps', 'https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops. ' + 'Use https://github.com/reactjs/react-codemod#rename-unsafe-lifecycles to automatically update your components.', ]; deprecated.componentWillUpdate = [ '16.9.0', 'UNSAFE_componentWillUpdate', 'https://reactjs.org/docs/react-component.html#unsafe_componentwillupdate. ' + 'Use https://github.com/reactjs/react-codemod#rename-unsafe-lifecycles to automatically update your components.', ]; // 18.0.0 // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#deprecations deprecated['ReactDOM.render'] = [ '18.0.0', 'createRoot', 'https://reactjs.org/link/switch-to-createroot', ]; deprecated['ReactDOM.hydrate'] = [ '18.0.0', 'hydrateRoot', 'https://reactjs.org/link/switch-to-createroot', ]; deprecated['ReactDOM.unmountComponentAtNode'] = [ '18.0.0', 'root.unmount', 'https://reactjs.org/link/switch-to-createroot', ]; deprecated['ReactDOMServer.renderToNodeStream'] = [ '18.0.0', 'renderToPipeableStream', 'https://reactjs.org/docs/react-dom-server.html#rendertonodestream', ]; return deprecated; } const messages = { deprecated: '{{oldMethod}} is deprecated since React {{version}}{{newMethod}}{{refs}}', }; /** @type {import('eslint').Rule.RuleModule} */ module.exports = { meta: { docs: { description: 'Disallow usage of deprecated methods', category: 'Best Practices', recommended: true, url: docsUrl('no-deprecated'), }, messages, schema: [], }, create(context) { const pragma = pragmaUtil.getFromContext(context); const deprecated = getDeprecated(pragma); function isDeprecated(method) { return ( deprecated && deprecated[method] && deprecated[method][0] && testReactVersion(context, `>= ${deprecated[method][0]}`) ); } function checkDeprecation(node, methodName, methodNode) { if (!isDeprecated(methodName)) { return; } const version = deprecated[methodName][0]; const newMethod = deprecated[methodName][1]; const refs = deprecated[methodName][2]; report(context, messages.deprecated, 'deprecated', { node: methodNode || node, data: { oldMethod: methodName, version, newMethod: newMethod ? `, use ${newMethod} instead` : '', refs: refs ? `, see ${refs}` : '', }, }); } function getReactModuleName(node) { let moduleName = false; if (!node.init) { return false; } entries(MODULES).some((entry) => { const key = entry[0]; const moduleNames = entry[1]; if ( node.init.arguments && node.init.arguments.length > 0 && node.init.arguments[0] && key === node.init.arguments[0].value ) { moduleName = MODULES[key][0]; } else { moduleName = moduleNames.find((name) => name === node.init.name); } return moduleName; }); return moduleName; } /** * Returns life cycle methods if available * @param {ASTNode} node The AST node being checked. * @returns {Array} The array of methods. */ function getLifeCycleMethods(node) { const properties = astUtil.getComponentProperties(node); return properties.map((property) => ({ name: astUtil.getPropertyName(property), node: astUtil.getPropertyNameNode(property), })); } /** * Checks life cycle methods * @param {ASTNode} node The AST node being checked. */ function checkLifeCycleMethods(node) { if ( componentUtil.isES5Component(node, context) || componentUtil.isES6Component(node, context) ) { const methods = getLifeCycleMethods(node); methods.forEach((method) => checkDeprecation(node, method.name, method.node)); } } // -------------------------------------------------------------------------- // Public // -------------------------------------------------------------------------- return { MemberExpression(node) { checkDeprecation(node, getText(context, node)); }, ImportDeclaration(node) { const isReactImport = typeof MODULES[node.source.value] !== 'undefined'; if (!isReactImport) { return; } node.specifiers.filter(((s) => 'imported' in s && s.imported)).forEach((specifier) => { // TODO, semver-major: remove `in` check as part of jsdoc->tsdoc migration checkDeprecation(node, 'imported' in specifier && 'name' in specifier.imported && `${MODULES[node.source.value][0]}.${specifier.imported.name}`, specifier); }); }, VariableDeclarator(node) { const reactModuleName = getReactModuleName(node); const isRequire = node.init && 'callee' in node.init && node.init.callee && 'name' in node.init.callee && node.init.callee.name === 'require'; const isReactRequire = node.init && 'arguments' in node.init && node.init.arguments && node.init.arguments.length && typeof MODULES['value' in node.init.arguments[0] ? node.init.arguments[0].value : undefined] !== 'undefined'; const isDestructuring = node.id && node.id.type === 'ObjectPattern'; if ( !(isDestructuring && reactModuleName) && !(isDestructuring && isRequire && isReactRequire) ) { return; } ('properties' in node.id ? node.id.properties : undefined).filter((p) => p.type !== 'RestElement' && p.key).forEach((property) => { checkDeprecation( node, 'key' in property && 'name' in property.key && `${reactModuleName || pragma}.${property.key.name}`, property ); }); }, ClassDeclaration: checkLifeCycleMethods, ClassExpression: checkLifeCycleMethods, ObjectExpression: checkLifeCycleMethods, }; }, };
Save
cmd:
run