summaryrefslogtreecommitdiff
path: root/cli/util
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-11-01 12:27:00 -0400
committerGitHub <noreply@github.com>2024-11-01 12:27:00 -0400
commit826e42a5b5880c974ae019a7a21aade6a718062c (patch)
treea46502ecc3c73e4f7fc3a4517d83c7b2f3d0c0d3 /cli/util
parent4774eab64d5176e997b6431f03f075782321b3d9 (diff)
fix: improved support for cjs and cts modules (#26558)
* cts support * better cjs/cts type checking * deno compile cjs/cts support * More efficient detect cjs (going towards stabilization) * Determination of whether .js, .ts, .jsx, or .tsx is cjs or esm is only done after loading * Support `import x = require(...);` Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/util')
-rw-r--r--cli/util/extract.rs8
-rw-r--r--cli/util/logger.rs2
-rw-r--r--cli/util/path.rs27
-rw-r--r--cli/util/text_encoding.rs1
4 files changed, 7 insertions, 31 deletions
diff --git a/cli/util/extract.rs b/cli/util/extract.rs
index 873b7e7f2..f577cbefe 100644
--- a/cli/util/extract.rs
+++ b/cli/util/extract.rs
@@ -64,7 +64,7 @@ fn extract_inner(
}) {
Ok(parsed) => {
let mut c = ExportCollector::default();
- c.visit_program(parsed.program_ref());
+ c.visit_program(parsed.program().as_ref());
c
}
Err(_) => ExportCollector::default(),
@@ -570,14 +570,14 @@ fn generate_pseudo_file(
})?;
let top_level_atoms = swc_utils::collect_decls_with_ctxt::<Atom, _>(
- parsed.program_ref(),
+ &parsed.program_ref(),
parsed.top_level_context(),
);
let transformed =
parsed
.program_ref()
- .clone()
+ .to_owned()
.fold_with(&mut as_folder(Transform {
specifier: &file.specifier,
base_file_specifier,
@@ -1416,7 +1416,7 @@ console.log(Foo);
})
.unwrap();
- collector.visit_program(parsed.program_ref());
+ parsed.program_ref().visit_with(&mut collector);
collector
}
diff --git a/cli/util/logger.rs b/cli/util/logger.rs
index cdc89411f..d93753dfd 100644
--- a/cli/util/logger.rs
+++ b/cli/util/logger.rs
@@ -65,6 +65,8 @@ pub fn init(maybe_level: Option<log::Level>) {
.filter_module("swc_ecma_parser", log::LevelFilter::Error)
// Suppress span lifecycle logs since they are too verbose
.filter_module("tracing::span", log::LevelFilter::Off)
+ // for deno_compile, this is too verbose
+ .filter_module("editpe", log::LevelFilter::Error)
.format(|buf, record| {
let mut target = record.target().to_string();
if let Some(line_no) = record.line() {
diff --git a/cli/util/path.rs b/cli/util/path.rs
index e4ae6e7cb..58bed664f 100644
--- a/cli/util/path.rs
+++ b/cli/util/path.rs
@@ -42,21 +42,6 @@ pub fn get_extension(file_path: &Path) -> Option<String> {
.map(|e| e.to_lowercase());
}
-pub fn specifier_has_extension(
- specifier: &ModuleSpecifier,
- searching_ext: &str,
-) -> bool {
- let Some((_, ext)) = specifier.path().rsplit_once('.') else {
- return false;
- };
- let searching_ext = searching_ext.strip_prefix('.').unwrap_or(searching_ext);
- debug_assert!(!searching_ext.contains('.')); // exts like .d.ts are not implemented here
- if ext.len() != searching_ext.len() {
- return false;
- }
- ext.eq_ignore_ascii_case(searching_ext)
-}
-
pub fn get_atomic_dir_path(file_path: &Path) -> PathBuf {
let rand = gen_rand_path_component();
let new_file_name = format!(
@@ -351,18 +336,6 @@ mod test {
}
#[test]
- fn test_specifier_has_extension() {
- fn get(specifier: &str, ext: &str) -> bool {
- specifier_has_extension(&ModuleSpecifier::parse(specifier).unwrap(), ext)
- }
-
- assert!(get("file:///a/b/c.ts", "ts"));
- assert!(get("file:///a/b/c.ts", ".ts"));
- assert!(!get("file:///a/b/c.ts", ".cts"));
- assert!(get("file:///a/b/c.CtS", ".cts"));
- }
-
- #[test]
fn test_to_percent_decoded_str() {
let str = to_percent_decoded_str("%F0%9F%A6%95");
assert_eq!(str, "🦕");
diff --git a/cli/util/text_encoding.rs b/cli/util/text_encoding.rs
index df72cc2be..8524e63eb 100644
--- a/cli/util/text_encoding.rs
+++ b/cli/util/text_encoding.rs
@@ -97,6 +97,7 @@ fn find_source_map_range(code: &[u8]) -> Option<Range<usize>> {
}
/// Converts an `Arc<str>` to an `Arc<[u8]>`.
+#[allow(dead_code)]
pub fn arc_str_to_bytes(arc_str: Arc<str>) -> Arc<[u8]> {
let raw = Arc::into_raw(arc_str);
// SAFETY: This is safe because they have the same memory layout.