1- import { Injectable , UseCache } from "@tsed/common" ;
1+ import { InjectContext } from "@tsed/async-hook-context" ;
2+ import { Injectable , PlatformContext , UseCache } from "@tsed/common" ;
23import { toMap } from "@tsed/core" ;
34import { Inject } from "@tsed/di" ;
45import { FormioSubmission } from "@tsed/formio" ;
5- import { NpmPackage } from "../domain/npm/NpmPackage" ;
6+ import { NpmPackage , NpmPackageType } from "../domain/npm/NpmPackage" ;
67import { GithubClient } from "../infra/back/github/GithubClient" ;
78import { NpmClient } from "../infra/back/npm/NpmClient" ;
89import { FormioRepository } from "./FormioRepository" ;
910
1011export type SubmissionPackage = FormioSubmission < NpmPackage & { disabled : boolean } > ;
1112
1213const RANKS = {
13- premium : - 1 ,
14- official : 0 ,
15- "3rd-party" : 0
14+ [ NpmPackageType . PREMIUM ] : 1 ,
15+ [ NpmPackageType . OFFICIAL ] : 0 ,
16+ [ NpmPackageType . THIRD_PARTY ] : 0
1617} ;
1718
1819@Injectable ( )
1920export class WarehouseService extends FormioRepository {
2021 protected formName = "packages" ;
2122
23+ @InjectContext ( )
24+ protected $ctx : PlatformContext ;
25+
2226 @Inject ( )
2327 protected npmClient : NpmClient ;
2428
@@ -69,17 +73,16 @@ export class WarehouseService extends FormioRepository {
6973 } ) ;
7074 } ) ;
7175
72- return [ ...otherPackages , ...( result . filter ( Boolean ) as NpmPackage [ ] ) ] . sort ( ( p1 , p2 ) => {
73- if ( RANKS [ p1 . type ] < RANKS [ p2 . type ] ) {
74- return - 1 ;
75- }
76-
77- if ( p1 . downloads > p2 . downloads ) {
78- return - 1 ;
79- }
76+ const allPackages = [ ...otherPackages , ...( result . filter ( Boolean ) as NpmPackage [ ] ) ] . filter ( Boolean ) ;
8077
81- return 1 ;
82- } ) ;
78+ return [
79+ ...allPackages . filter ( ( pkg ) => pkg . type === NpmPackageType . PREMIUM ) . sort ( ) ,
80+ ...allPackages
81+ . filter ( ( pkg ) => pkg . type != NpmPackageType . PREMIUM )
82+ . sort ( ( p1 , p2 ) => {
83+ return p1 . downloads < p2 . downloads ? 1 : - 1 ;
84+ } )
85+ ] ;
8386 }
8487
8588 async getStars ( pkg : NpmPackage ) {
@@ -89,9 +92,19 @@ export class WarehouseService extends FormioRepository {
8992 return 0 ;
9093 }
9194
92- const { stargazers_count} = await this . githubClient . getInfo ( meta . owner , meta . repo ) ;
95+ try {
96+ const { stargazers_count} = await this . githubClient . getInfo ( meta . owner , meta . repo ) ;
9397
94- return stargazers_count ;
98+ return stargazers_count ;
99+ } catch ( er ) {
100+ this . $ctx . logger . error ( {
101+ event : "GITHUB_REPO_INFO_ERROR" ,
102+ error : er ,
103+ owner : meta . owner ,
104+ repo : meta . repo
105+ } ) ;
106+ return 0 ;
107+ }
95108 }
96109
97110 getPackagesSubmissions ( ) : Promise < SubmissionPackage > {
0 commit comments