summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dprint.json6
-rw-r--r--Cargo.lock32
-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
-rw-r--r--serde_v8/README.md8
-rw-r--r--tools/cut_a_release.md16
14 files changed, 127 insertions, 62 deletions
diff --git a/.dprint.json b/.dprint.json
index 8480542ed..da4351d2c 100644
--- a/.dprint.json
+++ b/.dprint.json
@@ -35,9 +35,9 @@
"tools/wpt/manifest.json"
],
"plugins": [
- "https://plugins.dprint.dev/typescript-0.58.1.wasm",
- "https://plugins.dprint.dev/json-0.13.0.wasm",
- "https://plugins.dprint.dev/markdown-0.10.0.wasm",
+ "https://plugins.dprint.dev/typescript-0.59.0.wasm",
+ "https://plugins.dprint.dev/json-0.13.1.wasm",
+ "https://plugins.dprint.dev/markdown-0.11.1.wasm",
"https://plugins.dprint.dev/toml-0.5.2.wasm"
]
}
diff --git a/Cargo.lock b/Cargo.lock
index 438ac954a..c26df39c2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -695,9 +695,9 @@ dependencies = [
[[package]]
name = "deno_ast"
-version = "0.4.1"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e23902664e99dc1e0f7186ddd26dbf31fc2ab934ef86593700d43052f5ad43bf"
+checksum = "2ee37af956e0efce7863828eb055208965be06f47959b73c47466e0b5f9a1a9e"
dependencies = [
"data-url",
"dprint-swc-ecma-ast-view",
@@ -781,9 +781,9 @@ dependencies = [
[[package]]
name = "deno_doc"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81744eb79bda23580020b2df68a150197312b54c47e11160a65add0534c03ec5"
+checksum = "08abadd9f3ede74c5ba6e3d9a688ecfe160cf7fb2988ae133ef4e3d591d091e7"
dependencies = [
"cfg-if 1.0.0",
"deno_ast",
@@ -826,9 +826,9 @@ dependencies = [
[[package]]
name = "deno_graph"
-version = "0.9.1"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7513c22ec28dd1a4eeb82a99fc543c92d7ee2f1a146a0dd6bea7427020eb863"
+checksum = "6df7e1b135780d9424ce4fb9a8927983d27d2c094922cb84b5fd5d72a4c85b82"
dependencies = [
"anyhow",
"cfg-if 1.0.0",
@@ -862,9 +862,9 @@ dependencies = [
[[package]]
name = "deno_lint"
-version = "0.18.1"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce18a8ca950791a5aa75f6dbd64d3a49a9cb7339877c557ca2df7eb9dba0c5e"
+checksum = "7c031711a48a3c5ea4ca6103c6d6df456ba3b0bb048fb551f07da4f704e1d844"
dependencies = [
"anyhow",
"deno_ast",
@@ -1097,9 +1097,9 @@ dependencies = [
[[package]]
name = "dprint-core"
-version = "0.46.4"
+version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df98b7d98583d9d57311b9df81f571f35a6ca3e8675d0128333b2e923dc85bcd"
+checksum = "75ed0f351c65487deac1ad113edffa75492209dc538e4f85c8d3362088176f3c"
dependencies = [
"bumpalo",
"rustc-hash",
@@ -1108,9 +1108,9 @@ dependencies = [
[[package]]
name = "dprint-plugin-json"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a32a4eef2c639055370f16a359f0278025058e63193f0ad2340f30bf7ca8361"
+checksum = "c7e5184c59b6863c21dfd6f8491f895c7f935c41e62ce6464eea57fcb5cb9e60"
dependencies = [
"dprint-core",
"jsonc-parser",
@@ -1119,9 +1119,9 @@ dependencies = [
[[package]]
name = "dprint-plugin-markdown"
-version = "0.10.0"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48b364aed2db4ccf8747dc1d9c7eb52a5e981a705c7aadfddd297fc4c3310772"
+checksum = "f3d76c5b041062f73b843fd8d4b2adf48aaaf1e0613bbdbb9b42c5b8cf8d586e"
dependencies = [
"dprint-core",
"pulldown-cmark",
@@ -1131,9 +1131,9 @@ dependencies = [
[[package]]
name = "dprint-plugin-typescript"
-version = "0.58.1"
+version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5749ee5f8d448912fdab331a1535ac29364fc0f94e5c540532a6fa60178ba06"
+checksum = "a72ba2164e96a10905e57c0ddcf1ec4d7b66bc26226dba413b86016439f0e35f"
dependencies = [
"deno_ast",
"dprint-core",
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),
diff --git a/serde_v8/README.md b/serde_v8/README.md
index 207f8baf4..2a9169681 100644
--- a/serde_v8/README.md
+++ b/serde_v8/README.md
@@ -48,10 +48,10 @@ when encoding/decoding.
- [ ] Experiment with KeyCache to optimize struct keys
- [ ] Experiment with external v8 strings
- [ ] Explore using
- [json-stringifier.cc](https://chromium.googlesource.com/v8/v8/+/refs/heads/master/src/json/json-stringifier.cc)'s
- fast-paths for arrays
+ [json-stringifier.cc](https://chromium.googlesource.com/v8/v8/+/refs/heads/master/src/json/json-stringifier.cc)'s
+ fast-paths for arrays
- [ ] Improve tests to test parity with `serde_json` (should be mostly
- interchangeable)
+ interchangeable)
- [ ] Consider a `Payload` type that's deserializable by itself (holds scope &
- value)
+ value)
- [ ] Ensure we return errors instead of panicking on `.unwrap()`s
diff --git a/tools/cut_a_release.md b/tools/cut_a_release.md
index d82c39afc..7d70116eb 100644
--- a/tools/cut_a_release.md
+++ b/tools/cut_a_release.md
@@ -4,17 +4,17 @@
- [ ] An up to date stable Rust toolchain
- [ ] A binary version of `deno` available (hopefully built from `main`) that is
- going to be available throughout any local building you might do.
+ going to be available throughout any local building you might do.
- [ ] Forks and local clones of
- [`denoland/deno`](https://github.com/denoland/deno/),
- [`denoland/deno_std`](https://github.com/denoland/deno_std/),
- [`denoland/dotland`](https://github.com/denoland/dotland/) and
- [`denoland/deno_docker`](https://github.com/denoland/deno_docker/)
+ [`denoland/deno`](https://github.com/denoland/deno/),
+ [`denoland/deno_std`](https://github.com/denoland/deno_std/),
+ [`denoland/dotland`](https://github.com/denoland/dotland/) and
+ [`denoland/deno_docker`](https://github.com/denoland/deno_docker/)
- [ ] Ensure that external dependencies are up-to date in `denoland/deno` (e.g.
- `rusty_v8`, `serde_v8`, `deno_doc`, `deno_lint`).
+ `rusty_v8`, `serde_v8`, `deno_doc`, `deno_lint`).
- [ ] Ownership access on crates.io for the 19 (🙀) crates that you will be
- publishing. (Don't worry too much though as the main script publishing 18 of
- the crates allows recovery)
+ publishing. (Don't worry too much though as the main script publishing 18
+ of the crates allows recovery)
- [ ] Lot's of ☕
**During this process `main` branch (or any other branch that you're creating