| /** |
| * @filedescription Validation Strategy |
| */ |
| |
| "use strict"; |
| |
| //----------------------------------------------------------------------------- |
| // Class |
| //----------------------------------------------------------------------------- |
| |
| /** |
| * Container class for several different validation strategies. |
| */ |
| class ValidationStrategy { |
| |
| /** |
| * Validates that a value is an array. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static array(value) { |
| if (!Array.isArray(value)) { |
| throw new TypeError("Expected an array."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a boolean. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static boolean(value) { |
| if (typeof value !== "boolean") { |
| throw new TypeError("Expected a Boolean."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a number. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static number(value) { |
| if (typeof value !== "number") { |
| throw new TypeError("Expected a number."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a object. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static object(value) { |
| if (!value || typeof value !== "object") { |
| throw new TypeError("Expected an object."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a object or null. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static "object?"(value) { |
| if (typeof value !== "object") { |
| throw new TypeError("Expected an object or null."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a string. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static string(value) { |
| if (typeof value !== "string") { |
| throw new TypeError("Expected a string."); |
| } |
| } |
| |
| /** |
| * Validates that a value is a non-empty string. |
| * @param {*} value The value to validate. |
| * @returns {void} |
| * @throws {TypeError} If the value is invalid. |
| */ |
| static "string!"(value) { |
| if (typeof value !== "string" || value.length === 0) { |
| throw new TypeError("Expected a non-empty string."); |
| } |
| } |
| |
| } |
| |
| exports.ValidationStrategy = ValidationStrategy; |