@ngaox/seo
Version:
Easily generate and manage SEO-friendly meta tags, page title,...
1 lines • 21.9 kB
Source Map (JSON)
{"version":3,"file":"ngaox-seo.mjs","sources":["../../../../packages/seo/src/lib/shared/models.ts","../../../../packages/seo/src/lib/seo.service.ts","../../../../packages/seo/src/lib/loaders/route-data.loader.ts","../../../../packages/seo/src/lib/loaders/index.ts","../../../../packages/seo/src/lib/shared/helpers.ts","../../../../packages/seo/src/lib/seo.module.ts","../../../../packages/seo/src/lib/seo.component.ts","../../../../packages/seo/src/index.ts","../../../../packages/seo/src/ngaox-seo.ts"],"sourcesContent":["import { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { MetaDefinition } from '@angular/platform-browser';\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport const SeoKey = 'NgaoxSeo';\r\nexport const SeoDefaultsToken = new InjectionToken('DefaultsSeoData');\r\n\r\nexport interface ISeoLoader {\r\n resolve(route: ActivatedRouteSnapshot): IPageSeoData;\r\n}\r\n\r\nexport interface IPageSeoData {\r\n title?: string;\r\n keywords?: string;\r\n description?: string;\r\n url?: string;\r\n type?: string;\r\n image?: string | ISeoImage;\r\n twitter?: ISeoTwitter;\r\n fbAppId?: string;\r\n siteName?: string;\r\n extra?: MetaDefinition[];\r\n}\r\n\r\nexport interface ISeoImage {\r\n url: string;\r\n alt?: string;\r\n width?: number;\r\n height?: number;\r\n mimeType?: string;\r\n}\r\n\r\nexport interface ISeoTwitter {\r\n site?: string;\r\n creator?: string;\r\n card?: 'summary_large_image' | 'summary';\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Meta, MetaDefinition, Title } from '@angular/platform-browser';\r\nimport {\r\n IPageSeoData,\r\n ISeoImage,\r\n ISeoTwitter,\r\n SeoDefaultsToken\r\n} from './shared/models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SeoService {\r\n constructor(\r\n private title: Title,\r\n private meta: Meta,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Optional() @Inject(SeoDefaultsToken) private defaults: IPageSeoData = {}\r\n ) {}\r\n\r\n public generateTags(definitions: MetaDefinition[]): void {\r\n definitions.forEach(meta => {\r\n this.meta.updateTag(meta);\r\n });\r\n }\r\n\r\n public set(seoData: IPageSeoData) {\r\n seoData = {\r\n ...this.defaults,\r\n ...seoData\r\n };\r\n if (seoData.title) this.setTitle(seoData.title);\r\n if (seoData.keywords) this.setKeywords(seoData.keywords);\r\n if (seoData.description) this.setDescription(seoData.description);\r\n if (seoData.url) this.setUrl(seoData.url);\r\n if (seoData.type) this.setType(seoData.type);\r\n if (seoData.image) this.setImage(seoData.image);\r\n if (seoData.twitter) this.setTwitter(seoData.twitter);\r\n if (seoData.fbAppId) this.setFbAppId(seoData.fbAppId);\r\n if (seoData.siteName) this.setSiteName(seoData.siteName);\r\n if (seoData.extra) this.generateTags(seoData.extra);\r\n }\r\n\r\n public setTitle(title: string): void {\r\n this.title.setTitle(title);\r\n this.generateTags([\r\n { property: 'og:title', content: title },\r\n { name: 'twitter:title', content: title },\r\n { name: 'title', content: title }\r\n ]);\r\n }\r\n\r\n public setKeywords(keywords: string): void {\r\n this.generateTags([{ name: 'keywords', content: keywords }]);\r\n }\r\n\r\n public setDescription(description: string): void {\r\n this.generateTags([\r\n { name: 'description', content: description },\r\n { property: 'og:description', content: description },\r\n { name: 'twitter:description', content: description }\r\n ]);\r\n }\r\n\r\n public setUrl(url: string): void {\r\n this.generateTags([{ property: 'og:url', content: url }]);\r\n // set canonical link\r\n const oldElement = this.document.head.querySelector(\r\n `link[rel='canonical']`\r\n );\r\n if (oldElement) {\r\n this.document.head.removeChild(oldElement);\r\n }\r\n const link: HTMLLinkElement = this.document.createElement('link');\r\n link.setAttribute('rel', 'canonical');\r\n link.setAttribute('href', url);\r\n this.document.head.appendChild(link);\r\n }\r\n\r\n public setType(type: string): void {\r\n this.generateTags([{ property: 'og:type', content: type }]);\r\n }\r\n\r\n public setImage(image: string | ISeoImage): void {\r\n if (typeof image === 'string') {\r\n this.generateTags([\r\n { property: 'og:image', content: image },\r\n { name: 'twitter:image', content: image },\r\n { property: 'image', content: image }\r\n ]);\r\n } else {\r\n this.generateTags([\r\n { property: 'og:image', content: image.url },\r\n { name: 'twitter:image', content: image.url },\r\n { property: 'image', content: image.url }\r\n ]);\r\n if (image.url.startsWith('https')) {\r\n this.generateTags([\r\n { property: 'og:image:secure_url', content: image.url }\r\n ]);\r\n }\r\n if (image.alt) {\r\n this.generateTags([\r\n { property: 'twitter:image:alt', content: image.alt },\r\n { property: 'og:image:alt', content: image.alt }\r\n ]);\r\n }\r\n if (image.height) {\r\n this.generateTags([\r\n { property: 'og:image:height', content: image.height.toString() }\r\n ]);\r\n }\r\n if (image.width) {\r\n this.generateTags([\r\n { property: 'og:image:width', content: image.width.toString() }\r\n ]);\r\n }\r\n if (image.width) {\r\n this.generateTags([\r\n { property: 'og:image:type', content: `${image.mimeType}` }\r\n ]);\r\n }\r\n }\r\n }\r\n\r\n public setTwitter(twitterData: ISeoTwitter): void {\r\n if (twitterData.site) {\r\n this.generateTags([{ name: 'twitter:site', content: twitterData.site }]);\r\n }\r\n if (twitterData.creator) {\r\n this.generateTags([\r\n { name: 'twitter:creator', content: twitterData.creator }\r\n ]);\r\n }\r\n if (twitterData.card) {\r\n this.generateTags([{ name: 'twitter:card', content: twitterData.card }]);\r\n }\r\n }\r\n public setFbAppId(Id: string): void {\r\n this.generateTags([{ property: 'fb:app_id', content: Id }]);\r\n }\r\n\r\n public setSiteName(siteName: string): void {\r\n this.generateTags([{ property: 'og:site_name', content: siteName }]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, PRIMARY_OUTLET } from '@angular/router';\r\nimport { IPageSeoData, ISeoLoader, SeoKey } from '../shared/models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteDataSeoLoader implements ISeoLoader {\r\n resolve(snapshot: ActivatedRouteSnapshot): IPageSeoData {\r\n let seoData: IPageSeoData | undefined;\r\n let route: ActivatedRouteSnapshot | undefined = snapshot.root;\r\n while (route !== undefined) {\r\n seoData = {\r\n ...(seoData ?? {}),\r\n ...(route.data[SeoKey] ?? {})\r\n };\r\n route = route.children.find(child => child.outlet === PRIMARY_OUTLET);\r\n }\r\n return seoData ?? {};\r\n }\r\n}\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { IPageSeoData, ISeoLoader } from '../shared/models';\r\n\r\nexport * from './route-data.loader';\r\n\r\nexport abstract class SeoDataLoader implements ISeoLoader {\r\n abstract resolve(route: ActivatedRouteSnapshot): IPageSeoData;\r\n}\r\n","import { ActivatedRoute } from '@angular/router';\r\n\r\nexport function currentPageRoute(route: ActivatedRoute): ActivatedRoute {\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n return route;\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { SeoService } from './seo.service';\r\nimport { RouteDataSeoLoader, SeoDataLoader } from './loaders';\r\n\r\nimport { currentPageRoute } from './shared/helpers';\r\nimport { IPageSeoData, SeoDefaultsToken } from './shared/models';\r\n\r\n@NgModule({\r\n imports: [],\r\n providers: [\r\n {\r\n provide: SeoDataLoader,\r\n useClass: RouteDataSeoLoader\r\n }\r\n ],\r\n exports: []\r\n})\r\nexport class SeoModule {\r\n constructor(\r\n Loader: SeoDataLoader,\r\n router: Router,\r\n route: ActivatedRoute,\r\n seo: SeoService\r\n ) {\r\n if (Loader) {\r\n router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n seo.set(Loader.resolve(currentPageRoute(route).snapshot));\r\n });\r\n }\r\n }\r\n\r\n public static forRoot(\r\n defaults: IPageSeoData = {\r\n title: '📝 Default NgaoxSeo Title - Change me!'\r\n }\r\n ): ModuleWithProviders<SeoModule> {\r\n return {\r\n ngModule: SeoModule,\r\n providers: [\r\n SeoService,\r\n {\r\n provide: SeoDefaultsToken,\r\n useValue: defaults\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IPageSeoData, ISeoImage, ISeoTwitter } from './shared/models';\r\nimport { SeoService } from './seo.service';\r\nimport { MetaDefinition } from '@angular/platform-browser';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'ngaox-seo',\r\n template: ''\r\n})\r\nexport class NgaoxSeoComponent implements OnInit {\r\n seoData: IPageSeoData = {};\r\n\r\n constructor(private seoService: SeoService) {}\r\n\r\n ngOnInit(): void {\r\n this.seoService.set(this.seoData);\r\n }\r\n\r\n @Input()\r\n set title(value: string) {\r\n this.seoData.title = value;\r\n this.seoService.setTitle(value);\r\n }\r\n @Input()\r\n set keywords(value: string) {\r\n this.seoData.keywords = value;\r\n this.seoService.setKeywords(value);\r\n }\r\n @Input()\r\n set description(value: string) {\r\n this.seoData.description = value;\r\n this.seoService.setDescription(value);\r\n }\r\n @Input()\r\n set url(value: string) {\r\n this.seoData.url = value;\r\n this.seoService.setUrl(value);\r\n }\r\n @Input()\r\n set type(value: string) {\r\n this.seoData.type = value;\r\n this.seoService.setType(value);\r\n }\r\n @Input()\r\n set image(value: string | ISeoImage) {\r\n this.seoData.image = value;\r\n this.seoService.setImage(value);\r\n }\r\n @Input()\r\n set twitter(value: ISeoTwitter) {\r\n this.seoData.twitter = value;\r\n this.seoService.setTwitter(value);\r\n }\r\n @Input()\r\n set fbAppId(value: string) {\r\n this.seoData.fbAppId = value;\r\n this.seoService.setFbAppId(value);\r\n }\r\n @Input()\r\n set siteName(value: string) {\r\n this.seoData.siteName = value;\r\n this.seoService.setSiteName(value);\r\n }\r\n\r\n @Input()\r\n set extra(value: MetaDefinition[]) {\r\n this.seoData.extra = value;\r\n this.seoService.generateTags(value);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of seo\r\n */\r\n\r\nexport * from './lib/seo.module';\r\nexport * from './lib/seo.service';\r\nexport * from './lib/seo.component';\r\n\r\nexport * from './lib/loaders';\r\n\r\nexport * from './lib/shared/models';\r\nexport * from './lib/shared/helpers';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SeoDataLoader","i3.SeoService","i1.SeoService"],"mappings":"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"}