@@ -2,18 +2,19 @@ import { ParseDefinitionsOptions } from "./get-definitely-typed";
2
2
import { TypingsData , AllPackages , formatTypingVersion } from "./packages" ;
3
3
import {
4
4
assertDefined ,
5
- best ,
6
5
mapDefined ,
7
6
nAtATime ,
8
7
FS ,
9
8
logger ,
10
9
writeLog ,
11
10
Logger ,
12
- Semver ,
13
11
UncachedNpmInfoClient ,
14
12
NpmInfoRawVersions ,
15
13
NpmInfoVersion ,
14
+ max ,
15
+ min ,
16
16
} from "@definitelytyped/utils" ;
17
+ import * as semver from "semver" ;
17
18
18
19
export async function checkParseResults (
19
20
includeNpmChecks : false ,
@@ -132,21 +133,19 @@ async function checkNpm(
132
133
}
133
134
134
135
const versions = getRegularVersions ( info . versions ) ;
135
- const firstTypedVersion = best (
136
+ const firstTypedVersion = min (
136
137
mapDefined ( versions , ( { hasTypes, version } ) => ( hasTypes ? version : undefined ) ) ,
137
- ( a , b ) => b . greaterThan ( a )
138
+ semver . compare
138
139
) ;
139
140
// A package might have added types but removed them later, so check the latest version too
140
- if ( firstTypedVersion === undefined || ! best ( versions , ( a , b ) => a . version . greaterThan ( b . version ) ) ! . hasTypes ) {
141
+ if ( firstTypedVersion === undefined || ! max ( versions , ( a , b ) => semver . compare ( a . version , b . version ) ) ! . hasTypes ) {
141
142
return ;
142
143
}
143
144
144
145
const ourVersion = `${ major } .${ minor } ` ;
145
146
146
147
log ( "" ) ;
147
- log (
148
- `Typings already defined for ${ name } (${ libraryName } ) as of ${ firstTypedVersion . versionString } (our version: ${ ourVersion } )`
149
- ) ;
148
+ log ( `Typings already defined for ${ name } (${ libraryName } ) as of ${ firstTypedVersion } (our version: ${ ourVersion } )` ) ;
150
149
const contributorUrls = contributors
151
150
. map ( ( c ) => {
152
151
const gh = "https://github.com/" ;
@@ -155,14 +154,14 @@ async function checkNpm(
155
154
. join ( ", " ) ;
156
155
log ( " To fix this:" ) ;
157
156
log ( ` git checkout -b not-needed-${ name } ` ) ;
158
- const yarnargs = [ name , firstTypedVersion . versionString , projectName ] ;
157
+ const yarnargs = [ name , firstTypedVersion , projectName ] ;
159
158
if ( libraryName !== name ) {
160
159
yarnargs . push ( JSON . stringify ( libraryName ) ) ;
161
160
}
162
161
log ( " yarn not-needed " + yarnargs . join ( " " ) ) ;
163
162
log ( ` git add --all && git commit -m "${ name } : Provides its own types" && git push -u origin not-needed-${ name } ` ) ;
164
163
log ( ` And comment PR: This will deprecate \`@types/${ name } \` in favor of just \`${ name } \`. CC ${ contributorUrls } ` ) ;
165
- if ( new Semver ( major , minor , 0 ) . greaterThan ( firstTypedVersion ) ) {
164
+ if ( semver . gt ( ` ${ major } . ${ minor } .0` , firstTypedVersion ) ) {
166
165
log ( " WARNING: our version is greater!" ) ;
167
166
}
168
167
if ( dependedOn . has ( name ) ) {
@@ -177,11 +176,11 @@ export async function packageHasTypes(packageName: string, client: UncachedNpmIn
177
176
178
177
function getRegularVersions (
179
178
versions : NpmInfoRawVersions
180
- ) : readonly { readonly version : Semver ; readonly hasTypes : boolean } [ ] {
181
- return mapDefined ( Object . entries ( versions ) , ( [ versionString , info ] ) => {
182
- const version = Semver . tryParse ( versionString ) ;
183
- return version === undefined ? undefined : { version , hasTypes : versionHasTypes ( info ) } ;
184
- } ) ;
179
+ ) : readonly { readonly version : semver . SemVer ; readonly hasTypes : boolean } [ ] {
180
+ return Object . entries ( versions ) . map ( ( [ versionString , info ] ) => ( {
181
+ version : new semver . SemVer ( versionString ) ,
182
+ hasTypes : versionHasTypes ( info ) ,
183
+ } ) ) ;
185
184
}
186
185
187
186
function versionHasTypes ( info : NpmInfoVersion ) : boolean {
0 commit comments