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