Skip to content

Commit 44ab3ba

Browse files
feat: add redirect utility and response catching helper
1 parent e4976db commit 44ab3ba

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/lib/redirect.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export function redirect(url: string, init: ResponseInit | number = 302) {
2+
let responseInit = init;
3+
4+
if (typeof responseInit === "number") {
5+
responseInit = { status: responseInit, headers: {} };
6+
} else if (!("status" in responseInit)) {
7+
responseInit = { ...responseInit, status: 302 };
8+
}
9+
10+
let headers = new Headers(responseInit.headers);
11+
headers.set("Location", url);
12+
13+
return new Response(null, { ...responseInit, headers });
14+
}

src/test/helpers.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function isResponse(value: unknown): value is Response {
2+
return value instanceof Response;
3+
}
4+
5+
export async function catchResponse(promise: Promise<unknown>) {
6+
try {
7+
await promise;
8+
throw new Error("Should have failed.");
9+
} catch (error) {
10+
if (isResponse(error)) return error;
11+
throw error;
12+
}
13+
}

0 commit comments

Comments
 (0)