fieldCheck.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  7. function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  8. function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  9. function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
  10. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  11. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
  12. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  13. function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  14. function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
  15. function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
  16. function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
  17. function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
  18. function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
  19. function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
  20. function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
  21. function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
  22. function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
  23. var _code_pass = new WeakMap();
  24. var _code_notPass = new WeakMap();
  25. var _code_notMatch = new WeakMap();
  26. var _ruleItems = new WeakMap();
  27. var FieldCheck = function () {
  28. function FieldCheck(ruleItems) {
  29. _classCallCheck(this, FieldCheck);
  30. _classPrivateFieldInitSpec(this, _code_pass, {
  31. writable: true,
  32. value: 1
  33. });
  34. _classPrivateFieldInitSpec(this, _code_notPass, {
  35. writable: true,
  36. value: 2
  37. });
  38. _classPrivateFieldInitSpec(this, _code_notMatch, {
  39. writable: true,
  40. value: 3
  41. });
  42. _classPrivateFieldInitSpec(this, _ruleItems, {
  43. writable: true,
  44. value: []
  45. });
  46. _defineProperty(this, "_toString", Object.prototype.toString);
  47. _classPrivateFieldSet(this, _ruleItems, []);
  48. if (ruleItems && Array.isArray(ruleItems)) {
  49. var _iterator = _createForOfIteratorHelper(ruleItems),
  50. _step;
  51. try {
  52. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  53. var ruleItem = _step.value;
  54. this.addRuleItem(ruleItem.name || "", ruleItem.checkFields, ruleItem.rules);
  55. }
  56. } catch (err) {
  57. _iterator.e(err);
  58. } finally {
  59. _iterator.f();
  60. }
  61. }
  62. }
  63. _createClass(FieldCheck, [{
  64. key: "_isDef",
  65. value: function _isDef(v) {
  66. return v !== undefined && v !== null;
  67. }
  68. }, {
  69. key: "_isEmpty",
  70. value: function _isEmpty(v) {
  71. return v === undefined || v === '';
  72. }
  73. }, {
  74. key: "_isRegExp",
  75. value: function _isRegExp(v) {
  76. return this._toString.call(v) === '[object RegExp]';
  77. }
  78. }, {
  79. key: "buildRuleItem",
  80. value: function buildRuleItem(checkFields, ruleArr) {
  81. if (!Array.isArray(checkFields) || !Array.isArray(ruleArr)) {
  82. throw new Error('checkFields or ruleArr is not Array');
  83. }
  84. var _iterator2 = _createForOfIteratorHelper(checkFields),
  85. _step2;
  86. try {
  87. for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
  88. var field = _step2.value;
  89. if (typeof field !== 'string' && !(field instanceof RegExp)) {
  90. throw new Error('checkFields item is not string or RegExp');
  91. }
  92. }
  93. } catch (err) {
  94. _iterator2.e(err);
  95. } finally {
  96. _iterator2.f();
  97. }
  98. var _iterator3 = _createForOfIteratorHelper(ruleArr),
  99. _step3;
  100. try {
  101. for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
  102. var rule = _step3.value;
  103. if (typeof rule !== 'function' && _typeof(rule) !== 'object') {
  104. throw new Error('ruleArr item is not function or object');
  105. }
  106. }
  107. } catch (err) {
  108. _iterator3.e(err);
  109. } finally {
  110. _iterator3.f();
  111. }
  112. var ruleItem = {
  113. checkFields: checkFields,
  114. rules: ruleArr
  115. };
  116. return ruleItem;
  117. }
  118. }, {
  119. key: "addRuleItem",
  120. value: function addRuleItem(ruleName, checkFields, ruleArr) {
  121. var ruleItem = this.buildRuleItem(checkFields, ruleArr);
  122. _classPrivateFieldGet(this, _ruleItems).push(ruleItem);
  123. return this;
  124. }
  125. }, {
  126. key: "getRuleItem",
  127. value: function getRuleItem(field) {
  128. return _classPrivateFieldGet(this, _ruleItems).find(function (item) {
  129. var _iterator4 = _createForOfIteratorHelper(item.checkFields),
  130. _step4;
  131. try {
  132. for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
  133. var _matchKey = _step4.value;
  134. if (_matchKey instanceof RegExp) {
  135. if (_matchKey.test(field)) {
  136. return true;
  137. }
  138. } else {
  139. if (_matchKey === field) {
  140. return true;
  141. }
  142. }
  143. }
  144. } catch (err) {
  145. _iterator4.e(err);
  146. } finally {
  147. _iterator4.f();
  148. }
  149. return false;
  150. });
  151. }
  152. }, {
  153. key: "checkField",
  154. value: function checkField(field, value) {
  155. var ruleItem = this.getRuleItem(field);
  156. if (!ruleItem || !ruleItem.rules) {
  157. return [_classPrivateFieldGet(this, _code_notMatch)];
  158. }
  159. if (value === undefined) {
  160. return [_classPrivateFieldGet(this, _code_notPass), '字段值为undefined'];
  161. }
  162. var _iterator5 = _createForOfIteratorHelper(ruleItem.rules),
  163. _step5;
  164. try {
  165. for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
  166. var _rule = _step5.value;
  167. if (typeof _rule === 'function') {
  168. var _msg = _rule(value);
  169. if (_msg) {
  170. return [_classPrivateFieldGet(this, _code_notPass), _msg];
  171. }
  172. }
  173. if (_rule.type && _typeof(value) !== _rule.type) {
  174. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  175. }
  176. if (_rule.require && this._isEmpty(value)) {
  177. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  178. }
  179. if (_rule.min && value < _rule.min) {
  180. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  181. }
  182. if (_rule.max && value > _rule.max) {
  183. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  184. }
  185. if (_rule.length && value.length && value.length !== _rule.length) {
  186. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  187. }
  188. if (_rule.minLength && value.length && value.length < _rule.minLength) {
  189. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  190. }
  191. if (_rule.maxLength && value.length && value.length > _rule.maxLength) {
  192. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  193. }
  194. if (_rule.regex && !_rule.regex.test(value)) {
  195. return [_classPrivateFieldGet(this, _code_notPass), _rule.message];
  196. }
  197. }
  198. } catch (err) {
  199. _iterator5.e(err);
  200. } finally {
  201. _iterator5.f();
  202. }
  203. return [_classPrivateFieldGet(this, _code_pass)];
  204. }
  205. }, {
  206. key: "verify",
  207. value: function verify(formObject, isMustMatch) {
  208. for (var _oKey in formObject) {
  209. var value = formObject[_oKey];
  210. var r = this.checkField(_oKey, value);
  211. if (r[0] === _classPrivateFieldGet(this, _code_notPass)) {
  212. return r[1];
  213. } else if (isMustMatch && r[0] === _classPrivateFieldGet(this, _code_notMatch)) {
  214. return "\u5B57\u6BB5\u6CA1\u6709\u5BF9\u5E94\u5339\u914D\u9879";
  215. }
  216. }
  217. }
  218. }]);
  219. return FieldCheck;
  220. }();
  221. var _default = exports["default"] = FieldCheck;