Skip to content

Commit c0a9a1e

Browse files
authored
Bump deno dependencies (#1505)
1 parent affdd90 commit c0a9a1e

File tree

11 files changed

+1374
-1121
lines changed

11 files changed

+1374
-1121
lines changed

Cargo.lock

Lines changed: 1303 additions & 1037 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/Cargo.toml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "7.1.0"
44
authors = ["Phylum, Inc. <engineering@phylum.io>"]
55
license = "GPL-3.0-or-later"
66
edition = "2021"
7-
rust-version = "1.76.0"
7+
rust-version = "1.80.0"
88
autotests = false
99

1010
[[test]]
@@ -21,17 +21,17 @@ end-to-end-tests = ["extensions"]
2121
[dependencies]
2222
anyhow = "1.0.44"
2323
axum = "0.7.4"
24-
base64 = "0.21.1"
24+
base64 = "0.22.1"
2525
bytes = "1.1.0"
2626
chrono = { version = "^0.4", default-features = false, features = ["serde", "clock"] }
2727
cidr = "0.2.0"
2828
clap = { version = "4.0.9", features = ["string", "wrap_help"] }
2929
console = "0.15.2"
3030
dashmap = "6.0.1"
31-
deno_ast = { version = "0.38.1", features = ["transpiling"], optional = true }
32-
deno_core = { version = "0.280.0", optional = true }
33-
deno_runtime = { version = "0.159.0", optional = true }
34-
dialoguer = { version = "0.10.0", features = ["fuzzy-select"] }
31+
deno_ast = { version = "0.41.2", features = ["transpiling"], optional = true }
32+
deno_core = { version = "0.307.0", optional = true }
33+
deno_runtime = { version = "0.177.0", optional = true }
34+
dialoguer = { version = "0.11.0", features = ["fuzzy-select"] }
3535
env_logger = "0.10.0"
3636
futures = "^0.3"
3737
git2 = { version = "0.19.0", default-features = false }
@@ -50,7 +50,7 @@ phylum_types = { git = "https://github.com/phylum-dev/phylum-types", branch = "d
5050
prettytable-rs = "0.10.0"
5151
rand = "0.8.4"
5252
regex = "1.5.5"
53-
reqwest = { version = "0.11.3", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "rustls-tls-webpki-roots"], default-features = false }
53+
reqwest = { version = "0.12.7", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "rustls-tls-webpki-roots"], default-features = false }
5454
rsa = { version = "0.9.2", features = ["sha2"] }
5555
serde_json = "1.0.85"
5656
serde = { version = "1.0.144", features = ["derive"] }
@@ -61,8 +61,8 @@ tempfile = "3.3.0"
6161
textwrap = "0.16.0"
6262
thiserror = "1.0.29"
6363
tokio = { version = "^1.0", features = ["full"] }
64-
toml = "0.7.4"
65-
unicode-width = "0.1.9"
64+
toml = "0.8.19"
65+
unicode-width = "0.2.0"
6666
url = { version = "2", features = ["serde"] }
6767
uuid = { version = "1.4.1", features = ["v4"] }
6868
vuln-reach = { git = "https://github.com/phylum-dev/vuln-reach", optional = true }
@@ -73,7 +73,11 @@ zip = { version = "2.1.0", default-features = false, features = ["deflate"] }
7373
[target.'cfg(unix)'.dependencies]
7474
birdcage = { version = "0.8.1" }
7575

76+
[target.'cfg(windows)'.dependencies]
77+
# HACK: The Win32_Security feature is required by deno_io, but their crate didn't enable it
78+
windows-sys = { version = "0.52.0", features = ["Win32_Security"] }
79+
7680
[dev-dependencies]
7781
assert_cmd = "2.0.4"
7882
predicates = { version = "3.0", default-features = false, features = ["diff"] }
79-
wiremock = "0.5.7"
83+
wiremock = "0.6.2"

