Socket
Socket
Sign inDemoInstall

vee-validate

Package Overview
Dependencies
Maintainers
2
Versions
339
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vee-validate - npm Package Compare versions

Comparing version 2.0.0-rc.7 to 2.0.0-rc.8

dist/locale/sr.js

2

dist/locale/da.js

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e.__vee_validate_locale__da=e.__vee_validate_locale__da||{},e.__vee_validate_locale__da.js=n())}(this,function(){"use strict";var e={name:"da",messages:{after:function(e,n){return e+" skal være efter "+n[0]+"."},alpha_dash:function(e){return e+" må kun indeholde tal, bogstaver, bindestreger og underscores."},alpha_num:function(e){return e+" må kun indeholde tal og bogstaver."},alpha:function(e){return e+" må kun indeholde bogstaver."},before:function(e,n){return e+" skal være før "+n[0]+"."},between:function(e,n){return e+" skal være mellem "+n[0]+" og "+n[1]+"."},confirmed:function(e,n){return e+" skal matche "+n[0]+"."},date_between:function(e,n){return e+" skal være mellem "+n[0]+" og "+n[1]+"."},date_format:function(e,n){return e+" skal være i formatet: "+n[0]+"."},decimal:function(e,n){void 0===n&&(n=["*"]);var r=n[0];return e+" skal være numerisk og må maksimalt indeholde "+("*"===r?"":r)+" decimaler."},digits:function(e,n){return e+" skal være et tal på "+n[0]+" cifre."},dimensions:function(e,n){return e+" skal være "+n[0]+" pixels gange "+n[1]+" pixels."},email:function(e){return e+" skal være en gyldig email."},ext:function(e){return e+" skal være en gyldig filtype."},image:function(e){return e+" skal være et billede."},in:function(e){return e+" skal være en gyldig værdi."},ip:function(e){return e+" skal være en gyldig ip-adresse."},max:function(e,n){return e+" må maksimalt være "+n[0]+" karakterer."},mimes:function(e){return e+" skal være en gyldig filtype."},min:function(e,n){return e+" skal minimum være "+n[0]+" karakterer."},not_in:function(e){return e+" skal være en gyldig værdi."},numeric:function(e){return e+" skal være numerisk."},regex:function(e){return e+" skal have et gyldigt format."},required:function(e){return e+" skal udfyldes."},size:function(e,n){return e+" må maksimalt have en størrelse på "+n[0]+" KB."},url:function(e){return e+" skal være en gyldig URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(e),e});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e.__vee_validate_locale__da=e.__vee_validate_locale__da||{},e.__vee_validate_locale__da.js=n())}(this,function(){"use strict";var e={name:"da",messages:{_default:function(e){return e+" er ikke gyldig."},after:function(e,n){return e+" skal være efter "+n[0]+"."},alpha_dash:function(e){return e+" må kun indeholde tal, bogstaver, bindestreger og underscores."},alpha_num:function(e){return e+" må kun indeholde tal og bogstaver."},alpha_spaces:function(e){return e+" må kun indeholde bogstaver og mellemrum."},alpha:function(e){return e+" må kun indeholde bogstaver."},before:function(e,n){return e+" skal være før "+n[0]+"."},between:function(e,n){return e+" skal være mellem "+n[0]+" og "+n[1]+"."},confirmed:function(e,n){return e+" skal matche "+n[0]+"."},date_between:function(e,n){return e+" skal være mellem "+n[0]+" og "+n[1]+"."},date_format:function(e,n){return e+" skal være i formatet: "+n[0]+"."},decimal:function(e,n){void 0===n&&(n=["*"]);var r=n[0];return e+" skal være numerisk og må maksimalt indeholde "+("*"===r?"":r)+" decimaler."},digits:function(e,n){return e+" skal være et tal på "+n[0]+" cifre."},dimensions:function(e,n){return e+" skal være "+n[0]+" pixels gange "+n[1]+" pixels."},email:function(e){return e+" skal være en gyldig email."},ext:function(e){return e+" skal være en gyldig filtype."},image:function(e){return e+" skal være et billede."},in:function(e){return e+" skal være en gyldig værdi."},ip:function(e){return e+" skal være en gyldig ip-adresse."},max:function(e,n){return e+" må maksimalt være "+n[0]+" karakterer."},mimes:function(e){return e+" skal være en gyldig filtype."},min:function(e,n){return e+" skal minimum være "+n[0]+" karakterer."},not_in:function(e){return e+" skal være en gyldig værdi."},numeric:function(e){return e+" skal være numerisk."},regex:function(e){return e+" skal have et gyldigt format."},required:function(e){return e+" skal udfyldes."},size:function(e,n){return e+" må maksimalt have en størrelse på "+n[0]+" KB."},url:function(e){return e+" skal være en gyldig URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(e),e});

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e.__vee_validate_locale__nl=e.__vee_validate_locale__nl||{},e.__vee_validate_locale__nl.js=n())}(this,function(){"use strict";var e={name:"nl",messages:{after:function(e,n){return e+" moet later zijn dan "+n[0]+"."},alpha_dash:function(e){return e+" mag alleen letters, nummers, en strepen bevatten."},alpha_num:function(e){return e+" mag alleen letters en nummers bevatten."},alpha:function(e){return e+" mag alleen letters bevatten."},before:function(e,n){return e+" moet eerder zijn dan "+n[0]+"."},between:function(e,n){return e+" moet tussen "+n[0]+" en "+n[1]+" liggen."},confirmed:function(e,n){return e+" komt niet overeen met "+n[0]+"."},date_between:function(e,n){return e+" moet tussen "+n[0]+" en "+n[1]+" liggen."},date_format:function(e,n){return e+" moet in het volgende formaat zijn: "+n[0]+"."},decimal:function(e,n){void 0===n&&(n=["*"]);var t=n[0];return e+" moet een nummer zijn en mag "+("*"===t?"":t)+" decimalen bevatten."},digits:function(e,n){return e+" moet een nummer zijn en exact "+n[0]+" tekens bevatten."},dimensions:function(e,n){return e+" moet "+n[0]+" pixels breed zijn en "+n[1]+" pixels hoog."},email:function(e){return e+" moet een geldig emailadres zijn"},ext:function(e){return e+" moet een geldig bestand zijn."},image:function(e){return e+" moet een afbeelding zijn."},in:function(e){return e+" moet een geldige waarde zijn."},ip:function(e){return e+" moet een geldig ip adres zijn."},max:function(e,n){return e+" mag niet groter zijn dan "+n[0]+" karakters."},mimes:function(e){return e+" moet een geldig bestandstype hebben."},min:function(e,n){return e+" moet minimaal "+n[0]+" karakaters zijn."},not_in:function(e){return e+" is ongeldig."},numeric:function(e){return e+" mag alleen nummers bevatten"},regex:function(e){return e+" formaat is ongeldig."},required:function(e){return e+" is verplicht."},size:function(e,n){return e+" moet minstens "+n[0]+" KB groot zijn."},url:function(e){return e+" is geen geldige URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(e),e});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e.__vee_validate_locale__nl=e.__vee_validate_locale__nl||{},e.__vee_validate_locale__nl.js=n())}(this,function(){"use strict";var e={name:"nl",messages:{after:function(e,n){return e+" moet later zijn dan "+n[0]+"."},alpha_dash:function(e){return e+" mag alleen letters, nummers, en strepen bevatten."},alpha_num:function(e){return e+" mag alleen letters en nummers bevatten."},alpha:function(e){return e+" mag alleen letters bevatten."},before:function(e,n){return e+" moet eerder zijn dan "+n[0]+"."},between:function(e,n){return e+" moet tussen "+n[0]+" en "+n[1]+" liggen."},confirmed:function(e,n){return e+" komt niet overeen met "+n[0]+"."},date_between:function(e,n){return e+" moet tussen "+n[0]+" en "+n[1]+" liggen."},date_format:function(e,n){return e+" moet in het volgende formaat zijn: "+n[0]+"."},decimal:function(e,n){void 0===n&&(n=["*"]);var t=n[0];return e+" moet een nummer zijn en mag "+("*"===t?"":t)+" decimalen bevatten."},digits:function(e,n){return e+" moet een nummer zijn en exact "+n[0]+" tekens bevatten."},dimensions:function(e,n){return e+" moet "+n[0]+" pixels breed zijn en "+n[1]+" pixels hoog."},email:function(e){return e+" moet een geldig emailadres zijn"},ext:function(e){return e+" moet een geldig bestand zijn."},image:function(e){return e+" moet een afbeelding zijn."},in:function(e){return e+" moet een geldige waarde zijn."},ip:function(e){return e+" moet een geldig ip adres zijn."},max:function(e,n){return e+" mag niet groter zijn dan "+n[0]+" karakters."},mimes:function(e){return e+" moet een geldig bestandstype hebben."},min:function(e,n){return e+" moet minimaal "+n[0]+" karakaters zijn."},not_in:function(e){return e+" is ongeldig."},numeric:function(e){return e+" mag alleen nummers bevatten"},regex:function(e){return e+" formaat is ongeldig."},required:function(e){return e+" is verplicht."},size:function(e,n){return e+" mag niet groter zijn dan "+n[0]+" KB."},url:function(e){return e+" is geen geldige URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(e),e});

@@ -1,1 +0,1 @@

!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n.__vee_validate_locale__ru=n.__vee_validate_locale__ru||{},n.__vee_validate_locale__ru.js=e())}(this,function(){"use strict";var n={name:"ru",messages:{after:function(n,e){return"В поле "+n+" должна быть дата после "+e[0]+"."},alpha_dash:function(n){return"Поле "+n+" может содержать только буквы, цифры и дефис."},alpha_num:function(n){return"Поле "+n+" может содержать только буквы и цифры."},alpha_spaces:function(n){return"Поле "+n+" может содержать только буквы и пробелы."},alpha:function(n){return"Поле "+n+" может содержать только буквы."},before:function(n,e){return"В поле "+n+" должна быть дата до "+e[0]+"."},between:function(n,e){return"Поле "+n+" должно быть между "+e[0]+" и "+e[1]+"."},confirmed:function(n,e){return"Поле "+n+" не совпадает с "+e[0]+"."},date_between:function(n,e){return"Поле "+n+" должно быть между "+e[0]+" и "+e[1]+"."},date_format:function(n,e){return"Поле "+n+" должно быть в формате "+e[0]+"."},decimal:function(n,e){void 0===e&&(e=["*"]);var t=e[0];return"Поле "+n+" должно быть числовым и может содержать "+("*"===t?"":t)+" десятичных числа."},digits:function(n,e){return"Поле "+n+" должно быть числовым и точно содержать "+e[0]+" цифры."},dimensions:function(n,e){return"Поле "+n+" должно быть "+e[0]+" пикселей на "+e[1]+" пикселей."},email:function(n){return"Поле "+n+" должно быть действительным электронным адресом."},ext:function(n){return"Поле "+n+" должно быть действительным файлом."},image:function(n){return"Поле "+n+" должно быть изображением."},in:function(n){return"Поле "+n+" должно быть допустимым значением."},ip:function(n){return"Поле "+n+" должно быть действительным IP-адресом."},max:function(n,e){return"Поле "+n+" не может быть более "+e[0]+" символов."},max_value:function(n,e){return"Поле "+n+" должно быть "+e[0]+" или менее."},mimes:function(n){return"Поле "+n+" должно иметь действительный тип файла."},min:function(n,e){return"Поле "+n+" должно быть не менее "+e[0]+" символов."},min_value:function(n,e){return"Поле "+n+" должно быть "+e[0]+" или больше."},not_in:function(n){return"Поле "+n+" должно быть допустимым значением."},numeric:function(n){return"Поле "+n+" должно быть числом."},regex:function(n){return"Поле "+n+" имеет ошибочный формат."},required:function(n){return"Поле "+n+" обязательно для заполнения."},size:function(n,e){return"Поле "+n+" должно быть меньше, чем "+e[0]+" KB."},url:function(n){return"Поле "+n+" имеет ошибочный формат URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(n),n});
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n.__vee_validate_locale__ru=n.__vee_validate_locale__ru||{},n.__vee_validate_locale__ru.js=e())}(this,function(){"use strict";var n={name:"ru",messages:{after:function(n,e){return"В поле "+n+" должна быть дата после "+e[0]+"."},alpha_dash:function(n){return"Поле "+n+" может содержать только буквы, цифры и дефис."},alpha_num:function(n){return"Поле "+n+" может содержать только буквы и цифры."},alpha_spaces:function(n){return"Поле "+n+" может содержать только буквы и пробелы."},alpha:function(n){return"Поле "+n+" может содержать только буквы."},before:function(n,e){return"В поле "+n+" должна быть дата до "+e[0]+"."},between:function(n,e){return"Поле "+n+" должно быть между "+e[0]+" и "+e[1]+"."},confirmed:function(n,e){return"Поле "+n+" не совпадает с "+e[0]+"."},date_between:function(n,e){return"Поле "+n+" должно быть между "+e[0]+" и "+e[1]+"."},date_format:function(n,e){return"Поле "+n+" должно быть в формате "+e[0]+"."},decimal:function(n,e){void 0===e&&(e=["*"]);var t=e[0];return"Поле "+n+" должно быть числовым и может содержать "+("*"===t?"":t)+" десятичных числа."},digits:function(n,e){return"Поле "+n+" должно быть числовым и точно содержать "+e[0]+" цифры."},dimensions:function(n,e){return"Поле "+n+" должно быть "+e[0]+" пикселей на "+e[1]+" пикселей."},email:function(n){return"Поле "+n+" должно быть действительным электронным адресом."},ext:function(n,e){return"Поле "+n+" должно быть действительным файлом. ("+e.slice(0)+")"},image:function(n){return"Поле "+n+" должно быть изображением."},in:function(n){return"Поле "+n+" должно быть допустимым значением."},ip:function(n){return"Поле "+n+" должно быть действительным IP-адресом."},max:function(n,e){return"Поле "+n+" не может быть более "+e[0]+" символов."},max_value:function(n,e){return"Поле "+n+" должно быть "+e[0]+" или менее."},mimes:function(n,e){return"Поле "+n+" должно иметь действительный тип файла. ("+e.slice(0)+")"},min:function(n,e){return"Поле "+n+" должно быть не менее "+e[0]+" символов."},min_value:function(n,e){return"Поле "+n+" должно быть "+e[0]+" или больше."},not_in:function(n){return"Поле "+n+" должно быть допустимым значением."},numeric:function(n){return"Поле "+n+" должно быть числом."},regex:function(n){return"Поле "+n+" имеет ошибочный формат."},required:function(n){return"Поле "+n+" обязательно для заполнения."},size:function(n,e){return"Поле "+n+" должно быть меньше, чем "+e[0]+" KB."},url:function(n){return"Поле "+n+" имеет ошибочный формат URL."}},attributes:{}};return"undefined"!=typeof VeeValidate&&VeeValidate&&(VeeValidate.Validator,!0)&&VeeValidate.Validator.addLocale(n),n});

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VeeValidate=t()}(this,function(){"use strict";function e(e){return e&&e.__esModule?e.default:e}function t(e,t){return t={exports:{}},e(t,t.exports),t.exports}var i={en:/^[A-Z]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[A-ZÆØÅ]*$/i,de:/^[A-ZÄÖÜß]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,nl:/^[A-ZÉËÏÓÖÜ]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[А-ЯЁ]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[A-ZČĆŽŠĐ]*$/i,tr:/^[A-ZÇĞİıÖŞÜ]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/},n={en:/^[A-Z\s]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\s]*$/i,da:/^[A-ZÆØÅ\s]*$/i,de:/^[A-ZÄÖÜß\s]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ\s]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ\s]*$/i,nl:/^[A-ZÉËÏÓÖÜ\s]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ\s]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ\s]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\s]*$/i,ru:/^[А-ЯЁ\s]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\s]*$/i,sr:/^[A-ZČĆŽŠĐ\s]*$/i,tr:/^[A-ZÇĞİıÖŞÜ\s]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ\s]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/},r={en:/^[0-9A-Z]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[0-9A-ZÆØÅ]$/i,de:/^[0-9A-ZÄÖÜß]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[0-9А-ЯЁ]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[0-9A-ZČĆŽŠĐ]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/},s={en:/^[0-9A-Z_-]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,da:/^[0-9A-ZÆØÅ_-]*$/i,de:/^[0-9A-ZÄÖÜß_-]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ_-]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,ru:/^[0-9А-ЯЁ_-]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,sr:/^[0-9A-ZČĆŽŠĐ_-]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/},o=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!("string"==typeof e||e instanceof String))throw new TypeError("This library (validator.js) validates strings only")},e.exports=t.default}),a=e(t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,i.default)(e);var t=e.replace(/[- ]+/g,"");if(!n.test(t))return!1;for(var r=0,s=void 0,o=void 0,a=void 0,l=t.length-1;l>=0;l--)s=t.substring(l,l+1),o=parseInt(s,10),r+=a&&(o*=2)>=10?o%10+1:o,a=!a;return!(r%10!=0||!t)};var i=function(e){return e&&e.__esModule?e:{default:e}}(o),n=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|62[0-9]{14})$/;e.exports=t.default})),l=function(e,t,i){var n=window.URL||window.webkitURL;return new Promise(function(r){var s=new Image;s.onerror=function(){return r({valid:!1})},s.onload=function(){return r({valid:s.width===Number(t)&&s.height===Number(i)})},s.src=n.createObjectURL(e)})},u=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];for(var i in t)void 0===e[i]&&(e[i]=t[i]);return e},e.exports=t.default}),c=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=function(e,t){(0,n.default)(e);var r=void 0,s=void 0;"object"===(void 0===t?"undefined":i(t))?(r=t.min||0,s=t.max):(r=arguments[1],s=arguments[2]);var o=encodeURI(e).split(/%..|./).length-1;return o>=r&&(void 0===s||o<=s)};var n=function(e){return e&&e.__esModule?e:{default:e}}(o);e.exports=t.default}),f=t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e),(t=(0,r.default)(t,s)).allow_trailing_dot&&"."===e[e.length-1]&&(e=e.substring(0,e.length-1));var i=e.split(".");if(t.require_tld){var o=i.pop();if(!i.length||!/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(o))return!1;if(/[\s\u2002-\u200B\u202F\u205F\u3000\uFEFF\uDB40\uDC20]/.test(o))return!1}for(var a,l=0;l<i.length;l++){if(a=i[l],t.allow_underscores&&(a=a.replace(/_/g,"")),!/^[a-z\u00a1-\uffff0-9-]+$/i.test(a))return!1;if(/[\uff01-\uff5e]/.test(a))return!1;if("-"===a[0]||"-"===a[a.length-1])return!1}return!0};var n=i(o),r=i(u),s={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1};e.exports=t.default}),d=e(t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),(t=(0,r.default)(t,l)).require_display_name||t.allow_display_name){var i=e.match(d);if(i)e=i[1];else if(t.require_display_name)return!1}var o=e.split("@"),u=o.pop(),c=o.join("@"),f=u.toLowerCase();if("gmail.com"!==f&&"googlemail.com"!==f||(c=c.replace(/\./g,"").toLowerCase()),!(0,s.default)(c,{max:64})||!(0,s.default)(u,{max:254}))return!1;if(!(0,a.default)(u,{require_tld:t.require_tld}))return!1;if('"'===c[0])return c=c.slice(1,c.length-1),t.allow_utf8_local_part?m.test(c):p.test(c);for(var g=t.allow_utf8_local_part?v:h,_=c.split("."),y=0;y<_.length;y++)if(!g.test(_[y]))return!1;return!0};var n=i(o),r=i(u),s=i(c),a=i(f),l={allow_display_name:!1,require_display_name:!1,allow_utf8_local_part:!0,require_tld:!0},d=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\s]*<(.+)>$/i,h=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,p=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,v=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,m=/^([\s\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]))*$/i;e.exports=t.default})),h=t(function(e,t){function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,n.default)(e),!(t=String(t)))return i(e,4)||i(e,6);if("4"===t)return!!r.test(e)&&e.split(".").sort(function(e,t){return e-t})[3]<=255;if("6"===t){var o=e.split(":"),a=!1,l=i(o[o.length-1],4),u=l?7:8;if(o.length>u)return!1;if("::"===e)return!0;"::"===e.substr(0,2)?(o.shift(),o.shift(),a=!0):"::"===e.substr(e.length-2)&&(o.pop(),o.pop(),a=!0);for(var c=0;c<o.length;++c)if(""===o[c]&&c>0&&c<o.length-1){if(a)return!1;a=!0}else if(l&&c===o.length-1);else if(!s.test(o[c]))return!1;return a?o.length>=1:o.length===u}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=i;var n=function(e){return e&&e.__esModule?e:{default:e}}(o),r=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,s=/^[0-9A-F]{1,4}$/i;e.exports=t.default}),p=e(h),v=e(t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}function n(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function r(e,t){for(var i=0;i<t.length;i++){var r=t[i];if(e===r||n(r)&&r.test(e))return!0}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,s.default)(e),!e||e.length>=2083||/[\s<>]/.test(e))return!1;if(0===e.indexOf("mailto:"))return!1;t=(0,c.default)(t,d);var i=void 0,n=void 0,o=void 0,u=void 0,f=void 0,h=void 0,v=void 0,m=void 0;if(v=e.split("#"),e=v.shift(),v=e.split("?"),e=v.shift(),(v=e.split("://")).length>1){if(i=v.shift(),t.require_valid_protocol&&-1===t.protocols.indexOf(i))return!1}else{if(t.require_protocol)return!1;t.allow_protocol_relative_urls&&"//"===e.substr(0,2)&&(v[0]=e.substr(2))}if(e=v.join("://"),v=e.split("/"),""===(e=v.shift())&&!t.require_host)return!0;if((v=e.split("@")).length>1&&(n=v.shift()).indexOf(":")>=0&&n.split(":").length>2)return!1;h=null,m=null;var g=(u=v.join("@")).match(p);return g?(o="",m=g[1],h=g[2]||null):(o=(v=u.split(":")).shift(),v.length&&(h=v.join(":"))),!(null!==h&&(f=parseInt(h,10),!/^[0-9]+$/.test(h)||f<=0||f>65535)||!((0,l.default)(o)||(0,a.default)(o,t)||m&&(0,l.default)(m,6)||"localhost"===o)||(o=o||m,t.host_whitelist&&!r(o,t.host_whitelist)||t.host_blacklist&&r(o,t.host_blacklist)))};var s=i(o),a=i(f),l=i(h),c=i(u),d={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_host:!0,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1},p=/^\[([^\]]+)\](?::([0-9]+))?$/;e.exports=t.default})),m={alpha_dash:function(e,t){void 0===t&&(t=[null]);var i=t[0];return i?(s[i]||s.en).test(e):Object.keys(s).some(function(t){return s[t].test(e)})},alpha_num:function(e,t){void 0===t&&(t=[null]);var i=t[0];return i?(r[i]||r.en).test(e):Object.keys(r).some(function(t){return r[t].test(e)})},alpha_spaces:function(e,t){void 0===t&&(t=[null]);var i=t[0];return i?(n[i]||n.en).test(e):Object.keys(n).some(function(t){return n[t].test(e)})},alpha:function(e,t){void 0===t&&(t=[null]);var n=t[0];return n?(i[n]||i.en).test(e):Object.keys(i).some(function(t){return i[t].test(e)})},between:function(e,t){var i=t[0],n=t[1];return Number(i)<=e&&Number(n)>=e},confirmed:function(e,t,i){var n=t[0],r=n?document.querySelector("input[name='"+n+"']"):document.querySelector("input[name='"+i+"_confirmation']");return r||(r=n?document.querySelector("input[data-vv-name='"+n+"']"):document.querySelector("input[data-vv-name='"+i+"_confirmation']")),!(!r||String(e)!==r.value)},credit_card:function(e){return a(String(e))},decimal:function(e,t){var i=Array.isArray(t)?t[0]||"*":"*";if(Array.isArray(e))return!1;if(null===e||void 0===e||""===e)return!0;if(0===Number(i))return/^-?\d*$/.test(e);var n="*"===i?"+":"{1,"+i+"}";if(!new RegExp("^-?\\d*(\\.\\d"+n+")?$").test(e))return!1;var r=parseFloat(e);return r===r},digits:function(e,t){var i=t[0],n=String(e);return/^[0-9]*$/.test(n)&&n.length===Number(i)},dimensions:function(e,t){for(var i=t[0],n=t[1],r=[],s=0;s<e.length;s++){if(!/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(e[s].name))return!1;r.push(e[s])}return Promise.all(r.map(function(e){return l(e,i,n)}))},email:function(e){return d(String(e))},ext:function(e,t){var i=new RegExp(".("+t.join("|")+")$","i");return e.every(function(e){return i.test(e.name)})},image:function(e){return e.every(function(e){return/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(e.name)})},in:function(e,t){return!!t.filter(function(t){return t==e}).length},ip:function(e,t){void 0===t&&(t=[4]);var i=t[0];return p(e,i)},max:function(e,t){var i=t[0];return void 0===e||null===e?i>=0:String(e).length<=i},max_value:function(e,t){var i=t[0];return!Array.isArray(e)&&null!==e&&void 0!==e&&""!==e&&Number(e)<=i},mimes:function(e,t){var i=new RegExp(t.join("|").replace("*",".+")+"$","i");return e.every(function(e){return i.test(e.type)})},min:function(e,t){var i=t[0];return void 0!==e&&null!==e&&String(e).length>=i},min_value:function(e,t){var i=t[0];return!Array.isArray(e)&&null!==e&&void 0!==e&&""!==e&&Number(e)>=i},not_in:function(e,t){return!t.filter(function(t){return t==e}).length},numeric:function(e){return/^[0-9]+$/.test(String(e))},regex:function(e,t){var i=t[0],n=t.slice(1);return i instanceof RegExp?i.test(e):new RegExp(i,n).test(String(e))},required:function(e,t){if(void 0===t&&(t=[!1]),Array.isArray(e))return!!e.length;var i=t[0];return!(!1===e&&i||void 0===e||null===e||!String(e).trim().length)},size:function(e,t){var i=t[0];if(isNaN(i))return!1;for(var n=1024*Number(i),r=0;r<e.length;r++)if(e[r].size>n)return!1;return!0},url:function(e,t){void 0===t&&(t=[!0]);var i=t[0];return v(e,{require_protocol:!!i})}},g=function(){this.errors=[]};g.prototype.add=function(e,t,i,n){void 0===n&&(n="__global__"),this.errors.push({field:e,msg:t,rule:i,scope:n})},g.prototype.all=function(e){return e?this.errors.filter(function(t){return t.scope===e}).map(function(e){return e.msg}):this.errors.map(function(e){return e.msg})},g.prototype.any=function(e){return e?!!this.errors.filter(function(t){return t.scope===e}).length:!!this.errors.length},g.prototype.clear=function(e){var t=this;e||(e="__global__");for(var i=0;i<this.errors.length;++i)(function(t){return t.scope===e})(t.errors[i])&&(t.errors.splice(i,1),--i)},g.prototype.collect=function(e,t,i){if(void 0===i&&(i=!0),!e){var n={};return this.errors.forEach(function(e){n[e.field]||(n[e.field]=[]),n[e.field].push(i?e.msg:e)}),n}return t?this.errors.filter(function(i){return i.field===e&&i.scope===t}).map(function(e){return i?e.msg:e}):this.errors.filter(function(t){return t.field===e}).map(function(e){return i?e.msg:e})},g.prototype.count=function(){return this.errors.length},g.prototype.first=function(e,t){var i=this;void 0===t&&(t="__global__");var n=this._selector(e),r=this._scope(e);if(r){var s=this.first(r.name,r.scope);if(s)return s}if(n)return this.firstByRule(n.name,n.rule,t);for(var o=0;o<this.errors.length;++o)if(i.errors[o].field===e&&i.errors[o].scope===t)return i.errors[o].msg;return null},g.prototype.firstRule=function(e,t){var i=this.collect(e,t,!1);return i.length&&i[0].rule||null},g.prototype.has=function(e,t){return void 0===t&&(t="__global__"),!!this.first(e,t)},g.prototype.firstByRule=function(e,t,i){var n=this.collect(e,i,!1).filter(function(e){return e.rule===t})[0];return n&&n.msg||null},g.prototype.remove=function(e,t){for(var i=this,n=t?function(i){return i.field===e&&i.scope===t}:function(t){return t.field===e&&"__global__"===t.scope},r=0;r<this.errors.length;++r)n(i.errors[r])&&(i.errors.splice(r,1),--r)},g.prototype._selector=function(e){if(e.indexOf(":")>-1){var t=e.split(":");return{name:t[0],rule:t[1]}}return null},g.prototype._scope=function(e){if(e.indexOf(".")>-1){var t=e.split("."),i=t[0];return{name:t[1],scope:i}}return null};var _=function(e,t){return e.getAttribute("data-vv-"+t)},y=function(e){var t=_(e,"scope");return!t&&e.form&&(t=_(e.form,"scope")),t},b=function(e,t,i){if(void 0===i&&(i=void 0),!e||!t)return i;var n=t;return e.split(".").every(function(e){return Object.prototype.hasOwnProperty.call(n,e)||void 0!==n[e]?(n=n[e],!0):(n=i,!1)}),n},$=function(e,t,i){if(void 0===t&&(t=0),void 0===i&&(i=!1),0===t)return e;var n;return function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=i&&!n;clearTimeout(n),n=setTimeout(function(){n=null,i||e.apply(void 0,r)},t),o&&e.apply(void 0,r)}},x=function(e){console.warn("[vee-validate] "+e)},A=function(e){return new Error("[vee-validate] "+e)},F=function(e){return null!==e&&e&&"object"==typeof e&&!Array.isArray(e)},w=function(e){return"function"==typeof e},E=function(e,t){return e.classList?e.classList.contains(t):!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))},L=function(e,t){e.classList?e.classList.add(t):E(e,t)||(e.className+=" "+t)},N=function(e,t){if(e.classList)e.classList.remove(t);else if(E(e,t)){var i=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(i," ")}},j=function(e){if(Array.from)return Array.from(e);for(var t=[],i=e.length,n=0;n<i;n++)t.push(e[n]);return t},O=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];if(Object.assign)return Object.assign.apply(Object,[e].concat(t));if(null==e)throw new TypeError("Cannot convert undefined or null to object");var n=Object(e);return t.forEach(function(e){null!=e&&Object.keys(e).forEach(function(t){n[t]=e[t]})}),n},k=function(e,t){if(F(e)&&(e=Array.from(e)),e.find)return e.find(t);var i;return e.some(function(e){return!!t(e)&&(i=e,!0)}),i},Z=function(e,t,i){return e?"string"==typeof t?t:~["string","object"].indexOf(typeof t.rules)?t.rules:t:_(i,"rules")},S=function(e){return"SELECT"===e.tagName||~["radio","checkbox","file"].indexOf(e.type)?"change":"input"},T=function(e){void 0===e&&(e={}),this.container={},this.merge(e)};T.prototype.hasLocale=function(e){return!!this.container[e]},T.prototype.setDateFormat=function(e,t){this.container[e]||(this.container[e]={}),this.container[e].dateFormat=t},T.prototype.getDateFormat=function(e){if(this.container[e])return this.container[e].dateFormat},T.prototype.getMessage=function(e,t,i){return this.hasMessage(e,t)?this.container[e].messages[t]:i||this._getDefaultMessage(e)},T.prototype.getFieldMessage=function(e,t,i){if(!this.hasLocale(e))return this.getMessage(e,i);var n=this.container[e].custom&&this.container[e].custom[t];return n&&n[i]?n[i]:this.getMessage(e,i)},T.prototype._getDefaultMessage=function(e){return this.hasMessage(e,"_default")?this.container[e].messages._default:this.container.en.messages._default},T.prototype.getAttribute=function(e,t,i){return void 0===i&&(i=""),this.hasAttribute(e,t)?this.container[e].attributes[t]:i},T.prototype.hasMessage=function(e,t){return!!(this.hasLocale(e)&&this.container[e].messages&&this.container[e].messages[t])},T.prototype.hasAttribute=function(e,t){return!!(this.hasLocale(e)&&this.container[e].attributes&&this.container[e].attributes[t])},T.prototype.merge=function(e){this._merge(this.container,e)},T.prototype.setMessage=function(e,t,i){this.hasLocale(e)||(this.container[e]={messages:{},attributes:{}}),this.container[e].messages[t]=i},T.prototype.setAttribute=function(e,t,i){this.hasLocale(e)||(this.container[e]={messages:{},attributes:{}}),this.container[e].attributes[t]=i},T.prototype._merge=function(e,t){var i=this;return F(e)&&F(t)?(Object.keys(t).forEach(function(n){if(F(t[n])){if(!e[n]){O(e,(r={},r[n]={},r));var r}i._merge(e[n],t[n])}else{O(e,(s={},s[n]=t[n],s));var s}}),e):e};var M=function(e){return function(t,i){var n=i[0],r=i[1],s=i[2],o=document.querySelector("input[name='"+n+"']");void 0===s&&(s=r,r=!1);var a=e(t,s,!0),l=e(o?o.value:n,s,!0);return!(!a.isValid()||!l.isValid())&&(a.isAfter(l)||r&&a.isSame(l))}},q=function(e){return function(t,i){var n=i[0],r=i[1],s=i[2],o=document.querySelector("input[name='"+n+"']");void 0===s&&(s=r,r=!1);var a=e(t,s,!0),l=e(o?o.value:n,s,!0);return!(!a.isValid()||!l.isValid())&&(a.isBefore(l)||r&&a.isSame(l))}},D=function(e){return function(t,i){var n=i[0];return e(t,n,!0).isValid()}},B=function(e){return function(t,i){var n,r,s,o="()";if(i.length>3){var a;n=(a=i)[0],r=a[1],o=a[2],s=a[3]}else{var l;n=(l=i)[0],r=l[1],s=l[2]}var u=e(n,s,!0),c=e(r,s,!0),f=e(t,s,!0);return!!(u.isValid()&&c.isValid()&&f.isValid())&&f.isBetween(u,c,"days",o)}},P={make:function(e){return{date_format:D(e),after:M(e),before:q(e),date_between:B(e)}},messages:{after:function(e,t){var i=t[0];return"The "+e+" must be after "+(t[1]?"or equal to ":"")+i+"."},before:function(e,t){var i=t[0];return"The "+e+" must be before "+(t[1]?"or equal to ":"")+i+"."},date_between:function(e,t){return"The "+e+" must be between "+t[0]+" and "+t[1]+"."},date_format:function(e,t){return"The "+e+" must be in the format "+t[0]+"."}},installed:!1},R="en",z=!0,V=new T({en:{messages:{_default:function(e){return"The "+e+" value is not valid."},alpha_dash:function(e){return"The "+e+" field may contain alpha-numeric characters as well as dashes and underscores."},alpha_num:function(e){return"The "+e+" field may only contain alpha-numeric characters."},alpha_spaces:function(e){return"The "+e+" field may only contain alphabetic characters as well as spaces."},alpha:function(e){return"The "+e+" field may only contain alphabetic characters."},between:function(e,t){return"The "+e+" field must be between "+t[0]+" and "+t[1]+"."},confirmed:function(e){return"The "+e+" confirmation does not match."},credit_card:function(e){return"The "+e+" field is invalid."},decimal:function(e,t){void 0===t&&(t=["*"]);var i=t[0];return"The "+e+" field must be numeric and may contain "+(i&&"*"!==i?i:"")+" decimal points."},digits:function(e,t){return"The "+e+" field must be numeric and exactly contain "+t[0]+" digits."},dimensions:function(e,t){return"The "+e+" field must be "+t[0]+" pixels by "+t[1]+" pixels."},email:function(e){return"The "+e+" field must be a valid email."},ext:function(e){return"The "+e+" field must be a valid file."},image:function(e){return"The "+e+" field must be an image."},in:function(e){return"The "+e+" field must be a valid value."},ip:function(e){return"The "+e+" field must be a valid ip address."},max:function(e,t){return"The "+e+" field may not be greater than "+t[0]+" characters."},max_value:function(e,t){return"The "+e+" field must be "+t[0]+" or less."},mimes:function(e){return"The "+e+" field must have a valid file type."},min:function(e,t){return"The "+e+" field must be at least "+t[0]+" characters."},min_value:function(e,t){return"The "+e+" field must be "+t[0]+" or more."},not_in:function(e){return"The "+e+" field must be a valid value."},numeric:function(e){return"The "+e+" field may only contain numeric characters."},regex:function(e){return"The "+e+" field format is invalid."},required:function(e){return"The "+e+" field is required."},size:function(e,t){return"The "+e+" field must be less than "+t[0]+" KB."},url:function(e){return"The "+e+" field is not a valid URL."}},attributes:{},custom:{}}}),C=function(e,t){void 0===t&&(t={vm:null,fastExit:!0}),this.strictMode=z,this.$scopes={__global__:{}},this._createFields(e),this.errorBag=new g,this.fieldBag={},this.paused=!1,this.fastExit=t.fastExit||!1,this.$vm=t.vm,"function"==typeof moment&&this.installDateTimeValidators(moment)},I={dictionary:{},locale:{},rules:{}},U={dictionary:{}};I.dictionary.get=function(){return V},U.dictionary.get=function(){return V},I.locale.get=function(){return R},I.rules.get=function(){return m},C._merge=function(e,t){w(t)?m[e]=t:(m[e]=t.validate,w(t.getMessage)&&V.setMessage(R,e,t.getMessage),t.messages&&V.merge(Object.keys(t.messages).reduce(function(i,n){var r=i;r[n]={messages:(s={},s[e]=t.messages[n],s)};var s;return r},{})))},C._guardExtend=function(e,t){if(!w(t)){if(!w(t.validate))throw A("Extension Error: The validator '"+e+"' must be a function or have a 'validate' method.");if(!w(t.getMessage)&&!F(t.messages))throw A("Extension Error: The validator '"+e+"' must have a 'getMessage' method or have a 'messages' object.")}},C.create=function(e,t){return new C(e,t)},C.extend=function(e,t){C._guardExtend(e,t),C._merge(e,t)},C.installDateTimeValidators=function(e){if("function"!=typeof e)return x("To use the date-time validators you must provide moment reference."),!1;if(P.installed)return!0;var t=P.make(e);return Object.keys(t).forEach(function(e){C.extend(e,t[e])}),C.updateDictionary({en:{messages:P.messages}}),P.installed=!0,!0},C.remove=function(e){delete m[e]},C.setLocale=function(e){void 0===e&&(e="en"),V.hasLocale(e)||x("You are setting the validator locale to a locale that is not defined in the dicitionary. English messages may still be generated."),R=e},C.setStrictMode=function(e){void 0===e&&(e=!0),z=e},C.updateDictionary=function(e){V.merge(e)},C.addLocale=function(e){if(e.name){this.updateDictionary((t={},t[e.name]=e,t));var t}else x("Your locale must have a name property")},C.prototype.addLocale=function(e){C.addLocale(e)},C.prototype._resolveValuesFromGetters=function(e){var t=this;if(void 0===e&&(e="__global__"),!this.$scopes[e])return{};var i={};return Object.keys(this.$scopes[e]).forEach(function(n){var r=t.$scopes[e][n],s=r.getter,o=r.context,a=r.scope;if(s&&o&&("__global__"===e||a===e)){var l=o();if(l&&l.disabled)return;i[n]={value:s(l),scope:a}}}),i},C.prototype._createFields=function(e){var t=this;e&&Object.keys(e).forEach(function(i){t._createField(i,e[i])})},C.prototype._createField=function(e,t,i){void 0===i&&(i="__global__"),this.$scopes[i]||(this.$scopes[i]={}),this.$scopes[i][e]||(this.$scopes[i][e]={});var n=this.$scopes[i][e];n.name=e,n.validations=this._normalizeRules(e,t,i,n),n.required=this._isRequired(n)},C.prototype._normalizeRules=function(e,t,i,n){return t?"string"==typeof t?this._normalizeString(t,n):F(t)?this._normalizeObject(t,n):(x("Your checks for '"+i+"."+e+"' must be either a string or an object."),{}):{}},C.prototype._isRequired=function(e){return!(!e.validations||!e.validations.required)},C.prototype._normalizeObject=function(e,t){void 0===t&&(t=null);var i={};return Object.keys(e).forEach(function(n){var r=[];r=!0===e[n]?[]:Array.isArray(e[n])?e[n]:[e[n]],"required"===n&&(r=[t&&t.invalidateFalse]),!1===e[n]?delete i[n]:i[n]=r}),i},C.prototype._getDateFormat=function(e){var t=null;return e.date_format&&Array.isArray(e.date_format)&&(t=e.date_format[0]),t||this.dictionary.getDateFormat(this.locale)},C.prototype._isADateRule=function(e){return!!~["after","before","date_between","date_format"].indexOf(e)},C.prototype._containsValidation=function(e,t){return!!~e.indexOf(t)},C.prototype._normalizeString=function(e,t){var i=this;void 0===t&&(t=null);var n={};return e.split("|").forEach(function(e){var r=i._parseRule(e);r.name&&(n[r.name]=r.params,"required"===r.name&&(n.required=[t&&t.invalidateFalse]))}),n},C.prototype._parseRule=function(e){var t=[],i=e.split(":")[0];return~e.indexOf(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:i,params:t}},C.prototype._formatErrorMessage=function(e,t,i){void 0===i&&(i={});var n=this._getFieldDisplayName(e),r=this._getLocalizedParams(t,e.scope);if(!this.dictionary.hasLocale(R)){var s=this.dictionary.getFieldMessage("en",e.name,t.name);return w(s)?s(n,r,i):s}var o=this.dictionary.getFieldMessage(R,e.name,t.name);return w(o)?o(n,r,i):o},C.prototype._getLocalizedParams=function(e,t){return void 0===t&&(t="__global__"),~["after","before","confirmed"].indexOf(e.name)&&e.params&&e.params[0]?[this.dictionary.getAttribute(R,e.params[0],e.params[0])]:e.params},C.prototype._getFieldDisplayName=function(e){return e.as||this.dictionary.getAttribute(R,e.name,e.name)},C.prototype._test=function(e,t,i){var n=this,r=m[i.name];if(!r||"function"!=typeof r)throw A("No such validator '"+i.name+"' exists.");if(P.installed&&this._isADateRule(i.name)){var s=this._getDateFormat(e.validations);i.params=(Array.isArray(i.params)?j(i.params):[]).concat([s])}var o=r(t,i.params,e.name);return w(o.then)?o.then(function(t){var r=!0,s={};return Array.isArray(t)?r=t.every(function(e){return F(e)?e.valid:e}):(r=F(t)?t.valid:t,s=t.data),r||n.errorBag.add(e.name,n._formatErrorMessage(e,i,s),i.name,e.scope),r}):(F(o)||(o={valid:o,data:{}}),o.valid||this.errorBag.add(e.name,this._formatErrorMessage(e,i,o.data),i.name,e.scope),o.valid)},C.prototype.on=function(e,t,i,n){if(!t)throw A("Cannot add a listener for non-existent field "+t+".");if(!w(n))throw A("The "+e+" callback for field "+t+" is not callable.");this.$scopes[i][t].events[e]=n},C.prototype.off=function(e,t,i){t||x("Cannot remove a listener for non-existent field "+t+"."),this.$scopes[i][t].events[e]=void 0},C.prototype._assignFlags=function(e){e.flags={untouched:!0,touched:!1,dirty:!1,pristine:!0,valid:null,invalid:null,validated:!1,required:e.required,pending:!1};var t={};if(t[e.name]=e.flags,"__global__"!==e.scope){var i=O({},this.fieldBag["$"+e.scope],t);this.fieldBag=O({},this.fieldBag,(n={},n["$"+e.scope]=i,n));var n}else this.fieldBag=O({},this.fieldBag,t)},C.prototype.attach=function(e,t,i){void 0===i&&(i={}),i.scope=i.scope||"__global__",this.updateField(e,t,i);var n=this.$scopes[i.scope][e];n.scope=i.scope,n.as=i.prettyName,n.getter=i.getter,n.invalidateFalse=i.invalidateFalse,n.context=i.context,n.listeners=i.listeners||{detach:function(){}},n.el=n.listeners.el,n.events={},this._assignFlags(n),n.listeners.classes&&n.listeners.classes.attach(n),this._setAriaRequiredAttribute(n),this._setAriaValidAttribute(n,!0),i.initial&&this.validate(e,n.getter(n.context()),n.scope).catch(function(){})},C.prototype.flag=function(e,t){var i=this._resolveField(e);i&&(Object.keys(i.flags).forEach(function(e){i.flags[e]=void 0!==t[e]?t[e]:i.flags[e]}),i.listeners&&i.listeners.classes&&i.listeners.classes.sync())},C.prototype.append=function(e,t,i){void 0===i&&(i={}),i.scope=i.scope||"__global__",this.$scopes[i.scope]&&this.$scopes[i.scope][e]||this.attach(e,t,i);var n=this.$scopes[i.scope][e],r=this._normalizeRules(e,t,i.scope);Object.keys(r).forEach(function(e){n.validations[e]=r[e]})},C.prototype._moveFieldScope=function(e,t){this.$scopes[t]||(this.$scopes[t]={}),this.$scopes[t][e.name]=e,delete this.$scopes[e.scope][e.name],e.scope=t,e.el&&w(e.el.setAttribute)&&e.el.setAttribute("data-vv-scope",e.scope)},C.prototype.updateField=function(e,t,i){void 0===i&&(i={});var n=b(i.oldScope+"."+e,this.$scopes,null),r=n?JSON.stringify(n.validations):"";this._createField(e,t,i.scope,n),((n=b(i.scope+"."+e,this.$scopes,null))?JSON.stringify(n.validations):"")!==r&&this.errorBag.remove(e,i.scope)},C.prototype.clean=function(){var e=this;this.$vm&&w(this.$vm.$nextTick)&&this.$vm.$nextTick(function(){e.errorBag.clear()})},C.prototype.detach=function(e,t){void 0===t&&(t="__global__"),this.$scopes[t]&&this.$scopes[t][e]&&(this.$scopes[t][e].listeners&&this.$scopes[t][e].listeners.detach(),this.errorBag.remove(e,t),delete this.$scopes[t][e])},C.prototype.extend=function(e,t){C.extend(e,t)},C.prototype.getErrors=function(){return this.errorBag},C.prototype.installDateTimeValidators=function(e){C.installDateTimeValidators(e)},C.prototype.remove=function(e){C.remove(e)},C.prototype.setLocale=function(e){this.dictionary.hasLocale(e)||x("You are setting the validator locale to a locale that is not defined in the dicitionary. English messages may still be generated."),R=e},C.prototype.setStrictMode=function(e){void 0===e&&(e=!0),this.strictMode=e},C.prototype.updateDictionary=function(e){C.updateDictionary(e)},C.prototype.addScope=function(e){e&&!this.$scopes[e]&&(this.$scopes[e]={})},C.prototype._resolveField=function(e,t){if(e&&e.indexOf(".")>-1&&!this.$scopes.__global__[e]){var i;t=(i=e.split("."))[0],e=i[1]}return t||(t="__global__"),this.$scopes[t]?this.$scopes[t][e]:null},C.prototype._handleFieldNotFound=function(e,t){if(!this.strictMode)return Promise.resolve(!0);throw A('Validating a non-existant field: "'+("__global__"===t?e:t+"."+e)+'". Use "attach()" first.')},C.prototype._validate=function(e,t){var i=this;if(!e.required&&~[null,void 0,""].indexOf(t))return Promise.resolve(!0);var n=[],r=!0,s=Object.keys(e.validations)[this.fastExit?"every":"some"](function(s){var o=i._test(e,t,{name:s,params:e.validations[s]});return w(o.then)?(n.push(o),!0):(r=r&&o,o)});return Promise.all(n).then(function(e){return s&&r&&e.every(function(e){return e})})},C.prototype.validate=function(e,t,i){var n=this;if(void 0===i&&(i="__global__"),this.paused)return Promise.resolve(!0);var r=this._resolveField(e,i);return r?(this.errorBag.remove(r.name,r.scope),r.flags&&(r.flags.pending=!0),this._validate(r,t).then(function(e){return n._setAriaValidAttribute(r,e),r.flags&&(r.flags.pending=!1,r.flags.valid=e,r.flags.invalid=!e,r.flags.pending=!1,r.flags.validated=!0),r.events&&w(r.events.after)&&r.events.after({valid:e}),e})):this._handleFieldNotFound(e,i)},C.prototype._setAriaValidAttribute=function(e,t){e.el&&!e.listeners.component&&e.el.setAttribute("aria-invalid",!t)},C.prototype._setAriaRequiredAttribute=function(e){e.el&&!e.listeners.component&&e.el.setAttribute("aria-required",!!e.required)},C.prototype.pause=function(){return this.paused=!0,this},C.prototype.resume=function(){return this.paused=!1,this},C.prototype.validateAll=function(e,t){var i=this;if(void 0===t&&(t="__global__"),this.paused)return Promise.resolve(!0);var n;e&&"string"!=typeof e?(n={},Object.keys(e).forEach(function(i){n[i]={value:e[i],scope:t}})):(this.errorBag.clear(e),n=this._resolveValuesFromGetters(e));var r=Object.keys(n).map(function(e){return i.validate(e,n[e].value,n[e].scope)});return Promise.all(r).then(function(e){return e.every(function(e){return e})})},C.prototype.validateScopes=function(){var e=this;return this.paused?Promise.resolve(!0):Promise.all(Object.keys(this.$scopes).map(function(t){return e.validateAll(t)})).then(function(e){return e.every(function(e){return e})})},Object.defineProperties(C.prototype,I),Object.defineProperties(C,U);var G=function(e){return!!e&&(!(!Array.isArray(e)||!~e.indexOf("$validator"))||!(!F(e)||!e.$validator))},J=function(e,t){return new C(null,{init:!1,vm:e,fastExit:t.fastExit})},Y=function(e,t){var i={};return i.provide=function(){return this.$validator?{$validator:this.$validator}:{}},i.beforeCreate=function(){!this.$options.$validates&&this.$parent||(this.$validator=J(this,t));var i=G(this.$options.inject);this.$validator||!t.inject||i||(this.$validator=J(this,t)),(i||this.$validator)&&(!i&&this.$validator&&(e.util.defineReactive(this.$validator,"errorBag",this.$validator.errorBag),e.util.defineReactive(this.$validator,"fieldBag",this.$validator.fieldBag)),this.$options.computed||(this.$options.computed={}),this.$options.computed[t.errorBagName]=function(){return this.$validator.errorBag},this.$options.computed[t.fieldsBagName]=function(){return this.$validator.fieldBag})},i},W={touched:"touched",untouched:"untouched",valid:"valid",invalid:"invalid",pristine:"pristine",dirty:"dirty"},K=function(e,t,i){void 0===i&&(i={}),this.el=e,this.validator=t,this.enabled=i.enableAutoClasses,this.classNames=O({},W,i.classNames||{}),this.component=i.component,this.listeners={}};K.prototype.reset=function(){this.detach(),this.remove(this.classNames.dirty),this.remove(this.classNames.touched),this.remove(this.classNames.valid),this.remove(this.classNames.invalid),this.attach(this.field)},K.prototype.sync=function(){this.addInteractionListeners(),this.enabled&&(this.toggle(this.classNames.dirty,this.field.flags.dirty),this.toggle(this.classNames.pristine,this.field.flags.pristine),this.toggle(this.classNames.valid,this.field.flags.valid),this.toggle(this.classNames.invalid,this.field.flags.invalid),this.toggle(this.classNames.touched,this.field.flags.touched),this.toggle(this.classNames.untouched,this.field.flags.untouched))},K.prototype.addFocusListener=function(){var e=this;this.listeners.focus=function(){e.remove(e.classNames.untouched),e.add(e.classNames.touched),e.field.flags.touched=!0,e.field.flags.untouched=!1,e.component||e.el.removeEventListener("focus",e.listeners.focus),e.listeners.focus=null},this.component?this.component.$once("focus",this.listeners.focus):this.el.addEventListener("focus",this.listeners.focus)},K.prototype.addInputListener=function(){var e=this,t=S(this.el);this.listeners.input=function(){e.remove(e.classNames.pristine),e.add(e.classNames.dirty),e.field.flags.dirty=!0,e.field.flags.pristine=!1,e.component||e.el.removeEventListener(t,e.listeners.input),e.listeners.input=null},this.component?this.component.$once("input",this.listeners.input):this.el.addEventListener(t,this.listeners.input)},K.prototype.addInteractionListeners=function(){this.listeners.focus||this.addFocusListener(),this.listeners.input||this.addInputListener()},K.prototype.attach=function(e){var t=this;this.field=e,this.add(this.classNames.pristine),this.add(this.classNames.untouched),this.addInteractionListeners(),this.listeners.after=function(e){t.remove(e.valid?t.classNames.invalid:t.classNames.valid),t.add(e.valid?t.classNames.valid:t.classNames.invalid)},this.validator.on("after",this.field.name,this.field.scope,this.listeners.after)},K.prototype.detach=function(){this.field&&(this.component?(this.component.$off("input",this.listeners.input),this.component.$off("focus",this.listeners.focus)):(this.el.removeEventListener("focus",this.listeners.focus),this.el.removeEventListener("input",this.listeners.input)),this.validator.off("after",this.field.name,this.field.scope))},K.prototype.add=function(e){this.enabled&&L(this.el,e)},K.prototype.remove=function(e){this.enabled&&N(this.el,e)},K.prototype.toggle=function(e,t){t?this.add(e):this.remove(e)};var H={locale:"en",delay:0,errorBagName:"errors",dictionary:null,strict:!0,fieldsBagName:"fields",enableAutoClasses:!1,classNames:{},events:"input|blur",inject:!0,fastExit:!0},Q=function(e,t,i,n){this.unwatch=void 0,this.callbacks=[],this.el=e,this.scope=(F(t.value)?t.value.scope:y(e))||"__global__",this.binding=t,this.vm=i.context,this.component=i.child,this.options=O({},H,n),this.fieldName=this._resolveFieldName(),this.model=this._resolveModel(i.data),this.classes=new K(e,this.vm.$validator,{component:this.component,enableAutoClasses:n.enableAutoClasses,classNames:n.classNames})};Q.prototype._resolveModel=function(e){if(this.binding.arg)return{watchable:!0,expression:this.binding.arg,lazy:!1};if(F(this.binding.value)&&this.binding.value.arg)return{watchable:!0,expression:this.binding.value.arg,lazy:!1};var t={watchable:!1,expression:null,lazy:!1},i=e.model||k(e.directives,function(e){return"model"===e.name});return i?(t.expression=i.expression,t.watchable=/^[a-z_]+[0-9]*(\w*\.[a-z_]\w*)*$/i.test(i.expression)&&this._isExistingPath(i.expression),t.lazy=!!i.modifiers&&i.modifiers.lazy,t):t},Q.prototype._isExistingPath=function(e){var t=this.vm;return e.split(".").every(function(e){return!!Object.prototype.hasOwnProperty.call(t,e)&&(t=t[e],!0)})},Q.prototype._resolveFieldName=function(){return this.component?_(this.el,"name")||this.component.name:_(this.el,"name")||this.el.name},Q.prototype._hasFieldDependency=function(e){var t=this,i=!1;return!!e&&(F(e)?(Object.keys(e).forEach(function(t){if(/confirmed|after|before/.test(t))return i=e[t].split(",")[0],!1}),i):(e.split("|").every(function(e){return/\b(confirmed|after|before):/.test(e)?(i=e.split(":")[1],!1):!/\b(confirmed)/.test(e)||(i=t.fieldName+"_confirmation",!1)}),i))},Q.prototype._inputListener=function(){return this._validate(this.el.value)},Q.prototype._fileListener=function(){var e=this;return this._validate(j(this.el.files)).then(function(t){!t&&e.binding.modifiers.reject&&(e.el.value="")})},Q.prototype._radioListener=function(){var e=document.querySelector('input[name="'+this.el.name+'"]:checked');return this._validate(e?e.value:null)},Q.prototype._checkboxListener=function(){var e=this,t=document.querySelectorAll('input[name="'+this.el.name+'"]:checked');t&&t.length?j(t).forEach(function(t){e._validate(t.value)}):this._validate(null)},Q.prototype._validate=function(e){return this.component&&this.component.disabled||this.el.disabled?Promise.resolve(!0):this.vm.$validator.validate(this.fieldName,e,this.scope||y(this.el))},Q.prototype._getScopedListener=function(e){var t=this;return function(i){(!i||i===t.scope||i instanceof window.Event)&&e()}},Q.prototype._attachValidatorEvent=function(){var e=this,t=this._getScopedListener(this._getSuitableListener().listener.bind(this)),i=this._hasFieldDependency(Z(this.binding.expression,this.binding.value,this.el));i&&this.vm.$nextTick(function(){var n=document.querySelector("input[name='"+i+"']");n?(_(e.el,"validate-on")||e.options.events).split("|").forEach(function(i){n.addEventListener(i,t,!1),e.callbacks.push({name:i,listener:t,el:n})}):x("Cannot find target field, no additional listeners were attached.")})},Q.prototype._getModeledListener=function(){var e=this;return this.model.watchable?function(){e._validate(b(e.model.expression,e.vm))}:null},Q.prototype._getSuitableListener=function(){var e,t={input:this.model.lazy?"change":"input",blur:"blur"};if("SELECT"===this.el.tagName)t.input="change",e={names:["change","blur"],listener:this._getModeledListener()||this._inputListener};else switch(this.el.type){case"file":t.input="change",t.blur=null,e={names:["change"],listener:this._fileListener};break;case"radio":t.input="change",t.blur=null,e={names:["change"],listener:this._getModeledListener()||this._radioListener};break;case"checkbox":t.input="change",t.blur=null,e={names:["change"],listener:this._getModeledListener()||this._checkboxListener};break;default:e={names:["input","blur"],listener:this._getModeledListener()||this._inputListener}}var i=_(this.el,"validate-on")||this.options.events;return e.names=i.split("|").filter(function(e){return null!==t[e]}).map(function(e){return t[e]||e}),e},Q.prototype._attachComponentListeners=function(){var e=this;this.componentListener=$(function(t){e._validate(t)},_(this.el,"delay")||this.options.delay),(_(this.el,"validate-on")||this.options.events).split("|").forEach(function(t){t&&("input"===t?e.component.$on("input",e.componentListener):"blur"===t?e.component.$on("blur",e.componentListener):e.component.$on(t,e.componentListener),e.componentPropUnwatch=e.component.$watch("value",e.componentListener))})},Q.prototype._attachFieldListeners=function(){var e=this;if(this.component)this._attachComponentListeners();else{var t=this._getSuitableListener(),i=$(t.listener.bind(this),_(this.el,"delay")||this.options.delay);~["radio","checkbox"].indexOf(this.el.type)?this.vm.$nextTick(function(){var n=document.querySelectorAll('input[name="'+e.el.name+'"]');j(n).forEach(function(n){t.names.forEach(function(t){n.addEventListener(t,i,!1),e.callbacks.push({name:t,listener:i,el:n})})})}):t.names.forEach(function(t){e.el.addEventListener(t,i,!1),e.callbacks.push({name:t,listener:i,el:e.el})})}},Q.prototype._resolveValueGetter=function(){var e=this;if(this.model.watchable)return{context:function(){return e.vm},getter:function(t){return b(e.model.expression,t)}};if(this.component)return{context:function(){return e.component},getter:function(t){var i=_(e.el,"value-path");return i?b(i,e.component):t.value}};switch(this.el.type){case"checkbox":return{context:function(){return document.querySelectorAll('input[name="'+e.el.name+'"]:checked')},getter:function(e){return e&&e.length?j(e).map(function(e){return e.value}):null}};case"radio":return{context:function(){return document.querySelector('input[name="'+e.el.name+'"]:checked')},getter:function(e){return e&&e.value}};case"file":return{context:function(){return e.el},getter:function(e){return j(e.files)}};default:return{context:function(){return e.el},getter:function(e){return e.value}}}},Q.prototype._attachModelWatcher=function(e){var t=this,i=_(this.el,"validate-on")||this.options.events,n=$(this._getSuitableListener().listener.bind(this),_(this.el,"delay")||this.options.delay);i.split("|").forEach(function(i){if(~["input","change"].indexOf(i)){var r=$(function(e){t.vm.$validator.validate(t.fieldName,e,t.scope||y(t.el))},_(t.el,"delay")||t.options.delay);t.unwatch=t.vm.$watch(e,r,{deep:!0})}else t.el.addEventListener(i,n,!1),t.callbacks.push({name:i,listener:n,el:t.el})})},Q.prototype.attach=function(){var e=this._resolveValueGetter(),t=e.context,i=e.getter;this.vm.$validator.attach(this.fieldName,Z(this.binding.expression,this.binding.value,this.el),{scope:this.scope,prettyName:_(this.el,"as")||this.el.title,context:t,getter:i,listeners:this,initial:this.binding.modifiers.initial,invalidateFalse:!(!this.el||"checkbox"!==this.el.type)}),this.binding.modifiers.disable||(this._attachValidatorEvent(),this.model.watchable?this._attachModelWatcher(this.model.expression):this._attachFieldListeners())},Q.prototype.detach=function(){this.component&&(this.component.$off("input",this.componentListener),this.component.$off("blur",this.componentListener),w(this.componentPropUnwatch)&&this.componentPropUnwatch()),this.unwatch&&this.unwatch(),this.classes.detach(),this.callbacks.forEach(function(e){e.el.removeEventListener(e.name,e.listener)}),this.callbacks=[]};var X=[],ee=function(e){return{inserted:function(e,t,i){var n=t.value,r=(t.expression,i.context),s=k(X,function(t){return t.vm===r&&t.el===e}).instance,o=F(n)?n.scope||y(e):y(e);if(o||(o="__global__"),o!==s.scope){var a=r.$validator._resolveField(s.fieldName,s.scope);r.$validator._moveFieldScope(a,o),s.scope=o}},bind:function(t,i,n){if(n.context.$validator){var r=new Q(t,i,n,e);r.attach(),X.push({vm:n.context,el:t,instance:r})}else{var s=n.context.$options._componentTag;x("No validator instance is present on "+(s?'component "'+s+'"':"un-named component")+", did you forget to inject '$validator'?")}},update:function(e,t,i){var n=t.expression,r=t.value,s=i.context,o=k(X,function(t){return t.vm===s&&t.el===e}).instance;if(n&&o.cachedExp!==JSON.stringify(r)){o.cachedExp=JSON.stringify(r);var a=F(r)?r.scope||y(e):y(e);s.$validator.updateField(o.fieldName,Z(n,r,e),{scope:a||"__global__"})}},unbind:function(e,t,i){var n=t.value,r=i.context,s=k(X,function(t){return t.vm===r&&t.el===e});if(void 0!==s){var o=F(n)?n.scope:y(e)||"__global__";r.$validator.detach(s.instance.fieldName,o),X.splice(X.indexOf(s),1)}}}},te=function(e){return Array.isArray(e)?e.reduce(function(e,t){return~t.indexOf(".")?e[t.split(".")[1]]=t:e[t]=t,e},{}):e};return{install:function(e,t){var i=O({},H,t);i.dictionary&&C.updateDictionary(i.dictionary),C.setLocale(i.locale),C.setStrictMode(i.strict),e.mixin(Y(e,i)),e.directive("validate",ee(i))},mapFields:function(e){var t=te(e);return Object.keys(t).reduce(function(e,i){var n=t[i];return e[i]=function(){if(this.$validator.fieldBag[n])return this.$validator.fieldBag[n];if(n.indexOf(".")<=0)return{};var e=n.split("."),t=e[0],i=e[1];return b("$"+t+"."+i,this.$validator.fieldBag,{})},e},{})},Validator:C,ErrorBag:g,Rules:m,version:"2.0.0-rc.7"}});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VeeValidate=t()}(this,function(){"use strict";function e(e){return e&&e.__esModule?e.default:e}function t(e,t){return t={exports:{}},e(t,t.exports),t.exports}var i={en:/^[A-Z]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[A-ZÆØÅ]*$/i,de:/^[A-ZÄÖÜß]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,nl:/^[A-ZÉËÏÓÖÜ]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[А-ЯЁ]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[A-ZČĆŽŠĐ]*$/i,tr:/^[A-ZÇĞİıÖŞÜ]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/},r={en:/^[A-Z\s]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\s]*$/i,da:/^[A-ZÆØÅ\s]*$/i,de:/^[A-ZÄÖÜß\s]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ\s]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ\s]*$/i,nl:/^[A-ZÉËÏÓÖÜ\s]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ\s]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ\s]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\s]*$/i,ru:/^[А-ЯЁ\s]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\s]*$/i,sr:/^[A-ZČĆŽŠĐ\s]*$/i,tr:/^[A-ZÇĞİıÖŞÜ\s]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ\s]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/},n={en:/^[0-9A-Z]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[0-9A-ZÆØÅ]$/i,de:/^[0-9A-ZÄÖÜß]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[0-9А-ЯЁ]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[0-9A-ZČĆŽŠĐ]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/},s={en:/^[0-9A-Z_-]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,da:/^[0-9A-ZÆØÅ_-]*$/i,de:/^[0-9A-ZÄÖÜß_-]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ_-]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,ru:/^[0-9А-ЯЁ_-]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,sr:/^[0-9A-ZČĆŽŠĐ_-]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/},a=function(e,t){void 0===t&&(t=[null]);var r=t[0];return Array.isArray(e)?e.every(function(e){return a(e,[r])}):r?(i[r]||i.en).test(e):Object.keys(i).some(function(t){return i[t].test(e)})},o=function(e,t){void 0===t&&(t=[null]);var i=t[0];return Array.isArray(e)?e.every(function(e){return o(e,[i])}):i?(s[i]||s.en).test(e):Object.keys(s).some(function(t){return s[t].test(e)})},u=function(e,t){void 0===t&&(t=[null]);var i=t[0];return Array.isArray(e)?e.every(function(e){return u(e,[i])}):i?(n[i]||n.en).test(e):Object.keys(n).some(function(t){return n[t].test(e)})},l=function(e,t){void 0===t&&(t=[null]);var i=t[0];return Array.isArray(e)?e.every(function(e){return l(e,[i])}):i?(r[i]||r.en).test(e):Object.keys(r).some(function(t){return r[t].test(e)})},c=function(e,t){var i=t[0],r=t[1];return Array.isArray(e)?e.every(function(e){return c(e,[i,r])}):Number(i)<=e&&Number(r)>=e},f=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!("string"==typeof e||e instanceof String))throw new TypeError("This library (validator.js) validates strings only")},e.exports=t.default}),d=e(t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,i.default)(e);var t=e.replace(/[- ]+/g,"");if(!r.test(t))return!1;for(var n=0,s=void 0,a=void 0,o=void 0,u=t.length-1;u>=0;u--)s=t.substring(u,u+1),a=parseInt(s,10),n+=o&&(a*=2)>=10?a%10+1:a,o=!o;return!(n%10!=0||!t)};var i=function(e){return e&&e.__esModule?e:{default:e}}(f),r=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|62[0-9]{14})$/;e.exports=t.default})),h=function(e,t){var i=Array.isArray(t)?t[0]||"*":"*";if(Array.isArray(e))return e.every(function(e){return h(e,t)});if(null===e||void 0===e||""===e)return!0;if(0===Number(i))return/^-?\d*$/.test(e);var r="*"===i?"+":"{1,"+i+"}";if(!new RegExp("^-?\\d*(\\.\\d"+r+")?$").test(e))return!1;var n=parseFloat(e);return n===n},p=function(e,t){var i=t[0];if(Array.isArray(e))return e.every(function(e){return p(e,[i])});var r=String(e);return/^[0-9]*$/.test(r)&&r.length===Number(i)},v=function(e,t,i){var r=window.URL||window.webkitURL;return new Promise(function(n){var s=new Image;s.onerror=function(){return n({valid:!1})},s.onload=function(){return n({valid:s.width===Number(t)&&s.height===Number(i)})},s.src=r.createObjectURL(e)})},m=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];for(var i in t)void 0===e[i]&&(e[i]=t[i]);return e},e.exports=t.default}),g=t(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=function(e,t){(0,r.default)(e);var n=void 0,s=void 0;"object"===(void 0===t?"undefined":i(t))?(n=t.min||0,s=t.max):(n=arguments[1],s=arguments[2]);var a=encodeURI(e).split(/%..|./).length-1;return a>=n&&(void 0===s||a<=s)};var r=function(e){return e&&e.__esModule?e:{default:e}}(f);e.exports=t.default}),y=t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,r.default)(e),(t=(0,n.default)(t,s)).allow_trailing_dot&&"."===e[e.length-1]&&(e=e.substring(0,e.length-1));var i=e.split(".");if(t.require_tld){var a=i.pop();if(!i.length||!/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(a))return!1;if(/[\s\u2002-\u200B\u202F\u205F\u3000\uFEFF\uDB40\uDC20]/.test(a))return!1}for(var o,u=0;u<i.length;u++){if(o=i[u],t.allow_underscores&&(o=o.replace(/_/g,"")),!/^[a-z\u00a1-\uffff0-9-]+$/i.test(o))return!1;if(/[\uff01-\uff5e]/.test(o))return!1;if("-"===o[0]||"-"===o[o.length-1])return!1}return!0};var r=i(f),n=i(m),s={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1};e.exports=t.default}),_=e(t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,r.default)(e),(t=(0,n.default)(t,o)).require_display_name||t.allow_display_name){var i=e.match(u);if(i)e=i[1];else if(t.require_display_name)return!1}var f=e.split("@"),p=f.pop(),v=f.join("@"),m=p.toLowerCase();if("gmail.com"!==m&&"googlemail.com"!==m||(v=v.replace(/\./g,"").toLowerCase()),!(0,s.default)(v,{max:64})||!(0,s.default)(p,{max:254}))return!1;if(!(0,a.default)(p,{require_tld:t.require_tld}))return!1;if('"'===v[0])return v=v.slice(1,v.length-1),t.allow_utf8_local_part?h.test(v):c.test(v);for(var g=t.allow_utf8_local_part?d:l,y=v.split("."),_=0;_<y.length;_++)if(!g.test(y[_]))return!1;return!0};var r=i(f),n=i(m),s=i(g),a=i(y),o={allow_display_name:!1,require_display_name:!1,allow_utf8_local_part:!0,require_tld:!0},u=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\s]*<(.+)>$/i,l=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,c=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,d=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,h=/^([\s\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]))*$/i;e.exports=t.default})),$=function(e,t){return Array.isArray(e)?e.every(function(e){return $(e,t)}):!!t.filter(function(t){return t==e}).length},b=t(function(e,t){function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,r.default)(e),!(t=String(t)))return i(e,4)||i(e,6);if("4"===t)return!!n.test(e)&&e.split(".").sort(function(e,t){return e-t})[3]<=255;if("6"===t){var a=e.split(":"),o=!1,u=i(a[a.length-1],4),l=u?7:8;if(a.length>l)return!1;if("::"===e)return!0;"::"===e.substr(0,2)?(a.shift(),a.shift(),o=!0):"::"===e.substr(e.length-2)&&(a.pop(),a.pop(),o=!0);for(var c=0;c<a.length;++c)if(""===a[c]&&c>0&&c<a.length-1){if(o)return!1;o=!0}else if(u&&c===a.length-1);else if(!s.test(a[c]))return!1;return o?a.length>=1:a.length===l}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=i;var r=function(e){return e&&e.__esModule?e:{default:e}}(f),n=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,s=/^[0-9A-F]{1,4}$/i;e.exports=t.default}),A=e(b),x=function(e,t){return Array.isArray(e)?e.every(function(e){return x(e,t)}):!t.filter(function(t){return t==e}).length},w=e(t(function(e,t){function i(e){return e&&e.__esModule?e:{default:e}}function r(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];if(e===n||r(n)&&n.test(e))return!0}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,s.default)(e),!e||e.length>=2083||/[\s<>]/.test(e))return!1;if(0===e.indexOf("mailto:"))return!1;t=(0,u.default)(t,l);var i=void 0,r=void 0,f=void 0,d=void 0,h=void 0,p=void 0,v=void 0,m=void 0;if(v=e.split("#"),e=v.shift(),v=e.split("?"),e=v.shift(),(v=e.split("://")).length>1){if(i=v.shift(),t.require_valid_protocol&&-1===t.protocols.indexOf(i))return!1}else{if(t.require_protocol)return!1;t.allow_protocol_relative_urls&&"//"===e.substr(0,2)&&(v[0]=e.substr(2))}if(e=v.join("://"),v=e.split("/"),""===(e=v.shift())&&!t.require_host)return!0;if((v=e.split("@")).length>1&&(r=v.shift()).indexOf(":")>=0&&r.split(":").length>2)return!1;p=null,m=null;var g=(d=v.join("@")).match(c);return g?(f="",m=g[1],p=g[2]||null):(f=(v=d.split(":")).shift(),v.length&&(p=v.join(":"))),!(null!==p&&(h=parseInt(p,10),!/^[0-9]+$/.test(p)||h<=0||h>65535)||!((0,o.default)(f)||(0,a.default)(f,t)||m&&(0,o.default)(m,6)||"localhost"===f)||(f=f||m,t.host_whitelist&&!n(f,t.host_whitelist)||t.host_blacklist&&n(f,t.host_blacklist)))};var s=i(f),a=i(y),o=i(b),u=i(m),l={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_host:!0,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1},c=/^\[([^\]]+)\](?::([0-9]+))?$/;e.exports=t.default})),F={alpha_dash:o,alpha_num:u,alpha_spaces:l,alpha:a,between:c,confirmed:function(e,t){return String(e)===String(t)},credit_card:function(e){return d(String(e))},decimal:h,digits:p,dimensions:function(e,t){for(var i=t[0],r=t[1],n=[],s=0;s<e.length;s++){if(!/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(e[s].name))return!1;n.push(e[s])}return Promise.all(n.map(function(e){return v(e,i,r)}))},email:function(e){return Array.isArray(e)?e.every(function(e){return _(String(e))}):_(String(e))},ext:function(e,t){var i=new RegExp(".("+t.join("|")+")$","i");return e.every(function(e){return i.test(e.name)})},image:function(e){return e.every(function(e){return/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(e.name)})},in:$,ip:function(e,t){void 0===t&&(t=[4]);var i=t[0];return Array.isArray(e)?e.every(function(e){return A(e,[i])}):A(e,i)},max:function(e,t){var i=t[0];return void 0===e||null===e?i>=0:String(e).length<=i},max_value:function(e,t){var i=t[0];return!Array.isArray(e)&&null!==e&&void 0!==e&&""!==e&&Number(e)<=i},mimes:function(e,t){var i=new RegExp(t.join("|").replace("*",".+")+"$","i");return e.every(function(e){return i.test(e.type)})},min:function(e,t){var i=t[0];return void 0!==e&&null!==e&&String(e).length>=i},min_value:function(e,t){var i=t[0];return!Array.isArray(e)&&null!==e&&void 0!==e&&""!==e&&Number(e)>=i},not_in:x,numeric:function(e){return Array.isArray(e)?e.every(function(e){return/^[0-9]+$/.test(String(e))}):/^[0-9]+$/.test(String(e))},regex:function(e,t){var i=t[0],r=t.slice(1);return i instanceof RegExp?i.test(e):new RegExp(i,r).test(String(e))},required:function(e,t){if(void 0===t&&(t=[!1]),Array.isArray(e))return!!e.length;var i=t[0];return!(!1===e&&i||void 0===e||null===e||!String(e).trim().length)},size:function(e,t){var i=t[0];if(isNaN(i))return!1;for(var r=1024*Number(i),n=0;n<e.length;n++)if(e[n].size>r)return!1;return!0},url:function(e,t){void 0===t&&(t=[!0]);var i={require_protocol:!!t[0],allow_underscores:!0};return Array.isArray(e)?e.every(function(e){return w(e,i)}):w(e,i)}},E=function(e,t){return e.getAttribute("data-vv-"+t)},O=function(e,t,i){return e.setAttribute("data-vv-"+t,i)},j=function(e){var t=E(e,"scope");return!t&&e.form&&(t=E(e.form,"scope")),t||null},Z=function(e,t,i){if(void 0===i&&(i=void 0),!e||!t)return i;var r=t;return e.split(".").every(function(e){return Object.prototype.hasOwnProperty.call(r,e)||void 0!==r[e]?(r=r[e],!0):(r=i,!1)}),r},N=function(e,t){var i=t;return e.split(".").every(function(e){return!!Object.prototype.hasOwnProperty.call(i,e)&&(i=i[e],!0)})},T=function(e){var t=[],i=e.split(":")[0];return~e.indexOf(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:i,params:t}},D=function(e){var t={};return S(e)?(Object.keys(e).forEach(function(i){var r=[];r=!0===e[i]?[]:Array.isArray(e[i])?e[i]:[e[i]],!1!==e[i]&&(t[i]=r)}),t):(e.split("|").forEach(function(e){var i=T(e);i.name&&(t[i.name]=i.params)}),t)},L=function(e,t,i){if(void 0===t&&(t=0),void 0===i&&(i=!1),0===t)return e;var r;return function(){for(var n=[],s=arguments.length;s--;)n[s]=arguments[s];var a=i&&!r;clearTimeout(r),r=setTimeout(function(){r=null,i||e.apply(void 0,n)},t),a&&e.apply(void 0,n)}},M=function(e){console.warn("[vee-validate] "+e)},k=function(e){return new Error("[vee-validate] "+e)},S=function(e){return null!==e&&e&&"object"==typeof e&&!Array.isArray(e)},q=function(e){return"function"==typeof e},B=function(e,t){return e.classList?e.classList.contains(t):!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))},P=function(e,t){e.classList?e.classList.add(t):B(e,t)||(e.className+=" "+t)},V=function(e,t){if(e.classList)e.classList.remove(t);else if(B(e,t)){var i=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(i," ")}},R=function(e,t,i){if(e&&t)return i?P(e,t):void V(e,t)},C=function(e){if(q(Array.from))return Array.from(e);for(var t=[],i=e.length,r=0;r<i;r++)t.push(e[r]);return t},z=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];if(q(Object.assign))return Object.assign.apply(Object,[e].concat(t));if(null==e)throw new TypeError("Cannot convert undefined or null to object");var r=Object(e);return t.forEach(function(e){null!=e&&Object.keys(e).forEach(function(t){r[t]=e[t]})}),r},I=function(){return"_"+Math.random().toString(36).substr(2,9)},H=function(e,t){if(S(e)&&(e=C(e)),e.find)return e.find(t);var i;return e.some(function(e){return!!t(e)&&(i=e,!0)}),i},U=function(e,t){return e&&e.expression?"string"==typeof e.value?e.value:~["string","object"].indexOf(typeof e.value.rules)?e.value.rules:e.value:E(t,"rules")},G=function(e){return e&&("SELECT"===e.tagName||~["radio","checkbox","file"].indexOf(e.type))?"change":"input"},Y=function(){this.items=[]};Y.prototype.add=function(e){arguments.length>1&&(e={field:arguments[0],msg:arguments[1],rule:arguments[2],scope:arguments[3]||null}),e.scope=e.scope||null,this.items.push(e)},Y.prototype.update=function(e,t){var i=H(this.items,function(t){return t.id===e});if(i){var r=this.items.indexOf(i);this.items.splice(r,1),i.scope=t.scope,this.items.push(i)}},Y.prototype.all=function(e){return e?this.items.filter(function(t){return t.scope===e}).map(function(e){return e.msg}):this.items.map(function(e){return e.msg})},Y.prototype.any=function(e){return e?!!this.items.filter(function(t){return t.scope===e}).length:!!this.items.length},Y.prototype.clear=function(e){var t=this;e||(e=null);for(var i=0;i<this.items.length;++i)(function(t){return t.scope===e})(t.items[i])&&(t.items.splice(i,1),--i)},Y.prototype.collect=function(e,t,i){if(void 0===i&&(i=!0),!e){var r={};return this.items.forEach(function(e){r[e.field]||(r[e.field]=[]),r[e.field].push(i?e.msg:e)}),r}return t?this.items.filter(function(i){return i.field===e&&i.scope===t}).map(function(e){return i?e.msg:e}):this.items.filter(function(t){return t.field===e}).map(function(e){return i?e.msg:e})},Y.prototype.count=function(){return this.items.length},Y.prototype.first=function(e,t){var i=this;void 0===t&&(t=null);var r=this._selector(e),n=this._scope(e);if(n){var s=this.first(n.name,n.scope);if(s)return s}if(r)return this.firstByRule(r.name,r.rule,t);for(var a=0;a<this.items.length;++a)if(i.items[a].field===e&&i.items[a].scope===t)return i.items[a].msg;return null},Y.prototype.firstRule=function(e,t){var i=this.collect(e,t,!1);return i.length&&i[0].rule||null},Y.prototype.has=function(e,t){return void 0===t&&(t=null),!!this.first(e,t)},Y.prototype.firstByRule=function(e,t,i){var r=this.collect(e,i,!1).filter(function(e){return e.rule===t})[0];return r&&r.msg||null},Y.prototype.removeById=function(e){for(var t=this,i=0;i<this.items.length;++i)t.items[i].id===e&&(t.items.splice(i,1),--i)},Y.prototype.remove=function(e,t){for(var i=this,r=t?function(i){return i.field===e&&i.scope===t}:function(t){return t.field===e&&null===t.scope},n=0;n<this.items.length;++n)r(i.items[n])&&(i.items.splice(n,1),--n)},Y.prototype._selector=function(e){if(e.indexOf(":")>-1){var t=e.split(":");return{name:t[0],rule:t[1]}}return null},Y.prototype._scope=function(e){if(e.indexOf(".")>-1){var t=e.split("."),i=t[0];return{name:t[1],scope:i}}return null};var J=function(e){void 0===e&&(e={}),this.container={},this.merge(e)};J.prototype.hasLocale=function(e){return!!this.container[e]},J.prototype.setDateFormat=function(e,t){this.container[e]||(this.container[e]={}),this.container[e].dateFormat=t},J.prototype.getDateFormat=function(e){if(this.container[e])return this.container[e].dateFormat},J.prototype.getMessage=function(e,t,i){return this.hasMessage(e,t)?this.container[e].messages[t]:i||this._getDefaultMessage(e)},J.prototype.getFieldMessage=function(e,t,i){if(!this.hasLocale(e))return this.getMessage(e,i);var r=this.container[e].custom&&this.container[e].custom[t];return r&&r[i]?r[i]:this.getMessage(e,i)},J.prototype._getDefaultMessage=function(e){return this.hasMessage(e,"_default")?this.container[e].messages._default:this.container.en.messages._default},J.prototype.getAttribute=function(e,t,i){return void 0===i&&(i=""),this.hasAttribute(e,t)?this.container[e].attributes[t]:i},J.prototype.hasMessage=function(e,t){return!!(this.hasLocale(e)&&this.container[e].messages&&this.container[e].messages[t])},J.prototype.hasAttribute=function(e,t){return!!(this.hasLocale(e)&&this.container[e].attributes&&this.container[e].attributes[t])},J.prototype.merge=function(e){this._merge(this.container,e)},J.prototype.setMessage=function(e,t,i){this.hasLocale(e)||(this.container[e]={messages:{},attributes:{}}),this.container[e].messages[t]=i},J.prototype.setAttribute=function(e,t,i){this.hasLocale(e)||(this.container[e]={messages:{},attributes:{}}),this.container[e].attributes[t]=i},J.prototype._merge=function(e,t){var i=this;return S(e)&&S(t)?(Object.keys(t).forEach(function(r){if(S(t[r])){if(!e[r]){z(e,(n={},n[r]={},n));var n}i._merge(e[r],t[r])}else{z(e,(s={},s[r]=t[r],s));var s}}),e):e};var K={_default:function(e){return"The "+e+" value is not valid."},alpha_dash:function(e){return"The "+e+" field may contain alpha-numeric characters as well as dashes and underscores."},alpha_num:function(e){return"The "+e+" field may only contain alpha-numeric characters."},alpha_spaces:function(e){return"The "+e+" field may only contain alphabetic characters as well as spaces."},alpha:function(e){return"The "+e+" field may only contain alphabetic characters."},between:function(e,t){return"The "+e+" field must be between "+t[0]+" and "+t[1]+"."},confirmed:function(e){return"The "+e+" confirmation does not match."},credit_card:function(e){return"The "+e+" field is invalid."},decimal:function(e,t){void 0===t&&(t=["*"]);var i=t[0];return"The "+e+" field must be numeric and may contain "+(i&&"*"!==i?i:"")+" decimal points."},digits:function(e,t){return"The "+e+" field must be numeric and exactly contain "+t[0]+" digits."},dimensions:function(e,t){return"The "+e+" field must be "+t[0]+" pixels by "+t[1]+" pixels."},email:function(e){return"The "+e+" field must be a valid email."},ext:function(e){return"The "+e+" field must be a valid file."},image:function(e){return"The "+e+" field must be an image."},in:function(e){return"The "+e+" field must be a valid value."},ip:function(e){return"The "+e+" field must be a valid ip address."},max:function(e,t){return"The "+e+" field may not be greater than "+t[0]+" characters."},max_value:function(e,t){return"The "+e+" field must be "+t[0]+" or less."},mimes:function(e){return"The "+e+" field must have a valid file type."},min:function(e,t){return"The "+e+" field must be at least "+t[0]+" characters."},min_value:function(e,t){return"The "+e+" field must be "+t[0]+" or more."},not_in:function(e){return"The "+e+" field must be a valid value."},numeric:function(e){return"The "+e+" field may only contain numeric characters."},regex:function(e){return"The "+e+" field format is invalid."},required:function(e){return"The "+e+" field is required."},size:function(e,t){return"The "+e+" field must be less than "+t[0]+" KB."},url:function(e){return"The "+e+" field is not a valid URL."}},Q=function(){};Q.generate=function(e,t,i,r){void 0===r&&(r={});var n=Q.resolveModel(t,i);return{name:Q.resolveName(e,i),el:e,listen:!t.modifiers.disable,scope:Q.resolveScope(e,t),vm:i.context,expression:t.value,component:i.child,classes:r.classes,classNames:r.classNames,getter:Q.resolveGetter(e,i,n),events:Q.resolveEvents(e,i)||r.events,model:n,delay:Q.resolveDelay(e,i,r),rules:U(t,e),initial:!!t.modifiers.initial,invalidateFalse:!(!e||"checkbox"!==e.type),alias:Q.resolveAlias(e,i)}},Q.resolveDelay=function(e,t,i){return void 0===i&&(i={}),E(e,"delay")||t.child&&t.child.$attrs&&t.child.$attrs["data-vv-delay"]||i.delay},Q.resolveAlias=function(e,t){return E(e,"as")||t.child&&t.child.$attrs&&t.child.$attrs["data-vv-as"]||e.title||null},Q.resolveEvents=function(e,t){return t.child?E(e,"validate-on")||t.child.$attrs&&t.child.$attrs["data-vv-validate-on"]:E(e,"validate-on")},Q.resolveScope=function(e,t){return S(t.value)?t.value.scope:j(e)},Q.resolveModel=function(e,t){if(e.arg)return e.arg;if(S(e.value)&&e.value.arg)return e.value.arg;var i=t.data.model||H(t.data.directives,function(e){return"model"===e.name});return i&&/^[a-z_]+[0-9]*(\w*\.[a-z_]\w*)*$/i.test(i.expression)&&N(i.expression,t.context)?i.expression:null},Q.resolveName=function(e,t){return t.child?E(e,"name")||t.child.$attrs&&(t.child.$attrs["data-vv-name"]||t.child.$attrs.name)||t.child.name:E(e,"name")||e.name},Q.resolveGetter=function(e,t,i){if(i)return function(){return Z(i,t.context)};if(t.child)return function(){var i=E(e,"value-path")||t.child.$attrs&&t.child.$attrs["data-vv-value-path"];return i?Z(i,t.child):t.child.value};switch(e.type){case"checkbox":return function(){var t=document.querySelectorAll('input[name="'+e.name+'"]');if((t=C(t).filter(function(e){return e.checked})).length)return t.map(function(e){return e.value})};case"radio":return function(){var t=document.querySelectorAll('input[name="'+e.name+'"]'),i=H(t,function(e){return e.checked});return i&&i.value};case"file":return function(t){return C(e.files)};case"select-multiple":return function(){return C(e.options).filter(function(e){return e.selected}).map(function(e){return e.value})};default:return function(){return e&&e.value}}};var W={targetOf:null,initial:!1,scope:null,listen:!0,name:null,active:!0,required:!1,rules:{},vm:null,classes:!1,events:"input|blur",delay:0,classNames:{touched:"touched",untouched:"untouched",valid:"valid",invalid:"invalid",pristine:"pristine",dirty:"dirty"}},X=function(e){return{untouched:!0,touched:!1,dirty:!1,pristine:!0,valid:null,invalid:null,validated:!1,pending:!1,required:!!e.rules.required}},ee=function(e,t){void 0===t&&(t={}),this.id=I(),this.el=e,this.updated=!1,this.expression=null,this.dependencies=[],this.watchers=[],this.events=[],this.isHeadless||this.targetOf||t.targetOf||O(this.el,"id",this.id),t=z({},W,t),this.flags=X(t),this.vm=t.vm||this.vm,this.component=t.component||this.component,this.update(t)},te={isVue:{},validator:{},isRequired:{},isDisabled:{},isHeadless:{},displayName:{},value:{}};te.isVue.get=function(){return!!this.component},te.validator.get=function(){return this.vm&&this.vm.$validator?this.vm.$validator:(M("No validator instance detected."),{validate:function(){}})},te.isRequired.get=function(){return!!this.rules.required},te.isDisabled.get=function(){return this.isVue&&this.component.disabled||this.el&&this.el.disabled},te.isHeadless.get=function(){return!this.el},te.displayName.get=function(){return this.alias},te.value.get=function(){if(q(this.getter))return this.getter()},ee.prototype.matches=function(e){return!this.isDisabled&&(e.id?this.id===e.id:void 0===e.name&&void 0===e.scope||(void 0===e.scope?this.name===e.name:void 0===e.name?this.scope===e.scope:e.name===this.name&&e.scope===this.scope))},ee.prototype.update=function(e){this.targetOf=e.targetOf||null,this.initial=e.initial||this.initial||!1,this.scope=e.scope||this.scope||null,this.name=e.name||this.name||null,this.rules=e.rules?D(e.rules):this.rules,this.model=e.model||this.model,this.listen=!1!==e.listen,this.classNames=e.classNames||this.classNames,this.expression=JSON.stringify(e.expression),this.alias=e.alias||this.alias,this.getter=q(e.getter)?e.getter:this.getter,this.delay=e.delay||this.delay||0,this.events="string"==typeof e.events&&e.events.length?e.events.split("|"):this.events,this.updateDependencies(),this.addActionListeners(),this.updated&&this.validator.errors&&q(this.validator.errors.update)&&this.validator.errors.update(this.id,{scope:this.scope}),this.updated=!0,this.isHeadless?this.classes=e.classes:(e.classes&&!this.classes?this.updateClasses():this.classes&&this.unwatch(/class/),this.classes=e.classes,this.addValueListeners(),this.updateAriaAttrs())},ee.prototype.updateDependencies=function(){var e=this;this.dependencies.forEach(function(e){return e.field.destroy()}),this.dependencies=[];var t=Object.keys(this.rules).reduce(function(t,i){return"confirmed"===i?t.push({selector:e.rules[i][0]||e.name+"_confirmation",name:i}):/after|before/.test(i)&&t.push({selector:e.rules[i][0],name:i}),t},[]);t.length&&this.vm&&this.vm.$el&&t.forEach(function(t){var i=t.selector,r=t.name,n=null;if((n="$"===i[0]?e.vm.$refs[i.slice(1)]:e.vm.$el.querySelector(i))||(n=e.vm.$el.querySelector('input[name="'+i+'"]')),n){var s={vm:e.vm,classes:e.classes,classNames:e.classNames,delay:e.delay,scope:e.scope,events:e.events.join("|"),initial:e.initial,targetOf:e.id};q(n.$watch)?(s.component=n,s.el=n.$el,s.getter=Q.resolveGetter(n.$el,{child:n})):(s.el=n,s.getter=Q.resolveGetter(n,{})),e.dependencies.push({name:r,field:new ee(s.el,s)})}})},ee.prototype.unwatch=function(e){if(!e)return this.watchers.forEach(function(e){return e.unwatch()}),void(this.watchers=[]);this.watchers.filter(function(t){return e.test(t.tag)}).forEach(function(e){return e.unwatch()}),this.watchers=this.watchers.filter(function(t){return!e.test(t.tag)})},ee.prototype.updateClasses=function(){this.classes&&(R(this.el,this.classNames.dirty,this.flags.dirty),R(this.el,this.classNames.pristine,this.flags.pristine),R(this.el,this.classNames.valid,!!this.flags.valid),R(this.el,this.classNames.invalid,!!this.flags.invalid),R(this.el,this.classNames.touched,this.flags.touched),R(this.el,this.classNames.untouched,this.flags.untouched))},ee.prototype.addActionListeners=function(){var e=this;this.unwatch(/class/);var t=function(){e.flags.touched=!0,e.flags.untouched=!1,e.classes&&(R(e.el,e.classNames.touched,!0),R(e.el,e.classNames.untouched,!1)),e.unwatch(/^class_blur$/)},i=G(this.el),r=function(){e.flags.dirty=!0,e.flags.pristine=!1,e.classes&&(R(e.el,e.classNames.pristine,!1),R(e.el,e.classNames.dirty,!0)),e.unwatch(/^class_input$/)};if(this.isVue&&q(this.component.$once))return this.component.$once("input",r),this.component.$once("blur",t),this.watchers.push({tag:"class_input",unwatch:function(){e.component.$off("input",r)}}),void this.watchers.push({tag:"class_blur",unwatch:function(){e.component.$off("blur",t)}});this.isHeadless||(this.el.addEventListener(i,r),this.el.addEventListener("blur",t),this.watchers.push({tag:"class_input",unwatch:function(){e.el.removeEventListener(i,r)}}),this.watchers.push({tag:"class_blur",unwatch:function(){e.el.removeEventListener("blur",t)}}))},ee.prototype.addValueListeners=function(){var e=this;if(this.unwatch(/^input_.+/),this.listen){var t=null;t=this.targetOf?function(){e.validator.validate("#"+e.targetOf)}:function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];(0===t.length||t[0]instanceof Event)&&(t[0]=e.value),e.validator.validate("#"+e.id,t[0])};var i=L(t,this.delay),r=G(this.el),n=this.events.map(function(e){return"input"===e?r:e});if(this.model&&-1!==n.indexOf(r)){var s=this.vm.$watch(this.model,i);this.watchers.push({tag:"input_model",unwatch:s}),n=n.filter(function(e){return e!==r})}n.forEach(function(t){if(e.isVue)return e.component.$on(t,i),void e.watchers.push({tag:"input_vue",unwatch:function(){e.component.$off(t,i)}});~["radio","checkbox"].indexOf(e.el.type)?document.querySelectorAll('input[name="'+e.el.name+'"]').forEach(function(r){r.addEventListener(t,i),e.watchers.push({tag:"input_native",unwatch:function(){r.removeEventListener(t,i)}})}):(e.el.addEventListener(t,i),e.watchers.push({tag:"input_native",unwatch:function(){e.el.removeEventListener(t,i)}}))})}},ee.prototype.updateAriaAttrs=function(){!this.isHeadless&&q(this.el.setAttribute)&&(this.el.setAttribute("aria-required",this.isRequired?"true":"false"),this.el.setAttribute("aria-invalid",this.flags.invalid?"true":"false"))},ee.prototype.destroy=function(){this.watchers.forEach(function(e){return e.unwatch()}),this.watchers=[],this.dependencies.forEach(function(e){return e.field.destroy()}),this.dependencies=[]},Object.defineProperties(ee.prototype,te);var ie=function(){this.items=[]},re={length:{}};re.length.get=function(){return this.items.length},ie.prototype.find=function(e){return H(this.items,function(t){return t.matches(e)})},ie.prototype.filter=function(e){return Array.isArray(e)?this.items.filter(function(t){return e.some(function(e){return t.matches(e)})}):this.items.filter(function(t){return t.matches(e)})},ie.prototype.map=function(e){return this.items.map(e)},ie.prototype.remove=function(e){var t=null;if(!(t=e instanceof ee?e:this.find(e)))return null;var i=this.items.indexOf(t);return this.items.splice(i,1),t},ie.prototype.push=function(e){if(!(e instanceof ee))throw k("FieldBag only accepts instances of Field that has an id defined.");if(!e.id)throw k("Field id must be defined.");if(this.find({id:e.id}))throw k("Field with id "+e.id+" is already added.");this.items.push(e)},Object.defineProperties(ie.prototype,re);var ne=function(e){return function(t,i){var r=i[0],n=i[1],s=i[2];void 0===s&&(s=n,n=!1);var a=e(t,s,!0),o=e(r,s,!0);return!(!a.isValid()||!o.isValid())&&(a.isAfter(o)||n&&a.isSame(o))}},se=function(e){return function(t,i){var r=i[0],n=i[1],s=i[2];void 0===s&&(s=n,n=!1);var a=e(t,s,!0),o=e(r,s,!0);return!(!a.isValid()||!o.isValid())&&(a.isBefore(o)||n&&a.isSame(o))}},ae=function(e){return function(t,i){var r=i[0];return e(t,r,!0).isValid()}},oe=function(e){return function(t,i){var r,n,s,a="()";if(i.length>3){var o;r=(o=i)[0],n=o[1],a=o[2],s=o[3]}else{var u;r=(u=i)[0],n=u[1],s=u[2]}var l=e(r,s,!0),c=e(n,s,!0),f=e(t,s,!0);return!!(l.isValid()&&c.isValid()&&f.isValid())&&f.isBetween(l,c,"days",a)}},ue={make:function(e){return{date_format:ae(e),after:ne(e),before:se(e),date_between:oe(e)}},messages:{after:function(e,t){var i=t[0];return"The "+e+" must be after "+(t[1]?"or equal to ":"")+i+"."},before:function(e,t){var i=t[0];return"The "+e+" must be before "+(t[1]?"or equal to ":"")+i+"."},date_between:function(e,t){return"The "+e+" must be between "+t[0]+" and "+t[1]+"."},date_format:function(e,t){return"The "+e+" must be in the format "+t[0]+"."}},installed:!1},le="en",ce=!0,fe=new J({en:{messages:K,attributes:{},custom:{}}}),de=function(e,t){void 0===t&&(t={vm:null,fastExit:!0}),this.strict=ce,this.errors=new Y,this.fields=new ie,this.fieldBag={},this._createFields(e),this.paused=!1,this.fastExit=t.fastExit||!1,this.$vm=t.vm,"function"==typeof moment&&this.installDateTimeValidators(moment)},he={dictionary:{},locale:{},rules:{}},pe={dictionary:{},rules:{}};he.dictionary.get=function(){return fe},pe.dictionary.get=function(){return fe},he.locale.get=function(){return le},he.rules.get=function(){return F},pe.rules.get=function(){return F},de._merge=function(e,t){q(t)?F[e]=t:(F[e]=t.validate,q(t.getMessage)&&fe.setMessage(le,e,t.getMessage),t.messages&&fe.merge(Object.keys(t.messages).reduce(function(i,r){var n=i;n[r]={messages:(s={},s[e]=t.messages[r],s)};var s;return n},{})))},de._guardExtend=function(e,t){if(!q(t)){if(!q(t.validate))throw k("Extension Error: The validator '"+e+"' must be a function or have a 'validate' method.");if(!q(t.getMessage)&&!S(t.messages))throw k("Extension Error: The validator '"+e+"' must have a 'getMessage' method or have a 'messages' object.")}},de.create=function(e,t){return new de(e,t)},de.extend=function(e,t){de._guardExtend(e,t),de._merge(e,t)},de.installDateTimeValidators=function(e){if("function"!=typeof e)return M("To use the date-time validators you must provide moment reference."),!1;if(ue.installed)return!0;var t=ue.make(e);return Object.keys(t).forEach(function(e){de.extend(e,t[e])}),de.updateDictionary({en:{messages:ue.messages}}),ue.installed=!0,!0},de.remove=function(e){delete F[e]},de.setLocale=function(e){void 0===e&&(e="en"),fe.hasLocale(e)||M("You are setting the validator locale to a locale that is not defined in the dicitionary. English messages may still be generated."),le=e},de.setStrictMode=function(e){void 0===e&&(e=!0),ce=e},de.updateDictionary=function(e){fe.merge(e)},de.addLocale=function(e){if(e.name){this.updateDictionary((t={},t[e.name]=e,t));var t}else M("Your locale must have a name property")},de.prototype.addLocale=function(e){de.addLocale(e)},de.prototype._createFields=function(e){var t=this;e&&Object.keys(e).forEach(function(i){var r=z({},{name:i,rules:e[i]});t.attach(r)})},de.prototype._getDateFormat=function(e){var t=null;return e.date_format&&Array.isArray(e.date_format)&&(t=e.date_format[0]),t||this.dictionary.getDateFormat(this.locale)},de.prototype._isADateRule=function(e){return!!~["after","before","date_between","date_format"].indexOf(e)},de.prototype._formatErrorMessage=function(e,t,i){void 0===i&&(i={});var r=this._getFieldDisplayName(e),n=this._getLocalizedParams(t);if(!this.dictionary.hasLocale(le)){var s=this.dictionary.getFieldMessage("en",e.name,t.name);return q(s)?s(r,n,i):s}var a=this.dictionary.getFieldMessage(le,e.name,t.name);return q(a)?a(r,n,i):a},de.prototype._getLocalizedParams=function(e){return~["after","before","confirmed"].indexOf(e.name)&&e.params&&e.params[0]?[this.dictionary.getAttribute(le,e.params[0],e.params[0])]:e.params},de.prototype._getFieldDisplayName=function(e){return e.displayName||this.dictionary.getAttribute(le,e.name,e.name)},de.prototype._test=function(e,t,i){var r=this,n=F[i.name],s=Array.isArray(i.params)?C(i.params):[];if(!n||"function"!=typeof n)throw k("No such validator '"+i.name+"' exists.");if(/(confirmed|after|before)/.test(i.name)){var a=H(e.dependencies,function(e){return e.name===i.name});a&&(s=[a.field.value])}if(ue.installed&&this._isADateRule(i.name)){var o=this._getDateFormat(e.rules);"date_format"!==i.name&&s.push(o)}var u=n(t,s);return q(u.then)?u.then(function(t){var n=!0,s={};return Array.isArray(t)?n=t.every(function(e){return S(e)?e.valid:e}):(n=S(t)?t.valid:t,s=t.data),n||r.errors.add({id:e.id,field:e.name,msg:r._formatErrorMessage(e,i,s),rule:i.name,scope:e.scope}),n}):(S(u)||(u={valid:u,data:{}}),u.valid||this.errors.add({id:e.id,field:e.name,msg:this._formatErrorMessage(e,i,u.data),rule:i.name,scope:e.scope}),u.valid)},de.prototype.attach=function(e){if(arguments.length>1&&(e=z({},{name:arguments[0],rules:arguments[1]},arguments[2]||{vm:{$validator:this}})),e instanceof ee||(e=new ee(e.el||null,e)),this.fields.push(e),e.initial&&this.validate("#"+e.id,e.value),!e.scope){this.fieldBag=z({},this.fieldBag,(t={},t[""+e.name]=e.flags,t));var t;return e}var i,r=z({},this.fieldBag["$"+e.scope]||{},(i={},i[""+e.name]=e.flags,i));this.fieldBag=z({},this.fieldBag,(n={},n["$"+e.scope]=r,n));var n;return e},de.prototype.flag=function(e,t){var i=this._resolveField(e);i&&(Object.keys(i.flags).forEach(function(e){i.flags[e]=void 0!==t[e]?t[e]:i.flags[e]}),i.classes&&i.updateClasses())},de.prototype.clean=function(){var e=this;this.$vm&&q(this.$vm.$nextTick)?this.$vm.$nextTick(function(){e.errors.clear()}):this.errors.clear()},de.prototype.detach=function(e,t){var i=e instanceof ee?e:this._resolveField(e,t);i&&(i.destroy(),this.errors.removeById(i.id),this.fields.remove(i))},de.prototype.extend=function(e,t){de.extend(e,t)},de.prototype.installDateTimeValidators=function(e){de.installDateTimeValidators(e)},de.prototype.remove=function(e){de.remove(e)},de.prototype.setLocale=function(e){this.dictionary.hasLocale(e)||M("You are setting the validator locale to a locale that is not defined in the dicitionary. English messages may still be generated."),le=e},de.prototype.updateDictionary=function(e){de.updateDictionary(e)},de.prototype._resolveField=function(e,t){if(t)return this.fields.find({name:e,scope:t});if("#"===e[0])return this.fields.find({id:e.slice(1)});if(e.indexOf(".")>-1){var i=e.split("."),r=this.fields.find({name:i[1],scope:i[0]});if(r)return r}return this.fields.find({name:e,scope:null})},de.prototype._handleFieldNotFound=function(e,t){if(!this.strict)return Promise.resolve(!0);throw k('Validating a non-existant field: "'+(t?e:(t?t+".":"")+e)+'". Use "attach()" first.')},de.prototype._validate=function(e,t){var i=this;if(!e.isRequired&&~[null,void 0,""].indexOf(t))return Promise.resolve(!0);var r=[],n=!1;return Object.keys(e.rules).some(function(s){var a=i._test(e,t,{name:s,params:e.rules[s]});if(q(a.then))r.push(a);else if(i.fastExit&&!a)n=!0;else{var o=new Promise(function(e){e(a)});r.push(o)}return n}),n?Promise.resolve(!1):Promise.all(r).then(function(e){return e.every(function(e){return e})})},de.prototype.validate=function(e,t,i){if(void 0===i&&(i=null),this.paused)return Promise.resolve(!0);if(0===arguments.length)return this.validateAll();var r=this._resolveField(e,i);return r?(this.errors.removeById(r.id),r.flags.pending=!0,1===arguments.length&&(t=r.value),this._validate(r,t).then(function(e){return r.flags.pending=!1,r.flags.valid=e,r.flags.invalid=!e,r.flags.validated=!0,r.updateAriaAttrs(),r.classes&&r.updateClasses(),e})):this._handleFieldNotFound(e,i)},de.prototype.pause=function(){return this.paused=!0,this},de.prototype.resume=function(){return this.paused=!1,this},de.prototype.validateAll=function(e){var t=arguments,i=this;if(this.paused)return Promise.resolve(!0);var r=null,n=!1;"string"==typeof e?r={scope:e}:S(e)?(r=Object.keys(e).map(function(e){return{name:e,scope:t[1]||null}}),n=!0):0===arguments.length&&(r={scope:null});var s=this.fields.filter(r).map(function(t){return i.validate("#"+t.id,n?e[t.name]:t.value)});return Promise.all(s).then(function(e){return e.every(function(e){return e})})},de.prototype.validateScopes=function(){var e=this;if(this.paused)return Promise.resolve(!0);var t=this.fields.map(function(t){return e.validate("#"+t.id,t.value)});return Promise.all(t).then(function(e){return e.every(function(e){return e})})},Object.defineProperties(de.prototype,he),Object.defineProperties(de,pe);var ve,me=function(e){return!!e&&(!(!Array.isArray(e)||!~e.indexOf("$validator"))||!(!S(e)||!e.$validator))},ge=function(e,t){return new de(null,{init:!1,vm:e,fastExit:t.fastExit})},ye=function(e,t){void 0===t&&(t={});var i={};return i.provide=function(){return this.$validator?{$validator:this.$validator}:{}},i.beforeCreate=function(){!this.$options.$validates&&this.$parent||(this.$validator=ge(this,t));var i=me(this.$options.inject);this.$validator||!t.inject||i||(this.$validator=ge(this,t)),(i||this.$validator)&&(!i&&this.$validator&&(e.util.defineReactive(this.$validator,"errors",this.$validator.errors),e.util.defineReactive(this.$validator,"fieldBag",this.$validator.fieldBag)),this.$options.computed||(this.$options.computed={}),this.$options.computed[t.errorBagName||"errors"]=function(){return this.$validator.errors},this.$options.computed[t.fieldsBagName||"fields"]=function(){return this.$validator.fieldBag})},i},_e={locale:"en",delay:0,errorBagName:"errors",dictionary:null,strict:!0,fieldsBagName:"fields",classes:!1,classNames:void 0,events:"input|blur",inject:!0,fastExit:!0},$e=function(e,t){return t&&t.$validator?t.$validator.fields.find({id:E(e,"id")}):null},be=function(e){return e=z({},_e,e),{bind:function(t,i,r){var n=r.context.$validator;if(n){var s=Q.generate(t,i,r,e);n.attach(s)}else M("No validator instance is present on vm, did you forget to inject '$validator'?")},inserted:function(e,t,i){var r=t.value,n=(t.expression,i.context),s=$e(e,n);if(s){var a=S(r)&&r.rules?r.scope:j(e);s.update({scope:a})}},update:function(e,t,i){var r=t.expression,n=t.value,s=i.context,a=$e(e,s);if(a&&r&&a.expression!==JSON.stringify(n)){var o=S(n)&&n.rules?n.scope:j(e);a.update({expression:n,scope:o,rules:U({expression:r,value:n},e)})}},unbind:function(e,t,i){var r=i.context,n=$e(e,r);n&&r.$validator.detach(n)}}},Ae=function(e){return Array.isArray(e)?e.reduce(function(e,t){return~t.indexOf(".")?e[t.split(".")[1]]=t:e[t]=t,e},{}):e};return{install:function(e,t){if(ve)M("already installed, Vue.use(VeeValidate) should only be called once.");else{ve=e;var i=z({},_e,t);i.dictionary&&de.updateDictionary(i.dictionary),de.setLocale(i.locale),de.setStrictMode(i.strict),ve.mixin(ye(ve,i)),ve.directive("validate",be(i))}},mapFields:function(e){var t=Ae(e);return Object.keys(t).reduce(function(e,i){var r=t[i];return e[i]=function(){if(this.$validator.fieldBag[r])return this.$validator.fieldBag[r];if(r.indexOf(".")<=0)return{};var e=r.split("."),t=e[0],i=e[1];return Z("$"+t+"."+i,this.$validator.fieldBag,{})},e},{})},Validator:de,ErrorBag:Y,Rules:F,version:"2.0.0-rc.8"}});
{
"name": "vee-validate",
"version": "2.0.0-rc.7",
"version": "2.0.0-rc.8",
"description": "Simple Vue.js input validation plugin",

@@ -33,2 +33,8 @@ "main": "dist/vee-validate.js",

"/helpers/"
],
"collectCoverageFrom": [
"src/**/*.js",
"!src/index.js",
"!src/messages.js",
"!src/plugins/date/messages.js"
]

