@@ -18,27 +18,49 @@ export class ModrinthRepository implements IRepository {
1818 }
1919
2020 async getModReleases ( modId : string ) : Promise < ModReleases > {
21+ type Data = Array < {
22+ game_versions : string [ ] ;
23+ version_number : string ;
24+ loaders : string [ ] ;
25+ files : {
26+ url : string ;
27+ } [ ] ;
28+ } > ;
29+
2130 const versionsResp = await this . fetchClient ( `https://api.modrinth.com/v2/project/${ modId } /version` ) ;
2231 if ( ! versionsResp . ok ) throw new Error ( "Could not fetch versions from Modrinth" ) ;
23- const versionsData = await versionsResp . json ( ) ;
32+ const jsonResp : Data = await versionsResp . json ( ) ;
2433
25- const releases : ModRepoRelease [ ] = versionsData . map ( ( v : any ) => ( {
26- mcVersions : new Set ( v . game_versions ) ,
27- modVersion : v . version_number ,
28- repository : ModRepositoryName . MODRINTH ,
29- loaders : new Set ( v . loaders . map ( ModLoaderUtil . from ) ) ,
30- downloadUrl : v . files ?. [ 0 ] ?. url || '' ,
31- } ) ) ;
34+ const releases : ModRepoRelease [ ] = jsonResp . map ( file => {
35+ const mcVersions = new Set ( file . game_versions ) ;
36+ const loaders = new Set ( file . loaders . map ( ModLoaderUtil . from ) ) ;
37+ return {
38+ mcVersions,
39+ modVersion : file . version_number ,
40+ repository : ModRepositoryName . MODRINTH ,
41+ loaders,
42+ downloadUrl : file . files ?. [ 0 ] ?. url || '' ,
43+ } ;
44+ } ) ;
3245
3346 return releases ;
3447 }
3548
3649 async searchMods ( query : string , maxResults : number ) : Promise < ModRepoMetadata [ ] > {
37- const resp = await this . fetchClient ( `https://api.modrinth.com/v2/search?facets=[["project_type:mod"]]&query=${ encodeURIComponent ( query ) } &limit=${ maxResults } ` ) ;
50+ type Data = {
51+ hits : Array < {
52+ slug : string ;
53+ title : string ;
54+ icon_url ?: string ;
55+ downloads ?: number ;
56+ } > ;
57+ } ;
58+
59+ const resp = await this . fetchClient ( `https://api.modrinth.com/v2/search?facets=[[\"project_type:mod\"]]&query=${ encodeURIComponent ( query ) } &limit=${ maxResults } ` ) ;
3860 if ( ! resp . ok ) throw new Error ( "Failed to fetch search results from Modrinth" ) ;
39- const data = await resp . json ( ) ;
61+ const jsonResp : Data = await resp . json ( ) ;
4062
41- return data . hits . map ( ( hit : any ) => ( {
63+ return jsonResp . hits . map ( hit => ( {
4264 id : hit . slug ,
4365 repository : ModRepositoryName . MODRINTH ,
4466 name : hit . title ,
0 commit comments