@@ -70,8 +70,10 @@ function detectReactVersion(context) {
7070 }
7171}
7272
73+ const defaultVersion = '999.999.999' ;
74+
7375function getReactVersionFromContext ( context ) {
74- let confVer = '999.999.999' ;
76+ let confVer = defaultVersion ;
7577 // .eslintrc shared settings (https://eslint.org/docs/user-guide/configuring#adding-shared-settings)
7678 if ( context . settings && context . settings . react && context . settings . react . version ) {
7779 let settingsVersion = context . settings . react . version ;
@@ -89,7 +91,11 @@ function getReactVersionFromContext(context) {
8991 warnedForMissingVersion = true ;
9092 }
9193 confVer = / ^ [ 0 - 9 ] + \. [ 0 - 9 ] + $ / . test ( confVer ) ? `${ confVer } .0` : confVer ;
92- return semver . coerce ( confVer . split ( '.' ) . map ( ( part ) => Number ( part ) ) . join ( '.' ) ) . version ;
94+ const result = semver . coerce ( confVer . split ( '.' ) . map ( ( part ) => Number ( part ) ) . join ( '.' ) ) ;
95+ if ( ! result ) {
96+ error ( `Warning: React version specified in eslint-plugin-react-settings must be a valid semver version, or "detect"; got “${ confVer } ”` ) ;
97+ }
98+ return result ? result . version : defaultVersion ;
9399}
94100
95101// TODO, semver-major: remove context fallback
@@ -111,7 +117,7 @@ function detectFlowVersion(context) {
111117}
112118
113119function getFlowVersionFromContext ( context ) {
114- let confVer = '999.999.999' ;
120+ let confVer = defaultVersion ;
115121 // .eslintrc shared settings (https://eslint.org/docs/user-guide/configuring#adding-shared-settings)
116122 if ( context . settings . react && context . settings . react . flowVersion ) {
117123 let flowVersion = context . settings . react . flowVersion ;
@@ -127,7 +133,11 @@ function getFlowVersionFromContext(context) {
127133 throw 'Could not retrieve flowVersion from settings' ; // eslint-disable-line no-throw-literal
128134 }
129135 confVer = / ^ [ 0 - 9 ] + \. [ 0 - 9 ] + $ / . test ( confVer ) ? `${ confVer } .0` : confVer ;
130- return semver . coerce ( confVer . split ( '.' ) . map ( ( part ) => Number ( part ) ) . join ( '.' ) ) . version ;
136+ const result = semver . coerce ( confVer . split ( '.' ) . map ( ( part ) => Number ( part ) ) . join ( '.' ) ) ;
137+ if ( ! result ) {
138+ error ( `Warning: Flow version specified in eslint-plugin-react-settings must be a valid semver version, or "detect"; got “${ confVer } ”` ) ;
139+ }
140+ return result ? result . version : defaultVersion ;
131141}
132142
133143function test ( semverRange , confVer ) {
0 commit comments