Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --Hi So I noticed that the autocomplete is slow to update or can sometimes return wrong/outdated information. For example: if a package releases a patch / new version, it can take hours, maybe days until the autocompletion also suggests that version. My second concern about this is that it's actually using which is not run by npm and they have a separate which users are not aware of when using this VS Code extension. Source code From a privacy policy perspective / GDPR and also reliability issues it seems appropriate to remove all usage of this third-party API and only use npm's. Relevant past issues about npms from this repository (I found many more in other repositories):
To verify, check that code completion in dependencies of work as expected. run VSCode in a environment where is not on the path, and use hovers over dependencies of . as dependency and verify that the hover shows the actual latest version (currently 15)

Discussion:
collector.setAsIncomplete(); } <del> queryUrl = `https://api.npms.io/v2/search/suggestions?size=${LIMIT}&q=${encodeURIComponent(currentWord)}`; </del> <ins> queryUrl = `https://registry.npmjs.org/-/v1/search?size=${LIMIT}&text=${encodeURIComponent(currentWord)}`; </ins> return this.xhr({ url: queryUrl, agent: USER_AGENT

if (success.status === 200) { try { const obj = JSON.parse(success.responseText); <del> if (obj && Array.isArray(obj)) { const results = <{ package: SearchPackageInfo; }[]>obj; </del> <ins> if (obj && obj.objects && Array.isArray(obj.objects)) { const results = <{ package: SearchPackageInfo; }[]>obj.objects; </ins> for (const result of results) { this.processPackage(result.package, addValue, isLast, collector); }

if (name.length < 4) { name = ''; } <del> let queryUrl = `https://api.npms.io/v2/search?q=scope:${scope}%20${name}&size=250`; </del> <ins> let queryUrl = `https://registry.npmjs.com/-/v1/search?text=scope:${scope}%20${name}&size=250`; </ins> return this.xhr({ url: queryUrl, agent: USER_AGENT

if (success.status === 200) { try { const obj = JSON.parse(success.responseText); <del> if (obj && Array.isArray(obj.results)) { const objects = <{ package: SearchPackageInfo }[]>obj.results; </del> <ins> if (obj && Array.isArray(obj.objects)) { const objects = <{ package: SearchPackageInfo; }[]>obj.objects; </ins> for (let object of objects) { this.processPackage(object.package, addValue, isLast, collector); }

} private async npmjsView(pack: string): Promise<ViewPackageInfo | undefined> { <del> const queryUrl = 'https://api.npms.io/v2/package/' + encodeURIComponent(pack); </del> <ins> const queryUrl = 'https://registry.npmjs.org/' + encodeURIComponent(pack); </ins> try { const success = await this.xhr({ url: queryUrl, agent: USER_AGENT }); const obj = JSON.parse(success.responseText); <del> const metadata = obj?.collected?.metadata; if (metadata) { return { description: metadata.description || '', version: metadata.version, homepage: metadata.links?.homepage || '' }; } </del> <ins> return { description: obj.description || '', version: Object.keys(obj.versions).pop(), homepage: obj.homepage || '' }; </ins> } catch (e) { //ignore