UNPKG

ag-grid-enterprise

Version:

AG Grid Enterprise Features

185 lines 13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TEXT_WRAP = exports.INTERACTION_RANGE = exports.POSITION = exports.OPT_LINE_JOIN = exports.LINE_JOIN = exports.OPT_LINE_CAP = exports.LINE_CAP = exports.OPT_LINE_DASH = exports.LINE_DASH = exports.OPT_FONT_WEIGHT = exports.FONT_WEIGHT = exports.OPT_FONT_STYLE = exports.FONT_STYLE = exports.OPT_BOOLEAN_ARRAY = exports.BOOLEAN_ARRAY = exports.STRING_UNION = exports.OPT_STRING_ARRAY = exports.STRING_ARRAY = exports.OPT_NUMBER_ARRAY = exports.NUMBER_ARRAY = exports.NUMBER_OR_NAN = exports.OPT_NUMBER = exports.NUMBER = exports.OPT_COLOR_STRING_ARRAY = exports.COLOR_STRING_ARRAY = exports.OPT_COLOR_STRING = exports.COLOR_STRING = exports.OPT_DATE_OR_DATETIME_MS = exports.OPT_DATETIME_MS = exports.DATETIME_MS = exports.DATE_ARRAY = exports.OPT_DATE = exports.DATE = exports.OPT_STRING = exports.STRING = exports.OPT_BOOLEAN = exports.BOOLEAN = exports.OPT_FUNCTION = exports.FUNCTION = exports.GREATER_THAN = exports.LESS_THAN = exports.OR = exports.AND = exports.OPT_ARRAY = exports.ARRAY = exports.OPTIONAL = exports.predicateWithMessage = exports.Validate = void 0; var color_1 = require("./color"); var decorator_1 = require("./decorator"); var logger_1 = require("./logger"); function Validate(predicate) { return decorator_1.addTransformToInstanceProperty(function (target, prop, v) { var _a, _b, _c; if (predicate(v, { target: target })) { return v; } var cleanKey = prop.toString().replace(/^_*/, ''); var targetClass = (_b = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.className) !== null && _b !== void 0 ? _b : (_c = target.constructor) === null || _c === void 0 ? void 0 : _c.name; if ((targetClass === null || targetClass === void 0 ? void 0 : targetClass.length) < 3) { targetClass = null; } var targetClassName = targetClass ? "of [" + targetClass + "] " : ''; if (predicate.message) { logger_1.Logger.warn("Property [" + cleanKey + "] " + targetClassName + "cannot be set to [" + JSON.stringify(v) + "]; " + predicate.message + ", ignoring."); } else { logger_1.Logger.warn("Property [" + cleanKey + "] " + targetClassName + "cannot be set to [" + JSON.stringify(v) + "], ignoring."); } return decorator_1.BREAK_TRANSFORM_CHAIN; }); } exports.Validate = Validate; function predicateWithMessage(predicate, message) { predicate.message = message; return predicate; } exports.predicateWithMessage = predicateWithMessage; var OPTIONAL = function (v, ctx, predicate) { return v === undefined || predicate(v, ctx); }; exports.OPTIONAL = OPTIONAL; var ARRAY = function (length, predicate) { return predicateWithMessage(function (v, ctx) { return Array.isArray(v) && (length ? v.length === length : true) && (predicate ? v.every(function (e) { return predicate(e, ctx); }) : true); }, "expecting an Array"); }; exports.ARRAY = ARRAY; var OPT_ARRAY = function (length) { return predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.ARRAY(length)); }, 'expecting an optional Array'); }; exports.OPT_ARRAY = OPT_ARRAY; var AND = function () { var predicates = []; for (var _i = 0; _i < arguments.length; _i++) { predicates[_i] = arguments[_i]; } return predicateWithMessage(function (v, ctx) { return predicates.every(function (p) { return p(v, ctx); }); }, predicates .map(function (p) { return p.message; }) .filter(function (m) { return m != null; }) .join(' AND ')); }; exports.AND = AND; var OR = function () { var predicates = []; for (var _i = 0; _i < arguments.length; _i++) { predicates[_i] = arguments[_i]; } return predicateWithMessage(function (v, ctx) { return predicates.some(function (p) { return p(v, ctx); }); }, predicates .map(function (p) { return p.message; }) .filter(function (m) { return m != null; }) .join(' OR ')); }; exports.OR = OR; var isComparable = function (v) { return v != null && !isNaN(v); }; var LESS_THAN = function (otherField) { return predicateWithMessage(function (v, ctx) { return !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField]; }, "expected to be less than " + otherField); }; exports.LESS_THAN = LESS_THAN; var GREATER_THAN = function (otherField) { return predicateWithMessage(function (v, ctx) { return !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField]; }, "expected to be greater than " + otherField); }; exports.GREATER_THAN = GREATER_THAN; exports.FUNCTION = predicateWithMessage(function (v) { return typeof v === 'function'; }, 'expecting a Function'); exports.OPT_FUNCTION = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.FUNCTION); }, "expecting an optional Function"); exports.BOOLEAN = predicateWithMessage(function (v) { return v === true || v === false; }, 'expecting a Boolean'); exports.OPT_BOOLEAN = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.BOOLEAN); }, 'expecting an optional Boolean'); exports.STRING = predicateWithMessage(function (v) { return typeof v === 'string'; }, 'expecting a String'); exports.OPT_STRING = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.STRING); }, 'expecting an optional String'); exports.DATE = predicateWithMessage(function (v) { return v instanceof Date && !isNaN(+v); }, 'expecting a Date object'); exports.OPT_DATE = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.DATE); }, 'expecting an optional Date'); exports.DATE_ARRAY = predicateWithMessage(exports.ARRAY(undefined, exports.DATE), 'expecting an Array of Date objects'); exports.DATETIME_MS = NUMBER(0); exports.OPT_DATETIME_MS = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.DATETIME_MS); }, 'expecting an optional number'); exports.OPT_DATE_OR_DATETIME_MS = exports.OR(exports.OPT_DATE, exports.OPT_DATETIME_MS); var colorMessage = "A color string can be in one of the following formats to be valid: #rgb, #rrggbb, rgb(r, g, b), rgba(r, g, b, a) or a CSS color name such as 'white', 'orange', 'cyan', etc"; exports.COLOR_STRING = predicateWithMessage(function (v) { if (typeof v !== 'string') { return false; } return color_1.Color.validColorString(v); }, "expecting a color String. " + colorMessage); exports.OPT_COLOR_STRING = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.COLOR_STRING); }, "expecting an optional color String. " + colorMessage); exports.COLOR_STRING_ARRAY = predicateWithMessage(exports.ARRAY(undefined, exports.COLOR_STRING), "expecting an Array of color strings. " + colorMessage); exports.OPT_COLOR_STRING_ARRAY = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.COLOR_STRING_ARRAY); }, "expecting an optional Array of color strings. " + colorMessage); function NUMBER(min, max) { var message = "expecting a finite Number" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : '')); return predicateWithMessage(function (v) { return typeof v === 'number' && Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true); }, message); } exports.NUMBER = NUMBER; function OPT_NUMBER(min, max) { var message = "expecting an optional finite Number" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : '')); return predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, NUMBER(min, max)); }, message); } exports.OPT_NUMBER = OPT_NUMBER; function NUMBER_OR_NAN(min, max) { // Can be NaN or finite number var message = "expecting a finite Number" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : '')); return predicateWithMessage(function (v) { return typeof v === 'number' && (isNaN(v) || (Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true))); }, message); } exports.NUMBER_OR_NAN = NUMBER_OR_NAN; exports.NUMBER_ARRAY = predicateWithMessage(exports.ARRAY(undefined, NUMBER()), 'expecting an Array of numbers'); exports.OPT_NUMBER_ARRAY = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.NUMBER_ARRAY); }, 'expecting an optional Array of numbers'); exports.STRING_ARRAY = predicateWithMessage(exports.ARRAY(undefined, exports.STRING), 'expecting an Array of strings'); exports.OPT_STRING_ARRAY = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.STRING_ARRAY); }, 'expecting an optional Array of strings'); function STRING_UNION() { var values = []; for (var _i = 0; _i < arguments.length; _i++) { values[_i] = arguments[_i]; } var message = "expecting one of: " + values.join(', '); return predicateWithMessage(function (v) { return typeof v === 'string' && values.indexOf(v) >= 0; }, message); } exports.STRING_UNION = STRING_UNION; exports.BOOLEAN_ARRAY = predicateWithMessage(exports.ARRAY(undefined, exports.BOOLEAN), 'expecting an Array of boolean values'); exports.OPT_BOOLEAN_ARRAY = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.BOOLEAN_ARRAY); }, 'expecting an optional Array of boolean values'); var FONT_WEIGHTS = [ 'normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '700', '800', '900', ]; exports.FONT_STYLE = predicateWithMessage(function (v) { return v === 'normal' || v === 'italic' || v === 'oblique'; }, "expecting a font style keyword such as 'normal', 'italic' or 'oblique'"); exports.OPT_FONT_STYLE = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.FONT_STYLE); }, "expecting an optional font style keyword such as 'normal', 'italic' or 'oblique'"); exports.FONT_WEIGHT = predicateWithMessage(function (v) { return FONT_WEIGHTS.includes(v); }, "expecting a font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600"); exports.OPT_FONT_WEIGHT = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.FONT_WEIGHT); }, "expecting an optional font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600"); exports.LINE_DASH = predicateWithMessage(exports.ARRAY(undefined, NUMBER(0)), 'expecting an Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.'); exports.OPT_LINE_DASH = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.LINE_DASH); }, 'expecting an optional Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.'); var LINE_CAPS = ['butt', 'round', 'square']; exports.LINE_CAP = predicateWithMessage(function (v) { return LINE_CAPS.includes(v); }, "expecting a line cap keyword such as 'butt', 'round' or 'square'"); exports.OPT_LINE_CAP = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.LINE_CAP); }, "expecting an optional line cap keyword such as 'butt', 'round' or 'square'"); var LINE_JOINS = ['round', 'bevel', 'miter']; exports.LINE_JOIN = predicateWithMessage(function (v) { return LINE_JOINS.includes(v); }, "expecting a line join keyword such as 'round', 'bevel' or 'miter'"); exports.OPT_LINE_JOIN = predicateWithMessage(function (v, ctx) { return exports.OPTIONAL(v, ctx, exports.LINE_JOIN); }, "expecting an optional line join keyword such as 'round', 'bevel' or 'miter'"); var POSITIONS = ['top', 'right', 'bottom', 'left']; exports.POSITION = predicateWithMessage(function (v) { return POSITIONS.includes(v); }, "expecting a position keyword such as 'top', 'right', 'bottom' or 'left"); var INTERACTION_RANGES = ['exact', 'nearest']; exports.INTERACTION_RANGE = predicateWithMessage(function (v) { return (typeof v === 'number' && Number.isFinite(v)) || INTERACTION_RANGES.includes(v); }, "expecting an interaction range of 'exact', 'nearest' or a number"); var TEXT_WRAPS = ['never', 'always', 'hyphenate', 'on-space']; exports.TEXT_WRAP = predicateWithMessage(function (v) { return TEXT_WRAPS.includes(v); }, "expecting a text wrap strategy keyword such as 'never', 'always', 'hyphenate', 'on-space'"); //# sourceMappingURL=validation.js.map