11import inquirer from 'inquirer' ;
22import InquirerAutocompletePrompt from 'inquirer-autocomplete-prompt' ;
3+ import { getSuggestions } from 'npms-client' ;
34
45import formatPackageDetails from './formatPackageDetails' ;
5- import packageSearcher from './packageSearcher' ;
66
77inquirer . registerPrompt ( 'autocomplete' , InquirerAutocompletePrompt ) ;
88
@@ -12,46 +12,57 @@ class PackageSearchPrompter {
1212 this . packageDetailsMapping = { } ;
1313 }
1414
15+ async getPackageDetails ( searchTerm ) {
16+ const packageResults = await getSuggestions ( { terms : [ searchTerm ] } ) ;
17+
18+ const formattedPackageDetails = [ ] ;
19+ const packageDetailsMapping = { } ;
20+ this . packageDetailsMapping = { } ;
21+
22+ packageResults . forEach ( ( result ) => {
23+ const {
24+ name,
25+ version,
26+ description,
27+ publisher,
28+ } = result . package ;
29+
30+ const formattedDetails = formatPackageDetails ( {
31+ name,
32+ version,
33+ description,
34+ author : publisher . username ,
35+ score : result . score . final ,
36+ } ) ;
37+
38+ formattedPackageDetails . push ( formattedDetails ) ;
39+
40+ packageDetailsMapping [ formattedDetails ] = { name, version } ;
41+ } ) ;
42+
43+ this . packageDetailsMapping = packageDetailsMapping ;
44+ return formattedPackageDetails ;
45+ }
46+
1547 async prompt ( ) {
1648 const { npmPackage } = await inquirer . prompt ( [
1749 {
1850 type : 'autocomplete' ,
1951 name : 'npmPackage' ,
2052 message : 'Search for npm package' ,
2153 source : async ( answersSoFar , searchTerm ) => {
22- const packageResults = await packageSearcher ( { term : searchTerm || '' } ) ;
23-
24- const formattedPackageDetails = [ ] ;
25- const packageDetailsMapping = { } ;
26-
27- packageResults . data . objects . forEach ( ( result ) => {
28- const {
29- name,
30- version,
31- description,
32- publisher,
33- } = result . package ;
34-
35- const formattedDetails = formatPackageDetails ( {
36- name,
37- version,
38- description,
39- author : publisher . username ,
40- score : result . score . final ,
41- } ) ;
54+ if ( ! searchTerm ) {
55+ return [ ] ;
56+ }
4257
43- formattedPackageDetails . push ( formattedDetails ) ;
44-
45- packageDetailsMapping [ formattedDetails ] = { name, version } ;
46- } ) ;
47-
48- this . packageDetailsMapping = packageDetailsMapping ;
49-
50- return formattedPackageDetails ;
58+ return this . getPackageDetails ( searchTerm ) ;
5159 } ,
5260 } ,
5361 ] ) ;
5462
63+ console . log ( this . packageDetailsMapping ) ;
64+ console . log ( 'npm package' , npmPackage ) ;
65+
5566 return this . packageDetailsMapping [ npmPackage ] ;
5667 }
5768}
0 commit comments