From 02d46bae9f60e8114af2a107c05d717be3a7e70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sun, 31 May 2020 21:08:26 +0200 Subject: [PATCH] fix: media type for .cjs and application/node (#6005) --- cli/file_fetcher.rs | 16 +++++++++++++++- cli/tests/cjs_imports.ts | 1 + cli/tests/cjs_imports.ts.out | 1 + cli/tests/commonjs.cjs | 1 + cli/tests/integration_tests.rs | 5 +++++ 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 cli/tests/cjs_imports.ts create mode 100644 cli/tests/cjs_imports.ts.out create mode 100644 cli/tests/commonjs.cjs diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs index 375142e071..be3bc6efc6 100644 --- a/cli/file_fetcher.rs +++ b/cli/file_fetcher.rs @@ -544,6 +544,7 @@ pub fn map_file_extension(path: &Path) -> msg::MediaType { Some("js") => msg::MediaType::JavaScript, Some("jsx") => msg::MediaType::JSX, Some("mjs") => msg::MediaType::JavaScript, + Some("cjs") => msg::MediaType::JavaScript, Some("json") => msg::MediaType::Json, Some("wasm") => msg::MediaType::Wasm, _ => msg::MediaType::Unknown, @@ -572,7 +573,8 @@ fn map_content_type(path: &Path, content_type: Option<&str>) -> msg::MediaType { | "text/javascript" | "application/ecmascript" | "text/ecmascript" - | "application/x-javascript" => { + | "application/x-javascript" + | "application/node" => { map_js_like_extension(path, msg::MediaType::JavaScript) } "application/json" | "text/json" => msg::MediaType::Json, @@ -1596,6 +1598,10 @@ mod tests { map_file_extension(Path::new("foo/bar.wasm")), msg::MediaType::Wasm ); + assert_eq!( + map_file_extension(Path::new("foo/bar.cjs")), + msg::MediaType::JavaScript + ); assert_eq!( map_file_extension(Path::new("foo/bar.txt")), msg::MediaType::Unknown @@ -1641,6 +1647,10 @@ mod tests { map_content_type(Path::new("foo/bar.wasm"), None), msg::MediaType::Wasm ); + assert_eq!( + map_content_type(Path::new("foo/bar.cjs"), None), + msg::MediaType::JavaScript + ); assert_eq!( map_content_type(Path::new("foo/bar"), None), msg::MediaType::Unknown @@ -1694,6 +1704,10 @@ mod tests { map_content_type(Path::new("foo/bar"), Some("application/json")), msg::MediaType::Json ); + assert_eq!( + map_content_type(Path::new("foo/bar"), Some("application/node")), + msg::MediaType::JavaScript + ); assert_eq!( map_content_type(Path::new("foo/bar"), Some("text/json")), msg::MediaType::Json diff --git a/cli/tests/cjs_imports.ts b/cli/tests/cjs_imports.ts new file mode 100644 index 0000000000..d8b77c22eb --- /dev/null +++ b/cli/tests/cjs_imports.ts @@ -0,0 +1 @@ +import "./commonjs.cjs"; diff --git a/cli/tests/cjs_imports.ts.out b/cli/tests/cjs_imports.ts.out new file mode 100644 index 0000000000..557db03de9 --- /dev/null +++ b/cli/tests/cjs_imports.ts.out @@ -0,0 +1 @@ +Hello World diff --git a/cli/tests/commonjs.cjs b/cli/tests/commonjs.cjs new file mode 100644 index 0000000000..7df7d571e6 --- /dev/null +++ b/cli/tests/commonjs.cjs @@ -0,0 +1 @@ +console.log("Hello World"); \ No newline at end of file diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 6ab204082d..807efb1c53 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -1832,6 +1832,11 @@ itest!(es_private_fields { output: "es_private_fields.js.out", }); +itest!(cjs_imports { + args: "run --quiet --reload cjs_imports.ts", + output: "cjs_imports.ts.out", +}); + itest!(proto_exploit { args: "run proto_exploit.js", output: "proto_exploit.js.out",