diff --git a/.dprint.json b/.dprint.json index b513695966ab96..fdf06cecb14927 100644 --- a/.dprint.json +++ b/.dprint.json @@ -83,7 +83,7 @@ "tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs" ], "plugins": [ - "https://plugins.dprint.dev/typescript-0.95.11.wasm", + "https://plugins.dprint.dev/typescript-0.95.13.wasm", "https://plugins.dprint.dev/json-0.21.0.wasm", "https://plugins.dprint.dev/markdown-0.20.0.wasm", "https://plugins.dprint.dev/toml-0.7.0.wasm", diff --git a/Cargo.lock b/Cargo.lock index 642136304d06b1..e2b40f6098da77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -273,9 +273,9 @@ dependencies = [ [[package]] name = "ast_node" -version = "3.0.4" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a184645bcc6f52d69d8e7639720699c6a99efb711f886e251ed1d16db8dd90e" +checksum = "2eb025ef00a6da925cf40870b9c8d008526b6004ece399cb0974209720f0b194" dependencies = [ "quote", "swc_macros_common", @@ -1725,9 +1725,9 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.50.3" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6fca2bd99b9f4ac51e548a34b74f8e397d94694a6ced184315922156f70ed0" +checksum = "30c2f6f65154faed61e45d6578566f9fab9d2a330c35c87366706883701cce51" dependencies = [ "base64 0.22.1", "capacity_builder", @@ -1764,7 +1764,7 @@ dependencies = [ "swc_visit", "text_lines", "thiserror 2.0.12", - "unicode-width 0.2.0", + "unicode-width 0.2.2", "url", ] @@ -1818,9 +1818,9 @@ dependencies = [ [[package]] name = "deno_cache_dir" -version = "0.25.0" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ab8c76d18a8a7511825bfb93e8b35e79b3dd8404a48c570c536db2a3c88855" +checksum = "7862aa4b7aad895ee979a3078bd25da192a1810b30cb5a7e764fed38d065eba9" dependencies = [ "async-trait", "base32", @@ -1991,9 +1991,9 @@ dependencies = [ [[package]] name = "deno_doc" -version = "0.186.0" +version = "0.187.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92de7919430e4bd66edace9ca4ca1dba7599ddf627bfa35a8c919b99ed5f54cf" +checksum = "b76ea8ad99ec75f94c9fbfc5acfdf4803408dbe9c6563c1691970a768f6398f6" dependencies = [ "anyhow", "cfg-if", @@ -2144,9 +2144,9 @@ dependencies = [ [[package]] name = "deno_graph" -version = "0.103.1" +version = "0.104.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "293db685464cf8a18785e32d6fdcfffb78a864465d8e9017bfb005ccacc560a8" +checksum = "166b59d27d3ef8a446bece020e1d72b629250a0cb6665b0c7929cd7bae93b9a1" dependencies = [ "async-trait", "boxed_error", @@ -2316,9 +2316,9 @@ dependencies = [ [[package]] name = "deno_lint" -version = "0.80.0" +version = "0.82.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816be0fe885ac88b200d73d99f8c9557278ff416acf8abc1661b46837f09a303" +checksum = "a39ab04b95caa7ed722680d1f93f919525e9b141663224629de297cd3ed39529" dependencies = [ "anyhow", "deno_ast", @@ -2355,9 +2355,9 @@ dependencies = [ [[package]] name = "deno_media_type" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ec0dada9dc5ac4733b4175d36f6a150b7dd68fab46db35cb1ef00dd7366acb" +checksum = "ac0109d26ff08a089642a79b45c65f91a849404c1ef3ec78c837a412956d8808" dependencies = [ "data-url", "encoding_rs", @@ -3566,7 +3566,7 @@ dependencies = [ "indexmap 2.9.0", "rustc-hash 2.1.1", "serde", - "unicode-width 0.2.0", + "unicode-width 0.2.2", ] [[package]] @@ -3623,9 +3623,9 @@ dependencies = [ [[package]] name = "dprint-plugin-typescript" -version = "0.95.11" +version = "0.95.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74aa5df06eb156f7df91bf17a0ca65fd349dfa22463c3eab0a019bab20df12df" +checksum = "f8c3e39abf274d7f85a017691da2d4c78db0141425d05201b7249de4a48cabd1" dependencies = [ "anyhow", "capacity_builder", @@ -3639,9 +3639,9 @@ dependencies = [ [[package]] name = "dprint-swc-ext" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf592ae6a864437e98ef9c6ae7936b822077e9d038a3a48ee081ab92313afad4" +checksum = "33175ddb7a6d418589cab2966bd14a710b3b1139459d3d5ca9edf783c4833f4c" dependencies = [ "allocator-api2", "bumpalo", @@ -3914,9 +3914,9 @@ dependencies = [ [[package]] name = "eszip" -version = "0.104.0" +version = "0.105.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde1007099ac5d0184579513aa0d5484ad25d9638a21c7c26203548aebe40d9b" +checksum = "4d70ac1a894658d4841901d4548020c97baa339cc1289ed28622cdd04b440091" dependencies = [ "anyhow", "async-trait", @@ -4222,9 +4222,9 @@ checksum = "c0f5d7f7b3eed2f771fc7f6fcb651f9560d7b0c483d75876082acb4649d266b3" [[package]] name = "from_variant" -version = "2.0.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308530a56b099da144ebc5d8e179f343ad928fa2b3558d1eb3db9af18d6eff43" +checksum = "e5ff35a391aef949120a0340d690269b3d9f63460a6106e99bd07b961f345ea9" dependencies = [ "swc_macros_common", "syn 2.0.87", @@ -4857,14 +4857,15 @@ dependencies = [ [[package]] name = "hstr" -version = "2.1.0" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f11d91d7befd2ffd9d216e9e5ea1fae6174b20a2a1b67a688138003d2f4122" +checksum = "0c43c0a9e8fbdb3bb9dc8eee85e1e2ac81605418b4c83b6b7413cbf14d56ca5c" dependencies = [ "hashbrown 0.14.5", "new_debug_unreachable", "once_cell", "rustc-hash 2.1.1", + "serde", "triomphe", ] @@ -8656,9 +8657,9 @@ dependencies = [ [[package]] name = "swc_atoms" -version = "7.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3500dcf04c84606b38464561edc5e46f5132201cb3e23cf9613ed4033d6b1bb2" +checksum = "d4ccbe2ecad10ad7432100f878a107b1d972a8aee83ca53184d00c23a078bb8a" dependencies = [ "hstr", "once_cell", @@ -8667,9 +8668,9 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "32.0.0" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cf8de492fb6069230a1f217b7becec73eff036d86e4736ff6c1d31017149a3" +checksum = "5d55007addadf4652418b6babff3106321d4505ed33b93a5e30365d2cd15c724" dependencies = [ "anyhow", "crc", @@ -8696,9 +8697,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "14.0.4" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2bb772b3a26b8b71d4e8c112ced5b5867be2266364b58517407a270328a2696" +checksum = "259b675d633a26d24efe3802a9d88858c918e6e8f062d3222d3aa02d56a2cf4c" dependencies = [ "anyhow", "ast_node", @@ -8717,7 +8718,7 @@ dependencies = [ "swc_sourcemap", "swc_visit", "tracing", - "unicode-width 0.1.13", + "unicode-width 0.2.2", "url", ] @@ -8749,9 +8750,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "15.0.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c25af97d53cf8aab66a6c68f3418663313fc969ad267fc2a4d19402c329be1" +checksum = "a573a0c72850dec8d4d8085f152d5778af35a2520c3093b242d2d1d50776da7c" dependencies = [ "bitflags 2.9.3", "is-macro", @@ -8769,9 +8770,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "17.0.2" +version = "20.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf55c2d7555c93f4945e29f93b7529562be97ba16e60dd94c25724d746174ac" +checksum = "ff2a6ee1ec49dda8dedeac54e4147b4e8b3f278d9bb34ab28983257a393d34ed" dependencies = [ "ascii", "compact_str", @@ -8804,15 +8805,13 @@ dependencies = [ [[package]] name = "swc_ecma_lexer" -version = "23.0.2" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017d06ea85008234aa9fb34d805c7dc563f2ea6e03869ed5ac5a2dc27d561e4d" +checksum = "5e82f7747e052c6ff6e111fa4adeb14e33b46ee6e94fe5ef717601f651db48fc" dependencies = [ - "arrayvec", "bitflags 2.9.3", "either", "num-bigint", - "phf", "rustc-hash 2.1.1", "seq-macro", "serde", @@ -8822,14 +8821,15 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", + "swc_ecma_parser", "tracing", ] [[package]] name = "swc_ecma_loader" -version = "14.0.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c675d14700c92f12585049b22b02356f1e142f4b0c32a4d0eb4b7a968a4c0c1e" +checksum = "fbcababb48f0d46587a0a854b2c577eb3a56fa99687de558338021e93cd2c8f5" dependencies = [ "anyhow", "pathdiff", @@ -8842,25 +8842,30 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "24.0.3" +version = "27.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9011783c975ba592ffc09cd208ced92b1dfabb2e5e0ef453559e2e25286127" +checksum = "7f1a51af1a92cd4904c073b293e491bbc0918400a45d58227b34c961dd6f52d7" dependencies = [ + "bitflags 2.9.3", "either", "num-bigint", + "phf", + "rustc-hash 2.1.1", + "seq-macro", "serde", + "smartstring", + "stacker", "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_lexer", "tracing", ] [[package]] name = "swc_ecma_transforms_base" -version = "27.0.0" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6f1b8f4232e7a7f614ff7c0f6ccb89c2d028cdf7629f79ad710cff5b28b62c" +checksum = "250f6f165578ca4fee47bd57585c1b9597c94bf4ea6591df47f2b5fa5b1883fe" dependencies = [ "better_scoped_tls", "indexmap 2.9.0", @@ -8880,9 +8885,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "27.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108d4d52db6151f768a516fe86e6f21fc783b03fa2d20292999f29275fd0c71d" +checksum = "3d3ab35eff4a980e02d708798ae4c35bc017612292adbffe7b7b554df772fdf5" dependencies = [ "swc_common", "swc_ecma_ast", @@ -8905,9 +8910,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "29.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "506bf81408ad780a3f696bb9f84a508d2024c6cd6803d440ededc25be5cee7c8" +checksum = "49b3eba5fd24fb4cf7b5092474711a40e47e4cff973b839a7c1c69c1557b272d" dependencies = [ "bytes-str", "dashmap", @@ -8929,9 +8934,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "27.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39b3b34f6a28348416174912009d09994ab71c867682ec78d641a9feb3a96b4e" +checksum = "c2d7748d4112c87ce1885260035e4a43cebfe7661a40174b7d77a0a04760a257" dependencies = [ "either", "rustc-hash 2.1.1", @@ -8947,9 +8952,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "30.0.2" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ea0052ac23b5b9fbc85bbdb1791b36b918f9d55f594b0ed8e25babb4c32d16" +checksum = "03de12e38e47ac1c96ac576f793ad37a9d7b16fbf4f2203881f89152f2498682" dependencies = [ "base64 0.22.1", "bytes-str", @@ -8971,9 +8976,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "30.0.1" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3872c006ccfdcc19f1cf5c01c15915a69964ba7982c9f581cdb7e727e77b9a2c" +checksum = "4408800fdeb541fabf3659db622189a0aeb386f57b6103f9294ff19dfde4f7b0" dependencies = [ "bytes-str", "rustc-hash 2.1.1", @@ -8989,9 +8994,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "21.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83259addd99ed4022aa9fc4d39428c008d3d42533769e1a005529da18cde4568" +checksum = "0fb99e179988cabd473779a4452ab942bcb777176983ca3cbaf22a8f056a65b0" dependencies = [ "indexmap 2.9.0", "num_cpus", @@ -9008,9 +9013,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "15.0.0" +version = "18.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a579aa8f9e212af521588df720ccead079c09fe5c8f61007cf724324aed3a0" +checksum = "a9611a72a4008d62608547a394e5d72a5245413104db096d95a52368a8cc1d63" dependencies = [ "new_debug_unreachable", "num-bigint", @@ -9963,9 +9968,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" diff --git a/Cargo.toml b/Cargo.toml index 2eaa6c1a94a0df..bb482a1a2fc551 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,16 +60,16 @@ license = "MIT" repository = "https://github.com/denoland/deno" [workspace.dependencies] -deno_ast = { version = "=0.50.3", features = ["transpiling"] } +deno_ast = { version = "=0.52.0", features = ["transpiling"] } deno_core = { version = "0.370.0" } -deno_cache_dir = "=0.25.0" -deno_doc = "=0.186.0" +deno_cache_dir = "=0.26.3" +deno_doc = "=0.187.0" deno_error = "=0.7.0" -deno_graph = { version = "=0.103.1", default-features = false } -deno_lint = "=0.80.0" +deno_graph = { version = "=0.104.0", default-features = false } +deno_lint = "=0.82.0" deno_lockfile = "=0.32.2" -deno_media_type = { version = "=0.2.9", features = ["module_specifier"] } +deno_media_type = { version = "=0.3.0", features = ["module_specifier"] } deno_native_certs = "0.3.0" deno_npm = "=0.42.0" deno_path_util = "=0.6.4" @@ -78,7 +78,7 @@ deno_task_shell = "=0.26.0" deno_terminal = "=0.2.3" deno_unsync = { version = "0.4.4", default-features = false } deno_whoami = "0.1.0" -eszip = "=0.104.0" +eszip = "=0.105.0" denokv_proto = "0.13.0" denokv_remote = "0.13.0" @@ -309,7 +309,7 @@ dprint-core = "=0.67.4" dprint-plugin-json = "=0.21.0" dprint-plugin-jupyter = "=0.2.1" dprint-plugin-markdown = "=0.20.0" -dprint-plugin-typescript = "=0.95.11" +dprint-plugin-typescript = "=0.95.13" env_logger = "=0.11.6" fancy-regex = "=0.14.0" libsui = "0.11.0" diff --git a/cli/cache/module_info.rs b/cli/cache/module_info.rs index e13c595c19cc2b..7279f8f78b3f1d 100644 --- a/cli/cache/module_info.rs +++ b/cli/cache/module_info.rs @@ -305,12 +305,14 @@ fn serialize_media_type(media_type: MediaType) -> i64 { Dcts => 10, Tsx => 11, Json => 12, - Wasm => 13, - Css => 14, - Html => 15, - SourceMap => 16, - Sql => 17, - Unknown => 18, + Jsonc => 13, + Json5 => 14, + Wasm => 15, + Css => 16, + Html => 17, + SourceMap => 18, + Sql => 19, + Unknown => 20, } } diff --git a/cli/lib/standalone/binary.rs b/cli/lib/standalone/binary.rs index 1c9294594eec75..4cfbcab7bcfd63 100644 --- a/cli/lib/standalone/binary.rs +++ b/cli/lib/standalone/binary.rs @@ -244,12 +244,14 @@ fn serialize_media_type(media_type: MediaType) -> u8 { MediaType::Dcts => 9, MediaType::Tsx => 10, MediaType::Json => 11, - MediaType::Wasm => 12, - MediaType::Css => 13, - MediaType::Html => 14, - MediaType::SourceMap => 15, - MediaType::Sql => 16, - MediaType::Unknown => 17, + MediaType::Jsonc => 12, + MediaType::Json5 => 13, + MediaType::Wasm => 14, + MediaType::Css => 15, + MediaType::Html => 16, + MediaType::SourceMap => 17, + MediaType::Sql => 18, + MediaType::Unknown => 19, } } @@ -269,12 +271,14 @@ impl<'a> DenoRtDeserializable<'a> for MediaType { 9 => MediaType::Dcts, 10 => MediaType::Tsx, 11 => MediaType::Json, - 12 => MediaType::Wasm, - 13 => MediaType::Css, - 14 => MediaType::Html, - 15 => MediaType::SourceMap, - 16 => MediaType::Sql, - 17 => MediaType::Unknown, + 12 => MediaType::Jsonc, + 13 => MediaType::Json5, + 14 => MediaType::Wasm, + 15 => MediaType::Css, + 16 => MediaType::Html, + 17 => MediaType::SourceMap, + 18 => MediaType::Sql, + 19 => MediaType::Unknown, value => { return Err(std::io::Error::new( std::io::ErrorKind::InvalidData, diff --git a/cli/lsp/code_lens.rs b/cli/lsp/code_lens.rs index ed169fcc6241ef..7b5029d26c142f 100644 --- a/cli/lsp/code_lens.rs +++ b/cli/lsp/code_lens.rs @@ -114,7 +114,7 @@ impl DenoTestCollector { { match key_value_prop.value.as_ref() { ast::Expr::Lit(ast::Lit::Str(lit_str)) => { - let name = lit_str.value.to_string(); + let name = lit_str.value.to_string_lossy().to_string(); self.add_code_lenses(name, range); } ast::Expr::Tpl(tpl) if tpl.quasis.len() == 1 => { @@ -133,7 +133,7 @@ impl DenoTestCollector { } } ast::Expr::Lit(ast::Lit::Str(lit_str)) => { - let name = lit_str.value.to_string(); + let name = lit_str.value.to_string_lossy().to_string(); self.add_code_lenses(name, range); } ast::Expr::Tpl(tpl) if tpl.quasis.len() == 1 => { diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index a4c708d7e1f724..171fb4ba8993a8 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -1053,6 +1053,8 @@ impl Config { | MediaType::Dcts | MediaType::Tsx => Some(&workspace_settings.typescript), MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css | MediaType::Html diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index f618640193ab68..c1e9a590674189 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1128,16 +1128,16 @@ impl Inner { | MediaType::Dmts | MediaType::Dcts | MediaType::Json + | MediaType::Jsonc | MediaType::Tsx => {} MediaType::Wasm | MediaType::SourceMap | MediaType::Css | MediaType::Html + | MediaType::Json5 | MediaType::Sql | MediaType::Unknown => { - if path.extension().and_then(|s| s.to_str()) != Some("jsonc") { - continue; - } + continue; } } dir_files.insert(path); diff --git a/cli/lsp/testing/collectors.rs b/cli/lsp/testing/collectors.rs index a6511b37cb1416..71db27d0343ec1 100644 --- a/cli/lsp/testing/collectors.rs +++ b/cli/lsp/testing/collectors.rs @@ -171,7 +171,7 @@ fn visit_call_expr( // matches string literals (e.g. "test name" or // 'test name') ast::Expr::Lit(ast::Lit::Str(lit_str)) => { - maybe_name = Some(lit_str.value.to_string()); + maybe_name = Some(lit_str.value.to_string_lossy().to_string()); } // matches template literals with only a single quasis // (e.g. `test name`) @@ -271,7 +271,7 @@ fn visit_call_expr( } } ast::Expr::Lit(ast::Lit::Str(lit_str)) => { - let name = lit_str.value.to_string(); + let name = lit_str.value.to_string_lossy().to_string(); let (id, _) = test_module.register( name, Some(range), diff --git a/cli/rt/binary.rs b/cli/rt/binary.rs index aee8fd160a028c..3f2ba0752a741c 100644 --- a/cli/rt/binary.rs +++ b/cli/rt/binary.rs @@ -452,6 +452,8 @@ impl<'a> DenoCompileModuleData<'a> { // just assume javascript if we made it here MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::SourceMap | MediaType::Sql | MediaType::Unknown => { diff --git a/cli/tools/bundle/mod.rs b/cli/tools/bundle/mod.rs index 6f4273ccbf7a9a..fdd013d14750e5 100644 --- a/cli/tools/bundle/mod.rs +++ b/cli/tools/bundle/mod.rs @@ -1679,6 +1679,8 @@ fn media_type_to_loader( Jsx | Tsx => esbuild_client::BuiltinLoader::Jsx, Css => esbuild_client::BuiltinLoader::Css, Json => esbuild_client::BuiltinLoader::Json, + Jsonc => esbuild_client::BuiltinLoader::Text, + Json5 => esbuild_client::BuiltinLoader::Text, SourceMap => esbuild_client::BuiltinLoader::Text, Html => esbuild_client::BuiltinLoader::Text, Sql => esbuild_client::BuiltinLoader::Text, diff --git a/cli/tools/compile.rs b/cli/tools/compile.rs index a4be6c8efe179e..e7ff339eea709e 100644 --- a/cli/tools/compile.rs +++ b/cli/tools/compile.rs @@ -238,6 +238,7 @@ pub async fn compile_eszip( relative_file_base: Some(relative_file_base), npm_packages: None, module_kind_resolver: Default::default(), + npm_snapshot: Default::default(), })?; if let Some(import_map_specifier) = maybe_import_map_specifier { @@ -369,6 +370,8 @@ fn get_module_roots_and_include_paths( | MediaType::Wasm => true, MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::SourceMap | MediaType::Sql | MediaType::Unknown => false, diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs index d88c9bd69fd554..de429c39e54832 100644 --- a/cli/tools/coverage/mod.rs +++ b/cli/tools/coverage/mod.rs @@ -555,7 +555,9 @@ pub fn cover_files( | MediaType::Wasm | MediaType::Cjs | MediaType::Mjs - | MediaType::Json => None, + | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 => None, MediaType::Dts | MediaType::Dmts | MediaType::Dcts => Some(String::new()), MediaType::TypeScript | MediaType::Jsx diff --git a/cli/tools/lint/ast_buffer/swc.rs b/cli/tools/lint/ast_buffer/swc.rs index e57a998acc5841..9ba5af9cd8ef3d 100644 --- a/cli/tools/lint/ast_buffer/swc.rs +++ b/cli/tools/lint/ast_buffer/swc.rs @@ -1,5 +1,7 @@ // Copyright 2018-2025 the Deno authors. MIT license. +use std::borrow::Cow; + use deno_ast::ParsedSource; use deno_ast::swc::ast::AssignTarget; use deno_ast::swc::ast::AssignTargetPat; @@ -52,6 +54,7 @@ use deno_ast::swc::ast::PropName; use deno_ast::swc::ast::PropOrSpread; use deno_ast::swc::ast::SimpleAssignTarget; use deno_ast::swc::ast::Stmt; +use deno_ast::swc::ast::Str; use deno_ast::swc::ast::SuperProp; use deno_ast::swc::ast::TsEntityName; use deno_ast::swc::ast::TsEnumMemberId; @@ -959,7 +962,7 @@ fn serialize_expr(ctx: &mut TsEsTreeBuilder, expr: &Expr) -> NodeRef { &quasi .cooked .as_ref() - .map_or("".to_string(), |v| v.to_string()), + .map_or("".to_string(), |v| v.to_string_lossy().to_string()), ) }) .collect::>(); @@ -1839,7 +1842,7 @@ fn serialize_jsx_opening_element( }; let value = attr.value.as_ref().map(|value| match value { - JSXAttrValue::Lit(lit) => serialize_lit(ctx, lit), + JSXAttrValue::Str(str) => serialize_str(ctx, str), JSXAttrValue::JSXExprContainer(container) => { serialize_jsx_container_expr(ctx, container) } @@ -2063,15 +2066,7 @@ fn serialize_prop_name( fn serialize_lit(ctx: &mut TsEsTreeBuilder, lit: &Lit) -> NodeRef { match lit { - Lit::Str(node) => { - let raw_value = if let Some(v) = &node.raw { - v.to_string() - } else { - format!("{}", node.value).to_string() - }; - - ctx.write_str_lit(&node.span, &node.value, &raw_value) - } + Lit::Str(node) => serialize_str(ctx, node), Lit::Bool(node) => ctx.write_bool_lit(&node.span, node.value), Lit::Null(node) => ctx.write_null_lit(&node.span), Lit::Num(node) => { @@ -2123,6 +2118,16 @@ fn serialize_lit(ctx: &mut TsEsTreeBuilder, lit: &Lit) -> NodeRef { } } +fn serialize_str(ctx: &mut TsEsTreeBuilder, node: &Str) -> NodeRef { + let raw_value = if let Some(v) = &node.raw { + Cow::Borrowed(v.as_str()) + } else { + node.value.to_string_lossy() + }; + + ctx.write_str_lit(&node.span, &node.value.to_string_lossy(), &raw_value) +} + fn serialize_class_member( ctx: &mut TsEsTreeBuilder, member: &ClassMember, @@ -2772,7 +2777,8 @@ fn serialize_ts_lit_type( &quasi .cooked .as_ref() - .map_or("".to_string(), |v| v.to_string()), + .map(|v| v.to_string_lossy()) + .unwrap_or(Cow::Borrowed("")), ) }) .collect::>(); diff --git a/cli/tools/publish/module_content.rs b/cli/tools/publish/module_content.rs index 5355cf9ec68e8f..73d997065f5531 100644 --- a/cli/tools/publish/module_content.rs +++ b/cli/tools/publish/module_content.rs @@ -92,6 +92,8 @@ impl ModuleContentProvider { | MediaType::Html | MediaType::Sql | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css => { // not unfurlable data diff --git a/cli/tools/publish/unfurl.rs b/cli/tools/publish/unfurl.rs index 583c241823f4f2..b89476a857ac09 100644 --- a/cli/tools/publish/unfurl.rs +++ b/cli/tools/publish/unfurl.rs @@ -979,7 +979,7 @@ impl Visit for ImportMetaResolveCollector { self.specifiers.push(( // remove quotes SourceRange::new(range.start + 1, range.end - 1), - arg.value.clone(), + arg.value.to_atom_lossy().into_owned(), )); } else { self.diagnostic_ranges.push(first_arg.expr.range()); diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index dce47900f9a9fc..fecc16fe9e85b8 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -16,6 +16,7 @@ use deno_ast::SourceRangedForSpanned; use deno_ast::SourceTextInfo; use deno_ast::diagnostics::Diagnostic; use deno_ast::swc::ast as swc_ast; +use deno_ast::swc::atoms::Wtf8Atom; use deno_ast::swc::common::comments::CommentKind; use deno_ast::swc::ecma_visit::Visit; use deno_ast::swc::ecma_visit::VisitWith; @@ -869,17 +870,18 @@ impl ReplSession { .imports .iter() .flat_map(|i| { + let specifier = i.to_string_lossy(); self .resolver .resolve( - i, + &specifier, &self.referrer, deno_graph::Position::zeroed(), ResolutionMode::Import, NodeResolutionKind::Execution, ) .ok() - .or_else(|| ModuleSpecifier::parse(i).ok()) + .or_else(|| ModuleSpecifier::parse(&specifier).ok()) }) .collect::>(); @@ -938,7 +940,7 @@ impl ReplSession { /// Walk an AST and get all import specifiers for analysis if any of them is /// an npm specifier. struct ImportCollector { - pub imports: Vec, + pub imports: Vec, } impl ImportCollector { @@ -958,7 +960,7 @@ impl Visit for ImportCollector { if !call_expr.args.is_empty() { let arg = &call_expr.args[0]; if let swc_ast::Expr::Lit(swc_ast::Lit::Str(str_lit)) = &*arg.expr { - self.imports.push(str_lit.value.to_string()); + self.imports.push(str_lit.value.clone()); } } } @@ -972,14 +974,14 @@ impl Visit for ImportCollector { return; } - self.imports.push(import_decl.src.value.to_string()); + self.imports.push(import_decl.src.value.clone()); } ModuleDecl::ExportAll(export_all) => { - self.imports.push(export_all.src.value.to_string()); + self.imports.push(export_all.src.value.clone()); } ModuleDecl::ExportNamed(export_named) => { if let Some(src) = &export_named.src { - self.imports.push(src.value.to_string()); + self.imports.push(src.value.clone()); } } _ => {} diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index 2ab2a44641889b..c4d221da4209f7 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -516,6 +516,8 @@ pub fn as_ts_script_kind(media_type: MediaType) -> i32 { MediaType::SourceMap | MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Sql | MediaType::Wasm | MediaType::Unknown => 0, diff --git a/cli/type_checker.rs b/cli/type_checker.rs index 81906d803417ef..962c7fafa6a8a1 100644 --- a/cli/type_checker.rs +++ b/cli/type_checker.rs @@ -881,6 +881,8 @@ impl<'a> GraphWalker<'a> { } } MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css | MediaType::Html @@ -997,6 +999,8 @@ fn has_ts_check(media_type: MediaType, file_text: &str) -> bool { | MediaType::Dmts | MediaType::Tsx | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css | MediaType::Html diff --git a/cli/util/extract.rs b/cli/util/extract.rs index 614f6012729fc0..48dfd27a9043b3 100644 --- a/cli/util/extract.rs +++ b/cli/util/extract.rs @@ -352,7 +352,9 @@ impl Visit for ExportCollector { self.named_exports.insert(ident.sym.clone()); } ast::TsModuleName::Str(s) => { - self.named_exports.insert(s.value.clone()); + self + .named_exports + .insert(s.value.to_atom_lossy().into_owned()); } } } @@ -403,7 +405,7 @@ impl Visit for ExportCollector { fn get_atom(export_name: &ast::ModuleExportName) -> Atom { match export_name { ast::ModuleExportName::Ident(ident) => ident.sym.clone(), - ast::ModuleExportName::Str(s) => s.value.clone(), + ast::ModuleExportName::Str(s) => s.value.to_atom_lossy().into_owned(), } } @@ -798,7 +800,7 @@ fn wrap_in_deno_test(stmts: Vec, test_name: Atom) -> ast::Stmt { spread: None, expr: Box::new(ast::Expr::Lit(ast::Lit::Str(ast::Str { span: DUMMY_SP, - value: test_name, + value: test_name.into(), raw: None, }))), }, diff --git a/libs/resolver/cjs/mod.rs b/libs/resolver/cjs/mod.rs index b1894e6df005d3..50dcf9f1ba3e35 100644 --- a/libs/resolver/cjs/mod.rs +++ b/libs/resolver/cjs/mod.rs @@ -212,6 +212,8 @@ impl // treat these as unknown | MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::SourceMap | MediaType::Sql | MediaType::Unknown => { @@ -260,6 +262,8 @@ impl // treat these as unknown | MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::SourceMap | MediaType::Sql | MediaType::Unknown => { diff --git a/libs/resolver/emit.rs b/libs/resolver/emit.rs index 320dbdb5f1bf4a..66e4e2896e1f71 100644 --- a/libs/resolver/emit.rs +++ b/libs/resolver/emit.rs @@ -357,6 +357,8 @@ impl | MediaType::Dmts | MediaType::Dcts | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css | MediaType::Html diff --git a/libs/resolver/loader/module_loader.rs b/libs/resolver/loader/module_loader.rs index d34e69a8c652c7..6e01bae6fb3ec8 100644 --- a/libs/resolver/loader/module_loader.rs +++ b/libs/resolver/loader/module_loader.rs @@ -497,6 +497,8 @@ impl PreparedModuleLoader { } MediaType::Css | MediaType::Html + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Sql | MediaType::Wasm | MediaType::SourceMap => { diff --git a/libs/resolver/workspace.rs b/libs/resolver/workspace.rs index fb09342fb0f2e0..a6f9016c2d08ab 100644 --- a/libs/resolver/workspace.rs +++ b/libs/resolver/workspace.rs @@ -543,6 +543,8 @@ impl SloppyImportsResolver { | MediaType::Dcts | MediaType::Tsx | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Wasm | MediaType::Css | MediaType::Html