UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

50 lines 5.63 kB
import { Inject, Injectable, Optional } from '@angular/core'; import { combineLatest, Subscription } from 'rxjs'; import { SCHEMA_BUILDER } from './builders/tokens'; import * as i0 from "@angular/core"; import * as i1 from "./json-ld-script.factory"; /** * Factory service that is used to build the structured data for * all configured schema builders. */ export class StructuredDataFactory { constructor(scriptBuilder, builders) { this.scriptBuilder = scriptBuilder; this.builders = builders; this.subscription = new Subscription(); } /** * Initiates the build of structured data by collecting all schema * builders. */ build() { if (this.scriptBuilder.isJsonLdRequired() && this.builders) { this.subscription.add(this.collectSchemas().subscribe((schema) => { this.scriptBuilder.build(schema); })); } } /** * Collects all schema builders and observe their structured data. */ collectSchemas() { return combineLatest(this.builders.map((builder) => builder.build())); } ngOnDestroy() { this.subscription.unsubscribe(); } } StructuredDataFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: StructuredDataFactory, deps: [{ token: i1.JsonLdScriptFactory }, { token: SCHEMA_BUILDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); StructuredDataFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: StructuredDataFactory, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: StructuredDataFactory, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.JsonLdScriptFactory }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCHEMA_BUILDER] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC1kYXRhLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1zdHJ1Y3R1cmUvc2VvL3N0cnVjdHVyZWQtZGF0YS9zdHJ1Y3R1cmVkLWRhdGEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFHbkQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUNVLGFBQWtDLEVBR2xDLFFBQXlCO1FBSHpCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUdsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUd6QixpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRnZELENBQUM7SUFJSjs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVksRUFBRSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxjQUFjO1FBQ3RCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOztrSEFqQ1UscUJBQXFCLHFEQUl0QixjQUFjO3NIQUpiLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2hlbWFCdWlsZGVyIH0gZnJvbSAnLi9idWlsZGVycy9zY2hlbWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNDSEVNQV9CVUlMREVSIH0gZnJvbSAnLi9idWlsZGVycy90b2tlbnMnO1xuaW1wb3J0IHsgSnNvbkxkU2NyaXB0RmFjdG9yeSB9IGZyb20gJy4vanNvbi1sZC1zY3JpcHQuZmFjdG9yeSc7XG5cbi8qKlxuICogRmFjdG9yeSBzZXJ2aWNlIHRoYXQgaXMgdXNlZCB0byBidWlsZCB0aGUgc3RydWN0dXJlZCBkYXRhIGZvclxuICogYWxsIGNvbmZpZ3VyZWQgc2NoZW1hIGJ1aWxkZXJzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3RydWN0dXJlZERhdGFGYWN0b3J5IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY3JpcHRCdWlsZGVyOiBKc29uTGRTY3JpcHRGYWN0b3J5LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTQ0hFTUFfQlVJTERFUilcbiAgICBwcml2YXRlIGJ1aWxkZXJzOiBTY2hlbWFCdWlsZGVyW11cbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAvKipcbiAgICogSW5pdGlhdGVzIHRoZSBidWlsZCBvZiBzdHJ1Y3R1cmVkIGRhdGEgYnkgY29sbGVjdGluZyBhbGwgc2NoZW1hXG4gICAqIGJ1aWxkZXJzLlxuICAgKi9cbiAgYnVpbGQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyaXB0QnVpbGRlci5pc0pzb25MZFJlcXVpcmVkKCkgJiYgdGhpcy5idWlsZGVycykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmNvbGxlY3RTY2hlbWFzKCkuc3Vic2NyaWJlKChzY2hlbWE6IHt9W10pID0+IHtcbiAgICAgICAgICB0aGlzLnNjcmlwdEJ1aWxkZXIuYnVpbGQoc2NoZW1hKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3RzIGFsbCBzY2hlbWEgYnVpbGRlcnMgYW5kIG9ic2VydmUgdGhlaXIgc3RydWN0dXJlZCBkYXRhLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbGxlY3RTY2hlbWFzKCk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmJ1aWxkZXJzLm1hcCgoYnVpbGRlcikgPT4gYnVpbGRlci5idWlsZCgpKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=