1import { ModuleDescriptor, ResolveOptions, SearchResults } from '../types'; 2 3/** 4 * Resolves search results to a list of platform-specific configuration. 5 */ 6export async function resolveModulesAsync( 7 searchResults: SearchResults, 8 options: ResolveOptions 9): Promise<ModuleDescriptor[]> { 10 const platformLinking = require(`../platforms/${options.platform}`); 11 12 return ( 13 await Promise.all( 14 Object.entries(searchResults).map(async ([packageName, revision]) => { 15 const resolvedModule = await platformLinking.resolveModuleAsync( 16 packageName, 17 revision, 18 options 19 ); 20 return resolvedModule 21 ? { 22 packageName, 23 packageVersion: revision.version, 24 ...resolvedModule, 25 } 26 : null; 27 }) 28 ) 29 ) 30 .filter(Boolean) 31 .sort((a, b) => a.packageName.localeCompare(b.packageName)); 32} 33