UNPKG

@umbraco/json-models-builders

Version:
119 lines 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MediaTypeBuilder = void 0; const mediaTypePropertyBuilder_1 = require("./mediaTypePropertyBuilder"); const mediaTypeContainerBuilder_1 = require("./mediaTypeContainerBuilder"); const mediaTypeAllowedMediaTypeBuilder_1 = require("./mediaTypeAllowedMediaTypeBuilder"); const mediaTypeCompositionBuilder_1 = require("./mediaTypeCompositionBuilder"); class MediaTypeBuilder { alias; name; description; icon; allowedAsRoot; variesByCulture; variesBySegment; collectionId; isElement; mediaTypePropertyBuilder; mediaTypeContainerBuilder; mediaTypeAllowedMediaTypeBuilder; mediaTypeCompositionBuilder; folderId; id; constructor() { this.mediaTypePropertyBuilder = []; this.mediaTypeContainerBuilder = []; this.mediaTypeAllowedMediaTypeBuilder = []; this.mediaTypeCompositionBuilder = []; } withAlias(alias) { this.alias = alias; return this; } withName(name) { this.name = name; return this; } withDescription(description) { this.description = description; return this; } withIcon(icon) { this.icon = icon; return this; } withAllowedAsRoot(allowedAsRoot) { this.allowedAsRoot = allowedAsRoot; return this; } withVariesByCulture(variesByCulture) { this.variesByCulture = variesByCulture; return this; } withVariesBySegment(variesBySegment) { this.variesBySegment = variesBySegment; return this; } withIsElement(isElement) { this.isElement = isElement; return this; } addProperty() { const builder = new mediaTypePropertyBuilder_1.MediaTypePropertyBuilder(this); this.mediaTypePropertyBuilder.push(builder); return builder; } addContainer() { const builder = new mediaTypeContainerBuilder_1.MediaTypeContainerBuilder(this); this.mediaTypeContainerBuilder.push(builder); return builder; } addAllowedMediaType() { const builder = new mediaTypeAllowedMediaTypeBuilder_1.MediaTypeAllowedMediaTypeBuilder(this); this.mediaTypeAllowedMediaTypeBuilder.push(builder); return builder; } addComposition() { const builder = new mediaTypeCompositionBuilder_1.MediaTypeCompositionBuilder(this); this.mediaTypeCompositionBuilder.push(builder); return builder; } withId(id) { this.id = id; return this; } build() { if (this.id == null) { const crypto = require('crypto'); this.id = crypto.randomUUID(); } return { alias: this.alias || "", name: this.name || "", description: this.description || "", icon: this.icon || "icon-document", allowedAsRoot: this.allowedAsRoot || false, variesByCulture: this.variesByCulture || false, variesBySegment: this.variesBySegment || false, collection: this.collectionId ? { id: this.collectionId } : null, isElement: this.isElement || false, properties: this.mediaTypePropertyBuilder.map((builder) => { return builder.build(); }) || [], containers: this.mediaTypeContainerBuilder.map((builder) => { return builder.build(); }) || [], allowedMediaTypes: this.mediaTypeAllowedMediaTypeBuilder.map((builder) => { return builder.build(); }) || [], compositions: this.mediaTypeCompositionBuilder.map((builder) => { return builder.build(); }) || [], id: this.id, folder: this.folderId ? { id: this.folderId } : null, }; } } exports.MediaTypeBuilder = MediaTypeBuilder; //# sourceMappingURL=mediaTypeBuilder.js.map