@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
48 lines • 2.24 kB
JavaScript
import format from "string-format";
import { TypeInfo } from "../contracts/base";
import { CultureInsensitiveProperty, } from "../contracts/base/culture-insensitive-property";
import { CultureSensitiveProperty } from "../contracts/base/culture-sensitive-property";
import ErrorMessages from "../error-messages";
import { ArgumentError } from "../errors/argument-error";
import Guard from "../guard";
export class PropertyFactory {
static createProperties(definitions, cultures) {
if (definitions == null || definitions.length === 0) {
return [];
}
const list = [];
for (const definition of definitions) {
if (definition.isMultiLanguage && cultures != undefined && cultures.length > 0) {
const property = this.createCultureSensitiveProperty(definition, cultures);
list.push(property);
}
else {
const property = this.createCultureInsensitiveProperty(definition);
list.push(property);
}
}
return list;
}
static createCultureSensitiveProperty(definition, cultures) {
Guard.notNullOrUndefined(definition);
Guard.notNullOrUndefined(cultures);
Guard.arrayNotEmpty(cultures);
Guard.arrayNoneNullOrInvariantCulture(cultures);
if (!definition.isMultiLanguage) {
const errorMessage = format(ErrorMessages.PropertyFactory.MustBeCultureSensitive);
throw new ArgumentError(errorMessage);
}
const property = new CultureSensitiveProperty(definition.name, new TypeInfo(definition.dataType, definition.isMultiValue), cultures);
return property;
}
static createCultureInsensitiveProperty(definition) {
Guard.notNullOrUndefined(definition);
if (definition.isMultiLanguage) {
const errorMessage = format(ErrorMessages.PropertyFactory.CannotBeCultureSensitive, definition.name);
throw new ArgumentError(errorMessage);
}
const property = new CultureInsensitiveProperty(definition.name, new TypeInfo(definition.dataType, definition.isMultiValue));
return property;
}
}
//# sourceMappingURL=property-factory.js.map