From eba3e759fdd291e681c84a7dadc170d88eacb556 Mon Sep 17 00:00:00 2001 From: velzie Date: Thu, 18 Jul 2024 21:46:44 -0400 Subject: [PATCH] export declarations (untested) --- rewriter/src/rewrite.rs | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/rewriter/src/rewrite.rs b/rewriter/src/rewrite.rs index 951e0f9..cd6676d 100644 --- a/rewriter/src/rewrite.rs +++ b/rewriter/src/rewrite.rs @@ -35,6 +35,15 @@ struct Rewriter { jschanges: Vec, base: Url, } +impl Rewriter { + fn rewrite_url(&mut self, url: String) -> String { + let url = self.base.join(&url).unwrap(); + + let urlencoded = encode(url.as_str()); + + return format!("\"/scramjet/{}\"", urlencoded); + } +} impl<'a> Visit<'a> for Rewriter { fn visit_identifier_reference(&mut self, it: &IdentifierReference<'a>) { @@ -54,13 +63,10 @@ impl<'a> Visit<'a> for Rewriter { fn visit_import_declaration(&mut self, it: &oxc_ast::ast::ImportDeclaration<'a>) { let name = it.source.value.to_string(); - let url = self.base.join(&name).unwrap(); - - let urlencoded = encode(url.as_str()); - + let text = self.rewrite_url(name); self.jschanges.push(JsChange::GenericChange { span: it.source.span, - text: format!("\"/scramjet/{}\"", urlencoded), + text, }); walk::walk_import_declaration(self, it); } @@ -72,6 +78,27 @@ impl<'a> Visit<'a> for Rewriter { walk::walk_import_expression(self, it); } + fn visit_export_all_declaration(&mut self, it: &oxc_ast::ast::ExportAllDeclaration<'a>) { + let name = it.source.value.to_string(); + let text = self.rewrite_url(name); + self.jschanges.push(JsChange::GenericChange { + span: it.source.span, + text, + }); + } + + fn visit_export_named_declaration(&mut self, it: &oxc_ast::ast::ExportNamedDeclaration<'a>) { + if let Some(source) = &it.source { + let name = source.value.to_string(); + let text = self.rewrite_url(name); + self.jschanges.push(JsChange::GenericChange { + span: source.span, + text, + }); + } + walk::walk_export_named_declaration(self, it); + } + fn visit_object_expression(&mut self, it: &oxc_ast::ast::ObjectExpression<'a>) { for prop in &it.properties { match prop {