summaryrefslogtreecommitdiff
path: root/std/http
diff options
context:
space:
mode:
Diffstat (limited to 'std/http')
-rw-r--r--std/http/cookie.ts2
-rwxr-xr-xstd/http/file_server.ts20
-rw-r--r--std/http/file_server_test.ts2
-rw-r--r--std/http/server.ts2
-rw-r--r--std/http/server_test.ts5
5 files changed, 17 insertions, 14 deletions
diff --git a/std/http/cookie.ts b/std/http/cookie.ts
index 5e4f38a29..10c9bd689 100644
--- a/std/http/cookie.ts
+++ b/std/http/cookie.ts
@@ -45,7 +45,7 @@ function toString(cookie: Cookie): string {
if (cookie.httpOnly) {
out.push("HttpOnly");
}
- if (Number.isInteger(cookie.maxAge)) {
+ if (typeof cookie.maxAge === "number" && Number.isInteger(cookie.maxAge)) {
assert(cookie.maxAge > 0, "Max-Age must be an integer superior to 0");
out.push(`Max-Age=${cookie.maxAge}`);
}
diff --git a/std/http/file_server.ts b/std/http/file_server.ts
index d71b9ad53..aa0ff49da 100755
--- a/std/http/file_server.ts
+++ b/std/http/file_server.ts
@@ -15,6 +15,7 @@ import {
Response
} from "./server.ts";
import { parse } from "../flags/mod.ts";
+import { assert } from "../testing/asserts.ts";
interface EntryInfo {
mode: string;
@@ -40,10 +41,10 @@ const encoder = new TextEncoder();
const serverArgs = parse(args) as FileServerArgs;
const CORSEnabled = serverArgs.cors ? true : false;
-const target = posix.resolve(serverArgs._[1] || "");
-const addr = `0.0.0.0:${serverArgs.port || serverArgs.p || 4500}`;
+const target = posix.resolve(serverArgs._[1] ?? "");
+const addr = `0.0.0.0:${serverArgs.port ?? serverArgs.p ?? 4500}`;
-if (serverArgs.h || serverArgs.help) {
+if (serverArgs.h ?? serverArgs.help) {
console.log(`Deno File Server
Serves a local directory in HTTP.
@@ -125,8 +126,8 @@ async function serveDir(
const listEntry: EntryInfo[] = [];
const fileInfos = await readDir(dirPath);
for (const fileInfo of fileInfos) {
- const filePath = posix.join(dirPath, fileInfo.name);
- const fileUrl = posix.join(dirUrl, fileInfo.name);
+ const filePath = posix.join(dirPath, fileInfo.name ?? "");
+ const fileUrl = posix.join(dirUrl, fileInfo.name ?? "");
if (fileInfo.name === "index.html" && fileInfo.isFile()) {
// in case index.html as dir...
return await serveFile(req, filePath);
@@ -139,7 +140,7 @@ async function serveDir(
listEntry.push({
mode: modeToString(fileInfo.isDirectory(), mode),
size: fileInfo.isFile() ? fileLenToString(fileInfo.len) : "",
- name: fileInfo.name,
+ name: fileInfo.name ?? "",
url: fileUrl
});
}
@@ -311,7 +312,7 @@ listenAndServe(
}
const fsPath = posix.join(target, normalizedUrl);
- let response: Response;
+ let response: Response | undefined;
try {
const info = await stat(fsPath);
if (info.isDirectory()) {
@@ -324,10 +325,11 @@ listenAndServe(
response = await serveFallback(req, e);
} finally {
if (CORSEnabled) {
+ assert(response);
setCORS(response);
}
- serverLog(req, response);
- req.respond(response);
+ serverLog(req, response!);
+ req.respond(response!);
}
}
);
diff --git a/std/http/file_server_test.ts b/std/http/file_server_test.ts
index 0329168e7..7c60d5f56 100644
--- a/std/http/file_server_test.ts
+++ b/std/http/file_server_test.ts
@@ -38,7 +38,7 @@ test(async function serveFile(): Promise<void> {
assert(res.headers.has("access-control-allow-origin"));
assert(res.headers.has("access-control-allow-headers"));
assert(res.headers.has("content-type"));
- assert(res.headers.get("content-type").includes("charset=utf-8"));
+ assert(res.headers.get("content-type")!.includes("charset=utf-8"));
const downloadedFile = await res.text();
const localFile = new TextDecoder().decode(
await Deno.readFile("README.md")
diff --git a/std/http/server.ts b/std/http/server.ts
index c6a895a1f..9e9cde016 100644
--- a/std/http/server.ts
+++ b/std/http/server.ts
@@ -436,7 +436,7 @@ export class Server implements AsyncIterable<ServerRequest> {
): AsyncIterableIterator<ServerRequest> {
const bufr = new BufReader(conn);
const w = new BufWriter(conn);
- let req: ServerRequest | Deno.EOF;
+ let req: ServerRequest | Deno.EOF | undefined;
let err: Error | undefined;
while (!this.closing) {
diff --git a/std/http/server_test.ts b/std/http/server_test.ts
index 123bc7155..89aaca4ea 100644
--- a/std/http/server_test.ts
+++ b/std/http/server_test.ts
@@ -545,7 +545,7 @@ test(async function testReadRequestError(): Promise<void> {
for (const test of testCases) {
const reader = new BufReader(new StringReader(test.in));
let err;
- let req: ServerRequest | Deno.EOF;
+ let req: ServerRequest | Deno.EOF | undefined;
try {
req = await readRequest(mockConn as Deno.Conn, reader);
} catch (e) {
@@ -559,7 +559,7 @@ test(async function testReadRequestError(): Promise<void> {
assert(err instanceof (test.err as typeof UnexpectedEOFError));
} else {
assert(req instanceof ServerRequest);
- assert(test.headers != null);
+ assert(test.headers);
assertEquals(err, undefined);
assertNotEquals(req, Deno.EOF);
for (const h of test.headers) {
@@ -719,6 +719,7 @@ if (Deno.build.os !== "win") {
const serverRoutine = async (): Promise<void> => {
let reqCount = 0;
const server = serve(":8124");
+ // @ts-ignore
const serverRid = server.listener["rid"];
let connRid = -1;
for await (const req of server) {