@@ -27,9 +27,18 @@ public async Task DownloadPackage(
2727 string destinationDirectory ,
2828 IEnumerable < string > includePatterns )
2929 {
30- ArgumentNullException . ThrowIfNull ( package ) ;
31- ArgumentNullException . ThrowIfNull ( version ) ;
32- ArgumentNullException . ThrowIfNull ( destinationDirectory ) ;
30+ if ( package is null )
31+ {
32+ throw new ArgumentNullException ( nameof ( package ) ) ;
33+ }
34+ if ( version is null )
35+ {
36+ throw new ArgumentNullException ( nameof ( version ) ) ;
37+ }
38+ if ( destinationDirectory is null )
39+ {
40+ throw new ArgumentNullException ( nameof ( destinationDirectory ) ) ;
41+ }
3342
3443 Directory . CreateDirectory ( destinationDirectory ) ;
3544
@@ -60,13 +69,13 @@ public async Task DownloadPackage(
6069
6170 var results = matcher . Execute ( contents ) ;
6271
63- await Parallel . ForEachAsync (
64- results . Files ,
65- async ( r , ct ) =>
66- {
67- var hash = ( ( NpmPackageFileInfo ) contents . GetFile ( r . Path ) ! ) . Hash ;
68- await DownloadFileAsync ( package , version , r . Path , hash , packageBaseDirectory , destinationDirectory , ct ) ;
69- } ) ;
72+ var tasks = results . Files . Select ( r =>
73+ {
74+ var hash = ( ( NpmPackageFileInfo ) contents . GetFile ( r . Path ) ! ) . Hash ;
75+ return DownloadFileAsync ( package , version , r . Path , hash , packageBaseDirectory , destinationDirectory , CancellationToken . None ) ;
76+ } ) ;
77+
78+ await Task . WhenAll ( tasks ) ;
7079 }
7180
7281 private async Task DownloadFileAsync (
@@ -85,7 +94,7 @@ private async Task DownloadFileAsync(
8594 {
8695 await using var efs = File . OpenRead ( destinationPath ) ;
8796 using var sha = SHA256 . Create ( ) ;
88- var currentFileHash = Convert . ToBase64String ( await sha . ComputeHashAsync ( efs , cancellationToken ) ) ;
97+ var currentFileHash = Convert . ToBase64String ( sha . ComputeHash ( efs ) ) ;
8998
9099 if ( currentFileHash == hash )
91100 {
@@ -102,7 +111,7 @@ private async Task DownloadFileAsync(
102111 Directory . CreateDirectory ( destinationDirectory ) ;
103112
104113 await using var fs = File . Create ( destinationPath ) ;
105- await response . Content . CopyToAsync ( fs , cancellationToken ) ;
114+ await response . Content . CopyToAsync ( fs ) ;
106115 }
107116
108117 private async Task < DirectoryInfoBase > GetPackageContentsAsync ( string package , string version )
0 commit comments