diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-04-24 15:45:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-24 19:45:49 +0000 |
commit | 2f8825a935bfdf21ca592284556cd86c1552ac8d (patch) | |
tree | 68beddeb5547861212be188f126113e6b1afc1df /cli/tools | |
parent | c1bd9503dd0288a3c209ca2724d2a1de9d5d122b (diff) |
feat: Add `deno serve` subcommand (#23511)
By default, `deno serve` will assign port 8000 (like `Deno.serve`).
Users may choose a different port using `--port`.
`deno serve /tmp/file.ts`
`server.ts`:
```ts
export default {
fetch(req) {
return new Response("hello world!\n");
},
};
```
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/bench/mod.rs | 2 | ||||
-rw-r--r-- | cli/tools/jupyter/mod.rs | 2 | ||||
-rw-r--r-- | cli/tools/repl/mod.rs | 2 | ||||
-rw-r--r-- | cli/tools/run/mod.rs | 18 | ||||
-rw-r--r-- | cli/tools/test/mod.rs | 2 |
5 files changed, 18 insertions, 8 deletions
diff --git a/cli/tools/bench/mod.rs b/cli/tools/bench/mod.rs index 95986f320..e2411ed12 100644 --- a/cli/tools/bench/mod.rs +++ b/cli/tools/bench/mod.rs @@ -35,6 +35,7 @@ use deno_core::PollEventLoopOptions; use deno_runtime::permissions::Permissions; use deno_runtime::permissions::PermissionsContainer; use deno_runtime::tokio_util::create_and_run_current_thread; +use deno_runtime::WorkerExecutionMode; use indexmap::IndexMap; use indexmap::IndexSet; use log::Level; @@ -204,6 +205,7 @@ async fn bench_specifier_inner( ) -> Result<(), AnyError> { let mut worker = worker_factory .create_custom_worker( + WorkerExecutionMode::Bench, specifier.clone(), PermissionsContainer::new(permissions), vec![ops::bench::deno_bench::init_ops(sender.clone())], diff --git a/cli/tools/jupyter/mod.rs b/cli/tools/jupyter/mod.rs index 64c8cd7df..6531b0339 100644 --- a/cli/tools/jupyter/mod.rs +++ b/cli/tools/jupyter/mod.rs @@ -22,6 +22,7 @@ use deno_runtime::deno_io::Stdio; use deno_runtime::deno_io::StdioPipe; use deno_runtime::permissions::Permissions; use deno_runtime::permissions::PermissionsContainer; +use deno_runtime::WorkerExecutionMode; use deno_terminal::colors; use tokio::sync::mpsc; use tokio::sync::mpsc::UnboundedSender; @@ -88,6 +89,7 @@ pub async fn kernel( let mut worker = worker_factory .create_custom_worker( + WorkerExecutionMode::Jupyter, main_module.clone(), permissions, vec![ diff --git a/cli/tools/repl/mod.rs b/cli/tools/repl/mod.rs index 03b8e512e..d1c1cab71 100644 --- a/cli/tools/repl/mod.rs +++ b/cli/tools/repl/mod.rs @@ -15,6 +15,7 @@ use deno_core::serde_json; use deno_core::unsync::spawn_blocking; use deno_runtime::permissions::Permissions; use deno_runtime::permissions::PermissionsContainer; +use deno_runtime::WorkerExecutionMode; use rustyline::error::ReadlineError; mod channel; @@ -170,6 +171,7 @@ pub async fn run(flags: Flags, repl_flags: ReplFlags) -> Result<i32, AnyError> { let test_event_sender = worker.sender; let mut worker = worker_factory .create_custom_worker( + WorkerExecutionMode::Repl, main_module.clone(), permissions, vec![crate::ops::testing::deno_test::init_ops(test_event_sender)], diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs index 793b55a8a..9f4bfeb96 100644 --- a/cli/tools/run/mod.rs +++ b/cli/tools/run/mod.rs @@ -5,10 +5,10 @@ use std::io::Read; use deno_core::error::AnyError; use deno_runtime::permissions::Permissions; use deno_runtime::permissions::PermissionsContainer; +use deno_runtime::WorkerExecutionMode; use crate::args::EvalFlags; use crate::args::Flags; -use crate::args::RunFlags; use crate::args::WatchFlagsWithPaths; use crate::factory::CliFactory; use crate::factory::CliFactoryBuilder; @@ -19,8 +19,9 @@ use crate::util::file_watcher::WatcherRestartMode; pub mod hmr; pub async fn run_script( + mode: WorkerExecutionMode, flags: Flags, - run_flags: RunFlags, + watch: Option<WatchFlagsWithPaths>, ) -> Result<i32, AnyError> { if !flags.has_permission() && flags.has_permission_in_argv() { log::warn!( @@ -33,8 +34,8 @@ To grant permissions, set them before the script argument. For example: ); } - if let Some(watch_flags) = run_flags.watch { - return run_with_watch(flags, watch_flags).await; + if let Some(watch_flags) = watch { + return run_with_watch(mode, flags, watch_flags).await; } // TODO(bartlomieju): actually I think it will also fail if there's an import @@ -68,7 +69,7 @@ To grant permissions, set them before the script argument. For example: )?); let worker_factory = factory.create_cli_main_worker_factory().await?; let mut worker = worker_factory - .create_main_worker(main_module, permissions) + .create_main_worker(mode, main_module, permissions) .await?; let exit_code = worker.run().await?; @@ -98,7 +99,7 @@ pub async fn run_from_stdin(flags: Flags) -> Result<i32, AnyError> { }); let mut worker = worker_factory - .create_main_worker(main_module, permissions) + .create_main_worker(WorkerExecutionMode::Run, main_module, permissions) .await?; let exit_code = worker.run().await?; Ok(exit_code) @@ -107,6 +108,7 @@ pub async fn run_from_stdin(flags: Flags) -> Result<i32, AnyError> { // TODO(bartlomieju): this function is not handling `exit_code` set by the runtime // code properly. async fn run_with_watch( + mode: WorkerExecutionMode, flags: Flags, watch_flags: WatchFlagsWithPaths, ) -> Result<i32, AnyError> { @@ -135,7 +137,7 @@ async fn run_with_watch( let mut worker = factory .create_cli_main_worker_factory() .await? - .create_main_worker(main_module, permissions) + .create_main_worker(mode, main_module, permissions) .await?; if watch_flags.hmr { @@ -184,7 +186,7 @@ pub async fn eval_command( )?); let worker_factory = factory.create_cli_main_worker_factory().await?; let mut worker = worker_factory - .create_main_worker(main_module, permissions) + .create_main_worker(WorkerExecutionMode::Eval, main_module, permissions) .await?; let exit_code = worker.run().await?; Ok(exit_code) diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs index 013d8c084..ffa0fef9e 100644 --- a/cli/tools/test/mod.rs +++ b/cli/tools/test/mod.rs @@ -59,6 +59,7 @@ use deno_runtime::permissions::Permissions; use deno_runtime::permissions::PermissionsContainer; use deno_runtime::tokio_util::create_and_run_current_thread; use deno_runtime::worker::MainWorker; +use deno_runtime::WorkerExecutionMode; use indexmap::IndexMap; use indexmap::IndexSet; use log::Level; @@ -583,6 +584,7 @@ async fn configure_main_worker( ) -> Result<(Option<Box<dyn CoverageCollector>>, MainWorker), anyhow::Error> { let mut worker = worker_factory .create_custom_worker( + WorkerExecutionMode::Test, specifier.clone(), PermissionsContainer::new(permissions), vec![ops::testing::deno_test::init_ops(worker_sender.sender)], |