color-theme-generator
Version:
Generates random color themes that are based in color theory.
130 lines (129 loc) • 9.19 kB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Validator_instances, _Validator_validatePropertiesIsPresent, _Validator_isAnyPropertyUndefined, _Validator_isUndefined, _Validator_getPropertyUndefinedMessage, _Validator_validateMaxAndMinTypes, _Validator_isMaxOrMinNaN, _Validator_getMaxOrMinNaNMessage, _Validator_validateIsRecievedValid, _Validator_isRecievedInvalid, _Validator_getRecievedInvalidMessage, _Validator_isRecievedNaN, _Validator_getInvalidTypeMessage, _Validator_isRecievedNotColor, _Validator_isRecievedNotHTML, _Validator_isRecievedNotColorThemes, _Validator_isRecievedNotColorArray, _Validator_throwError;
import { Color } from './Color.js';
import { ColorThemes } from '../enums/ColorThemes.js';
import { ExpectedTypes } from '../enums/ExpectedTypes.js';
import { MaxMinObject } from './MaxMinObject.js';
export class Validator {
constructor() {
_Validator_instances.add(this);
}
/**
* Validates an argument of type number with a max and min value.
*
* @param values - A ValidationObject containing the values to validate.
* @throws Error if a property is missing on the argument.
* @throws Error if the argument does not pass the validation.
*/
validateNumberArgumentWithMaxAndMin(values) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validatePropertiesIsPresent).call(this, values);
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validateMaxAndMinTypes).call(this, values);
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validateIsRecievedValid).call(this, values);
}
/**
* Validates an argument of type number.
*
* @param recieved - The argument to validate.
* @throws Error if the arguments does not pass the validation.
*/
validateNumberArgument(recieved) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNaN).call(this, recieved)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.NUMBER));
}
}
/**
* Validates an argument of type Color.
*
* @param recieved - The argument to validate.
* @throws Error if the arguments does not pass the validation.
*/
validateColorArgument(recieved) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColor).call(this, recieved)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLOR));
}
}
/**
* Validates an argument of type HTMLElement.
*
* @param recieved - The argument to validate.
* @throws Error if the arguments does not pass the validation.
*/
validateHTMLElementArgument(recieved) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotHTML).call(this, recieved)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.HTMLELEMENT));
}
}
/**
* Validates an argument of type ColorThemes.
*
* @param recieved - The argument to validate.
* @throws Error if the arguments does not pass the validation.
*/
validateColorThemesArgument(recieved) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColorThemes).call(this, recieved)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLORTHEMES));
}
}
/**
* Validates an argument of type Color[].
*
* @param recieved - The argument to validate.
* @throws Error if the arguments does not pass the validation.
*/
validateColorArrayArgument(recieved) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColorArray).call(this, recieved)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLORARRAY));
}
}
}
_Validator_instances = new WeakSet(), _Validator_validatePropertiesIsPresent = function _Validator_validatePropertiesIsPresent(values) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isAnyPropertyUndefined).call(this, values)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getPropertyUndefinedMessage).call(this));
}
}, _Validator_isAnyPropertyUndefined = function _Validator_isAnyPropertyUndefined(values) {
return __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.max) || __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.min) || __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.recieved);
}, _Validator_isUndefined = function _Validator_isUndefined(recieved) {
return recieved === undefined;
}, _Validator_getPropertyUndefinedMessage = function _Validator_getPropertyUndefinedMessage() {
return 'Could not validate since at least one property is missing.';
}, _Validator_validateMaxAndMinTypes = function _Validator_validateMaxAndMinTypes(values) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isMaxOrMinNaN).call(this, new MaxMinObject(values.max, values.min))) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getMaxOrMinNaNMessage).call(this));
}
}, _Validator_isMaxOrMinNaN = function _Validator_isMaxOrMinNaN(values) {
return isNaN(values.max) || isNaN(values.min);
}, _Validator_getMaxOrMinNaNMessage = function _Validator_getMaxOrMinNaNMessage() {
return 'Could not validate since at least one of maxValue and minValue is not of type number.';
}, _Validator_validateIsRecievedValid = function _Validator_validateIsRecievedValid(values) {
if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedInvalid).call(this, values)) {
__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getRecievedInvalidMessage).call(this, new MaxMinObject(values.max, values.min)));
}
}, _Validator_isRecievedInvalid = function _Validator_isRecievedInvalid(values) {
return isNaN(values.recieved) || values.recieved > values.max || values.recieved < values.min;
}, _Validator_getRecievedInvalidMessage = function _Validator_getRecievedInvalidMessage(limits) {
return `The argument cannot be greater than ${limits.max}, nor less than ${limits.min}.`;
}, _Validator_isRecievedNaN = function _Validator_isRecievedNaN(recieved) {
return isNaN(recieved);
}, _Validator_getInvalidTypeMessage = function _Validator_getInvalidTypeMessage(expectedType) {
return `The argument must be of type ${expectedType}.`;
}, _Validator_isRecievedNotColor = function _Validator_isRecievedNotColor(recieved) {
return !(recieved instanceof Color);
}, _Validator_isRecievedNotHTML = function _Validator_isRecievedNotHTML(recieved) {
// nodeType is a property on a Node. The value 1 means it is an element node, i.e. a HTMLElement.
return recieved.nodeType !== 1;
}, _Validator_isRecievedNotColorThemes = function _Validator_isRecievedNotColorThemes(recieved) {
const values = Object.values(ColorThemes);
return !values.includes(recieved);
}, _Validator_isRecievedNotColorArray = function _Validator_isRecievedNotColorArray(recieved) {
const isNotArray = !Array.isArray(recieved);
const isEmpty = recieved.length === 0;
const includesInvalidElement = recieved.some(color => __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColor).call(this, color));
return isNotArray || isEmpty || includesInvalidElement;
}, _Validator_throwError = function _Validator_throwError(errorMessage) {
const error = new Error(errorMessage);
throw error;
};