@@ -14,12 +14,12 @@ import { glob, globSync } from "#core/glob";
1414import GlobPatterns from "#core/glob/patterns" ;
1515import Locale from "#core/locale" ;
1616import SemanticVersion from "#core/semantic-version" ;
17- import SemanticVersionRange from "#core/semantic-version/range" ;
1817import Table from "#core/text/table" ;
1918import { confirm , mergeObjects , objectIsEmpty , repeatAction } from "#core/utils" ;
2019import yaml from "#core/yaml" ;
2120import Git from "#lib/git" ;
2221import lintFile from "#lib/lint/file" ;
22+ import Dependencies from "#lib/package/dependencies" ;
2323import Docs from "#lib/package/docs" ;
2424import Localization from "#lib/package/localization" ;
2525import Wiki from "#lib/package/wiki" ;
@@ -320,21 +320,12 @@ export default class Package {
320320
321321 get dependencies ( ) {
322322 if ( ! this . #dependencies ) {
323- this . #dependencies = new Map ( Object . entries ( {
324- ...this . config . dependencies ,
325- ...this . config . devDependencies ,
326- ...this . config . peerDependencies ,
327- ...this . config . optionalDependencies ,
328- } ) ) ;
323+ this . #dependencies = new Dependencies ( this . config ) ;
329324 }
330325
331326 return this . #dependencies;
332327 }
333328
334- get hasDependencies ( ) {
335- return Boolean ( this . dependencies . size ) ;
336- }
337-
338329 // public
339330 patchVersion ( version ) {
340331 const root = this . root ;
@@ -445,41 +436,20 @@ export default class Package {
445436 }
446437
447438 checkPreReleaseDependencies ( ) {
448- for ( const [ name , version ] of this . dependencies . entries ( ) ) {
449-
450- // process known tags
451- if ( version === "latest" ) {
452- continue ;
453- }
454- else if ( version === "next" ) {
455- return result ( [ 500 , `Package "${ this . name } " has pre-release dependency "${ name } @${ version } "` ] ) ;
456- }
457-
458- let dependencyRange ;
459-
460- // detect git url
461- const match = version . match ( / # s e m v e r : ( .+ ) $ / ) ;
462-
463- if ( match ) {
464- dependencyRange = match [ 1 ] ;
465- }
466- else {
467- dependencyRange = version ;
468- }
439+ const preReleaseDependencies = this . dependencies . preReleaseNames ;
469440
470- try {
471- dependencyRange = new SemanticVersionRange ( dependencyRange ) ;
472-
473- if ( dependencyRange . hasPreReleaseDependencies ) {
474- return result ( [ 500 , `Package "${ this . name } " has pre-release dependency "${ name } @${ version } "` ] ) ;
475- }
476- }
477- catch {
478- return result ( [ 500 , `Unable to parse dependency version "${ name } @ ${ version } "` ] ) ;
479- }
441+ if ( preReleaseDependencies . size ) {
442+ return result ( [
443+ 500 ,
444+ `Package "${ this . name } " has pre-release dependencies: ${ [ ...preReleaseDependencies ]
445+ . sort ( )
446+ . map ( name => `"${ name } "` )
447+ . join ( ", " ) } `,
448+ ] ) ;
449+ }
450+ else {
451+ return result ( 200 ) ;
480452 }
481-
482- return result ( 200 ) ;
483453 }
484454
485455 async release ( { preReleaseTag, yes } = { } ) {
@@ -674,7 +644,7 @@ export default class Package {
674644 }
675645
676646 async getOutdatedDependencies ( { all } = { } ) {
677- if ( ! this . hasDependencies ) return result ( 200 ) ;
647+ if ( ! this . dependencies . hasDependencies ) return result ( 200 ) ;
678648
679649 return new Promise ( resolve => {
680650 childProcess . exec (
@@ -700,7 +670,7 @@ export default class Package {
700670 }
701671
702672 async updateDependencies ( { all, outdated, linked, missing, install, reinstall, commit, quiet, confirmInstall, outdatedDependencies, cache = { } } = { } ) {
703- if ( ! this . hasDependencies ) return result ( 200 ) ;
673+ if ( ! this . dependencies . hasDependencies ) return result ( 200 ) ;
704674
705675 var res ;
706676
@@ -1290,6 +1260,10 @@ export default class Package {
12901260 delete config . scripts ?. test ;
12911261 }
12921262
1263+ // dependencies
1264+ const dependencies = new Dependencies ( config ) ;
1265+ dependencies . fix ( ) ;
1266+
12931267 if ( config . scripts && objectIsEmpty ( config . scripts ) ) {
12941268 delete config . scripts ;
12951269 }
@@ -1497,7 +1471,7 @@ export default class Package {
14971471
14981472 await Promise . all ( [
14991473 ...new Set ( [
1500- ...this . dependencies . keys ( ) ,
1474+ ...this . dependencies . names ,
15011475 ...( await glob ( [ "*" , "@*/*" ] , {
15021476 "cwd" : this . root + "/node_modules" ,
15031477 "files" : false ,
0 commit comments