summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2021-11-01 16:22:27 -0400
committerGitHub <noreply@github.com>2021-11-01 16:22:27 -0400
commit0ec151b8cb2a92bb1765672fa15de23e6c8842d4 (patch)
treea1c126319d39e5db9bbed6174ec7708afbd47ae0 /cli
parent2794d0b7a29dc2c84438f5004dd35d00d6d29007 (diff)
chore: upgrade deno_ast to 0.5.0 (#12595)
Diffstat (limited to 'cli')
-rw-r--r--cli/Cargo.toml14
-rw-r--r--cli/emit.rs49
-rw-r--r--cli/file_fetcher.rs17
-rw-r--r--cli/lsp/documents.rs1
-rw-r--r--cli/lsp/language_server.rs1
-rw-r--r--cli/tests/unit/globals_test.ts2
-rw-r--r--cli/tests/unit/opcall_test.ts2
-rw-r--r--cli/tests/unit/resources_test.ts2
-rw-r--r--cli/tools/test.rs4
-rw-r--r--cli/tsc.rs35
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),