UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

131 lines 6.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionListMapper = void 0; const string_format_1 = __importDefault(require("string-format")); const flat_option_list_1 = __importDefault(require("../contracts/base/option-lists/flat-option-list")); const flat_option_list_value_1 = __importDefault(require("../contracts/base/option-lists/flat-option-list-value")); const hierarchical_option_list_1 = __importDefault(require("../contracts/base/option-lists/hierarchical-option-list")); const hierarchical_options_list_value_1 = __importDefault(require("../contracts/base/option-lists/hierarchical-options-list-value")); const option_list_type_1 = require("../contracts/base/option-lists/option-list-type"); const error_messages_1 = __importDefault(require("../error-messages")); const guard_1 = __importDefault(require("../guard")); const option_list_resource_1 = __importDefault(require("../models/option-lists/option-list-resource")); const option_list_value_resource_1 = __importDefault(require("../models/option-lists/option-list-value-resource")); class OptionListMapper { constructor(client) { guard_1.default.notNullOrUndefined(client, "client"); this._client = client; } mapOptionListAsync(resource) { return __awaiter(this, void 0, void 0, function* () { if (resource === null) { return null; } const createdBy = yield this._client.linkHelper.idFromEntityAsync(resource.createdBy); const modifiedBy = yield this._client.linkHelper.idFromEntityAsync(resource.modifiedBy); const labels = resource.labels || {}; let olBase; if (resource.type === option_list_type_1.OptionListType.Flat) { const values = this.mapFlatOptionListValues(resource.values); olBase = new flat_option_list_1.default(resource.name, labels, values); } else if (resource.type === option_list_type_1.OptionListType.Hierarchical) { const values = this.mapHierarchicalOptionListValues(resource.values); olBase = new hierarchical_option_list_1.default(resource.name, labels, values); } else { throw Error((0, string_format_1.default)(error_messages_1.default.UnknownOptionListType, resource.type)); } olBase.createdBy = createdBy || undefined; olBase.createdOn = resource.createdOn; olBase.modifiedBy = modifiedBy || undefined; olBase.modifiedOn = resource.modifiedOn; olBase.isSystemOwned = resource.isSystemOwned; olBase.name = resource.name; return olBase; }); } map(ol) { if (ol === null) { return null; } const type = ol.type; const values = this.mapValues(ol.getOptionListValues()); const resource = new option_list_resource_1.default(); resource.isSystemOwned = ol.isSystemOwned; resource.name = ol.name; resource.type = type; resource.values = values; resource.labels = JSON.parse(JSON.stringify(ol.labels)); return resource; } mapFlatOptionListValues(optionListValues) { if (optionListValues === null) { return []; } const values = optionListValues.map((optionListValue) => { return this.mapFlatOptionListValue(optionListValue); }); return values; } mapFlatOptionListValue(optionListValue) { guard_1.default.notNullOrUndefined(optionListValue); return new flat_option_list_value_1.default(optionListValue.identifier, optionListValue.labels); } mapHierarchicalOptionListValues(optionListValues) { if (optionListValues === null || optionListValues.length === 0) { return []; } const values = optionListValues.map((optionListValue) => { return this.mapHierarchicalOptionListValue(optionListValue); }); return values; } mapHierarchicalOptionListValue(optionListValue) { guard_1.default.notNullOrUndefined(optionListValue); let values; if (optionListValue.values && optionListValue.values.length) { values = this.mapHierarchicalOptionListValues(optionListValue.values); } else { values = []; } return new hierarchical_options_list_value_1.default(optionListValue.identifier, optionListValue.labels, values); } mapValues(optionListValues) { if (optionListValues === null || optionListValues.length === 0) { return []; } const list = []; optionListValues.forEach((optionListValue) => { const olv = this.mapValue(optionListValue); list.push(olv); }); return list; } mapValue(optionListValue) { guard_1.default.notNullOrUndefined(optionListValue); const value = new option_list_value_resource_1.default(); value.identifier = optionListValue.identifier; value.labels = optionListValue.labels; if (optionListValue instanceof hierarchical_options_list_value_1.default) { const subValues = this.mapValues(optionListValue.values); value.values = subValues; } return value; } } exports.OptionListMapper = OptionListMapper; //# sourceMappingURL=option-list-mapper.js.map