{"_id":"just-validate","_rev":"62-14dc0741b838a2f7582969bcd4608556","name":"just-validate","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","dist-tags":{"latest":"4.3.0","just-validate@v1.0.0-alpha":"1.0.0-alpha","just-validate@v.1.0.0-alpha.2":"1.0.0-alpha.2","just-validate@v.1.0.0-alpha.3":"1.0.0-alpha.3","just-validate@v1.0.0-alpha.4":"1.0.0-alpha.4","'just-validate'@'v1.0.0-alpha.5'":"1.0.0-alpha.5","beta":"2.0.0-beta.12"},"versions":{"1.0.0-alpha":{"name":"just-validate","version":"1.0.0-alpha","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with custom rules (including remote validation) and custom messages.","main":"gulpfile.js","scripts":{"start":"nodemon server.js"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"^3.6.1","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"2bd7540ecbc38abd95eb09fba5896fe3eadbd0ef","_id":"just-validate@1.0.0-alpha","_shasum":"1c0c78e77630670d0ecd56846d313d1ad6f0fd5a","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.4.7","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"1c0c78e77630670d0ecd56846d313d1ad6f0fd5a","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.0-alpha.tgz","integrity":"sha512-jHM+WeB4zLkfabSh1TGvYWIGj9nf2Yxg8zu0lzWtyEs2m52c+zqg6zBGrXEIeHF2Km4fRgbDO/nuyfpoVPKRhg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNcXYduEGPz0cW+hFqY+swtlkE+BNmhc4fhRqoH8CCDQIgGeeJghlyk2hKb5/piGAvfuvpj81CX0bmrkN+lH0aHz0="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/just-validate-1.0.0-alpha.tgz_1484561308067_0.5472023147158325"},"directories":{}},"1.0.0-alpha.2":{"name":"just-validate","version":"1.0.0-alpha.2","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with custom rules (including remote validation) and custom messages.","main":"gulpfile.js","scripts":{"start":"nodemon server.js"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"^3.6.1","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"63838b3c77db3e57c7322f4922f32fd8f34bcb21","_id":"just-validate@1.0.0-alpha.2","_shasum":"04c9755b169097aee6384bb0d1b94101f4839192","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.4.7","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"04c9755b169097aee6384bb0d1b94101f4839192","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.0-alpha.2.tgz","integrity":"sha512-0/rsLTkUecaO8Uw3XJk6RfJCmdgtK08N759vL3mBD1gopd8NCwl7vQJONDVp3hT/efK4sj7ipPGBQ4mGuj13zw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgLzLMRoGA4E23k870AWoUoDL8HqkmrRmFRsaUKbkizAiAUMZ9mgouOmDNxHRJNBEWrJr0vfWSDJY2Y41LgF2LdcQ=="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/just-validate-1.0.0-alpha.2.tgz_1484641373747_0.16588343353942037"},"directories":{}},"1.0.0-alpha.3":{"name":"just-validate","version":"1.0.0-alpha.3","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with custom rules (including remote validation) and custom messages.","main":"gulpfile.js","scripts":{"start":"nodemon server.js"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"^3.6.1","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"33978854923700c2386ac2f870464fbca9c1992b","_id":"just-validate@1.0.0-alpha.3","_shasum":"f6721bef4477fac1e63009329a27810323448f89","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.4.7","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"f6721bef4477fac1e63009329a27810323448f89","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.0-alpha.3.tgz","integrity":"sha512-Ookv4YtCwZ9+4amrKyIqXSj3NVeqXFtuC20spnB05zsb32hyyjNopwj5dEl9ccHeKu4vQL9mExAEF5XHhSgAHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClszwnXulEGFnCByneBnMIPBerVFZjxvWdQGz61S0YHAIgDyM7MLIJxlVDhr1xbUJOfwsYY+RVNrvgCw9cJbp8tG8="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/just-validate-1.0.0-alpha.3.tgz_1484643068258_0.7026496536564082"},"directories":{}},"1.0.0-alpha.4":{"name":"just-validate","version":"1.0.0-alpha.4","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with custom rules (including remote validation) and custom messages.","main":"gulpfile.js","scripts":{"start":"nodemon server.js"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"^3.6.1","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"f0f67ddca9709503033602e1096f5dec202706cf","_id":"just-validate@1.0.0-alpha.4","_shasum":"7370db1be71b9e8f0b6845652472a731c22a9d4f","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.4.7","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"7370db1be71b9e8f0b6845652472a731c22a9d4f","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.0-alpha.4.tgz","integrity":"sha512-q14LRNPCU+ChKsEdcyW/19Y9u7uNoSnJ/dSdXAmNGwhhDVGLAvLudiSOt23htQmZ3soVs06luee6fjEXJE22fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAaHtmHyXKtrTogvv49bRf0KC92nQnXBtnz5fcIxWfnKAiB6sH1ucbB1I+Qr0PPystx+LYc5xml0mZ8h/lJqM7rpvQ=="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/just-validate-1.0.0-alpha.4.tgz_1484665849678_0.4621035971213132"},"directories":{}},"1.0.0-alpha.5":{"name":"just-validate","version":"1.0.0-alpha.5","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with custom rules (including remote validation) and custom messages.","main":"gulpfile.js","scripts":{"start":"nodemon server.js"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"^3.6.1","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"3be83a5c4476ddf8ccee78d5f741d288b18d2d32","_id":"just-validate@1.0.0-alpha.5","_shasum":"49a851ba0acde7b29f9c68d898f30985cdb21ecd","_from":".","_npmVersion":"4.1.1","_nodeVersion":"5.9.0","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"49a851ba0acde7b29f9c68d898f30985cdb21ecd","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.0-alpha.5.tgz","integrity":"sha512-C6I8W1vmButFGafd5pFKrWlVRYGcQExxiO28nuZVqiah06S65How6LoaSc5dnCeC/O2YRAr/xa1BJafEaBfAyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdfHrcGWBTT0MkJ/Yld8CSqmAD3/meqo0+YBeOxLCXFAiEAweB/8k+7o0fZBYDyjqOQAR7DNbxT4Nx1SLZnHuKsdV0="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/just-validate-1.0.0-alpha.5.tgz_1484859095662_0.29590194881893694"},"directories":{}},"1.0.3":{"name":"just-validate","version":"1.0.3","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"start":"nodemon server.js","build":"gulp build"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"3.19.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"7a682f7fdb85dc26a01100dba56dc571b83160b9","_id":"just-validate@1.0.3","_shasum":"a20c03b5879b88dae8a1126355ae2dda1128de88","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.10.3","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"a20c03b5879b88dae8a1126355ae2dda1128de88","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.0.3.tgz","integrity":"sha512-cq9ac7ZG+8aVGGzkrdc8wI4hyAyl3xF3YJcZ71zUYZdS9I/5pqejkZvFPa9A2wRjegd4O6HytCbRk6x+0RGkCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH274GMy5I0C3gP3rKrGvHuv+nboPLWIgpOnAH1X04u8AiEAwuVyzMQyjKVcjZKJYQbZBGwtr4EQZx38cFYTLCOa6Cg="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate-1.0.3.tgz_1510868013275_0.27702946751378477"},"directories":{}},"1.1.0":{"name":"just-validate","version":"1.1.0","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"start":"nodemon server.js","build":"gulp build"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"3.19.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"4397e703972f4e9da306bc550750ee0f4d2b5607","_id":"just-validate@1.1.0","_shasum":"81db8423301567e6eea8dc678ff3814b351e3b90","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.10.3","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"shasum":"81db8423301567e6eea8dc678ff3814b351e3b90","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.1.0.tgz","integrity":"sha512-sKuNjfUJEzyngB/MZmXZY2+ucrtZN3fPZ85XTZu1bAllMgGTW7iVon+TtRHcLRHruvtImz0mOq6wEmA4UAuWOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEPzcML+B4BgM3XjSxZkr6cMSgAM45Lmy6SJUtFIRxOzAiEA0o3QK0k5c9ElB4V0NghXoKSe1GxfYZBKWguRXxICTWI="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate-1.1.0.tgz_1511121996487_0.35264773620292544"},"directories":{}},"1.2.0":{"name":"just-validate","version":"1.2.0","description":"Lightweight form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"start":"nodemon server.js","build":"gulp build"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"3.19.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-autoprefixer":"^3.1.0","gulp-cssnano":"^2.1.2","gulp-sass":"^3.1.0","gulp-rename":"^1.2.2","gulp-uglify":"^1.5.3","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"ae9cc7ec13ad222d8c5b72f28115a93ffa99841d","_id":"just-validate@1.2.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"integrity":"sha512-GnY5XH+vqtEyTxceRm6dM5yFIy8EkZgjWNBbEreU3uK480VUtvqXv1gBqFynqnycAC+6JHvZtz+N4f49Fsv1bg==","shasum":"48c040572e54d9336cb5eac5a91ecac22beed3d4","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.2.0.tgz","fileCount":26,"unpackedSize":143783,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIwYar3h/SNtVaQ2qn/nf5rzi29wU5+Yi4ApXdOfy+kAiEA7dVATE/1gFF0eVOgDRO9fZLVNjZZeHmUCjna+thCdeo="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_1.2.0_1523377411906_0.5669899255365827"},"_hasShrinkwrap":false},"1.3.0":{"name":"just-validate","version":"1.3.0","description":"Lightweight (~4,5kb gzip) form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"start":"nodemon server.js","build":"gulp build"},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":["MIT","GPL"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"3.19.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^4.0.0","gulp-autoprefixer":"^3.1.0","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-cssnano":"^2.1.2","gulp-rename":"^1.2.2","gulp-sass":"^3.1.0","gulp-uglify":"^1.5.3","prettier":"^1.15.2","run-sequence":"^1.2.2"},"dependencies":{"body-parser":"^1.15.2","express":"^4.14.0","promise-polyfill":"^6.0.2"},"gitHead":"1a7fd1e23ba148e87f5a67b5f23733ceb98ffef5","_id":"just-validate@1.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"integrity":"sha512-wiJf/a2tYNudtKS9gmOhrdSd9hgFoXrqOY1WtkgMrkmMwFwbFw4GcJ3zGs9PRdXL2rZX7vZzTgy9PT1G7M7vZw==","shasum":"8917bb1f49d129b0826dc8c7e35c5dc00b9074ff","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.3.0.tgz","fileCount":27,"unpackedSize":150132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/7cUCRA9TVsSAnZWagAATLQP+wV8QQov6mKFBvWtsJFh\nWVVCPut1l3rVwdzX+Lb9eRih+EAyMrnE82Gw/fvpT4Qf+5XA2M3CTel2u1NQ\nwAIpICxsoE3H5Jz5oB3SD1v6Xu5uCY7uRRud5jjbxJUJu92gNz2mfuXY3UbT\najNzMZSz++azwSAjIKG+HJwGrFJnA9tkDmyYd8U29u7dJpiw8lAu9HYd4sxT\nibAmaySNCqSZt+81Ha7cGkCZlGu00fN6B6L731+Oncc85gc2EVA7eGzap1UQ\nYOQdtOo4WKbPd8Uj6jmal8o8bBDm8gAwU0qM3pMkNLLXugVolvMLmvCc78xI\nEGq62DOnJ0TJLzHk2kn8NQJ56Wvp2OE8Xg7LPpNd3cGcwE7GarJewBxXbJMF\niL3mJRSaAzoLgQ9Dbqe1r1ixoxPUz6tdsWTZNr+INWcDQQPnFmRay3WZ2kr6\nrnBwlOzLmW9Ex+VQtoush5OSMGQVmkOAh55z2dcVRow6/uFcbV1is1y+8plH\ny8ys9eEmXx72N3fLgsIeftFb+XNVQfe5Y8L9Akrw8i8JBE2Gn7r8DSlNG4LU\nWk2Bm0Ep9KH3bu9SN2SIFw8ZEANBkBzDzC46MBHfagLF1JOhU/qTZh5nA3Z4\nhVXwqYg4wG8GYgxPzK5xkZJSZNtNbdG1c3EZX3eRrTzQsrg1RZGrXQJG5Njx\nJ7bu\r\n=gaMK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFHyXrZ9Gcbm+Tinh0rU4QtVDfcuYrsNQF/qv8JlLD4NAiAseDieLsU0SaMVIinJ1v0wK+eAKXnolIRAtjoxkB1qRg=="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_1.3.0_1543485204270_0.3754098593632429"},"_hasShrinkwrap":false},"1.3.1":{"name":"just-validate","version":"1.3.1","description":"Lightweight (~4,5kb gzip) form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"build":"gulp build","lint-md":"remark .","semantic-release":"semantic-release --no-ci --branch test-semantic-release"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":"3.19.0","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^4.0.0","gulp-autoprefixer":"^3.1.0","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-cssnano":"^2.1.2","gulp-rename":"^1.2.2","gulp-sass":"^3.1.0","gulp-uglify":"^1.5.3","prettier":"^1.15.2","remark-cli":"^6.0.1","remark-preset-lint-recommended":"^3.0.2","run-sequence":"^1.2.2","semantic-release":"^15.13.3"},"dependencies":{"promise-polyfill":"^6.0.2"},"gitHead":"c59e247876fa4e0e7b88aeafc150bc8b1e30897d","_id":"just-validate@1.3.1","_npmVersion":"6.5.0","_nodeVersion":"10.9.0","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"integrity":"sha512-5GmyWdbrC/C0bwGo3wS0DAAeOduzoNyBLenjFVYb+lDOyZSAfzB3nz552HpDqnct7SXKDBoPI/OxbcHgZj3Wkg==","shasum":"0ee76a1b85b15215dafb55073c7499aee533eb59","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.3.1.tgz","fileCount":25,"unpackedSize":133880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrMCbCRA9TVsSAnZWagAAJGcP/iqIr9PRUCSynqmpjHRP\nA7iXjwHzYH0WYRfhooDTGAmjQtW4zsM4cY1s7ZnSJqXCB03w7s43VwclY7z+\nGbxpDeLYqkGdoKgRTP7v5V1L4hLFWjvbn1qlrtI85rjxg7rPihJYjf+sIiq5\nW/WkHoEv+7aONJnmTngrLQEfQUI1PyfOG5wLfL5+AL4dGGCxcf7Ra4CwhV7X\nDfWA7Oc8OSp6Lb3ah+u6CGmkVYfuPwDeN3lkjisgy/8CMG1+c7K+t6xuIt/R\n+gBlQBWYv4f2M10eKsC3swR5QUIuFvcAqTJE415UKlvZvn+qbgSD+xm0MqxD\nUIV6X9glP2j79p2FonOAWdzzH9XuGFb7Kc4iws/sVfDqlxikPhIEXhJkB9rL\nBrJTjJ82oAkDbAGegq1PzTO/RmzPBtYodiz4ZkpKPClx+BDRtQ58idM3YDWq\nSgfoyQ0AJEMWIIKQ5II1RafnzASQTQ0vJCeWqV+USZSSZcxRZ5EViozo9kSB\ntsiVnsDep4Rry9jZDELDjlHYabM8bGfZswOiS3PU/OrT678zfDGrljowDTIS\n9ULjHUQM5Mn6vTVWlRZeonlEeNBeqtmdvMnzHddTsLy2sHI4UpUqhkJ/3U+S\nLrIHyB506hSWzXHm1Zr7I36zUd1STfkQKaAmIk8YTZgZuoGVAyn2XUPB7sWZ\ncILM\r\n=M1rC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjEpBHebRWjDzpUS/24xv7H6I5ThBYCFuK60uny7T1xwIhAKwyhLDXo3uiKRXGKS6JUzpMOjs+7DvqMiF7j/PdTL7j"}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_1.3.1_1554825370483_0.828047327306749"},"_hasShrinkwrap":false},"1.4.0":{"name":"just-validate","version":"1.4.0","description":"Lightweight (~4,5kb gzip) form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"build":"gulp build","lint-md":"remark .","semantic-release":"semantic-release"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":">=4.18.2","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^4.0.0","gulp-autoprefixer":"^3.1.0","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-cssnano":"^2.1.2","gulp-rename":"^1.2.2","gulp-sass":"^3.1.0","gulp-uglify":"^1.5.3","prettier":"^1.15.2","remark-cli":"^6.0.1","remark-preset-lint-recommended":"^3.0.2","run-sequence":"^1.2.2","semantic-release":"^15.13.3"},"dependencies":{"promise-polyfill":"^6.0.2"},"gitHead":"430a1e2bab59936c89b1a3afa8de1d34835540f5","_id":"just-validate@1.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"integrity":"sha512-uJUrv1TsAzr6u8FBBJnqFT7ouGJzJOct6iESRYB94R9atqrAAtA8nMcxMNxVdBD/GqZzt3vO0FnH3LDaIu1T/A==","shasum":"eb5fd1c94e946dc6602b2b46c7c7a46f4863d58c","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.4.0.tgz","fileCount":25,"unpackedSize":135627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEj7gCRA9TVsSAnZWagAAGVUP/jECzgrNs10TQ9S0/wkX\n4UPwIUffP6eSql5YSK/jG2yOZWMVtyPUS/7cdPHWTluPEv6ys3vICvvovM4D\nAOjIke+MLQOacQC5rprFUNe+shFYIP4M0s4rrkaHAgFsZ7tGfmlh9MzxO/pM\nJwABv2/bCm77Kcle+OdU1PQdkjn8o4eBNrAldpbE2Wu3mwPYNMYtGQ2NWEUs\nBYekNhD9rO5qMMqsk4L4qIKknmvvwxKEyK7fvlyzCp5UsedDDtYh4V8XJSr7\nHmWSX4wHKybDmtrMn1Aoxu5jORRdD7b6scxtLESB7bVtCykXDjrh85X2mnea\nqhPlF7wKUZuJPtW1THCjzn8VpHuWyWyrMorZMOhBd6ixuW/xBObiWG4cBW+5\nHioehR1L6OW+zn5zNM5aTRdKhvS1V7tBDEP1IE1wKmiYnCTAiy4/CuQtT6LE\nVQJbWTngn3AgCwZE4fB8gH1EBbGMOYDpSehJBCOvFG5SnfkBNyS58nKwAUTH\nXtYOgBvwngI3907qG0pdz14t8lzx4YaDUnaPQpU4bEEhFmiqkUDYj/oGcpi4\nb+S32sluiqy7bR1PrnCcqiEmOCeweR7bm9pz1oEB309kspzEDYiJZYT8BYmX\nRZ/JYj5cosRXjQLdZ6niNlmtniP90sOMvE8IKXy2CDwA5kstgnsg8mGbU7jP\nWA0+\r\n=GulE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiNcAMsHBwvMeSIzr+3uavlzRoV0Kevf3ns0fpp4x3OAiEAoyE1GMA3iRYyoTcmy61IKjRLnpzOwg4Kurr9IoNSElI="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_1.4.0_1561476831992_0.028247441937910844"},"_hasShrinkwrap":false},"1.5.0":{"name":"just-validate","version":"1.5.0","description":"Lightweight (~4,5kb gzip) form validation in Javascript Vanilla, without dependencies, with customizable rules (including remote validation), customizable messages and customizable submit form with ajax helper.","main":"gulpfile.js","scripts":{"watch":"gulp","build":"gulp build","lint-md":"remark .","semantic-release":"semantic-release"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Perepecho Georgy","email":"horprogs@gmail.com","url":"Horprogs"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","just-validate","remote validation","ajax validation","custom messages"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"babel-preset-es2015":"^6.14.0","browser-sync":"^2.11.2","eslint":">=4.18.2","eslint-plugin-promise":"^2.0.1","eslint-plugin-standard":"^2.0.1","gulp":"^4.0.0","gulp-autoprefixer":"^3.1.0","gulp-babel":"^6.1.2","gulp-concat":"^2.6.1","gulp-cssnano":"^2.1.2","gulp-rename":"^1.2.2","gulp-sass":"^3.1.0","gulp-uglify":"^1.5.3","prettier":"^1.15.2","remark-cli":"^6.0.1","remark-preset-lint-recommended":"^3.0.2","run-sequence":"^1.2.2","semantic-release":"^15.13.3"},"dependencies":{"promise-polyfill":"^6.0.2"},"gitHead":"4b341af3cc0013374ed40eef5d8595ac4deb1e0e","_id":"just-validate@1.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"dist":{"integrity":"sha512-avrGuoVZplYaXoSDXOg5RWvyKTERDCvqdi0aM55BdrmpUDW19k4vpFApdfy40rrjL3fytoGUMKfkEZKpBT3vHQ==","shasum":"aab158fec47120041002f6849a3fcad7342fd6ed","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-1.5.0.tgz","fileCount":25,"unpackedSize":138693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiJ1TCRA9TVsSAnZWagAAB9kP/12Qudq5LlV5BdIDl++E\nTD/pm+GNrgv9XaNnNnHPhiTcebn+AYWgqRiBkjSaPCNrTJxWAp6W1BprGVsl\nAfdSOE0pFbowdRZNSkr1nmvMxaAMKT/aR6CCyY9y+TROLa0dFi2SBB8oKqF3\n9dv4SxSD7gsw63N1hCd4xhVrjKuQl9TgCLAiF27e5PasPQITQgZjw7V7nOyT\ndQ7VL4urMhtC4zVGNKC/S7Eh7cChus2KDeIPu/hVw2OCs5kwVoVmf4ae5ljd\ngRPEjz+Ggy1wHY33DQxyQwMEs5CrNMgpQKf0xufogOvlMVeZJHPEIWNBED54\nT6gVAa6GZqln/v0aWQXJRdeF3ghB3Vge/nz6L1E8ydGpVLPveDZpWQvgM3Vt\nmQnKzHnUlh15o30pSUXqyqswwR3UWaFnIYUt/WHpdRf/oTB5tU4hGN5KA/P9\nE7+/EzUmrd2YDyaKsYt2AuhmH5dk+MUTJMCaT0WlUSWldh+KUgPu3cIAuPPf\nbhuh1h0nM+ZA3Vnv352yXJH0LUe20YXhr3gjfFZ15MAkwepdUsCgIAj/8vMz\nscFJgaD76Y9JCmQxWwIzMC7ndTEhVRBlHUWVqeXjJBl7sbh+oHpt5P38t1QM\nq8N8+Ct+Tsf+akcrf4bsm66sb6YtRj6E3mEPlPt0vdkcLLvHmw0k7aRRWwm0\nElr0\r\n=zxwZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGoOLWuODB1rC9QOBagO+nRGJ8PFYMA8zLbVkCku8Jm1AiEA1V2gsoTmKVtTxSsC1haQP32hWOjStP0jefiIyC6Y8So="}]},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_1.5.0_1569234258586_0.42592823397892365"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"just-validate","version":"2.0.0-beta.1","description":"Modern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages ","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build":"tsc && vite build","serve":"vite preview","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"# Just-validate\n\nModern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n## Why Just-validate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nOr just include the Just-validate script in your page\n\n```html\n<script src=\"./path/to/just-validate.min.js\"></script>\n...\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add Just-validate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">\n      Please select the preferred way for communication\n    </div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.refresh()` to reset the current state and `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object.\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.refresh();\n  validation.setCurrentLocale('en');\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.refresh();\n  validation.setCurrentLocale('ru');\n});\n```\n","readmeFilename":"README.md","gitHead":"74fd320a9a41a8f69f3b7a33ca0db33264155b6c","_id":"just-validate@2.0.0-beta.1","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-7IpmpETJO4raXDduNvoBR/LMjGwMuvSREAqEf/uYd+cXXw+kQGv267BoKTofHopjMDpipubq4b5y9dTnV8uyNg==","shasum":"14ec969124a2f3856fd2fc55b95e5ed78d7f517f","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.1.tgz","fileCount":37,"unpackedSize":114236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJho5EWCRA9TVsSAnZWagAAVx0P/1C1jHzgaQgRANYvSmZd\nxilzyRuePOmk60hDvlUvnE3LWRheKcGAdEJWiAhRx0M08wR/GCXMBZvn+F9j\nZQkGGIB1at0YR5S6VHd+4vpgb6VYH1PSsJmKlqgzZvHmpXX27elBGair8XMb\njNm/u3kIE2maB19+2COV+JCRH8rQcGKOPqwqYa8QGGWWfGwRj2gdbzgrotb6\nSs5ZpKxRJVUTvZ2hIzpLNGpG54/sOESGj+Jd8fAWyaf3BUuv1PhojOJ8ytDu\nxKY/BA2VJU1vbji+hpYyEGYRZkUJZ/Fki1OWYj5snS7NZe71ncndcokp2OoC\nD6lWgFJNP93Wv/HUYHimiRCb3p7aEvaT9m1Lyed2D2LqOtU2ck3kflSELY5W\nWkSeP447QbzFBnT6hy4ggmxbeRezbZYTQI5rHZVlDBHW5jJUKw73Mn6NuM5A\nBDJDRSClKx/ujWEfJtu9/9Unsym59nZHQQD+0KAQrTLbtHzonTDSVZSofmOR\naTiQlWCkwisn89H8NUnIIlbfes5Hm4MDgsQGIkxrKt2FwzIuI6xjwTX0BlaM\nNqEV4aXJ4PWKkilUuLgIxW4iwYTOPDr9vLhJ0cSqW8g9P9DFTFMFiemAzIqc\nScWc8Uwuc0l3kC1y2j1NEgL8p7z9iHPqGOzJG6VeWfMO8so2Q+//M7gt4wON\nwAKl\r\n=PD68\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoRIC5A5OkxZwIGKorI01YjJCwFWiVcPCNLW33tuLjjQIgOPpB/pBh4ko8SLdEGg+CGEscg9de5urrksRkDRrYbZQ="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.1_1638109462021_0.40580096539072463"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"just-validate","version":"2.0.0-beta.2","description":"Modern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages ","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build":"tsc && vite build","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.umd.js","main":"./dist/just-validate.umd.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.umd.js"}},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"# Just-validate\n\nModern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n## Why Just-validate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nOr just include the Just-validate script in your page\n\n```html\n<script src=\"./path/to/just-validate.min.js\"></script>\n...\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add Just-validate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">\n      Please select the preferred way for communication\n    </div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.refresh()` to reset the current state and `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object.\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.refresh();\n  validation.setCurrentLocale('en');\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.refresh();\n  validation.setCurrentLocale('ru');\n});\n```\n","readmeFilename":"README.md","gitHead":"2680adda6ac3796322cd368821f0f5c5e9a220ef","_id":"just-validate@2.0.0-beta.2","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-XmGQS4xiu58prTBQhZ+DNw0QjUC4BC2InCbfN4XsXBFHT5cIPgsAWYKgbbPXs4NYYz/iZTsHoKVvlm4wDhqxuA==","shasum":"4d94e7a8cf0487f38f308056e60da3ed09a03848","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.2.tgz","fileCount":5,"unpackedSize":62851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJho6GtCRA9TVsSAnZWagAA7gcP/15g5QcNCewuSrNQWgZB\na7+mzEwiWsU5GT2JA3UvmIZajP5uowfZBQcYbkIbrYRgj81FvWWzdAtZ6D5B\ntlgXNBZ9EbZtdNPNo0t8KzDqr5iuYEmIV2DKGnrxjTAYgOMgW4cLBMXBqlML\nC0yEEW/a0olOyP4ZUMv518Y+siQjUSOiyc+2ZnjNaTWcZnvtJm0ZAsUJIUda\nLlYFGd/MbIbKlO2eSt6EIvIMNSYabKctxxSA4KlQOUIsinIigSPBiJijWU0Y\nG3zw2alX6si6Q5S2p/x4hz2LcEzXWVBFZveyx4sp+4w7cOO/2hOc6pQmAgUu\nkutiFWzBGD93naZK6h3v3tI91to6Bbvrg/0bEy5winWuBIPYtDrOKwyXubj4\nSuuWk7zdB7/1rCMj6FTBStHobea4NHldru8BedscTTCn/ia0/isKvMyoIPGe\nyMp/kfL9aaGCbDyt4BWRJMpMYpvbuA6b+L3a46yI13qLkCkH+84XpFP/5KdJ\nFWx7k2Y32AGz80mkbWh4EmbLIkhdF8CgFQ+La2fybfuapPOvXTd57Rae9Vkv\nxQ8Q/jBgO0pyXaqTIV8R4n/FxSPzOBaIWTEHBvBds04LbJSE5hrTOfxXwC43\n2ipfH5e/69N6n+CYAs3x9GYLU0kI/erXpe9tesN/kNXYyUBzXS3yw4dXzehS\nYFLD\r\n=+sgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBod+rXWXO3jpHKmF5MCUcbOjKCg96G4jpfidO06hwQcAiEA7K+u5mwpAO+hvlQxm1MRPxPfEuc/h+lG7+E4cWvCa4g="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.2_1638113709181_0.6434867993469464"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"just-validate","version":"2.0.0-beta.3","description":"Modern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages ","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build":"tsc && vite build","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.umd.js","main":"./dist/just-validate.umd.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.umd.js"}},"homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"# JustValidate\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.2/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"5cbab06203a606205a0a0b4dceb00d0c1a5c1170","_id":"just-validate@2.0.0-beta.3","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-uq+t4TYE2kj3JMJ54Ynrn8M9yjuAJfsEOC9m1dwo+LgaX0sJO9sH6NI+dkkQ0ZOSqyhLnVagVOgqmggcmXdxHA==","shasum":"c8a8e7b8557018bc074802e854c5e7639cf9d967","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.3.tgz","fileCount":5,"unpackedSize":65907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpV2rCRA9TVsSAnZWagAA/PAP/2zVJOmDQWjJZhJJk5KL\n27JItjIsOORsWwobugcLqTWjiNx3V+l+enLZjtjjHRPnNiW2VbDAV86M8Pd7\nE66H1bf5Xpu6enZ8JXVgiWSknEgP7yuXhC2OQafhIYHhtP7zsHCqPEZ6ATE2\nMm1ScuccOV38WiARbrR0UJXkVkTigRPpZ0buJXhsXhf0dNtWg62dvYAi2iq4\ncP0A6QhaX5WOgSrd9ZWNmHdI/lwT7ZzBuB+/i7i32EAEYeCSiEZfJMS/7/gv\nADCVAmDN5jORa9JoSh7vZ7azAWFuEGtJk8neFW4N4J9mdnOpzlyVQ9VydsTD\n3YvyTPgghWvnlIMCZuRGrLAIa8uyExIYHxiK1VqIrgYcVPDICG66LUMngFyt\nCK0u8E3bYsfK3B/U3s8wb4m1X5hI4tXKAw185N9sXPQC9hASkvNp6JjJ7cst\nQXfx98GtNLQ60uwaBeXl3OgHYz12IeaLjpUzjJCzGCJro0utp5kJ0qTSSqf7\n6LIjjS8M3meaQKywkghNNFBYzSKf5l+QmQRv6uZXVCv49CRUzF7urvm3Aq1x\nMkKwmYAJSKwq4ccI4oMJLXA/Y5cI7zmDgseUr6djEhJgL55ma9bhYmwSFn8g\nzi+Ah3ld7+GeXjtpZbTcKmKKzkkVvO2xW5KfANmq98xGJcd12vtipci4s9qc\nKiZg\r\n=CNN5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBAA3uX5HbGeuULuWSHefehPn0ERjVwgOapsOwL/2cZgIgNjrbmNkymw1YBtzaBtEO61jV9N11gang89I3JcItht4="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.3_1638227371405_0.7243716065605954"},"_hasShrinkwrap":false},"2.0.0-beta.4":{"name":"just-validate","version":"2.0.0-beta.4","description":"Modern, simple, lightweight (~5,5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages ","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/beta/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate)\n<a href=\"https://bundlephobia.com/result?p=just-validate@2.0.0-beta.3\" target=\"\\_parent\">\n<img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@2.0.0-beta.3\" />\n</a>\n\n---\n**NOTE**\n\n**This is documentation for JustValidate 2. If you are looking for the old version, you could find it [here](https://github.com/horprogs/Just-validate/tree/v1).**\n\n---\n\n\n\n# JustValidate\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.2/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"918bbbaae7a9b35c34ab0f1633b0c0205ccac544","_id":"just-validate@2.0.0-beta.4","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-a54TsV1UOMYrmQvgtJMkqa6lV85wQ8U9m76s14Nb5xXMKnU6rPPn1uIcCp+xQ8V7OLJWEH/7C9FY0d2WZsT+qg==","shasum":"3e869038f24827fecfa22c8384739961c93365eb","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.4.tgz","fileCount":14,"unpackedSize":77338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpoRtCRA9TVsSAnZWagAAW54P+wVBHX6WvsoWgC4bKENL\nNvJN7uiMG/b9ayvICbyQEDwRDZZylbCkiO9kHYKFA34IqkoZ3mAma6yVcETe\nOEGYDlxR8aHR7p0MVvEeMBt2KT4SeFMY4IZZt8MuN72PVg+FEagM+TgzYldm\neNVGi/BJCDn8Lya8BNWLLah19EoN0B5TRKdkeduWCHBzpbs216k9e5MkCUiJ\nscFqBkVUKekRb7mVQv8EMHRxQUfeNxi9l47XrmvYUrSFS7dQprT1Dg7b4qaF\nrWki0ws9B/DoHrIqjwXEYR+vHMtFfzvpC+rcACWK6TqswnNlIwgh9OEnJXrT\nhQZibdR+hJEXzaqGoQadhgF3MByioUTpxZN6S4YmOfXegABWipl8H+ndhZQO\n7efLzViIi85eJOHF1zg2DNWhLZO6BnQE2/K/mlCAyQQxIC4Rt4GQmrrvPaPj\ndqR9wqGjdE8kMvojKc+AkHzn5fHJ0k7M7nPR8LGICTl2ToQXxxaMqAcfbkwd\nxLwoyug5dtuGP5iQ5bQXP5QRebyVLvcvTSWRS9M1QciYxYb0FrDK4koppDmK\nJriLBcZOxLNutMxF1KJDxQORFaAwxFxqhYMCDiXNVFfX6FaEkA4mSwRFBnK6\nb7aq4b/qvI4v4UtmnrfMyaQ9TIhmxFD7nZ1xyk+WQDyjrTs1Vg/lRMtVPcB8\n/czh\r\n=b7xj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETTGHeK8NtEfKm3OaKDboXan/plKCFJszS/SyhOEglPAiEAwfSaDsydK1Fk4K/nBgH4yuPhCnxkRLNe5ruHdySkuMk="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.4_1638302829222_0.9808675943785583"},"_hasShrinkwrap":false},"2.0.0-beta.6":{"name":"just-validate","version":"2.0.0-beta.6","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"![main image](https://user-images.githubusercontent.com/14051960/144635813-82670c30-44c0-43e6-ad61-1505d5b8d929.png)\n\n[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/beta/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate)\n<a href=\"https://bundlephobia.com/result?p=just-validate@2.0.0-beta.3\" target=\"\\_parent\">\n<img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@2.0.0-beta.3\" />\n</a>\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n---\n**NOTE**\n\n**This is documentation for JustValidate 2. If you are looking for the old version, you could find it [here](https://github.com/horprogs/Just-validate/tree/v1).**\n\n---\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.2/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"30df01f19d2e12202a23f91e04c22f0ba1e628de","_id":"just-validate@2.0.0-beta.6","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-Pmm+miWJvOIroSK0puTet0RQEcj0w365rtkFaBSQ5WdZwlkDnjLH4PTKxY/1YtdPXmNBk3tfeVTrYeD2FmW3oQ==","shasum":"629636346833f926cf5fc81b1cc6b26226e2e30a","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.6.tgz","fileCount":14,"unpackedSize":77354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqmuWCRA9TVsSAnZWagAAH5gP/jRMeuZktNNiVZO+GQgB\n6F1woEYXUNzoS4E9UpGR/NoxI9Jib5ctCJ+EewS/SDZtg2TctQ3vLOrvON8r\nM1Ymd6r4GamubUPZHUkY63tbXE5C2Hh+sjWg2LJXPImDFNzoFO8m0UL8tnuC\nNlWb4knXlSeRgjIG0uJlhrbFfvHSCJUqdemLoBEYB3JuJAfJb7/luuY4Tckf\nWpGAY7S3RRxkXM/cG71AxNo4r6JmrJFdpuPiAR7TF2M2VI1TVeFDRKegkWj0\nKGkfCnFRipwBqHWIufYyb30xXUvLS8ybTeHRGipBXNlWmg7L1SQvh1HeqgtW\nvlHsva/ZWowwBJiSjocYncecxkmGaijxOOc4ZLRy3Th7PYB6SZlhEqf2xWvm\nVV9/dly5cjTFjbOygB/PDMjUoj4rb1ssN6JUEGUTwh5ak+6yZ+RlNUhyB88c\nId4PV7rBSIHGt2xCjJomDYGc/BogVSjj8chhCArvFOWAUdpuPPhZ1FNTZxEa\nq83ZeTqqQwfsoJpq2PMRJ97u849WC+QnFTzMQZlL/2WeMIqBBtO8W7bdM/DD\neiPKPy4ne/bR6S8YYufY744GMQf9fIGDxKAmLiDhgKp3CJMR4Fr2UvmiDHDQ\nBLAPVQInv3+mmoGjaAEHVdh0ukMKSqRgRqC5/inqNSi4gYeb+Gy99AMyuDpS\nA3Fp\r\n=xLAf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWtFUqj1JbbsE2yGVrUxT3DRDM5BOYAm/tR0luRJ17lAIhAMa/M82U377QOZdy7XDtS38ERzb/MBTMAqsus7/9HVeM"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.6_1638558613925_0.20827136288278747"},"_hasShrinkwrap":false},"2.0.0-beta.7":{"name":"just-validate","version":"2.0.0-beta.7","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/exec":"^6.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"![main image](https://user-images.githubusercontent.com/14051960/144635813-82670c30-44c0-43e6-ad61-1505d5b8d929.png)\n\n[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/beta/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate)\n<a href=\"https://bundlephobia.com/result?p=just-validate@2.0.0-beta.3\" target=\"\\_parent\">\n<img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@2.0.0-beta.3\" />\n</a>\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n---\n**NOTE**\n\n**This is documentation for JustValidate 2. If you are looking for the old version, you could find it [here](https://github.com/horprogs/Just-validate/tree/v1).**\n\n---\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\nPlease, check out the examples https://just-validate.dev/examples/\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.6/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"70b3f208aebe16729fab941a9223b042b6c604f6","_id":"just-validate@2.0.0-beta.7","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-ynVYbGZMFa3wZqGJUtbt0c2R25jMdyiGTX74/qK6AHnRbjdZePHyoOgd6v2xaHkbVz3CqH8IyBHPRNiOTz0a4Q==","shasum":"81524fe3b499aba796aebc40471967f6355e092a","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.7.tgz","fileCount":14,"unpackedSize":77462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq8etCRA9TVsSAnZWagAAwWsP/3yxyarXJx+Q9DdIsNqq\nbKd2i1hOBEwbJpqJnLDvdO33wJ15DfxkjH+eKrIcIAI2qJA58/tCJSNZKgaG\ngw1Klvr5NCJa5m7qAch8SH67mZT1t9CU5jfT7BilT+k9YGMLoqNXGrc/9mZV\ncL+Hf0qfYQsJLFa8YsSnnmGiJ1Grn3J5TQH6zMX5CcDOLwcxJvVkPIaLyXWe\nkdHmWXp2OlEaMYDIodhWC8sm/UJM4MpZXN2BqSIR5jE2v3Gpp4iJ14fB+KCT\ncKwnKzfO2C097iwc3dC7kd1zlynkxcO9qy3b4tQLEj0+VNBmqhaAFsxQU/ec\n8nuP4jwYgQE3kivqi+/hviQtGV8yExlS+x/OYdxjBaybjV/CUh1YHCXj2UFF\nxd/JBzWrZUcrsBQFhhvMtzyGk5S7umaePA7VF+3i0wEXOPLNiOeQjqAZ9Ftc\n/WmVA6wA1JS6MDOXEOLTLn4kvFSIm7UIxBGikNwxXQVnIdsFQiAYmk47qNa4\nMvIFeW/NeGEFNzEwU8PH3DsFjjF2pcDfAPt7EscazUiz37mALCQ7YEXCymqP\nf9DqUYPkJMx/nL79WEg/aDiMTA8d2Fdgc6NYI6iZ7R3uU3a8WjwQO/m7F9Bj\n9iZBeSmVs8zHYEzEVh1/GS5f0W/PGx7zrxu4DfTJu7TtCpTcTryPZOJAw4ef\n47Cm\r\n=Iwyk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEEA49YQ0lPLJ+w0VQvREjqIcrEc4HGoWdDtJ6iXON/QIhAJa4zVaiqkMDzBdlLizNVPtyLZO/Ecp4R7QxtpntGK7M"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.7_1638647725028_0.07668726307933538"},"_hasShrinkwrap":false},"2.0.0-beta.11":{"name":"just-validate","version":"2.0.0-beta.11","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/exec":"^6.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"![main image](https://user-images.githubusercontent.com/14051960/144635813-82670c30-44c0-43e6-ad61-1505d5b8d929.png)\n\n[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/beta/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate)\n<a href=\"https://bundlephobia.com/result?p=just-validate@2.0.0-beta.3\" target=\"\\_parent\">\n<img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@2.0.0-beta.3\" />\n</a>\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n---\n**NOTE**\n\n**This is documentation for JustValidate 2. If you are looking for the old version, you could find it [here](https://github.com/horprogs/Just-validate/tree/v1).**\n\n---\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\nPlease, check out the examples https://just-validate.dev/examples/\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.11/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"40d1c420f387bfd00051f78b9c98920b6153762f","_id":"just-validate@2.0.0-beta.11","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-JVLrWWErdSfhjcQZfsW97t2LMnubdRIRTMlZ8bj/m3cMfBtPE4Q7ixk2e+vkJMxi+tqZ+y2iN5HgeFz85FcRLA==","shasum":"d51dfaf2f354e2a9377aa3fbacc32ea88572f12c","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.11.tgz","fileCount":14,"unpackedSize":77464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq9IOCRA9TVsSAnZWagAA9JIP/3WahUdJmuIeKZL6mfwg\nmLy7B1Wwgu4BZ+pWVKOpdnZ2zFDmvXmTVXoYKZ6s4woTn8G70hK30mjmfTyJ\n4pZlMsBcJYdvzzIygnD4t9rLVZyO0G3K0B7E5eWNlL3pVw8cxcvaxZbCA2QM\n5pg3TEXHO/vHJwiQqCfbNozXeRypkDuyoKZLjgsgCU69Tk2oIS8YbaMOpSCd\nmErbwsJMymGZdIGUIjXQCdOICPUf++M5zbes0H5IgXiz26PljUWHW8Z2c4B+\n3yoGwhlRhNMiN2Ytc2/WLGiPZqrfjjvI/ALuyrma9kRxjXPqVaWPCqdyMIDV\nc5t8Ba7UQVIbzkh5AuPykpaiM2Z1G0vqYcsZrKPZh/58VU6golbMdQsvqwGW\nLgqq8y13LedA8y5EGV+H1q2QGX2nMvvtEtD7qIU11ampEcqYS5idyITGVc8z\nJkq885/0VZDn0ybUY9G/c+9caEgSjsjI7tnHk7/QiGqKaGDlPqii9kHQSYKX\ndrd6+A2TjVteO+VXVOC+5S9hiNLrttfNplkLUM+2XSIZdn4uUhjm4BgPjiEZ\nVzrkgwWlWe8fGdOjTVdsHApPNlU8fcAi7gE4i/CzLo9gUcVdtBqp1q6dCsEH\nlmTiY7+ppNcXecjs9wBMT0we4vJJ5lEGrhzY2L2FQKpJB8dkgmc0qAz/weFh\nywie\r\n=wOgn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICfJGg60TKTj1+ou5Vh1YC2DQIEKwqxee3/YeC/HRGEwAiBgTZLMsQFyE2AV8gerS4rvfeXc1aHJIh5AXVNhjmABNw=="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.11_1638650381955_0.8067520874122092"},"_hasShrinkwrap":false},"2.0.0-beta.12":{"name":"just-validate","version":"2.0.0-beta.12","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/exec":"^6.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"readme":"![main image](https://user-images.githubusercontent.com/14051960/144635813-82670c30-44c0-43e6-ad61-1505d5b8d929.png)\n\n[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/beta/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate)\n<a href=\"https://bundlephobia.com/result?p=just-validate@2.0.0-beta.3\" target=\"\\_parent\">\n<img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@2.0.0-beta.3\" />\n</a>\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation,\ncustom error messages and styles, localization.\n\n---\n**NOTE**\n\n**This is documentation for JustValidate 2. If you are looking for the old version, you could find it [here](https://github.com/horprogs/Just-validate/tree/v1).**\n\n---\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n- small size and zero dependencies\n- no need to change your HTML\n- a wide range of pre-defined rules\n- custom rules\n- custom styles and css classes for invalid fields and error messages\n- custom messages\n- showing tooltips as error messages\n- localization (defining error messages for different languages)\n- user-friendly setup: console warning messages if something incorrect\n- written in Typescript and good test coverage\n\nPlease, check out the examples https://just-validate.dev/examples/\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@2.0.0-beta.12/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More fields, group fields and rules\n\nLet's check more advanced example:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <div class=\"row\">\n    <div class=\"col\">\n      <label for=\"name\">Enter your name</label>\n      <input\n        type=\"text\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your name\"\n        autocomplete=\"off\"\n        name=\"name\"\n        id=\"name\"\n      />\n    </div>\n    <div class=\"col\">\n      <label for=\"email\">Enter your email</label>\n      <input\n        type=\"email\"\n        class=\"form__input form-control\"\n        placeholder=\"Enter your email\"\n        autocomplete=\"off\"\n        name=\"email\"\n        id=\"email\"\n      />\n    </div>\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Enter your password\"\n      autocomplete=\"off\"\n      name=\"password\"\n      id=\"password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Repeat your password</label>\n    <input\n      type=\"password\"\n      class=\"form__input form-control\"\n      placeholder=\"Repeat your password\"\n      autocomplete=\"off\"\n      name=\"repeat-password\"\n      id=\"repeat-password\"\n    />\n  </div>\n  <div class=\"form-group mt-3\">\n    <label for=\"password\">Enter your message</label>\n    <textarea\n      name=\"msg\"\n      cols=\"30\"\n      rows=\"10\"\n      class=\"form__textarea form-control\"\n      id=\"message\"\n    ></textarea>\n  </div>\n  <div class=\"form-group mt-4\">\n    <label for=\"favorite_animal_select\" class=\"form-label\"\n      >Select you favorite animal</label\n    >\n    <select name=\"pets\" id=\"favorite_animal_select\" class=\"form-select\">\n      <option value=\"\">--Please choose an option--</option>\n      <option value=\"dog\">Dog</option>\n      <option value=\"cat\">Cat</option>\n      <option value=\"hamster\">Hamster</option>\n      <option value=\"parrot\">Parrot</option>\n      <option value=\"spider\">Spider</option>\n      <option value=\"goldfish\">Goldfish</option>\n    </select>\n  </div>\n\n  <div class=\"form-group mt-4\">\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"consent_checkbox\"\n        >I agree to provide the information</label\n      >\n      <input type=\"checkbox\" id=\"consent_checkbox\" class=\"form-check-input\" />\n    </div>\n  </div>\n  <div\n    class=\"form-group mt-4\"\n    id=\"read_terms_checkbox_group\"\n    style=\"width: 250px\"\n  >\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_1\"\n        >I have read Privacy Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_1\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_2\"\n        >I have read Terms Of Use</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_2\"\n        class=\"form-check-input\"\n      />\n    </div>\n    <div class=\"form-check\">\n      <label class=\"form-check-label\" for=\"read_terms_checkbox_group_3\"\n        >I have read Cookies Policy</label\n      >\n      <input\n        type=\"checkbox\"\n        name=\"checkbox-group-fruit\"\n        id=\"read_terms_checkbox_group_3\"\n        class=\"form-check-input\"\n      />\n    </div>\n  </div>\n  <div class=\"mt-4 form-group\">\n    <div class=\"pb-1\">Please select the preferred way for communication</div>\n    <div\n      class=\"form-check\"\n      id=\"communication_radio_group\"\n      style=\"max-width: 200px\"\n    >\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_1\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_1\">\n        Email\n      </label>\n      <br />\n      <input\n        type=\"radio\"\n        name=\"radio\"\n        class=\"form-check-input\"\n        id=\"communication_radio_group_2\"\n      />\n      <label class=\"form-check-label\" for=\"communication_radio_group_2\">\n        SMS\n      </label>\n    </div>\n  </div>\n\n  <div class=\"d-grid mt-4\">\n    <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n  </div>\n</form>\n```\n\n```js\nconst validation = new JustValidate('#form', {\n  errorFieldCssClass: 'is-invalid',\n});\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Field is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ])\n  .addField('#password', [\n    {\n      rule: 'password',\n    },\n  ])\n  .addField('#message', [\n    {\n      validator: (value) => {\n        return value[0] === '!';\n      },\n    },\n  ])\n  .addField('#consent_checkbox', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addField('#favorite_animal_select', [\n    {\n      rule: 'required',\n    },\n  ])\n  .addRequiredGroup(\n    '#read_terms_checkbox_group',\n    'You should select at least one communication channel'\n  )\n  .addRequiredGroup('#communication_radio_group')\n  .onSuccess((event) => {\n    console.log('Validation passes and form submitted', event);\n  });\n```\n\n## Instance setting\n\n```\nnew JustValidate(\n   form: string | Element,\n   globalConfig?: {\n     errorFieldStyle: Partial<CSSStyleDeclaration>,\n     errorFieldCssClass: string,\n     errorLabelStyle: Partial<CSSStyleDeclaration>,\n     errorLabelCssClass: string,\n     lockForm: boolean,\n     testingMode: boolean,\n     focusInvalidField?: boolean,\n     tooltip?: {\n       position: 'left' | 'top' | 'right' | 'bottom',\n     },\n   },\n   dictLocale?: {\n     key: string;\n     dict: {\n       [localeKey: string]: string,\n     };\n   }[];\n);\n```\n\nFor example, full setting:\n\n```js\nconst validation = new JustValidate(\n  '#form',\n  {\n    errorFieldCssClass: 'is-invalid',\n    errorFieldStyle: {\n      border: '1px solid red',\n    },\n    errorLabelCssClass: 'is-label-invalid',\n    errorLabelStyle: {\n      color: 'red',\n      textDecoration: 'underlined',\n    },\n    focusInvalidField: true,\n    lockForm: true,\n    tooltip: {\n      position: 'top',\n    },\n  },\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n);\n```\n\n- `lockForm` - if true, lock form during validation.\n  Could be useful for async validation to make it impossible for user to interact with the form\n- `focusInvalidField` - if true, the first invalid field will be focused after the form submitting\n- `tooltip` if the field defined, tooltips will be displayed instead of regular error labels.\n  It has `position` field which could be `'left' | 'top' | 'right' | 'bottom'`\n- localization object will be explained in Localization section\n\n## Rule object\n\n```\n{\n  rule: String,\n  errorMessage: String,\n  validator: (\n         value: String | Boolean,\n         context: Object\n ) => Boolean | Promise;\n value: number | string;\n}\n```\n\nField `rule` could be one of these values:\n\n- `required` - Required field, not empty\n- `email` - Valid email address\n- `minLength` - Limit the minimum text length\n- `maxLength` - Limit the maximum text length\n- `number` - Value should be a number\n- `minNumber` - Number should be more than defined value\n- `maxNumber` - Number should be less than defined value\n- `password` - Minimum eight characters, at least one letter and one number\n- `strongPassword` - Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character\n- `customRegexp` - Custom regexp expression\n\nField `errorMessage` used for customizing the error message for this rule.\n\nField `value` used only with `minLength`, `maxLength`, `minNumber`, `maxNumber`, `customRegexp` rules to define the rule value, for example:\n\n```js\nvalidation.addField('#name', [\n  {\n    rule: 'minLength',\n    value: 3,\n  },\n]);\n```\n\n```js\nvalidation.addField('#password', [\n  {\n    rule: 'customRegexp',\n    value: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/,\n  },\n]);\n```\n\nField `validator` used for custom validation. It should return a boolean or a function which returns a Promise.\n\n```js\nvalidation.addField('#text', [\n  {\n    validator: (value) => value[value.length - 1] === '.',\n  },\n]);\n```\n\n```js\nvalidation.addField('#email', [\n  {\n    validator: (value) => () => {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, 500);\n      });\n    },\n  },\n]);\n```\n\nAlso, it's possible to do validation based on other fields:\n\n```js\nvalidation.addField('#repeat-password', [\n  {\n    validator: (value, fields) => {\n      if (fields['#password'] && fields['#password'].elem) {\n        const repeatPasswordValue = fields['#password'].elem.value;\n\n        return value === repeatPasswordValue;\n      }\n\n      return true;\n    },\n    errorMessage: 'Passwords should be the same',\n  },\n]);\n```\n\n### Localization\n\nYou could define your own translations for different languages. To do that you should define `dictLocale` array, like:\n\n```\n  [\n    {\n      key: 'Name is too short',\n      dict: {\n        ru: 'Имя слишком короткое',\n        es: 'El nombre es muy corto',\n      },\n    },\n    {\n      key: 'Field is required',\n      dict: {\n        ru: 'Обязательное поле',\n        es: 'Se requiere campo',\n      },\n    },\n  ]\n```\n\nField `key` should be defined as a key string, which also should be defined as `errorMessage` in a rule object.\n\n`dict` should be an object with languages keys with their translations.\n\nTo switch a language you should call `validation.setCurrentLocale('ru');`.\nThe argument for `setCurrentLocale()` method you should pass the key, which you defined in `dict` object,\nor you could call with empty argument to set the default language (strings defined in `key` fields).\n\n```js\ndocument.querySelector('#change-lang-btn-en').addEventListener('click', () => {\n  validation.setCurrentLocale();\n});\n\ndocument.querySelector('#change-lang-btn-ru').addEventListener('click', () => {\n  validation.setCurrentLocale('ru');\n});\n\ndocument.querySelector('#change-lang-btn-es').addEventListener('click', () => {\n  validation.setCurrentLocale('es');\n});\n```\n","readmeFilename":"README.md","gitHead":"65856b9442a5829f0d66a8d6579d316a2b237df1","_id":"just-validate@2.0.0-beta.12","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-GLyPmdgDRlb8PbDJ6PDrfjKmQTPkqqsN8FJBMZMzfJ7W4J/HSOSG1HGxpFwI/O8JBMo5xXrI8uk5JVUVGPAMcQ==","shasum":"3ccb34d5944e746ddae500ac5ba6c8397f42f7aa","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0-beta.12.tgz","fileCount":14,"unpackedSize":77464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq9NbCRA9TVsSAnZWagAAc1YP/iP25zHJzdJFCGIiPoHQ\n6zGhc6DlhgnLBKG0EVpdQB+6orB3JOkFRz4WMJb6+UxdnQoI1uYtgUAega+r\nDREAwV2wItNOuwGpRvhDOFTghnOZo7rzb3bjyY3HP6KCkM+L7fs4LpR6rL18\ns2w2S/edwoTv2OSwTjLhyPGxCGOSO/G7mONavLqCkdxCf3T9kPxjt4iV3bSW\ni1KKO+DWfw/4WoqmtPDZIl825gE24WeNSw0BhW9pnV7Ip+GiJ0A5sD1GgwS7\no3KRyzLO3z/FTP9XF3AzmCGz6t0s5VDr0aWffK0y305vY5jn9zF308Ml0tah\nlUOkpWZJOLmNT1T1kZlKES+cuS5C7a72t3mKQoaG4qek+BMVf6dQ9iZ2d9Wm\nrSrzGkSBxeXuNg+qgXH9+DkujVmd2EiUierSBT3kGTT6v5NMP/5z/JLRJ28d\nlrny4tRGZDVLSsn2AJa2z7GIT49Q6VuAWMGTuNNiAo94x9lOfnk097Jdju6u\no5ACAZfbc2f4ortz/ihMXXSw7kiaP86zKSDgyST4tSahLby3sML5P/9xWg3e\nqI2R2bzyXxnRcpc5uJbY8CHOCn4kZ5NLXxkdq1KtNU1wHCdu2pRyEkzayGnf\nBfOMoqlRraKEGuByYTH95Dd2uTTOb6plAzyp1/XpdltQDc27MCtyTRCQ8JpS\nzggx\r\n=qx4z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHndoSKC7jHNWSCBQ32pfuD4QB1rvlG4Ux6KzGgMIMNAiBXqe0YyuK6SsHWULtOqEA/fwHfNkZj6goQ8nYRrwlfBw=="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0-beta.12_1638650714868_0.22013521505412448"},"_hasShrinkwrap":false},"2.0.0":{"name":"just-validate","version":"2.0.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/exec":"^6.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"ed851cbd89e0853cc9da53bed2625b3a5ae39e34","_id":"just-validate@2.0.0","_nodeVersion":"16.13.0","_npmVersion":"7.24.2","dist":{"integrity":"sha512-FP1iQWWPxfuYLJftYcxNzpTWUOwcOHx237km9Bvg05SRbhovDwx9GFxResxxk9nyPXEtSo7YoL+Z4BxDiGTJsA==","shasum":"f3d8df356a1bf0f36fd1d4ac4ad5de1497c9cabe","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.0.0.tgz","fileCount":14,"unpackedSize":77567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr7InCRA9TVsSAnZWagAAynIQAIlYRleJfPYMJkLonnLG\nGFnIUA64orzu7tKKZBgE8hwUN4Tp2UcrOWeVR7Kz1ViXt+4lFMP+wd6dFie9\nrqmURt1hzU4tkk5XdX8qvnz6EVuG+87CUg29jHmP7Kb6Yo5bbnsQhMJjTWKL\n27ySYq/ls6BziANoRMVss7D2ez278qLOlbh5XFV9EWrLaDvwwxh9+qjBq87J\nOBKGF4MARXgk6VOKHNMFwDa3qxJvXDeArssilfU1zCHETO2wXREhh/m7sK9h\nROpR1QxcC3hwaqvIcHupiTnCUiuBtp4f8ce6L8Bq0dXvB7wANaER21bDHUhB\nPOTk5AxTl/X+sRfen3gVbZV81o9QGWYpitGsNaXkRriwYgzfpEdWoz5K625Y\n+lNbk3DxZ3JNh3tEhjD3GUgHT2E+wpVPugxVzUVZBScGzBqLUjSIrhNJi8pa\nu0kZfhUiXHU0U6aMPaTmxlLWjyOt2WjDFw6x5GqCB4cOMFrxnSaXLGDANFAG\nLvhRiNuviB/NTH68XpI9/zAeEpRDRmn0HXmqmeBpLy5gX7DHSmuWdPXH2G/B\nn2vW0uEC8gkmsLEMBtnCwF86EVyINUZRg7TU2uHDoHeNEMG86U9RvQmztuE8\nNbyi2SyOPeWcHCLW/oTYfs479/Q88EsxE+C7m7Oclm1Cz/GLfrX0c/Y5c/5U\nvtLu\r\n=WZXw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbdLa4jZZmBengf2X9TJo+urVLwISqfoVfMouUkexCiAiEA8CgaWW8Tg95d0dHiWeheGsTqBR+sRaGCgSeKNl7q+CI="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.0.0_1638904359688_0.5926815797093263"},"_hasShrinkwrap":false},"2.1.0":{"name":"just-validate","version":"2.1.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"79f933a7963d27ed6b79c9b37e9b0575bc962bee","_id":"just-validate@2.1.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-yqObRbmRnB3FqQkrNEvAbL75r7SSbNG3o3/VlFDzyKfDAdngLn8UDxLZ0ewkmSog7VKqY5lOeV+cyNBqzsC94w==","shasum":"3a38ef772b4807d7bd1f0f5390ba04a1ceebd782","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.1.0.tgz","fileCount":14,"unpackedSize":80863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwyNsCRA9TVsSAnZWagAA53wQAJIr2xQYzy3bPDvB23UW\nGRIQVIxJ9+3PWGLS0wFUnddeL+HdxRUOXYg0IlLmHrc0GVri/vydKvjp+roD\nMeMuPv635yt5veFcexXUZ9bU0jms2TsAjAlfAw9qwPNyDro0uWGmJWcfTiHg\ndJawf/swB3mBuxlJUPiYxHUOqAux5xNrCR02iOzk0bIzZ/ZHmhxuhI/7ylGJ\nB79GZFv4G5hm2/3pcLnl3PYw9FigdslYCz5GRp09wEhOFJ+vx6RfJ9Wg8UNL\nrfAG2SAF7lDpvsiT7a8V34OZzmKjRegDf88D/HE0qXvhY7iQVIL9JO7yCHEU\nXh0RnTigCFsaCtL4o/jofMVqpDuU5zRJxlgrqfbl7zkKXGJf41P2Gr5ZaVpm\nE/30d8n22y0aDT0qE37L28mMMUtovvgiDy1xHqcejyJCr88RTg9+e9fy3HrO\nRZwibvmKS2hfkuCy0jLUI6v7GvOW3wOcgCjp9QMoQ8Ykap0hlP3C/Ydsiz5k\nsZEjaw/rkcDbQYSHAgBJHv/7fOj+62pMD7KDGqCHFISxbu2VbH1QNcvTjKb3\nZRRrKa4Yo9vx2RGAaOSRyLPKPKHyKgbWkyjuu9sINPqqJtQhylXyHNpiMf/u\npwwClwVihV4Q0j72WdCZ39gQkl7sXJMpeU2yM//T5VeZm81gGbqPBWcOgiXm\nWfS8\r\n=8Y8l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvOtjIu8roDU1gQGWfaaU4Chpz4f/j0tsAGKxP245dEAIhAO2CPvf6zS2qyMFp46v7hSqAhWjqw7Hq15biEhKlRvOq"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.1.0_1640178540408_0.3410607590339303"},"_hasShrinkwrap":false},"2.2.0":{"name":"just-validate","version":"2.2.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"8087691c4b1ac7ca7292267fed0eee8319899157","_id":"just-validate@2.2.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-4CulbZV2ZdjBawrVbjEVM4FN15ar7OFKUKTWmga7ftdd4qhFMeqrS27oE4IQdud9vPCMu/zhDQ6LrFxMEAIrmw==","shasum":"aa2f8e6826299b7974f6157fcf5fd533e59aafb6","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.2.0.tgz","fileCount":14,"unpackedSize":81372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyYdnCRA9TVsSAnZWagAAT4AP/RJFeaTGOEmQjuYmSDQ3\naCysyBCfvcEq1Aos5azD5ncNI/pS/vBOySLHV+I/oQupZ8YCtCdJ0Qfa4eLt\n/zvmS4OD2DgD2tSPkWKzfimBm+sRDNjNUmRUPzSXURs7A/m8E0YBiFuzGnk/\nBximgH0Y9ezy2sBpEU29rOYy7VDlD+OnwNS1CkeMEpZtiGFEMFfO+9hE46MI\nncVhfy1k9H18yYMO4s1tYP2JDCJvbpOWpTFYD05qaw4BYcFqSiPoBNYB3dG4\nOmikkZlA+jpix7cvaC68eHKwur+G12smlK4SZxulQ2XlVOaCz3qr4/1u9G9P\ndn7ZUG/2xLKGcTGKUVBM1E+YUWKHJ5USF7/ehtbpuwPA1WVBbQcIcNPO5i9i\n5JcMszaTA0gj55vuZoJuGsLaKFD6bVGOiBoZnbEI0txmD/BWpKqqz7H2RNAm\nIT2C+POe3osd9LSzAcMO08Dt56PVJp10FY6TGS5P2WtEWMvSNXWeQk+S267X\nKIYfASH0iTX6cEFwzNWtq1LlnJbewY/F81HuWIfo4gx4wtGV38pEowdDBG2L\n/KoILbDYFoYkgEQS7vAHS45S/xU0BSayyvWNIa5Eaz3W0z7bWff/IgjS5Yy4\nkb3W1mG5Q8HrFyxeT/jvpVk9dLOyM3kT1ZJOkixtugov0VUDA08YaP/G6Wyp\nckwR\r\n=z9Nd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESFrjU8ZT+qUdoOoDR759h8o6BmTCdsw0qNbgW9AlPjAiEA+7K/TxcHcs4KpMnVyM8Oa3NJdAk1C9pkDuCYdULL1HI="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.2.0_1640597351284_0.9773907787039959"},"_hasShrinkwrap":false,"deprecated":"this release contains a breaking change and was reverted"},"2.2.1":{"name":"just-validate","version":"2.2.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"1d2794bb1580daf8e0ab64a723a36b976989d6ee","_id":"just-validate@2.2.1","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-oRavC5jYW18JgjoP6NOe2qNEwhzaoNW/53OUnBCSqqKF/MZaaMymkpsjY/eSPYSuz3DOepGiSNd7D50ZGuqXbA==","shasum":"8f17dcabc7134c83ad2ec4c0984c6f59280242b2","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-2.2.1.tgz","fileCount":14,"unpackedSize":80863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyYtxCRA9TVsSAnZWagAA90oP/1bW+xVvHutqzQOCtqh6\nHz9VK6RLDfCMBZBdIhrOw5L+q/QBdE4w6aX/6byOS+dx/kigiROEtsZfEcsn\nAWWKOWVoujfiWWNkaTnoFbAy05WxMhU4PTiVZTv3Fceja8zKtaxWrfTgFRI6\nV+ldHk/+nddB6QpX8twNDnbvKJOlxN4TnfmJJLq8qEVYtncbfiH1tIhZyt4+\npFZA+Qix+W9dJn90MG8m7X2mP7/J7XXiYLR/lqwBg0x1I0bWGSD/6da0gxHt\n+Y9c69UMeeR9HFYUpWRuAIZVYQx4XuHTlmWNEjJAsCWuTyO3QCniPIGUkiay\nzuB6jpXh6U/c8N79E83xWDP5s6eINZqaWBWE1nGTH5FVG3e3uOC/ZsWs59+c\nAyIRHTqA7We1xydi8C5Qr9X8IkyA9NLup78PfujgKYsgHC9sAtyIVzyZGhSq\n68hX6dmwSn0eDPfXxIBOgzFUCOQ04Y1cHNX/lCxQsISXbrpSwnAJCQvshptO\n8QMWW3eEFVDweErrUpTbhvMt4J93Icq4bkp7hlnapyjXyBdXBGQO5AQRNmrc\nvImOtGwN59DYfPnWbf002NxyMXWlGtckeRbUkY4AmuWuLEfc8Ft8OjQMRJUE\npLhyeU+ZsEEoYrUFWUaygsi3/0DUZF8fsfBAHBONeg/MVDrFQH3WSwmxOrgt\nsTIA\r\n=xbIm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwEvYE5XMj3qK4IjKMyBqqUDqGj6hCjIWBOq/FY5IsBAIhANJtd+l0EwZQKciimlB6CkUxDdhCBQrN7jeC2fLNXORW"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_2.2.1_1640598385104_0.8694439946884125"},"_hasShrinkwrap":false},"3.0.0":{"name":"just-validate","version":"3.0.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"e88341b422f0d0741871ccf15b1e5c5583b1cc4e","_id":"just-validate@3.0.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-1rzpPaYX864TDil8yUwfFxXhh/KIn3tB+mSi+2ZG6fkb1QqqXnbKAevIS0N0oBfKQN45pdT4g/T8H5D7H1MpKA==","shasum":"a3a115f3f119a0930e0cfb3aeb7daedba4a156b1","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.0.0.tgz","fileCount":14,"unpackedSize":81372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyZE7CRA9TVsSAnZWagAAMJYP/RagyxnoCS6YTE0kdf9v\n1SyAw4is9RchraL0t2MQILSi6ouF61skNCjbJnncMffn6Gj9mNkIY3UQWU5m\nyvTD7Nh7Wq03Mx5RiK5nv/EzQv6UE9tlVemCyKkqHiJcyOyovwwfZCrZZCCL\nB/MPSbRlMxUO4JOxjfSPzqkpbBP653usfDRsdVUxZ6AZ27zmPEOe7wmn8d6r\nSuh1GLKj27YstwGlLr9qZ6sSmUNTAu+0x7APDutYSiVkwyfwteTGmX46IBI/\nP8zJInjhHQyK9uYvx0LP5g03bkbwH/iiC3NkWI1/fl4/rrXKqhoKx3YkLCbp\nTsYiq0cJH4INCPz57EAY7fRk1G+EBetUGgvAOhdei/J2J+ISZYvBC7a+5ZXS\nKXot9IG5RixuDsWgn1xZ5AO+cOohhEItsb8SPoqcBkAB8Bx9z1465FQLKl6c\n4kO+3k8aOzhlGAnCuVMvCiFi0f5v0gUCNTqz6sflebU7jCxQN9NvOkQN2Fqi\n3ah7qHDO6H2CXn8Xg1gYgNHbKbIUMtTlriuWLIJ148Xez3batgkG6dQeQTqw\n92+8OBv6/ruFgezfjcw87gHzqqVgJmoFbWv81L86Hh527l7mwUi2jmh9JC1k\nDafnu41HhcejZaNWjLvvEjbuAVgQdRKbA4On2hIlVwgBkavYh3LsFfcp/uGT\neGQT\r\n=XzY+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH38XFsymZmcrr/FBpk8OwKgWzXYgbXyN+ZT+eyyB1RoAiEAq+2fpE50nLJFkuR8yW59IjY66rLrh0lpOGgwIIAiMbo="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.0.0_1640599867611_0.04875556398848002"},"_hasShrinkwrap":false},"3.1.0":{"name":"just-validate","version":"3.1.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@commitlint/cli":"^15.0.0","@commitlint/config-conventional":"^15.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.15.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.13","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.4.0","@typescript-eslint/parser":"5.4.0","babel-jest":"27.3.1","eslint":"8.3.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.3.1","jsdom":"18.1.1","path":"0.12.7","prettier":"2.5.0","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.1","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.2","vite":"2.6.14"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"557ee004f5a8063e7af947c949df31cd1511b2f9","_id":"just-validate@3.1.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-J/TZqgsnDAm+ydvnwa+TQUFjbVZvHQOPDJMBK663GLTKa33vzCqzSyXGajReZEhNvewgTvtdSPvSD0yA48BDIg==","shasum":"b8a6dcea10ab9ee0cf6318ef8403e64a529d7411","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.1.0.tgz","fileCount":14,"unpackedSize":90205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyd2lCRA9TVsSAnZWagAA83UP/2hPS+B74z+FpSUHSdid\nyDR/8lfBX+eGa8Hz5GcMZ1/XoZqATH/o8CspyZ667j/TSNjxMWFuEQ9SLIKC\nvayVwyxx722rIv5slar3QVtH5g03PbSnayLro7WpEhrJNSKX0qyeBybRA71r\nHDPSEVKjgSPSzBt/xRUS0gsPPAxpcvqgqe6oXo0VpxIXtRRguwOJ3L3MfXhB\nuLxt34qApu6PxAzbIgVztYNLFF3cc4HAUeJFR8YCeYqsuxvcFGPeywEusdc3\nbGus58rJA0ajuC51wDbKfpNZDU6sV3wOR3oQhwiBkWpKwWXmvLjgNdVosolk\nRR3JlTTGZfgf6Xr7Q6QAsc00Xqn//QbSN7bhG7EtfknZwAs+fsg9ku91DHTv\nz+K6Ydx6c3VZWWiZd4MjyLz9C2fHnhfqvlaA2JFGL0EsUmUqmU0tYAX/oyQw\npI0AsUcf17til8q5s3p91mLUWaQUFUEpJsmxYcV4RYrQGjfWgsojPMpzKiDB\nYRPYmagilWutubihQMXAx3XjXVHVTHNvqdtSgLup4T+Ll6S336UPcja/HXG5\navMNZOPxAOSwFsn+aJJBmAUWAXS5XZ7rv03dT0Po7QRhxWmN2YBvZZH0TsOL\nn0ztCC2PdEJR21uDESPkEdhQyyMJu2agqC9rLxWYdzqHGTcW/wf97J2MjBGL\n9P41\r\n=baHa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFhRrXVEyUBGxnY3bzxwGnUGiTLLIVArew6pSlpSdB+sAiEA269EtIh3ZtmqI2+cY7JTSgYPgM9SsFCsMefcU3eZtbo="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.1.0_1640619428836_0.29709442160686783"},"_hasShrinkwrap":false},"3.1.1":{"name":"just-validate","version":"3.1.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"eb3fa5f1c0be4615340cddf08d4325265ae36181","_id":"just-validate@3.1.1","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-9LUMX77bicoTmkSRQ3aNMCrCHnyBJDa414rySbUEqEYNO0EOhBud9NlqzBqTGYN1ufTwcaB2r8eBjMsjCugc7A==","shasum":"3fd77e17c1e48454fd46f98506cb0251b980cd27","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.1.1.tgz","fileCount":14,"unpackedSize":90204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyer9CRA9TVsSAnZWagAArNkQAInMWyDAzxDXgrvCM7aI\neNlgE962aOThXJie6teP+AhNRuaAdVPDw5kH4tZ/pak1AEV9uRMqaGY540V0\nD1tnWKc2EQ/3RcHawFQ2PHu25gRjqXsdAms5uxXKICZWZLMeKmafLtokb4G4\nx+3UjrEPKauAoopeHIgNWogyPTzKHSsS0oSuwEUNRftWTjluwKNvhHW3+lt7\npQIMfT6z7ZyoDQ3BXjDd4ck5I65+870CxGVEtMA1WpG4UWFOG9AGk3pX0BfX\nPgp7oK72eejzUg+aSFb+2Yvs3gCTeVZqZxayJMPD1lpo/DyPK5SokqdReBme\njN/rCSz2DFRBBtWN0n6xfcPEXv7IBOe9wx3/Yo8LNvRE8ni8+oE5bf2fR8pq\n03U8An5pF2FDicf0GnGWEWaSwCJvnbJB9UKCIRDg7fDnZO9FQFnjoChENezg\nq0zZBEksG+aKdzZPshagMGLLypls7tJXOBqBpGiCFkF6c44+eK5WIRYY1uBW\nPtKAYFJNfbnzYiAqTGqk17uu0eue0Lmx8zI+l95anu1A46XFVIJZaZj4wmYL\nl8DJBrkmGv6CnInK21gqoolcmuIfzzw7nv2kJBFWDzNNi+00PK+X+9L145yV\nHgtHd3gx47t9mxu5QROtBjMvxYEvwmxMqPPvINohUN0QNC/FtiIUcH12xDpS\nfQ99\r\n=qKHX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUlxyolRQ5nlxyv2/kotUtzpO/R54OVJC1VBMRlhdgiwIhANH4Tm8ftKTzD/AKN/WAKQMrCaYfpihDvj5AVWEAtQX3"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.1.1_1640622845288_0.589663025167654"},"_hasShrinkwrap":false},"3.1.2":{"name":"just-validate","version":"3.1.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"cb1502d6e8cc2bc3aa7760908c39ca8fa1e6ee73","_id":"just-validate@3.1.2","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-L+Zq9c9z/e5s3V4qykXxBuz+qVF8UubXpuMv8gVC43L3KaiI5t0aiHle5zsa1m0CwpCVIDhjXiw/KNFJSRRN/Q==","shasum":"ff21b3383d65c6141ba527faf0f9c50f2f6b5673","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.1.2.tgz","fileCount":14,"unpackedSize":90403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzFjaCRA9TVsSAnZWagAAAJgP+wdj/tFY5QnGjKZG74Uv\n7rtnhyZdC7zzv/SrSfVDYEj2iO8Y007f7y0mgT3J7IciUojOvW86Vn72gkQF\nAmDqggUQ/n4oIfVuL9JxP2xe5750vOvTgOPrXzuKwf6rO+vDQHrEYa1NkvpH\nHrgKs7F1K2tlUjg7cNNr0quHe2rqLYrBNLc4IeJqMAfyxfOFhzFxxAnw9tkg\nStvHl55Vpgc+ktgZes+m+JSdIljlRvtIEOJVcGDsXYAmN5B5UaF72WFfPRRa\nevOVFEUJRVH5OnEk7UTMEgfvwKXcNFvrR4jKhJg0TdLQ8Go4HORe+9Znj6Xf\noBtK0mIR1lQD/nncWnRBwOX2NUJ1UDg3zJRqnP3JolwpT/mMhVRfCYrwHch7\nREuFnbfz5dVZrrTpuEZD0a3yMhzVp5Aw3OLtPx4F7L6XkxpxVR862A8d/tu1\nTicMRtMfxgiKNuJn09XqERLZJQFi7d/uuIDQH92+OUDhM55Abf9ARRk1vr3a\nNjWWdjlFLYk0b5wh+BrJWE9Zn1QIrxger7sHEwYp56bgagtgNbwDTVjVT/ad\nxhsP+kfqTgh/gBjYmeJQHsz7V6q8900vMZWskdf9Ps49mHl6WDgz94vd3nzB\nlhf+ZAFknpyNytzuqx+ZVbpQVMM9PvGYmEMcKQFjVNG1uGs2TVfqKhA10orK\nhw5L\r\n=OB/F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqPObBj9xbc+fVuoVkmVRkpOpePujdB1VG46shR67qlAiEAgZPhFI7Bj3mP0OmZPrB1EMJS2Vfl8O9u+ubS36DRo6U="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.1.2_1640782042265_0.2912286550098937"},"_hasShrinkwrap":false},"3.2.0":{"name":"just-validate","version":"3.2.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"^1.0.1"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"e4c2da57fee40502cf3ce1df96368793c9bd5c00","_id":"just-validate@3.2.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-CS24Jhp2gVnnV6LMQBrJHeOvTS8QM/kCvktWRfEJBt3Wh6B9RgOUYVFgtwQ8fUrzltrwfcB23xciYvag4q0z1Q==","shasum":"e35b6bae0a5592e2c5af59376ad1ffb66c32787e","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.2.0.tgz","fileCount":15,"unpackedSize":94165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzcCQCRA9TVsSAnZWagAAL5MP/0tnxYJBhgSbElBvyuoB\n2Idcy1xaQsma7+qKs2vjjyo+t5OyCP+4wZoDwNYWRTUQF6Wm3UiEgdHQKhG6\nFNqXKAZYgpvHMvhvGLGROXU3Ucha34LKlAsSq5wtbNTi5fhQptynqEihzKox\npbPyOlFvFCHm7MFLTVYhJp/ETkr/v9J/wCahmu5ETiXQMXfbG0vY2mPYSlvD\nLgf986uySAFzb0h6wE8Cj6we9xJfOzkLR5U0wQYDAtTONOKr7elxJjroGatG\ne2DU3PBxTZGDJw2ggGZiIyww/HjyZgDOk8zvfD7OD2gLOxCjcPBFpr5na+dQ\nNxIGuumTdZKWvkR1pEFvBUQbBnguO7imo30EwZzuxsV+ftSNwjvHwrcFc68X\nwd8ugYyzboPHcorM7RJY+9IpwUgYAYcFR4fMO216KGrAPPRiOvBC+Pfi8NYs\npqRSJ/103HlGk5S9BDcQ0KA3hQ8fegFFFqYV5yYaCasFyvI4aR1CXyGrw63W\n4I3Up1EkIJzYlKDvAY9vs8XuHqoFOAfu8jlyzLocJ3BXXb08DaPe8Z1/P/0q\nZd0j6iuq0S65tGWBprZ7zevqcatcS9/7ko0HVxXsxq9COOVnEu3ccrApbBI/\nE8sH1cG4lLdHnp2tLtSQTz2/aU8Wwp1Sh00lf8WKtCJWdmdCSmZ0MHwpjiE7\nF6xp\r\n=WfSc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVZpmzj3llf3yp28Na16Fi3lBFdOXxjNa1wimc+wHshQIhAO6ZkAsstVDpPTaKTHjESK8dHtg/PXKLvHAW+TLsiuV0"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.2.0_1640874128821_0.15134563366455067"},"_hasShrinkwrap":false},"3.2.1":{"name":"just-validate","version":"3.2.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"^1.0.1"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"2aae907e88dcd7b08024fcc41c8a453a94e3b09e","_id":"just-validate@3.2.1","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-jkAb5K9J+eMNP4AgeL4Dk/8tGUWi2E23cRLBdaaS5dx27OQSr0mCB0hzuTGJu64nfUm2877dm+GfaVIX+iI+AQ==","shasum":"11941fcd6c31c8aafbb7139af11ccdf4173a5851","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.2.1.tgz","fileCount":15,"unpackedSize":94309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzrE3CRA9TVsSAnZWagAA/L8QAIxUIbIBZFNqhVmDDrX/\nVsBQmKY4Digz8aEEJUAE6HcK7rYjE5h11IfCo6EKkCYY92+ClSVaaVZ9r1p1\nIIoNrjIpw+o8xsb3QHgvWU8ikAqNEqIQ+nQyQ2aYVDQfHl/kfW1oEcMb4A6h\nlabCN254u0ByslrAjai2V1y6lyxK8raGkJOlzbHqJ4lQoRQbYIwTfZDlT+CV\nomBZfwYBZns2fqMsi2D1LEXmOOaiULR3hFPh6BWTWXddK2Lgik44eyatuOsw\nKhwVBPRk+6KwtVXXjA/4wgcM8Vs1oY1SVQeh01c3l8GLZP3HI4uk80NHcL88\nulDHgps3IiilB8DN61JAQy594jQdXrgdW/Q6JlJ/9/jnlapgf/ux6RmKvOWS\ncLANFd+hfuE/8tOWVAFSwtrQ03DCQcMooPEYFqmImdzj4RnpdmB8v0WR+ACp\nLJ2qkxAOmXJ88ZbfNdLLOzWTTKC64lIUovOSQAj/oeklfnfKJl0ED+4adbg8\n4aaElUju2BccYwQnT64uPMxxD9LJAd44mq7kQgtodTBVKNztziooZCR9pnEQ\nCLUBfok/WtQ60aUzx3r12es7/o111NDEBbjYdjwAA2o3u3WeJn3EY9aBskku\nl34xrhZnpphAmM0XFRP5U0RIWMi77o2N7KMl90WkKai4MRp+WttpiybMkI3Q\n5+yf\r\n=GpK/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBsQG3Sx+Ju2xkd9RON0nBeV3lwXZiRTyHH4LLqkKysnAiEAxLHyX5y64Un+8rwpDDLe8mX4cpN1GI+lgZ2h60KARA8="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.2.1_1640935735497_0.5894582090094413"},"_hasShrinkwrap":false},"3.2.2":{"name":"just-validate","version":"3.2.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of pre-defined rules (plus it's possible to define own custom rules), async validation, custom error messages an","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"^1.0.1"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"2b59f30cf3917c6d66bac2377ee570d353220134","_id":"just-validate@3.2.2","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-j5iprzEuDyNl4H0YMhAmHi3O+GLC3418N3xQsjSt1jOZfXpo+I8GHTK1PaKmTN3ijjmKc3HBmewGEGeN9fm3xA==","shasum":"fcc0d4ef263efa8b825f68921c2003e79549b94c","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.2.2.tgz","fileCount":15,"unpackedSize":94367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzrr/CRA9TVsSAnZWagAAeXwP/RqdCAdobfZ+C385DnfW\npDF6WsrFAk/MGNECLZ/TxyEFoTrxYK8F/INR4TK0ARKJPMHL4ZHQVBIQoWOF\n3JIgtOMpnlpwHHKsBfyOLI5PERGBRjw3Hn9OnZihht/hNeSh5v2qfD4PVfTo\nrpUxrFEzOClgUriypXEEfc3c75Ic3IcH3pRfQqdjkmSBZ4s972qtnKNt/Mh8\nRALIglPT4DTkCf2/LUDEZUWrGh8x2IGx2vRNBtS4bo1l6RkTnCQmRzgO92mc\nrKO34RsHXhsIrZzPlaBmahhvjWvq669h4UsUo83Nq4b+lKTOfIsTypJrnka7\nUhAmx8kznMnARhB8pxbTv+wzyPRTlcKidcizYPfhXRcYUkRC8x5BNPAV9dVj\nr/BKOdTi1GYLiTZzhPi3/jRWBuod04pXq7VTF2LFv/9IaZawqFpSLm5xCQ8z\nAseNb3daB16/ncSFngH/d19axWD6P8VxjQhy8rElPlwy0U3HhiaB6p6TOVUG\nHFplpLYVc5glr4z+Phpg131ZJlrRIflLJk4dM/m4o9qTSve/yW7VZW0NfKa1\n7pVN4dm40BHQcFTq5nJ31wgbR2JtgkEmyJqX3T4NxMq5rFytp2p5ai3C5QKT\naFDnIPSqUnae2at8HskF1ajXsrQOIHqSrAMlxu/MvBzmv/HoPoR3MML1mHiV\n7e1R\r\n=hAVT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFm2FzAfJI/zj1NvfrXMWf78Mr8gWcqN93MWdts6rkJiAiEA0Ed4ZXxSwQXP5B28K7i1C2LlgE+RLJ/mDfF3RnVeIEs="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.2.2_1640938239267_0.8733438874909851"},"_hasShrinkwrap":false},"3.3.0":{"name":"just-validate","version":"3.3.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark .","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"31a0c4ec4d429aac02fd858fb9178ba3256894d4","_id":"just-validate@3.3.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-cxmINz51wZCmpAYAkDPXSkOTNCpizMQwJJjL/SdB/ynn6Bnd2WoDJNkR8OjZfC/OlS0U7DJrCC0+iF3etYk0hg==","shasum":"e9a6c967179cf892b87cdb5c2fff6126a444557a","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.3.0.tgz","fileCount":15,"unpackedSize":103245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3IFLCRA9TVsSAnZWagAAQ0sP/0vlZY6KFaSyb6rkgLBB\nrq4y3bmozcHHi1UJjhmsjGC6y5lbq0yQhpu+tSoZuH3Lmz8X/SsT0x1qXjXk\nuzg9lgc7H83+QijplQOo3fkGQuYa0jr9ZLFutNW9bdRbTTa6sS6zyWhEwfnf\nSUzyO56ABVIZxTHnt133vS3ldAICiIC5PItPvLUPRDoRJlm/WU4Zkji7v69T\nA1kMpKmXHQSO3PWC82jctbXCz//h0YO8OR0T4PuemKacGzfulOR0NbEygtzI\nPOnDc1ihvXSTwnTXlTFH4ewChuCSYdy41D4FdaJz/Un16kdsPq72+a4gco0e\nsx+VsM9hhiIgH6eB5ljrznm9GAs4vfsafhOMISDrzG4L/E+ymUALKYyCLDD0\nXZ77WOWPoD/TX7o1at1N2X5dp6gLe+OoApkkn5AryIBIfs9LLIXV+sjXGaQJ\nigjmAfAjNBQKoj/UI4d4stHZVCsN+zGrNr/fhKIOxdiTaxNbPWjnJ16y55F0\nmhqUvwawJ9b7kcDiPCZRt7sRr/zVbKNr4vZ7o+8VMO5Su56Knychuy9HogBj\nvzuW//lyGmW6zIGVujEmv+p3AwBrb/UvHhhQD76FqL392ySL3mAXLlj4T5DA\nX/9KgOf83ehSdF+adJaAecRqhlUh5BP7OpFXp7kjsLt3//ydvTW1J4AzNOKm\nR8X1\r\n=Ycs0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCj7/EDmh9em8Y5PdwG998AyOjMB5Gv5KdBoPmfX9BZswIhANJHKcTuL4RPuhWYO8CoorhtRXfrn0XFn4Lwmqg55/Hx"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.3.0_1641840970825_0.8667250318047564"},"_hasShrinkwrap":false},"3.3.1":{"name":"just-validate","version":"3.3.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"177fe3235e582f35e760984b2909cd4a9b495afc","_id":"just-validate@3.3.1","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-y5+DabnySbi2EX0pvAQlPsRW7ZnyrhmQfmabGdSQJe+uvQNpusJ0J1KUvlb7dI98GUCM9CF3PMOHThFSrukUsw==","shasum":"f0796e948591c2139bac2d880c6653e2ea351f55","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.3.1.tgz","fileCount":15,"unpackedSize":103549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5wJHCRA9TVsSAnZWagAAxIUP/1eGv3DhSCLCw0SyVJsf\nUyZioFAWRzotXyYG6y3KEGb563HU4mPH5K7YDWyE3X7fHtGLqocHpRPVWIp/\n8M7Y7xMXjiVZYDUm8EoANF1pjdfFVTQVyNr3kcVUvLuoW9uJMajvLlDVmnBo\ngFHIsfMKvHlceZZmWcunQ1jhTsnMUTycTj6b9GVJ6q2CeStMhFkI4uOubqhv\nH0g9r7CLVL3R5+e0kjGURXep9NimGCrVkwhXtr29QRWC8uXfeMEsuQ3q3aey\nl4i5C0+6gal2bLV5JoJD8ecVg8KX0tCbdy4UuZb/EYNKqELqP8DK7jR4mvIG\nSGbPb88jjAnr7aFeJfgxbp6c1Ti11aVbCrjF3NpcYKwlB6wT+tPPOLs/5rLj\n3l44/K07rhiZKxIakvKck/vUlIYaGTyFKcuxBbcgACulNqobSrSRgwSN4paW\n5TVmyppIyEGM46WERx3s79NP20rnT8yAkJCRK056jnVsprskzo1GoPts1lDJ\nM7WdPIZqn7fT82w2PfE3UfZIBOc3g6xOHldbdENIXVRTJRm617pRJ5myJ2ae\nymQf/qZw83PpKor4Wiih7YT7ofZsDqNhg4sdfQNYUOHoF8e53Bn49Vp9JjCn\nUbQgXEhJdzQrhvNoSs90yxusyYpKF8cNZqDE7ZT56B+xgVGzi6Nz1ThyODAv\n6H1u\r\n=jsDj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFP5xUB7cbBegMjKIrWcd8TEo1KIFFo2DFOLCi5erTIQAiEAq8YjXTZ9HRus1fmZGikiL7dPRCVCAlFy/LFtEI72qWw="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.3.1_1642529350830_0.9965885751563606"},"_hasShrinkwrap":false},"3.3.2":{"name":"just-validate","version":"3.3.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@commitlint/cli":"^16.0.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^8.0.3","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.1","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.0.3","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.8.0","@typescript-eslint/parser":"5.8.0","babel-jest":"27.4.5","eslint":"8.5.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.3","eslint-plugin-jest":"25.3.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.5","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^18.0.1","ts-node":"10.4.0","typescript":"4.5.4","vite":"2.7.7","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"11517e5eb0211d88d875a0e76c1a7ffa08d47ac1","_id":"just-validate@3.3.2","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-go6P54/z7hEWOFvlmbqW9AFbTWLHKDAlJstYXhz3CubHvW1lswKBAk2LMRvs3iK4wqItKxBQRzwHHTWBfSv6ng==","shasum":"74856654ac5f249a84234203fcc16d7f1c3211d2","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.3.2.tgz","fileCount":15,"unpackedSize":104939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8E4sCRA9TVsSAnZWagAA1UYP/0hUAWJrWFUk78CTDNpw\nNtvKWXvdZgzjsrRis6PWexrWiS/wdOp5WpvDxoZA/prQPtU0wXEEj9OCNh/A\niSaWVv5ZSpcBj6Z/Fudai794YbSx5erJhq2Yt9h3GgR0iE/gtiT3tSzZm7Yg\neTjTbzIJM9t5oS8yPiB6yhdSwQAxQfgflmswzlEpBjknjehgxb1Gx+zkCwod\n+7JfafgqtoZAajlhGe3OKoWZ2L5QW8iibtHOKpw5o5HXi0JwUsumKHzg+817\nfy6Ev6kHKAnoeY0+OS746BZxJnR53bwajZ6GhL46L2/uRPrk8syZBnWIvyRJ\nTKK31L4wYfxYwaad4zFYpBixplTUsSJWe2fjhk5HHN1+8p5XXJbq+SD9sy6k\nzPM3BCxSrcMEr5UaHHZibSHpkC+mdyWr8S65YoSACOlvkaBILnPR5wDfFRrg\nYJtjK0exa42Uing3VRDEXT0iEjnibaYxM0SooSV03yioJ/t9C2P547xGATwy\nnM5ZlJ038Y/Gq8Rx7zxO54zzssamsEEmFXXg+d6jgSNNKJDApqN8Ve01W9kj\nllZqcKT4apHisV8GrkeURyvHZXmn17EVvgrltryIBRk8zCRxV8r/6UHM/BIJ\nctSfv0hUDF/lRiUyuLxa3iMeVgBa17waVwUHmqSR8qSLDYYI3UaptzZBP4vt\nvguo\r\n=IsD8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWpJ3D/xseJd+oI9jfXeSrNF9jK8/KFT1XqGDz0GmAwwIhANrzgdLbc0leOYctdrNi+J6oc3WF7V5qi6o1ikEC7QSb"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.3.2_1643138604667_0.4774352998088853"},"_hasShrinkwrap":false},"3.3.3":{"name":"just-validate","version":"3.3.3","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"f50afcb7d1c0d54c7a347b30073c1bcbbf8f88a9","_id":"just-validate@3.3.3","_nodeVersion":"16.13.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-LU/GKQq4QUghzIcLFZ9+6FXuxc4hTMVgj0M9SHkV6z4zkJNy0kMCb+sGT18UTz3m2e1dtnxI6/FfpEH+MLz7Rw==","shasum":"7ae2d80dac4dcbfedb29a8be0617e3500160d4f9","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.3.3.tgz","fileCount":15,"unpackedSize":104944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8E9ZCRA9TVsSAnZWagAAMXEP/29xwEUX3job/byH9CJF\nF/+FZ+HxIdV5/m/QQfNICXlC2eIOuj/cFpw+I5FBAtk34CD/O5StvOeSRTai\nd/ztaGXouhca8nIhPMgtXkEu0fLU4wLA7rGdU+HF4UNn4rOtvKenN0r1OAYZ\np3CEunBTz/SQTm8oAWV+GnInT32JOz8A7Ll8yh7a8X37Ua7nR+qvrOp+LZwU\ngJwQURZYwGUw1cJp/sEoXg5DqzRV6y4N3TcIcFhDU9nfwWHae2TbMv0H4siM\n/RUWQWsCFfI5zEdLjR9TYnbiBB1ATCm+gJ3kq0gocMiTMkswa7LoQL5BD2tK\nzW6KysdjHi96Dz4vyPsdks5fH5BWecrDuiJfHbSu76cLU0Y64JYKA5GCIoMd\nY/UOtBnGHuF9/7PTFLa2c3UfzUVUUY2sllCRLmss3rd6ylkXi4NjEU8Q23+j\njJQUkXV3QOBSNYIiYBpTP0onFHBbHl0iEf/vAgf2QjAdyPZT+7e6DBjsA1nj\npLMJpAYglLEpGRk5Ch4tu8/msGhJvj4nbaaKRk1nHLAgxMT+LutACiaK6X+y\nSMlC+kMzr45P3BD3JaxzjmrXn/VWpUXY+QvIaBkoMhaRbMGDu5BzxjmZrfBx\n6ckqAMenQSsK8B20kEWr6AOJY2VSFEkXH9fZ/2xG5a0grkmBqZRHTmPUUZWH\ne1Bp\r\n=dnKv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4if1uoqPnOfWtXv2JaO2LKQxgKA0b7stX8D3emzUFFwIgaYY9Gd1Rp0hD3ENw9WjE0CDzwhmnrrqBdi1Dle56jj8="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.3.3_1643138904834_0.48972116883712236"},"_hasShrinkwrap":false},"3.3.4":{"name":"just-validate","version":"3.3.4","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"46b346f51235043fa1dd7855f5887ae100f9a055","_id":"just-validate@3.3.4","_nodeVersion":"16.13.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-+6LV8Yz6WyCofZpsKjvphdPd86De2r/srqPNwmLjnGGHq571pP8a19F+LOPo5yDKZPpyahYhMryeBam/NrRAoQ==","shasum":"d3131f8f22886e914e19d85d87870a21bd4bb8c6","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.3.4.tgz","fileCount":15,"unpackedSize":105061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9C/rCRA9TVsSAnZWagAABTMQAJiW0zdBrhtk437ADdgM\ntUls2Gxtiy1p29O7VeLxuNkKqQ3DazYoGYTZG90fksdmdysYffGkJayi8ac1\nZaNxwlfJQZ7yWNSt1jTvexQZcjCVFpsBGxYjeAvtV5Hslh5+ZsXRXpenBPIy\nmZO5nw9yzOBCxbhjjUYX1gnUd9sTP4D3xZ4KhBuQbuFV2wujjzqLTSTnFqqt\nrSlr3LOfpz5+Vj2G5hmtPAqfoMWRTBLOzmSZTpUZo+VkVayi0bmghawJbUHY\npZAeZUvbsjudE27lEWeEk9zpERcKezhJClXl0BAx8IrW59M/LOKJtcfIqHvS\nzWFU6UYMtquR04weHNUW0FbK4SexomRXW5sNji6vGHAZFWhJbn3gGbBWqDQn\nve0akHcJxceZurO+oqHFgVHo2JqKtWymPG/JXGa3b77lFPDEeegCDBXOdAHI\nTg18bYNWfkUR6d1lLiMeP/6MVR+aHC+ZtGY+0ZKwa2aluyP0UIs+yqsez151\nTNa7am6NnIYuQzM7P0xkKsNB5SCExNtxRHSWn9MXTQELiMS6WTcE0MTyER/F\nhUrMvVq4uiBMZKUrJZFigcvbaVTAo6L74jgVmVOMP8AS0LvQxSoyjqpTC0Yi\nx/+Rl6JJYEMgNOKpNgLHO2dJj/c2cl8wQ8OFBfsrI3AOUUL6JuYvIYV0TCB8\nEDcy\r\n=gVvh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDty0hNYNTCbH6VqQuIQnhmhFDZK3rnBPS8RJotiyX/OAIhAPlbVwl9hoL0tWh4Aseug/jIxJB/kx9l+TGCl2VMRjYd"}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.3.4_1643393003536_0.6592957206503867"},"_hasShrinkwrap":false},"3.4.0":{"name":"just-validate","version":"3.4.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.0"},"engines":{"node":"16.x","yarn":"1.x"},"gitHead":"47c86306d8f747f5afa7f8cb1df6c21e62aec422","_id":"just-validate@3.4.0","_nodeVersion":"16.13.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-/fv0HLCzFpe+mhnFdErox7g+s9Y/XYBcFvZSAcks0SWRoMuNizR+tA3z8+FM83mQql1g4baMYgT+EzVzFY3QBw==","shasum":"043df66f6a1d4c7ed2f16fc472b8a7e411e103da","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.4.0.tgz","fileCount":15,"unpackedSize":108090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+FxZCRA9TVsSAnZWagAAYMwQAJBBlWXIYKTt+fCLhrHA\ntggJH0jN37VI28J3jAxSOHQoksVNY95Jx5/hSOJn4NgNsBv1PJoZW5Awx+R5\nCpSAx/O42844lb7v8t0GAKJAHum1pR2Rr78puAz5cyzE9Vr9hz75XUF75EYY\nJ+9u6Hzt5s1GMZCZbKCUrNt3WotM/9Q3KuqWMw0Rww9xmMuAPDHw6h1q/29j\nOC8etJeWermySKzFbF+Wf9np8cQvbvkX0/I9/zDmRyHaoIOyllN920ogbsXW\nD8Zg3SJVPN4u5k9tBE0QYSI/wn6OFuBeXPwIBug5nZ+NSuz61J1dN1A5h2G2\nHvmuC1IjV1ABlu9xR8yzoHuryyaf5WkipjiufZH4cScK0nLONOCOQGo2Lfxo\nIIfORKd9ezhGBz5LHaEgBZMwT+5xThmA8RWbOy3Xx/dZKzmGl9Cyt26y7gMm\nXUzqU7o8kFn+fMCYIqBBMz1ErssN3ovmr7o6/+lx+589XqSG8ke8rsc8tIzu\n6akzHd48SsOUd0fOwXurl6km7PvLPrMt/iOG6I22btrPK4g7Tk+BvGEKFnTV\naqDyc4xvsZ75ZgM/fKnNF+VehvUBJ+sRuQQP43EdDelcg2Yu26WzU48yyB13\nuvc2yj5OCqDkEb1+QPhZQLrxbf6bZEmPEsJ7h8m5HnNcw0n0UjcSUrDmdBeN\n51Xf\r\n=aOMw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIClGGAWqNdIfa3G1+skSwXp1birpprJ8GKlNEqtZX79jAiEArUgiqzM8VlFvH+v1w4iDPT6+LxuFs3Hu+TV4hNf7LlE="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.4.0_1643666521609_0.20301989054169023"},"_hasShrinkwrap":false},"3.4.1":{"name":"just-validate","version":"3.4.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.1"},"gitHead":"ba48cd565fd1ef68f1c7dddb557094b88f00746e","_id":"just-validate@3.4.1","_nodeVersion":"16.13.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-djwzVhdym2eMYygRF7UtNfH57Vtay1pWIcMKE3ADf1iwpoM0ecjykFF/TX2+oAmCeIxzzhrlo6OpmNvMhHUksg==","shasum":"73f596ddf7eb648ce7213ec58c204ff102313b26","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.4.1.tgz","fileCount":15,"unpackedSize":107954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCqQrCRA9TVsSAnZWagAAG9UP+wUGL2wExE1hmq65qdgT\nMUTcW/ENrqvzK4rirxv+MS2zL0WZNi+rjfwScagMz+zz6iWTqxy00S76Jaqt\nKAdHUoG9c8XrjZ/QG9IEdu4vY8s03t80b7CniIoi9SDImtgc2cgM1n/6oZKw\nt2m37Hg78954gAIrrrI6d7VRXFLdquz8pei77G7WPIP8FQbdvR4kun/RbrtQ\nx7OuxJ8n/h4u9t2LRcOUs3y89o8NwoxaMVRkPduNUygOqTWm2fP3CzgNv1Lm\nq3Rg5hBUvMIiwlXnXgzhg6ghSTeMxg/Qa2AKCdADl4zAMjq61ICEvD3nN837\ndXwPzlTN0QnuLEYzLE+1uMPAu2PQ+cPzhz/Y+9zxdbbzVHv64rLjg2UZbnDw\n1mZwsdPZBiTFfwHt7hKHmI2CUf7Qfuo+K9GXFWN5hLFmutTpyk9XFQ0EpCvn\nFWNCjLzpJG5qbrL3jHDpKzses2a7On+yV9IbuTF0PVpNafKu+n9ECLwDEEIU\npN+UEW7wso+nTeyTNLbZ9yjVbXMnkwkPkc1H+eaT4SY8Ka6tHrksN2mhbOAU\nW0J1/XzvseJP80GIaQAqLBvLOSbg/pP6jWNWM7ZprNyKymHfB3xSyVTsl1Bf\nbff3Af29mLUoB4RQ8rszvfc/3OzLfNIqWkOJZ5cMQq5qbh/gLqXyzKuxargj\nckpQ\r\n=bWWV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeajIzteAzkIWK7bydBhXHz9lCVgmqWjepshHW/IZcxAIgZUMm9j8i2IdXFccxuok40c2FQFinKl/8Xsu77o0LuRc="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.4.1_1644864555047_0.45786971301472157"},"_hasShrinkwrap":false},"3.5.0":{"name":"just-validate","version":"3.5.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.1"},"gitHead":"804ffebc8f03635db0539bafc85136e7a90f8ac5","_id":"just-validate@3.5.0","_nodeVersion":"16.13.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-f7JY3StPvDywZfSbPIo4+/JspJJtA8QNL5YR5mZfUQNeZJMyonqXSISD5nckyOCxjqu4GK2ZcTOTEXVkvfrVMg==","shasum":"273380f8abf8881832eeb47c91e5aeed25ea7af4","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.5.0.tgz","fileCount":15,"unpackedSize":110268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCrNaCRA9TVsSAnZWagAA3XMP/jsLl1VSjUxM4acZpY0x\n+VJnmf9O4GuQX/TavPvPvama0QjRkAvtZtJooXZ1MaXwtIcKEaDapAtcMdk6\npVjnI4toPGo/GoQo1Xw1Qgz02H92+satOExRpQeWipUeBVhTpC0aV0oa6bic\ng8VJwmiQu8IWRnKFQk3fARFyi68HL/ymuulJA9c0hd7ZinysqQnEQGiI1+ge\n3AfZcNUd/ppGOW+0EsSRwmYltPDbvKiCMoli5y/mDldkLDLGF8cfAltmvCBd\n/lERKql3JcQxkITm4yLZFlqKf9TjNnvjve9mWzaRYtiBZBKr5c8RBksOCeWx\nd7RVvUT2uPR+2dMzAfoXWbuzWi9HJOROw0XwwR7/zuJ7oTvYG40E0f6J7VvH\naJw51Oa0fT1bTPKMPqYJE9blHK0ic7X1x4jha3UYUsb4KHtv5Man+9549wSq\nR/Esc9VHKT4exvmvSdChMhjDnhfzQ/edkAD8SJ6bwHJV2B+pLrGJh8Q3O2wf\nQmNFyrMg8gDaGym74VzrsfrprS2UgUIqyecZ6t4kkDLUYdGB/bdsc7khzltU\nk+sdKvMS6rsFeJL9A3mtS/1tjVBfk0qP6im/IIvxhXMj25dFrcyMGmVWRKDw\n6OlCVhL+Ykvt1PoJZxQDhaAtcx7gDyD13NqkHQPmJuPnVtiSmC0d5dhhXwoO\nklDM\r\n=11t0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICktMvfIWCGCQLcGYtYmiteNTHKpVB59QutBDhUfztylAiEAjACa4aJEjIHgK11+XIkJNHHR7itvTum3jFLYa4uUNa8="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.5.0_1644868442465_0.7524331012417111"},"_hasShrinkwrap":false},"3.5.1":{"name":"just-validate","version":"3.5.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.7.13","just-validate-plugin-date":"1.1.1"},"gitHead":"de6039b16b8bccc32093e2688387d9b629464c5d","_id":"just-validate@3.5.1","_nodeVersion":"16.14.0","_npmVersion":"8.3.2","dist":{"integrity":"sha512-NKuUFjhd/O7fi4Y/n27VUeXv1dDfkIUx5MeDOs+fW7yXmDfH37MvYT43c+GxYx9DXUOymtnoK9dGINfAKKssnQ==","shasum":"985499e726233ef142fdc4f4f52e8a15bc6d6d21","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.5.1.tgz","fileCount":15,"unpackedSize":110585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiD9/YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmot/Q//UYcMvW6V/tEtE0eqgwnipCEkpTXZhcUb8Zo9V4prwfMd7MsW\r\nV0IjdDIrMAWzFDSTnx6PeldS6IBMHeURpLJLcFyJuNrWq0h/gVgbX6IEEVvW\r\ncAqTUG6/YFvFbKuxnLdesXfjzSO4YypiMxh9sKp5V6JT3FtUGDLBLuLd02JD\r\nTX9LDJZgrM4XIaZzAiLJiUq41DV2mGDIvEqp7anmOMLOlRGFZMIGVdneeVbr\r\nBDmG7KfvkFVDmB82uzf1/jY5CNzgmGF9Efx51ISBO8wIVOhJnjpqUkxHEuKB\r\nHar2Ko6NtoQushVA/DqXYOMt6KgDvj7b6Rcrhsl14GON8k372tNDwcEhsd4G\r\nep3ojXk5N+X0Q6/RU1Uu4AjOx1PNu0hNQ75zGF/X+ZXbgz9p7lJ+U+jBEkue\r\ndx/nB3N0ADfe6jJZ8P2iuZZhnblvAzxDGtF9gZxnS7Z74cVdgoK05W57KM0W\r\nE6massU4FSCl4mKo/+5zMOb2pa7Vc0QlvMTUub/8ziitbm9Aay6YWi7QxMB2\r\ngs7S9rB9Bcv6UcGwjSqyr+rB6I1dCccg0r25ZV5tbJrNzvWZgz6dIZOWjl7H\r\nep1QXGQRXDIyjI9X3YHcaatQ0YmCjcWivfSeWVcMwfMA5If/DVsEf9Qum1Se\r\nf8FBKoqcjeGUUFktF5S8dWaTHGdXars9xqU=\r\n=nYdq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBTaKoLKZ6UfgfTE3Xq47OJ+GXjGVz/5uuJsEe/2FF0AiBTdVk4WYHR5MN9bLn/HdO2SoCQTaX2zWtNhenfha3OYw=="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.5.1_1645207512729_0.9787491336237504"},"_hasShrinkwrap":false},"3.5.2":{"name":"just-validate","version":"3.5.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.9.5","just-validate-plugin-date":"1.1.1"},"gitHead":"cb4a94577f6a89d870a3638522ed5787bac163ef","_id":"just-validate@3.5.2","_nodeVersion":"16.14.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-BbDz50R6eqCDiN3AWq+dB0IWBb6ejBnj4kywZBCuH+ewQvF6XUze5ySWrRZeb7izSojR5GaZASoT89ndVXvouA==","shasum":"2cfaf33c66dcf84a0b882b2ab67ac300130538d6","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.5.2.tgz","fileCount":15,"unpackedSize":92643,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpKdx53Kl1OfbhnLOWE7MCzFpnV5I9kp1vo63lTC4NCgIhAMjWMcg9vyIXj0Pu367eTkR7MqR1Rdrvo7YQW41wX/9X"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXvKiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpSMg//fEIgQ6EofaUw3ZxWn5fOMvyCiZNy0HckqHjBg/fjl6lYA93p\r\nN/7hfO117lgeNkYxV07TVT4iZwavHVMkCia3hqYauWK6NDZPNIFD4qqZkR3I\r\n+BWO0PQ3rLJKCTHEjys3q6pS+I6+ktlqIN62aAwmO6QpzgeriKsKin9/qPIF\r\nqP8VMA3NElu18Q0gDyqpaH0kwUeIwsqB3z6TTSzcvNoZLQqdXvVT4jpg2Wl1\r\nvafGrUVAKcRW3wvtM0suC4p26xFeNuxKTXHipstp1I2bc+FEIUL1c6ws7sLi\r\n5mEctspG94JpgaQ8zvK1J9QFibvJtL2x8E7fjp4f2UiJxCeDXOskSpb8HA3y\r\nonNbeCGcGbRrxzdb+u6Cwpy5f2RBYkbnyhKrpWt6SJYf/06Q/QHLpFaAN0bY\r\n1WNmwnVMpOb3EOQxOKEdAAKCNEai4kDJmdo51TSwgCbP73zWktUeSjNtkD/R\r\nOLAmrRTihBLAdFZ363L7/Z8Ei5++/QSWAL3xfs6dg03SRu0gIRAuYKK0KQyI\r\nmtilXAG69D2mqH+ola5D70+Ex5IkwWPL9/KbdgxwhaDFavuIyyfDOnaDaiVd\r\nGpbp+OjTZK1dE7ygTNqqmpN7qe/E2xglig0dfO3USHOQD6lim+LVAOyGzfIC\r\n8KjUMCnZ21uSRQyHkG1pv3SLm7/gbV1+Gwg=\r\n=vzFK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.5.2_1650389666782_0.6065180857505981"},"_hasShrinkwrap":false},"3.6.0":{"name":"just-validate","version":"3.6.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.9.5","just-validate-plugin-date":"1.1.1"},"gitHead":"b445d10ad35ddb40f2476c78ce7d84741c0cc9a6","_id":"just-validate@3.6.0","_nodeVersion":"16.14.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-8CtrzifasyzrOrAuXMnHU2IwiHhfGZ8qtqHqu2kcAB4Rg4rzZaIHnPlLs8sdV3TLK+RwImjI757gnVhUeKF81w==","shasum":"89a293e56e943eab7e0596cac4148fd58f980784","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.6.0.tgz","fileCount":15,"unpackedSize":93768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6ujKcPRsJMtMgQfdRh3+RIDWvwSTkEtkIUGLHLoI5nwIhAKxXpdfiutOyvsuDGaQbD8QTa7V4hrHplgM/T9d4xX/3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicBPsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMWQ/+Nth/Dw1hxGO/a80SFirOfjHGYnLEdW/e8/1wmerjONn6LRZ7\r\n0bVu3Cg1sip8ydnSQJ9kmvNi9JoqVFliHeqU6gIJgL0F55nbLbkUnOwmDD9t\r\ncEuczPWWk0H5EnX2rpGzJ2B5zfxvtuOkDwzWE7DBlnBH3flgfdbNau7izLb4\r\neqk9by2cQpNNUkBd5/Xc7NKL8jb3CANWD6febFT1tSb2v/VLwq0GpfeHMfk5\r\n5pF/8C6rbtVsj/ArOWzOcsTE0JPxE/ae/BFs/+4RXe8ftms/NdTF8FfN+MoP\r\nWFccprQJBnS6SKJJEAypQakmZTU6UCIP6zCWQFd84x0AOcB68+Is0vJLbwWp\r\ncCidiG38J+WJ/T8XKM+1tWN9WNwTjHsuMiF/8+W+nPKPYwpV7UZaBoDfzO7Y\r\nraxE/d2eJVP5iJeBDYZDEck2uxsCDSJXD7KYAHLywFjqIWpVjIDYC40ID8nf\r\nULo1QMmMCOS+7RnESpgXqzRj3sQAc9tesBbR0QxG7GNlB+3bxZ4ZA9aWFQ6e\r\nXQUxKrj5gq6aIWosUhtLt/N0e9IMqYccAIJa4BdJgg/6XMSogJL1W/PChoNc\r\nj/DCl+cyJpPe7bzPlUk2NW/L9PUyfsKa1U8/eq8HcXF9E8Ut45TIpQwpPd+y\r\nAhJPs3g6Ai4SsKaCqcESRSmJdNZTgVhNsV4=\r\n=V+Bi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.6.0_1651512299831_0.20067697345092306"},"_hasShrinkwrap":false},"3.6.1":{"name":"just-validate","version":"3.6.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.16.12","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.1.0","@commitlint/config-conventional":"^16.0.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.0","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.11.3","@testing-library/jest-dom":"5.16.1","@testing-library/user-event":"13.5.0","@types/jest":"27.4.0","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.10.1","@typescript-eslint/parser":"5.10.1","babel-jest":"27.4.6","eslint":"8.7.0","eslint-config-prettier":"8.3.0","eslint-plugin-import":"2.25.4","eslint-plugin-jest":"26.0.0","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"27.4.7","jsdom":"19.0.0","path":"0.12.7","prettier":"2.5.1","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.4.0","typescript":"4.5.5","vite":"2.9.5","just-validate-plugin-date":"1.1.1"},"gitHead":"ab772e34081420d1ec1219a3b0015d22fe95ee31","_id":"just-validate@3.6.1","_nodeVersion":"16.14.2","_npmVersion":"8.3.2","dist":{"integrity":"sha512-aWF++GHlzKSsz6woMMXulov/2nCTmNmA2iprBQLlm/M7Kp/1JUzpKg9w7X7ZuH2jfexJ2e300Qo1tu1HIcYHow==","shasum":"593d18aaf196e57bcaf6079f1ac9e564551e2d8d","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.6.1.tgz","fileCount":15,"unpackedSize":94126,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLsOpqzJNHbdSxM7WNdCAD6dTeUV9qMq48GFeYOXclsAIhAJhU4vIbEwk4oWXv+KnFhZMfq+cqQ0N3O2FfCcrBlPZq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicBe2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIvg/+M5Wp6Wxb2p0m9Qx4lOGvjDMeU1g3BbzhKRz1F8uDjqGKnKrI\r\nU+obRaRTmnT5M0WLCcFAMmxfYvLyy0025aQA6voJu/2k+Tip7d3QSTyIwnWu\r\nXYawFdq1rPSs7F4O/573YBitbqYYo42ci8UJseuBBzVsYvichI1u3UusG8OK\r\n66dMDmT05hfineLlDRHZiUFkflPKy0D38aMWG4MW5N9b8cH8eGSqaAcScM56\r\nV69PGpEHmcI6hiKwpznT0In/GjQsJ5TF3sKzb6gjdBbLeC5jSlQ7DbV6Gxuy\r\nOD6q5D8Ku9E/BOjAOcsmrB/CwOTgoc3LpOroW0og3c1wRKR8pEO9BBxjP1FX\r\n2dkQG7+mVht8LoFEomBkv+ST+tvwFQsodLuQyM/SyN5PKSyNhz7szpWCmc3i\r\nn+/RDD6N3vYSFJbsW1VsV3X2JIt1VRsk/QXNprPgQJLsmA6JS+3WpY7NZHfV\r\nX6G7EtHuNLrGADFbRxpGknF32q/cecb07+okrfnme5AjaaLidClTtH0NwZTr\r\nPrDmUo04iGR2nWIWo8ydxeGfFf54UiAnSMadS35gVlZHQDQ8gcDRUseOVL0K\r\nHanB3b6TrAX3DOQZ1Jj71UhSkwdwx0uGZojSLrIpQBwPF00pB8mzFISOc/co\r\njAIrE3wrODqVpL1n/FpvReY3O7caZXQcwY0=\r\n=TEIn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.6.1_1651513270640_0.9266699819051867"},"_hasShrinkwrap":false},"3.6.2":{"name":"just-validate","version":"3.6.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.17.10","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.2.4","@commitlint/config-conventional":"^16.2.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.4","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.13.0","@testing-library/jest-dom":"5.16.4","@testing-library/user-event":"14.1.1","@types/jest":"27.4.1","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.22.0","@typescript-eslint/parser":"5.22.0","babel-jest":"28.0.3","eslint":"8.14.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.1.5","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"28.0.3","jest-environment-jsdom":"^28.0.2","jsdom":"19.0.0","just-validate-plugin-date":"1.1.1","path":"0.12.7","prettier":"2.6.2","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.7.0","typescript":"4.6.4","vite":"2.9.7"},"gitHead":"247c3ed546f324e7c67abd34217d6b81fbca54b1","_id":"just-validate@3.6.2","_nodeVersion":"16.15.0","_npmVersion":"8.3.2","dist":{"integrity":"sha512-M494ag9JQ4pAhumfKBEPpQS93Tcq2NL7EdMUbRzwP7QlHE8tbNUIYmEQcHITleb7IZkGHPRs6wV6zWOd49/Few==","shasum":"3d803aeb92a28201a19ec4c11d61c0bca1943738","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.6.2.tgz","fileCount":15,"unpackedSize":94829,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErnIB8hasm0xSVk89H0jDM5gzWvjYQcZQihlTWBjoJQAiABloxi1fkekoVOdM2tIfLfxtQrG3UryUQkSIN7xlbnVw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidEWMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpR1A//Zfw2QhrZf0xxjoEDxYF+/tqxVaV2x/L0pm7pVlsXicFi8WgY\r\nK9iEotvyaDG90mwgKzQF0xv3SjLdzh82codC2SvHfI/HYjwFLtSVksgHNQFE\r\neRON7BTQZwIUHjc6SoEueG7eigsEvr0er80kTkB6qWPAgUuGfbw6pSszYrsC\r\n0vbj7GroGwnXJPyUyvyfPeydnn4O1JbbTyfwFOGvBkZXJGd/izMe+CTGFRN4\r\nmvQtXZM+tW0jy7QBrLcYCdSX6BqXkVlUKZe1pLgWv5HrHV1JOIB7PEa5Eb4J\r\nZ8YxiIpPwWtzeM/4f6D4D9mSkh+VyjYLFlDuP8pOJUA1kCB+HbdXBExIjrJp\r\nSL1wKz5omwmiPcb0C9tGyDg592RRz3eUNoZxNuAIwDrCoDeaOzGW7jPPePNG\r\npyy8A0qGTM17UDKcS+mnj8ljLnszrZBjjB4cVL/w5lPdIxViIBQ1RH6PNQXA\r\n6oD6RWtHWAk8fI+OLpnt9PiabNrSi4NdYNIMwqCFEX9R+F8eZAKHndBxbeYk\r\nSAihusH7G6R1D06xf85UnA5m96Tm6RNM9G7U+dda/ZjWsHGj34ob6Swt0hZy\r\nrCSg7bUDt7ljwG662+RAzs1ZBrnlxouCQFs4EFeWHuaLYmIj9rkNvLA5AhoV\r\nnoX8Laqap42edwhRLqwqLut8Bs3M4UfqOr4=\r\n=6M2q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.6.2_1651787148053_0.399138005698112"},"_hasShrinkwrap":false},"3.7.0":{"name":"just-validate","version":"3.7.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.17.10","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.2.4","@commitlint/config-conventional":"^16.2.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.4","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.13.0","@testing-library/jest-dom":"5.16.4","@testing-library/user-event":"14.1.1","@types/jest":"27.4.1","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.22.0","@typescript-eslint/parser":"5.22.0","babel-jest":"28.0.3","eslint":"8.14.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.1.5","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"28.0.3","jest-environment-jsdom":"^28.0.2","jsdom":"19.0.0","just-validate-plugin-date":"1.1.1","path":"0.12.7","prettier":"2.6.2","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.7.0","typescript":"4.6.4","vite":"2.9.7"},"gitHead":"ed08c6550b43ae9e88823ed60e6a117836af4a24","_id":"just-validate@3.7.0","_nodeVersion":"16.15.0","_npmVersion":"8.3.2","dist":{"integrity":"sha512-hTLSqwzmlkL7T+qqqlA4lWIs0ZmBIu1iSxUdnBj/A7sNHhWbA3ZWMYJV6fdQVz5jKw9vHFuVKiLZ17zvzZxk0Q==","shasum":"c6036000e45a29f29a8806e0f0feb64377c4fcd4","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.7.0.tgz","fileCount":15,"unpackedSize":95606,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF51wnzRy8lz/Wog3yKqCuSgwrDM076QHVMSsANYh0sIAiACBW6qfnCRJ++Gdl9QqSJRLLFQPVD7qakwNGkYwCxmIQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidE9CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnkQ/+L23EsM/nDjDXClHCYBjc5ILHFYRNWifQjeFYsaALTt2zpP15\r\n5QqDn4CuX/QgSjVKlhDiVdFyE8XV/9ErY6jnez+O+v305yl65klU5AIrW+e1\r\n4zUHkcPgcKF6lcQ51TQFJZmYktBgoF63W0eoKcambhqCtaFdM+awklJ/oyj+\r\nLXMhGJlMvjp55hLZeqIyLgkolKbkWTVlDozBctFWixltVpoxQAQ5lpNRvbVr\r\ny4013BeqKxZ7tBTVVgbOZaiEFZfEwABEb1oPvhfdvOqZ64g6QFupNlEYCuc0\r\nV+1n9Jrsb/VWid1ZKzzqLH8rczVF8B9yN+WMcce2qTgzQ8wv08vIcSfwSP7B\r\niag1X7qokKDg7DPiHHOnjvjozLUMGrPfH8Cs1TRwWGt/O8XOdyPExVDkZtC/\r\nshsouIVhs842jgf+gvXCuZa2YUwHL1HqDUeGKkhQniVxKgME5isksTBqAgUh\r\nsHOn2485Wp/t9vF2Lbl1suzH2cNEog05qFt95DcU5E/PqZxUv2/T0HtGZKDI\r\nKHnXyJpmMQYuh6PVk/nyc8can4ApgEy7KJkDveNspINlmp/ywR5OFn2MOCpw\r\nqAdraAxJOIMyLK0e3t7kqeeRWGpGR0cXFv1WCjlO/l0HrvobncYAyzNE/hdB\r\nFQEl+W49RTFA2OHLpc+cxnIK9wigr09uS9k=\r\n=Tcw3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.7.0_1651789634621_0.11222324691562191"},"_hasShrinkwrap":false},"3.8.0":{"name":"just-validate","version":"3.8.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.17.10","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.2.4","@commitlint/config-conventional":"^16.2.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.4","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.13.0","@testing-library/jest-dom":"5.16.4","@testing-library/user-event":"14.1.1","@types/jest":"27.4.1","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.22.0","@typescript-eslint/parser":"5.22.0","babel-jest":"28.0.3","eslint":"8.14.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.1.5","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"28.0.3","jest-environment-jsdom":"^28.0.2","jsdom":"19.0.0","just-validate-plugin-date":"1.1.1","path":"0.12.7","prettier":"2.6.2","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.7.0","typescript":"4.6.4","vite":"2.9.7"},"gitHead":"99c5aa89ec4adb0044a00434d75662967fd0c770","_id":"just-validate@3.8.0","_nodeVersion":"16.15.0","_npmVersion":"8.3.2","dist":{"integrity":"sha512-PWFJBRcOrea/thnvSi/oZvcq7kBG+VJ9YyhOq7/pOK/V0BE2fqeym9OjPZCr0TSkiA3mGrqZjOvQDA+o61UmSw==","shasum":"ed186a28ba794131324c36c1e5f89d4deba5b3f1","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.8.0.tgz","fileCount":15,"unpackedSize":96255,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDI4WmY3DTA8EtkW+lH2jat4CDY6Hn+swbW+2ligFth6wIgKCYkvk4/Mine7zjIhlG/bRs7v79HtAnfm2AiUL17jjw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihURpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEZg//RYUO6O+CXCLgCE2q/HX6JtGORuYzVXDdYJdgAw0FdXrjo+2s\r\nfpuBRF6du6/rhUbns3QeW42ydrMwx95K4a/7ZOQxntpgkyUjOYqBQK1uDedF\r\nFxG7JNFMQn5SNJVFQjHV3rcvFhNH3R/jbCXXgZ4M3SBzRWiF7lqmLvIge2mI\r\n1ZOrfwhjsR91kvE52OoNLV/5MzQRmL/YAjy5hL+Hz1v39Uml0DKpUVmBbPJ1\r\nRS/ML0WPTHOPFsqpsIIxWwwFEGxKxSWc5ADjYGlZv/ITTSvY30SxvZJjCgPB\r\nbJgsyTq2egx2szd/uiKTwWM3lJzEnypkrGAc5F+/Dwm+hfkshI29sECNvtHC\r\nnhuz+fFiH4FWxrDZzaLhk7xYEQqmkI9iThvD1rCi0o5/AN8kyAkFphZqB2VF\r\nygPdAakwDIvVMR3hy81ooTpJ57iSFZ8ncTxtrJmnBPv+OP76JXE7+7juSIWa\r\nRl2qiOyeQHGCfwMw+14e5Q9svd11jm5zlkD76YUY2fH5uyTy66PJuai49bNK\r\naGfQSmJ+QWh64nbOliJTPu3Xog/4CMv1DREucK1MCwaPAmq5IyyEBXH+VKQa\r\nlciYYiWINGWJRuGr/SYfB8SRTcRFGutRN/v9fD7TDEgHavRmsTcUov0jSHzx\r\naKTqLJEsPEBD7HAH1ZQXeS2F96UBM1P8Kv0=\r\n=UfGJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.8.0_1652900969656_0.8065270791131713"},"_hasShrinkwrap":false},"3.8.1":{"name":"just-validate","version":"3.8.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"vite --port 3001","build:vite":"tsc && vite build","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.17.10","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@commitlint/cli":"^16.2.4","@commitlint/config-conventional":"^16.2.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.4","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@testing-library/dom":"8.13.0","@testing-library/jest-dom":"5.16.4","@testing-library/user-event":"14.1.1","@types/jest":"27.4.1","@types/jsdom":"16.2.14","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.22.0","@typescript-eslint/parser":"5.22.0","babel-jest":"28.0.3","eslint":"8.14.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.1.5","eslint-plugin-prettier":"4.0.0","husky":"^7.0.4","jest":"28.0.3","jest-environment-jsdom":"^28.0.2","jsdom":"19.0.0","just-validate-plugin-date":"1.1.1","path":"0.12.7","prettier":"2.6.2","remark-cli":"10.0.1","remark-preset-lint-recommended":"6.1.2","semantic-release":"^19.0.2","ts-node":"10.7.0","typescript":"4.6.4","vite":"2.9.7"},"gitHead":"eb9c74e603151393683516d8d39d3a4b299ae924","_id":"just-validate@3.8.1","_nodeVersion":"16.15.0","_npmVersion":"8.3.2","dist":{"integrity":"sha512-nkrFDBmBe/NUwjGRZmV9SdKPA6Tmp4NQw7dMxQMJMr576BrQ+e5XpToxVHJpTri6dcXjPaKcXbYw9+3hJ3Wj9w==","shasum":"5d21423b304d5d652ba2cb93e3fbd9530c351e2f","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.8.1.tgz","fileCount":15,"unpackedSize":96283,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbffQW2zzTa4GqGCbtVMV7JyUwUZDz10UW+yFa2EF0IAiEAydyWMjXqMz0kTWCbt0PvWus4e6M455ja27Z1gZFtG/0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihUcmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoxlQ//XS9IPrch4qjxbwBqSzIVSOkXKneVsHvhdjQmZFrWPsl5DEY3\r\n5z/+wxxKQTZgXdLpJZjZ+zELMndcpUUqPY5F0W53TR4nhovV/1UQjHE9dVl6\r\n/m2n7iJGioL9Isoxx9/GH/DHiug9hIqvppsIDWybHzCLox4fJ2Eb4A4ddzNr\r\nthYa6nWW5ss7u1YkBeNgc0H5fgZ9IAXpWLGkDeODqcjjRyPT/faBu4lo6o8r\r\n6PRjcNIjaVy7huID+2gPFgtEkBFYlvWX77+Y1Ta4pB10/GZyGv6i9WxRfho0\r\nVL0eMAM2lxDavjuOUf9oPTWUDz8MxgruDHtSaHKqXM/OO+UNUhB/cCu4qwLe\r\n7pimuVLlmGFFyzZQjt5zY1iSnei8K+edZMKezC0lpNKug3x9EWSSC8drc2Ml\r\nHjt2l9gGl2Quu5as6ToJNwbn66ZVKYZGcizs6cevreaZLxJW+7eOu6fpYGgz\r\nJy9gI1XZWxTT/VMbYAodPHqXlCqYac9iF5X6bU2qaCLb9NCxOivGQkSV3uEi\r\nVcWJsldulSvMk7AH/l/Qn6n8cyV9M6WC5ISpQhjSYPf21FRf7VgdwhzUZYFj\r\ndPlcdiN8IoSua7fuVYK0Tw/5soQwHmDyh359cTxfcB4ktH/+KJHVQV03r6nQ\r\nxynOeC2nAgmaUxViYPgmGrS7XmWbIJthb5c=\r\n=VfTG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.8.1_1652901670019_0.3511502349574269"},"_hasShrinkwrap":false},"3.9.0":{"name":"just-validate","version":"3.9.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"65689038f732c14a4ed50e85ef4a9f21f6cf002a","_id":"just-validate@3.9.0","_nodeVersion":"16.18.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-LSW3sx8TzLQS6GG8QoO+MWx3izdF6MSmoA2Mp7fuVTSCQcfPJizxA3/R87qeDfXSphiQ9tFEmkwe7ieBfhCX4g==","shasum":"fd926470fc6cbdd8007557522129001f69d9caf8","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.9.0.tgz","fileCount":16,"unpackedSize":98333,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbWdUxrURkO9N3kvxQS0zadOj2qpCC71AxObkziO2KiAiEAthqdeFnE8zwVtI4gl2imNI8872DWrlRrycCc2/ohHQc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkSifACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfGQ/+Mzmn5NyK+LXA/4VWkmat7WbKL6JD/YfHE/LUwYEA+CSdQxRz\r\nU8vLTBMK7OIUpPxWSu9da7wRQuQWMutxoTsyxeutP7v2mUVKh9BFPrr1zNYJ\r\n+d/DWNAPxbNr6BLGuGA55ga8DQoXC3tpG3gpzbDHsZcH+YDeYEhCgk5zqn0Q\r\nbJV2wpjyp6h4hhMMgtsXrfJ0HTn94BIRNehzxgvZ9vzJt/8pvP7xXA9G22oh\r\naM3MAJEka9CRG2W57uXmlOaVhwc1fu0pWxK/aNC/AhPEZN+XdVizKJQ0PeZ8\r\nul8xiOPsYpwdS7A3GGLbmnyLso+HEz9z8gAnF2Rwe3P0kIsuPr7OUF2Af2TJ\r\ntD8IGZZdtHDg0huUippaYG/hALculdyNivRyT4dEj/a0Tdotb0q1gPDJQGkJ\r\ni35K5iBS9EMLVwRGHiUNFeGFbWw8rm/nDu1UZCUI4ofF3NQ8GbourdB3TTEv\r\ngrXs08c1Za8q2koJx24hU+QQQuI0wR84hQC4WtMUgCXwsWpBaF3x8ZUCPnl0\r\nRo5aZWZBBOHE5sENId1OMVi9+iD9JRwSkMuCSCC8NzENTaCQlREr+Ly3l12n\r\n5eeM/h4p5yEAoevXf2vrBXsoj+jGRcoF2kaZ5tTT2iYd4x2cH3EljXkIutig\r\n5mJfOkY7eRs8uCOnDapWba7uFPhh87eidng=\r\n=QO6A\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.9.0_1670457502973_0.9229245652768212"},"_hasShrinkwrap":false},"3.9.1":{"name":"just-validate","version":"3.9.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"9b3ea023d36b81a3195a09c26806424813b363d0","_id":"just-validate@3.9.1","_nodeVersion":"16.18.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-legwJBSVGfc08HzvvEvMw3TQWoebmKJ0DsrheODD5Va745caMpD5qBzSdRa9AQnBy8f4LxvrNyONp23xujqebg==","shasum":"f843f72974fbd2d5fc15ab24f142b6e6dea11b13","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.9.1.tgz","fileCount":16,"unpackedSize":98950,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3un2Y5ruPqKVMD4kTeoYdSVaT41BXBc+vtgss8qHDbgIgG1t72tg/8Q+kCitnmqcp/zVRdlC/G1wSPFG70sMd0ME="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkimiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLpw//fm+7AflqWRSmfTHYvAONzOK0Ogymm0688Ir1WWeCGDgBmR9i\r\nKNlB7dfGsZSFF1OrQIcvNaclYRsulA7agpbLsim+85qPwUU2b8oEvGcrQG5G\r\n8nlPZhuLJnt3igEMd4V2RMAjn0HyY4pwCJhfV+oZk7JIJSc87eJOryyg3iUI\r\nwjoVg1bj9PvWa7xHaABOGO8Nu5S/8e9qozmKyj7sowjZGK1gPVaCoXLsC7gP\r\nwCdNg+7xP9iCtHARECoWhSw7i/0nqMIefQl0/mOblR/GEbdpWytgrV0Bh7np\r\no4+c81MRQSShaBOusHkgbzqzhgywRHmlW7fm9LsLmPDqHG3Q7KcQU1+8o0w0\r\n5DFvjXPWmW0oVNg9YmD4MFOQCv3JRV/cacHy42a7BCKVjNba0n0QlGqgYRxa\r\nqNL60igCD5u5GF8Vfl0qcJP6dFJA4VLZmloHr/NxyEz5GSeaIf78DhM4tShe\r\nnC2hSsSmB2jWjRRKNX5IurTr0+NJorKn/1+dejQwVeZ0zooi3fJS5ghPKjCw\r\nXhjbdrUnSTxiSa6zF3/9+ofG/5vUnwSxwz4cvlwPyDSI8mtXGs/QJfvk7s0i\r\ngAZ2FVT64AHZYzAZLzc3q9XwL2JrehKdpuILST0V6Oq7pyQKD5jGqPm9/DDp\r\nwS9ErUVV2ZOb1oh37hc+XxtsLJjTjkKw/o4=\r\n=tf9X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.9.1_1670523297996_0.5533462461817102"},"_hasShrinkwrap":false},"3.10.0":{"name":"just-validate","version":"3.10.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"2fedb4ea3968ae32fc4a8deadbe9351bf73c9468","_id":"just-validate@3.10.0","_nodeVersion":"16.18.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-789+Y7yTwcyCReD+wWAnjGzbWTWth5yHMT9MvaM3RLDExQfmIDye/X8ziHOhI2UDa7ef7HMAb6cFifTaKJa5Yg==","shasum":"6f4a219abcc5cbf39a1bcc2901f5cb4f9e897a1f","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-3.10.0.tgz","fileCount":16,"unpackedSize":101384,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZWe8Gs3MRngH/uTH5ML1GtQIyj0+3h35HbamqL0cN5wIgB/6kecVU9oizG/T/kl6Dlo9vXpqmP+mm3g2SOste0yI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjlLg+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpjog//RZecCTRsfwcuUaMemFixIvM9r208Bf2i703hKNXw0zEiVf/p\r\nQmCwXvIfMDbxCXUAZ/sc5kQUIWigz6K02zvqD1Q8jH+y1pDrQixPpIlxCWDT\r\nsMkthWIrWLkcsqOo9nGfKi+txnaSGaQueV8pUBbmXWI3ijjC9PPyCesC+gTh\r\nc6odosgzlaKkJlKFwcqQ4EOG311gjGIRGuGqrLi2NEHIOlHl9Oh9iTDVu3T7\r\nqeunw99PdNNUwGrc5C7Xh11YxEeUpcz77TZtmZZtelOyH9/i5Sh15di2ar/L\r\n/vi2hVD2n2+SwWTuAndMtRgmMJ2I56ID1pUqmUEj831EXicqcdgutiR0bP4N\r\nDfF4cjB+xHSNY9poorytqruHN9QZ7/PYnsJSbn1rHTqQLwihlTAEvlI5+b1U\r\nH2AvwkwKwyjhugUWDyp6UQqm47ojyegG1OPQtCYokn5krbpunTsKGR73EENX\r\nmlvIxjtVZiONXeUeLuv8rbPnCmcHe3HyHICyytqvtIXTnPs7jHdjh5Rfo9U7\r\ngIBGlxHwIKYx0kXi4MV2/N4qjGm5WTTLQasxncujC8vQq7pHGY2904hWbD3T\r\nvFu5Z8+bQ+g3Ftnbhe0v1ktOPtBbQBrl6CUerHTbMt4B2zm81FQJCDpSs0hS\r\nBQzQPYsPPmHypQUXgWhcrr6D66F9RwFkShY=\r\n=1wJN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_3.10.0_1670690878350_0.2709184700624361"},"_hasShrinkwrap":false},"4.0.0":{"name":"just-validate","version":"4.0.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"d7efc58086227883e49aea29ed71925d1a35ecac","_id":"just-validate@4.0.0","_nodeVersion":"16.18.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-FPb4jqjYltuvcBOqBkxFnFyUilMsUF1pJu2FkqwhpLNlDFjadevH0qltSL36SBkAZR5oQyce1kwgcg+ZqpuAbQ==","shasum":"f5e565049b17695ed0ebfb12de88e40eae3fb21f","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.0.0.tgz","fileCount":16,"unpackedSize":101029,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy9jvbXn0Zi02cR/3pKrQC6LGpErMRkQXyqA7Zlzuk5AIhAOMu7dID/L10mJUDaCFSyXNg7R0rO66eiXe7Likg8Eg0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrI6AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnJhAAoi4dBJPwDPvOwhhM63yvZs8fPB9wI++Rb9vG3QuFCMXTpWlH\r\n1g97k29fOAFdLGf2odYC33NCr1npSf8fs/kXXQWkc/hj4ZQoemfVa15GOdsN\r\n39RYT3i8oZ2xkEx1evDPqqcxQX5uEo2XCt+FNIG6iM1fntd9tObaKQXXhwzS\r\nhxT9JHWnIaKMeRO3OsfnWbrK5Kfw9DwrPo3AFLzjByEXVHmAWeiXfrH/i8fF\r\n5UP61mL2Lmx7KGQZo7I+MPb5INKgowVeX3oJQToe2HTAuQO2CFm1gxFri0Y7\r\nvoo81YrZgSbfdZv2D3ByiQHTH+AxuvzOgDXeJuWybgH4wsj7uPKf4aPKd3Vb\r\n+JUOmjsK6FxZCnllPOvAzJUaQGCZEyGNEA2u2RLCgnlt38/D0sAA0Fxy1pWM\r\nQTpPp1lZyT+jjuM2LuDBAHDbT1uP0Ds3+zqOnsI40VPLIn/b4imdCUup06du\r\nd+yRzHIP6TfMCAjKHby9qlm4dV30SHtOXwdlabfFPZr7rbSbjQ8RHzaDxA8d\r\nuPjLSUKSvdjU08ICgLiZfDO1tGOPOI0rbBOqhefRQG6PZM0J4zlQDZgzVhQD\r\nj7TWvRUzYr5PuX0Awa31K4jwnRbSYsPAG3IZTLOG8CHmHOIHLC03ewgm3KzZ\r\n9GXuZAqive3fOrO7Lszlp35NcaA4W52efYw=\r\n=yV0c\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.0.0_1672253055946_0.17656871947715347"},"_hasShrinkwrap":false},"4.0.1":{"name":"just-validate","version":"4.0.1","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"07cd67f615634d44140c7b2c1ec27f2c0f241c9e","_id":"just-validate@4.0.1","_nodeVersion":"16.18.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-wunfaMk9ldxtJ+BtBMdNt9YmyorKEa7jf+xkZPLkSRgk8K6S3jvnwKysDGIFtKj9tpHQ5GlmUkG41gtywBxE1w==","shasum":"2588ec1613d3301a7994018c25b63cdd33016f15","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.0.1.tgz","fileCount":16,"unpackedSize":101746,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHIv6LO9CbFNelCN7aMmThxLtavBBKGaYITnPrGOIKWqAiAwupQP8Xit6oVkCtjsLkmJGYk7aslP3wF7FXb/iGbwgg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtG39ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDZA//abirMM0P3/+fiHoFyScf4UwMxfYI7iv8nC9RmTx2dUR6Awu/\r\nalv/fhCcl29Hkbja3mJ3VF8focNvyiRBGvQBzjAe2JGj+NMg01XGKf8gS9kL\r\nh2pHiN9lb27gAr4fzW136CAQ5Pjlfk1HMSMeRa9DoSJDXUL8WGjceD8aegBP\r\n/4DM3ijnlHUK21zgukp7qV1/ngANUKWyKShyksR9DWgaO052wCF2GkVOTJ5F\r\nHFjOLav7HejgU8RI/ZkR7xy3X5f/QGl2eP4Dcs+nQ3T6BJX23Qd/AIeFvMSh\r\nwEwCjEUyrlualS1inJKylpVH0/ifSGBfhbdnrUzAc/PHHMyvF7mLbbF609CK\r\npetUSBky21gXg9OB6tx4UROCNjwqkDFZJiYhrsmmMFNAnT6eUPSu6B2Essp2\r\nnBpfxUNrqX5SlrMxSOjPuskr9dzPfMjoiY3pglzjxikDhL44pokTxjzvBPNN\r\nMQ58uDxxHbLsqH8J8+yc5j0UGcKlV5JwDqE2d8bZ5pelGDlBtPrCgueSlwOn\r\nOIOuZ/K1OEPBt3odDKsXK+99Co1mDLqC6+SXASEL+a9ARisN8bb5AMijERG2\r\nlhaaCuKPIUasWxAQD9c4q+qbAzFtMIwSptjeruA0LPrey0C/snGMRTvt6aKA\r\noK7H2eFr88fSy/Bi4zSmqEvQax2HSA9oRNU=\r\n=B5gl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.0.1_1672769021588_0.0458216681910657"},"_hasShrinkwrap":false},"4.0.2":{"name":"just-validate","version":"4.0.2","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"b0d41dffe68d4415afbf4060781ddcea85baf306","_id":"just-validate@4.0.2","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-P86DrmiYbPaRDZPsHcQVo4cBqYFYcE1vHWAV34t7IyyRC/kWTXftZ0TVI9dGuJUkf6+jeD9+aBPEdDUjjxdfKQ==","shasum":"f9274399b8dfe0e393cac8217946213c641df5f3","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.0.2.tgz","fileCount":16,"unpackedSize":101776,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD++Aw0Sn5C1byNn60pwMT3slQXwGTG+/T3y5bgQFj2fwIhAPj+XO63HubG/m6YYIVcRZSzc/7ib+4R/OZeI2b7K6IV"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwE4rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqRqxAAga02kjsY0n2sBonqnCPk9brHE5o7boAm6+1f3SJcXm/rCSay\r\nhFUTo2NJZX3Ph9HZRAMlvGF66oXJQGMhoSRLksCl0rYj1RXMsUfnyETqsFBS\r\n0CuJLuBw5edlsauT+P48ONi7zgckOwVAxGtekq7lGNxldPV5eLkYHSVjC5GZ\r\n1bYthTMnuKNasZTjnHUrT8LuFEhKBRCXHvEnpTaesZ19ieydZYVi56VWckcW\r\njlARlMDphcbWIblDjmugRs8carbFfrG9jrLAVX6diUg1RxDRz4i3GBz6qU6N\r\nEF2uuaL89jFH5mLg4Z7SHKB/8lfIOR5NiGSX83zSggFRFRWkEeGaveOaLWwY\r\nAd7YBb2OEI2hrVCNhTXsh0ey3d1FQs/4B8KF6MmrKLxVgArpKjXvbpPCln3a\r\nJvdulSxXrXO5aHIiCLITwLpfUYFKv28IcC6rhsnlg/wDgqrpmbjwBuhuc/hP\r\n9pikfi+i8W+LmvmaAsbEmWl6KVOICTe9Mu1XJZpRR/GVtdxieRzZqCLMuEZp\r\nIfmYLGgWvyLfkslr04pEvQtsWuHDHzZtigYAfr0BZeRbJ7hy5chaAGiy2bos\r\nu4Om4U7W+xbBqBbkS6Dq2nArwSnyf/fJb4KtnnA3cpS92VInt8VCJSua1wQT\r\n8R/IIu9tR4GODZY/+k0wbHET5qis2Dbxt9Y=\r\n=IooY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.0.2_1673547307474_0.5861824410830523"},"_hasShrinkwrap":false},"4.1.0":{"name":"just-validate","version":"4.1.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"eebc435a74de1694436445178c36f1226307e25e","_id":"just-validate@4.1.0","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-dyn8R6l3YdgHwEQuaINBkanK1j9f4pvwXi06LlJNMzfkfS9JwRyyqW4SboBErQV2jS0b2PK+RvQEAQthbTkBDQ==","shasum":"19acd590a9767a704037142d22291150f601bd31","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.1.0.tgz","fileCount":16,"unpackedSize":102875,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC30csF+6n/yKSG1rXTPJXBeFvQ6G3Z1DqVuCygF7Dx+QIhAKVs99xJoc+IovSKzDbWhb7lv3aiR2BUEeFCi34HBIPw"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2Z8dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWMw/8DbfNXKWx3Aay6ogl5b3kVjibs40zpBenDqqkPuSAkdCFibF5\r\nYIaipF6pT7oDJN/+xYMpISxc442m9YEvo7tO2zQFkyCDtGBONMp9NuY5C6WB\r\nqOO9gxTOxmXQWCC3MNSYmLdm3mPnAikSvfj+ZbE+GXGZOd927wKdrwmJDt2i\r\nStvt8hwZY+KbbCufF4Zxw9ggsFax2vHXs6IM3kHjsOtsm446OCyT+LLpxVe6\r\n4ZvgRzO7cnRK9f8NzjmNU6uHeEHF/Q1zBBP81HdGs1CSoW6T+gG0XQgo1LJo\r\nvwQP3oLYcBO1FSTuf4mRuVfXiQHhCNTUykAxLmWaNAqE14yyP9VdFR48/ysb\r\nX0WdsAbVw2WCGohUjBQqydQ9xBUtDJKiUHZKVQYZoRJJhAkE1UcCq2BsEqjF\r\n7BZqRJ6dKqtAeqEvyjcUuCdK8Qrndpk8eW3tQyHudF7yAV18UqYj+hssg/d5\r\nTyzfQZyT+KZU0GKDbT5JZVmKbT6Kdf+zfCMVY52Cl+SukNJhK+TXmLzzpExA\r\nBJ1YB4q6ZC9+53WPY1veeFt7rmSihDiWAb8/8WMsXQuzAahuSwZNRp+LFh0H\r\nMQZnyaEYAFgsYpqEn83wAlU6OgIRl2x3J7F5YwrS1dlS7TR7bgeTTndiE0S7\r\nZFpv/YlBu3uHBMYAk3MyluRsKtCp9D8PxaI=\r\n=1snc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.1.0_1675206429503_0.2707511532663254"},"_hasShrinkwrap":false},"4.2.0":{"name":"just-validate","version":"4.2.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"9e2cac7cc8ae39ec34fbfbf6dba3daafdbea7333","_id":"just-validate@4.2.0","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ot4U9dAvveXlkA5tpiK1Obh+ZwJYBUsiS1sFjfY4RjkHwXLXGoEgOM4N85+9UCAu9JPGt/nfumqRZbruUT9gMA==","shasum":"50cea442a85ff3ee63d420bac3eea444b45f5da2","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.2.0.tgz","fileCount":16,"unpackedSize":106732,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzLpC9wiRB0vj+62ol5I2f4Aye/a1BFYpEdOWv9CxeGwIhAPEabkF4d4i2nO+med0lSWV5wrrwCpm3JKy+q3fMlG0Y"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4sKpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoulw/+LnX+w3xXeKSTzridwXuCC2bOj4Cfotp4tBzJYmh1evrkddPN\r\n24Qq3ULnEu8bF4akS3AFsqcoYDzRA/XISVP7A9QhgJAK7kb6boblS7Xyai6E\r\n95lN1vjZ1og5glMx30mDbLHeVCtaFNewRZ6OFL15K+4WuBrv55GN2s01LIpm\r\n8YmBMSVcz9/Qz0kqr+jpZ22d+TYQjuDti4XWiLqIaMqbqd2A3A4+IkXfPvcC\r\n7O4Yz2ou1JfPLWIjcR9FZZwOSo/lO6WvWJz6oPmy5/ibHdvaypI9rMXlaNig\r\nC6HCAMGuhi3KVXDJBEuyWmeBD9k7rzUwKrqhRmw1QCBIJW5tWnCBeu6tSOWb\r\njThjp8SOU9ZrpmdqiL6bnq13mP7Q1dxXme+HsQpk9GyKZ2KzLizCcLcmDJAW\r\nsm+QRAaNFHWPWA0IAxFfvCIWAMnXf+nWHcJOWN8IcZNC3ppDfbwB01AnxNsf\r\n+UV3v34+gwphEkJWwA62c1WkeNiLORBnO5Rn5VJNVZpRoUnRbBPHs4rsRkCY\r\nU7NhiT4fapw6W+607lzGLISOi/hG1xgvNdIqRk4zWdygC4CWr7kYmgSb4+ih\r\nLxrzEXc5t85wYeFjpWFBW7yKzbnqYQrfWfA6omsCll86GFeURwV/XzPBy5I3\r\nkVFEMguq1VAkIUCMyzMe37ONM25K02U2qdA=\r\n=3Tx9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.2.0_1675805352987_0.14812644614031845"},"_hasShrinkwrap":false},"4.3.0":{"name":"just-validate","version":"4.3.0","description":"Modern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!). Support a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization. Support wri","scripts":{"lint-md":"remark . --output","semantic-release":"semantic-release","dev":"OUTPUT_FORMAT=es vite --port 3001 --force","build:es":"OUTPUT_FORMAT=es vite build","build:umd":"OUTPUT_FORMAT=umd vite build","build:vite":"rm -rf ./dist && tsc && yarn run build:umd && yarn run build:es","build:types":"tsc --project tsconfig.types.json","build":"yarn run build:vite && yarn run build:types","lint":"tsc && eslint . --ext .ts","test":"jest","test:coverage":"jest --coverage","upgrade-packages":"ncu --configFileName .ncurc.json","heroku-postbuild":"cd site && yarn run build","prepare":"husky install"},"main":"./dist/just-validate.production.min.js","module":"./dist/just-validate.es.js","exports":{".":{"import":"./dist/just-validate.es.js","require":"./dist/just-validate.production.min.js"}},"types":"./dist/main.d.ts","remarkConfig":{"plugins":["remark-preset-lint-recommended"]},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"keywords":["form","validation","form validation","just-validate"],"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"},"unpkg":"./dist/just-validate.production.min.js","homepage":"https://github.com/horprogs/Just-validate#readme","devDependencies":{"@babel/core":"7.20.5","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@commitlint/cli":"17.3.0","@commitlint/config-conventional":"17.3.0","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"10.0.1","@semantic-release/github":"^8.0.7","@semantic-release/npm":"9.0.1","@semantic-release/release-notes-generator":"10.0.3","@testing-library/dom":"8.19.0","@testing-library/jest-dom":"5.16.5","@testing-library/user-event":"14.4.3","@types/jest":"29.2.4","@types/jsdom":"20.0.1","@types/vfile-message":"2.0.0","@typescript-eslint/eslint-plugin":"5.45.1","@typescript-eslint/parser":"5.45.1","babel-jest":"29.3.1","eslint":"8.29.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"27.1.6","eslint-plugin-prettier":"4.2.1","husky":"8.0.2","jest":"29.3.1","jest-environment-jsdom":"29.3.1","jsdom":"20.0.3","just-validate-plugin-date":"1.2.0","path":"0.12.7","prettier":"2.8.1","remark-cli":"11.0.0","remark-preset-lint-recommended":"6.1.2","semantic-release":"19.0.5","terser":"5.16.1","ts-node":"10.9.1","typescript":"4.9.3","vite":"3.2.5"},"gitHead":"c034ce4fd62ef5a6920b4d751a508c4a0c44516d","_id":"just-validate@4.3.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.3","dist":{"integrity":"sha512-9yS7ZnFk95vq+O7CAa7XZEJvZN5i6jTQWNhLwOjtgkSqiLxo7GZJhK8ViylP76fXPfHLs8tYWqi81XgxPF3OGA==","shasum":"8e3e5d78e57fd7579540591498723900a1851503","tarball":"https://registry.npmjs.org/just-validate/-/just-validate-4.3.0.tgz","fileCount":16,"unpackedSize":107202,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDREMAIp0ltSM8Z1le+SwfSGU9fcbG6+vGWlYhHC4M70AIgWlrknCxH9QWmDwPz7bv667Ry+XhSOw7EDqyqIF+6ZZs="}]},"_npmUser":{"name":"horprogs","email":"horprogs@gmail.com"},"directories":{},"maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/just-validate_4.3.0_1699885139603_0.8515159457928636"},"_hasShrinkwrap":false}},"readme":"<img width=\"1223\" alt=\"Screenshot 2023-01-16 at 23 35 59\" src=\"https://user-images.githubusercontent.com/14051960/212780398-0a2512bc-9584-41b2-af04-8cd8aa99b18c.png\">\n\n\n[![codecov](https://codecov.io/gh/horprogs/Just-validate/branch/master/graph/badge.svg?token=O6DXXL5TUU)](https://codecov.io/gh/horprogs/Just-validate) <a href=\"https://bundlephobia.com/result?p=just-validate@latest\" target=\"\\_parent\"> <img alt=\"\" src=\"https://badgen.net/bundlephobia/minzip/just-validate@latest\" /> </a>\n[![npm](https://img.shields.io/npm/dm/just-validate?style=flat)](https://www.npmjs.org/package/just-validate)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/6c7a25cc9fdb4bf8869884339418352d)](https://www.codacy.com/gh/horprogs/Just-validate/dashboard?utm_source=github.com\\&utm_medium=referral\\&utm_content=horprogs/Just-validate\\&utm_campaign=Badge_Grade)\n[![Known Vulnerabilities](https://snyk.io/test/github/horprogs/Just-validate/badge.svg)](https://snyk.io/test/github/horprogs/Just-validate)\n[![Release workflow](https://github.com/horprogs/Just-validate/workflows/Test%20and%20Release/badge.svg)](https://github.com/horprogs/Just-validate/actions)\n\nModern, simple, lightweight (~5kb gzip) form validation library written in Typescript, with no dependencies (no JQuery!).\nSupport a wide range of predefined rules, async, files, dates validation, custom error messages and styles, localization.\nSupporting writing custom rules and plugins.\n\n## Why JustValidate?\n\nIt's a right choice for you, if you have a site, a landing page without React, JQuery etc.\nand you want to quick, simple and powerful solution for validating your form.\n\n## Features\n\n*   small size and zero dependencies\n*   no need to change your HTML\n*   a wide range of pre-defined rules\n*   custom rules\n*   support plugins\n*   custom styles and css classes for invalid fields and error messages\n*   custom messages\n*   showing tooltips as error messages\n*   custom places for the error labels\n*   localization (defining error messages for different languages)\n*   user-friendly setup: console warning messages if something incorrect\n*   written in Typescript and good test coverage\n\n## Installation\n\n### npm\n\n```shell\nnpm install just-validate --save\n```\n\n### yarn\n\n```shell\nyarn add just-validate\n```\n\nAnd then use it as an imported module:\n\n```js\nimport JustValidate from 'just-validate';\n\nconst validate = new JustValidate('#form');\n```\n\nOr if you don't use module bundlers, just include JustValidate script on your page from CDN and call it as `window.JustValidate`:\n\n```html\n<script src=\"https://unpkg.com/just-validate@latest/dist/just-validate.production.min.js\"></script>\n<body>\n  <script>\n    const validate = new window.JustValidate('#form');\n  </script>\n</body>\n```\n\n## Predefined rules\n\nThere are plenty of rules which you could use out of the box:\n\n*   required, non-empty fields\n*   valid email address\n*   min/max text length\n*   valid number\n*   min/max number\n*   valid password\n*   valid strong password\n*   check for the custom regexp\n*   min/max count of uploaded files\n*   min/max size, types, extensions, names of uploaded files\n*   format date, check for isAfter/isBefore dates\n\n## Quick start\n\nLet's say we have a basic HTML layout:\n\n```html\n<form action=\"#\" id=\"form\" autocomplete=\"off\">\n  <label for=\"name\">Enter your name</label>\n  <input\n    type=\"text\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your name\"\n    autocomplete=\"off\"\n    name=\"name\"\n    id=\"name\"\n  />\n  <label for=\"email\">Enter your email</label>\n  <input\n    type=\"email\"\n    class=\"form__input form-control\"\n    placeholder=\"Enter your email\"\n    autocomplete=\"off\"\n    name=\"email\"\n    id=\"email\"\n  />\n  <button class=\"btn btn-primary\" id=\"submit-btn\">Submit</button>\n</form>\n```\n\nNext, let's add JustValidate to our layout and define some simple rules.\n\nFirst, we should create the instance `new JustValidate('#form')` by passing a form selector, or the element as an argument.\n\nSecond, we call `.addField()` with a field selector as the first argument and an array of rules as the second argument.\n\n```js\nconst validation = new JustValidate('#form');\n\nvalidation\n  .addField('#name', [\n    {\n      rule: 'minLength',\n      value: 3,\n    },\n    {\n      rule: 'maxLength',\n      value: 30,\n    },\n  ])\n  .addField('#email', [\n    {\n      rule: 'required',\n      errorMessage: 'Email is required',\n    },\n    {\n      rule: 'email',\n      errorMessage: 'Email is invalid!',\n    },\n  ]);\n```\n\nAnd that's it! Now our form is validated!\n\n## More\n\nPlease, check out the [examples](https://just-validate.dev/examples/) and [documentation](https://just-validate.dev/docs/intro/). Or try the [playground](https://just-validate.dev/playground/).\n","maintainers":[{"name":"horprogs","email":"horprogs@gmail.com"}],"time":{"modified":"2023-11-13T14:18:59.936Z","created":"2017-01-12T13:44:52.676Z","1.0.0":"2017-01-12T13:44:52.676Z","1.0.0-alpha":"2017-01-16T10:08:28.720Z","1.0.0-alpha.2":"2017-01-17T08:22:55.770Z","1.0.0-alpha.3":"2017-01-17T08:51:10.606Z","1.0.0-alpha.4":"2017-01-17T15:10:51.409Z","1.0.0-alpha.5":"2017-01-19T20:51:37.486Z","1.0.3":"2017-11-16T21:33:34.377Z","1.1.0":"2017-11-19T20:06:37.702Z","1.2.0":"2018-04-10T16:23:32.002Z","1.3.0":"2018-11-29T09:53:24.436Z","1.3.1":"2019-04-09T15:56:10.645Z","1.4.0":"2019-06-25T15:33:52.206Z","1.5.0":"2019-09-23T10:24:18.697Z","2.0.0-beta.1":"2021-11-28T14:24:22.160Z","2.0.0-beta.2":"2021-11-28T15:35:09.336Z","2.0.0-beta.3":"2021-11-29T23:09:31.608Z","2.0.0-beta.4":"2021-11-30T20:07:09.409Z","2.0.0-beta.6":"2021-12-03T19:10:14.126Z","2.0.0-beta.7":"2021-12-04T19:55:25.185Z","2.0.0-beta.11":"2021-12-04T20:39:42.106Z","2.0.0-beta.12":"2021-12-04T20:45:15.008Z","2.0.0":"2021-12-07T19:12:39.857Z","2.1.0":"2021-12-22T13:09:00.620Z","2.2.0":"2021-12-27T09:29:11.453Z","2.2.1":"2021-12-27T09:46:25.305Z","3.0.0":"2021-12-27T10:11:07.806Z","3.1.0":"2021-12-27T15:37:09.023Z","3.1.1":"2021-12-27T16:34:05.555Z","3.1.2":"2021-12-29T12:47:22.432Z","3.2.0":"2021-12-30T14:22:08.972Z","3.2.1":"2021-12-31T07:28:55.689Z","3.2.2":"2021-12-31T08:10:39.482Z","3.3.0":"2022-01-10T18:56:11.003Z","3.3.1":"2022-01-18T18:09:11.275Z","3.3.2":"2022-01-25T19:23:24.810Z","3.3.3":"2022-01-25T19:28:25.016Z","3.3.4":"2022-01-28T18:03:23.683Z","3.4.0":"2022-01-31T22:02:01.779Z","3.4.1":"2022-02-14T18:49:15.239Z","3.5.0":"2022-02-14T19:54:02.608Z","3.5.1":"2022-02-18T18:05:12.872Z","3.5.2":"2022-04-19T17:34:26.924Z","3.6.0":"2022-05-02T17:25:00.038Z","3.6.1":"2022-05-02T17:41:10.787Z","3.6.2":"2022-05-05T21:45:48.270Z","3.7.0":"2022-05-05T22:27:14.837Z","3.8.0":"2022-05-18T19:09:29.824Z","3.8.1":"2022-05-18T19:21:10.256Z","3.9.0":"2022-12-07T23:58:23.130Z","3.9.1":"2022-12-08T18:14:58.228Z","3.10.0":"2022-12-10T16:47:58.546Z","4.0.0":"2022-12-28T18:44:16.151Z","4.0.1":"2023-01-03T18:03:41.755Z","4.0.2":"2023-01-12T18:15:07.656Z","4.1.0":"2023-01-31T23:07:09.691Z","4.2.0":"2023-02-07T21:29:13.226Z","4.3.0":"2023-11-13T14:18:59.784Z"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/horprogs/Just-validate#readme","keywords":["form","validation","form validation","just-validate"],"repository":{"type":"git","url":"git+https://github.com/horprogs/Just-validate.git"},"author":{"name":"Georgii Perepecho","email":"horprogs@gmail.com"},"bugs":{"url":"https://github.com/horprogs/Just-validate/issues"}}