@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
JavaScript
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=