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/worker.rs | |
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/worker.rs')
-rw-r--r-- | cli/worker.rs | 22 |
1 files changed, 20 insertions, 2 deletions
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<Arc<dyn code_cache::CodeCache>>, + serve_port: Option<NonZeroU16>, + serve_host: Option<String>, } impl SharedWorkerState { @@ -410,6 +414,8 @@ impl CliMainWorkerFactory { feature_checker: Arc<FeatureChecker>, options: CliMainWorkerOptions, node_ipc: Option<i64>, + serve_port: Option<NonZeroU16>, + serve_host: Option<String>, 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<CliMainWorker, AnyError> { 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<Extension>, @@ -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<SharedWorkerState>, stdio: deno_runtime::deno_io::Stdio, ) -> Arc<CreateWebWorkerCb> { @@ -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(), |