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