@@ -155,7 +155,7 @@ const getReleasedVersions = ({
155155 releasedVersions : string [ ]
156156 minVersion ?: string
157157 maxVersion ?: string
158- } ) => {
158+ } ) : string [ ] => {
159159 const latestMajorReleaseVersion =
160160 getLatestMajorReleaseVersion ( releasedVersions )
161161
@@ -181,32 +181,36 @@ const getFirstMajorRelease = ({
181181 releasedVersions : string [ ]
182182 versionToCompare : string
183183} ) =>
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 (
186189 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+ } )
192195
193196// Return if version exists in the ones returned from GitHub
194197const doesVersionExist = ( {
195198 version,
196199 allVersions,
197200 minVersion,
198201} : {
199- version : string
202+ version : string | null
200203 allVersions : string [ ]
201204 minVersion ?: string
202- } ) => {
205+ } ) : boolean => {
203206 try {
207+ if ( version === null ) {
208+ return false
209+ }
210+
204211 return (
205- version &&
206212 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 ) )
210214 )
211215 } catch ( _error ) {
212216 return false
@@ -234,8 +238,8 @@ const VersionSelector = ({
234238 packageName,
235239 } )
236240 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 [ ] > ( [ ] )
239243 const [ hasVersionsFromURL , setHasVersionsFromURL ] = useState < boolean > ( false )
240244
241245 const [ localFromVersion , setLocalFromVersion ] = useState < string > ( '' )
@@ -281,7 +285,7 @@ const VersionSelector = ({
281285 getFirstMajorRelease ( {
282286 releasedVersions : sanitizedVersions ,
283287 versionToCompare : toVersionToBeSet ,
284- } )
288+ } ) || sanitizedVersions [ sanitizedVersions . length - 1 ] // Fallback to last version if no major release found
285289
286290 setFromVersionList (
287291 getReleasedVersions ( {
0 commit comments