ngx-seo
Version:
`ngx-seo` is a library to help generate and inject proper JSON-LD objects and Meta tags that allow for social sharing into server-side generated Angular applications using Universal.
238 lines • 23 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
export class SeoSocialShareService {
/**
* @param {?} metaService
* @param {?} titleService
*/
constructor(metaService, titleService) {
this.metaService = metaService;
this.titleService = titleService;
}
/**
* @param {?} data
* @return {?}
*/
setData(data) {
this.setTitle(data.title);
this.setMetaDescription(data.description);
this.setUrl(data.url);
this.setImage(data.image);
this.setPublished(data.published);
this.setModified(data.modified);
this.setAuthor(data.author);
this.setSection(data.section);
this.setType(data.type);
}
/**
* @param {?=} newSection
* @return {?}
*/
setSection(newSection) {
if (newSection && newSection.length) {
this.metaService.updateTag({ name: 'article:section', content: newSection });
}
else {
this.metaService.removeTag(`name='article:section'`);
}
}
/**
* @param {?=} site
* @return {?}
*/
setTwitterSiteCreator(site) {
if (site && site.length) {
this.metaService.updateTag({ name: 'twitter:site', content: site });
this.metaService.updateTag({ name: 'twitter:creator', content: site });
}
else {
this.metaService.removeTag(`name='twitter:site'`);
this.metaService.removeTag(`name='twitter:creator'`);
}
}
/**
* @param {?=} card
* @return {?}
*/
setTwitterCard(card) {
if (card && card.length) {
this.metaService.updateTag({ name: 'twitter:card', content: card });
}
else {
this.metaService.removeTag(`name='twitter:card'`);
}
}
/**
* @param {?=} appId
* @return {?}
*/
setFbAppId(appId) {
if (appId && appId.length) {
this.metaService.updateTag({ property: 'fb:app_id', content: appId });
}
else {
this.metaService.removeTag(`property='fb:app_id'`);
}
}
/**
* @private
* @param {?=} title
* @return {?}
*/
setTitle(title = '') {
this.titleService.setTitle(title);
if (title && title.length) {
this.metaService.updateTag({ name: 'twitter:title', content: title });
this.metaService.updateTag({ name: 'twitter:image:alt', content: title });
this.metaService.updateTag({ property: 'og:image:alt', content: title });
this.metaService.updateTag({ property: 'og:title', content: title });
this.metaService.updateTag({ name: 'title', content: title });
}
else {
this.metaService.removeTag(`name='twitter:title'`);
this.metaService.removeTag(`name='twitter:image:alt'`);
this.metaService.removeTag(`property='og:image:alt'`);
this.metaService.removeTag(`property='og:title'`);
this.metaService.removeTag(`name='title'`);
}
}
/**
* @private
* @param {?=} type
* @return {?}
*/
setType(type) {
if (type && type.length) {
this.metaService.updateTag({ property: 'og:type', content: type });
}
else {
this.metaService.removeTag(`property='og:type'`);
}
}
/**
* @private
* @param {?=} description
* @return {?}
*/
setMetaDescription(description) {
if (description && description.length) {
this.metaService.updateTag({ name: 'twitter:description', content: description });
this.metaService.updateTag({ property: 'og:description', content: description });
this.metaService.updateTag({ name: 'description', content: description });
}
else {
this.metaService.removeTag(`name='twitter:description'`);
this.metaService.removeTag(`property='og:description'`);
this.metaService.removeTag(`name='description'`);
}
}
/**
* @private
* @param {?=} image
* @return {?}
*/
setImage(image) {
if (image && image.length) {
this.metaService.updateTag({ name: 'twitter:image', content: image });
this.metaService.updateTag({ property: 'og:image', content: image });
this.metaService.updateTag({ property: 'og:image:height', content: '630' });
}
else {
this.metaService.removeTag(`name='twitter:image'`);
this.metaService.removeTag(`property='og:image'`);
this.metaService.removeTag(`property='og:image:height'`);
}
}
/**
* @private
* @param {?=} url
* @return {?}
*/
setUrl(url) {
if (url && url.length) {
this.metaService.updateTag({ property: 'og:url', content: url });
}
else {
this.metaService.removeTag(`property='og:url'`);
}
}
/**
* @private
* @param {?=} publishedDateString
* @return {?}
*/
setPublished(publishedDateString) {
if (publishedDateString) {
/** @type {?} */
const publishedDate = new Date(publishedDateString);
this.metaService.updateTag({ name: 'article:published_time', content: publishedDate.toISOString() });
this.metaService.updateTag({ name: 'published_date', content: publishedDate.toISOString() });
}
else {
this.metaService.removeTag(`name='article:published_time'`);
this.metaService.removeTag(`name='publication_date'`);
}
}
/**
* @private
* @param {?=} modifiedDateString
* @return {?}
*/
setModified(modifiedDateString) {
if (modifiedDateString) {
/** @type {?} */
const modifiedDate = new Date(modifiedDateString);
this.metaService.updateTag({ name: 'article:modified_time', content: modifiedDate.toISOString() });
this.metaService.updateTag({ name: 'og:updated_time', content: modifiedDate.toISOString() });
}
else {
this.metaService.removeTag(`name='article:modified_time'`);
this.metaService.removeTag(`name='og:updated_time'`);
}
}
/**
* @private
* @param {?=} author
* @return {?}
*/
setAuthor(author) {
if (author && author.length) {
this.metaService.updateTag({ name: 'article:author', content: author });
this.metaService.updateTag({ name: 'author', content: author });
}
else {
this.metaService.removeTag(`name='article:author'`);
this.metaService.removeTag(`name='author'`);
}
}
}
SeoSocialShareService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
/** @nocollapse */
SeoSocialShareService.ctorParameters = () => [
{ type: Meta },
{ type: Title }
];
/** @nocollapse */ SeoSocialShareService.ngInjectableDef = i0.defineInjectable({ factory: function SeoSocialShareService_Factory() { return new SeoSocialShareService(i0.inject(i1.Meta), i0.inject(i1.Title)); }, token: SeoSocialShareService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
SeoSocialShareService.prototype.metaService;
/**
* @type {?}
* @private
*/
SeoSocialShareService.prototype.titleService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLXNvY2lhbC1zaGFyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNlby8iLCJzb3VyY2VzIjpbImxpYi9zZW8tc29jaWFsLXNoYXJlL3Nlby1zb2NpYWwtc2hhcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFPeEQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7SUFFaEMsWUFDbUIsV0FBaUIsRUFDakIsWUFBbUI7UUFEbkIsZ0JBQVcsR0FBWCxXQUFXLENBQU07UUFDakIsaUJBQVksR0FBWixZQUFZLENBQU87SUFFdEMsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsSUFBd0I7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVELFVBQVUsQ0FB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TSxFQUFDLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDOzs7WUFoSkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTlEsSUFBSTtZQUFFLEtBQUs7Ozs7Ozs7O0lBVWhCLDRDQUFrQzs7Ozs7SUFDbEMsNkNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgU2VvU29jaWFsU2hhcmVEYXRhIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3Nlby1zb2NpYWwtc2hhcmUtZGF0YSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTZW9Tb2NpYWxTaGFyZVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YVNlcnZpY2U6IE1ldGEsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICApIHtcbiAgfVxuXG4gIHNldERhdGEoZGF0YTogU2VvU29jaWFsU2hhcmVEYXRhKSB7XG4gICAgdGhpcy5zZXRUaXRsZShkYXRhLnRpdGxlKTtcbiAgICB0aGlzLnNldE1ldGFEZXNjcmlwdGlvbihkYXRhLmRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLnNldFVybChkYXRhLnVybCk7XG4gICAgdGhpcy5zZXRJbWFnZShkYXRhLmltYWdlKTtcbiAgICB0aGlzLnNldFB1Ymxpc2hlZChkYXRhLnB1Ymxpc2hlZCk7XG4gICAgdGhpcy5zZXRNb2RpZmllZChkYXRhLm1vZGlmaWVkKTtcbiAgICB0aGlzLnNldEF1dGhvcihkYXRhLmF1dGhvcik7XG4gICAgdGhpcy5zZXRTZWN0aW9uKGRhdGEuc2VjdGlvbik7XG4gICAgdGhpcy5zZXRUeXBlKGRhdGEudHlwZSk7XG4gIH1cblxuICBzZXRTZWN0aW9uKG5ld1NlY3Rpb24/OiBzdHJpbmcpIHtcbiAgICBpZiAobmV3U2VjdGlvbiAmJiBuZXdTZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdhcnRpY2xlOnNlY3Rpb24nLCBjb250ZW50OiBuZXdTZWN0aW9ufSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSdhcnRpY2xlOnNlY3Rpb24nYCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VHdpdHRlclNpdGVDcmVhdG9yKHNpdGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoc2l0ZSAmJiBzaXRlLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICd0d2l0dGVyOnNpdGUnLCBjb250ZW50OiBzaXRlfSk7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7bmFtZTogJ3R3aXR0ZXI6Y3JlYXRvcicsIGNvbnRlbnQ6IHNpdGV9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9J3R3aXR0ZXI6c2l0ZSdgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSd0d2l0dGVyOmNyZWF0b3InYCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VHdpdHRlckNhcmQoY2FyZD86IHN0cmluZykge1xuICAgIGlmIChjYXJkICYmIGNhcmQubGVuZ3RoKSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7bmFtZTogJ3R3aXR0ZXI6Y2FyZCcsIGNvbnRlbnQ6IGNhcmR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9J3R3aXR0ZXI6Y2FyZCdgKTtcbiAgICB9XG4gIH1cblxuICBzZXRGYkFwcElkKGFwcElkPzogc3RyaW5nKSB7XG4gICAgaWYgKGFwcElkICYmIGFwcElkLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe3Byb3BlcnR5OiAnZmI6YXBwX2lkJywgY29udGVudDogYXBwSWR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYHByb3BlcnR5PSdmYjphcHBfaWQnYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaXRsZSh0aXRsZTogc3RyaW5nID0gJycpIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aXRsZSk7XG4gICAgaWYgKHRpdGxlICYmIHRpdGxlLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICd0d2l0dGVyOnRpdGxlJywgY29udGVudDogdGl0bGV9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtuYW1lOiAndHdpdHRlcjppbWFnZTphbHQnLCBjb250ZW50OiB0aXRsZX0pO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe3Byb3BlcnR5OiAnb2c6aW1hZ2U6YWx0JywgY29udGVudDogdGl0bGV9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtwcm9wZXJ0eTogJ29nOnRpdGxlJywgY29udGVudDogdGl0bGV9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtuYW1lOiAndGl0bGUnLCBjb250ZW50OiB0aXRsZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnJlbW92ZVRhZyhgbmFtZT0ndHdpdHRlcjp0aXRsZSdgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSd0d2l0dGVyOmltYWdlOmFsdCdgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBwcm9wZXJ0eT0nb2c6aW1hZ2U6YWx0J2ApO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYHByb3BlcnR5PSdvZzp0aXRsZSdgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSd0aXRsZSdgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFR5cGUodHlwZT86IHN0cmluZykge1xuICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoKSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7cHJvcGVydHk6ICdvZzp0eXBlJywgY29udGVudDogdHlwZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnJlbW92ZVRhZyhgcHJvcGVydHk9J29nOnR5cGUnYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb24/OiBzdHJpbmcpIHtcbiAgICBpZiAoZGVzY3JpcHRpb24gJiYgZGVzY3JpcHRpb24ubGVuZ3RoKSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7bmFtZTogJ3R3aXR0ZXI6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwdGlvbn0pO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe3Byb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwdGlvbn0pO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXB0aW9ufSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSd0d2l0dGVyOmRlc2NyaXB0aW9uJ2ApO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYHByb3BlcnR5PSdvZzpkZXNjcmlwdGlvbidgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSdkZXNjcmlwdGlvbidgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEltYWdlKGltYWdlPzogc3RyaW5nKSB7XG4gICAgaWYgKGltYWdlICYmIGltYWdlLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICd0d2l0dGVyOmltYWdlJywgY29udGVudDogaW1hZ2V9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtwcm9wZXJ0eTogJ29nOmltYWdlJywgY29udGVudDogaW1hZ2V9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtwcm9wZXJ0eTogJ29nOmltYWdlOmhlaWdodCcsIGNvbnRlbnQ6ICc2MzAnfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSd0d2l0dGVyOmltYWdlJ2ApO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYHByb3BlcnR5PSdvZzppbWFnZSdgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBwcm9wZXJ0eT0nb2c6aW1hZ2U6aGVpZ2h0J2ApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VXJsKHVybD86IHN0cmluZykge1xuICAgIGlmICh1cmwgJiYgdXJsLmxlbmd0aCkge1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe3Byb3BlcnR5OiAnb2c6dXJsJywgY29udGVudDogdXJsfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBwcm9wZXJ0eT0nb2c6dXJsJ2ApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UHVibGlzaGVkKHB1Ymxpc2hlZERhdGVTdHJpbmc/OiBzdHJpbmcpIHtcbiAgICBpZiAocHVibGlzaGVkRGF0ZVN0cmluZykge1xuICAgICAgY29uc3QgcHVibGlzaGVkRGF0ZSA9IG5ldyBEYXRlKHB1Ymxpc2hlZERhdGVTdHJpbmcpO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdhcnRpY2xlOnB1Ymxpc2hlZF90aW1lJywgY29udGVudDogcHVibGlzaGVkRGF0ZS50b0lTT1N0cmluZygpfSk7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7bmFtZTogJ3B1Ymxpc2hlZF9kYXRlJywgY29udGVudDogcHVibGlzaGVkRGF0ZS50b0lTT1N0cmluZygpfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSdhcnRpY2xlOnB1Ymxpc2hlZF90aW1lJ2ApO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9J3B1YmxpY2F0aW9uX2RhdGUnYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNb2RpZmllZChtb2RpZmllZERhdGVTdHJpbmc/OiBzdHJpbmcpIHtcbiAgICBpZiAobW9kaWZpZWREYXRlU3RyaW5nKSB7XG4gICAgICBjb25zdCBtb2RpZmllZERhdGUgPSBuZXcgRGF0ZShtb2RpZmllZERhdGVTdHJpbmcpO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdhcnRpY2xlOm1vZGlmaWVkX3RpbWUnLCBjb250ZW50OiBtb2RpZmllZERhdGUudG9JU09TdHJpbmcoKX0pO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoe25hbWU6ICdvZzp1cGRhdGVkX3RpbWUnLCBjb250ZW50OiBtb2RpZmllZERhdGUudG9JU09TdHJpbmcoKX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFTZXJ2aWNlLnJlbW92ZVRhZyhgbmFtZT0nYXJ0aWNsZTptb2RpZmllZF90aW1lJ2ApO1xuICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9J29nOnVwZGF0ZWRfdGltZSdgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEF1dGhvcihhdXRob3I/OiBzdHJpbmcpIHtcbiAgICBpZiAoYXV0aG9yICYmIGF1dGhvci5sZW5ndGgpIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtuYW1lOiAnYXJ0aWNsZTphdXRob3InLCBjb250ZW50OiBhdXRob3J9KTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UudXBkYXRlVGFnKHtuYW1lOiAnYXV0aG9yJywgY29udGVudDogYXV0aG9yfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSdhcnRpY2xlOmF1dGhvcidgKTtcbiAgICAgIHRoaXMubWV0YVNlcnZpY2UucmVtb3ZlVGFnKGBuYW1lPSdhdXRob3InYCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==