cli/src/api/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ mod tests {
636636
let mut guard = responder_token_holder.lock().unwrap();
637637
let auth_header = HeaderName::from_str("Authorization").unwrap();
638638

639-
*guard = request.headers.get(&auth_header).map(|v| v.as_str().to_owned());
639+
*guard = request.headers.get(&auth_header).map(|v| v.to_str().unwrap().to_owned());
640640

641641
ResponseTemplate::new(200)
642642
.set_body_string(r#"{"job_id": "59482a54-423b-448d-8325-f171c9dc336b"}"#)

cli/src/commands/extensions/api.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ use std::rc::Rc;
1414
use std::str::FromStr;
1515

1616
use anyhow::{anyhow, Error, Result};
17-
use deno_runtime::deno_core::{op2, OpDecl, OpState};
18-
use deno_runtime::permissions::PermissionsContainer;
17+
use deno_core::{op2, OpDecl, OpState};
18+
use deno_runtime::deno_permissions::PermissionsContainer;
1919
use phylum_lockfile::ParsedLockfile;
2020
use phylum_project::ProjectConfig;
2121
use phylum_types::types::auth::{AccessToken, RefreshToken};

cli/src/commands/extensions/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,7 @@ async fn handle_install_extension(
220220
}
221221

222222
fn ask_overwrite(extension: &Extension) -> Result<()> {
223-
let mut prompt = Confirm::new();
224-
prompt
223+
let prompt = Confirm::new()
225224
.with_prompt(format!(
226225
"Another version of the '{}' extension is already installed. Overwrite?",
227226
extension.name()

cli/src/commands/extensions/state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::ops::Deref;
55
use std::rc::Rc;
66

77
use anyhow::{anyhow, Result};
8-
use deno_runtime::deno_core::OpState;
8+
use deno_core::OpState;
99
use futures::future::BoxFuture;
1010
use tokio::sync::OnceCell;
1111

cli/src/commands/init.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Subcommand `phylum init`.
22
33
use std::path::Path;
4-
use std::{env, io, iter};
4+
use std::{env, iter};
55

66
use anyhow::Context;
77
use clap::parser::ValuesRef;
@@ -122,25 +122,20 @@ async fn prompt_project(
122122
}
123123

124124
/// Ask for the desired project name.
125-
fn prompt_project_name() -> io::Result<String> {
125+
fn prompt_project_name() -> dialoguer::Result<String> {
126126
// Use directory name as default project name.
127127
let current_dir = env::current_dir()?;
128128
let default_name = current_dir.file_name().and_then(|name| name.to_str());
129129

130-
let mut prompt = Input::new();
131-
132130
// Suggest default if we found a directory name.
133131
//
134132
// NOTE: We don't use dialoguer's built-in default here so we can add a more
135133
// explicit `default` label.
136-
match default_name {
137-
Some(default_name) => {
138-
prompt.with_prompt(format!("Project Name [default: {default_name}]"));
139-
prompt.allow_empty(true);
140-
},
141-
None => {
142-
let _ = prompt.with_prompt("Project Name");
143-
},
134+
let prompt = match default_name {
135+
Some(default_name) => Input::new()
136+
.with_prompt(format!("Project Name [default: {default_name}]"))
137+
.allow_empty(true),
138+
None => Input::new().with_prompt("Project Name"),
144139
};
145140

146141
let mut name: String = prompt.interact_text()?;
@@ -207,7 +202,7 @@ async fn prompt_repository_url() -> anyhow::Result<Option<String>> {
207202
fn prompt_depfiles(
208203
cli_depfiles: Option<ValuesRef<'_, String>>,
209204
cli_depfile_type: Option<&String>,
210-
) -> io::Result<Vec<DepfileConfig>> {
205+
) -> dialoguer::Result<Vec<DepfileConfig>> {
211206
// Prompt for dependency files if they weren't specified.
212207
let depfiles = match cli_depfiles {
213208
Some(depfiles) => depfiles.cloned().collect(),
@@ -226,7 +221,7 @@ fn prompt_depfiles(
226221
}
227222

228223
/// Ask for the dependency file names.
229-
fn prompt_depfile_names() -> io::Result<Vec<String>> {
224+
fn prompt_depfile_names() -> dialoguer::Result<Vec<String>> {
230225
// Find all known dependency files below the current directory.
231226
let mut depfiles = phylum_lockfile::find_depfiles_at(".")
232227
.iter()
@@ -272,19 +267,18 @@ fn prompt_depfile_names() -> io::Result<Vec<String>> {
272267
}
273268

274269
// Construct dialoguer freetext prompt.
275-
let mut input = Input::new();
276-
if prompt {
277-
input.with_prompt("Other dependency files (comma separated paths)");
270+
let mut input = if prompt {
271+
Input::new().with_prompt("Other dependency files (comma separated paths)")
278272
} else {
279-
input.with_prompt(
273+
Input::new().with_prompt(
280274
"No known dependency files found in the current directory.\nDependency files (comma \
281275
separated paths)",
282-
);
276+
)
283277
};
284278

285279
// Allow empty as escape hatch if people already selected a valid dependency
286280
// file.
287-
input.allow_empty(!depfiles.is_empty());
281+
input = input.allow_empty(!depfiles.is_empty());
288282

289283
// Prompt for additional files.
290284
let other_depfiles: String = input.interact_text()?;
@@ -301,7 +295,10 @@ fn prompt_depfile_names() -> io::Result<Vec<String>> {
301295
}
302296

303297
/// Find the type for a dependency file path.
304-
fn find_depfile_type(depfile: &str, cli_depfile_type: Option<&String>) -> io::Result<String> {
298+
fn find_depfile_type(
299+
depfile: &str,
300+
cli_depfile_type: Option<&String>,
301+
) -> dialoguer::Result<String> {
305302
if let Some(cli_depfile_type) = cli_depfile_type {
306303
// Use CLI dependency file type if specified.
307304
return Ok(cli_depfile_type.into());
@@ -326,7 +323,7 @@ fn find_depfile_type(depfile: &str, cli_depfile_type: Option<&String>) -> io::Re
326323
}
327324

328325
/// Ask for the dependency file type.
329-
fn prompt_depfile_type(depfile: &str, mut formats: Vec<&str>) -> io::Result<String> {
326+
fn prompt_depfile_type(depfile: &str, mut formats: Vec<&str>) -> dialoguer::Result<String> {
330327
// Allow all formats if no matching formats were found.
331328
if formats.is_empty() {
332329
formats = LockfileFormat::iter().map(|format| format.name()).collect();

cli/src/deno.rs

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,21 @@
33
use std::borrow::Cow;
44
use std::path::{Path, PathBuf};
55
use std::rc::Rc;
6+
use std::sync::Arc;
67

78
use anyhow::{anyhow, Context, Error, Result};
89
use console::style;
910
use dashmap::DashMap;
1011
use deno_ast::{
11-
EmitOptions, EmittedSource, MediaType, ParseParams, SourceMapOption, SourceTextInfo,
12-
TranspileOptions,
12+
EmitOptions, EmittedSourceBytes, MediaType, ParseParams, SourceMapOption, TranspileOptions,
1313
};
14+
use deno_core::error::JsError;
1415
use deno_core::{
15-
include_js_files, ExtensionFileSource, ModuleCodeString, ModuleLoadResponse, ModuleSourceCode,
16-
RequestedModuleType,
16+
include_js_files, Extension, ExtensionFileSource, ModuleCodeString, ModuleLoadResponse,
17+
ModuleLoader, ModuleSource, ModuleSourceCode, ModuleSpecifier, ModuleType, RequestedModuleType,
18+
ResolutionKind,
1719
};
18-
use deno_runtime::deno_core::error::JsError;
19-
use deno_runtime::deno_core::{
20-
Extension, ModuleLoader, ModuleSource, ModuleSpecifier, ModuleType, ResolutionKind,
21-
SourceMapGetter,
22-
};
23-
use deno_runtime::permissions::{Permissions, PermissionsContainer, PermissionsOptions};
20+
use deno_runtime::deno_permissions::{Permissions, PermissionsContainer, PermissionsOptions};
2421
use deno_runtime::worker::{MainWorker, WorkerOptions};
2522
use deno_runtime::{fmt_errors, BootstrapOptions};
2623
use futures::future::BoxFuture;
@@ -66,22 +63,19 @@ pub async fn run(
6663
..Default::default()
6764
};
6865

69-
let main_module =
70-
deno_core::resolve_path(&extension.entry_point().to_string_lossy(), &PathBuf::from("."))?;
66+
let main_module = deno_core::resolve_path(extension.entry_point(), &PathBuf::from("."))?;
7167

7268
let bootstrap =
7369
BootstrapOptions { args, user_agent: "phylum-cli/extension".into(), ..Default::default() };
7470

7571
let module_loader = Rc::new(ExtensionsModuleLoader::new(extension.path()));
76-
let source_map_getter: Rc<dyn SourceMapGetter> = Rc::new(module_loader.clone());
7772

7873
let origin_storage_dir = extension.state_path();
7974

8075
let options = WorkerOptions {
8176
origin_storage_dir,
8277
module_loader,
8378
bootstrap,
84-
source_map_getter: Some(source_map_getter),
8579
extensions: vec![phylum_api],
8680
..Default::default()
8781
};
@@ -219,7 +213,7 @@ impl ModuleLoader for ExtensionsModuleLoader {
219213
// Load either a local file under the extensions directory, or a Deno standard
220214
// library module. Reject all URLs that do not fit these two use
221215
// cases.
222-
let mut code = match module_specifier.scheme() {
216+
let code = match module_specifier.scheme() {
223217
"file" => {
224218
ExtensionsModuleLoader::load_from_filesystem(&extension_path, &module_specifier)
225219
.await?
@@ -228,31 +222,30 @@ impl ModuleLoader for ExtensionsModuleLoader {
228222
_ => return Err(anyhow!("Unsupported module specifier: {}", module_specifier)),
229223
};
230224

231-
if should_transpile {
232-
let transpiled =
233-
source_mapper.transpile(module_specifier.to_string(), &code, media_type)?;
234-
code.clone_from(&transpiled.text);
225+
let module_source = if should_transpile {
226+
let transpiled = source_mapper.transpile(
227+
module_specifier.to_string(),
228+
code.into(),
229+
media_type,
230+
)?;
231+
ModuleSourceCode::Bytes(transpiled.source.into_boxed_slice().into())
235232
} else {
236-
source_mapper.source_cache.insert(module_specifier.to_string(), code.clone());
237-
}
233+
source_mapper
234+
.source_cache
235+
.insert(module_specifier.to_string(), code.clone().into());
236+
ModuleSourceCode::String(code.into())
237+
};
238238

239-
Ok(ModuleSource::new(
240-
module_type,
241-
ModuleSourceCode::String(code.into()),
242-
&module_specifier,
243-
None,
244-
))
239+
Ok(ModuleSource::new(module_type, module_source, &module_specifier, None))
245240
}))
246241
}
247-
}
248242

249-
impl SourceMapGetter for ExtensionsModuleLoader {
250243
fn get_source_map(&self, file_name: &str) -> Option<Vec<u8>> {
251244
let transpiled = self.source_mapper.transpiled_cache.get(file_name)?;
252-
transpiled.source_map.clone().map(|map| map.into_bytes())
245+
transpiled.source_map.clone()
253246
}
254247

255-
fn get_source_line(&self, file_name: &str, line_number: usize) -> Option<String> {
248+
fn get_source_mapped_source_line(&self, file_name: &str, line_number: usize) -> Option<String> {
256249
let source = self.source_mapper.source_cache.get(file_name)?;
257250
source.lines().nth(line_number).map(|line| line.to_owned())
258251
}
@@ -261,8 +254,8 @@ impl SourceMapGetter for ExtensionsModuleLoader {
261254
/// Module source map cache.
262255
#[derive(Default)]
263256
struct SourceMapper {
264-
transpiled_cache: DashMap<String, EmittedSource>,
265-
source_cache: DashMap<String, String>,
257+
transpiled_cache: DashMap<String, EmittedSourceBytes>,
258+
source_cache: DashMap<String, Arc<str>>,
266259
}
267260

268261
impl SourceMapper {
@@ -274,21 +267,19 @@ impl SourceMapper {
274267
fn transpile(
275268
&self,
276269
specifier: impl Into<String>,
277-
code: impl Into<String>,
270+
code: Arc<str>,
278271
media_type: MediaType,
279-
) -> Result<EmittedSource> {
272+
) -> Result<EmittedSourceBytes> {
280273
let specifier = specifier.into();
281274

282275
// Load module if it is not in the cache.
283276
if !self.transpiled_cache.contains_key(&specifier) {
284-
let code = code.into();
285-
286277
// Add the original code to the cache.
287278
self.source_cache.insert(specifier.clone(), code.clone());
288279

289280
// Parse module.
290281
let parsed = deno_ast::parse_module(ParseParams {
291-
text_info: SourceTextInfo::from_string(code),
282+
text: code,
292283
specifier: specifier.parse()?,
293284
capture_tokens: false,
294285
scope_analysis: false,
@@ -306,12 +297,8 @@ impl SourceMapper {
306297
self.transpiled_cache.insert(specifier.clone(), transpiled);
307298
}
308299

309-
// Clone fields manually, since derive is missing.
310300
let transpiled = self.transpiled_cache.get(&specifier).unwrap();
311-
Ok(EmittedSource {
312-
source_map: transpiled.source_map.clone(),
313-
text: transpiled.text.clone(),
314-
})
301+
Ok(transpiled.clone())
315302
}
316303
}
317304

cli/src/permissions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use birdcage::error::Result as SandboxResult;
1212
#[cfg(unix)]
1313
use birdcage::{Birdcage, Exception, Sandbox};
1414
#[cfg(feature = "extensions")]
15-
use deno_runtime::permissions::PermissionsOptions;
15+
use deno_runtime::deno_permissions::PermissionsOptions;
1616
use serde::de::Error as _;
1717
use serde::{Deserialize, Deserializer, Serialize};
1818

cli/tests/extensions/permissions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fn incorrect_net_permission_unsuccessful_run() {
7070
test_cli
7171
.run(["incorrect-net-perms"])
7272
.failure()
73-
.stderr("❗ Error: Requires net access to \"phylum.io\"\n");
73+
.stderr("❗ Error: Requires net access to \"phylum.io:443\"\n");
7474
}
7575

7676
#[test]

0 commit comments

Comments
 (0)