From bcb9fa93f0cda852ea5ab7bab176d5aed7870395 Mon Sep 17 00:00:00 2001 From: Haroen Viaene Date: Wed, 22 May 2019 11:02:48 +0200 Subject: [PATCH 1/4] feat(version): more efficient query Note that I blind coded this, so definitely check out in the preview if it works. reference: https://www.algolia.com/doc/api-reference/api-methods/get-objects/?language=javascript I also changed the require out for the way smaller `algoliasearch/lite` --- .../Dependencies/VersionEntry/index.js | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js index 98b530adca2..135589170ec 100644 --- a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js +++ b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js @@ -3,7 +3,7 @@ import CrossIcon from 'react-icons/lib/md/clear'; import RefreshIcon from 'react-icons/lib/md/refresh'; import ArrowDropDown from 'react-icons/lib/md/keyboard-arrow-down'; import ArrowDropUp from 'react-icons/lib/md/keyboard-arrow-up'; -import algoliasearch from 'algoliasearch'; +import algoliasearch from 'algoliasearch/lite'; import compareVersions from 'compare-versions'; import Tooltip from '@codesandbox/common/lib/components/Tooltip'; @@ -77,18 +77,20 @@ export default class VersionEntry extends React.PureComponent { '00383ecd8441ead30b1b0ff981c426f5' ); const index = client.initIndex('npm-search'); - index.search({ query: dependency, hitsPerPage: 1 }, (err, { hits }) => { - const versions = Object.keys(hits[0].versions).sort((a, b) => { - try { - return compareVersions(b, a); - } catch (e) { - return 0; - } - }); - this.setState({ - versions, + index + .getObject(dependency, ['versions']) + .then(({ versions }) => { + const versions = Object.keys(versions).sort((a, b) => { + try { + return compareVersions(b, a); + } catch (e) { + return 0; + } + }); + this.setState({ + versions + }); }); - }); try { const versionRegex = /^\d{1,3}\.\d{1,3}.\d{1,3}$/; From 9744f1c9721e9a122eac00ae622b25b11a8050b8 Mon Sep 17 00:00:00 2001 From: Sara Vieira Date: Wed, 22 May 2019 12:58:06 +0200 Subject: [PATCH 2/4] yarn lock --- .../Dependencies/VersionEntry/index.js | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js index 135589170ec..dbaa00e79ce 100644 --- a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js +++ b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js @@ -1,4 +1,4 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import CrossIcon from 'react-icons/lib/md/clear'; import RefreshIcon from 'react-icons/lib/md/refresh'; import ArrowDropDown from 'react-icons/lib/md/keyboard-arrow-down'; @@ -77,20 +77,18 @@ export default class VersionEntry extends React.PureComponent { '00383ecd8441ead30b1b0ff981c426f5' ); const index = client.initIndex('npm-search'); - index - .getObject(dependency, ['versions']) - .then(({ versions }) => { - const versions = Object.keys(versions).sort((a, b) => { - try { - return compareVersions(b, a); - } catch (e) { - return 0; - } - }); - this.setState({ - versions - }); + index.getObject(dependency, ['versions']).then(({ versions }) => { + Object.keys(versions).sort((a, b) => { + try { + return compareVersions(b, a); + } catch (e) { + return 0; + } + }); + this.setState({ + versions, }); + }); try { const versionRegex = /^\d{1,3}\.\d{1,3}.\d{1,3}$/; @@ -130,7 +128,7 @@ export default class VersionEntry extends React.PureComponent { const { hovering, version, size, open, versions } = this.state; return ( - + <> ) : null} - + ); } } From 9bc86d3040db563d4d59e358715a6b8d88463a62 Mon Sep 17 00:00:00 2001 From: Sara Vieira Date: Wed, 22 May 2019 13:01:35 +0200 Subject: [PATCH 3/4] small fix --- .../Workspace/Dependencies/VersionEntry/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js index dbaa00e79ce..4ee2b53120d 100644 --- a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js +++ b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Fragment } from 'react'; import CrossIcon from 'react-icons/lib/md/clear'; import RefreshIcon from 'react-icons/lib/md/refresh'; import ArrowDropDown from 'react-icons/lib/md/keyboard-arrow-down'; @@ -77,8 +77,8 @@ export default class VersionEntry extends React.PureComponent { '00383ecd8441ead30b1b0ff981c426f5' ); const index = client.initIndex('npm-search'); - index.getObject(dependency, ['versions']).then(({ versions }) => { - Object.keys(versions).sort((a, b) => { + index.getObject(dependency, ['versions']).then(({ versions: hits }) => { + const versions = Object.keys(hits).sort((a, b) => { try { return compareVersions(b, a); } catch (e) { @@ -128,7 +128,7 @@ export default class VersionEntry extends React.PureComponent { const { hovering, version, size, open, versions } = this.state; return ( - <> + ) : null} - + ); } } From 9a3fcfdebc96a2a46fc046b9f236c0712de4b9d7 Mon Sep 17 00:00:00 2001 From: Sara Vieira Date: Wed, 22 May 2019 13:09:25 +0200 Subject: [PATCH 4/4] rename var --- .../Editor/Workspace/Dependencies/VersionEntry/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js index 4ee2b53120d..7dc4d9edc1a 100644 --- a/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js +++ b/packages/app/src/app/pages/Sandbox/Editor/Workspace/Dependencies/VersionEntry/index.js @@ -77,8 +77,8 @@ export default class VersionEntry extends React.PureComponent { '00383ecd8441ead30b1b0ff981c426f5' ); const index = client.initIndex('npm-search'); - index.getObject(dependency, ['versions']).then(({ versions: hits }) => { - const versions = Object.keys(hits).sort((a, b) => { + index.getObject(dependency, ['versions']).then(({ versions: results }) => { + const versions = Object.keys(results).sort((a, b) => { try { return compareVersions(b, a); } catch (e) {