@@ -58,3 +64,3 @@ },

"validator": "^7.2.0",
"vue": "^2.3.4"
"vue": "^2.4.2"
},

@@ -61,0 +67,0 @@ "peerDependencies": {

@@ -12,3 +12,3 @@ <p align="center">

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/087bd788687c4ccab6650756ce56fa05)](https://www.codacy.com/app/baianat/vee-validate?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=baianat/vee-validate&amp;utm_campaign=Badge_Grade)
[![CDNJS](https://img.shields.io/cdnjs/v/vee-validate.svg)](https://cdnjs.com/libraries/vee-validate)
[![CDNJS](https://img.shields.io/cdnjs/v/vee-validate.svg)](https://cdnjs.com/libraries/vee-validate/2.0.0-rc.8)
[![npm](https://img.shields.io/npm/dm/vee-validate.svg)](https://npm-stat.com/charts.html?package=vee-validate)

@@ -38,13 +38,6 @@ [![npm](https://img.shields.io/npm/v/vee-validate.svg)](https://www.npmjs.com/package/vee-validate)

or if you are using **Vue 1.0 (deprecated)** :
```
npm install vee-validate@prev --save
```
### yarn
**Note:** Vue 1.0 version is currently deprecated and does not have the latest features and fixes.
#### bower
```
bower install vee-validate#2.0.0-rc.7--save
yarn add vee-validate
```

@@ -57,3 +50,3 @@

- [jsdelivr cdn](https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js)
- [unpkg](https://unpkg.com/vee-validate@2.0.0-rc.7)
- [unpkg](https://unpkg.com/vee-validate@2.0.0-rc.8)

@@ -122,3 +115,2 @@ ### Getting Started

- [Form Validation using Vue.js 2](https://dotdev.co/form-validation-using-vue-js-2-35abd6b18c5d#.m95idzlj2) by [Alex Kyriakidis](https://github.com/hootlex)
- [Vue Multi Step Form](http://statemachine.davestewart.io/html/examples/vue/vue-sign-up.html) by [Dave Stewart](https://github.com/davestewart)

@@ -125,0 +117,0 @@ - [Laravel 5.4 with Vue and Vee Validate (Windows)](https://medium.com/@kanokpit.skuberg/laravel-5-4-with-vue-and-vee-validate-windows-c3ff7f4cdabc) by [Noi Skuberg](https://medium.com/@kanokpit.skuberg)

@@ -81,6 +81,20 @@ import Dictionary from './../src/dictionary';

test('can set attributes', () => {
const dict = new Dictionary();
const dict = new Dictionary({
en: {
attributes: {},
messages: {}
}
});
dict.setAttribute('en', 'email', 'Email Address');
expect(dict.getAttribute('en', 'email')).toBe('Email Address');
// test graceful population of non-existant directories.
dict.setAttribute('fr', 'email', 'address');
expect(dict.container.fr).toEqual({
messages: {},
attributes: {
email: 'address'
}
});
});

@@ -138,5 +152,6 @@

expect(dict.getFieldMessage('en', 'name', 'alpha')).toBe('custom message');
expect(dict.getFieldMessage('fr', 'name', 'alpha')).toBe(undefined);
});
test('able to get and set dateformat attributes', () => {
test('able to get and set date format attributes', () => {
const dict = new Dictionary();

@@ -148,2 +163,3 @@ dict.setDateFormat('en', 'MM/DD/YYYY');

expect(dict.getDateFormat('ar')).toBe('DD/MM/YYYY');
expect(dict.getDateFormat('ru')).toBe(undefined);
});

@@ -11,4 +11,32 @@ import ErrorBag from './../src/errorBag';

expect(errors.first('name', 'scope1')).toBe('The scoped name is invalid');
// test object form
errors.add({
field: 'name',
msg: 'Hey',
rule: 'r1',
scope: 's1'
})
expect(errors.first('name', 's1')).toBe('Hey');
});
test('updates error objects by matching against field id', () => {
const errors = new ErrorBag();
errors.add({
id: 'myId',
field: 'name',
msg: 'Hey',
rule: 'r1',
scope: 's1'
});
expect(errors.first('name', 's1')).toBe('Hey');
errors.update('myId', { scope: 's2' });
expect(errors.has('name', 's1')).toBe(false);
expect(errors.first('name', 's2')).toBe('Hey');
// silent failure
errors.update('myId1', { scope: 's2' });
expect(errors.count()).toBe(1);
});
test('removes errors for a specific field', () => {

@@ -27,2 +55,16 @@ const errors = new ErrorBag();

test('removes errors by matching against the field id', () => {
const errors = new ErrorBag();
errors.add({
id: 'myId',
field: 'name',
msg: 'Hey',
rule: 'r1',
scope: 's1'
})
expect(errors.count()).toBe(1);
errors.removeById('myId');
expect(errors.count()).toBe(0);
});
test('removes errors for a specific field and scope', () => {

@@ -230,2 +272,11 @@ let errors = new ErrorBag();

});
expect(errors.collect(null, undefined, false)).toEqual({
email: [
{ field: 'email', msg: 'The email is invalid', scope: null, rule: 'rule1' },
{ field: 'email', msg: 'The email is shorter than 3 chars.', scope: null, rule: 'rule1' },
],
name: [
{ field: 'name', msg: 'The name is invalid', scope: null, rule: 'rule1' },
]
});
});

@@ -232,0 +283,0 @@

@@ -51,20 +51,3 @@ export default {

size: size * 1024
}),
dimensionsTest: (dimensions, fails = false) => {
global.window.URL = {
createObjectURL() {
return 'data:image/png;base64,AAAAAAA';
}
};
global.Image = class Image {
// eslint-disable-next-line
set src(value) {
this.width = dimensions.width;
this.height = dimensions.height;
this[fails ? 'onerror' : 'onload']();
}
};
}
})
};

@@ -15,14 +15,2 @@ import moment from 'moment';

const format = 'DD/MM/YYYY';
helpers.querySelector({ name: 'otherField', value: '11/09/2016' });
expect(validate('12/09/2016', ['otherField', false, format])).toBe(true);
expect(validate('10/09/2016', ['otherField', false, format])).toBe(false);
// test inclusion
helpers.querySelector({ name: 'otherField', value: '11/09/2016' });
expect(validate('11/09/2016', ['otherField', true, format])).toBe(true);
expect(validate('11/09/2016', ['otherField', false, format])).toBe(false);
});
test('it accepts dates instead of fields', () => {
const format = 'DD/MM/YYYY';
expect(validate('12/09/2016', ['11/09/2016', false, format])).toBe(true);

@@ -32,4 +20,4 @@ expect(validate('10/09/2016', ['11/09/2016', false, format])).toBe(false);

// test inclusion
expect(validate('12/09/2016', ['12/09/2016', true, format])).toBe(true);
expect(validate('10/09/2016', ['10/09/2016', false, format])).toBe(false);
expect(validate('11/09/2016', ['11/09/2016', true, format])).toBe(true);
expect(validate('11/09/2016', ['11/09/2016', false, format])).toBe(false);
});

@@ -39,7 +27,4 @@

const format = 'DD/MM/YYYY';
helpers.querySelector({ name: 'otherField', value: '11/15/2016' });
expect(validate('12/09/2016', ['otherField', false, format])).toBe(false);
helpers.querySelector({ name: 'otherField', value: '11/10/2016' });
expect(validate('31/09/2016', ['otherField', false, format])).toBe(false); // invalid value.
expect(validate('12/09/2016', ['11/15/2016', false, format])).toBe(false);
expect(validate('31/09/2016', ['11/10/2016', false, format])).toBe(false);
});

@@ -17,3 +17,4 @@ import validate from './../../src/rules/alpha_dash';

true,
false
false,
['a', 'b', 'cdef-_']
];

@@ -24,3 +25,4 @@

{},
' '
' ',
[' ', 'ada as']
];

@@ -30,3 +32,3 @@

test('validates that the string may only contain alpha-numeric characters as well as dashes and spaces', () => {
expect.assertions(17);
expect.assertions(19);
// valid.

@@ -48,2 +50,6 @@ valid.forEach(value => expect(validate(value)).toBe(true));

expect(validate('peace', ['ru'])).toBe(false);
// non-existant locale defaults to english validation.
expect(validate('peace', ['blah'])).toBe(true);
expect(validate('اين اشيائي', ['blah'])).toBe(false); // non english characters.
});

@@ -15,3 +15,4 @@ import validate from './../../src/rules/alpha_num';

true,
false
false,
['asdad', 123, 'asd2123']
];

@@ -22,8 +23,9 @@

'123-abc',
{},
' '
{},
' ',
['asdasda ', '123 ad']
];
test('validates that the string may only contain alphabetic and numeric characters', () => {
expect.assertions(16);
expect.assertions(18);
// valid.

@@ -44,2 +46,6 @@ valid.forEach(value => expect(validate(value)).toBe(true));

expect(validate('peace', ['ru'])).toBe(false);
// non-existant locale defaults to english validation.
expect(validate('peace', ['blah'])).toBe(true);
expect(validate('اين اشيائي', ['blah'])).toBe(false); // non english characters.
});

