From 504cd0c2dbc428a71dfe64cb5b2137f979ebf58c Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 8 Feb 2026 15:10:36 +0800 Subject: [PATCH] update deno commons mod --- libraries/deno-commons-mod.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/libraries/deno-commons-mod.ts b/libraries/deno-commons-mod.ts index 538dbc5..c342aeb 100644 --- a/libraries/deno-commons-mod.ts +++ b/libraries/deno-commons-mod.ts @@ -795,6 +795,9 @@ export class ProcessBar { } } +/** + * @deprecated Use {@link fetchDataWithTimeout} instead. + */ export async function fetchWithTimeout( input: URL | Request | string, timeout?: number, @@ -815,6 +818,31 @@ export async function fetchWithTimeout( return response; } +type RequestInitWithTimeout = RequestInit & { + timeoutMillis?: number; +}; + +export async function fetchDataWithTimeout( + input: URL | Request | string, + init: RequestInitWithTimeout = {}, +): Promise { + const timeout = init.timeoutMillis ?? 10000; + const abortController = new AbortController(); + const timeoutHandler = setTimeout(() => { + abortController.abort( + `Fetch '${input}' timeout: ${timeout} ms`, + ); + }, timeout); + try { + return await fetch(input, { + ...init, + signal: abortController.signal, + }); + } finally { + clearTimeout(timeoutHandler); + } +} + export function getCurrentScriptFile(): string { return fromFileUrl(import.meta.url); }