(pattern: ResolvedPatternMapping)
| 170 | } |
| 171 | |
| 172 | function buildPatternMetadata(pattern: ResolvedPatternMapping): PageMetadata { |
| 173 | const canonicalUrl = `${SITE_URL}patterns/${pattern.id}/`; |
| 174 | const title = `${pattern.title} Pattern`; |
| 175 | |
| 176 | return { |
| 177 | title: `${title} | ${SITE_NAME}`, |
| 178 | description: pattern.summary, |
| 179 | canonicalUrl, |
| 180 | ogType: 'website', |
| 181 | ogImageUrl: DEFAULT_OG_IMAGE_URL, |
| 182 | ogImageAlt: DEFAULT_OG_IMAGE_ALT, |
| 183 | structuredData: [ |
| 184 | buildCollectionStructuredData( |
| 185 | title, |
| 186 | pattern.summary, |
| 187 | canonicalUrl, |
| 188 | pattern.sampleIds, |
| 189 | pattern.title |
| 190 | ), |
| 191 | buildBreadcrumbStructuredData([ |
| 192 | { name: 'Code Samples', item: SITE_URL }, |
| 193 | { name: 'Patterns', item: `${SITE_URL}patterns/` }, |
| 194 | { name: pattern.title, item: canonicalUrl } |
| 195 | ]) |
| 196 | ] |
| 197 | }; |
| 198 | } |
| 199 | |
| 200 | function buildLanguageMetadata(languagePage: LanguageLandingPage): PageMetadata { |
| 201 | return { |
no test coverage detected