From 4172cbd5ec0f3cbc8b46d032af091293ad0b201b Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 4 Dec 2024 16:09:57 -0500 Subject: [PATCH 1/2] refactor: use resolve_media_type_and_charset_from_content_type from deno_media_type --- Cargo.lock | 3 +- Cargo.toml | 4 + src/source/mod.rs | 194 +--------------------------------------------- 3 files changed, 9 insertions(+), 192 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79798285..fbca23e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -425,6 +425,7 @@ dependencies = [ "bincode", "data-url", "deno_ast", + "deno_media_type", "deno_semver", "deno_terminal 0.1.1", "deno_unsync", @@ -473,8 +474,6 @@ dependencies = [ [[package]] name = "deno_media_type" version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf552fbdedbe81c89705349d7d2485c7051382b000dfddbdbf7fc25931cf83" dependencies = [ "data-url", "serde", diff --git a/Cargo.toml b/Cargo.toml index 23cdd7bc..0e49bf6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,7 @@ anyhow = "1.0.43" async-trait = "0.1.68" data-url = "0.3.0" deno_ast = { version = "0.44.0", features = ["dep_analysis", "emit"] } +deno_media_type = "0.2.1" deno_unsync.workspace = true deno_semver = "0.6.0" encoding_rs = "0.8.33" @@ -79,3 +80,6 @@ codegen-units = 1 incremental = true lto = true opt-level = "z" + +[patch.crates-io] +deno_media_type = { path = "../deno_media_type" } diff --git a/src/source/mod.rs b/src/source/mod.rs index 90666801..de3cfa43 100644 --- a/src/source/mod.rs +++ b/src/source/mod.rs @@ -754,9 +754,11 @@ pub fn resolve_media_type_and_charset_from_headers<'a>( specifier: &ModuleSpecifier, maybe_headers: Option<&'a HashMap>, ) -> (MediaType, Option<&'a str>) { - resolve_media_type_and_charset_from_content_type( + deno_media_type::resolve_media_type_and_charset_from_content_type( specifier, - maybe_headers.and_then(|h| h.get("content-type")), + maybe_headers + .and_then(|h| h.get("content-type")) + .map(|v| v.as_str()), ) } @@ -959,194 +961,6 @@ pub mod tests { ); } - macro_rules! file_url { - ($path:expr) => { - if cfg!(target_os = "windows") { - concat!("file:///C:", $path) - } else { - concat!("file://", $path) - } - }; - } - - #[test] - fn test_resolve_media_type_and_charset_from_content_type() { - let fixtures = vec![ - // Extension only - (file_url!("/foo/bar.ts"), None, MediaType::TypeScript, None), - (file_url!("/foo/bar.tsx"), None, MediaType::Tsx, None), - (file_url!("/foo/bar.d.cts"), None, MediaType::Dcts, None), - (file_url!("/foo/bar.d.mts"), None, MediaType::Dmts, None), - (file_url!("/foo/bar.d.ts"), None, MediaType::Dts, None), - (file_url!("/foo/bar.js"), None, MediaType::JavaScript, None), - (file_url!("/foo/bar.jsx"), None, MediaType::Jsx, None), - (file_url!("/foo/bar.json"), None, MediaType::Json, None), - (file_url!("/foo/bar.wasm"), None, MediaType::Wasm, None), - (file_url!("/foo/bar.cjs"), None, MediaType::Cjs, None), - (file_url!("/foo/bar.mjs"), None, MediaType::Mjs, None), - (file_url!("/foo/bar.cts"), None, MediaType::Cts, None), - (file_url!("/foo/bar.mts"), None, MediaType::Mts, None), - (file_url!("/foo/bar"), None, MediaType::Unknown, None), - // Media type no extension - ( - "https://deno.land/x/mod", - Some("application/typescript".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/typescript".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("video/vnd.dlna.mpeg-tts".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("video/mp2t".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("application/x-typescript".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("application/javascript".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/javascript".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("application/ecmascript".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/ecmascript".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("application/x-javascript".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("application/node".to_string()), - MediaType::JavaScript, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/jsx".to_string()), - MediaType::Jsx, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/tsx".to_string()), - MediaType::Tsx, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/json".to_string()), - MediaType::Json, - None, - ), - ( - "https://deno.land/x/mod", - Some("text/json; charset=utf-8".to_string()), - MediaType::Json, - Some("utf-8".to_string()), - ), - // Extension with media type - ( - "https://deno.land/x/mod.ts", - Some("text/plain".to_string()), - MediaType::TypeScript, - None, - ), - ( - "https://deno.land/x/mod.ts", - Some("foo/bar".to_string()), - MediaType::Unknown, - None, - ), - ( - "https://deno.land/x/mod.tsx", - Some("application/typescript".to_string()), - MediaType::Tsx, - None, - ), - ( - "https://deno.land/x/mod.tsx", - Some("application/javascript".to_string()), - MediaType::Tsx, - None, - ), - ( - "https://deno.land/x/mod.jsx", - Some("application/javascript".to_string()), - MediaType::Jsx, - None, - ), - ( - "https://deno.land/x/mod.jsx", - Some("application/x-typescript".to_string()), - MediaType::Jsx, - None, - ), - ( - "https://deno.land/x/mod.d.ts", - Some("application/javascript".to_string()), - MediaType::Dts, - None, - ), - ( - "https://deno.land/x/mod.d.ts", - Some("text/plain".to_string()), - MediaType::Dts, - None, - ), - ( - "https://deno.land/x/mod.d.ts", - Some("application/x-typescript".to_string()), - MediaType::Dts, - None, - ), - ]; - - for (specifier, maybe_content_type, media_type, maybe_charset) in fixtures { - let specifier = ModuleSpecifier::parse(specifier).unwrap(); - assert_eq!( - resolve_media_type_and_charset_from_content_type( - &specifier, - maybe_content_type.as_ref() - ), - (media_type, maybe_charset.as_deref()) - ); - } - } - #[test] fn test_parse_valid_data_url() { let valid_data_url = "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ=="; From 35419e6490eb90fd6a2a1ac21cdc6647eef9c180 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 9 Dec 2024 12:55:02 -0500 Subject: [PATCH 2/2] update version --- Cargo.lock | 4 +++- Cargo.toml | 5 +---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fbca23e8..a4b065f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -473,7 +473,9 @@ dependencies = [ [[package]] name = "deno_media_type" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa135b8a9febc9a51c16258e294e268a1276750780d69e46edb31cced2826e4" dependencies = [ "data-url", "serde", diff --git a/Cargo.toml b/Cargo.toml index 0e49bf6d..6c67afbf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,7 +42,7 @@ anyhow = "1.0.43" async-trait = "0.1.68" data-url = "0.3.0" deno_ast = { version = "0.44.0", features = ["dep_analysis", "emit"] } -deno_media_type = "0.2.1" +deno_media_type = "0.2.2" deno_unsync.workspace = true deno_semver = "0.6.0" encoding_rs = "0.8.33" @@ -80,6 +80,3 @@ codegen-units = 1 incremental = true lto = true opt-level = "z" - -[patch.crates-io] -deno_media_type = { path = "../deno_media_type" }