summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-09-12 16:32:28 -0700
committerGitHub <noreply@github.com>2024-09-12 23:32:28 +0000
commit7477c2d70639962a40c7333e766b4a4b4aa75ddd (patch)
treee03ec832e9d7a7ef1d40575210aba46b3a83632a
parent018329a4d30681c953670cebe35a6e9dbf9bc5bb (diff)
feat(serve): Support second parameter in deno serve (#25606)
Closes #24099
-rw-r--r--cli/tsc/dts/lib.deno.ns.d.ts4
-rw-r--r--ext/http/00_serve.ts4
-rw-r--r--tests/specs/serve/basic/__test__.jsonc4
-rw-r--r--tests/specs/serve/basic/main.out1
-rw-r--r--tests/specs/serve/basic/main.ts2
-rw-r--r--tests/specs/serve/basic/main_not_win.out1
-rw-r--r--tests/specs/serve/conn_info/__test__.jsonc6
-rw-r--r--tests/specs/serve/conn_info/main.out3
-rw-r--r--tests/specs/serve/conn_info/main.ts19
9 files changed, 36 insertions, 8 deletions
diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts
index 00eff1e23..e287f7afc 100644
--- a/cli/tsc/dts/lib.deno.ns.d.ts
+++ b/cli/tsc/dts/lib.deno.ns.d.ts
@@ -5090,9 +5090,7 @@ declare namespace Deno {
*
* @category HTTP Server
*/
- fetch: (
- request: Request,
- ) => Response | Promise<Response>;
+ fetch: ServeHandler;
}
/** Options which can be set when calling {@linkcode Deno.serve}.
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index be1f1f809..a49ab2790 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -880,8 +880,8 @@ function registerDeclarativeServer(exports) {
);
}
},
- handler: (req) => {
- return exports.fetch(req);
+ handler: (req, connInfo) => {
+ return exports.fetch(req, connInfo);
},
});
};
diff --git a/tests/specs/serve/basic/__test__.jsonc b/tests/specs/serve/basic/__test__.jsonc
index a8eaca0b6..be63f793a 100644
--- a/tests/specs/serve/basic/__test__.jsonc
+++ b/tests/specs/serve/basic/__test__.jsonc
@@ -3,12 +3,12 @@
"tests": {
"basic_win": {
"if": "windows",
- "args": "serve --host 0.0.0.0 --port 12345 main.ts",
+ "args": "serve --check --host 0.0.0.0 --port 12345 main.ts",
"output": "main.out"
},
"basic_not_win": {
"if": "unix",
- "args": "serve --host 0.0.0.0 --port 12345 main.ts",
+ "args": "serve --check --host 0.0.0.0 --port 12345 main.ts",
"output": "main_not_win.out"
}
}
diff --git a/tests/specs/serve/basic/main.out b/tests/specs/serve/basic/main.out
index e79d76af5..8247920e2 100644
--- a/tests/specs/serve/basic/main.out
+++ b/tests/specs/serve/basic/main.out
@@ -1 +1,2 @@
+Check [WILDCARD]
deno serve: Listening on http://localhost:12345/
diff --git a/tests/specs/serve/basic/main.ts b/tests/specs/serve/basic/main.ts
index 9e299ab21..8aa061b1e 100644
--- a/tests/specs/serve/basic/main.ts
+++ b/tests/specs/serve/basic/main.ts
@@ -15,4 +15,4 @@ export default {
fetch(req) {
return new Response("Hello world!");
},
-};
+} satisfies Deno.ServeDefaultExport;
diff --git a/tests/specs/serve/basic/main_not_win.out b/tests/specs/serve/basic/main_not_win.out
index cbfd3395e..6b4a66750 100644
--- a/tests/specs/serve/basic/main_not_win.out
+++ b/tests/specs/serve/basic/main_not_win.out
@@ -1 +1,2 @@
+Check [WILDCARD]
deno serve: Listening on http://0.0.0.0:12345/
diff --git a/tests/specs/serve/conn_info/__test__.jsonc b/tests/specs/serve/conn_info/__test__.jsonc
new file mode 100644
index 000000000..faefad0ad
--- /dev/null
+++ b/tests/specs/serve/conn_info/__test__.jsonc
@@ -0,0 +1,6 @@
+{
+ "args": "serve --check --port 12468 main.ts",
+ "output": "main.out",
+ "tempDir": true,
+ "exitCode": 0
+}
diff --git a/tests/specs/serve/conn_info/main.out b/tests/specs/serve/conn_info/main.out
new file mode 100644
index 000000000..790c4775d
--- /dev/null
+++ b/tests/specs/serve/conn_info/main.out
@@ -0,0 +1,3 @@
+Check [WILDCARD]main.ts
+deno serve: Listening on http://[WILDCARD]
+ServeHandlerInfo {}
diff --git a/tests/specs/serve/conn_info/main.ts b/tests/specs/serve/conn_info/main.ts
new file mode 100644
index 000000000..dbc1b7f07
--- /dev/null
+++ b/tests/specs/serve/conn_info/main.ts
@@ -0,0 +1,19 @@
+(async () => {
+ for (let i = 0; i < 1000; i++) {
+ try {
+ const resp = await fetch("http://localhost:12468/");
+ Deno.exit(0);
+ } catch {
+ await new Promise((r) => setTimeout(r, 10));
+ }
+ }
+
+ Deno.exit(2);
+})();
+
+export default {
+ fetch(request, connInfo) {
+ console.log(connInfo);
+ return new Response("Hello world!");
+ },
+} satisfies Deno.ServeDefaultExport;