@atlasrender/render-plugin
Version:
Atlas Render Farm Manager plugin system.
86 lines • 4.46 kB
JavaScript
"use strict";
/*
* Copyright (c) 2020. This code created and belongs to Pathfinder render manager project.
* Owner and project architect: Danil Andreev | danssg08@gmail.com | https://github.com/DanilAndreev
* File creator: Danil Andreev
* Project: atlas-render-plugin
* File last modified: 11/12/20, 5:23 PM
* All rights reserved.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const PluginSetting_1 = require("./PluginSetting");
const ValidationError_1 = require("../errors/ValidationError");
const _ = require("lodash");
const errors_1 = require("../errors");
/**
* StringField - class, designed to create string plugin setting.
* @class
* @author Danil Andreev
*/
class StringField extends PluginSetting_1.default {
/**
* Creates an instance of StringField.
* @param setting - Object with payload to construct entity.
* @throws ValidationError
* @author Danil Andreev
*/
constructor(setting) {
super("string", setting);
if (setting.min != null && typeof setting.min !== "number")
this.validation.reject("min", "integer", { got: typeof setting.min });
if (setting.max != null && typeof setting.max !== "number")
this.validation.reject("max", "integer", { got: typeof setting.max });
else if (setting.min != null && !this.validation.errorOn("min") && setting.min > setting.max)
this.validation.reject("max", "integer", { message: "Max value can not be lower than min.", status: errors_1.Validator.Codes.LOWER_THAN_MIN });
if (setting.max != null && !this.validation.errorOn("max")) {
if (!_.isInteger(setting.max))
this.validation.reject("max", "integer", { message: "Max value can not be float.", status: errors_1.Validator.Codes.INVALID_INTEGER });
if (setting.max < 0)
this.validation.reject("max", "integer", {
got: typeof setting.min,
message: "Max length can not be less than zero",
status: errors_1.Validator.Codes.LOWER_THAN_ZERO
});
}
if (setting.min != null && !this.validation.errorOn("min")) {
if (!_.isInteger(setting.min))
this.validation.reject("min", "integer", { message: "Min value can not be float.", status: errors_1.Validator.Codes.INVALID_INTEGER });
if (setting.min < 0)
this.validation.reject("min", "integer", {
got: typeof setting.min,
message: "Min length can not be less than zero",
status: errors_1.Validator.Codes.LOWER_THAN_ZERO
});
}
if (setting.default != null && typeof setting.default !== "string")
this.validation.reject("default", "string", { got: typeof setting.default });
else if (setting.max != null && setting.min != null && setting.default != null &&
!(this.validation.errorOn("min") && this.validation.errorOn("max"))) {
if (setting.default.length < setting.min)
this.validation.reject("default", "string", { message: "Default value can not be lower than min.", status: errors_1.Validator.Codes.LOWER_THAN_MIN });
if (setting.default.length > setting.max)
this.validation.reject("default", "string", { message: "Default value can not be higher than max.", status: errors_1.Validator.Codes.HIGHER_THAN_MAX });
}
this.min = setting.min;
this.max = setting.max;
this.default = setting.default;
}
validatePayload(payload) {
if (this.nullable && !payload)
return null;
const interpreted = "" + payload;
const error = new ValidationError_1.default("Incorrect payload.", undefined, { id: this.id });
if (this.min != null && interpreted.length < this.min)
error.reject("min", "string", { got: interpreted, message: "Out of bounds." });
if (this.max != null && interpreted.length > this.max)
error.reject("max", "string", { got: interpreted, message: "Out of bounds." });
if (error.hasErrors())
throw error;
return interpreted;
}
getJSON() {
return Object.assign(Object.assign({}, super.getJSON()), { min: this.min, max: this.max, default: this.default });
}
}
exports.default = StringField;
//# sourceMappingURL=StringField.js.map