import { decode } from "html-entities" import { assign } from "../common" import type Context from "../../context" import type { PrioritizedReference } from "../common" export default function getSiteName(context: Context) { const { promise, resolve, reject } = Promise.withResolvers() const result: PrioritizedReference = { bits: 2, // 0-3 priority: 0, content: context.url.hostname, } context.html.on('meta[property="og:site_name"]', { element(element) { const content = element.getAttribute("content") if (content) { assign(result, 3, decode(content)) } }, }) context.html.on('meta[name="application-name"]', { element(element) { const content = element.getAttribute("content") if (content) { assign(result, 2, decode(content)) } }, }) context.html.onDocument({ end() { resolve(result.content?.trim() || null) }, }) return promise }