@umbraco/json-models-builders
Version:
Builders and models for Umbraco Sites
119 lines • 4 kB
JavaScript
"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