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.
110 lines • 7.05 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { isPlatformBrowser } from '@angular/common';
var JsonLdService = /** @class */ (function () {
function JsonLdService(platformId, doc) {
this.platformId = platformId;
this.doc = doc;
this.jsonLd = {};
}
/**
* @param {?} type
* @param {?} rawData
* @return {?}
*/
JsonLdService.prototype.setData = /**
* @param {?} type
* @param {?} rawData
* @return {?}
*/
function (type, rawData) {
this.jsonLd = this.getObject(type, rawData);
this.injectBrowser();
};
/**
* @param {?} type
* @param {?=} rawData
* @return {?}
*/
JsonLdService.prototype.getObject = /**
* @param {?} type
* @param {?=} rawData
* @return {?}
*/
function (type, rawData) {
/** @type {?} */
var object = {
'@context': 'http://schema.org',
'@type': type,
};
if (rawData) {
object = tslib_1.__assign({}, object, rawData);
}
return object;
};
/**
* @return {?}
*/
JsonLdService.prototype.toJson = /**
* @return {?}
*/
function () {
return JSON.stringify(this.jsonLd);
};
/**
* @private
* @return {?}
*/
JsonLdService.prototype.injectBrowser = /**
* @private
* @return {?}
*/
function () {
if (this.platformId && isPlatformBrowser(this.platformId)) {
/** @type {?} */
var ldJsonScriptTag = this.doc.head.querySelector("script[type='application/ld+json']");
if (ldJsonScriptTag) {
ldJsonScriptTag.textContent = this.toJson();
}
else {
ldJsonScriptTag = this.doc.createElement('script');
ldJsonScriptTag.setAttribute('type', 'application/ld+json');
ldJsonScriptTag.textContent = this.toJson();
this.doc.head.appendChild(ldJsonScriptTag);
}
}
};
JsonLdService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
JsonLdService.ctorParameters = function () { return [
{ type: Object, decorators: [{ type: Optional }, { type: Inject, args: [PLATFORM_ID,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
]; };
return JsonLdService;
}());
export { JsonLdService };
if (false) {
/**
* @type {?}
* @private
*/
JsonLdService.prototype.jsonLd;
/**
* @type {?}
* @private
*/
JsonLdService.prototype.platformId;
/**
* @type {?}
* @private
*/
JsonLdService.prototype.doc;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1sZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNlby8iLCJzb3VyY2VzIjpbImxpYi9qc29uLWxkL2pzb24tbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBEO0lBS0UsdUJBQ29ELFVBQWtCLEVBQ3JCLEdBQVE7UUFETCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFKakQsV0FBTSxHQUFRLEVBQUUsQ0FBQztJQU16QixDQUFDOzs7Ozs7SUFFRCwrQkFBTzs7Ozs7SUFBUCxVQUFRLElBQUksRUFBRSxPQUFZO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7OztJQUVELGlDQUFTOzs7OztJQUFULFVBQVUsSUFBSSxFQUFFLE9BQWE7O1lBQ3ZCLE1BQU0sR0FBRztZQUNYLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSx3QkFDRCxNQUFNLEVBQ04sT0FBTyxDQUNYLENBQUM7U0FDSDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7SUFFRCw4QkFBTTs7O0lBQU47UUFDRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7O0lBRU8scUNBQWE7Ozs7SUFBckI7UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFOztnQkFDckQsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQ0FBb0MsQ0FBQztZQUN2RixJQUFJLGVBQWUsRUFBRTtnQkFDbkIsZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDN0M7aUJBQU07Z0JBQ0wsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRCxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUM1RCxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQzVDO1NBQ0Y7SUFDSCxDQUFDOztnQkE5Q0YsVUFBVTs7OztnQkFNdUQsTUFBTSx1QkFBbkUsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXO2dEQUM5QixRQUFRLFlBQUksTUFBTSxTQUFDLFFBQVE7O0lBeUNoQyxvQkFBQztDQUFBLEFBaERELElBZ0RDO1NBL0NZLGFBQWE7Ozs7OztJQUV4QiwrQkFBeUI7Ozs7O0lBR3ZCLG1DQUFvRTs7Ozs7SUFDcEUsNEJBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpzb25MZFNlcnZpY2Uge1xuXG4gIHByaXZhdGUganNvbkxkOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvYzogYW55LFxuICApIHtcbiAgfVxuXG4gIHNldERhdGEodHlwZSwgcmF3RGF0YTogYW55KSB7XG4gICAgdGhpcy5qc29uTGQgPSB0aGlzLmdldE9iamVjdCh0eXBlLCByYXdEYXRhKTtcbiAgICB0aGlzLmluamVjdEJyb3dzZXIoKTtcbiAgfVxuXG4gIGdldE9iamVjdCh0eXBlLCByYXdEYXRhPzogYW55KSB7XG4gICAgbGV0IG9iamVjdCA9IHtcbiAgICAgICdAY29udGV4dCc6ICdodHRwOi8vc2NoZW1hLm9yZycsXG4gICAgICAnQHR5cGUnOiB0eXBlLFxuICAgIH07XG4gICAgaWYgKHJhd0RhdGEpIHtcbiAgICAgIG9iamVjdCA9IHtcbiAgICAgICAgLi4ub2JqZWN0LFxuICAgICAgICAuLi5yYXdEYXRhLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIHRvSnNvbigpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5qc29uTGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmplY3RCcm93c2VyKCkge1xuICAgIGlmICh0aGlzLnBsYXRmb3JtSWQgJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgbGV0IGxkSnNvblNjcmlwdFRhZyA9IHRoaXMuZG9jLmhlYWQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2xkK2pzb24nXWApO1xuICAgICAgaWYgKGxkSnNvblNjcmlwdFRhZykge1xuICAgICAgICBsZEpzb25TY3JpcHRUYWcudGV4dENvbnRlbnQgPSB0aGlzLnRvSnNvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGRKc29uU2NyaXB0VGFnID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIGxkSnNvblNjcmlwdFRhZy5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYXBwbGljYXRpb24vbGQranNvbicpO1xuICAgICAgICBsZEpzb25TY3JpcHRUYWcudGV4dENvbnRlbnQgPSB0aGlzLnRvSnNvbigpO1xuICAgICAgICB0aGlzLmRvYy5oZWFkLmFwcGVuZENoaWxkKGxkSnNvblNjcmlwdFRhZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==