UNPKG

@spartacus/storefront

Version:

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

33 lines 4.23 kB
import { Injectable } from '@angular/core'; import { of } from 'rxjs'; import * as i0 from "@angular/core"; /** * Builds the structured data for the product offer, see https://schema.org/offers. * The data includes the price, currency and availability level. */ export class JsonLdProductOfferBuilder { build(product) { var _a; const schema = { '@type': 'Offer' }; if ((_a = product.price) === null || _a === void 0 ? void 0 : _a.value) { schema.price = product.price.value; if (product.price.currencyIso) { schema.priceCurrency = product.price.currencyIso; } } if (product.stock && product.stock.stockLevelStatus) { schema.availability = product.stock.stockLevelStatus === 'inStock' ? 'InStock' : 'OutOfStock'; } return of({ offers: schema }); } } JsonLdProductOfferBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdProductOfferBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); JsonLdProductOfferBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdProductOfferBuilder, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdProductOfferBuilder, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmxkLXByb2R1Y3Qtb2ZmZXIuYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLXN0cnVjdHVyZS9zZW8vc3RydWN0dXJlZC1kYXRhL2J1aWxkZXJzL3Byb2R1Y3QvanNvbmxkLXByb2R1Y3Qtb2ZmZXIuYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RDOzs7R0FHRztBQUlILE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsS0FBSyxDQUFDLE9BQWdCOztRQUNwQixNQUFNLE1BQU0sR0FBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV6QyxJQUFJLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbkMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtnQkFDN0IsTUFBTSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUNsRDtTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkQsTUFBTSxDQUFDLFlBQVk7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUMzRTtRQUVELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7c0hBakJVLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEpzb25MZEJ1aWxkZXIgfSBmcm9tICcuLi9zY2hlbWEuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHN0cnVjdHVyZWQgZGF0YSBmb3IgdGhlIHByb2R1Y3Qgb2ZmZXIsIHNlZSBodHRwczovL3NjaGVtYS5vcmcvb2ZmZXJzLlxuICogVGhlIGRhdGEgaW5jbHVkZXMgdGhlIHByaWNlLCBjdXJyZW5jeSBhbmQgYXZhaWxhYmlsaXR5IGxldmVsLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSnNvbkxkUHJvZHVjdE9mZmVyQnVpbGRlciBpbXBsZW1lbnRzIEpzb25MZEJ1aWxkZXI8UHJvZHVjdD4ge1xuICBidWlsZChwcm9kdWN0OiBQcm9kdWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzY2hlbWE6IGFueSA9IHsgJ0B0eXBlJzogJ09mZmVyJyB9O1xuXG4gICAgaWYgKHByb2R1Y3QucHJpY2U/LnZhbHVlKSB7XG4gICAgICBzY2hlbWEucHJpY2UgPSBwcm9kdWN0LnByaWNlLnZhbHVlO1xuICAgICAgaWYgKHByb2R1Y3QucHJpY2UuY3VycmVuY3lJc28pIHtcbiAgICAgICAgc2NoZW1hLnByaWNlQ3VycmVuY3kgPSBwcm9kdWN0LnByaWNlLmN1cnJlbmN5SXNvO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9kdWN0LnN0b2NrICYmIHByb2R1Y3Quc3RvY2suc3RvY2tMZXZlbFN0YXR1cykge1xuICAgICAgc2NoZW1hLmF2YWlsYWJpbGl0eSA9XG4gICAgICAgIHByb2R1Y3Quc3RvY2suc3RvY2tMZXZlbFN0YXR1cyA9PT0gJ2luU3RvY2snID8gJ0luU3RvY2snIDogJ091dE9mU3RvY2snO1xuICAgIH1cblxuICAgIHJldHVybiBvZih7IG9mZmVyczogc2NoZW1hIH0pO1xuICB9XG59XG4iXX0=