From 2f8825a935bfdf21ca592284556cd86c1552ac8d Mon Sep 17 00:00:00 2001 From: Matt Mastracci Date: Wed, 24 Apr 2024 15:45:49 -0400 Subject: 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"); }, }; ``` --- cli/worker.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'cli/worker.rs') diff --git a/cli/worker.rs b/cli/worker.rs index 7dbb9b177..edc4ef907 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -1,5 +1,6 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +use std::num::NonZeroU16; use std::path::Path; use std::path::PathBuf; use std::rc::Rc; @@ -40,6 +41,7 @@ use deno_runtime::web_worker::WebWorkerOptions; use deno_runtime::worker::MainWorker; use deno_runtime::worker::WorkerOptions; use deno_runtime::BootstrapOptions; +use deno_runtime::WorkerExecutionMode; use deno_runtime::WorkerLogLevel; use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageReqReference; @@ -142,6 +144,8 @@ struct SharedWorkerState { disable_deprecated_api_warning: bool, verbose_deprecated_api_warning: bool, code_cache: Option>, + serve_port: Option, + serve_host: Option, } impl SharedWorkerState { @@ -410,6 +414,8 @@ impl CliMainWorkerFactory { feature_checker: Arc, options: CliMainWorkerOptions, node_ipc: Option, + serve_port: Option, + serve_host: Option, enable_future_features: bool, disable_deprecated_api_warning: bool, verbose_deprecated_api_warning: bool, @@ -434,6 +440,8 @@ impl CliMainWorkerFactory { maybe_lockfile, feature_checker, node_ipc, + serve_port, + serve_host, enable_future_features, disable_deprecated_api_warning, verbose_deprecated_api_warning, @@ -444,11 +452,13 @@ impl CliMainWorkerFactory { pub async fn create_main_worker( &self, + mode: WorkerExecutionMode, main_module: ModuleSpecifier, permissions: PermissionsContainer, ) -> Result { self .create_custom_worker( + mode, main_module, permissions, vec![], @@ -459,6 +469,7 @@ impl CliMainWorkerFactory { pub async fn create_custom_worker( &self, + mode: WorkerExecutionMode, main_module: ModuleSpecifier, permissions: PermissionsContainer, custom_extensions: Vec, @@ -545,7 +556,7 @@ impl CliMainWorkerFactory { let maybe_inspector_server = shared.maybe_inspector_server.clone(); let create_web_worker_cb = - create_web_worker_callback(shared.clone(), stdio.clone()); + create_web_worker_callback(mode, shared.clone(), stdio.clone()); let maybe_storage_key = shared .storage_key_resolver @@ -600,6 +611,9 @@ impl CliMainWorkerFactory { disable_deprecated_api_warning: shared.disable_deprecated_api_warning, verbose_deprecated_api_warning: shared.verbose_deprecated_api_warning, future: shared.enable_future_features, + mode, + serve_port: shared.serve_port, + serve_host: shared.serve_host.clone(), }, extensions: custom_extensions, startup_snapshot: crate::js::deno_isolate_init(), @@ -745,6 +759,7 @@ impl CliMainWorkerFactory { } fn create_web_worker_callback( + mode: WorkerExecutionMode, shared: Arc, stdio: deno_runtime::deno_io::Stdio, ) -> Arc { @@ -758,7 +773,7 @@ fn create_web_worker_callback( let maybe_source_map_getter = shared.module_loader_factory.create_source_map_getter(); let create_web_worker_cb = - create_web_worker_callback(shared.clone(), stdio.clone()); + create_web_worker_callback(mode, shared.clone(), stdio.clone()); let maybe_storage_key = shared .storage_key_resolver @@ -805,6 +820,9 @@ fn create_web_worker_callback( disable_deprecated_api_warning: shared.disable_deprecated_api_warning, verbose_deprecated_api_warning: shared.verbose_deprecated_api_warning, future: shared.enable_future_features, + mode, + serve_port: shared.serve_port, + serve_host: shared.serve_host.clone(), }, extensions: vec![], startup_snapshot: crate::js::deno_isolate_init(), -- cgit v1.2.3