2025-06-28 07:13:32 +05:30
|
|
|
/**
|
|
|
|
|
* Utility to check if a URL loads successfully within a timeout
|
|
|
|
|
*/
|
2025-08-30 18:34:50 +05:30
|
|
|
export async function urlLoads(
|
|
|
|
|
url: string,
|
|
|
|
|
timeoutMs: number = 5000
|
|
|
|
|
): Promise<boolean> {
|
2025-06-28 07:13:32 +05:30
|
|
|
try {
|
|
|
|
|
const controller = new AbortController();
|
|
|
|
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
2025-08-30 18:34:50 +05:30
|
|
|
|
2025-06-28 07:13:32 +05:30
|
|
|
const response = await fetch(url, {
|
|
|
|
|
method: 'HEAD',
|
|
|
|
|
signal: controller.signal,
|
2025-08-30 18:34:50 +05:30
|
|
|
cache: 'no-cache',
|
2025-06-28 07:13:32 +05:30
|
|
|
});
|
2025-08-30 18:34:50 +05:30
|
|
|
|
2025-06-28 07:13:32 +05:30
|
|
|
clearTimeout(timeoutId);
|
|
|
|
|
return response.ok;
|
2025-08-28 19:07:26 +05:30
|
|
|
} catch {
|
2025-06-28 07:13:32 +05:30
|
|
|
return false;
|
|
|
|
|
}
|
2025-08-30 18:34:50 +05:30
|
|
|
}
|