@@ -14,3 +14,4 @@ import validate from './../../src/rules/alpha_spaces';

'this is sparta',
' '
' ',
['adasd dasdasda', 'yy']
];

@@ -23,7 +24,8 @@

'abc123',
123
123,
['adasd dasdasda', '123']
];
test('validates that the string may only contain alphabetic characters and spaces', () => {
expect.assertions(16);
expect.assertions(18);
// valid.

@@ -44,2 +46,6 @@ valid.forEach(value => expect(validate(value)).toBe(true));

expect(validate('peace', ['ru'])).toBe(false);
// non-existant locale defaults to english validation.
expect(validate('peace', ['blah'])).toBe(true);
expect(validate('اين اشيائي', ['blah'])).toBe(false); // non english characters.
});

@@ -11,3 +11,4 @@ import validate from './../../src/rules/alpha';

true,
false
false,
['abcdefg', 'hijk', 'lmnopq']
];

@@ -18,8 +19,9 @@

'1234567a89',
{},
' '
{},
' ',
['abcdefg', 'hijk', 'lmnopq123']
];
test('validates that the string may only contains alphabetic characters', () => {
expect.assertions(12);
expect.assertions(14);
// valid.

@@ -40,2 +42,6 @@ valid.forEach(value => expect(validate(value)).toBe(true));

expect(validate('peace', ['ru'])).toBe(false);
// non-existant locale defaults to english validation.
expect(validate('peace', ['blah'])).toBe(true);
expect(validate('اين اشيائي', ['blah'])).toBe(false); // non english characters.
});

