UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

95 lines 4.56 kB
import Guard from "../../guard"; import { CultureLoadOption } from "./culture-load-option"; import { EntityLoadConfiguration } from "./entity-load-configuration"; import { LoadOption } from "./load-options"; import { PropertyLoadOption } from "./property-load-option"; import { RelationLoadOption } from "./relation-load-option"; import { RelationSpecification } from "./relation-specification"; export class EntityLoadConfigurationBuilder { constructor(entityLoadConfiguration) { this._entityLoadConfiguration = new EntityLoadConfiguration(); if (entityLoadConfiguration) this._entityLoadConfiguration = entityLoadConfiguration.deepClone(); } inCultures(option) { Guard.notNullOrUndefined(option); if (option instanceof Array) { this._entityLoadConfiguration.cultureLoadOption = this._entityLoadConfiguration.cultureLoadOption || new CultureLoadOption(); this._entityLoadConfiguration.cultureLoadOption.loadOption = LoadOption.Custom; this._entityLoadConfiguration.cultureLoadOption.cultures = [ ...new Set((this._entityLoadConfiguration.cultureLoadOption.cultures || []).concat(option)), ]; } else { this._entityLoadConfiguration.cultureLoadOption = this._entityLoadConfiguration.cultureLoadOption || new CultureLoadOption(); this._entityLoadConfiguration.cultureLoadOption.loadOption = option; } return this; } inCulture(culture) { Guard.notUndefined(culture); Guard.stringNotNullOrEmpty(culture); return this.inCultures([culture]); } withProperties(option) { Guard.notNullOrUndefined(option); if (option instanceof Array) { this._entityLoadConfiguration.propertyLoadOption = this._entityLoadConfiguration.propertyLoadOption || new PropertyLoadOption(); this._entityLoadConfiguration.propertyLoadOption.loadOption = LoadOption.Custom; this._entityLoadConfiguration.propertyLoadOption.properties = [ ...new Set((this._entityLoadConfiguration.propertyLoadOption.properties || []).concat(option)), ]; } else { this._entityLoadConfiguration.propertyLoadOption = this._entityLoadConfiguration.propertyLoadOption || new PropertyLoadOption(); this._entityLoadConfiguration.propertyLoadOption.loadOption = option; } return this; } withProperty(property) { Guard.notUndefined(property); Guard.stringNotNullOrEmpty(property); return this.withProperties([property]); } withRelations(option) { Guard.notNullOrUndefined(option); if (option instanceof Array) { let relationSpecifications = option.map(relation => { return typeof relation === "string" ? new RelationSpecification(relation) : relation; }); this._entityLoadConfiguration.relationLoadOption = this._entityLoadConfiguration.relationLoadOption || new RelationLoadOption(); this._entityLoadConfiguration.relationLoadOption.loadOption = LoadOption.Custom; relationSpecifications = relationSpecifications.filter(value => { return (this._entityLoadConfiguration.relationLoadOption.relations.findIndex(relationValue => { if (typeof value === "string") { return relationValue.name === value; } else { return relationValue.deepEquals(value); } }) === -1); }); this._entityLoadConfiguration.relationLoadOption.relations = (this._entityLoadConfiguration.relationLoadOption.relations || []).concat(relationSpecifications); } else { this._entityLoadConfiguration.relationLoadOption = this._entityLoadConfiguration.relationLoadOption || new RelationLoadOption(); this._entityLoadConfiguration.relationLoadOption.loadOption = option; } return this; } withRelation(relation, role) { Guard.notUndefined(relation); Guard.stringNotNullOrEmpty(relation); return this.withRelations([new RelationSpecification(relation, role)]); } build() { return this._entityLoadConfiguration.deepClone(); } } //# sourceMappingURL=entity-load-configuration-builder.js.map