UNPKG

@react-input-validator/rules

Version:

The validation rule objects used by the packages: `@react-input-validator/core`, `@react-input-validator/native` and `@react-input-validator/web`

182 lines (181 loc) 7.3 kB
"use strict"; 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 __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var _Rule_arrayAsSingle, _Rule_messageFunc, _Rule_priority, _Rule_value; Object.defineProperty(exports, "__esModule", { value: true }); exports.str = void 0; exports.isFilled = isFilled; /** * https://github.com/atmulyana/react-input-validator */ const javascript_common_1 = require("javascript-common"); const messages_1 = __importDefault(require("./messages")); const reVarNameHolders = /\$\{([_a-zA-Z][_a-zA-Z0-9]*)\}/g; const dontReadRuleMembers = { arrayAsSingle: 1, errorMessage: 1, inputValues: 1, isArrayAsSingle: 1, lang: 1, messageFunc: 1, priority: 1, setMessageFunc: 1, setName: 1, setPriority: 1, setValue: 1, validate: 1, }; const str = (template, params) => template && (params && typeof (params) == 'object' || null) && template.replace(reVarNameHolders, function (_, p1) { let value = params[p1]; if (params instanceof Rule) { if (p1 in dontReadRuleMembers) value = javascript_common_1.emptyString; else if (typeof value == 'function') try { value = value(); } catch (_a) { } } if (value !== null && value !== undefined && typeof value != 'function') return value + javascript_common_1.emptyString; return javascript_common_1.emptyString; }); exports.str = str; function isFilled(value) { if (typeof (value) == 'string') { return !!value.trim(); } else if (Array.isArray(value)) { if (value.length == 1) return isFilled(value[0]); return value.length > 0; } else { return value !== undefined && value !== null; } } let defaultArrayAsSingle = false; class Rule { static get defaultLang() { return javascript_common_1.noChange; } static get defaultArrayAsSingle() { return defaultArrayAsSingle; } static set defaultArrayAsSingle(value) { defaultArrayAsSingle = value; } constructor() { var _a, _b; _Rule_arrayAsSingle.set(this, false); _Rule_messageFunc.set(this, void 0); _Rule_priority.set(this, 0); _Rule_value.set(this, void 0); this.isValid = false; this.lang = Rule.defaultLang; let isCallingMessageFunc = false; let _this = this; /* We need the prototype's `errorMessage` getter function to get the prototype's `errorMessage` value because `Object.getPrototypeOf(this).errorMessage` will fail to access the fields of `this`. The getter function, as a function in general, can be bound to `this` as the context object. */ let getErrorMessage; while (!getErrorMessage && (_this instanceof Rule)) { _this = Object.getPrototypeOf(_this); getErrorMessage = (_b = (_a = Object.getOwnPropertyDescriptor(_this, 'errorMessage')) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.bind(this); } _this = this; Object.defineProperty(this, 'errorMessage', { get() { if (isCallingMessageFunc) return getErrorMessage ? getErrorMessage() : javascript_common_1.emptyString; let message; if (__classPrivateFieldGet(_this, _Rule_messageFunc, "f")) { isCallingMessageFunc = true; //to avoid recursive-calling forever message = __classPrivateFieldGet(_this, _Rule_messageFunc, "f").call(_this, _this); isCallingMessageFunc = false; } if (!message) message = getErrorMessage && getErrorMessage(); return (0, exports.str)(message, _this); } }); __classPrivateFieldSet(this, _Rule_arrayAsSingle, defaultArrayAsSingle, "f"); } get errorMessage() { return this.lang(messages_1.default.invalid); } get isArrayAsSingle() { return __classPrivateFieldGet(this, _Rule_arrayAsSingle, "f"); } get messageFunc() { return __classPrivateFieldGet(this, _Rule_messageFunc, "f"); } get priority() { return __classPrivateFieldGet(this, _Rule_priority, "f"); } get resultValue() { return __classPrivateFieldGet(this, _Rule_value, "f"); } get value() { return __classPrivateFieldGet(this, _Rule_value, "f"); } arrayAsSingle(isSingle = true) { __classPrivateFieldSet(this, _Rule_arrayAsSingle, isSingle, "f"); return this; } setErrorMessage(message) { message = message.trim(); return this.setMessageFunc(message ? (() => message) : null); //will throw `Error` as necessary on rules: `email`, `integer`, `numeric`, `required` } setMessageFunc(func) { if (typeof func == 'function') //runtime check __classPrivateFieldSet(this, _Rule_messageFunc, func, "f"); else __classPrivateFieldSet(this, _Rule_messageFunc, null, "f"); return this; } setName(name) { this.name = name; return this; } setPriority(priority) { __classPrivateFieldSet(this, _Rule_priority, priority < 0 ? 0 : priority, "f"); return this; } setValue(value) { __classPrivateFieldSet(this, _Rule_value, value, "f"); return this; } validate() { return this; } } _Rule_arrayAsSingle = new WeakMap(), _Rule_messageFunc = new WeakMap(), _Rule_priority = new WeakMap(), _Rule_value = new WeakMap(); exports.default = Rule; { let _lang = Rule.defaultLang; const translate = (s) => _lang(s) + javascript_common_1.emptyString; //make sure it always returns string (for runtime) Object.defineProperty(Rule.prototype, 'lang', { get() { return translate; }, set(f) { if (typeof f == 'function') //runtime check _lang = f; else _lang = Rule.defaultLang; } }); }