@@ -71,6 +71,7 @@ use crate::iam::ReqIamExt;
7171use crate :: ids:: PackageName ;
7272use crate :: ids:: PackagePath ;
7373use crate :: ids:: ScopeName ;
74+ use crate :: ids:: Version ;
7475use crate :: metadata:: PackageMetadata ;
7576use crate :: metadata:: VersionMetadata ;
7677use crate :: npm:: generate_npm_version_manifest;
@@ -333,12 +334,30 @@ pub async fn get_handler(req: Request<Body>) -> ApiResult<ApiPackage> {
333334 Span :: current ( ) . record ( "package" , field:: display ( & package) ) ;
334335
335336 let db = req. data :: < Database > ( ) . unwrap ( ) ;
336- let package = db
337+ let res_package = db
337338 . get_package ( & scope, & package)
338339 . await ?
339340 . ok_or ( ApiError :: PackageNotFound ) ?;
340341
341- Ok ( ApiPackage :: from ( package) )
342+ let mut api_package = ApiPackage :: from ( res_package) ;
343+
344+ if let Some ( latest_v) = & api_package. latest_version {
345+ let latest_version = Version :: new ( latest_v) . unwrap ( ) ;
346+ let dependency_count = db
347+ . count_package_dependencies ( & scope, & package, & latest_version)
348+ . await ?;
349+ api_package. dependency_count = dependency_count as u64 ;
350+ }
351+
352+ let dependent_count = db
353+ . count_package_dependents (
354+ crate :: db:: DependencyKind :: Jsr ,
355+ & format ! ( "@{}/{}" , scope, package) ,
356+ )
357+ . await ?;
358+ api_package. dependent_count = dependent_count as u64 ;
359+
360+ Ok ( api_package)
342361}
343362
344363#[ instrument(
0 commit comments