summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/headers.ts13
-rw-r--r--cli/js/headers_test.ts26
2 files changed, 39 insertions, 0 deletions
diff --git a/cli/js/headers.ts b/cli/js/headers.ts
index dc0de54dd..cc22077ad 100644
--- a/cli/js/headers.ts
+++ b/cli/js/headers.ts
@@ -2,6 +2,7 @@
import * as domTypes from "./dom_types.ts";
import { DomIterableMixin } from "./mixins/dom_iterable.ts";
import { requiredArguments } from "./util.ts";
+import { customInspect } from "./console.ts";
// From node-fetch
// Copyright (c) 2016 David Frank. MIT License.
@@ -85,6 +86,18 @@ class HeadersBase {
}
}
+ [customInspect](): string {
+ let headerSize = this[headerMap].size;
+ let output = "";
+ this[headerMap].forEach((value, key) => {
+ const prefix = headerSize === this[headerMap].size ? " " : "";
+ const postfix = headerSize === 1 ? " " : ", ";
+ output = output + `${prefix}${key}: ${value}${postfix}`;
+ headerSize--;
+ });
+ return `Headers {${output}}`;
+ }
+
// ref: https://fetch.spec.whatwg.org/#concept-headers-append
append(name: string, value: string): void {
requiredArguments("Headers.append", arguments.length, 2);
diff --git a/cli/js/headers_test.ts b/cli/js/headers_test.ts
index f08283c51..a01abb6a6 100644
--- a/cli/js/headers_test.ts
+++ b/cli/js/headers_test.ts
@@ -1,5 +1,9 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { test, assert, assertEquals } from "./test_util.ts";
+const {
+ stringifyArgs
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+} = Deno as any;
// Logic heavily copied from web-platform-tests, make
// sure pass mostly header basic test
@@ -329,3 +333,25 @@ test(function toStringShouldBeWebCompatibility(): void {
const headers = new Headers();
assertEquals(headers.toString(), "[object Headers]");
});
+
+function stringify(...args: unknown[]): string {
+ return stringifyArgs(args).replace(/\n$/, "");
+}
+
+test(function customInspectReturnsCorrectHeadersFormat(): void {
+ const blankHeaders = new Headers();
+ assertEquals(stringify(blankHeaders), "Headers {}");
+ const singleHeader = new Headers([["Content-Type", "application/json"]]);
+ assertEquals(
+ stringify(singleHeader),
+ "Headers { content-type: application/json }"
+ );
+ const multiParamHeader = new Headers([
+ ["Content-Type", "application/json"],
+ ["Content-Length", "1337"]
+ ]);
+ assertEquals(
+ stringify(multiParamHeader),
+ "Headers { content-type: application/json, content-length: 1337 }"
+ );
+});