diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-07-24 15:35:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-24 15:35:13 -0400 |
commit | 40008c73bb3b0b146b3539929ab5bd826db4c5e3 (patch) | |
tree | 35c29811ce5d2a17ac31af05a231d57d36c47c53 /cli/node.rs | |
parent | d7a9ed9714c2a2c3a8c05ef020d495f5be03972a (diff) |
refactor(ext/node): CjsCodeAnalyzer - analyze_cjs optionally pass source text (#19896)
Diffstat (limited to 'cli/node.rs')
-rw-r--r-- | cli/node.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/cli/node.rs b/cli/node.rs index 75e0d9ef9..2a9a84ef9 100644 --- a/cli/node.rs +++ b/cli/node.rs @@ -1,9 +1,12 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +use std::borrow::Cow; + use deno_ast::CjsAnalysis; use deno_ast::MediaType; use deno_ast::ModuleSpecifier; use deno_core::error::AnyError; +use deno_runtime::deno_fs; use deno_runtime::deno_node::analyze::CjsAnalysis as ExtNodeCjsAnalysis; use deno_runtime::deno_node::analyze::CjsCodeAnalyzer; use deno_runtime::deno_node::analyze::NodeCodeTranslator; @@ -34,11 +37,12 @@ pub fn resolve_specifier_into_node_modules( pub struct CliCjsCodeAnalyzer { cache: NodeAnalysisCache, + fs: deno_fs::FileSystemRc, } impl CliCjsCodeAnalyzer { - pub fn new(cache: NodeAnalysisCache) -> Self { - Self { cache } + pub fn new(cache: NodeAnalysisCache, fs: deno_fs::FileSystemRc) -> Self { + Self { cache, fs } } fn inner_cjs_analysis( @@ -83,9 +87,15 @@ impl CjsCodeAnalyzer for CliCjsCodeAnalyzer { fn analyze_cjs( &self, specifier: &ModuleSpecifier, - source: &str, + source: Option<&str>, ) -> Result<ExtNodeCjsAnalysis, AnyError> { - let analysis = self.inner_cjs_analysis(specifier, source)?; + let source = match source { + Some(source) => Cow::Borrowed(source), + None => { + Cow::Owned(self.fs.read_to_string(&specifier.to_file_path().unwrap())?) + } + }; + let analysis = self.inner_cjs_analysis(specifier, &source)?; Ok(ExtNodeCjsAnalysis { exports: analysis.exports, reexports: analysis.reexports, |