@@ -15,15 +15,2 @@ import moment from 'moment';

const format = 'DD/MM/YYYY';
helpers.querySelector({ name: 'otherField', value: '11/09/2016' });
expect(validate('12/09/2016', ['otherField', false, format])).toBe(false);
expect(validate('10/09/2016', ['otherField', false, format])).toBe(true);
// test inclusion
helpers.querySelector({ name: 'otherField', value: '11/09/2016' });
expect(validate('11/09/2016', ['otherField', true, format])).toBe(true);
expect(validate('11/09/2016', ['otherField', false, format])).toBe(false);
});
test('it accepts dates instead of fields', () => {
const format = 'DD/MM/YYYY';
expect(validate('12/09/2016', ['11/09/2016', false, format])).toBe(false);

@@ -33,4 +20,4 @@ expect(validate('10/09/2016', ['11/09/2016', false, format])).toBe(true);

// test inclusion
expect(validate('12/09/2016', ['12/09/2016', false, format])).toBe(false);
expect(validate('10/09/2016', ['10/09/2016', true, format])).toBe(true);
expect(validate('11/09/2016', ['11/09/2016', true, format])).toBe(true);
expect(validate('11/09/2016', ['11/09/2016', false, format])).toBe(false);
});

@@ -40,6 +27,4 @@

