form.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. module.exports =
  2. /** *** */ (function (modules) { // webpackBootstrap
  3. /** *** */ // The module cache
  4. /** *** */ const installedModules = {}
  5. /** *** */
  6. /** *** */ // The require function
  7. /** *** */ function __webpack_require__(moduleId) {
  8. /** *** */
  9. /** *** */ // Check if module is in cache
  10. /** *** */ if (installedModules[moduleId]) {
  11. /** *** */ return installedModules[moduleId].exports
  12. /** *** */ }
  13. /** *** */ // Create a new module (and put it into the cache)
  14. /** *** */ const module = installedModules[moduleId] = {
  15. /** *** */ i: moduleId,
  16. /** *** */ l: false,
  17. /** *** */ exports: {}
  18. /** *** */}
  19. /** *** */
  20. /** *** */ // Execute the module function
  21. /** *** */ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)
  22. /** *** */
  23. /** *** */ // Flag the module as loaded
  24. /** *** */ module.l = true
  25. /** *** */
  26. /** *** */ // Return the exports of the module
  27. /** *** */ return module.exports
  28. /** *** */ }
  29. /** *** */
  30. /** *** */
  31. /** *** */ // expose the modules object (__webpack_modules__)
  32. /** *** */ __webpack_require__.m = modules
  33. /** *** */
  34. /** *** */ // expose the module cache
  35. /** *** */ __webpack_require__.c = installedModules
  36. /** *** */
  37. /** *** */ // define getter function for harmony exports
  38. /** *** */ __webpack_require__.d = function (exports, name, getter) {
  39. /** *** */ if (!__webpack_require__.o(exports, name)) {
  40. /** *** */ Object.defineProperty(exports, name, {enumerable: true, get: getter})
  41. /** *** */ }
  42. /** *** */ }
  43. /** *** */
  44. /** *** */ // define __esModule on exports
  45. /** *** */ __webpack_require__.r = function (exports) {
  46. /** *** */ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  47. /** *** */ Object.defineProperty(exports, Symbol.toStringTag, {value: 'Module'})
  48. /** *** */ }
  49. /** *** */ Object.defineProperty(exports, '__esModule', {value: true})
  50. /** *** */ }
  51. /** *** */
  52. /** *** */ // create a fake namespace object
  53. /** *** */ // mode & 1: value is a module id, require it
  54. /** *** */ // mode & 2: merge all properties of value into the ns
  55. /** *** */ // mode & 4: return value when already ns object
  56. /** *** */ // mode & 8|1: behave like require
  57. /** *** */ __webpack_require__.t = function (value, mode) {
  58. /** *** */ if (mode & 1) value = __webpack_require__(value)
  59. /** *** */ if (mode & 8) return value
  60. /** *** */ if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value
  61. /** *** */ const ns = Object.create(null)
  62. /** *** */ __webpack_require__.r(ns)
  63. /** *** */ Object.defineProperty(ns, 'default', {enumerable: true, value})
  64. /** *** */ if (mode & 2 && typeof value !== 'string') for (const key in value) __webpack_require__.d(ns, key, function (key) { return value[key] }.bind(null, key))
  65. /** *** */ return ns
  66. /** *** */ }
  67. /** *** */
  68. /** *** */ // getDefaultExport function for compatibility with non-harmony modules
  69. /** *** */ __webpack_require__.n = function (module) {
  70. /** *** */ const getter = module && module.__esModule
  71. /** *** */ ? function getDefault() { return module.default }
  72. /** *** */ : function getModuleExports() { return module }
  73. /** *** */ __webpack_require__.d(getter, 'a', getter)
  74. /** *** */ return getter
  75. /** *** */ }
  76. /** *** */
  77. /** *** */ // Object.prototype.hasOwnProperty.call
  78. /** *** */ __webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property) }
  79. /** *** */
  80. /** *** */ // __webpack_public_path__
  81. /** *** */ __webpack_require__.p = ''
  82. /** *** */
  83. /** *** */
  84. /** *** */ // Load entry module and return exports
  85. /** *** */ return __webpack_require__(__webpack_require__.s = 4)
  86. /** *** */ }([
  87. /* 0 */
  88. /***/ (function (module, exports, __webpack_require__) {
  89. Object.defineProperty(exports, '__esModule', {value: true})
  90. exports.diff = function (old, newVal) {
  91. if (!old && newVal || old && !newVal) return true
  92. for (const k in newVal) {
  93. if (old[k] !== newVal[k]) return true
  94. }
  95. for (const _k in old) {
  96. if (old[_k] !== newVal[_k]) return true
  97. }
  98. return false
  99. }
  100. exports.diffObject = function (old, newVal) {
  101. if (!old && newVal) return newVal
  102. if (!newVal && old) return old
  103. const diffObj = {}
  104. let isDiff = false
  105. for (const k in newVal) {
  106. if (old[k] !== newVal[k]) {
  107. isDiff = true
  108. diffObj[k] = newVal[k]
  109. }
  110. }
  111. for (const _k2 in old) {
  112. if (old[_k2] !== newVal[_k2]) {
  113. isDiff = true
  114. diffObj[_k2] = newVal[_k2]
  115. }
  116. }
  117. return isDiff ? diffObj : null
  118. }
  119. /***/ }),
  120. /* 1 */,
  121. /* 2 */,
  122. /* 3 */,
  123. /* 4 */
  124. /***/ (function (module, exports, __webpack_require__) {
  125. Object.defineProperty(exports, '__esModule', {value: true})
  126. const form_validator_1 = __webpack_require__(5)
  127. const object_1 = __webpack_require__(0)
  128. function linked(target) {
  129. if (target.data.prop) {
  130. this.data.formItems[target.data.prop] = target
  131. }
  132. if (target.setInForm) {
  133. target.setInForm()
  134. }
  135. if (!this.data.firstItem) {
  136. this.data.firstItem = target
  137. }
  138. if (target !== this.data.firstItem) {}
  139. }
  140. function unlinked(target) {
  141. if (target.data.prop) {
  142. delete this.data.formItems[target.data.prop]
  143. }
  144. }
  145. Component({
  146. properties: {
  147. models: {
  148. type: Object,
  149. value: {},
  150. observer: '_modelChange'
  151. },
  152. rules: {
  153. type: Array,
  154. value: [],
  155. observer: '_rulesChange'
  156. },
  157. extClass: {
  158. type: String,
  159. value: ''
  160. }
  161. },
  162. data: {
  163. errors: {},
  164. formItems: {},
  165. firstItem: null
  166. },
  167. relations: {
  168. '../cell/cell': {
  169. type: 'descendant',
  170. linked,
  171. unlinked
  172. },
  173. '../checkbox-group/checkbox-group': {
  174. type: 'descendant',
  175. linked,
  176. unlinked
  177. }
  178. },
  179. attached: function attached() {
  180. this.initRules()
  181. this.formValidator = new form_validator_1.default(this.data.models, this.data.newRules)
  182. },
  183. methods: {
  184. initRules: function initRules(rules) {
  185. const newRules = {};
  186. (rules || this.data.rules).forEach(function (rule) {
  187. if (rule.name && rule.rules) {
  188. newRules[rule.name] = rule.rules || []
  189. }
  190. })
  191. this.setData({newRules})
  192. return newRules
  193. },
  194. _modelChange: function _modelChange(newVal, oldVal, path) {
  195. const _this = this
  196. if (!this.isInit) {
  197. this.isInit = true
  198. return newVal
  199. }
  200. this.formValidator.setModel(newVal)
  201. this.isInit = true
  202. const diffObj = object_1.diffObject(oldVal, newVal)
  203. if (diffObj) {
  204. (function () {
  205. let isValid = true
  206. const errors = []
  207. const errorMap = {}
  208. const _loop = function _loop(k) {
  209. _this.formValidator.validateField(k, diffObj[k], function (isValided, error) {
  210. if (error && error[k]) {
  211. errors.push(error[k])
  212. errorMap[k] = error[k]
  213. }
  214. isValid = isValided
  215. })
  216. }
  217. for (const k in diffObj) {
  218. _loop(k)
  219. }
  220. _this._showErrors(diffObj, errorMap)
  221. _this.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'change'} : {errors, trigger: 'change'})
  222. }())
  223. }
  224. return newVal
  225. },
  226. _rulesChange: function _rulesChange(newVal) {
  227. const newRules = this.initRules(newVal)
  228. if (this.formValidator) {
  229. this.formValidator.setRules(newRules)
  230. }
  231. return newVal
  232. },
  233. _showAllErrors: function _showAllErrors(errors) {
  234. for (const k in this.data.newRules) {
  235. this._showError(k, errors && errors[k])
  236. }
  237. },
  238. _showErrors: function _showErrors(objs, errors) {
  239. for (const k in objs) {
  240. this._showError(k, errors && errors[k])
  241. }
  242. },
  243. _showError: function _showError(prop, error) {
  244. const formItem = this.data.formItems[prop]
  245. if (formItem && formItem.data.showError) {
  246. formItem.setError(error)
  247. }
  248. },
  249. validate: function validate(cb) {
  250. const _this2 = this
  251. return this.formValidator.validate(function (isValid, errors) {
  252. _this2._showAllErrors(errors)
  253. const handleError = _this2.handleErrors(errors)
  254. _this2.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'validate'} : {errors: handleError, trigger: 'validate'})
  255. cb && cb(isValid, handleError)
  256. })
  257. },
  258. validateField: function validateField(name, value) {
  259. const _this3 = this
  260. const cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
  261. const error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
  262. }
  263. return this.formValidator.validateField(name, value, function (isValid, errors) {
  264. _this3._showError(name, errors)
  265. const handleError = _this3.handleErrors(errors)
  266. _this3.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'validate'} : {errors: handleError, trigger: 'validate'})
  267. cb && cb(isValid, handleError)
  268. })
  269. },
  270. handleErrors: function handleErrors(errors) {
  271. if (errors) {
  272. const newErrors = []
  273. this.data.rules.forEach(function (rule) {
  274. if (errors[rule.name]) {
  275. errors[rule.name].name = rule.name
  276. newErrors.push(errors[rule.name])
  277. }
  278. })
  279. return newErrors
  280. }
  281. return errors
  282. },
  283. addMethod: function addMethod(ruleName, method) {
  284. return this.formValidator.addMethod(ruleName, method)
  285. }
  286. }
  287. })
  288. exports.default = form_validator_1.default
  289. /***/ }),
  290. /* 5 */
  291. /***/ (function (module, exports, __webpack_require__) {
  292. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } }
  293. Object.defineProperty(exports, '__esModule', {value: true})
  294. const validator_1 = __webpack_require__(6)
  295. const object_1 = __webpack_require__(0)
  296. const toString = Object.prototype.toString
  297. const validateSingleRule = function validateSingleRule(rule, value) {
  298. const param = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null
  299. const models = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null
  300. let message = ''
  301. for (const ruleKey in rule) {
  302. if (ruleKey === 'name' || ruleKey === 'message') continue
  303. const validateMethod = typeof rule.validator !== 'undefined' ? rule.validator : validator_1.default[ruleKey]
  304. if (typeof validateMethod === 'function') {
  305. message = validateMethod(rule, value, param, models)
  306. if (message) {
  307. return message
  308. }
  309. }
  310. }
  311. return message
  312. }
  313. const FormValidator = (function () {
  314. function FormValidator(models, rules) {
  315. _classCallCheck(this, FormValidator)
  316. this.models = models
  317. this.rules = rules
  318. this.errors = {}
  319. }
  320. FormValidator.prototype.validate = function validate(cb) {
  321. const _this = this
  322. return new Promise(function (resolve) {
  323. let fieldCount = 0
  324. let failCount = 0
  325. const errors = _this.errors
  326. const models = _this.models
  327. let errorChanged = false
  328. const _loop = function _loop(k) {
  329. (function (fieldName) {
  330. const oldError = errors[fieldName]
  331. _this._innerValidateField(k, models[fieldName], function (valid, newError) {
  332. fieldCount++
  333. if (!valid) failCount++
  334. if (object_1.diff(oldError, newError)) {
  335. errors[fieldName] = newError
  336. errorChanged = true
  337. }
  338. })
  339. }(k))
  340. }
  341. for (const k in _this.rules) {
  342. _loop(k)
  343. }
  344. if (errorChanged) {}
  345. const keys = Object.keys(errors)
  346. keys.forEach(function (key) {
  347. if (!errors[key]) delete errors[key]
  348. })
  349. resolve({isValid: !failCount, errors: failCount ? errors : undefined})
  350. cb && cb(!failCount, failCount ? errors : undefined)
  351. })
  352. }
  353. FormValidator.prototype.validateField = function validateField(name, value) {
  354. const _this2 = this
  355. const cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
  356. const error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
  357. }
  358. return new Promise(function (resolve) {
  359. _this2._innerValidateField(name, value, function (valid, error) {
  360. const errObj = {}
  361. errObj[name] = error
  362. resolve({valid, error: valid ? undefined : error})
  363. cb(valid, valid ? undefined : errObj)
  364. const oldError = _this2.errors[name]
  365. const errorChanged = object_1.diff(oldError, error)
  366. if (errorChanged) {
  367. if (!error) delete _this2.errors[name]
  368. _this2.errors[name] = error
  369. }
  370. })
  371. })
  372. }
  373. FormValidator.prototype._innerValidateField = function _innerValidateField(name, value) {
  374. let cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
  375. const errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
  376. }
  377. const rules = this.rules[name]
  378. if (!rules) {
  379. console.warn('[form-validtor] rule name ' + name + ' not exists.')
  380. cb(true)
  381. return
  382. }
  383. if (typeof value === 'function') {
  384. cb = value
  385. value = undefined
  386. }
  387. let isFail = false
  388. const models = this.models
  389. if (toString.call(rules) === '[object Array]') {
  390. rules.forEach(function (rule) {
  391. rule.name = name
  392. const resMessage = validateSingleRule(rule, value || models[name], rule.param, models)
  393. if (resMessage && !isFail) {
  394. isFail = true
  395. const error = resMessage ? {message: resMessage, rule} : undefined
  396. cb(false, error)
  397. }
  398. })
  399. if (!isFail) {
  400. cb(!isFail)
  401. }
  402. } else {
  403. const rule = rules
  404. rule.name = name
  405. const resMessage = validateSingleRule(rule, value || models[name], rule.param, models)
  406. const error = resMessage ? {message: resMessage, rule} : undefined
  407. if (resMessage) {
  408. isFail = true
  409. }
  410. cb(!isFail, error)
  411. }
  412. }
  413. FormValidator.prototype.addMethod = function addMethod(ruleName, method) {
  414. validator_1.default[ruleName] = method
  415. }
  416. FormValidator.prototype.setModel = function setModel(newModel) {
  417. this.models = newModel
  418. }
  419. FormValidator.prototype.setRules = function setRules(newRules) {
  420. this.rules = newRules
  421. }
  422. return FormValidator
  423. }())
  424. exports.default = FormValidator
  425. /***/ }),
  426. /* 6 */
  427. /***/ (function (module, exports, __webpack_require__) {
  428. Object.defineProperty(exports, '__esModule', {value: true})
  429. const string_1 = __webpack_require__(7)
  430. const defaultMessage = {
  431. required: '%s必填',
  432. minlength: '长度最少为%s',
  433. maxlength: '长度最大为%s',
  434. rangelength: '长度在%s和%s之间',
  435. bytelength: '最多只能输入%s个字',
  436. min: '值最小为%s',
  437. max: '值最大为%s',
  438. range: '值的范围为%s和%s之间',
  439. mobile: '请输入正确的手机号',
  440. email: '请输入正确的电子邮件',
  441. url: '请输入正确的URL地址',
  442. equalTo: '值和字段%s不相等'
  443. }
  444. exports.default = {
  445. required: function required(r, val, param, models) {
  446. if (r.required === false) return
  447. if (!val) return string_1.sprintf(r.message || defaultMessage.required, r.name)
  448. },
  449. minlength: function minlength(r, val) {
  450. const minlen = r.minlength
  451. val = val || ''
  452. if (val.length < minlen) return string_1.sprintf(r.message || defaultMessage.minlength, minlen)
  453. },
  454. maxlength: function maxlength(r, val) {
  455. const maxlen = r.maxlength
  456. val = val || ''
  457. if (val.length > maxlen) return string_1.sprintf(r.message || defaultMessage.maxlength, maxlen)
  458. },
  459. rangelength: function rangelength(r, val) {
  460. const range = r.range
  461. val = val || ''
  462. if (val.length > range[1] || val.length < range[0]) return string_1.sprintf(r.message || defaultMessage.rangelength, range[0], range[1])
  463. },
  464. min: function min(r, val) {
  465. const min = r.min
  466. if (val < min) return string_1.sprintf(r.message || defaultMessage.min, min)
  467. },
  468. max: function max(r, val) {
  469. const max = r.max
  470. if (val > max) return string_1.sprintf(r.message || defaultMessage.max, max)
  471. },
  472. range: function range(r, val) {
  473. const range = r.range
  474. if (val < range[0] || val > range[1]) return string_1.sprintf(r.message || defaultMessage.range, range[0], range[1])
  475. },
  476. mobile: function mobile(r, val) {
  477. if (r.mobile === false) return
  478. val = val || ''
  479. if (val.length !== 11) return string_1.sprintf(r.message || defaultMessage.mobile)
  480. },
  481. email: function email(r, value) {
  482. if (r.email === false) return
  483. if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value)) {
  484. return string_1.sprintf(r.message || defaultMessage.email)
  485. }
  486. },
  487. url: function url(r, value) {
  488. if (r.url === false) return
  489. if (!/^(https?|s?ftp|weixin):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value)) {
  490. return r.message || defaultMessage.url
  491. }
  492. },
  493. equalTo: function equalTo(r, value, param, models) {
  494. const equalTo = r.equalTo
  495. if (value !== models[equalTo]) return string_1.sprintf(r.message || defaultMessage.equalTo, r.name)
  496. },
  497. bytelength: function bytelength(r, value, param, models) {
  498. param = r.param
  499. const len = value.replace(/[^\x00-\xff]/g, '**').length
  500. if (len > param) return string_1.sprintf(r.message || defaultMessage.bytelength, param)
  501. }
  502. }
  503. /***/ }),
  504. /* 7 */
  505. /***/ (function (module, exports, __webpack_require__) {
  506. Object.defineProperty(exports, '__esModule', {value: true})
  507. exports.sprintf = function () {
  508. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  509. args[_key] = arguments[_key]
  510. }
  511. let i = void 0
  512. let result = args[0] || ''
  513. let para = void 0
  514. let reg = void 0
  515. const length = args.length - 1
  516. if (length < 1) {
  517. return result
  518. }
  519. i = 1
  520. while (i < length + 1) {
  521. result = result.replace(/%s/, '{#' + i + '#}')
  522. i++
  523. }
  524. result.replace('%s', '')
  525. i = 1
  526. while (true) {
  527. para = args[i]
  528. if (para === undefined) {
  529. break
  530. }
  531. reg = new RegExp('{#' + i + '#}', 'g')
  532. result = result.replace(reg, para)
  533. i++
  534. }
  535. return result
  536. }
  537. /***/ })
  538. /** *** */ ]))