From 401a5c021141d4ba5a71078b28f6daefcd1826a6 Mon Sep 17 00:00:00 2001 From: "Kevin (Kun) \"Kassimo\" Qian" Date: Fri, 3 May 2019 12:03:10 -0700 Subject: feat: support .mjs extension resolution (#2283) Removed `extmap` and added .mjs entry in `map_file_extension`. The assert in the compiler does not need to be updated, since it is resolving from the compiled cache instead of elsewhere (notice the .map is asserted next to it) --- cli/deno_dir.rs | 17 ++--------------- tests/021_mjs_modules.test | 2 ++ tests/021_mjs_modules.ts | 2 ++ tests/021_mjs_modules.ts.out | 1 + tests/subdir/mod5.mjs | 1 + 5 files changed, 8 insertions(+), 15 deletions(-) create mode 100644 tests/021_mjs_modules.test create mode 100644 tests/021_mjs_modules.ts create mode 100644 tests/021_mjs_modules.ts.out create mode 100644 tests/subdir/mod5.mjs diff --git a/cli/deno_dir.rs b/cli/deno_dir.rs index 5b7b65f4b..c58a252cb 100644 --- a/cli/deno_dir.rs +++ b/cli/deno_dir.rs @@ -26,16 +26,6 @@ use std::str; use url; use url::Url; -/// Gets corresponding MediaType given extension -fn extmap(ext: &str) -> msg::MediaType { - match ext { - "ts" => msg::MediaType::TypeScript, - "js" => msg::MediaType::JavaScript, - "json" => msg::MediaType::Json, - _ => msg::MediaType::Unknown, - } -} - #[derive(Clone)] pub struct DenoDir { // Example: /Users/rld/.deno/ @@ -553,6 +543,7 @@ fn map_file_extension(path: &Path) -> msg::MediaType { Some(os_str) => match os_str.to_str() { Some("ts") => msg::MediaType::TypeScript, Some("js") => msg::MediaType::JavaScript, + Some("mjs") => msg::MediaType::JavaScript, Some("json") => msg::MediaType::Json, _ => msg::MediaType::Unknown, }, @@ -871,11 +862,7 @@ fn save_source_code_headers( let mime_type_string = mime_type.clone().unwrap(); let resolved_mime_type = { map_content_type(Path::new(""), Some(mime_type_string.as_str())) }; - let ext = p - .extension() - .map(|x| x.to_str().unwrap_or("")) - .unwrap_or(""); - let ext_based_mime_type = extmap(&ext); + let ext_based_mime_type = map_file_extension(&p); // Add mime to headers only when content type is different from extension. if ext_based_mime_type == msg::MediaType::Unknown || resolved_mime_type != ext_based_mime_type diff --git a/tests/021_mjs_modules.test b/tests/021_mjs_modules.test new file mode 100644 index 000000000..9b60b9d97 --- /dev/null +++ b/tests/021_mjs_modules.test @@ -0,0 +1,2 @@ +args: --reload tests/021_mjs_modules.ts +output: tests/021_mjs_modules.ts.out diff --git a/tests/021_mjs_modules.ts b/tests/021_mjs_modules.ts new file mode 100644 index 000000000..6052b9081 --- /dev/null +++ b/tests/021_mjs_modules.ts @@ -0,0 +1,2 @@ +import { isMod5 } from "./subdir/mod5.mjs"; +console.log(isMod5); diff --git a/tests/021_mjs_modules.ts.out b/tests/021_mjs_modules.ts.out new file mode 100644 index 000000000..27ba77dda --- /dev/null +++ b/tests/021_mjs_modules.ts.out @@ -0,0 +1 @@ +true diff --git a/tests/subdir/mod5.mjs b/tests/subdir/mod5.mjs new file mode 100644 index 000000000..f21d8862b --- /dev/null +++ b/tests/subdir/mod5.mjs @@ -0,0 +1 @@ +export const isMod5 = true; -- cgit v1.2.3