const format = 'DD/MM/YYYY';
helpers.querySelector({ name: 'otherField', value: '11/15/2016' });
expect(validate('12/09/2016', ['otherField', false, format])).toBe(false);
helpers.querySelector({ name: 'otherField', value: '11/09/2016' });
expect(validate('32/08/2016', ['otherField', false, format])).toBe(false); // invalid value.
expect(validate('12/09/2016', ['11/15/2016', false, format])).toBe(false);
expect(validate('32/08/2016', ['11/09/2016', false, format])).toBe(false); // invalid value.
});

@@ -6,3 +6,4 @@ import validate from './../../src/rules/between';

2,
3
3,
[1, 2, 3]
];

@@ -12,3 +13,2 @@

'',
[],
undefined,

@@ -23,7 +23,8 @@ null,

4,
-1
-1,
[4, 5, 6]
];
test('validates numbers range', () => {
expect.assertions(15);
expect.assertions(16);
const params = [1, 3]; // min: 1, max: 3

@@ -30,0 +31,0 @@ valid.forEach(value => expect(validate(value, params)).toBe(true));

@@ -5,12 +5,6 @@ import validate from './../../src/rules/confirmed';

test('validates a field confirmation', () => {
helpers.querySelector({ name: 'somefield', value: 'p@$$word' });
expect(validate('p@$$word', 'somefield')).toBe(true);
expect(validate('p@$$word', 'p@$$word')).toBe(true);
// field not found.
helpers.querySelector(false);
expect(validate('p@$$word', 'somefield')).toBe(false);
// fields do not match.
helpers.querySelector({ name: 'somefield', value: 'p@$$word' });
expect(validate('password', 'somefield')).toBe(false);
expect(validate('password', 'p@$$word')).toBe(false);
});

@@ -8,2 +8,3 @@ import validate from './../../src/rules/decimal';

expect(validate('11.223123818')).toBe(true);
expect(validate(['11.223123818', '13.1231'])).toBe(true);
expect(validate('11.223123818', [])).toBe(true);

@@ -25,5 +26,5 @@ expect(validate('11.223123818', null)).toBe(true);

expect(validate('1-1.22', params)).toBe(false);
expect(validate([])).toBe(false);
expect(validate(['1-2.223123818', '1-3.1231'])).toBe(false);
expect(validate('a')).toBe(false);
expect(validate('1.11', ['0'])).toBe(false);
});

