From 5b0752234993ee69e47c32db478d2a296f73f396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Fri, 19 May 2023 02:59:23 +0200 Subject: BREAKING(unstable): change return type of Deno.serve() API (#19189) This commit changes the return type of an unstable `Deno.serve()` API to instead return a `Deno.Server` object that has a `finished` field. This change is done in preparation to be able to ref/unref the HTTP server. --- cli/tsc/dts/lib.deno.unstable.d.ts | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'cli/tsc') 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 @@ -1303,6 +1303,16 @@ declare namespace Deno { handler: ServeHandler; } + /** **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; + } /** **UNSTABLE**: New API, yet to be vetted. * * Serves HTTP requests with the given handler. @@ -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; + 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; + ): 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; + ): Server; /** **UNSTABLE**: New API, yet to be vetted. * -- cgit v1.2.3