import { userAgent as e } from "fast-meta-tags"
import r from "timeout-abort-signal"
async function t(t, a = {}) {
const i = r(a.signal, a.timeout)
try {
const r = await fetch(t, {
signal: i.signal,
headers: { Accept: "*/*", "User-Agent": a?.userAgent || e },
})
if (!r.ok) return null
const c = r.headers.get("Content-Type"),
l = n(t, c),
p = await r.arrayBuffer()
return { src: t, type: c, name: l, buffer: new Uint8Array(p) }
} catch {
return null
} finally {
i.destroy()
}
}
function n(e, r) {
switch (r) {
case "image/png":
return "preview.png"
case "image/jpg":
case "image/jpeg":
return "preview.jpeg"
case "image/gif":
return "preview.gif"
}
return decodeURIComponent(e?.split("/").pop())
}
export async function getFile(e, r) {
return e ? (r?.noBuffer ? { src: e, name: n(e, null), buffer: null } : await t(e, r)) : null
}
export function getDomain(e) {
try {
return new URL(e).hostname
} catch (e) {
return null
}
}
export function matchDomain(e, r) {
try {
const t = new URL(e).hostname,
n = new URL(r).hostname
return t === n || t.endsWith("." + n)
} catch {
return !1
}
}
export function htmlToText(e) {
return e
? e
.replace(/ /gi, " ")
.replace(/&/gi, "&")
.replace(/</gi, "<")
.replace(/>/gi, ">")
.replace(/"/gi, '"')
.replace(/'/g, "'")
.replace(/'/gi, "'")
.replace(/©/gi, "©")
.replace(/®/gi, "®")
.replace(/…/gi, "…")
.replace(/—/gi, "—")
.replace(/–/gi, "–")
.replace(/<[^>]*?(?:\[[^\]]*\][^>]*?)*>/gs, "")
.normalize("NFKC")
.replace(/\[\d+\]/g, "")
.replace(/\[[a-z]\]/gi, "")
.replace(/&[a-z]+;|&#\d+;/gi, "")
.replace(/\s+/g, " ")
.trim()
: null
}