@@ -7,3 +7,4 @@ import validate from './../../src/rules/digits';

'789',
'012'
'012',
['012', '789']
];

@@ -13,3 +14,2 @@

'',
[],
undefined,

@@ -21,7 +21,8 @@ null,

'abc',
'12a'
'12a',
['123', '12a']
];
test('validates required', () => {
expect.assertions(13);
test('validates digits', () => {
expect.assertions(14);
const params = [3]; // 3 digits only.

@@ -28,0 +29,0 @@ valid.forEach(value => expect(validate(value, params)).toBe(true));

import validate from './../../src/rules/dimensions';
import helpers from './../helpers';
let fails = false;
beforeEach(() => {
global.window.URL = {
createObjectURL() {
return 'data:image/png;base64,AAAAAAA';
}
};
global.window.webkitURL = {
createObjectURL() {
return 'data:image/png;base64,AAAAAAA';
}
};
global.Image = class Image {
set src(value) {
this.width = 150;
this.height = 100;
this[fails ? 'onerror' : 'onload']();
}
};
});
// eslint-disable-next-line
test('validates image dimensions', async () => {
const params = [150, 100];
// Prepares Calls to window and Image objects.
helpers.dimensionsTest({ width: 150, height: 100 });
let result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], [150, 100]);
expect(result[0].valid).toBe(true);
let result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], params);
expect(result[0].valid).toBe(true);
// mock a failing Image, even with the right dimensions.
fails = true;
result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], [150, 100]);
expect(result[0].valid).toBe(false);
// mock a failing Image, even with the right dimensions.
helpers.dimensionsTest({ width: 150, height: 100}, true);
result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], params);
expect(result[0].valid).toBe(false);
fails = false;
// not an image.
result = await validate([helpers.file('file.pdf', 'application/pdf', 10)], [150, 100]);
expect(result).toBe(false);
// not an image.
result = await validate([helpers.file('file.pdf', 'application/pdf', 10)], params);
expect(result).toBe(false);
// wrong dimensions.
result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], [15, 10]);
expect(result[0].valid).toBe(false);
// wrong dimensions.
helpers.dimensionsTest({ width: 30, height: 20});
result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], params);
expect(result[0].valid).toBe(false);
global.URL = undefined; // test webkit fallback.
result = await validate([helpers.file('file.jpg', 'image/jpeg', 10)], [150, 100]);
expect(result[0].valid).toBe(true);
});

