summaryrefslogtreecommitdiff
path: root/cli/lsp/documents.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-03-30 10:43:16 -0400
committerGitHub <noreply@github.com>2023-03-30 10:43:16 -0400
commite0429e2ad641e9207e00838de209ce33b3562f70 (patch)
tree496c38dadb79c4dc9ae4eea755e2ac6a65440ad4 /cli/lsp/documents.rs
parent3deade4b14de809f67ed0471f8e91c91b25fedcc (diff)
fix(repl): improve package.json support (#18497)
1. Fixes a cosmetic issue in the repl where it would display lsp warning messages. 2. Lazily loads dependencies from the package.json on use. 3. Supports using bare specifiers from package.json in the REPL. Closes #17929 Closes #18494
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r--cli/lsp/documents.rs27
1 files changed, 2 insertions, 25 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index d8a94e538..aa47faf62 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -834,8 +834,6 @@ pub struct Documents {
/// A resolver that takes into account currently loaded import map and JSX
/// settings.
resolver: CliGraphResolver,
- /// The npm package requirements found in a package.json file.
- npm_package_json_reqs: Arc<Vec<NpmPackageReq>>,
/// The npm package requirements found in npm specifiers.
npm_specifier_reqs: Arc<Vec<NpmPackageReq>>,
/// Gets if any document had a node: specifier such that a @types/node package
@@ -856,7 +854,6 @@ impl Documents {
resolver_config_hash: 0,
imports: Default::default(),
resolver: CliGraphResolver::default(),
- npm_package_json_reqs: Default::default(),
npm_specifier_reqs: Default::default(),
has_injected_types_node_package: false,
specifier_resolver: Arc::new(SpecifierResolver::new(location)),
@@ -994,15 +991,9 @@ impl Documents {
}
/// Returns a collection of npm package requirements.
- pub fn npm_package_reqs(&mut self) -> Vec<NpmPackageReq> {
+ pub fn npm_package_reqs(&mut self) -> Arc<Vec<NpmPackageReq>> {
self.calculate_dependents_if_dirty();
- let mut reqs = Vec::with_capacity(
- self.npm_package_json_reqs.len() + self.npm_specifier_reqs.len(),
- );
- // resolve the package.json reqs first, then the npm specifiers
- reqs.extend(self.npm_package_json_reqs.iter().cloned());
- reqs.extend(self.npm_specifier_reqs.iter().cloned());
- reqs
+ self.npm_specifier_reqs.clone()
}
/// Returns if a @types/node package was injected into the npm
@@ -1206,20 +1197,6 @@ impl Documents {
maybe_jsx_config.as_ref(),
maybe_package_json_deps.as_ref(),
);
- self.npm_package_json_reqs = Arc::new({
- match &maybe_package_json_deps {
- Some(deps) => {
- let mut reqs = deps
- .values()
- .filter_map(|r| r.as_ref().ok())
- .cloned()
- .collect::<Vec<_>>();
- reqs.sort();
- reqs
- }
- None => Vec::new(),
- }
- });
let deps_installer = PackageJsonDepsInstaller::new(
npm_registry_api.clone(),
npm_resolution.clone(),