@@ -98,6 +98,13 @@ export function validatePackageJson(
9898 `${ typesDirectoryName } 's package.json has bad "devDependencies": must include \`"@types/${ typesDirectoryName } ": "workspace:."\`` ,
9999 ) ;
100100 }
101+ // dependency version ranges
102+ for ( const depsKey of [ "dependencies" , "peerDependencies" , "devDependencies" ] as const ) {
103+ const deps = packageJson [ depsKey ] ;
104+ if ( deps && typeof deps === "object" && ! Array . isArray ( deps ) ) {
105+ errors . push ( ...checkDependencyVersions ( typesDirectoryName , depsKey , deps as Record < string , unknown > ) ) ;
106+ }
107+ }
101108 // typesVersions
102109 if ( needsTypesVersions ) {
103110 assert . strictEqual (
@@ -475,10 +482,6 @@ export function checkPackageJsonDependencies(
475482Please make a pull request to microsoft/DefinitelyTyped-tools adding it to \`packages/definitions-parser/allowedPackageJsonDependencies.txt\`.` ;
476483 errors . push ( `In ${ path } : ${ msg } ` ) ;
477484 }
478- const version = ( dependencies as { [ key : string ] : unknown } ) [ dependencyName ] ;
479- if ( typeof version !== "string" ) {
480- errors . push ( `In ${ path } : Dependency version for ${ dependencyName } should be a string.` ) ;
481- }
482485 }
483486 if ( devDependencySelfName ) {
484487 const selfDependency = ( dependencies as { [ key : string ] : string | undefined } ) [ devDependencySelfName ] ;
@@ -492,3 +495,26 @@ Please make a pull request to microsoft/DefinitelyTyped-tools adding it to \`pac
492495 }
493496 return errors ;
494497}
498+
499+ function checkDependencyVersions (
500+ typesDirectoryName : string ,
501+ depsKey : "dependencies" | "peerDependencies" | "devDependencies" ,
502+ dependencies : Record < string , unknown > ,
503+ ) : string [ ] {
504+ const errors : string [ ] = [ ] ;
505+ for ( const dependencyName of Object . keys ( dependencies ) ) {
506+ const version = dependencies [ dependencyName ] ;
507+ if ( typeof version !== "string" ) {
508+ errors . push (
509+ `${ typesDirectoryName } 's package.json has bad "${ depsKey } ": version for ${ dependencyName } should be a string.` ,
510+ ) ;
511+ } else if ( version !== "workspace:." && semver . validRange ( version ) === null ) {
512+ errors . push (
513+ `${ typesDirectoryName } 's package.json has bad "${ depsKey } ": version for ${ dependencyName } (${ JSON . stringify (
514+ version ,
515+ ) } ) must be a valid semver range or "workspace:.".`,
516+ ) ;
517+ }
518+ }
519+ return errors ;
520+ }
0 commit comments