summaryrefslogtreecommitdiff
path: root/ext/node/analyze.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-05-10 09:55:20 -0400
committerGitHub <noreply@github.com>2024-05-10 09:55:20 -0400
commita9708037c9e333104bfdfe0ccadbc40395809c39 (patch)
treee3dd8e5fdb34deced4ccdee152adada90cb10494 /ext/node/analyze.rs
parent6066e069d141d7c0c19e088011fdf3c06782d12c (diff)
fix(node): better cjs re-export handling (#23760)
Closes #23458
Diffstat (limited to 'ext/node/analyze.rs')
-rw-r--r--ext/node/analyze.rs12
1 files changed, 5 insertions, 7 deletions
diff --git a/ext/node/analyze.rs b/ext/node/analyze.rs
index 0a0226625..ad38a511b 100644
--- a/ext/node/analyze.rs
+++ b/ext/node/analyze.rs
@@ -86,7 +86,7 @@ impl<TCjsCodeAnalyzer: CjsCodeAnalyzer> NodeCodeTranslator<TCjsCodeAnalyzer> {
permissions: &dyn NodePermissions,
) -> Result<String, AnyError> {
let mut temp_var_count = 0;
- let mut handled_reexports: HashSet<String> = HashSet::default();
+ let mut handled_reexports: HashSet<ModuleSpecifier> = HashSet::default();
let analysis = self.cjs_code_analyzer.analyze_cjs(specifier, source)?;
@@ -114,12 +114,6 @@ impl<TCjsCodeAnalyzer: CjsCodeAnalyzer> NodeCodeTranslator<TCjsCodeAnalyzer> {
}
while let Some((reexport, referrer)) = reexports_to_handle.pop_front() {
- if handled_reexports.contains(&reexport) {
- continue;
- }
-
- handled_reexports.insert(reexport.to_string());
-
// First, resolve the reexport specifier
let reexport_specifier = self.resolve(
&reexport,
@@ -131,6 +125,10 @@ impl<TCjsCodeAnalyzer: CjsCodeAnalyzer> NodeCodeTranslator<TCjsCodeAnalyzer> {
permissions,
)?;
+ if !handled_reexports.insert(reexport_specifier.clone()) {
+ continue;
+ }
+
// Second, resolve its exports and re-exports
let analysis = self
.cjs_code_analyzer