diff --git a/Cargo.lock b/Cargo.lock
index df9af4b355..025eb19ece 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1676,7 +1676,7 @@ dependencies = [
"serde",
"thiserror 1.0.64",
"winapi",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1766,7 +1766,7 @@ dependencies = [
"tokio",
"uuid",
"winapi",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1854,7 +1854,7 @@ dependencies = [
"log",
"napi_sym",
"thiserror 1.0.64",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1973,7 +1973,7 @@ dependencies = [
"url",
"webpki-root-certs",
"winapi",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
"x25519-dalek",
"x509-parser",
"yoke",
@@ -2173,7 +2173,7 @@ dependencies = [
"uuid",
"which 4.4.2",
"winapi",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -2192,9 +2192,9 @@ dependencies = [
[[package]]
name = "deno_task_shell"
-version = "0.20.1"
+version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01e09966ce29f8d26b652a43355397e1df43b85759e7824196bf0ceaeaa9a2f4"
+checksum = "fa3763bc068e17b6d488fb73ecda463c13ef792b0a5288b6018bc2119becd635"
dependencies = [
"anyhow",
"futures",
@@ -2205,6 +2205,7 @@ dependencies = [
"path-dedot",
"thiserror 1.0.64",
"tokio",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -4557,7 +4558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [
"cfg-if",
- "windows-targets 0.52.4",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -8622,7 +8623,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -8631,7 +8632,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -8649,7 +8650,16 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
]
[[package]]
@@ -8669,17 +8679,18 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
]
[[package]]
@@ -8690,9 +8701,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
@@ -8702,9 +8713,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
@@ -8714,9 +8725,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
@@ -8726,9 +8743,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
@@ -8738,9 +8755,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -8750,9 +8767,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
@@ -8762,9 +8779,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.52.4"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
diff --git a/Cargo.toml b/Cargo.toml
index a01f86aa94..fcf3ad0ea5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -240,7 +240,7 @@ nix = "=0.27.1"
# windows deps
junction = "=0.2.0"
winapi = "=0.3.9"
-windows-sys = { version = "0.52.0", features = ["Win32_Foundation", "Win32_Media", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_WindowsProgramming", "Wdk", "Wdk_System", "Wdk_System_SystemInformation", "Win32_Security", "Win32_System_Pipes", "Wdk_Storage_FileSystem", "Win32_System_Registry", "Win32_System_Kernel"] }
+windows-sys = { version = "0.59.0", features = ["Win32_Foundation", "Win32_Media", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_WindowsProgramming", "Wdk", "Wdk_System", "Wdk_System_SystemInformation", "Win32_Security", "Win32_System_Pipes", "Wdk_Storage_FileSystem", "Win32_System_Registry", "Win32_System_Kernel", "Win32_System_Threading", "Win32_UI", "Win32_UI_Shell"] }
winres = "=0.1.12"
[profile.release]
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 4a343ce747..d8e59b5e35 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -83,7 +83,7 @@ deno_path_util.workspace = true
deno_resolver.workspace = true
deno_runtime = { workspace = true, features = ["include_js_files_for_snapshotting"] }
deno_semver.workspace = true
-deno_task_shell = "=0.20.1"
+deno_task_shell = "=0.20.2"
deno_telemetry.workspace = true
deno_terminal.workspace = true
libsui = "0.5.0"
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 5ea28bfec1..c08d81abb0 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -2664,10 +2664,10 @@ Display outdated dependencies:
deno outdated>
deno outdated --compatible>
-Update dependencies:
+Update dependencies to latest semver compatible versions:
deno outdated --update>
+Update dependencies to latest versions, ignoring semver requirements:
deno outdated --update --latest>
-
deno outdated --update>
Filters can be used to select which packages to act on. Filters can include wildcards (*) to match multiple packages.
deno outdated --update --latest \"@std/*\">
@@ -2703,7 +2703,6 @@ Specific version requirements to update to can be specified:
.help(
"Update to the latest version, regardless of semver constraints",
)
- .requires("update")
.conflicts_with("compatible"),
)
.arg(
@@ -11687,6 +11686,14 @@ Usage: deno repl [OPTIONS] [-- [ARGS]...]\n"
recursive: false,
},
),
+ (
+ svec!["--latest"],
+ OutdatedFlags {
+ filters: svec![],
+ kind: OutdatedKind::PrintOutdated { compatible: false },
+ recursive: false,
+ },
+ ),
];
for (input, expected) in cases {
let mut args = svec!["deno", "outdated"];
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs
index f0adc60e3b..29f9c6ba3f 100644
--- a/cli/file_fetcher.rs
+++ b/cli/file_fetcher.rs
@@ -59,8 +59,7 @@ impl FileOrRedirect {
cache_entry: deno_cache_dir::CacheEntry,
) -> Result {
if let Some(redirect_to) = cache_entry.metadata.headers.get("location") {
- let redirect =
- deno_core::resolve_import(redirect_to, specifier.as_str())?;
+ let redirect = specifier.join(redirect_to)?;
Ok(FileOrRedirect::Redirect(redirect))
} else {
Ok(FileOrRedirect::File(File {
diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs
index 65ce330dfc..853708221f 100644
--- a/cli/lsp/analysis.rs
+++ b/cli/lsp/analysis.rs
@@ -353,7 +353,12 @@ impl<'a> TsResponseImportMapper<'a> {
let pkg_reqs = npm_resolver.resolve_pkg_reqs_from_pkg_id(&pkg_id);
// check if any pkg reqs match what is found in an import map
if !pkg_reqs.is_empty() {
- let sub_path = self.resolve_package_path(specifier);
+ let sub_path = npm_resolver
+ .resolve_pkg_folder_from_pkg_id(&pkg_id)
+ .ok()
+ .and_then(|pkg_folder| {
+ self.resolve_package_path(specifier, &pkg_folder)
+ });
if let Some(import_map) = self.maybe_import_map {
let pkg_reqs = pkg_reqs.iter().collect::>();
let mut matches = Vec::new();
@@ -368,8 +373,13 @@ impl<'a> TsResponseImportMapper<'a> {
if let Some(key_sub_path) =
sub_path.strip_prefix(value_sub_path)
{
- matches
- .push(format!("{}{}", entry.raw_key, key_sub_path));
+ // keys that don't end in a slash can't be mapped to a subpath
+ if entry.raw_key.ends_with('/')
+ || key_sub_path.is_empty()
+ {
+ matches
+ .push(format!("{}{}", entry.raw_key, key_sub_path));
+ }
}
}
}
@@ -413,10 +423,16 @@ impl<'a> TsResponseImportMapper<'a> {
fn resolve_package_path(
&self,
specifier: &ModuleSpecifier,
+ package_root_folder: &Path,
) -> Option {
let package_json = self
.resolver
- .get_closest_package_json(specifier)
+ .pkg_json_resolver(specifier)
+ // the specifier might have a closer package.json, but we
+ // want the root of the package's package.json
+ .get_closest_package_json_from_file_path(
+ &package_root_folder.join("package.json"),
+ )
.ok()
.flatten()?;
let root_folder = package_json.path.parent()?;
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index 52e03afe52..80165e8588 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -20,14 +20,12 @@ use deno_resolver::DenoResolverOptions;
use deno_resolver::NodeAndNpmReqResolver;
use deno_runtime::deno_fs;
use deno_runtime::deno_node::NodeResolver;
-use deno_runtime::deno_node::PackageJson;
use deno_runtime::deno_node::PackageJsonResolver;
use deno_semver::jsr::JsrPackageReqReference;
use deno_semver::npm::NpmPackageReqReference;
use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
use indexmap::IndexMap;
-use node_resolver::errors::ClosestPkgJsonError;
use node_resolver::InNpmPackageChecker;
use node_resolver::NodeResolutionKind;
use node_resolver::ResolutionMode;
@@ -380,6 +378,14 @@ impl LspResolver {
resolver.npm_resolver.as_ref().and_then(|r| r.as_managed())
}
+ pub fn pkg_json_resolver(
+ &self,
+ referrer: &ModuleSpecifier,
+ ) -> &Arc {
+ let resolver = self.get_scope_resolver(Some(referrer));
+ &resolver.pkg_json_resolver
+ }
+
pub fn graph_imports_by_referrer(
&self,
file_referrer: &ModuleSpecifier,
@@ -522,16 +528,6 @@ impl LspResolver {
.is_some()
}
- pub fn get_closest_package_json(
- &self,
- referrer: &ModuleSpecifier,
- ) -> Result