summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/tests/unit/serve_test.ts15
-rw-r--r--cli/tsc/dts/lib.deno.unstable.d.ts37
2 files changed, 35 insertions, 17 deletions
diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts
index 5da300dc9..c6cfc45f3 100644
--- a/cli/tests/unit/serve_test.ts
+++ b/cli/tests/unit/serve_test.ts
@@ -6,7 +6,6 @@ import { TextProtoReader } from "../testdata/run/textproto.ts";
import {
assert,
assertEquals,
- assertRejects,
assertStringIncludes,
assertThrows,
Deferred,
@@ -50,7 +49,7 @@ Deno.test(async function httpServerShutsDownPortBeforeResolving() {
assertThrows(() => Deno.listen({ port: 4501 }));
ac.abort();
- await server;
+ await server.finished;
const listener = Deno.listen({ port: 4501 });
listener!.close();
@@ -93,7 +92,7 @@ Deno.test(async function httpServerRejectsOnAddrInUse() {
});
await listeningPromise;
- await assertRejects(
+ assertThrows(
() =>
Deno.serve({
handler: (_req) => new Response("ok"),
@@ -284,18 +283,18 @@ Deno.test({ permissions: { net: true } }, async function httpServerOverload2() {
Deno.test(
{ permissions: { net: true } },
- async function httpServerErrorOverloadMissingHandler() {
+ function httpServerErrorOverloadMissingHandler() {
// @ts-ignore - testing invalid overload
- await assertRejects(() => Deno.serve(), TypeError, "handler");
+ assertThrows(() => Deno.serve(), TypeError, "handler");
// @ts-ignore - testing invalid overload
- await assertRejects(() => Deno.serve({}), TypeError, "handler");
- await assertRejects(
+ assertThrows(() => Deno.serve({}), TypeError, "handler");
+ assertThrows(
// @ts-ignore - testing invalid overload
() => Deno.serve({ handler: undefined }),
TypeError,
"handler",
);
- await assertRejects(
+ assertThrows(
// @ts-ignore - testing invalid overload
() => Deno.serve(undefined, { handler: () => {} }),
TypeError,
diff --git a/cli/tsc/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts
index 3a4344bd8..c0c0d16ad 100644
--- a/cli/tsc/dts/lib.deno.unstable.d.ts
+++ b/cli/tsc/dts/lib.deno.unstable.d.ts
@@ -1305,6 +1305,16 @@ declare namespace Deno {
/** **UNSTABLE**: New API, yet to be vetted.
*
+ * @category HTTP Server
+ */
+ export interface Server {
+ /** A promise that resolves once server finishes - eg. when aborted using
+ * the signal passed to {@linkcode ServeOptions.signal}.
+ */
+ finished: Promise<void>;
+ }
+ /** **UNSTABLE**: New API, yet to be vetted.
+ *
* Serves HTTP requests with the given handler.
*
* You can specify an object with a port and hostname option, which is the
@@ -1331,8 +1341,11 @@ declare namespace Deno {
* ```ts
* const ac = new AbortController();
*
- * Deno.serve({ signal: ac.signal }, (_req) => new Response("Hello, world"))
- * .then(() => console.log("Server closed"));
+ * const server = Deno.serve(
+ * { signal: ac.signal },
+ * (_req) => new Response("Hello, world")
+ * );
+ * server.finished.then(() => console.log("Server closed"));
*
* console.log("Closing server...");
* ac.abort();
@@ -1362,7 +1375,7 @@ declare namespace Deno {
*
* @category HTTP Server
*/
- export function serve(handler: ServeHandler): Promise<void>;
+ export function serve(handler: ServeHandler): Server;
/** **UNSTABLE**: New API, yet to be vetted.
*
* Serves HTTP requests with the given handler.
@@ -1391,8 +1404,11 @@ declare namespace Deno {
* ```ts
* const ac = new AbortController();
*
- * Deno.serve({ signal: ac.signal }, (_req) => new Response("Hello, world"))
- * .then(() => console.log("Server closed"));
+ * const server = Deno.serve(
+ * { signal: ac.signal },
+ * (_req) => new Response("Hello, world")
+ * );
+ * server.finished.then(() => console.log("Server closed"));
*
* console.log("Closing server...");
* ac.abort();
@@ -1425,7 +1441,7 @@ declare namespace Deno {
export function serve(
options: ServeOptions | ServeTlsOptions,
handler: ServeHandler,
- ): Promise<void>;
+ ): Server;
/** **UNSTABLE**: New API, yet to be vetted.
*
* Serves HTTP requests with the given handler.
@@ -1454,8 +1470,11 @@ declare namespace Deno {
* ```ts
* const ac = new AbortController();
*
- * Deno.serve({ signal: ac.signal }, (_req) => new Response("Hello, world"))
- * .then(() => console.log("Server closed"));
+ * const server = Deno.serve(
+ * { signal: ac.signal },
+ * (_req) => new Response("Hello, world")
+ * );
+ * server.finished.then(() => console.log("Server closed"));
*
* console.log("Closing server...");
* ac.abort();
@@ -1487,7 +1506,7 @@ declare namespace Deno {
*/
export function serve(
options: ServeInit & (ServeOptions | ServeTlsOptions),
- ): Promise<void>;
+ ): Server;
/** **UNSTABLE**: New API, yet to be vetted.
*