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 /ext/http/00_serve.ts | |
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 'ext/http/00_serve.ts')
-rw-r--r-- | ext/http/00_serve.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts index 1063f9691..d19b62dde 100644 --- a/ext/http/00_serve.ts +++ b/ext/http/00_serve.ts @@ -791,8 +791,37 @@ internals.upgradeHttpRaw = upgradeHttpRaw; internals.serveHttpOnListener = serveHttpOnListener; internals.serveHttpOnConnection = serveHttpOnConnection; +function registerDeclarativeServer(exports) { + if (ObjectHasOwn(exports, "fetch")) { + if (typeof exports.fetch !== "function" || exports.fetch.length !== 1) { + throw new TypeError( + "Invalid type for fetch: must be a function with a single parameter", + ); + } + return ({ servePort, serveHost }) => { + Deno.serve({ + port: servePort, + hostname: serveHost, + onListen: ({ port, hostname }) => { + console.debug( + `%cdeno serve%c: Listening on %chttp://${hostname}:${port}/%c`, + "color: green", + "color: inherit", + "color: yellow", + "color: inherit", + ); + }, + handler: (req) => { + return exports.fetch(req); + }, + }); + }; + } +} + export { addTrailers, + registerDeclarativeServer, serve, serveHttpOnConnection, serveHttpOnListener, |