@@ -10,3 +10,4 @@ import validate from './../../src/rules/email';

'other.email-with-dash@example.com',
'disposable.style.email.with+symbol@example.com'
'disposable.style.email.with+symbol@example.com',
['someone@example.com', 'someone12@example.com']
];

@@ -22,6 +23,7 @@

'someone@example.c',
['someone@example.com', 'someone@example.c']
];
test('validates that the string is a valid email address', () => {
expect.assertions(14);
expect.assertions(16);
// valid.

@@ -28,0 +30,0 @@ valid.forEach(value => expect(validate(value)).toBe(true));

@@ -8,5 +8,7 @@ import validate from './../../src/rules/in';

list.forEach(value => expect(validate(value, list)).toBe(true));
expect(validate([1, 2, 3], list)).toBe(true);
// invalid
[0, 6].forEach(value => expect(validate(value, list)).toBe(false));
expect(validate([6], list)).toBe(false);
});

@@ -6,5 +6,7 @@ import validate from './../../src/rules/ip';

['192.168.1.1', '255.255.255.255'].forEach(value => expect(validate(value)).toBe(true));
expect(validate(['192.168.1.1', '255.255.255.255'])).toBe(true);
// invalid
['192.168.a.1', '255.255.255.256', '23.a.f.234'].forEach(value => expect(validate(value)).toBe(false));
expect(validate(['192.168.a.1', '255.255.255.256', '23.a.f.234'])).toBe(false);
});

@@ -19,2 +21,7 @@

].forEach(value => expect(validate(value, [6])).toBe(true));
expect(validate([
'::1',
'2001:db8:0000:1:1:1:1:1',
'::ffff:127.0.0.1'
], [6])).toBe(true);

@@ -29,2 +36,9 @@ // invalid

].forEach(value => expect(validate(value, [6])).toBe(false));
expect(validate([
'127.0.0.1',
'0.0.0.0',
'255.255.255.255',
'1.2.3.4',
'::ffff:287.0.0.1',
], [6])).toBe(false);
});

@@ -8,5 +8,7 @@ import validate from './../../src/rules/notIn';

[0, 6].forEach(value => expect(validate(value, list)).toBe(true));
expect(validate([6], list)).toBe(true);
// invalid
list.forEach(value => expect(validate(value, list)).toBe(false));
expect(validate([1, 2, 3], list)).toBe(false);
});

@@ -16,3 +16,2 @@ import validate from './../../src/rules/numeric';

{},
[],
'+123',

@@ -23,8 +22,10 @@ '-123'

test('validates that the string only contains numeric characters', () => {
expect.assertions(12);
expect.assertions(13);
// valid.
valid.forEach(value => expect(validate(value)).toBe(true));
expect(validate(valid)).toBe(true);
// invalid
invalid.forEach(value => expect(validate(value)).toBe(false));
expect(validate(invalid)).toBe(false);
});

@@ -27,1 +27,6 @@ import validate from './../../src/rules/required';

});
test('false value can be invalidated', () => {
expect(validate(false)).toBe(true);
expect(validate(false, [true])).toBe(false);
});

@@ -48,10 +48,10 @@ import validate from './../../src/rules/url';

