UNPKG

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
/** * @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==