UNPKG

@venuecms/sdk-next

Version:

This is a work in progress and is heavily in flux until we launch 1.0 in February.

1 lines 5.2 kB
{"version":3,"sources":["../src/lib/metadata/index.ts"],"sourcesContent":["import {\n type LocalizedContent,\n MediaItem,\n type Site,\n getLocalizedContent,\n setConfig,\n} from \"@venuecms/sdk\";\nimport { getSite } from \"../api\";\nimport removeMarkdown from \"remove-markdown\";\nimport { getPublicImage } from \"../../components/utils\";\n\n\ntype Params = { locale: string; siteKey: string };\n\ntype LocalizedItem = {\n image?: MediaItem;\n localizedContent: Array<LocalizedContent>;\n};\n\ntype Metadata = {\n title: string;\n siteName: string;\n metaTitle: string;\n metaDescription: string;\n keywords: string;\n\n content: string;\n shortContent: string;\n};\n\nexport const getLocalizedMetadata = ({\n locale,\n item,\n site,\n overrides = {},\n}: {\n locale: string;\n item?: LocalizedItem;\n site: Site;\n overrides?: Partial<Metadata>;\n}) => {\n const { content } = item?.localizedContent\n ? getLocalizedContent(item?.localizedContent, locale)\n : {};\n\n const {\n title,\n content: description,\n shortContent,\n metaTitle,\n metaDescription,\n keywords,\n } = content ?? overrides;\n\n const getOpenGraphFromLocalizedContent = (item?: LocalizedItem) => {\n const imageUrl = item?.image && getPublicImage(item.image);\n const siteImageUrl = site.image && getPublicImage(site.image);\n\n const trimDescription = description\n ? removeMarkdown(description).split(\"\\n\")[0]\n : undefined;\n return {\n title: metaTitle || title,\n description: metaDescription || shortContent || trimDescription,\n siteName: site.name,\n ...(item?.image && imageUrl\n ? {\n images: [\n {\n width: item.image.metadata?.width,\n height: item.image.metadata?.height,\n url: imageUrl,\n },\n ],\n }\n : {\n images: [\n {\n width: site.image?.metadata?.width,\n height: site.image?.metadata?.height,\n url: siteImageUrl,\n },\n ],\n }),\n locale,\n type: \"website\",\n ...overrides,\n };\n };\n\n return {\n title: `${site.name}${title ? ` - ${title}` : \"\"}`,\n description:\n metaDescription ||\n shortContent ||\n (description ? removeMarkdown(description) : undefined),\n keywords: keywords?.split(\", \"),\n openGraph: getOpenGraphFromLocalizedContent(item),\n ...overrides,\n };\n};\n\n// Gets metadata for a single item that is queried by a slug.\n// When a getItem is not passed, it will simply use the overrides passed\nexport const getGenerateMetadata =\n (getItem: (params: { slug: string }) => Promise<{ data: any }>) =>\n async ({ params }: { params: Promise<Params & { slug: string }> }) => {\n try {\n const { siteKey, slug, locale } = await params;\n setConfig({ siteKey });\n\n const [{ data: site }, { data: item }] = await Promise.all([\n getSite(),\n getItem({ slug }),\n ]);\n\n if (!site || !item) {\n return {};\n }\n\n const metadata = getLocalizedMetadata({\n locale,\n item,\n site,\n });\n\n return metadata;\n } catch (e) {\n return {};\n }\n };\n"],"mappings":"kFAAA,OAIE,uBAAAA,EACA,aAAAC,MACK,gBAEP,OAAOC,MAAoB,kBAsBpB,IAAMC,EAAuB,CAAC,CACnC,OAAAC,EACA,KAAAC,EACA,KAAAC,EACA,UAAAC,EAAY,CAAC,CACf,IAKM,CACJ,GAAM,CAAE,QAAAC,CAAQ,EAAIH,GAAM,iBACtBI,EAAoBJ,GAAM,iBAAkBD,CAAM,EAClD,CAAC,EAEC,CACJ,MAAAM,EACA,QAASC,EACT,aAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,EAAIP,GAAWD,EAETS,EAAoCX,GAAyB,CACjE,IAAMY,EAAWZ,GAAM,OAASa,EAAeb,EAAK,KAAK,EACnDc,EAAeb,EAAK,OAASY,EAAeZ,EAAK,KAAK,EAEtDc,EAAkBT,EACpBU,EAAeV,CAAW,EAAE,MAAM;AAAA,CAAI,EAAE,CAAC,EACzC,OACJ,MAAO,CACL,MAAOE,GAAaH,EACpB,YAAaI,GAAmBF,GAAgBQ,EAChD,SAAUd,EAAK,KACf,GAAID,GAAM,OAASY,EACf,CACE,OAAQ,CACN,CACE,MAAOZ,EAAK,MAAM,UAAU,MAC5B,OAAQA,EAAK,MAAM,UAAU,OAC7B,IAAKY,CACP,CACF,CACF,EACA,CACE,OAAQ,CACN,CACE,MAAOX,EAAK,OAAO,UAAU,MAC7B,OAAQA,EAAK,OAAO,UAAU,OAC9B,IAAKa,CACP,CACF,CACF,EACJ,OAAAf,EACA,KAAM,UACN,GAAGG,CACL,CACF,EAEA,MAAO,CACL,MAAO,GAAGD,EAAK,IAAI,GAAGI,EAAQ,MAAMA,CAAK,GAAK,EAAE,GAChD,YACEI,GACAF,IACCD,EAAcU,EAAeV,CAAW,EAAI,QAC/C,SAAUI,GAAU,MAAM,IAAI,EAC9B,UAAWC,EAAiCX,CAAI,EAChD,GAAGE,CACL,CACF,EAIae,EACVC,GACD,MAAO,CAAE,OAAAC,CAAO,IAAsD,CACpE,GAAI,CACF,GAAM,CAAE,QAAAC,EAAS,KAAAC,EAAM,OAAAtB,CAAO,EAAI,MAAMoB,EACxCG,EAAU,CAAE,QAAAF,CAAQ,CAAC,EAErB,GAAM,CAAC,CAAE,KAAMnB,CAAK,EAAG,CAAE,KAAMD,CAAK,CAAC,EAAI,MAAM,QAAQ,IAAI,CACzDuB,EAAQ,EACRL,EAAQ,CAAE,KAAAG,CAAK,CAAC,CAClB,CAAC,EAED,MAAI,CAACpB,GAAQ,CAACD,EACL,CAAC,EAGOF,EAAqB,CACpC,OAAAC,EACA,KAAAC,EACA,KAAAC,CACF,CAAC,CAGH,MAAY,CACV,MAAO,CAAC,CACV,CACF","names":["getLocalizedContent","setConfig","removeMarkdown","getLocalizedMetadata","locale","item","site","overrides","content","getLocalizedContent","title","description","shortContent","metaTitle","metaDescription","keywords","getOpenGraphFromLocalizedContent","imageUrl","getPublicImage","siteImageUrl","trimDescription","removeMarkdown","getGenerateMetadata","getItem","params","siteKey","slug","setConfig","getSite"]}