summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/js/fetch.ts7
-rw-r--r--cli/js/fetch_test.ts7
-rw-r--r--cli/js/lib.deno_runtime.d.ts20
3 files changed, 21 insertions, 13 deletions
diff --git a/cli/js/fetch.ts b/cli/js/fetch.ts
index 24daf7f9c..f5fb8e6bb 100644
--- a/cli/js/fetch.ts
+++ b/cli/js/fetch.ts
@@ -13,6 +13,7 @@ import * as io from "./io.ts";
import { read, close } from "./files.ts";
import { Buffer } from "./buffer.ts";
import { FormData } from "./form_data.ts";
+import { URL } from "./url.ts";
import { URLSearchParams } from "./url_search_params.ts";
import * as dispatch from "./dispatch.ts";
import { sendAsync } from "./dispatch_json.ts";
@@ -367,7 +368,7 @@ async function sendFetchReq(
/** Fetch a resource from the network. */
export async function fetch(
- input: domTypes.Request | string,
+ input: domTypes.Request | URL | string,
init?: domTypes.RequestInit
): Promise<Response> {
let url: string;
@@ -377,8 +378,8 @@ export async function fetch(
let redirected = false;
let remRedirectCount = 20; // TODO: use a better way to handle
- if (typeof input === "string") {
- url = input;
+ if (typeof input === "string" || input instanceof URL) {
+ url = typeof input === "string" ? (input as string) : (input as URL).href;
if (init != null) {
method = init.method || null;
if (init.headers) {
diff --git a/cli/js/fetch_test.ts b/cli/js/fetch_test.ts
index 299cbe05f..4fc2339b6 100644
--- a/cli/js/fetch_test.ts
+++ b/cli/js/fetch_test.ts
@@ -42,6 +42,13 @@ testPerm({ net: true }, async function fetchUrl(): Promise<void> {
assertEquals(response.url, "http://localhost:4545/cli/tests/fixture.json");
});
+testPerm({ net: true }, async function fetchURL(): Promise<void> {
+ const response = await fetch(
+ new URL("http://localhost:4545/cli/tests/fixture.json")
+ );
+ assertEquals(response.url, "http://localhost:4545/cli/tests/fixture.json");
+});
+
testPerm({ net: true }, async function fetchHeaders(): Promise<void> {
const response = await fetch("http://localhost:4545/cli/tests/fixture.json");
const headers = response.headers;
diff --git a/cli/js/lib.deno_runtime.d.ts b/cli/js/lib.deno_runtime.d.ts
index 0d3463869..98e93fc36 100644
--- a/cli/js/lib.deno_runtime.d.ts
+++ b/cli/js/lib.deno_runtime.d.ts
@@ -2481,7 +2481,7 @@ declare namespace __fetch {
}
/** Fetch a resource from the network. */
export function fetch(
- input: __domTypes.Request | string,
+ input: __domTypes.Request | __url.URL | string,
init?: __domTypes.RequestInit
): Promise<Response>;
}
@@ -2658,11 +2658,7 @@ declare namespace __urlSearchParams {
declare namespace __url {
// @url js/url.d.ts
-
- export class URL {
- private _parts;
- private _searchParams;
- private _updateSearchParams;
+ export interface URL {
hash: string;
host: string;
hostname: string;
@@ -2673,14 +2669,18 @@ declare namespace __url {
port: string;
protocol: string;
search: string;
- username: string;
readonly searchParams: __urlSearchParams.URLSearchParams;
- constructor(url: string, base?: string | URL);
+ username: string;
toString(): string;
toJSON(): string;
- static createObjectURL(b: __domTypes.Blob): string;
- static revokeObjectURL(url: string): void;
}
+
+ export const URL: {
+ prototype: URL;
+ new (url: string, base?: string | URL): URL;
+ createObjectURL(object: __domTypes.Blob): string;
+ revokeObjectURL(url: string): void;
+ };
}
declare namespace __workers {