@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
131 lines • 6.3 kB
JavaScript
;
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