test('should validate urls', () => {
expect.assertions(38);
expect.assertions(40);
// check valid urls.
valid.forEach(url => expect(validate(url)).toBe(true));
expect(validate(valid)).toBe(true);
// check invalid urls.
invalid.forEach(url => {
expect(validate(url)).toBe(false);
});
invalid.forEach(url => expect(validate(url)).toBe(false));
expect(validate(invalid)).toBe(false);

@@ -58,0 +58,0 @@ // test require protocol.

@@ -16,2 +16,14 @@ import * as utils from '../src/utils';

test('sets the data attribute prefixed with the plugin vendor code', () => {
document.body.innerHTML =
`<input id="el" type="text" name="field" data-vv-delay="100">`;
const el = document.querySelector('#el');
expect(utils.getDataAttribute(el, 'delay')).toBe('100');
utils.setDataAttribute(el, 'delay', 200);
expect(utils.getDataAttribute(el, 'delay')).toBe('200');
utils.setDataAttribute(el, 'something', 'value');
expect(utils.getDataAttribute(el, 'something')).toBe('value');
});
test('gets the element scope from the element or from the owning form', () => {

@@ -42,12 +54,21 @@ document.body.innerHTML =

const find = utils.find;
const arr = [
{ el: 'name' },
{ el: 'email' },
{ el: 'address' },
{ el: 'something' },
{ el: 'else' }
];
expect(find(arr, e => e.el === 'name').el).toBe('name');
// testing on a nodelist to check if it converts correctly.
document.body.innerHTML = `
<input class="class" name="i1" id="i1">
<input class="class" name="i2">
<input class="class" name="i3">
`;
const nodeList = document.querySelectorAll('.class');
const el = document.querySelector('#i1');
expect(find(nodeList, el => el.name === 'i1')).toBe(el);
// test polyfill.
let arr = Array.from(nodeList);
arr.find = undefined;
expect(find(arr, e => e.el === 'else').el).toBe('else');
expect(find(arr, el => el.name === 'i1')).toBe(el);
// test not found
arr = [1, 2, 3];
arr.find = undefined;
expect(find(arr, i => i === 4)).toBe(undefined);
});

@@ -57,10 +78,12 @@

const getRules = utils.getRules;
document.body.innerHTML = '<input type="text" name"el" id="el" data-vv-rules="required|email">';
document.body.innerHTML = `
<input type="text" name="el" id="el" data-vv-rules="required|email">
`;
const el = document.querySelector('#el');
expect(getRules(null, null, el)).toBe('required|email');
expect(getRules(null, el)).toBe('required|email');
const exp = 'someexpr';
const expression = 'someexpr';
let value = 'required|email';
expect(getRules(exp, value)).toBe('required|email');
expect(getRules({ expression, value }, el)).toBe('required|email');

@@ -74,3 +97,3 @@ value = {

expect(getRules(exp, value)).toEqual({
expect(getRules({ expression, value }, el)).toEqual({
required: true,

@@ -85,3 +108,3 @@ email: true

expect(getRules(exp, value)).toEqual({
expect(getRules({ expression, value }, el)).toEqual({
required: true,

@@ -94,9 +117,15 @@ email: true

const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o2 = { b: 2, c: 2, d: { a: 1, b: 2 } };
const o3 = { c: 3 };
const result = { a: 1, b: 2, c: 3 };
expect(utils.assign({}, o1, o2, o3)).toEqual(result);
const result = { a: 1, b: 2, c: 3, d: { a: 1, b: 2 } };
expect(utils.assign({}, o1, o2, o3, null)).toEqual(result);
expect(() => {
utils.assign(null, o1);
}).toThrow();
// TODO: test polyfill.
expect(utils.assign({}, o1, o2, o3, null)).toEqual(result);
expect(() => {
utils.assign(null, o1);
}).toThrow();
});

@@ -106,6 +135,13 @@

document.body.innerHTML = '<input id="el" type="text" class="some class">';
const el = document.querySelector('#el');
let el = document.querySelector('#el');
utils.removeClass(el, 'some');
expect(utils.hasClass(el, 'some')).toBe(false);
el.classList = undefined;
// repete for else check.
utils.removeClass(el, 'some');
expect(utils.hasClass(el, 'some')).toBe(false);
// test polyfill.
el = { className: 'some class' };
utils.removeClass(el, 'class');

@@ -117,12 +153,34 @@ expect(utils.hasClass(el, 'class')).toBe(false);

document.body.innerHTML = '<input id="el" type="text">';
const el = document.querySelector('#el');
let el = document.querySelector('#el');
utils.addClass(el, 'some');
expect(utils.hasClass(el, 'some')).toBe(true);
el.classList = undefined;
// reptition has no issues.
utils.addClass(el, 'some');
expect(utils.hasClass(el, 'some')).toBe(true);
expect(el.className).toBe('some');
// test polyfill.
el = { className: 'some' };
expect(utils.hasClass(el, 'class')).toBe(false);
utils.addClass(el, 'class');
expect(utils.hasClass(el, 'class')).toBe(true);
expect(utils.hasClass(el, 'some class')).toBe(true);
});
test('toggles classes', () => {
document.body.innerHTML = '<input id="el" type="text">';
const el = document.querySelector('#el');
utils.toggleClass(el, 'some', true);
expect(utils.hasClass(el, 'some')).toBe(true);
utils.toggleClass(el, 'some', false);
expect(utils.hasClass(el, 'some')).toBe(false);
expect(() => {
utils.toggleClass(el, null, true);
}).not.toThrow();
});
test('converts array like objects to arrays', () => {

@@ -140,5 +198,24 @@ document.body.innerHTML = `

expect(Array.isArray(array)).toBe(true);
// test polyfill.
global.Array.from = undefined;
array = utils.toArray(nodeList);
expect(Array.isArray(array)).toBe(true);
expect(array.length).toBe(3);
});
test('checks if a value path with exists', () => {
const some = {
value: {
path: undefined,
val: 1
}
};
expect(utils.hasPath('value.val', some)).toBe(true); // exists.
expect(utils.hasPath('value.path', some)).toBe(true); // undefined but exists.
expect(utils.hasPath('value.not', some)).toBe(false); // does not.
});
test('gets the value path with a fallback value', () => {

@@ -152,2 +229,5 @@ const some = {

expect(utils.getPath(null, some)).toBe(undefined); // no path.
expect(utils.getPath('value.val', null)).toBe(undefined); // no object.
expect(utils.getPath('value.val', some)).toBe(1); // exists.

@@ -165,3 +245,3 @@ expect(utils.getPath('value.path', some)).toBe(undefined); // undefined but exists.

expect(arg).toBe(argument);
}, 200);
}, 2);

@@ -171,15 +251,91 @@ func(value, argument);

done();
}, 201);
}, 3);
});
test('calls functions immediatly if time is 0', done => {
const [value, argument] = ['someval', 'somearg'];
expect.assertions(2);
const func = utils.debounce((val, arg) => {
expect(val).toBe(value);
expect(arg).toBe(argument);
done();
}, 0);
// test default value.
const func2 = utils.debounce((val, arg) => {
expect(val).toBe(value);
expect(arg).toBe(argument);
});
func(value, argument);
expect.assertions(4);
func2(value, argument);
done();
});
test('warns with branded message', () => {
global.console = { warn: jest.fn() }
utils.warn('Something is not right');
expect(console.warn).toBeCalledWith('[vee-validate] Something is not right');
});
test('it generates a unique id', () => {
// using ES6 Sets to test, FeelsGood.
const ids = new Set();
// test uniqueness on 1000 elements, more than that is unlikely to happen within the same validator.
for (let i = 0; i < 1000; i++) {
ids.add(utils.uniqId());
}
// 1000 unique entries.
expect(ids.size).toBe(1000);
});
test('it normalizes string validation rules', () => {
const rules = utils.normalizeRules('required|email|min:3|dummy:1,2,3|||');
expect(rules).toEqual ({
required: [],
email: [],
min: ['3'],
dummy: ['1', '2', '3']
});
});
test('it normalizes object validation rules', () => {
const rules = utils.normalizeRules({
required: true,
email: true,
min: 3,
dummy: [1, 2, 3],
numeric: false
});
expect(rules).toEqual ({
required: [],
email: [],
min: [3],
dummy: [1, 2, 3]
});
});
test('gets appropiate input event name for inputs', () => {
const text = { type: 'text' };
const select = { tagName: 'SELECT' };
const checkbox = { type: 'checkbox' };
const radio = { type: 'radio' };
const file = { type: 'file' };
expect(utils.getInputEventName(text)).toBe('input');
expect(utils.getInputEventName(select)).toBe('change');
expect(utils.getInputEventName(checkbox)).toBe('change');
expect(utils.getInputEventName(radio)).toBe('change');
expect(utils.getInputEventName(file)).toBe('change');
});
test('creates branded errors', () => {
expect(() => {
throw utils.createError('My Error')
}).toThrowError('[vee-validate] My Error');
});
test('checks if a value is a callable function', () => {
expect(utils.isCallable(null)).toBe(false);
expect(utils.isCallable(() => {})).toBe(true);
});
import Validator from './../src/validator';
import Field from './../src/field';
import helpers from './helpers';
import moment from 'moment';

@@ -43,10 +45,3 @@ // Converts the value to a boolean and returns it in a promise.

test('can validate single values', async () => {
let v = new Validator({
email: 'required|email',
name: 'required|min:3',
title: 'required|min:3|max:255',
content: 'required|max:20',
tags: 'required|in:1,2,3,5'
});
let v = new Validator({ title: 'required|min:3|max:255' });
expect(await v.validate('title', 'abc')).toBe(true);

@@ -63,9 +58,6 @@ expect(await v.validate('title', 'ab')).toBe(false);

test('validates correctly regardless of rule placement', async () => {
test('rule placement does n', async () => {
const v = new Validator({
email: 'required|email',
name: 'required|min:3',
title: 'required|min:3|max:255',
title: 'min:3|max:255|required',
content: 'required|max:20',
tags: 'required|in:1,2,3,5'
});

@@ -88,19 +80,2 @@

test('can add scopes', () => {
const v = new Validator();
expect(v.$scopes.myscope).toBeFalsy();
v.addScope('myscope');
expect(v.$scopes.myscope).toBeTruthy();
expect(v.$scopes.myscope.field).toBeFalsy();
v.attach('field', 'required', { scope: 'myscope' });
expect(v.$scopes.myscope.field).toBeTruthy();
v.addScope('myscope'); // doesn't overwrite if it exists.
expect(v.$scopes.myscope.field).toBeTruthy();
// scopes can be numbers
v.addScope(1);
expect(v.$scopes[1]).toBeTruthy();
});
test('can allow rules object', async () => {

@@ -139,3 +114,3 @@ const v = new Validator();

})).toBe(true);
expect(v.errorBag.all()).toEqual([]);
expect(v.errors.all()).toEqual([]);
});

@@ -171,4 +146,3 @@

expect(result).toBe(true);
expect(v.errorBag.all()).toEqual([]);
Validator.setStrictMode(true); // reset strictMode for remaining tests.
expect(v.errors.all()).toEqual([]);
});

@@ -192,3 +166,3 @@

v.setStrictMode(false);
v.strict = false;
let result = await v.validateAll({

@@ -229,3 +203,3 @@ imp: 'Tyrion Lannister',

expect(v.errorBag.all()).toEqual([
expect(v.errors.all()).toEqual([
'The email field must be a valid email.',

@@ -237,3 +211,3 @@ 'The name field is required.',

]);
expect(v.getErrors().all()).toEqual([
expect(v.errors.all()).toEqual([
'The email field must be a valid email.',

@@ -249,5 +223,5 @@ 'The name field is required.',

expect(v.$scopes.__global__.field).toBeFalsy();
expect(v.fields.find({ name: 'field' })).toBeFalsy();
v.attach('field', 'required|min:5');
expect(v.$scopes.__global__.field).toBeTruthy();
expect(v.fields.find({ name: 'field' })).toBeTruthy();
expect(await v.validate('field', 'less')).toBe(false);

@@ -257,10 +231,10 @@ expect(await v.validate('field', 'not less')).toBe(true);

test('can attach new fields and display errors with custom names', async () => {
test('can display errors with custom field names', async () => {
const v = new Validator();
v.attach('field', 'min:5', { prettyName: 'pretty' });
v.attach('field', 'min:5', { alias: 'pretty' });
await v.validate('field', 'wo');
expect(v.getErrors().first('field')).toBe('The pretty field must be at least 5 characters.');
expect(v.errors.first('field')).toBe('The pretty field must be at least 5 characters.');
});
test('attaching new rules to an existing field should overwrite the old rules', async () => {
test.skip('attaching new rules to an existing field should overwrite the old rules', async () => {
const v = new Validator();

@@ -272,3 +246,3 @@ v.attach('someField', 'required|min:3');

v.attach('someField', 'min:1|max:3');
expect(v.errorBag.collect('someField').length).toBe(0); // are field errors cleared?
expect(v.errors.collect('someField').length).toBe(0); // are field errors cleared?
expect(await v.validate('someField', 'wo')).toBe(true);

@@ -279,30 +253,2 @@

test('can append new validations to a field', async () => {
const validator = new Validator({
email: 'required|email',
name: 'required|min:3',
title: 'required|min:3|max:255',
content: 'required|max:20',
tags: 'required|in:1,2,3,5'
});
validator.attach('field', 'min:2', { prettyName: 'pretty' });
validator.append('field', 'max:3', { prettyName: 'pretty' });
expect(await validator.validate('field', 'wo')).toBe(true);
expect(await validator.validate('field', 'wow')).toBe(true);
expect(await validator.validate('field', 'woww')).toBe(false);
expect(await validator.validate('field', 'w')).toBe(false);
// attaches if the field doesn't exist.
const v = new Validator();
v.attach('field', 'min:2');
v.detach('field');
v.append('field', 'min:3');
expect(await v.validate('field', 'wo')).toBe(false);
expect(await v.validate('field', 'wow')).toBe(true);
});
test('fails when trying to validate a non-existant field when strict mode is true.', async () => {

@@ -320,9 +266,9 @@ const v = new Validator({

test('can detach rules', () => {
test('can detach fields', () => {
const v = new Validator();
v.attach('field', 'required');
expect(v.$scopes.__global__.field).toBeTruthy();
expect(v.fields.find({ name: 'field' })).toBeTruthy();
v.detach('field');
expect(v.$scopes.__global__.field).toBeFalsy();
expect(v.fields.find({ name: 'field' })).toBeFalsy();
// Silently fails if the field does not exist.

@@ -337,18 +283,15 @@ expect(() => {

v.attach('field', 'alpha', { getter: () => '123', context: () => 'context' });
v.attach('field', 'alpha', { scope: 'myscope', getter: () => '123', context: () => 'context' });
v.attach('field', 'alpha', { scope: 'otherscope', getter: () => '123', context: () => 'context' });
v.attach('field', 'alpha', { getter: () => '123' });
v.attach('field', 'alpha', { scope: 'myscope', getter: () => '123' });
v.attach('field', 'alpha', { scope: 'otherscope', getter: () => '123' });
// only '__global__' scope got validated.
expect(await v.validateAll()).toBe(false);
expect(v.errorBag.count()).toBe(1);
expect(v.errors.count()).toBe(1);
// the second scope too.
expect(await v.validateAll('myscope')).toBe(false);
expect(v.errorBag.count()).toBe(2);
v.errorBag.clear();
expect(v.errors.count()).toBe(2);
v.errors.clear();
expect(await v.validateScopes()).toBe(false);
expect(v.errorBag.count()).toBe(3);
expect(v.errors.count()).toBe(3);
});

@@ -364,11 +307,11 @@

// only '__global__' scope got validated.
// only global scope got validated.
expect(await v.validateAll({ field: null })).toBe(false);
expect(v.errorBag.count()).toBe(1);
expect(v.errors.count()).toBe(1);
// this time only 'myscope' got validated.
v.errorBag.clear();
v.errors.clear();
expect(await v.validateAll({ field: null, anotherfield: null }, 'myscope')).toBe(false);
expect(v.errorBag.count()).toBe(2);
})
expect(v.errors.count()).toBe(2);
});

@@ -378,4 +321,4 @@ test('can find errors by field and rule', async () => {

expect(await v.validate('name', 12)).toBe(false);
expect(v.errorBag.first('name:alpha')).toBeTruthy();
expect(v.errorBag.first('name:required')).toBeFalsy();
expect(v.errors.first('name:alpha')).toBeTruthy();
expect(v.errors.first('name:required')).toBeFalsy();
});

@@ -389,3 +332,3 @@

expect(await v.validate('anotherField', 1)).toBe(false);
expect(v.errorBag.first('anotherField')).toBe('The anotherField value is not valid.');
expect(v.errors.first('anotherField')).toBe('The anotherField value is not valid.');
});

@@ -404,3 +347,3 @@

expect(await v.validate('anotherField', 0)).toBe(false);
expect(v.errorBag.first('anotherField')).toBe('The anotherField field value is not truthy.');
expect(v.errors.first('anotherField')).toBe('The anotherField field value is not truthy.');
});

@@ -421,3 +364,3 @@

expect(await v.validate('anotherField', 1)).toBe(false);
expect(v.errorBag.first('anotherField')).toBe('The anotherField field value is not falsy.');
expect(v.errors.first('anotherField')).toBe('The anotherField field value is not falsy.');

@@ -428,3 +371,3 @@ v.setLocale('ar');

expect(await v.validate('anotherField', 1)).toBe(false);
expect(v.errorBag.first('anotherField')).toBe('Some Arabic Text');
expect(v.errors.first('anotherField')).toBe('Some Arabic Text');
});

@@ -443,5 +386,5 @@

loc.attach('name', 'alpha');
await loc.validate('name', '1234', '__global__');
await loc.validate('name', '1234');
expect(loc.locale).toBe('ar');
expect(loc.getErrors().first('name')).toBe('البتاعة لازم يكون حروف بس');
expect(loc.errors.first('name')).toBe('البتاعة لازم يكون حروف بس');
});

@@ -476,3 +419,3 @@

await loc.validate('first_name', '0123');
expect(loc.errorBag.first('first_name')).toBe('The first_name field may only contain alphabetic characters.');
expect(loc.errors.first('first_name')).toBe('The first_name field may only contain alphabetic characters.');
}

@@ -489,7 +432,7 @@ );

await loc.validate('first_name', '0123');
expect(loc.errorBag.first('first_name')).toBe('first_name is alphabetic.');
expect(loc.errors.first('first_name')).toBe('first_name is alphabetic.');
loc.setLocale('ar');
await loc.validate('first_name', '0123');
expect(loc.errorBag.first('first_name')).toBe('first_name يجب ان يحتوي على حروف فقط.');
expect(loc.errors.first('first_name')).toBe('first_name يجب ان يحتوي على حروف فقط.');

@@ -500,3 +443,3 @@ loc.updateDictionary({

await loc.validate('first_name', '0123');
expect(loc.errorBag.first('first_name')).toBe('My name is jeff');
expect(loc.errors.first('first_name')).toBe('My name is jeff');
});

@@ -514,6 +457,6 @@

await v1.validate('first_name', '213');
expect(v1.errorBag.first('first_name')).toBe('عايز حروف');
expect(v1.errors.first('first_name')).toBe('عايز حروف');
await v2.validate('first_name', '213');
expect(v2.errorBag.first('first_name')).toBe('عايز حروف');
expect(v2.errors.first('first_name')).toBe('عايز حروف');

@@ -523,23 +466,7 @@ // doesn't matter which instance sets the locale.

await v1.validate('first_name', '213');
expect(v1.errorBag.first('first_name')).toBe('is alphabetic');
expect(v1.errors.first('first_name')).toBe('is alphabetic');
await v2.validate('first_name', '213');
expect(v2.errorBag.first('first_name')).toBe('is alphabetic');
expect(v2.errors.first('first_name')).toBe('is alphabetic');
});
test('resolves promises to booleans', async () => {
const params = [150, 100];
const v = new Validator({
image: 'dimensions:150,100'
});
helpers.dimensionsTest({ width: 150, height: 100 }, false, global);
expect(await v.validate('image', [helpers.file('file.jpg', 'image/jpeg', 10)])).toBe(true);
helpers.dimensionsTest({ width: 150, height: 100}, true, global);
expect(await v.validate('image', [helpers.file('file.jpg', 'image/jpeg', 10)])).toBe(false);
helpers.dimensionsTest({ width: 30, height: 20}, false, global);
expect(await v.validate('image', [helpers.file('file.jpg', 'image/jpeg', 10)])).toBe(false);
});
test('promises can return booleans directly', async () => {

@@ -565,9 +492,16 @@ Validator.extend('direct', (value) => {

test('installs date validators', async () => {
const moment = require('moment');
document.body.innerHTML = `<input type="text" name="field" value="" id="el">`;
const el = document.querySelector('#el');
expect(Validator.installDateTimeValidators(moment)).toBe(true);
const v = new Validator({ birthday: 'date_format:DD/MM/YYYY|after:field' });
const v = new Validator();
v.attach({
name: 'birthday',
vm: {
$el: document.body
},
rules: 'date_format:DD/MM/YYYY|after:field'
});
helpers.querySelector({ name: 'field', value: '02/01/2008' });
el.value = '02/01/2008';
expect(await v.validate('birthday', '01/12/2008')).toBe(true);
expect(await v.validate('birthday', '01/01/2008')).toBe(false);

@@ -578,2 +512,3 @@ });

const v = new Validator({ time: 'date_format:HH:mm' });
expect(Validator.installDateTimeValidators(moment)).toBe(true);
expect(await v.validate('time', '15:30')).toBe(true);

@@ -585,5 +520,13 @@ expect(await v.validate('time', '1700')).toBe(false);

global.moment = require('moment');
const v = new Validator({ birthday: 'date_format:DD/MM/YYYY|after:field' });
helpers.querySelector({ name: 'field', value: '02/01/2008' });
document.body.innerHTML = `<input type="text" name="field" value="" id="el">`;
const el = document.querySelector('#el');
const v = new Validator();
v.attach({
name: 'birthday',
vm: {
$el: document.body
},
rules: 'date_format:DD/MM/YYYY|after:field'
});
el.value = '02/01/2008';
expect(await v.validate('birthday', '01/12/2008')).toBe(true);

@@ -607,3 +550,3 @@ expect(await v.validate('birthday', '01/01/2008')).toBe(false);

expect(await v.validate('email', 'notvalidemail')).toBe(false);
expect(v.getErrors().first('email')).toBe('The Email Address field must be a valid email.');
expect(v.errors.first('email')).toBe('The Email Address field must be a valid email.');
});

@@ -639,6 +582,13 @@

test('can translate target field for field dependent validations', async () => {
const v = new Validator({
birthday: 'date_format:DD-MM-YYYY|after:birthday_min'
global.moment = require('moment');
document.body.innerHTML = `<input type="text" name="birthday_min" value="" id="el">`;
const el = document.querySelector('#el');
const v = new Validator();
v.attach({
name: 'birthday',
vm: {
$el: document.body
},
rules: 'date_format:DD-MM-YYYY|after:birthday_min'
});
v.updateDictionary({

@@ -653,5 +603,5 @@ en: {

helpers.querySelector({ name: 'birthday_min', value: '12-09-2017' });
el.value = '12-09-2017';
await v.validate('birthday', '11-09-2017');
expect(v.errorBag.first('birthday')).toBe('The Birthday must be after Some Date.');
expect(v.errors.first('birthday')).toBe('The Birthday must be after Some Date.');
});

@@ -661,10 +611,16 @@

test('auto detect confirmation field when none given', async () => {
const v = new Validator({
password: 'confirmed'
document.body.innerHTML = `<input type="text" name="password_confirmation" value="secret" id="el">`;
const el = document.querySelector('#el');
const v = new Validator();
v.attach({
name: 'password',
vm: {
$el: document.body
},
rules: 'confirmed'
});
helpers.querySelector({ name: 'password_confirmation', value: 'secret' });
expect(await v.validate('password', 'secret')).toBe(true);
expect(await v.validate('password', 'fail')).toBe(false);
expect(v.errorBag.first('password')).toBe('The password confirmation does not match.');
expect(v.errors.first('password')).toBe('The password confirmation does not match.');
});

@@ -691,3 +647,3 @@

expect(v.errorBag.first('field')).toBe('Not correct');
expect(v.errors.first('field')).toBe('Not correct');
});

@@ -734,7 +690,7 @@

expect(v.errorBag.first('reason_field')).toBe('Not this value');
expect(v.errors.first('reason_field')).toBe('Not this value');
expect(await v.validate('reason_field', false)).toBe(false);
expect(v.errorBag.first('reason_field')).toBe('Something went wrong');
expect(v.errors.first('reason_field')).toBe('Something went wrong');
});

@@ -754,15 +710,19 @@

test('calling validate without args will trigger validateAll', async () => {
const v = new Validator();
v.validateAll = jest.fn(async () => {});
await v.validate();
expect(v.validateAll).toHaveBeenCalled();
});
test('can fetch the values using getters when not specifying values in validateAll', async () => {
const v = new Validator();
const getter = (context) => {
return context.value
};
let toggle = false;
const context = t => {
toggle = ! toggle;
return { value: toggle ? 'valid' : '123' }
const getter = () => {
toggle = !toggle;
return toggle ? 'valid' : '123';
};
// must use the attach API.
v.attach('name', 'required|alpha', { prettyName: 'Full Name', context, getter });
v.attach('name', 'required|alpha', { getter });

@@ -776,11 +736,7 @@ expect(await v.validateAll()).toBe(true);

const v1 = new Validator();
const contexts = [
() => ({ value: 'martin' }),
() => ({ value: 'invalid value' })
];
const getter = (c) => c.value;
const getter1 = () => 'martin';
const getter2 = () => 'invalid value';
// must use the attach API.
v1.attach('name', 'required|alpha', { scope: 'scope1', context: contexts[0], getter });
v1.attach('name_two', 'required|alpha', { scope: 'scope2', context: contexts[1], getter });
v1.attach('name', 'required|alpha', { scope: 'scope1', getter: getter1 });
v1.attach('name', 'required|alpha', { scope: 'scope2', getter:getter2 });

@@ -798,12 +754,2 @@ expect(await v1.validateAll('scope1')).toBe(true);

test('can update validations of a field', async () => {
const v = new Validator({
name: 'required|alpha'
});
expect(await v.validate('name', 12)).toBe(false);
v.updateField('name', 'required|numeric', { scope: '__global__' });
expect(v.errorBag.count()).toBe(0);
expect(await v.validate('name', 12)).toBe(true);
});
test('handles dot notation names', async () => {

@@ -816,48 +762,2 @@ const v = new Validator();

test('sets aria attributes on elements', async () => {
const v = new Validator();
let el = document.createElement('input');
v.attach('name', 'required', {
listeners: { el }
});
expect(el.getAttribute('aria-required')).toBe('true');
el = document.createElement('input');
v.attach('valid', 'alpha', {
listeners: { el }
});
expect(el.getAttribute('aria-required')).toBe('false');
expect(el.getAttribute('aria-invalid')).toBe('false');
expect(await v.validate('valid', '123')).toBe(false);
expect(el.getAttribute('aria-invalid')).toBe('true');
await v.validate('valid', 'abc');
expect(el.getAttribute('aria-invalid')).toBe('false');
});
test('it can add events via on', () => {
const v = new Validator();
v.attach('name', 'required', {
scope: 'scope'
});
v.on('after', 'name', 'scope', () => {});
expect(typeof v.$scopes['scope'].name.events.after === 'function').toBe(true);
v.attach('dotted.name', 'required');
v.on('after', 'dotted.name', '__global__', () => {});
expect(typeof v.$scopes.__global__['dotted.name'].events.after === 'function').toBe(true);
});
test('it can remove events via off', () => {
const v = new Validator();
v.attach('name', 'required', {
scope: 'scope'
});
v.on('after', 'name', 'scope', () => {});
v.off('after', 'name', 'scope');
expect(typeof v.$scopes['scope'].name.events.after === 'undefined').toBe(true);
v.attach('dotted.name', 'required');
v.on('after', 'dotted.name', '__global__', () => {});
v.off('after', 'dotted.name', '__global__');
expect(typeof v.$scopes.__global__['dotted.name'].events.after === 'undefined').toBe(true);
});
test('validations can be paused and resumed', async () => {

@@ -886,3 +786,3 @@ const v = new Validator();

expect(await v.validate('name', '2')).toBe(false);
expect(v.errorBag.count()).toBe(2);
expect(v.errors.count()).toBe(2);
});

@@ -892,9 +792,7 @@

const v = new Validator();
v.attach('name', 'alpha');
expect(v.fieldBag.name.untouched).toBe(true);
let field = v.attach('name', 'alpha');
expect(field.flags.untouched).toBe(true);
v.flag('name', {
untouched: false
});
expect(v.fieldBag.name.untouched).toBe(false);
v.flag('name', { untouched: false });
expect(field.flags.untouched).toBe(false);

@@ -904,22 +802,125 @@ // scoped fields

expect(v.fieldBag.$myscope.email.untouched).toBe(true);
v.flag('myscope.email', {
untouched: false
});
v.flag('myscope.email', { untouched: false });
expect(v.fieldBag.$myscope.email.untouched).toBe(false);
// dotted name fields
v.attach('form.title', 'alpha');
expect(v.fieldBag['form.title'].untouched).toBe(true);
v.flag('form.title', {
untouched: false
});
expect(v.fieldBag['form.title'].untouched).toBe(false);
field = v.attach('form.title', 'alpha');
expect(field.flags.untouched).toBe(true);
v.flag('form.title', { untouched: false });
expect(field.flags.untouched).toBe(false);
// non-existant flags fails silently
expect(() => {
v.flag('crap', { untouched: false });
}).not.toThrow();
// calls update classes.
field = v.attach(new Field(document.createElement('input'), {
name: 'somefield',
rules: 'alpha',
classes: true
}));
field.updateClasses = jest.fn();
v.flag('somefield', { dirty: true });
expect(field.updateClasses).toHaveBeenCalled();
});
test('it can hold handle mixed successes and errors from one field', async () => {
test('cleans errors on the next tick if available', () => {
// not available.
let v = new Validator();
v.errors.add('some', 'message', 'by');
v.clean();
expect(v.errors.count()).toBe(0);
v = new Validator(null, { vm: { $nextTick: jest.fn(cb => cb()) } });
v.errors.add('some', 'message', 'by');
v.clean();
expect(v.$vm.$nextTick).toHaveBeenCalled();
expect(v.errors.count()).toBe(0);
})
test('it can handle mixed successes and errors from one field regardless of rules order', async () => {
const v = new Validator({
name: 'alpha|min:3'
string1: 'alpha|min:3',
string2: 'min:3|alpha',
string3: 'alpha|min:3',
string4: 'min:3|alpha'
}, { fastExit: false });
expect(await v.validate('name', '123')).toBe(false);
expect(v.errorBag.count()).toBe(1);
expect(await v.validate('string1', '123')).toBe(false);
expect(await v.validate('string2', '123')).toBe(false);
expect(await v.validate('string3', 'abc')).toBe(true);
expect(await v.validate('string4', 'abc')).toBe(true);
});
test('exposes static readonly dictionary property', () => {
expect(typeof Validator.dictionary).toBe('object');
});
test('exposes static and instance readonly rules properties', () => {
const v = new Validator();
expect(typeof v.rules).toBe('object');
expect(typeof Validator.rules).toBe('object');
});
test('validate can resolve the value if it was not provided', async () => {
const v = new Validator();
const field = v.attach('field', 'alpha', { getter: () => '123' });
expect(await v.validate(`#${field.id}`)).toBe(false);
});
test('resolves a field by name and scope', async () => {
const v = new Validator();
const field = v.attach('field', 'alpha', { scope: 's1' });
expect(v._resolveField('field', 's1')).toBe(field);
});
test('handles unresolved fields when strict is false by returning true', async () => {
const v = new Validator();
v.strict = false;
expect(await v.validate('#plasd')).toBe(true);
});
test('updates classes after validating a field', async () => {
const v = new Validator();
const field = v.attach('field', 'alpha', { el: document.createElement('input'), classes: true });
field.updateClasses = jest.fn();
expect(await v.validate(`#${field.id}`, '123')).toBe(false);
expect(field.updateClasses).toHaveBeenCalled();
});
test('triggers initial validation for fields', async () => {
const v = new Validator();
v.validate = jest.fn();
const field = v.attach('field', 'alpha', { el: document.createElement('input'), getter: () => '123', initial: true });
expect(v.validate).toHaveBeenCalledWith(`#${field.id}`, '123');
});
test('adds locale objects to dictionary', () => {
global.console.warn = jest.fn();
Validator.addLocale({});
expect(global.console.warn).toHaveBeenCalled();
const v = new Validator();
const locale = {
name: 'ar',
messages: {}
};
v.addLocale(locale);
expect(v.dictionary.container.ar).toEqual(locale);
});
test('validates multi-valued promises', async () => {
Validator.extend('many_promise', () => {
return new Promise(resolve => {
resolve([
{ valid: true },
true
]);
});
});
const v = new Validator();
v.attach('field', 'many_promise');
expect(await v.validate('field', 'sdad')).toBe(true);
});

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc