Skip to content

Commit ab6078d

Browse files
committed
fix(npms-client): add npms-client
1 parent 7120ba9 commit ab6078d

File tree

4 files changed

+47
-35
lines changed

4 files changed

+47
-35
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"chalk": "^2.3.2",
4646
"commander": "^2.15.1",
4747
"inquirer": "^5.2.0",
48-
"inquirer-autocomplete-prompt": "^0.12.2"
48+
"inquirer-autocomplete-prompt": "^0.12.2",
49+
"npms-client": "^1.0.3"
4950
},
5051
"devDependencies": {
5152
"@babel/cli": "^7.0.0-beta.42",

src/PackageSearchPrompter.js

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import inquirer from 'inquirer';
22
import InquirerAutocompletePrompt from 'inquirer-autocomplete-prompt';
3+
import { getSuggestions } from 'npms-client';
34

45
import formatPackageDetails from './formatPackageDetails';
5-
import packageSearcher from './packageSearcher';
66

77
inquirer.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
}

src/packageSearcher.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)