diff options
Diffstat (limited to 'std/http')
-rw-r--r-- | std/http/cookie.ts | 2 | ||||
-rwxr-xr-x | std/http/file_server.ts | 20 | ||||
-rw-r--r-- | std/http/file_server_test.ts | 2 | ||||
-rw-r--r-- | std/http/server.ts | 2 | ||||
-rw-r--r-- | std/http/server_test.ts | 5 |
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) { |