UNPKG

@spartacus/storefront

Version:

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

53 lines 6.19 kB
import { Injectable } from '@angular/core'; import { of } from 'rxjs'; import * as i0 from "@angular/core"; /** * Builds the basic structured data for the product, see https://schema.org/product. * This builder includes data for sku number, name, description, brand and main image. */ export class JsonLdBaseProductBuilder { build(product) { return of(Object.assign(Object.assign(Object.assign({}, this.getProductBase(product)), this.getProductBrand(product)), this.getProductImage(product))); } /** * Returns the product sku, name and description. */ getProductBase(product) { const result = { sku: product.code }; if (product.name) { result.name = product.name; } if (product.summary) { result.description = product.summary; } return result; } /** * Returns the image object with the main product image url. * * If the image is not available, an empty object is returned. */ getProductImage(product) { var _a, _b, _c; const image = (_c = (_b = (_a = product.images) === null || _a === void 0 ? void 0 : _a.PRIMARY) === null || _b === void 0 ? void 0 : _b['zoom']) === null || _c === void 0 ? void 0 : _c.url; return image ? { image } : {}; } /** * Returns the brand object with the product manufacturer. * * If the brand is not available, an empty object is returned. */ getProductBrand(product) { const brand = product.manufacturer; return brand ? { brand } : {}; } } JsonLdBaseProductBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdBaseProductBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); JsonLdBaseProductBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdBaseProductBuilder, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: JsonLdBaseProductBuilder, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmxkLWJhc2UtcHJvZHVjdC5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtc3RydWN0dXJlL3Nlby9zdHJ1Y3R1cmVkLWRhdGEvYnVpbGRlcnMvcHJvZHVjdC9qc29ubGQtYmFzZS1wcm9kdWN0LmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUd0Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLEtBQUssQ0FBQyxPQUFnQjtRQUNwQixPQUFPLEVBQUUsK0NBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxNQUFNLE1BQU0sR0FBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDdEM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGVBQWUsQ0FBQyxPQUFnQjs7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBQSxNQUFBLE1BQUEsT0FBTyxDQUFDLE1BQU0sMENBQUUsT0FBTywwQ0FBRyxNQUFNLENBQUMsMENBQUUsR0FBRyxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxlQUFlLENBQUMsT0FBZ0I7UUFDeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O3FIQXpDVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBKc29uTGRCdWlsZGVyIH0gZnJvbSAnLi4vc2NoZW1hLmludGVyZmFjZSc7XG5cbi8qKlxuICogQnVpbGRzIHRoZSBiYXNpYyBzdHJ1Y3R1cmVkIGRhdGEgZm9yIHRoZSBwcm9kdWN0LCBzZWUgaHR0cHM6Ly9zY2hlbWEub3JnL3Byb2R1Y3QuXG4gKiBUaGlzIGJ1aWxkZXIgaW5jbHVkZXMgZGF0YSBmb3Igc2t1IG51bWJlciwgbmFtZSwgZGVzY3JpcHRpb24sIGJyYW5kIGFuZCBtYWluIGltYWdlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSnNvbkxkQmFzZVByb2R1Y3RCdWlsZGVyIGltcGxlbWVudHMgSnNvbkxkQnVpbGRlcjxQcm9kdWN0PiB7XG4gIGJ1aWxkKHByb2R1Y3Q6IFByb2R1Y3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvZih7XG4gICAgICAuLi50aGlzLmdldFByb2R1Y3RCYXNlKHByb2R1Y3QpLFxuICAgICAgLi4udGhpcy5nZXRQcm9kdWN0QnJhbmQocHJvZHVjdCksXG4gICAgICAuLi50aGlzLmdldFByb2R1Y3RJbWFnZShwcm9kdWN0KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IHNrdSwgbmFtZSBhbmQgZGVzY3JpcHRpb24uXG4gICAqL1xuICBwcml2YXRlIGdldFByb2R1Y3RCYXNlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHsgc2t1OiBwcm9kdWN0LmNvZGUgfTtcbiAgICBpZiAocHJvZHVjdC5uYW1lKSB7XG4gICAgICByZXN1bHQubmFtZSA9IHByb2R1Y3QubmFtZTtcbiAgICB9XG4gICAgaWYgKHByb2R1Y3Quc3VtbWFyeSkge1xuICAgICAgcmVzdWx0LmRlc2NyaXB0aW9uID0gcHJvZHVjdC5zdW1tYXJ5O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGltYWdlIG9iamVjdCB3aXRoIHRoZSBtYWluIHByb2R1Y3QgaW1hZ2UgdXJsLlxuICAgKlxuICAgKiBJZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSwgYW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFByb2R1Y3RJbWFnZShwcm9kdWN0OiBQcm9kdWN0KTogeyBpbWFnZT86IHN0cmluZyB9IHtcbiAgICBjb25zdCBpbWFnZSA9IHByb2R1Y3QuaW1hZ2VzPy5QUklNQVJZPy5bJ3pvb20nXT8udXJsO1xuICAgIHJldHVybiBpbWFnZSA/IHsgaW1hZ2UgfSA6IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJyYW5kIG9iamVjdCB3aXRoIHRoZSBwcm9kdWN0IG1hbnVmYWN0dXJlci5cbiAgICpcbiAgICogSWYgdGhlIGJyYW5kIGlzIG5vdCBhdmFpbGFibGUsIGFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRQcm9kdWN0QnJhbmQocHJvZHVjdDogUHJvZHVjdCk6IHsgYnJhbmQ/OiBzdHJpbmcgfSB7XG4gICAgY29uc3QgYnJhbmQgPSBwcm9kdWN0Lm1hbnVmYWN0dXJlcjtcbiAgICByZXR1cm4gYnJhbmQgPyB7IGJyYW5kIH0gOiB7fTtcbiAgfVxufVxuIl19