diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2021-11-01 16:22:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 16:22:27 -0400 |
commit | 0ec151b8cb2a92bb1765672fa15de23e6c8842d4 (patch) | |
tree | a1c126319d39e5db9bbed6174ec7708afbd47ae0 /cli | |
parent | 2794d0b7a29dc2c84438f5004dd35d00d6d29007 (diff) |
chore: upgrade deno_ast to 0.5.0 (#12595)
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 14 | ||||
-rw-r--r-- | cli/emit.rs | 49 | ||||
-rw-r--r-- | cli/file_fetcher.rs | 17 | ||||
-rw-r--r-- | cli/lsp/documents.rs | 1 | ||||
-rw-r--r-- | cli/lsp/language_server.rs | 1 | ||||
-rw-r--r-- | cli/tests/unit/globals_test.ts | 2 | ||||
-rw-r--r-- | cli/tests/unit/opcall_test.ts | 2 | ||||
-rw-r--r-- | cli/tests/unit/resources_test.ts | 2 | ||||
-rw-r--r-- | cli/tools/test.rs | 4 | ||||
-rw-r--r-- | cli/tsc.rs | 35 |
10 files changed, 96 insertions, 31 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 7be42ad5f..cd761015c 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -39,11 +39,11 @@ winapi = "0.3.9" winres = "0.1.11" [dependencies] -deno_ast = { version = "0.4.1", features = ["bundler", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } +deno_ast = { version = "0.5.0", features = ["bundler", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_core = { version = "0.105.0", path = "../core" } -deno_doc = "0.18.0" -deno_graph = "0.9.1" -deno_lint = { version = "0.18.1", features = ["docs"] } +deno_doc = "0.19.0" +deno_graph = "0.10.0" +deno_lint = { version = "0.19.0", features = ["docs"] } deno_runtime = { version = "0.31.0", path = "../runtime" } deno_tls = { version = "0.10.0", path = "../ext/tls" } @@ -52,9 +52,9 @@ base64 = "0.13.0" clap = "2.33.3" data-url = "0.1.0" dissimilar = "1.0.2" -dprint-plugin-json = "0.13.0" -dprint-plugin-markdown = "0.10.0" -dprint-plugin-typescript = "0.58.1" +dprint-plugin-json = "0.13.1" +dprint-plugin-markdown = "0.11.1" +dprint-plugin-typescript = "0.59.0" encoding_rs = "0.8.29" env_logger = "0.8.4" fancy-regex = "0.7.1" diff --git a/cli/emit.rs b/cli/emit.rs index 07b6398bb..6ef235b7d 100644 --- a/cli/emit.rs +++ b/cli/emit.rs @@ -280,8 +280,12 @@ fn get_version(source_bytes: &[u8], config_bytes: &[u8]) -> String { /// Determine if a given media type is emittable or not. fn is_emittable(media_type: &MediaType, include_js: bool) -> bool { match &media_type { - MediaType::TypeScript | MediaType::Tsx | MediaType::Jsx => true, - MediaType::JavaScript => include_js, + MediaType::TypeScript + | MediaType::Mts + | MediaType::Cts + | MediaType::Tsx + | MediaType::Jsx => true, + MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs => include_js, _ => false, } } @@ -375,12 +379,17 @@ pub(crate) fn check_and_maybe_emit( // Sometimes if `tsc` sees a CommonJS file it will _helpfully_ output it // to ESM, which we don't really want to do unless someone has enabled // check_js. - if !check_js && *media_type == MediaType::JavaScript { + if !check_js + && matches!( + media_type, + MediaType::JavaScript | MediaType::Cjs | MediaType::Mjs + ) + { log::debug!("skipping emit for {}", specifier); continue; } match emit.media_type { - MediaType::JavaScript => { + MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs => { let version = get_version(source.as_bytes(), &config_bytes); cache.set(CacheType::Version, &specifier, version)?; cache.set(CacheType::Emit, &specifier, emit.data)?; @@ -390,7 +399,7 @@ pub(crate) fn check_and_maybe_emit( } // this only occurs with the runtime emit, but we are using the same // code paths, so we handle it here. - MediaType::Dts => { + MediaType::Dts | MediaType::Dcts | MediaType::Dmts => { cache.set(CacheType::Declaration, &specifier, emit.data)?; } _ => unreachable!(), @@ -677,10 +686,12 @@ pub(crate) fn valid_emit( .specifiers() .iter() .filter(|(_, r)| match r { - Ok((_, MediaType::TypeScript)) + Ok((_, MediaType::TypeScript | MediaType::Mts | MediaType::Cts)) | Ok((_, MediaType::Tsx)) | Ok((_, MediaType::Jsx)) => true, - Ok((_, MediaType::JavaScript)) => emit_js, + Ok((_, MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs)) => { + emit_js + } _ => false, }) .all(|(_, r)| { @@ -756,9 +767,13 @@ pub(crate) fn to_file_map( if let Some(map) = cache.get(CacheType::SourceMap, &specifier) { files.insert(format!("{}.js.map", specifier), map); } - } else if media_type == MediaType::JavaScript - || media_type == MediaType::Unknown - { + } else if matches!( + media_type, + MediaType::JavaScript + | MediaType::Mjs + | MediaType::Cjs + | MediaType::Unknown + ) { if let Some(module) = graph.get(&specifier) { files.insert(specifier.to_string(), module.source.to_string()); } @@ -795,9 +810,13 @@ pub(crate) fn to_module_sources( ) // Then if the file is JavaScript (or unknown) and wasn't emitted, we // will load the original source code in the module. - } else if media_type == MediaType::JavaScript - || media_type == MediaType::Unknown - { + } else if matches!( + media_type, + MediaType::JavaScript + | MediaType::Unknown + | MediaType::Cjs + | MediaType::Mjs + ) { if let Some(module) = graph.get(&found_specifier) { ( requested_specifier.clone(), @@ -840,8 +859,12 @@ mod tests { fn test_is_emittable() { assert!(is_emittable(&MediaType::TypeScript, false)); assert!(!is_emittable(&MediaType::Dts, false)); + assert!(!is_emittable(&MediaType::Dcts, false)); + assert!(!is_emittable(&MediaType::Dmts, false)); assert!(is_emittable(&MediaType::Tsx, false)); assert!(!is_emittable(&MediaType::JavaScript, false)); + assert!(!is_emittable(&MediaType::Cjs, false)); + assert!(!is_emittable(&MediaType::Mjs, false)); assert!(is_emittable(&MediaType::JavaScript, true)); assert!(is_emittable(&MediaType::Jsx, false)); assert!(!is_emittable(&MediaType::Json, false)); diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs index 0527cbac1..0c771f4cf 100644 --- a/cli/file_fetcher.rs +++ b/cli/file_fetcher.rs @@ -283,9 +283,10 @@ impl FileFetcher { map_content_type(specifier, maybe_content_type); let source = strip_shebang(get_source_from_bytes(bytes, maybe_charset)?); let maybe_types = match media_type { - MediaType::JavaScript | MediaType::Jsx => { - headers.get("x-typescript-types").cloned() - } + MediaType::JavaScript + | MediaType::Cjs + | MediaType::Mjs + | MediaType::Jsx => headers.get("x-typescript-types").cloned(), _ => None, }; @@ -745,13 +746,17 @@ mod tests { // 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::JavaScript, None), - (file_url!("/foo/bar.mjs"), None, MediaType::JavaScript, 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 ( @@ -884,7 +889,7 @@ mod tests { ( "https://deno.land/x/mod.d.ts", Some("application/javascript".to_string()), - MediaType::JavaScript, + MediaType::Dts, None, ), ( diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index 640a48f14..81f978be1 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -250,6 +250,7 @@ impl Document { fn is_diagnosable(&self) -> bool { matches!( self.media_type(), + // todo(#12410): Update with new media types for TS 4.5 MediaType::JavaScript | MediaType::Jsx | MediaType::TypeScript diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index b56093c7b..0deac879f 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -327,6 +327,7 @@ impl Inner { if specifier.scheme() == "asset" { matches!( MediaType::from(specifier), + // todo(#12410): Update with new media types for TS 4.5 MediaType::JavaScript | MediaType::Jsx | MediaType::TypeScript diff --git a/cli/tests/unit/globals_test.ts b/cli/tests/unit/globals_test.ts index 94c7ec3b5..f3c8141d8 100644 --- a/cli/tests/unit/globals_test.ts +++ b/cli/tests/unit/globals_test.ts @@ -73,7 +73,7 @@ unitTest(function webAssemblyExists() { declare global { namespace Deno { - // deno-lint-ignore no-explicit-any + // deno-lint-ignore no-explicit-any, no-var var core: any; } } diff --git a/cli/tests/unit/opcall_test.ts b/cli/tests/unit/opcall_test.ts index e38f481d9..63871cd4c 100644 --- a/cli/tests/unit/opcall_test.ts +++ b/cli/tests/unit/opcall_test.ts @@ -27,7 +27,7 @@ unitTest(async function sendAsyncStackTrace() { declare global { namespace Deno { - // deno-lint-ignore no-explicit-any + // deno-lint-ignore no-explicit-any, no-var var core: any; } } diff --git a/cli/tests/unit/resources_test.ts b/cli/tests/unit/resources_test.ts index 1aab51faa..368f7f990 100644 --- a/cli/tests/unit/resources_test.ts +++ b/cli/tests/unit/resources_test.ts @@ -47,7 +47,7 @@ unitTest({ permissions: { read: true } }, async function resourcesFile() { Object.keys(resourcesBefore).length + 1, ); const newRid = +Object.keys(resourcesAfter).find((rid): boolean => { - return !resourcesBefore.hasOwnProperty(rid); + return !Object.prototype.hasOwnProperty.call(resourcesBefore, rid); })!; assertEquals(resourcesAfter[newRid], "fsFile"); }); diff --git a/cli/tools/test.rs b/cli/tools/test.rs index 0b5a51465..820509f69 100644 --- a/cli/tools/test.rs +++ b/cli/tools/test.rs @@ -515,8 +515,12 @@ fn extract_files_from_regex_blocks( match attributes.get(0) { Some(&"js") => MediaType::JavaScript, + Some(&"mjs") => MediaType::Mjs, + Some(&"cjs") => MediaType::Cjs, Some(&"jsx") => MediaType::Jsx, Some(&"ts") => MediaType::TypeScript, + Some(&"mts") => MediaType::Mts, + Some(&"cts") => MediaType::Cts, Some(&"tsx") => MediaType::Tsx, Some(&"") => media_type, _ => MediaType::Unknown, diff --git a/cli/tsc.rs b/cli/tsc.rs index 922bee6d7..bb377c5d8 100644 --- a/cli/tsc.rs +++ b/cli/tsc.rs @@ -140,8 +140,35 @@ fn get_tsc_media_type(specifier: &ModuleSpecifier) -> MediaType { } MediaType::TypeScript } + Some("mts") => { + if let Some(os_str) = path.file_stem() { + if let Some(file_name) = os_str.to_str() { + if file_name.ends_with(".d") { + // todo(#12410): Use Dmts for TS 4.5 + return MediaType::Dts; + } + } + } + // todo(#12410): Use Mts for TS 4.5 + MediaType::TypeScript + } + Some("cts") => { + if let Some(os_str) = path.file_stem() { + if let Some(file_name) = os_str.to_str() { + if file_name.ends_with(".d") { + // todo(#12410): Use Dcts for TS 4.5 + return MediaType::Dts; + } + } + } + // todo(#12410): Use Cts for TS 4.5 + MediaType::TypeScript + } Some("tsx") => MediaType::Tsx, Some("js") => MediaType::JavaScript, + // todo(#12410): Use correct media type for TS 4.5 + Some("mjs") => MediaType::JavaScript, + Some("cjs") => MediaType::JavaScript, Some("jsx") => MediaType::Jsx, _ => MediaType::Unknown, }, @@ -707,12 +734,16 @@ mod tests { fn test_get_tsc_media_type() { let fixtures = vec![ ("file:///a.ts", MediaType::TypeScript), + ("file:///a.cts", MediaType::TypeScript), + ("file:///a.mts", MediaType::TypeScript), ("file:///a.tsx", MediaType::Tsx), ("file:///a.d.ts", MediaType::Dts), + ("file:///a.d.cts", MediaType::Dts), + ("file:///a.d.mts", MediaType::Dts), ("file:///a.js", MediaType::JavaScript), ("file:///a.jsx", MediaType::Jsx), - ("file:///a.cjs", MediaType::Unknown), - ("file:///a.mjs", MediaType::Unknown), + ("file:///a.cjs", MediaType::JavaScript), + ("file:///a.mjs", MediaType::JavaScript), ("file:///a.json", MediaType::Unknown), ("file:///a.wasm", MediaType::Unknown), ("file:///a.js.map", MediaType::Unknown), |