From 4fe1a055cbd40d81ebc91e70bd0cb017d66b0cd1 Mon Sep 17 00:00:00 2001 From: Haroen Viaene Date: Fri, 6 Apr 2018 12:46:46 +0200 Subject: [PATCH 1/3] chore(npm source): use index.browse This will get all of the hits, even if they are on multiple pages, and is actually better for this usecase Signed-off-by: Haroen Viaene --- .../src/gatsby-node.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/gatsby-source-npm-package-search/src/gatsby-node.js b/packages/gatsby-source-npm-package-search/src/gatsby-node.js index 4d9846f1418ba..dac1a41572ce1 100644 --- a/packages/gatsby-source-npm-package-search/src/gatsby-node.js +++ b/packages/gatsby-source-npm-package-search/src/gatsby-node.js @@ -1,7 +1,7 @@ const algoliasearch = require(`algoliasearch`) const crypto = require(`crypto`) -const client = algoliasearch(`OFCNCOG2CU`, `f54e21fa3a2a0160595bb058179bfb1e`) +const client = algoliasearch(`OFCNCOG2CU`, `6fbcaeafced8913bf0e4d39f0b541957`) var index = client.initIndex(`npm-search`) const createContentDigest = obj => @@ -10,6 +10,17 @@ const createContentDigest = obj => .update(JSON.stringify(obj)) .digest(`hex`) +function browse({ index, ...params }) { + let hits = [] + const browser = index.browseAll(params) + + return new Promise((resolve, reject) => { + browser.on(`result`, content => (hits = hits.concat(content.hits))) + browser.on(`end`, () => resolve(hits)) + browser.on(`error`, err => reject(err)) + }) +} + exports.sourceNodes = async ( { boundActionCreators, createNodeId }, { keywords } @@ -24,8 +35,8 @@ exports.sourceNodes = async ( buildFilter.push(`keywords:${keyword}`) }) - const data = await index.search({ - query: ``, + const data = await browse({ + index, filters: `(${buildFilter.join(` OR `)})`, hitsPerPage: 1000, }) @@ -52,7 +63,6 @@ exports.sourceNodes = async ( readmeNode.internal.contentDigest = createContentDigest(readmeNode) // Remove unneeded data delete hit.readme - delete hit._highlightResult delete hit.versions const node = { From 77ed9a73cd3ce404878efcd813ab55ad7d4d1126 Mon Sep 17 00:00:00 2001 From: Haroen Viaene Date: Fri, 6 Apr 2018 12:47:07 +0200 Subject: [PATCH 2/3] chore(search): update API key with unique one for gatsby Signed-off-by: Haroen Viaene --- www/src/components/searchbar-body.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/src/components/searchbar-body.js b/www/src/components/searchbar-body.js index 51fd89e421d3e..35879872ece7a 100644 --- a/www/src/components/searchbar-body.js +++ b/www/src/components/searchbar-body.js @@ -416,7 +416,7 @@ class SearchBar extends Component { return (
Date: Wed, 11 Apr 2018 14:23:37 +0200 Subject: [PATCH 3/3] simplify and fix Signed-off-by: Haroen Viaene --- .../src/gatsby-node.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/gatsby-source-npm-package-search/src/gatsby-node.js b/packages/gatsby-source-npm-package-search/src/gatsby-node.js index dac1a41572ce1..fb9bc54c6e245 100644 --- a/packages/gatsby-source-npm-package-search/src/gatsby-node.js +++ b/packages/gatsby-source-npm-package-search/src/gatsby-node.js @@ -29,19 +29,15 @@ exports.sourceNodes = async ( console.log(`Grabbing local NPM packages...`) - let buildFilter = [] + const buildFilter = keywords.map(keyword => `keywords:${keyword}`) - keywords.forEach(keyword => { - buildFilter.push(`keywords:${keyword}`) - }) - - const data = await browse({ + const hits = await browse({ index, filters: `(${buildFilter.join(` OR `)})`, hitsPerPage: 1000, }) - data.hits.forEach(hit => { + hits.forEach(hit => { // commented changed remove all badges and images from readme content to keep the creation of the node from failing below // if (hit.readme.includes(`![`)) { // hit.readme = hit.readme.replace(/[[]?!\[.*\b/gi, ``)