@@ -53,7 +53,7 @@ if (import.meta.server) {
5353 assertValidPackageName (packageName .value )
5454}
5555
56- const { data : downloads } = usePackageDownloads (packageName , ' last-week' )
56+ const { data : downloads, refresh : refreshDownloads } = usePackageDownloads (packageName , ' last-week' )
5757
5858// Fetch README for specific version if requested, otherwise latest
5959const { data : readmeData } = useLazyFetch <ReadmeResponse >(
@@ -136,6 +136,7 @@ const {
136136 data : pkg,
137137 status,
138138 error,
139+ refresh : refreshPkg,
139140} = usePackage (packageName , resolvedVersion .value ?? requestedVersion )
140141const displayVersion = computed (() => pkg .value ?.requestedVersion ?? null )
141142
@@ -243,7 +244,15 @@ const repositoryUrl = computed(() => {
243244 return url
244245})
245246
246- const { meta : repoMeta, repoRef, stars, starsLink, forks, forksLink } = useRepoMeta (repositoryUrl )
247+ const {
248+ meta : repoMeta,
249+ repoRef,
250+ stars,
251+ starsLink,
252+ forks,
253+ forksLink,
254+ refresh : refreshRepoMeta,
255+ } = useRepoMeta (repositoryUrl )
247256
248257const PROVIDER_ICONS: Record <string , string > = {
249258 github: ' i-carbon:logo-github' ,
@@ -446,12 +455,27 @@ onKeyStroke(
446455 },
447456)
448457
458+ // Wait for all critical data to be received on the server side for correct OG rendering and better results for robots
459+ if (import .meta .server ) {
460+ const event = useRequestEvent ()
461+ const agent = event ?.node .req .headers [' user-agent' ]?.toLowerCase () || ' '
462+ const crawlerRegex =
463+ / (facebookexternalhit| bluesky| twitterbot| linkedinbot| discordbot| slackbot| telegrambot| whatsapp| vkshare| skypeuripreview| googlebot| bingbot| yandexbot| baiduspider| duckduckbot| crawler| spider| bot| preview)/ i
464+
465+ const isCrawler = crawlerRegex .test (agent )
466+
467+ if (isCrawler ) {
468+ await refreshPkg ()
469+ await Promise .all ([refreshRepoMeta (), refreshDownloads ()])
470+ }
471+ }
472+
449473defineOgImageComponent (' Package' , {
450474 name : () => pkg .value ?.name ?? ' Package' ,
451475 version : () => resolvedVersion .value ?? ' ' ,
452476 downloads : () => (downloads .value ? $n (downloads .value .downloads ) : ' ' ),
453477 license : () => pkg .value ?.license ?? ' ' ,
454- stars : () => stars .value ?? 0 ,
478+ stars : () => repoMeta .value ?. stars ?? 0 ,
455479 primaryColor: ' #60a5fa' ,
456480})
457481 </script >
0 commit comments