Skip to content

Commit 335adb4

Browse files
committed
chore: pass preload and require modules separately
1 parent e536444 commit 335adb4

File tree

15 files changed

+85
-36
lines changed

15 files changed

+85
-36
lines changed

cli/args/flags.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4756,7 +4756,9 @@ fn require_arg() -> Arg {
47564756
.long("require")
47574757
.value_name("FILE")
47584758
.action(ArgAction::Append)
4759-
.help("A list of CommonJS modules that will be executed before the main module")
4759+
.help(
4760+
"A list of CommonJS modules that will be executed before the main module",
4761+
)
47604762
.value_hint(ValueHint::FilePath)
47614763
}
47624764

cli/args/mod.rs

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ use deno_semver::npm::NpmPackageReqReference;
5757
use deno_telemetry::OtelConfig;
5858
use deno_terminal::colors;
5959
pub use flags::*;
60-
use indexmap::IndexSet;
6160
use once_cell::sync::Lazy;
6261
use thiserror::Error;
6362

@@ -638,26 +637,6 @@ impl CliOptions {
638637
self.flags.env_file.as_ref()
639638
}
640639

641-
/// Returns preload/import modules and require modules
642-
pub fn all_preload_modules(&self) -> Result<Vec<ModuleSpecifier>, AnyError> {
643-
if self.flags.preload.is_empty() && self.flags.require.is_empty() {
644-
return Ok(vec![]);
645-
}
646-
647-
let mut modules = IndexSet::new();
648-
for preload_specifier in self.flags.preload.iter() {
649-
modules
650-
.insert(resolve_url_or_path(preload_specifier, self.initial_cwd())?);
651-
}
652-
653-
for require_specifier in self.flags.require.iter() {
654-
modules
655-
.insert(resolve_url_or_path(require_specifier, self.initial_cwd())?);
656-
}
657-
658-
Ok(modules.into_iter().collect())
659-
}
660-
661640
pub fn preload_modules(&self) -> Result<Vec<ModuleSpecifier>, AnyError> {
662641
if self.flags.preload.is_empty() {
663642
return Ok(vec![]);

cli/lib/worker.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,11 +583,13 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
583583
permissions: PermissionsContainer,
584584
main_module: Url,
585585
preload_modules: Vec<Url>,
586+
require_modules: Vec<Url>,
586587
) -> Result<LibMainWorker, CoreError> {
587588
self.create_custom_worker(
588589
mode,
589590
main_module,
590591
preload_modules,
592+
require_modules,
591593
permissions,
592594
vec![],
593595
Default::default(),
@@ -602,6 +604,7 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
602604
mode: WorkerExecutionMode,
603605
main_module: Url,
604606
preload_modules: Vec<Url>,
607+
require_modules: Vec<Url>,
605608
permissions: PermissionsContainer,
606609
custom_extensions: Vec<Extension>,
607610
stdio: deno_runtime::deno_io::Stdio,
@@ -724,6 +727,7 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
724727
Ok(LibMainWorker {
725728
main_module,
726729
preload_modules,
730+
require_modules,
727731
worker,
728732
})
729733
}
@@ -811,6 +815,7 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
811815
pub struct LibMainWorker {
812816
main_module: Url,
813817
preload_modules: Vec<Url>,
818+
require_modules: Vec<Url>,
814819
worker: MainWorker,
815820
}
816821

@@ -878,6 +883,11 @@ impl LibMainWorker {
878883
self.worker.evaluate_module(id).await?;
879884
self.worker.run_event_loop(false).await?;
880885
}
886+
for require_module_url in self.require_modules.iter() {
887+
let id = self.worker.preload_side_module(require_module_url).await?;
888+
self.worker.evaluate_module(id).await?;
889+
self.worker.run_event_loop(false).await?;
890+
}
881891
Ok(())
882892
}
883893

cli/lsp/testing/execution.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ impl TestRun {
323323
specifier,
324324
// Executing tests in the LSP currently doesn't support preload option
325325
vec![],
326+
// Executing tests in the LSP currently doesn't support require option
327+
vec![],
326328
worker_sender,
327329
fail_fast_tracker,
328330
test::TestSpecifierOptions {

cli/rt/run.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@ pub async fn run(
10831083
Err(_) => main_module,
10841084
};
10851085

1086-
let mut preload_modules = metadata
1086+
let preload_modules = metadata
10871087
.preload_modules
10881088
.iter()
10891089
.map(|key| root_dir_url.join(key).unwrap())
@@ -1095,13 +1095,12 @@ pub async fn run(
10951095
.map(|key| root_dir_url.join(key).unwrap())
10961096
.collect::<Vec<_>>();
10971097

1098-
preload_modules.extend(require_modules);
1099-
11001098
let mut worker = worker_factory.create_main_worker(
11011099
WorkerExecutionMode::Run,
11021100
permissions,
11031101
main_module,
11041102
preload_modules,
1103+
require_modules,
11051104
)?;
11061105

11071106
let exit_code = worker.run().await?;

cli/tools/bench/mod.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ async fn bench_specifier(
157157
permissions_container: PermissionsContainer,
158158
specifier: ModuleSpecifier,
159159
preload_modules: Vec<ModuleSpecifier>,
160+
require_modules: Vec<ModuleSpecifier>,
160161
sender: UnboundedSender<BenchEvent>,
161162
filter: TestFilter,
162163
) -> Result<(), AnyError> {
@@ -165,6 +166,7 @@ async fn bench_specifier(
165166
permissions_container,
166167
specifier.clone(),
167168
preload_modules,
169+
require_modules,
168170
&sender,
169171
filter,
170172
)
@@ -188,6 +190,7 @@ async fn bench_specifier_inner(
188190
permissions_container: PermissionsContainer,
189191
specifier: ModuleSpecifier,
190192
preload_modules: Vec<ModuleSpecifier>,
193+
require_modules: Vec<ModuleSpecifier>,
191194
sender: &UnboundedSender<BenchEvent>,
192195
filter: TestFilter,
193196
) -> Result<(), CreateCustomWorkerError> {
@@ -196,6 +199,7 @@ async fn bench_specifier_inner(
196199
WorkerExecutionMode::Bench,
197200
specifier.clone(),
198201
preload_modules,
202+
require_modules,
199203
permissions_container,
200204
vec![ops::bench::deno_bench::init(sender.clone())],
201205
Default::default(),
@@ -301,6 +305,7 @@ async fn bench_specifiers(
301305
permission_desc_parser: &Arc<RuntimePermissionDescriptorParser<CliSys>>,
302306
specifiers: Vec<ModuleSpecifier>,
303307
preload_modules: Vec<ModuleSpecifier>,
308+
require_modules: Vec<ModuleSpecifier>,
304309
options: BenchSpecifierOptions,
305310
) -> Result<(), AnyError> {
306311
let (sender, mut receiver) = unbounded_channel::<BenchEvent>();
@@ -313,6 +318,7 @@ async fn bench_specifiers(
313318
let sender = sender.clone();
314319
let options = option_for_handles.clone();
315320
let preload_modules = preload_modules.clone();
321+
let require_modules = require_modules.clone();
316322
let cli_options = cli_options.clone();
317323
let permission_desc_parser = permission_desc_parser.clone();
318324
spawn_blocking(move || {
@@ -333,6 +339,7 @@ async fn bench_specifiers(
333339
permissions_container,
334340
specifier,
335341
preload_modules,
342+
require_modules,
336343
sender,
337344
options.filter,
338345
);
@@ -498,7 +505,8 @@ pub async fn run_benchmarks(
498505
return Ok(());
499506
}
500507

501-
let preload_modules = cli_options.all_preload_modules()?;
508+
let preload_modules = cli_options.preload_modules()?;
509+
let require_modules = cli_options.require_modules()?;
502510
let log_level = cli_options.log_level();
503511
let worker_factory =
504512
Arc::new(factory.create_cli_main_worker_factory().await?);
@@ -508,6 +516,7 @@ pub async fn run_benchmarks(
508516
factory.permission_desc_parser()?,
509517
specifiers,
510518
preload_modules,
519+
require_modules,
511520
BenchSpecifierOptions {
512521
filter: TestFilter::from_flag(&workspace_bench_options.filter),
513522
json: workspace_bench_options.json,
@@ -636,13 +645,15 @@ pub async fn run_benchmarks_with_watch(
636645
}
637646

638647
let log_level = cli_options.log_level();
639-
let preload_modules = cli_options.all_preload_modules()?;
648+
let preload_modules = cli_options.preload_modules()?;
649+
let require_modules = cli_options.require_modules()?;
640650
bench_specifiers(
641651
worker_factory,
642652
cli_options,
643653
factory.permission_desc_parser()?,
644654
specifiers,
645655
preload_modules,
656+
require_modules,
646657
BenchSpecifierOptions {
647658
filter: TestFilter::from_flag(&workspace_bench_options.filter),
648659
json: workspace_bench_options.json,

cli/tools/compile.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,10 +436,14 @@ fn get_module_roots_and_include_paths(
436436
}
437437
}
438438

439-
for preload_module in cli_options.all_preload_modules()? {
439+
for preload_module in cli_options.preload_modules()? {
440440
module_roots.push(preload_module);
441441
}
442442

443+
for require_module in cli_options.require_modules()? {
444+
module_roots.push(require_module);
445+
}
446+
443447
Ok((module_roots, include_paths))
444448
}
445449

cli/tools/deploy.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ pub async fn deploy(mut flags: Flags) -> Result<i32, AnyError> {
6161
WorkerExecutionMode::Deploy,
6262
specifier,
6363
vec![],
64+
vec![],
6465
PermissionsContainer::allow_all(
6566
factory.permission_desc_parser()?.clone(),
6667
),

cli/tools/jupyter/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ pub async fn kernel(
102102
main_module.clone(),
103103
// `deno jupyter` doesn't support preloading modules
104104
vec![],
105+
// `deno jupyter` doesn't support require modules
106+
vec![],
105107
permissions,
106108
vec![
107109
ops::jupyter::deno_jupyter::init(stdio_tx.clone()),

cli/tools/lint/plugins.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ async fn create_plugin_runner_inner(
157157
main_module.clone(),
158158
// `deno lint` doesn't support preloading modules
159159
vec![],
160+
// `deno lint` doesn't support require modules
161+
vec![],
160162
permissions,
161163
vec![crate::ops::lint::deno_lint_ext::init(logger.clone())],
162164
Default::default(),

0 commit comments

Comments
 (0)