diff options
-rw-r--r-- | cli/file_fetcher.rs | 30 | ||||
-rw-r--r-- | test_util/src/lib.rs | 24 |
2 files changed, 52 insertions, 2 deletions
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs index 471873195..7ab2f5cce 100644 --- a/cli/file_fetcher.rs +++ b/cli/file_fetcher.rs @@ -327,7 +327,12 @@ impl FileFetcher { let (media_type, maybe_charset) = map_content_type(specifier, maybe_content_type); let source = strip_shebang(get_source_from_bytes(bytes, maybe_charset)?); - let maybe_types = headers.get("x-typescript-types").cloned(); + let maybe_types = match media_type { + MediaType::JavaScript | MediaType::Jsx => { + headers.get("x-typescript-types").cloned() + } + _ => None, + }; Ok(File { local, @@ -1593,7 +1598,7 @@ mod tests { } #[tokio::test] - async fn test_fetch_remote_with_types() { + async fn test_fetch_remote_javascript_with_types() { let specifier = resolve_url_or_path("http://127.0.0.1:4545/xTypeScriptTypes.js").unwrap(); let (file, _) = test_fetch_remote(&specifier).await; @@ -1604,6 +1609,27 @@ mod tests { } #[tokio::test] + async fn test_fetch_remote_jsx_with_types() { + let specifier = + resolve_url_or_path("http://127.0.0.1:4545/xTypeScriptTypes.jsx") + .unwrap(); + let (file, _) = test_fetch_remote(&specifier).await; + assert_eq!(file.media_type, MediaType::Jsx,); + assert_eq!( + file.maybe_types, + Some("./xTypeScriptTypes.d.ts".to_string()) + ); + } + + #[tokio::test] + async fn test_fetch_remote_typescript_with_types() { + let specifier = + resolve_url_or_path("http://127.0.0.1:4545/xTypeScriptTypes.ts").unwrap(); + let (file, _) = test_fetch_remote(&specifier).await; + assert_eq!(file.maybe_types, None); + } + + #[tokio::test] async fn test_fetch_remote_utf16_le() { let expected = std::str::from_utf8(b"\xEF\xBB\xBFconsole.log(\"Hello World\");\x0A") diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs index 31aa07177..d2669e42e 100644 --- a/test_util/src/lib.rs +++ b/test_util/src/lib.rs @@ -497,6 +497,30 @@ async fn main_server(req: Request<Body>) -> hyper::Result<Response<Body>> { ); Ok(res) } + (_, "/xTypeScriptTypes.jsx") => { + let mut res = Response::new(Body::from("export const foo = 'foo';")); + res + .headers_mut() + .insert("Content-type", HeaderValue::from_static("text/jsx")); + res.headers_mut().insert( + "X-TypeScript-Types", + HeaderValue::from_static("./xTypeScriptTypes.d.ts"), + ); + Ok(res) + } + (_, "/xTypeScriptTypes.ts") => { + let mut res = + Response::new(Body::from("export const foo: string = 'foo';")); + res.headers_mut().insert( + "Content-type", + HeaderValue::from_static("application/typescript"), + ); + res.headers_mut().insert( + "X-TypeScript-Types", + HeaderValue::from_static("./xTypeScriptTypes.d.ts"), + ); + Ok(res) + } (_, "/xTypeScriptTypes.d.ts") => { let mut res = Response::new(Body::from("export const foo: 'foo';")); res.headers_mut().insert( |