main repo

This commit is contained in:
Basilosaurusrex
2025-11-24 18:09:40 +01:00
parent b636ee5e70
commit f027651f9b
34146 changed files with 4436636 additions and 0 deletions

View File

@@ -0,0 +1,448 @@
import { Meta, MetaFilter, MultiMeta } from "./meta";
export function OpenGraphMetadata({ openGraph }) {
var _openGraph_title, _openGraph_url, _openGraph_ttl;
if (!openGraph) {
return null;
}
let typedOpenGraph;
if ("type" in openGraph) {
const openGraphType = openGraph.type;
switch(openGraphType){
case "website":
typedOpenGraph = [
Meta({
property: "og:type",
content: "website"
})
];
break;
case "article":
var _openGraph_publishedTime, _openGraph_modifiedTime, _openGraph_expirationTime;
typedOpenGraph = [
Meta({
property: "og:type",
content: "article"
}),
Meta({
property: "article:published_time",
content: (_openGraph_publishedTime = openGraph.publishedTime) == null ? void 0 : _openGraph_publishedTime.toString()
}),
Meta({
property: "article:modified_time",
content: (_openGraph_modifiedTime = openGraph.modifiedTime) == null ? void 0 : _openGraph_modifiedTime.toString()
}),
Meta({
property: "article:expiration_time",
content: (_openGraph_expirationTime = openGraph.expirationTime) == null ? void 0 : _openGraph_expirationTime.toString()
}),
MultiMeta({
propertyPrefix: "article:author",
contents: openGraph.authors
}),
Meta({
property: "article:section",
content: openGraph.section
}),
MultiMeta({
propertyPrefix: "article:tag",
contents: openGraph.tags
})
];
break;
case "book":
typedOpenGraph = [
Meta({
property: "og:type",
content: "book"
}),
Meta({
property: "book:isbn",
content: openGraph.isbn
}),
Meta({
property: "book:release_date",
content: openGraph.releaseDate
}),
MultiMeta({
propertyPrefix: "book:author",
contents: openGraph.authors
}),
MultiMeta({
propertyPrefix: "book:tag",
contents: openGraph.tags
})
];
break;
case "profile":
typedOpenGraph = [
Meta({
property: "og:type",
content: "profile"
}),
Meta({
property: "profile:first_name",
content: openGraph.firstName
}),
Meta({
property: "profile:last_name",
content: openGraph.lastName
}),
Meta({
property: "profile:username",
content: openGraph.username
}),
Meta({
property: "profile:gender",
content: openGraph.gender
})
];
break;
case "music.song":
var _openGraph_duration;
typedOpenGraph = [
Meta({
property: "og:type",
content: "music.song"
}),
Meta({
property: "music:duration",
content: (_openGraph_duration = openGraph.duration) == null ? void 0 : _openGraph_duration.toString()
}),
MultiMeta({
propertyPrefix: "music:album",
contents: openGraph.albums
}),
MultiMeta({
propertyPrefix: "music:musician",
contents: openGraph.musicians
})
];
break;
case "music.album":
typedOpenGraph = [
Meta({
property: "og:type",
content: "music.album"
}),
MultiMeta({
propertyPrefix: "music:song",
contents: openGraph.songs
}),
MultiMeta({
propertyPrefix: "music:musician",
contents: openGraph.musicians
}),
Meta({
property: "music:release_date",
content: openGraph.releaseDate
})
];
break;
case "music.playlist":
typedOpenGraph = [
Meta({
property: "og:type",
content: "music.playlist"
}),
MultiMeta({
propertyPrefix: "music:song",
contents: openGraph.songs
}),
MultiMeta({
propertyPrefix: "music:creator",
contents: openGraph.creators
})
];
break;
case "music.radio_station":
typedOpenGraph = [
Meta({
property: "og:type",
content: "music.radio_station"
}),
MultiMeta({
propertyPrefix: "music:creator",
contents: openGraph.creators
})
];
break;
case "video.movie":
typedOpenGraph = [
Meta({
property: "og:type",
content: "video.movie"
}),
MultiMeta({
propertyPrefix: "video:actor",
contents: openGraph.actors
}),
MultiMeta({
propertyPrefix: "video:director",
contents: openGraph.directors
}),
MultiMeta({
propertyPrefix: "video:writer",
contents: openGraph.writers
}),
Meta({
property: "video:duration",
content: openGraph.duration
}),
Meta({
property: "video:release_date",
content: openGraph.releaseDate
}),
MultiMeta({
propertyPrefix: "video:tag",
contents: openGraph.tags
})
];
break;
case "video.episode":
typedOpenGraph = [
Meta({
property: "og:type",
content: "video.episode"
}),
MultiMeta({
propertyPrefix: "video:actor",
contents: openGraph.actors
}),
MultiMeta({
propertyPrefix: "video:director",
contents: openGraph.directors
}),
MultiMeta({
propertyPrefix: "video:writer",
contents: openGraph.writers
}),
Meta({
property: "video:duration",
content: openGraph.duration
}),
Meta({
property: "video:release_date",
content: openGraph.releaseDate
}),
MultiMeta({
propertyPrefix: "video:tag",
contents: openGraph.tags
}),
Meta({
property: "video:series",
content: openGraph.series
})
];
break;
case "video.tv_show":
typedOpenGraph = [
Meta({
property: "og:type",
content: "video.tv_show"
})
];
break;
case "video.other":
typedOpenGraph = [
Meta({
property: "og:type",
content: "video.other"
})
];
break;
default:
const _exhaustiveCheck = openGraphType;
throw new Error(`Invalid OpenGraph type: ${_exhaustiveCheck}`);
}
}
return MetaFilter([
Meta({
property: "og:determiner",
content: openGraph.determiner
}),
Meta({
property: "og:title",
content: (_openGraph_title = openGraph.title) == null ? void 0 : _openGraph_title.absolute
}),
Meta({
property: "og:description",
content: openGraph.description
}),
Meta({
property: "og:url",
content: (_openGraph_url = openGraph.url) == null ? void 0 : _openGraph_url.toString()
}),
Meta({
property: "og:site_name",
content: openGraph.siteName
}),
Meta({
property: "og:locale",
content: openGraph.locale
}),
Meta({
property: "og:country_name",
content: openGraph.countryName
}),
Meta({
property: "og:ttl",
content: (_openGraph_ttl = openGraph.ttl) == null ? void 0 : _openGraph_ttl.toString()
}),
MultiMeta({
propertyPrefix: "og:image",
contents: openGraph.images
}),
MultiMeta({
propertyPrefix: "og:video",
contents: openGraph.videos
}),
MultiMeta({
propertyPrefix: "og:audio",
contents: openGraph.audio
}),
MultiMeta({
propertyPrefix: "og:email",
contents: openGraph.emails
}),
MultiMeta({
propertyPrefix: "og:phone_number",
contents: openGraph.phoneNumbers
}),
MultiMeta({
propertyPrefix: "og:fax_number",
contents: openGraph.faxNumbers
}),
MultiMeta({
propertyPrefix: "og:locale:alternate",
contents: openGraph.alternateLocale
}),
...typedOpenGraph ? typedOpenGraph : []
]);
}
function TwitterAppItem({ app, type }) {
var _app_url_type, _app_url;
return [
Meta({
name: `twitter:app:name:${type}`,
content: app.name
}),
Meta({
name: `twitter:app:id:${type}`,
content: app.id[type]
}),
Meta({
name: `twitter:app:url:${type}`,
content: (_app_url = app.url) == null ? void 0 : (_app_url_type = _app_url[type]) == null ? void 0 : _app_url_type.toString()
})
];
}
export function TwitterMetadata({ twitter }) {
var _twitter_title;
if (!twitter) return null;
const { card } = twitter;
return MetaFilter([
Meta({
name: "twitter:card",
content: card
}),
Meta({
name: "twitter:site",
content: twitter.site
}),
Meta({
name: "twitter:site:id",
content: twitter.siteId
}),
Meta({
name: "twitter:creator",
content: twitter.creator
}),
Meta({
name: "twitter:creator:id",
content: twitter.creatorId
}),
Meta({
name: "twitter:title",
content: (_twitter_title = twitter.title) == null ? void 0 : _twitter_title.absolute
}),
Meta({
name: "twitter:description",
content: twitter.description
}),
MultiMeta({
namePrefix: "twitter:image",
contents: twitter.images
}),
...card === "player" ? twitter.players.flatMap((player)=>[
Meta({
name: "twitter:player",
content: player.playerUrl.toString()
}),
Meta({
name: "twitter:player:stream",
content: player.streamUrl.toString()
}),
Meta({
name: "twitter:player:width",
content: player.width
}),
Meta({
name: "twitter:player:height",
content: player.height
})
]) : [],
...card === "app" ? [
TwitterAppItem({
app: twitter.app,
type: "iphone"
}),
TwitterAppItem({
app: twitter.app,
type: "ipad"
}),
TwitterAppItem({
app: twitter.app,
type: "googleplay"
})
] : []
]);
}
export function AppLinksMeta({ appLinks }) {
if (!appLinks) return null;
return MetaFilter([
MultiMeta({
propertyPrefix: "al:ios",
contents: appLinks.ios
}),
MultiMeta({
propertyPrefix: "al:iphone",
contents: appLinks.iphone
}),
MultiMeta({
propertyPrefix: "al:ipad",
contents: appLinks.ipad
}),
MultiMeta({
propertyPrefix: "al:android",
contents: appLinks.android
}),
MultiMeta({
propertyPrefix: "al:windows_phone",
contents: appLinks.windows_phone
}),
MultiMeta({
propertyPrefix: "al:windows",
contents: appLinks.windows
}),
MultiMeta({
propertyPrefix: "al:windows_universal",
contents: appLinks.windows_universal
}),
MultiMeta({
propertyPrefix: "al:web",
contents: appLinks.web
})
]);
}
//# sourceMappingURL=opengraph.js.map