@@ -155,7 +155,7 @@ const getReleasedVersions = ({
155
155
releasedVersions : string [ ]
156
156
minVersion ?: string
157
157
maxVersion ?: string
158
- } ) => {
158
+ } ) : string [ ] => {
159
159
const latestMajorReleaseVersion =
160
160
getLatestMajorReleaseVersion ( releasedVersions )
161
161
@@ -181,32 +181,36 @@ const getFirstMajorRelease = ({
181
181
releasedVersions : string [ ]
182
182
versionToCompare : string
183
183
} ) =>
184
- releasedVersions . find (
185
- ( releasedVersion ) =>
184
+ releasedVersions . find ( ( releasedVersion ) => {
185
+ const releasedVersionValid = semver . valid ( semver . coerce ( releasedVersion ) )
186
+ const versionToCompareValid = semver . valid ( semver . coerce ( versionToCompare ) )
187
+
188
+ return (
186
189
semver . lt ( releasedVersion , versionToCompare ) &&
187
- semver . diff (
188
- semver . valid ( semver . coerce ( releasedVersion ) ) ,
189
- semver . valid ( semver . coerce ( versionToCompare ) )
190
- ) === 'minor'
191
- )
190
+ releasedVersionValid &&
191
+ versionToCompareValid &&
192
+ semver . diff ( releasedVersionValid , versionToCompareValid ) === 'minor'
193
+ )
194
+ } )
192
195
193
196
// Return if version exists in the ones returned from GitHub
194
197
const doesVersionExist = ( {
195
198
version,
196
199
allVersions,
197
200
minVersion,
198
201
} : {
199
- version : string
202
+ version : string | null
200
203
allVersions : string [ ]
201
204
minVersion ?: string
202
- } ) => {
205
+ } ) : boolean => {
203
206
try {
207
+ if ( version === null ) {
208
+ return false
209
+ }
210
+
204
211
return (
205
- version &&
206
212
allVersions . includes ( version ) &&
207
- // Also compare the version against a `minVersion`, this is used
208
- // to not allow the user to have a `fromVersion` newer than `toVersion`
209
- ( ! minVersion || ( minVersion && semver . gt ( version , minVersion ) ) )
213
+ ( ! minVersion || semver . gt ( version , minVersion ) )
210
214
)
211
215
} catch ( _error ) {
212
216
return false
@@ -234,8 +238,8 @@ const VersionSelector = ({
234
238
packageName,
235
239
} )
236
240
const [ allVersions , setAllVersions ] = useState < string [ ] > ( [ ] )
237
- const [ fromVersionList , setFromVersionList ] = useState ( [ ] )
238
- const [ toVersionList , setToVersionList ] = useState ( [ ] )
241
+ const [ fromVersionList , setFromVersionList ] = useState < string [ ] > ( [ ] )
242
+ const [ toVersionList , setToVersionList ] = useState < string [ ] > ( [ ] )
239
243
const [ hasVersionsFromURL , setHasVersionsFromURL ] = useState < boolean > ( false )
240
244
241
245
const [ localFromVersion , setLocalFromVersion ] = useState < string > ( '' )
@@ -281,7 +285,7 @@ const VersionSelector = ({
281
285
getFirstMajorRelease ( {
282
286
releasedVersions : sanitizedVersions ,
283
287
versionToCompare : toVersionToBeSet ,
284
- } )
288
+ } ) || sanitizedVersions [ sanitizedVersions . length - 1 ] // Fallback to last version if no major release found
285
289
286
290
setFromVersionList (
287
291
getReleasedVersions ( {
0 commit comments