{"_id":"use-state-validate","_rev":"70-1f31badc1d47567b5412aded11a5f8bb","name":"use-state-validate","dist-tags":{"latest":"3.0.1","alpha":"3.0.0-alpha.25"},"versions":{"0.0.0":{"name":"use-state-validate","version":"0.0.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validation","react","use-state","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && npm run build:minify","build:compile":"tsc","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@types/react-dom":"^16.9.8","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"bd8722b46e9091b2d17d5618d11f8580c7bf70e2","_id":"use-state-validate@0.0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-i9vE2qbXclWut+DeVHQZq8K5dcehOWRDxooGgjYd7jJXOvcI40gciPAqsqdlZNIIdx7sOvs3QF6J90xYYjugHw==","shasum":"49ec00de8868f577474c2110a3f13b909b1e46ad","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.0.tgz","fileCount":4,"unpackedSize":7393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUsyMCRA9TVsSAnZWagAAVEwQAI9B+alDdTxZIVy8JCvD\nseQQrg05EPJODOhSXKzuuCsQE3e4xfeQi6dM0jpRjkxe173Q7BNNIeazaoTc\n+Nw/fxeP2BYv6cVL4tcgMZgtAN1508wQ+POzPQ/j3VcGiG03AzU47aj4pPww\niSZliDAfADi38pYBb2g52VDJopE8gorH4tA/bDLrKmMDGIQTOeTdfksppSw5\nl1YKN8VM3uWswSs8NBdjXCZ7Vm6z+hdFT4oCNsLR2zu/zxHKS9iKbX6jzMiQ\nkz7qWQ+Sjz5w/Ikj/HMFAlile+MpUtwYL8hnccWDG66Oyg09cPQXGVRjFsOq\nazKZiVtbrNemUgBodvqLsuJ0LtIKxxzfUGlaT81ZWj7NR9u8Wd9T1lCU3UZ4\nSlktqqVM+3xvBzovQLX4Tyq9iCIKBTzp8ZUR+Hvb0ENONkbr4dT2CkiuBEiO\nW+8Vck3BSdr2cNDBYPcGuc2cHJhDlKLuyemHiDo2HBeMTAuoj9+vosLhWZly\nuPIbaHVXhALGF0T5DUzUCP84LCeH+N+JKyNVQuAxZ/JoQxwpRw9UDoicIR+R\nn66K2Z8teC9Z/3pptoXnjIgjPVH2+XnC8SkegQW18qXquQXzbqHXvzCEc5F2\njS0S91NyQvqCoj7DUGfQm3gnBeSnfSA4qdNA+FVQtwiY6R39q+JOw9i4CP0l\nAsl7\r\n=KG+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIeRj5jkMTBUx8IuSrA+QhEUQxq6+/388K+RBBNlBhwAiA3LDiFkARf+hqDXyMnMcHk3WoqC0zTRz5zfvp94Ofb7A=="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.0_1599261835881_0.2198176734123345"},"_hasShrinkwrap":false},"0.0.1":{"name":"use-state-validate","version":"0.0.1","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validation","react","use-state","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"0620b46744be319c382047f4f72924299982c60e","_id":"use-state-validate@0.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZqIj8ADogmoPW/gGXqF5CIgRojaXyGWknLtKGiwD9jVpDLaUqD1A3k1+Wyjqzf06pX0jP1Vbl1X9hNxc2SJxqQ==","shasum":"81d7224a848bcb48ebfaba706863ac394b4aa923","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.1.tgz","fileCount":6,"unpackedSize":8596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUuHDCRA9TVsSAnZWagAAg1IQAIYkVeXPbRsXNfeNgvDc\nAW0xnB+JwvoTWwNJErpx7wfYM1VNzRI5z9TsjwqKH0gy6/OvAl8WS5rYByVZ\n+gniPfcKvOfo7LbyOFzuvHoxUaf4oCjyiw4m6s45i2MqvYJZdYarzfsIV6S/\nML/MGYSQI/phlhY8Vjey670UgefwFECAu7vPGuMRTDSa8JuLasH5VCs/BzxO\nOMaUXJUeNESsw+9oTMpa4fcCfbWdrNGdkg+ev8e7w86ashPBiP5mZMtC8q/q\nO7M2Wi1HB7jGH90PhSFsht5z06ZqY5qFNq32u8NpdU6LotCUA304KtQYgyaE\nI1Ad+rmCqnPR26G/Z5dwjvyAeswuNc3J3JCcnxj0jPZHcZ6BH5bqYk8Aefco\n5PgXRQ/8aWYu3UgqOdnXkDSGBZy14SNlppy6FXVZxKUSBnjiOAroSyautxH3\nSk7IOBgpkJgYjwTIt96sZbAVVdOZOTslpQqLf7kTWQlF1h0YzBx6zwksbgoN\npr5b21fK1GABzhlfCrVPcFh4zs7h754xOOTe5c9o05DxN/PJj84+j1i5IsVG\nuZOU5RoFHmrrZzsxfm8NG8ri61d7mOT5AUtoW7bPqPQ/Ovg7K21LhKxShZDO\nw3awNPFTPZul8A9CLlBCxUFe/gI8opTwcu3GQgOMZOhXBWYakllP/B7ijsRR\nUspv\r\n=LbYx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS70bDTIIauSJjrf5aZYRlszv29EFKzMS72YHQlHQ+FwIhAPg7ejdKS8Pb81bTrfigXpVetszjX4nAyXF3CWqObZY1"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.1_1599267267217_0.06672246460679343"},"_hasShrinkwrap":false},"0.0.2":{"name":"use-state-validate","version":"0.0.2","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validation","react","use-state","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"90d301859634398b0572bbf3ca895586f9b9275a","_id":"use-state-validate@0.0.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+cr0Yasu7+53sYbzLbAm0xcGzGuQfoYMga/lk6uXWKCFoM5obPSR1ldTQPmz3+f7ncmX0QHfO7wM0/863Lsoaw==","shasum":"3693e3ffc8821a9382ff8530760baa0c61b081ca","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.2.tgz","fileCount":5,"unpackedSize":8566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUuRbCRA9TVsSAnZWagAA0y0P/3sM7vbVlMl361o5pj4T\nCZLKWi4GuCPVROsJGHyFHksskkc8gs36uCVIFFado6qjSdvKq49pstfJWury\naCqUsKJZYGGV1D2VZGcDnfoVIHjsSE6Ha6H7QfWflaMoL4se9RZX9Dy8QZF2\nYs5YL24WriP+iJrQ7chpXLvebyGSDtyRMgicB9uHVbK+JGEhGBk7FDtTcMd6\nF5JkHRIYU9bhzC9kj/7k5TnZohA09EuwivnvqAWgangnhb3cnmYePN08C7RW\nTo1FjXCsDRk7rfpiD7geECiK4o9SP9rw6dWwpTTbmcRPHMu4BWD4Ga2oM8uj\nJCEY9K3yrA/rjpWuaRBwmmxmRgJ54s/GQD2Xj472s2uZvdqS6HvDzNY2lu7p\nPUbAh0wVf+QaCMGIj6bb86cj7kn+2RKy3hH90/OLEn9ohI7+O2wA9auTRCXG\nMYdr1b0bnrAEBvVxbuxF+Mm1Ve43pnof3E3R/YcgucBTxKyW8jJelR6JzQ/s\nwWEGhriIG+jKgDBahA6EKKXNHM0FWbs2ZESyyHnr8e4P+gOQjOKijojnFyc0\nt9498bvYVWCx8bEywflyZ2KM+HC/kM9OVgTHQqj36zmVtorKX4GC/VneKcI0\nizLvwz7eemR3Cv5+mkse1yztpiinR6TdWZFJWEa2e1dEpavwXJM1jRJo6fXW\ng/1v\r\n=9ZT3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiKr2+UR0GBkld4+hK6rM+qI44TjmF8JJTWxzMKX58YQIhAIkKcITE4eAUjN131JsvQnFFgmk/rD286ufzmux/uBFi"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.2_1599267930805_0.0433718058977981"},"_hasShrinkwrap":false},"0.0.3":{"name":"use-state-validate","version":"0.0.3","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"5dd288bde7e23034e14beb7c30d3fda90b829f48","_id":"use-state-validate@0.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YR5gMSCxjEbF9n+jgpqLHMs4h1c4lft+PGv6etwY+0EBzZCi07JHemX4CWmlKUsI1uupQPHkr9CZu2Elxuwr9w==","shasum":"0e0f9e512477f5cde0ec21214dc1d622ac274aac","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.3.tgz","fileCount":5,"unpackedSize":8582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUux7CRA9TVsSAnZWagAA7DEP+wU1ns5MpD+WHhAwAj5J\ntAD/MwV6w86WLdj3vGSte2edvDi/XHUYQy4iwFTa482nW7e9EHqbZc5n48cF\n8o2Z8iKBQfqtJtImJkYxBGZ6cpKmESVhOmJfbky179gQdu+9lrJfXZ5IGReZ\nWjp4EiyAfLM9MKrbAj8RDAi/7gjAHAZh/XPdb/O6GM4pV60YRwVZj8sU2l41\nQ6qre//aK/IiubPU4ddt+4UxnK3yRtGm1uQ5zpnE7a7mViNy4SDWrV+q698H\nm4Gd4zyrjN4H2dCvVa+DxxXw3za5au2ZT3X5+MDSDkYHbGBNYtoIl0m0xSkn\nt7oeubN4XVwmmmipP/Oy2ZmqPyplviciEtmKclnAytfZFmEsRZzDMWFO7QSK\nB44liAQ/JKEF4xoCtqN6EGjgkGThFPyaGJ4ae6BFM7JmS9YmKJpyV+0vZjXE\n27I++VPSOkvC1O07lHRjc9CYVyHZpt9MqH5vkOzsl4CiaPmir89MmF3dsJBQ\n35qCJYRPTCMS5grq+arTVy5LbA9e1lGXt44gr7CRDihFlot9skaFXWa3jt0S\ny+tRpUfPYx3DIXg2AxPcNpSWNvkGIxDtErEZO5bUq7D7EiHQw+WSL/xZTZv5\ncM0j3I6QQKqAYcz/YwLFLDTWDMfWzWQKHqkXazeOiqs4VbYsdSBhhTSLcn5l\nHLZ/\r\n=kHe9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfgJJqZuOd4+SakP5dqEYHWRMdm1ylvUEmN6mk04d3NAiEArnKrbtNQG1o8k43PNSwFbHttnBqmHjkke3HDdIjBW7Y="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.3_1599270010569_0.4470741491391963"},"_hasShrinkwrap":false},"0.0.4":{"name":"use-state-validate","version":"0.0.4","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"b495c52cf37dcb2e3c0a27e83071f4a26042f43c","_id":"use-state-validate@0.0.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mkBA7Ls9iGVqwaWxjtJhTk64hSlr1fcefMySy88bBDR66gEp2/SbBM4aZ5tQ4hQFlgIV7kub/GL4P0ZeCf8LDA==","shasum":"cd123cdca5b27a76b1d858b11d3b958f65aca94b","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.4.tgz","fileCount":5,"unpackedSize":8581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfU6n9CRA9TVsSAnZWagAAvAwP/1Ur8PNpZ2FZUewJVagR\nXaC3J0bcsBa/VOucE9x15ooZ5oN4cFh67bCJq+89az26xYxj8lwhgx2Iz78c\nkBuX5hoMUK4SSKEPdhsDSVaMSSqUYll7q7oJeQ/UgEeB2i51OeeNEuGaz8ps\nDpHo6+4egYi6OpNa6ICpAeMZUWL04PCzaCiyn5Lici7B4o9HwOB6fn+B0lF6\nXJhcycvAs7/Uy6xWznP/oPAVC0N3RIgr+S4uvnjkZoU+bNR3t9N/zv87B26P\n5BJbifv73OuU8fAlqZexoEidbO6bES8rRA4QpTwFtjKYFTJhl4Rv2UDC9qL+\nvWOYDTwq1kQRkd8hvrKbPXlEn4yPDglb67dtEpru+V9zNLxtwLjIuePVbPVe\nXDGTF26RU4DA84amu+MxVzugcuib3zlKK18KCKp6bY37xHRZcjeVPUNfQKvj\nHROI5tWStWlqsy1rSeDFcRO4nQvcVVvhhd4Gkmse4M7CkaAMFmQRNmSf22se\nxzI4o4R4ZPgginUavkCNNNOaXMrNje5nCjz03ejdWXSS5hyZ6gtzhWt5fVCs\nr6MGapxudLXqOQAK2W5v17M5DGLVD8DEalQ2rJ0Le11f5spCRQJ8Ed/MbFRc\nq+mFLkL5jkF2Os9dlrk5Jkr1JqkSZkZdKTXafhYsRg+wdt8LP5AkDbZnjGx1\nrMf4\r\n=kM5S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJguTRD5Q+I35Iug/Q0UKF5gCZXeIaKUk38fXWIVa2JwIhAKArOMxkwIpI0hGHlwyjdhv3CZOGw/SayDiterpuNR8E"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.4_1599318525251_0.526741700222142"},"_hasShrinkwrap":false},"0.0.5":{"name":"use-state-validate","version":"0.0.5","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"b5b005563b148caca2db9698167d708aa689cdfb","_id":"use-state-validate@0.0.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-h56Ofd0+gkqoAf/Pn+nqFcJ++o0tM9U/ZS5uE4NZhnXEkm4mY25alQvJcwJjRsHLzPkLTEEhKcrcMkvz92loKA==","shasum":"da9fef238990daeb817118c5237441c73dcffd78","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-0.0.5.tgz","fileCount":5,"unpackedSize":8615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVZidCRA9TVsSAnZWagAAhGIQAJUGfCEzgCAtSH7jiE/V\nNSoyfoBoOUocbcIXKqkeJKB2sdgKNutgAIgsXsdmtMqJA9RtFniREF8zcDEp\n6r8LPQErjfqMlDVKAs3Q6T7lPnaOgzm3oVTGOl2rU2aXpnYSXA8hN/kEB9Ye\nFSJd0B1D1VHFnKg0aLlScPmA/rkHsW8ptQTh+B9hWcrTW2H1slDQspO4UxuT\nxs6Mt6iQxKAOMDTDP1O0QRN0FarIw/9jgdW8zn3EOkrm7WU0PN2o3gDY8pdF\nQKcoZ9Ok27n7fJXybgtJp/KX7Ag7Ce9w9Q8HT4d8GDunzYjBkhLDY8VGjgBi\ntCVanVFhYPhOer8yCO3C62wIVEbTrqxnDOxGzbQj9BIcxUJ8l5vEdoQC09uT\n6T09mttYhF5682MF98uA6HN/2cW8sqbhENnFXHr42OrWfEno80RYp0g7inLz\nCQj78tw7JgpZehT6ISRwGKF3+lsc2XjBvQZ7q1rkYdxZNvxAU8WkLzd6ANGO\nHxr618jlut5WXO1Rz95sVPdmlSoaMiQXYppQD3fmsG3Np1kpeENlsqfuGhfe\ndlWXrgR802btHzIp7Fcpzl9KbtJy0u6rbk8mqAGBJloCxQTiwAZYtohFiQ+g\n20bV5uk33uS3TlfEcGQ+pPbvzCcFcIIXlrfTp8k2xc+wmxpodFrCYMGZWtv6\nO/+l\r\n=V5nS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3UGubm80/2FCPH94jXW4fNVyTnsMH8RMugL5pWi3HiAiEA9G430qTstvIqTJH56oN9eesRLMZfm09PUflCklGq7vA="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_0.0.5_1599445148327_0.5358141599071642"},"_hasShrinkwrap":false},"1.0.0":{"name":"use-state-validate","version":"1.0.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"18933562eba1495cd5ff76b251c27fcd9053d990","_id":"use-state-validate@1.0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-72D4Whe039LpzSyyyX73SgMZ/3csYcjsJUCoedZFoFy8b8/7qxSFXTpPoZbuvi5UypDSKN3wfNUBfVrRw88idg==","shasum":"f68764276c4f32ca388e2aae441e62c35ce54d3c","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.0.tgz","fileCount":5,"unpackedSize":8590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWA4DCRA9TVsSAnZWagAAcp8QAJiws3XaCbN3g/+8aGEX\nxgrJQn3jXbvv5AfdqxFk13RfJlqEDRw3iunaQPshjPLJB09ri+BxP2cdMGke\nRly3voz+AATiCKZuzGNNUsFjt2hgC6jzzEKnNrrYE+GokgQ4/jQN3LbMQ+XJ\nMkp7rolVDMfWElKOSx6z/QksijrGec7GHTyz7XCe2864qmCqw7svoi3HwSPT\nbVPFjKJOAandT2YHXA1fE+6D+wqabss+6aM3g2j2Iape9Z8msw0sAUwBmWZ2\nZvamNSvdl0ecnk2QtAahiTN6H1d/nfnJcPWP24b7ZpQYtwa0I8oVxNQPDy/k\ncmCkEt9stfspWpU29ihD/L7EO5qCymRYbaHJuDoAULeSL4n1tPz+eLYIOVs7\njqoXonlfLQcD9afhjj9/8IXfndz1HJLzHIJmcPvnCiml+NCmib9Ye2w2sd3x\ncK4SBiPI4eTbYYznrRenTwqDRDuFKz6Y/XhdU4midj80vhSKUgGt7SIBKE8t\nMmHcuSualmScT9AdqOXK1xP7TyWMKMTq+rvv1ZmvscFK55pO33worKxu2YVj\nBzCbFCZvHxMH4Fn1+4AzUzlqVjtCvZT12E6JKmz30z8xk+QsxEzXyE2BeL8O\nd/HGAuubg7/GHd+2l6MCV3ZlY8etQ0kWwekLmhqVaU+TkTXS+Ys5kNhF0vZw\ncYwu\r\n=Ch4y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClHWyrV9toAs9ywHYNCHMEh1tvj0TZlHJOAXRBNyQeqQIgeIvgCXw/UO7BX9t0yxi5YAL3VGS67+dpElrv3IR7P2Y="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.0_1599606274711_0.817738588760144"},"_hasShrinkwrap":false},"1.0.1":{"name":"use-state-validate","version":"1.0.1","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"f3fb12b001306eeed52f43c6d4c24828e7543367","_id":"use-state-validate@1.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AGOrqdLR+MAtCepqjT5Gn3HdNyI51ZCpOi/s8Z+MgFU+TkL+MfZSuZOwBKGYL0aEyetSd7gfOfyap5mGgLIzsg==","shasum":"f5deb68ac3910180c3a7b6f65391576fc639eb3b","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.1.tgz","fileCount":5,"unpackedSize":8805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWFOxCRA9TVsSAnZWagAAnucP/3SoSsxo71nzk+OofZYZ\nH3gVpQN9xkGFAYrk+DeLC8mN1GfdptFJ97GIe75vzNnqcADPA19GjUNFU7lp\njnuV+kXGG32dPIzobUkG8M+cHjSi0UVnDkmNi7/Uy6aFX9RDO1jgOeKxtPpR\n/hzkWzHKwCg36J/oIBsGS68F6d86lSTaDZeYd8hAoEAjh+Z6NCwcyt1Mo3fP\nocohHL6Ofloqhm//thpIJSqHKUWwhFNGQV+VwIDL0P2dmS7TI0sN2kH/YKKp\nTAEMksFBeZo7C74grTNwc5bynNrAYH7zZCLVZtIY/eKnSOnzHnHbJolkG6Y5\nTmJRI5jSK00KD58iK1cuahym4zT620bB3I2dxAL6cCKgJjQUAyJrWp3hkZUT\nEpzj0JQ+tNte3X5rCMm3WTvI61HYOE4yBRyaoOr6dvWmOEDVjKT6HAwi+A78\nmeclpn7TdzIyVJVfi0BVczZbzSXVMxU6katjLs7Cx7ONW8Wom41AdWkAzVC4\naAh+7ddj6l9wN1g9QAPSll1e5YUnlFrDA30f20JnT2A/rFpLlqhbniJI5Rrx\nbx0A4FyfhI/zmaypp0MDOuXMQtfkVDFrP+KnDThb3VCaGVbqhrrpjQ4XONo2\ngWbmlSgc9W0knQoEIJyu+KecFeJSAcPPgpKaiib6DKMvFjRNscb4/nR3M3oF\nRxnL\r\n=CQX3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpisNhlY7CzvLGhDzq6eYni6M45AShKs4X9mZFsdzZ1QIhAIJYEfVw496iclIkkG0AcCGt/0sF88dYq6jBGjZNHgYH"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.1_1599624113526_0.4919704965567617"},"_hasShrinkwrap":false},"1.0.2":{"name":"use-state-validate","version":"1.0.2","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"bea7b461432629be71ee1ddeb84b0cf7eb7506ba","_id":"use-state-validate@1.0.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MBakwMTop4UclhHDypOYL88zUiJFuImEmW4UjNSQd+CMoGD/Ddzp8eljZ4lk7Illp7UvJNfGNDlkvITY2WyiFg==","shasum":"fbca5623780307715afb669ec2d5968cdf6ed876","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.2.tgz","fileCount":5,"unpackedSize":8804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWFWtCRA9TVsSAnZWagAA64QP/1MPOioGnjTIAJz0h3WB\npAIpKQflbMN2LmgyBTNLKPy5X59zP822kEOyx5PSKs9zAl5fiPJsU+/8gCNy\n5a5AzUnWYr0dBB5WRIHh4pHraUE6ryOotB29hjqc0jyt5Fp9UXzreh8mVdic\n/lpEar5okpTVAIGLp9KCk8QdI3Qqw14A5uTed+X1kEzTx83PcW7GSY53dcc/\nDzhwXxyv54n2xEw1FMu647/h/RO+K776nSP/j8XcF5AY8DlfZTZTwmtWqfNp\nh+QT1PXCys00zPcGIc3DsclTrjUoYiUgdh9gK39gYx0Eq6wytFHWxoo4NlRm\n5HpF3p5xjWnC/RCU5sHaUUWDDWq6YwNzP++OvB42FYVtomSdzy6FhUnQMO7Y\nYnx/mkbO1bZhZ1TpNMHsqSQ+MVisoyy5/9P/jUEhV4N3j8PGWVZCAP2rzVQO\ngTMmKhTbkGKBTGOJ3PWSqV1R3P3mq+qqV22RA//o8LAH0R0NUipRPPq1wsth\n3VIHfEVvea54mjT1UXMCtus5ToOPtI0Z3yQ826vfxYX+a0TO9pzQds+lkNLa\nPX85OCsHXaMXkYzSfCW6dUnPC7T/qEPDlRQa9h1W2SagfuGCa2ys0pHdFp+E\nfQBifMa3XIzqgxC1gfwiuoXx2caARWzdLX27NW4gnOOZgKrtZIz5LfALstQT\nd5X0\r\n=H5mW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPZaPmYiq84rk2+DVKr0qdNIdKwGLNkz1r3FHDlWCRqwIhAMz5GeKyP0K2NuyEPrFjspGE7z7s/stJL2TBuf/4QPag"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.2_1599624620814_0.20790933325127847"},"_hasShrinkwrap":false},"1.0.3":{"name":"use-state-validate","version":"1.0.3","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"a0ebfa3bb5d80d792f63d837c92be05afc6c652b","_id":"use-state-validate@1.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cQbVtXX+LnauC/Ec65vpxnFQQlcV4TjP56WrZI7mlbqIITsCwrFUlJ344iNKV6XHScZsmrd3fH5OutvJOVBz7w==","shasum":"06174f1e88c8a7e4683acfe5a6e3385fa491fb37","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.3.tgz","fileCount":5,"unpackedSize":8886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWNFiCRA9TVsSAnZWagAA+YwP/2WX91RZXVyhJW0Ezu2s\nF4ZFOq/fJIStWR7AWADgQcSMqAEJW31ntEJTWDRxEDU/nbcJOK7+rcE8GtQT\ntsFp+KmmOtbNH84PG+/Yn8MJVefSUvOt+h1jdRHg1kPkukIwyOG/wRq1Dl//\nnGcuuVPWpHquSWApfK3hr/qfdK7AmOG40vDtMp4wA7tC1e1UNZDeS/87d1Jh\nqD6/gYuDS29PZ49Kb3SKEKTi+sZpzlLD23S2//1Ed9k8nb9mcqWlcsFjqy5w\nMm6f0LgHdQ4ig/cFkAWbxhOEVr0J0F6x1Y8j/vLiMIQFMNQwTegYyDs5/+sn\npPcRLTvpjbS+GLQFEYaDFhRPqLn+lCE6yzlzKZoB5LeOCMKHIgeOhoeS4Qs0\nQ2sAmIJqtE5LfnOsd3rCmFX0N5pYnnTiFwYzR2IZjHuC2qfdZA5HtX/wN8iR\nvuEW5hxflw4G4GLFCsRSxulvkvnFRBGVD1jOYZCIuq6kAZR0xCd6sjpU6uYV\n9hUiJHPiBzUk+WDxJIf8eg6vzzkxeF36QumBYus5Q8zsW8zYuwzsAD89NDwR\ng/aW5Dgtcn1sv4bSoKDQi6efqWOq2SIZKCWZwYacg1tv69XAKD23QyFPN06k\nYQ3f1W2lz70phH9fENm6Fes5dShwnivWWfhk817W1kkhghNPrpDRGq3zQ/aQ\no/SE\r\n=8Cg/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDs/wO71hRppsuCPKBrVwiap9UBo7Lmt6F0lhQLtPnWaQIgfZtnwZe1deK7fa16AIqn2tto+JZVwxdAiGLIsp9zqEk="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.3_1599656290038_0.7256020512246371"},"_hasShrinkwrap":false},"1.0.4":{"name":"use-state-validate","version":"1.0.4","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"78d98cf4ffa9e761a36691deb512a111e124d76e","_id":"use-state-validate@1.0.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MW3nMkzcMHJhEiH1yk7B7h3UuYFscmnmvUaNzvMyIqLQbnj/UAwTU1NxUZbbfEhAH+QRqp0F4naw3vVBZpFC1g==","shasum":"6408524e9352fc710052a63e9bf3e98e503f645e","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.4.tgz","fileCount":5,"unpackedSize":8907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWZ9LCRA9TVsSAnZWagAAUqgQAJKaqkDlOzJwfZPETlB6\n2xoQUjy7KMtClYXailSEkQxJq2T74m+wwpBAlxZ3lUo8L23L38F6dYuUMj5m\ns35fq1m4u+BDXQQjNm4ewwK0KZ5Y1mP2H4E/rRU4hThB9SWHCK0gF0C7Gjh6\ntFn4ML0rvgudCi7aB2Gh1+05qV6sJOtMtznvbDR97XSf7O8KaeTpiyTrJJT/\nrBSDdO+MS/4/VLNfM0CXMV+erS/cAAb0V+7AQ0xB1SWvHyngUz/qgVu04TAf\npFaxzVjqZVdpqs5H0hitbdKVqV7SPlAYZSYvpRoDCD24iZIc7BCFUFT7ImEF\nLkTmUFe850HvArDo7Sy7nfKB7NRueTQ5hGD8fcqYucr1Jw5JlInPTE/Vh9M2\nBpOMVt1vqCZTo0+u59LBABFg5cteuCkfwl4kt+CoFpN78Q+0hOP8DdSR1jMv\nkHXuViCUvDcx0Z+ACaYOVD8eA6jM0ZH4riOHPxFsWkMnxi7tZj+tYUnjMAcj\npqRy0XzrkhYcGMllqVe2krE6b9WgoZLWzIgfHniAOILAuceSTTvZjx/Xh+7V\nrlbaacWSWNhwY68FkgiD3KfIrkE5LFWqC9sFfmEv8JmzKocbyCbBoPcmbK8R\nzWQD3qpcybIbg+aXOUzN2XdiyCiujXTx/ItOJoVmmttolee8bzMcri5KWn0A\n9MjA\r\n=qXEH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmoytI5MfmA2dSQGoTcwLsqCbwX1gg5TrrgwtXAHb88AIhALsCzc2CLAvPv8gCAREO1aR7/dLEZDR+u8WF92RZGevd"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.4_1599709003206_0.6319274450437025"},"_hasShrinkwrap":false},"1.0.5":{"name":"use-state-validate","version":"1.0.5","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1","validate":"^5.1.0"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","jest":"^26.4.2","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"e51ecad73af2427494d6ff062a9bd9261b30e41c","_id":"use-state-validate@1.0.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-P2GEmMc/GTqfEnnLy6V3nTi7DZQ2U9wT4SxYiXh4NRVqJtc6Q9ZDJpthL6B273J3/J+CtUzpuzQzlZKse1FDFA==","shasum":"d279cd01b6ae86110d7c5e18bbee73a8874740f4","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-1.0.5.tgz","fileCount":5,"unpackedSize":8982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW7OvCRA9TVsSAnZWagAAHGEP/0xDgpLtZB0372/K8Ch5\nwKF0O0G8lLxqdJt+mEOXtGQECs2ZjjhYmDOlkm/Mtb1nwu2BLtsI10it/yfN\nLcUG/2ZaaeMRzKSFMeioacUaPMIP+BanGEYpFZAlufsNTqLVJngRdxdJ/OG4\n75unzN5DgD7H+fI++uiIrFJwrBkAEpuNr3TxX1I86NMc7w575aUWczF2/QE5\nptqgNDv4R0egdSymQQxZ3uX0YQ7eKbYjKJS1rmy1ZxFqVSGAS67TqMLZxTRK\nBE951A2b4urAtHeNqAKn6qIl+LJKSPIm+BfjpAzDceG/bvR7VNJYSZzMy67+\nlGGy/5+Fs5ku2mWLxUExhhhXHJikoA3QB5aKzwiEOfQIXz2PU+9K1hgsBfPR\nzxdu587W621KuVhoPKdXbwxufzAR2+6vx/xeDDmXZ1/6FQoRmMQylLkNuA29\nzj4iw/3ziKzVemlN+YfWAzmMEIcIYnyfWQPmu92rD4t1pi6a4bUZMKTR8h6c\nTs7LvO2tWjpHJmiUuSMnXl4fHFKe0lnD/FyU7PLb82VxmPHxGgxoYJr76ijk\n1+Vfhfqifo93s48mD5YQhG/SNb75VmpuTS663z5xW41NfsgTQm4o4T7cljp7\nwnxkpqScvif02W8VbGkLsGFoXOlHOryAeMMeHUJmWfgp+k3kwAb/hTG8ZdPq\ndXX+\r\n=A0k4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdAB4ULAa+k1wWnzLC1QFTlvk6eUCwzN5wevJDQu+W4gIgCdLaBlt2tnZX6RUa2BTd0xXhljCtaO5WGZ2aauqR4K4="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_1.0.5_1599845295033_0.8553702975898145"},"_hasShrinkwrap":false},"2.0.0":{"name":"use-state-validate","version":"2.0.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^16.13.1","tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"6f44beceed6c3a4666b1d380a7f844b043cac722","_id":"use-state-validate@2.0.0","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-zCJJ74OxUgJ4RrSTPDMnIAxq9dydXxxrmiFyKpnx9WJFF5Hmit9D4xZyb/5O7RpoiXKxL9AXG6TkGLxY1HbaYA==","shasum":"746bcd69fd2f7ec2e620bb146ee899495fafb782","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.0.0.tgz","fileCount":5,"unpackedSize":11060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgId7gCRA9TVsSAnZWagAAvjoP/isPGepl4huBP5l7mDTl\n2ifb1iWxJnqYYto9CvzBDDaKG91ny1KX7uRj6JkP/V8/TJk6gntiBPudiILp\n5btobxUezoGdENXzcORkDs7UhSKRS3OmJxkageoOIS82HLvZ/TKlX9L/t1bV\nThTEQjW2SkvIQ515aLKy6fwBkEuimIedSu/G2hG1P719fCk8+P7E4BG8vg2Y\nNXccUh5Z+TexLgOopyavGPGGh7Xm46960X/NqtAJpckzE3sgZgqa6d8lz5lj\nrTz2KpXBq7hCaSxtfxHGSjxY0d+SrORbEglkoUF4lyToo83/ST1tl1p7BK2J\nu7uEW0ZiQJZKnLtxLynBx2/4JRSHH0SBtWLZAMWL9TVGSh0lXDGhLSoRXczV\nyyqoFTX5CrFoRxo3zfRwYOmJeSGRTKYEznbBu2ULmVgHZo73FoSNQj8jfjMY\nE/FfgI+1+4XE0j2y4SM184/1KsMFNPWfA7Ghg7X2PylZAgsgsJz1HC6Sflzo\nNoPoLyZBRoYiUiC3aod0Os2URWFJet6vv74Gmkw2Hy73EeqYGDxNj/3C/FS7\n5Czp2CQ5wDFAU14g5HfCzJDgJrfhxSfKk23ra3EhJDyOse9vqmdA9GDEYlLc\nrf3ZhZSUmQW226WpGDqnladb3FwVxehx3k0Q5nE2Ixj7cI/VUU6zZhTUXAbd\nUYt4\r\n=A9Sq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCy/9ScSG0BGv7xCpH5WtI6IOdM9kdFzdwWln1Yw1Ls6QIgBJw4yEyIv6T4RzcCdBZqitgmyT44AKqGuRRJd7FtqJw="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.0.0_1612832479852_0.6131044254133209"},"_hasShrinkwrap":false},"2.0.1":{"name":"use-state-validate","version":"2.0.1","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm version patch && npm publish","release:minor":"npm login && npm test && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^17.0.1","tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"cad18f4522c9645b09fca5928ce69f2b956d4470","_id":"use-state-validate@2.0.1","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-glBlY/Dr+T+hGUm//ujp3J34XhGWnSqFAZVCadmvnQ148tlkkZdYEN8OHPZFdFnTqiuGj0GNX4iYE5rlRyRcgA==","shasum":"f285bd679527a550863534b3b22a28e410adf472","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.0.1.tgz","fileCount":4,"unpackedSize":9006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfMcCRA9TVsSAnZWagAA3K8P/Rd4ykYYVyf2T0tdnr6B\naitkpvVTu6QdJEGmzy6P8knKNDzuZ0ziU53MronJ7x7FBJ98OuIehJ+NUj9C\nZX59Pps75bsm4TkIiPAeBssOIsEvoW6FEtkMA8AU64V71SgJ2fHiO3VMF7sy\n8zjutqke987UbgfZKPVvkN3WOvky57MO7A28NeK0rQQyAlszIpWRMV3X5IMp\nPdEpGU85J+3gKKKIiqjE15I3+O+4cSoOYYjTTDvzoMgO4h1WKIJzm0v0m6kd\nd2uySN90Or26iS+o+kUdF/1XpUhG+TlVDw43nNldkEkwTELCecgooOZ1HL/l\njgLqDQNfaQBQ6Qfj7EbPtyLQ3/94r0EqneNQvQBxn4MpCD96Aenq2K2loRYu\nCXVbAz61V15oSMpVhGncVPRyi+PpPp+6CmssrDftdJVXAOKBMdnkIqCqxf6K\nHiDO90pnt5ocXkid7/R9FIKL3LEsIcEo4zCYfUlHEygDUI8bLUS9d6lnAE+7\nePa6tkQ0gQLlVlGsh2JsLkwjtZcbZXQteXNBFs9I5EMlTrHsKhZEmvSpcpX2\n+KVYrxkK7HFrxb49BiV2VP1oIteBcZHUv4uN3qiODaUq5div9ojdE7LxFF8D\n6G+rFMNvdl12Np5Z3ckb3W7GyTCszJPBH2BYEXyJCb6+kP8fbauYRBmwjMYd\nHYzD\r\n=O6HR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCULpoii4vMEihi5y21cXNZcewAHRDH6a3AOjNahTlphQIgPoWHcguW6pcmhKuN9vKNPtI/8CPZayg7sAwzZGr3tCM="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.0.1_1612837660151_0.08519381568509976"},"_hasShrinkwrap":false},"2.0.2":{"name":"use-state-validate","version":"2.0.2","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^17.0.1","tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"c67344c9f5245726611e90bd3e2fcc924bd53de4","_id":"use-state-validate@2.0.2","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-tHL3nzE8lkZdYutJmQmyWvo9g+18LRpqGx4/l6grj+jfhszvzAMfIEanP6HwM+r/h7YW+b6t+GK0rt7BDgae+Q==","shasum":"6a06e616b63279d2a3ac0bdd0a580281b9927a0f","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.0.2.tgz","fileCount":5,"unpackedSize":11117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfZKCRA9TVsSAnZWagAAT/8P/1REwxbvRckfPvo8vyJ5\nb2lIWDiNsU5vYStSI+NhNINtT0uMdsrXE0DSV8pAXktPi9mERD96iVh1R0Kp\nOg9zPBhXbxfLYbo3SGSfXvcoJ7ZhiRpOyEz/RCDLQQ/834birOjS0stxgRdJ\nR5x58wzx1PNudjdYA2ntS08VghjRZM9csmzGbuzpC7IMxDyMch3I2q0Bk+sG\ni/D39Qnn/TVGJb/pcPI5L5d/efmfJV/7QLgh0juLC3apStzGzd+zP0TFNjoC\nwGSftw7ujZwJevmY7ENkeHJVT/Ymy37C1/LFvmXN+6CxReQybkKxU4Z+z46R\nndexFWjmGCbUCME8UtZz2Yh+YCKTcJcW2ktQZw0tYACkPxX4A6vFu6zOal1O\nMw3EQR3Vp2ft9786Iqw6VqAqM67BVUGvnOCP9HRn47apOnV4Iucx7dhd/gTH\nRd1zB0WfHNYgkTzTylhxUbdatxxYZdh0QUgTZe5r9IlnbIjIV9Vm4bm/FjhB\npvTC3Y9vr0G0zB/4SqlSIyzK55iRoBDcqB3cG9ZgIIeHyxS6D7ateI97zVwE\ndDt8U/IWgC40ZVR2vVh1uHaoenoYH4wqI7kqXvt3SzmlF/noG8/GPeGtK5T3\nHL/ayhem7Nm+QkUjMuhbzKiSQs4k0LzFCKtreTnsl0Sbg8PFCQVYZexafE1y\nF1ml\r\n=Cfsu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwsjKp9jsLhSv9NOaNtXv2hGTEifqsBu+qMbwZH7DMWgIhAI6R7bcdjps8OhEYXZS5TJwDa3ga9d+FfDMCqKkqwKtt"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.0.2_1612838473605_0.7430976640066604"},"_hasShrinkwrap":false},"2.0.3":{"name":"use-state-validate","version":"2.0.3","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^17.0.1","tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"50b3ee67f2c2e678b5f1cddee7a71a7a7d1d2f78","_id":"use-state-validate@2.0.3","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-K2UhtBiurK5TPwM95/58+J8jZ9mHDUyapMEacST8ADEVyAmxt8s7xX/Dbeu98l42Cmio6Gv+l2lcakcNNgudXQ==","shasum":"863db699c4f121a2f5e016247c05225985986a89","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.0.3.tgz","fileCount":5,"unpackedSize":11052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfrpCRA9TVsSAnZWagAAPWwP/2IAu1J80Q4Uo75CzKM8\nLEY0i2Y9azM8U97qVluj6+ctJKCLYFpyATlolGcZAEInpz2vwZiq2dwfvlRI\nV06OVFd4P891MgZQgpnvp5yYTUanQ00ffjl2htusZNs04tBix1/x7aFRwWcy\nB5rHbA/Q67fZg01u/o0iJ/nRpXn/Br0IAEvhfYlgZgEohyYUG6g2NGZEexTa\nZe02swmjEwLZVWlJQLXD8ADbp+AC+vdCqNwGMNUTUsmZCIdchC1CSkOKyIwB\nSgLPKSiU4lSVWaFjcb1/J6CzBb2hDQe1wZNkqR7U4gjaeCRc9sxNMbvXvxsI\n/BzL35W947D8FhQnD9FoPc+zDcmbyguTa6xuuNTSl2GZmixMqWSvDFRHVXT6\njCLiGCyKmCvRmR9gMEKycIGfYBZ1Cq7c00aNy6UVwLzKouFLaABFX7tvtOuo\nHxfY7LkWc0aiJMc5Kt/S1aWutYxl+X2eK+QqLKtu5gn/KwbjzZObpnC2s/Yu\nCh+iqN5QGNfjrtT9+l3E7gqCBthmKkMOmTPVTlBNPhEsPCeGoHmF6RwdQXgu\n+vs2kAWrHqnJQcHB3Vaoaq83WvVowhLrCsnDBVODB0NdhDJtnRtPMuqyCfha\n89cB1kWsXJK9SLVX9bQ3z8yMllgpDLHrfFpQhiilZtAnmHky9deKL91RT3th\nz/Up\r\n=wtOT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvIUwjzB2AxVlkVJaZPM2Fb/tw0axJ/vtI1LDNK7d3tQIhAOb/9uUGgd+S+gWkPHUBoAnrI6qYuRpf2WdMTFKwX9uu"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.0.3_1612839656567_0.858099098271744"},"_hasShrinkwrap":false},"2.1.0":{"name":"use-state-validate","version":"2.1.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"react":"^17.0.1","tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react-dom":"^16.13.1","ts-jest":"^26.3.0","typescript":"^4.0.2","uglify-js":"^3.10.3"},"gitHead":"d21a5f0a6935258fcf441974a9f787bfb48d5008","_id":"use-state-validate@2.1.0","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-NRr95EhaK3ROGSu1ILKoYxsxEsfb6wa9cEY7jfTiJdxJq9ca1iWsTQZ4OHLquyZRIKf0vhm6h7XEBWNzls5X1A==","shasum":"f4ca3779fbe9f1d3ea6766c2c11112ba39c7871c","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.1.0.tgz","fileCount":5,"unpackedSize":11135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIs6bCRA9TVsSAnZWagAAwtIP/36f35x+u/5PQipTatr6\nY3rNqXbYvQWYeiseFfRTDdNWDGEmyyKqMuroPF3xEFjGaG6jtMJbb3lf7Hbb\niWC/OLycW6e/DfYKSJ35Yt0xh8YpxP1h1fpyL/nA2AP/wQ+d4ATSNGtUEjJV\nSdw+Sxct/Ec8KJNzELM0ZvspxFIiW93OU7yEKEptD4Kh4tz3vLuN4v0OvfP7\nE+cLmqW8HfJhkMYKzyOJc/RuGrtzpyW3CxkFuoy+5TzF3T3nD3tfnKGiuWpH\nzMUCX7spm0q8SOFMJJ6n6Zp/VKE2CcmJNEXSNX7TBT9Tuo8xJgM4pa/jfWtY\ncKbJhzqMZm81cGJI0PTHa+tV37f2hpypCUmVdD6Dp4YTKWs85p2CKaktYU4U\nFqY4Mfu9PWcRXdfRGU201nIE7yWKUjmeBVCNNjVpo1WC6dhT9dFhuZ/js2bI\n0KQOwmDCGTkNJ5JgV60JCACs6vFDxR/jZorQ2WWRnbWNz1jxgvtGCvY4EVpy\nAzVRxzhlSP3Ni9mv0c1hICMSPTVe5wK2lSIwNprRWRvLjnEoiXW3hoVwZLmy\nt1GKXwPkBDgFRKb1rYu7fzg41uaEQYXI88D5EE87Tc/nLm6Q7QbUP1WY4eCm\nIh8cKY7YdHh37FkPBs1Mk3NtaIs6LnHTlcq4eOhNI2lub/1iE6A6SzplguCY\niH+R\r\n=a3cq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIS5jSeKeLCEWuWX73+S2UoBvbWvrQNyIdt5FWJwJXyAIgNzmpZVDESHfNDMisZHsBE9jc8UNA0990fXADINGpAX0="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.1.0_1612893851038_0.9956487413446016"},"_hasShrinkwrap":false},"2.2.0":{"name":"use-state-validate","version":"2.2.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"bcc47382efb5ae099d97e2f47b2e571733815ca8","_id":"use-state-validate@2.2.0","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-xFFQiVm208YrF2AcWy/MGjXh+TSOaHjN9EmJQZwYvojNimw/AXjc0tvgxrO25Z83pGlvbxqUfCcZ4XxlGQGP9g==","shasum":"28a55f731b8724765998c1a45ce2bc302b7b3bd5","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.2.0.tgz","fileCount":5,"unpackedSize":11249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIxUsCRA9TVsSAnZWagAAgvQP/0tJ+2oY7p0xpy5pc3IY\npSaEsJeF4EucqOr91eLzecAWeJW5U2AKdeBLWEmw3A8sv215pHwXaGF9I6nc\nSgcNxoyIsG45i4H1d4pf12NtLY9+zDYGDk3W9jl/S9fg0OuSnBEgTfevHuCu\n9YmoERwmact032A3AHlzBXt0CQCeoT3n5IptndTGhgQ3SKXAT2mKbRQrRbJd\nJTa0+pK1fc4xR7EAuWLbXKSWVXl42gV9PKYOUFE1VjzEHRrusLNR0LXylhjO\nsUQwBFE0tO6+ckoJpTpupv880B2etkOSKeh4ICLV08Hxg14UaNgemhTSmcBS\nnSp8fiOuwImq34gVPUCzxjU28arIw9fuVegfP7qwTf+1oiOJ13MfYvKU7RsH\n6jwM6F3ZK5NGSgcvwQqY3VNoHxHq5Ojy3x8gpA46KVfBd1IPwNLYfjLaAYi4\nth6FuDS4uB8UVee7jqKHGhRCtBiCP+dKtqG1XbhTEBibXcCvjVMelgF03sK6\nev8PWcPRGnpsP9yPp9PyXqElVpG8oDiJi4zhny9jLMbtpL9ejZf8WPbMZgNj\nkA0YI0EdcvcGcgubH5kEvR0otIajAwOck+rhYpjX9YIlpoC36deauC5uWiJ+\nC98IS1fvpVGuFtCu4mrQJCevFU8xuk7BhqGS4hH8K0TZMla1cJrMfGYtVEQg\na1Hf\r\n=qEsS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL/BTZcdqcFrY8bw0f1d4PZGa7sOuUOO1cv/JQCiy+wQIgDACM/4RTYv6mFlmSHoyNn7FedftkeqqBMc9ffOcGMGs="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.2.0_1612911916068_0.03258904383716077"},"_hasShrinkwrap":false},"2.3.0":{"name":"use-state-validate","version":"2.3.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"34137c2d0d25f3ba37c75750bced07db27f9ee6a","_id":"use-state-validate@2.3.0","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-1KMqu//PXMKoeujPbAOMUIWUMgxqJGgZ81ihSRQJ+eZ1hz/tKSHiWRJ4PToZLPD4BY0Y/oK1z+AQAP04w8UsMg==","shasum":"dacf08489f87af2497afb79c0282e92236d4db76","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.3.0.tgz","fileCount":5,"unpackedSize":13565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJHIgCRA9TVsSAnZWagAAlqEP/0xRSosekSrZfP1b1O4u\n5IxVTR7bl8cP5paGIF9noVsbrSHJkNY6hc1QF+myOyrauVp5nNZc4MYrl1ER\njha3PtZuG4rHa5HRFQa9/whXOBXKivK6XUxpeYnv7lC4fjQqqYLQaii8Yq1u\nTsib1IxoYwGLqA/BX2fVIw14/G70gFfVQ/44mw76XKaPUwGyPRL45xv9u63F\n602c7InHyCAQu5pGOrm00jWOU/2Nlk3U2gYi1ge2T+tcIH08Tb25uJz0v/+Y\npvDJUuZihmPC0oHMuIWafs6FSB4VXkeAdzTI+8IYJTqTfsO+UkUwlU7OzeC9\nzswLLB2G6s0wqk+xa9AO8eTZJJae+JXTwDNulKGFm9YmrVegVif19Qz6bGg6\n386zj+OINcuGL+A9/drWxEvUvv/agvblwwi1U7SBJPJtNFk9eWHxdB5Pb487\nM0XOoWGRm/thkRu3//YpJO149LrdFase8R35naxdbCOeXemE6ZAGC8Qd/Jls\nWF483GrMiZ1beC+wL5HjeG+olBWEIY0e9Cnv5jP/22AnmzttjaVGydjaMnAf\nVN9j7HaocmYABzFIS67BdNYw3UeR7u0qctFG66ySvxRfxTvhJsORc9DddCe7\npOjBKofm1I4IfQignbQgq5qauZYCyOgVacAbqQxkI0U1fUZ0k4s+2jyDXLIu\nx7sg\r\n=KlPu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5A5Ci4qRwJdnaFkedlMZ7/ZuW2mwjPuNr1lNyVAMyXAIhAO1e3DMSJ4EoTRjlZOskcXYyFc77e0ldK8f+Fj6+TK9y"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.3.0_1613001247106_0.17444988389843208"},"_hasShrinkwrap":false},"2.5.0":{"name":"use-state-validate","version":"2.5.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"87cb0f485760513a94d6a1c9317e73b021ade57f","_id":"use-state-validate@2.5.0","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-V3yfyg3yqu2h28izukr3vujUxEu4V2QtsjaDJUbgA67HUKF8Y0G/Mbt6yBm8vP4DXUEGuGSZsjZOR83Qb8YybQ==","shasum":"077f2315f28d1d779756b515650c30abcf880feb","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.0.tgz","fileCount":5,"unpackedSize":13668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLTv+CRA9TVsSAnZWagAADfMP/2VMQ8VD+U1l9ViCLEC7\nXN/Viz5Z/NVR5kID+auasnU77AjlsBTS5A4Y8WQwiBVrjOxLT2DlmM/fRwjT\n5php5gNopY1AQx1x6jqbG40OGGXut+T4b1qjBNz0ctizyWxh0Lg6N9qHeWtE\nnQD4GOPC9RCaz87WahYA/CxV97ZT+9fq4MdIfFsAon2gmSnX0u/rahpUnKLf\nY/DFo36T/vQt3OnQVtp2r0rzqOXh4t9wCWJrb2MnchT+Cwn+sTSYPDh/cYJu\nbNyctfnruCQTS7pwsRAY8xgyd8eyglh1hjyqfMvCAJ/KSsctS8JI5lYhZ75c\n62HPuCIkeMTayZco3GTjadWupAuFmC7WwXmSdAXeC2F3gzEVutc7u1MQhcHq\nGUjgv8MzkLWghXTyLZ+IAEy8mTKMbOnCuIFySoOMzqAKIzlhMXNq5/4AyRAt\n80sXLnj3y7m7zfCHR04ah199Xi68X01g2XhX9vPqsxQs53zpYk1rrl6YLpEt\nsg6Iz4F/SJ/00yiuA27lUxFUXc0kJEcdbV8mv1k9pGoJ/wRnCMtT4toN4AoE\nXnqrFvlKym7XAcBMWpegGcE0rqGW7U6829NoUeXr3QesN/c8SA2AVZE4rYlj\nimoaGuyjPi1+Iwgai6GLi4RWHPluAhXIbrLIZ6OAiFxVjWcqioNjwG945BN/\nHjaW\r\n=05qJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGYvPw8E3OVV+I1D16gL+cuZexwn87SuFyGTdfK9S5nCAiACMx+0mz+NtpoovpjHpz3U+/vSU1jX4IyUy2Xw2UlEww=="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.0_1613577214243_0.4300174550497453"},"_hasShrinkwrap":false},"2.5.1":{"name":"use-state-validate","version":"2.5.1","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && sleep 5 && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && sleep 5 && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"9f58c50bee6d88011f86936a1ae91df15d13c171","_id":"use-state-validate@2.5.1","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-RJ9gNs5wcGX10OYATzpWBYkuGpC7uqXSP0MSpWQNms4jBUKy0OZbGrK2VQe7Pxti7YEm28BLyljZtkaLRwuVPw==","shasum":"eb39415e70e53c53a3c67764ab1e947dae7f4080","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.1.tgz","fileCount":5,"unpackedSize":14070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLUlTCRA9TVsSAnZWagAAG3QP/0jXONxrnkoZq6drlwaS\naWlRa0YNo0Ul2VM679C4o/o5TnD1/pgkwaPu6SpzJXAg/1Xiray8R+tP7Mon\nOaJhS687DUwhUwsHAwvdVNprvnBzkmIFHtPhtyJpt9g6c5Y+jTV3Kcv6hZAN\nKfuFTU+MG/jjbf33GgvyLcFQWF4Csu+h3N92EFifls06euOHlWdpmf5l44lT\n1Q3GGCwi6Pho1fiUqnImH8fksq2QMlC0RbJLI5XYFjmVIVGOsxY2+yyZrSc1\n2EUj3HoeuChPfm9qIuBKQjaOEHgHejR5qiVAV4msVpHsKva+1aPIgjNASaA+\nUDNZ1BXcxm+UJGLFPgXA6KJP3/h112mHA0ropHZ2mqa0d/k6GFoHPGHRhXiF\n9wY+ypytSQmFYuomrS2TUr6AhnXTyEAz7URSuqqOQIGSc0PPDHWNgGHWGYb/\nzGU5N46+wWvMvW6lkjiZBaiQXYe94SHim19eJ7g4FfNsR/owmOeStoH7+tZO\nzrOe5I27U8GYqdF8AphttuiwrnqG48I47P9VpyDvXGDASk9ptSJBVnX9pmpV\njdIxliNjcUJCxTgVeqVOSIWtKp0pQUaEhoD9cTcOVpWhLE3VDXnMkBsuUwoL\nhOzS50LHMGXXmoe3CXUjbl7HhaHgc9Q0zZyjynoDeU0lqhx1B4YXOlZeCBd9\ni8/1\r\n=PJK/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcCj2avTIo2tQ5lVqVwFuS1PJeuLLHXkumHo3GXC5R9AIhAPUuQaHPHPx6hf6f/w3J25OD+wEg87JeKt6B6bhSsc5R"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.1_1613580626373_0.3096898465153064"},"_hasShrinkwrap":false},"2.5.2":{"name":"use-state-validate","version":"2.5.2","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":"npm login && npm test && npm build && sleep 5 && npm version patch && npm publish","release:minor":"npm login && npm test && npm build && sleep 5 && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"925483f8d51a4104ea02b549dd556e979124fd74","_id":"use-state-validate@2.5.2","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-1WHqjnn8lTSyQsU2TwsfJyj6NYb3uGl7e1/A1rs8uUUwcTsXGvsMh67zZcL52Jh/eJjazX1CEqM2LHsfjmeBNw==","shasum":"1ce362cc2ef9d47bfd920793e724eebebdbdcc70","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.2.tgz","fileCount":5,"unpackedSize":14113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLVuyCRA9TVsSAnZWagAA7FcP/2PF/JBcmWoiZtd1BlZH\nw8zqRAi4J4a/D2aVZ4WTY+DQiqCPsFjdb5MX5m8AjgDa+Oh4qbmDX7dGT5L/\nn04jmz8OWxHEj34WwtY+nVwgVPOEGbI3jQpJI27MASUYEMRJQIR59pzW0XEO\ntjsoVhLZvGxjNDbpy4P0db03/J8MqgMwUlrZdClZie9dr7U+SLc9y3FCV7zI\nUNSEbjbxtNb+vH90C3LaDgduP6g45Z/ZXGaBDVWoHTz50VFvatBLp984zqHE\n6uddb18Vl8rx/6XpsaHlyDP7AgxQwZCU0R65ZTaAja3VnC1cuQvEFRQzS16s\nybMCgp7C+SlnH1Tu1rvl/CQonjMDpdv2nfxQhUANSezzGRdpagbNsuRFrT9g\n25K21BpfTiAScK8ENJAOll/A+XhVnN/O+TOthJYIu48rni1tK9VnzqhcAUU/\nKcPtbyJl3QX7NTjWR6bQgR79ciMVsS8v3lW/4hUqJs4rDJ4uUQ+R13ysyePo\nAJPnxpJlCkmKr6enhPi2C2ckrrrAwq3MgF5emkKAhORDIgffXTtikCpyGUlG\n7vzZFUPM5gSkHZCYdN1MQycJxufy+bsTdNBeWApkh4guEwVafaZfX9j81oR+\nrP+bvw+G5q2QHoMcZjnmj1zOUJhbhDCcUU2yx+omB73Twm7LV3nm9WvhFJmZ\nuhoB\r\n=BG7v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZBOq9uIQIITGmsZcssehq8Z4aSqGxIKOMzfE5JM/QJgIhAPa9vd41rdM+cm03HcAceUMyGWICYctwivCYQ65RUX2H"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.2_1613585329580_0.38723207321519215"},"_hasShrinkwrap":false},"2.5.3":{"name":"use-state-validate","version":"2.5.3","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"1e3e3d7b204e4d1dfe49845fac56598f6c546dc2","_id":"use-state-validate@2.5.3","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-XQ9hHxCTTKzEI/Is15/ox5jzV7GuUzsu2rT2tU/Koe1ZkjNF3JGyScE80n/Rg/scE/UpswkpNyrbjVWs5OoWRA==","shasum":"90b77e0203eedc5fe38614c51a24853f91401f6e","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.3.tgz","fileCount":5,"unpackedSize":13990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLWGcCRA9TVsSAnZWagAADYwQAI/HRwYsjz0O+M8W+H9N\n/sOEOx/R4+KylMI/2GuLlPTleOgRQxojTXfjsKRzqqbp5s1Lwoe3BH3nQBlp\nIQn0qNv8e+zEa3hhTO/9ZhpgULT0wd/vIX+dHtyCXVBsmsmsQeqwP3JFr3FQ\n4p8EAZPdGvztVBSHWXmtmwvasX1hjCYah4tuoZhfvYy0zSXWfpcx7WwJOmZS\neiQz3SvQnppCirmHJUh+08vN6rDzDJMEy3TruksYbIQWun42+KXXiGr2LbF1\nV2EJnCp3PR37tv8t8XqZGZPMbU7wdSGvmDq8v+Opz1DclJwTUjjSd6u/KI7t\nn1ilJDjgwlIMDAv8Lsyn3CZl0IohE/TwPoolq1ZKIrGMu/XWbPwrxF1LIsiX\nDKuzRKkKmQ3VT+/sX9Yq7Mwxlp1AHLTI7h3Re6yOOCXKcdjNbkAc21C610CM\nQTal5do8tWzEZ3PdpQrr8C0OwG6KHF/Fm8U4kt3tB4fp7F72vRcIo9HVqSBH\nNKi1wzzXyeSJLG3vZwJWmBZSU5oORfwU1ry7J2Ti9uCL5cwVX8OHJYw0TjXZ\n7QP2m2XESQYbOj9Op9XRgbMsiOIIHW26aIrSEK2TGVL8EGFvBdDY4rv1AXM9\n/nVuUnWoJP146j1VizriPVqZpiZ4QcRogOhphlMsmKlUEqmBF8lWuikGFRoD\n+3KF\r\n=1dwO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5Lq2uK87C6fqSEpWcdxA1zOoznMAHRamhn7pyQozlIQIhAKomtAcRYBr4CFUqmPs4+/M08n4hTjeOFSxGYzUMAfoy"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.3_1613586843254_0.0727405685918594"},"_hasShrinkwrap":false},"2.5.4":{"name":"use-state-validate","version":"2.5.4","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"f2b49ea51dc255d61d3804d92bcd7f9f78e0b6d1","_id":"use-state-validate@2.5.4","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-lZqP4RvqujXhEgIOawl8dFGicKy2lD3fjwgkOR/BegiQvzEXrWRDhfPtW8UdaoNm0ejRabkbup+kkK7mC+edhw==","shasum":"456a7aea661791e481eda6e3a974e25f2f7f6acd","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.4.tgz","fileCount":5,"unpackedSize":13991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLXQ9CRA9TVsSAnZWagAAFwgP/2DL6lpKrA7ukgfbv/xx\ngVqrdAvPG9rqqqJ+BTYPhpEZLSBQIIIcIx3iGEWq31eoC40X50hBWJFqCwFp\nR69qjLyNstkdDpj2rLVaxuSjkPG0/bef6BB8Wpu5oKkmZrWaBxWbaLRNAG1d\nwcZ7GowqPGmdPVwXXRLJJjtuFa/KyP3H01xbGasrIXqgO7G4+OaAbFdQMFK2\n5ZRvdmJCB+/WfS5LOVVlR5a7+ep/5golQhw2EJ8lC7F6a8/YbkyM/eplRywe\n1/L216NuflQu7ZcFt4xRRLKwqnaonpejEJIXnPa2tJtxg5EiC9srrQ3Jam4O\nBrsyOm/daZYKmqrZN9XErb3qPuzSrB0nbn0dFmA4YIzZMbLe5iP0PKK9awKD\nNwaRbtMfJhSydBMt+fV0TecHtYo52T4v9UlmyHUaoIYKovbRxsSXy39tW8R1\n8JwZsSIUnxwyqjl275V7dRjGGYU3JQoF4uOl9PKZXzs5UCucX6KxeBGlPquQ\nMAVISNDhd4CFxJnZ+OVyv7uxPQvm0i1Zt5O6jfzGHA80hTnvFXiZJUZk2CPa\npbHRgAZ050/x5mN8wSfrps7YJEd2fLvgQFYDjMEFo9mGsNPAKbd0dSEIuHIM\nmOnPxe609ZwnCGCsKnpswh2uF1gye6oDC0jMp1uEv2dxUsuhSXVhjSlZdDw8\nJiIw\r\n=20Y+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWEg9cR3aQrlkDjjWy4lOPsC0IA0AnFAaBLrSNfzsq0wIhANSFdunvIObai99TXF/2SDmPDl65P/n30kFkxCtP09Y1"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.4_1613591613219_0.18211662667473982"},"_hasShrinkwrap":false},"2.5.5":{"name":"use-state-validate","version":"2.5.5","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"7fc61d44d443ae52099a734570962fbecd34526e","_id":"use-state-validate@2.5.5","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-4S3QLyxl0O97aQ0/FSNctSZTH1h2OhoiteBKETtLWg6RF9q6w8vTOsaGG18aWTEbfuKaQDAkvAirvtIFyiFAtQ==","shasum":"7fe1900f01a20c6311a95eec792ba087c61adb13","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.5.tgz","fileCount":5,"unpackedSize":13982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVDSkCRA9TVsSAnZWagAAy6MP/1XxWhzonsdyznDX0Pj8\nd1v9I1V++vt0z2xF3DIdcbBidKcJQYaXJ/VcPxCvl+ivkf+QaMu/YrwGmyi4\nCDvcRSQf4s5o+2cqCJrwxtuhHm4fRq47CEjSplhl2omAbXb06rxRFwMuCCP0\nzsbC6bTEZrCUp2Gx9Jpvbr4Aps0IuudlN3iHZF78VOLXXPMEDdRT02fH3PGN\nMrY6bII3QXeruwDSYnnQeWxLeuCP0YWMg+iciqxSUvi20ZIIoOzzBND2gltC\nxBObktXgARc7Ol9pQf0kS3pFwHCK7CehJIOjGgFvN7kC9Ut0J8ucAIhpWL1l\ne4911bjjcXj+xXIwa/3XWcLieA5imebeCvpV+ht7j1qmORmz5Pr8OR9S/ALW\nW9sMPK6L0x17QvzbLrHUEZcG23iPaDnmqOyo8GIcHdoIVOlnk2iDWF38svsP\nBxTfML/9KR4sJRP2v35QYpo/TUcjKO9YO1kQ6zZB5yaDG23uFt7KRRLF+wpy\npO4vL1PNO+l0rOD6TydPU9s8bJtHrETE6Wu92jdue/RCjuUFMS1n9MajUjgo\nVfZTtJY/Ks/N2fNJcOv4xueT5iHFgFa1aCsXvMafNV3Yr4JEhDhCD0eXjC5o\n7yxDLrRpnm9rsUMidcldgpoIY8Tn3x7U7xbQbGVE27u3yW7gwPAzMemX+p+U\n6bGS\r\n=eyMS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHb/I/XmEpssfETrvzCdemqZqOqdHtAgx2QDdTP9mVYjAiEAwZJIUQ9UNQn6jJASyIOZWLbhr+tA55TA8lBiVrEwp6A="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.5_1616131236033_0.5971370582813171"},"_hasShrinkwrap":false},"2.5.6":{"name":"use-state-validate","version":"2.5.6","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"2010a50db976be737b94dd0432c9dd87006dabdf","_id":"use-state-validate@2.5.6","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-c6hcwKnudYAa0ecfFINgNa7gR4l7bpAFvEc5oCBVn5KtuYKPb+8ftaflARmuNwsNnPJLdqD8W36cVXARJvF9tA==","shasum":"bbb1d270f7861510e9af103ebc7d4e772da5bc0c","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.6.tgz","fileCount":5,"unpackedSize":14012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV/ElCRA9TVsSAnZWagAA3J4P/07JBn8t2eRKj5cKaFaS\na+Lzgtt/JiALmbnltyNich8O4XNy1jkJK3+ZDxu5VyrZkoxRvI0PmcWMNPfC\nL/ZaOZn9vuBHcedBPgGS3Vah2SCEogAGBKsbOjG02VMWJIE+YhjrJfy7G/v6\nKb1eO5uW3fsYq9oF5v2EN1pTwlsPvFccucDm5LPpL5Fyzgl4zt0rkIU/YFp8\nQsQ35/PiNiRzacvWvCc2Q+LyXTO0q5mvWsi37zouEGDgRxi51b2T1A31IZUN\nwz8RU30GN8cuwspISkAx0kPuvHM7NqvfE8jtbp8QnJOBSouRc2uJ/CHAUvm6\nYeWkpg/4rsOGM7C7NOXg0Oz1uEmjbCzGw0+2m3DodFHAUbfrJW56cnIudCrp\nMxNiMJQKs23PGySdtyP7CwNA521K3H2GGqMBmT7urSdRdkk6W/T1dN/CkTnV\nIPIWBjwV5EOsWdb/Bsh/2hhLSacoNZfKiStb/AkGUCDleHlEPvJgnai2j3dS\nAPfFlW+ZKNaXoW1RHSkpNydSkak/4b63mm8Qm+klUyhmxmwB9GtCGWEGqwWf\nk9x7nsM2tJWxOR12yofM8Z0hwQYQrPKKFarij0lxb9DwSPvipH1nN8dfcfsI\nLVB3aogb3J0I6TaOt7otHmOiE9V4fZq5q0AstXIrlAOHZWzHknOHZa1Ms6iC\n9xqB\r\n=bQv1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAeyWdV6Kxd4yBjWCiSi0g5RWrrbqxRM7R0ubMa/BEp9AiATy3NqtsLOXRuXKIthD7ARnmRGPdwn+kQeHbXG1PP6TA=="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.6_1616376101278_0.41109191494281183"},"_hasShrinkwrap":false},"2.5.7":{"name":"use-state-validate","version":"2.5.7","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"dependencies":{"tslib":"^2.0.1"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"d4ea39b54a8e776b49dcc2097bbb7f942dfee010","_id":"use-state-validate@2.5.7","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qz1ByLwm5M4awHNsGenHF6CfLXCc3+oYXOXgJRPoza7zjpcF+o/Bh67vGQ1SbiIgiPl4GWnw4tEI0tqC9+u29A==","shasum":"6f6b1d2bcd15cf85b6ce710097664bfe3f3e33d7","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.7.tgz","fileCount":5,"unpackedSize":14034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWYEtCRA9TVsSAnZWagAAb7EP/2qbIDLPg107pbZKC+3I\nBeCYXiVEt5WCneBXPrGHvDXbcPkZk7X/qCPhcPYRFthBW/GpYU38hS+TxpkB\nFUHLLKc+LBAPTybXoj4fNXQvbmOI5XgFTkwLW1f4Y6mgclOq/1Gx0DpYX56R\nyAuX5UKJY7GARR2tHpwQsTXD1y1Qj3j9Bu26JGD0uv0GIo29ItTuK818A9JV\nwzoHKyPGYjK3FWfPrZZVR4eN0jQq+9ggCJj6NC2HBquhjSINdkVLUb+Jhg5X\nZHUfVH+g7H2nEcXXIqc3C+W6wZ0Y1HZFvtCUikDLBCVS+GMAEzD86dVUlC6X\n/RSSKdVjvY5Hgp6niinKzWzljovxJUkI+1Bo+1mld1Bk1fmuqjcCmr7qsFV1\nRcmXdLld1A6M92Q5xjLUdOIlMau8y0lZ3LCMJRYY/IkfyokpWZxMJp+M2LOM\n4cAtvTlbC3O95noquU+i2c5jPhwxg/QsHyQPnOTUQynXkJYZXo4UcppxexCb\n8DwDLn4GaXxCRLw5+ZNwOeg3YUVnhMeuWCb1n3r+zJ27XdoABH5ePi2DWFlA\nyIyjjLgSuCfAY6e41Xr94hLb9WOkDy3CWQ8N5jt/V+Ve46txLk+rPlHMsKLS\n1P/bGd4MjSstb7UQf4UvHlkR9nOsV48urEBIR/Hdkq/h+Ll2kq8xPAY6tCFp\nsP7Q\r\n=tFQ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBv9gj3aqDbDGQniP4n2jkHB8yP+zkxCDiM8Ba+ES9wvAiBOJ7cz6VAvQvYfcqjvuP73V5bMeJZtMDyHGTQazydP6Q=="}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.7_1616478509077_0.7039050636071209"},"_hasShrinkwrap":false},"2.5.8":{"name":"use-state-validate","version":"2.5.8","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"0f678a6f9e17c85f39d497bf10ebbf6d1e51902f","_id":"use-state-validate@2.5.8","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-1foCJNIWH+VSeaeEo+gcaNG0VWqmJsxe17RVXT3/R0jTthyiyWcHBXRLe3YRy8Eo8QBPB36RYiBc6vXKtDMjxA==","shasum":"af480c0236d55662009ce8b6c5ff471bfc2bc39e","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.8.tgz","fileCount":5,"unpackedSize":14480,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDGw9C9CGO6l7ksZKrDM/PJU9uZR/TMtLbxObzkyui3AAiArO6uNS+UNzSUUIkS2fA1NjXeGemyq3nrj4icKZvDT/A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZfn8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocKA//W4KW6MT0P20Mm8Rwq2Y6PeQSQSpaA4NGmnmJ8drAhgnzpBdx\r\n7y+Kme/rY+8DmN0jc5ldGh++nEGmAenMbtR3IE+JnDe1A5YXwT7EymC3q171\r\nEG/8MoLRXkP/S5k3BpEaumm9/r1wq67kxNU/YR4Nq+an3gUxNo2FPm6A8ZSo\r\nfULp6eKNYDdBJ6IZ/wRkIDqDLs3uk67PvZvPn5GgHrbwv5DgxKORSRFh9xE4\r\nvVBwPEyhlEFClPd3QMRBCLQ2Q3ajb2uv1EWl+tMJXWSiXh6WBybUlhh4WizY\r\nqjob+bviNP9wqI41lydkABn1sqTX6ig830ctlnT0P+3mAjcNuTnzwYG9LogC\r\n+clMYvFUJLkjHlaPYncwjaR1JoEKi1CaPaxuumym39De534bBXMlXQuFONQi\r\nCx9uDADBo9DJ+0NotJhsrOzFp6Jptd+VnLrXXDl2OKKhXbSM4pL75FK1YdNV\r\nGjyokDiOvfRpP81jFsRsY+8r5WQjB37/Bd07yn0frpeW913RYUTsIijLKRY3\r\nWsc2jkaeZePv6F+tDwuBHCnygTSqciNDs1ui5NPzCgdy227g2pL4uzYbOKZv\r\n186e9ZydC97jOep/ATR9cEZGxGiFwJh6ZiWfazAFJ8x3i8pdQ4O2JIZYq0TS\r\nrNnctALqhtfyedoSBuKKPTEWOmpIn1Bf4E4=\r\n=GNEq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.8_1667627516272_0.5497398939989162"},"_hasShrinkwrap":false},"2.5.9":{"name":"use-state-validate","version":"2.5.9","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"gitHead":"db5065fbe0a4f0b993517779333f51bdcc00b45c","_id":"use-state-validate@2.5.9","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-Yhiu1gK8qFjfyQyGRbNsAevunJ/B82CCr9D3pOhCndstAX8/R8W/+F18oZ4mUnjTDSMjb1/8A/vMWxwCTtN0mw==","shasum":"3f3f6a5be29461201afcf79136974e78c923bc60","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.9.tgz","fileCount":5,"unpackedSize":14555,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVin8p1KUzwksXzETBIvJgE+EhPjjqX2on6RTC8Yh0EwIgZJWcpakncKy5iMNaS3lFTItUnBgDTrOtyv2yvMXU7mM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZgkIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCyBAAnFWcHpKM9gxlGJkRqgRwWbayRVOSsUyKsifaWVxjuqx7e6la\r\n6unV1NLJcFXqx9tseHWqNUlM3c+EETnU4kIIwjNPQhZXaBuwFADRKbwc+I63\r\nRSkIA/VaoZH51ctKlKtvvwmpsGCrcNPzI7ZzQhob8rOW7A3fSb1ZSHV9x/h1\r\nDTry91ye87NLEIjzwusSeXK9fMvxz2jWslzHGoh4PKpG1MmcOMYg2PIHIXsB\r\nz74wRy74ackDxwG6CyXgEZNkXSRbmt+1esCInbt4Ci4c4uSYubzc/14JaFRw\r\nyqncOVXgTCkBQkcKSHw5/9sWm4fUzcIw47AsibobqNkvAHuEAKm0+rbvsEzg\r\nHjXSWbYuVH2Vg9d68amJ3xoXWSKroqFBUSPjO8kPlYzDuwHsE8bfHHARmxXU\r\n/Pgg6DVSaK/qD+qoM+zAckzsDyi+lj1tQSIYWAy+LtrRaRnWxorP+M8Zf73Q\r\ntZNgwrrhz/aEOlEfsTmAPDy+DhEKQ6uZ8ZCla1qfKXsNlWIXCgQRkayYetRR\r\nDEeudT9EwjOukCykff5f9uNwgGFLMKq8SMf159Vtgti9BEv7gm0J6lf0rrom\r\ndlShmzNqeDdmEPo3/TrSgvzneDEXopS/71sVp7RvCkVantnzj3cgd4dFgT4k\r\na+Ok8C6Ha+5cx7T+FjexuWVl6atmsTwmnqc=\r\n=TY0w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.9_1667631368055_0.02882642894487364"},"_hasShrinkwrap":false},"2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3":{"name":"use-state-validate","version":"2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm run clean && npm run build:compile && sleep 2 && npm run build:minify","build:compile":"tsc --project tsconfig-prod.json","build:minify":"uglifyjs --compress --mangle --output ./dist/index.js -- ./dist/index.js","clean":"rm -rf dist _stage","stage":"npm run clean && ./cli/stage.sh","release:patch":" npm test && npm run build && npm login && npm version patch && npm publish","release:minor":" npm test && npm run build && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.0.2","@types/jest":"^26.0.13","@types/react":"^16.9.49","@typescript-eslint/eslint-plugin":"^4.0.1","@typescript-eslint/parser":"^4.0.1","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.0","eslint-plugin-jest":"^24.0.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","husky":"^4.3.8","jest":"^26.4.2","lint-staged":"^10.5.4","prettier":"^2.1.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2","uglify-js":"^3.10.3"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the\nvalidation of single state values in your form and does not try to handle all of the form logic.  My motivation was to\ncreate a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.isValid); // false\n```\n\n### Hook Signature\n\nconst [`<valWrap>`, `<setVal>`, `<cleanVal>`] = useStateValidate(`<initVal>`, `<rules>`)\n\n\n|                |      |\n| -------------- | ---- |\n| `valWrap` | An object containing the raw value and validation data, use `<valWrap>`.`value` to get the value |\n| `setVal`     | Set function, that behaves like `useState`. PLEASE PASS THE RAW VALUE HERE, not a wrapper like object! |\n| `cleanVal`   | Function to clean the dirty flag. The dirty flag defaults to false, but is set to true if `setVal` is invoked |\n| `initVal` | The initial value to start with   |\n| `rules`        | A mostly flat object using rules found at https://www.npmjs.com/package/validate |\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"isDirty\": false,\n  \"isRequired\": true,\n  \"isValid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"239f0c52e60f04f633e571be8b7136b6bc6fbc6d","_id":"use-state-validate@2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-NbU4YA2mXVAx2ofGyPJrznCpE0bBmkYhWHvYcNUlalvQsBXv+ZwD2mcD/KLVplmDD4wpP+wF6xgHaxpxIIEiKw==","shasum":"66294a530fbec983ed86c172454d6b48800827c9","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3.tgz","fileCount":5,"unpackedSize":13328,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJrFAQ4YiqCAcIZOv7ZK+OaQ5otsUfas1+k1AfyCqFYAiEAmpfzPKBzXU+qQWIzzGoexPB0BB4klTLnc70c/y0joLE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZuPyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjoQ/+KSRiplpr6uWszjG9LKa+cpHiT1YHhRC1sHxb2ucGkJ/XHvDZ\r\nntsyqjgfaVUqJ2kJKbvcCIaIOLzPRzTHc8iSvFo/ki0kUbj8B6ST6v48yFgK\r\nQPkgRlQ9js/i1rvgTu3Ce/FwAEGrHbSSTQZBHW4UpUs1KNUA4pm9cteSemtg\r\na6jlepdbHNZd0uEn5E95WyG6w+j7z4VvEcfEtHJgVOuCvuOJzTvUw8kwCk04\r\nR80t6FMkZrMLRWSHA6bKKJ4PszBP2oc6xFbVu0DGqJjNkLDwHCoK69OXNVrF\r\nh9AlA7y/n9vvyJAZNR46gVrk31+p28XNgc+DuhRxWxuIy5eafs7i56Ro1lqI\r\n0jdYqqeAuEBR/V2/SxsGZ0FaWrBg10H7Sj9RwO80h3WIYH8fsRV25F1kBDEl\r\nd15+orsMzzVLKb1hrbuc/7/lQ4EOcKCRED0o/D+P6EC/UesxQgYKbYz4KqYz\r\nnyCjGw/iS14arw4NEi7QljhWVSurWG3gBFPF8nbZEzRN3duIP8eAEl2HtSOi\r\nzrEh4qddJUfsV8Oj/vpNdXjfeOGaZMy11dQPiSZBN8iBU6shKiOJ6UcQkDpn\r\noTKgX2CrhCbKF582R586VvPO9YlIIyd51oy9bhwdWC9y0/9R5vZr2/9dQiBz\r\n8p2qjkAhW6aCecafcpi2CsXM1S1VRTEt+as=\r\n=VSSX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3_1667687410323_0.9290116620509867"},"_hasShrinkwrap":false},"3.0.0-alpha.0":{"name":"use-state-validate","version":"3.0.0-alpha.0","description":"Custom hook to account for state and validation off single state value","license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.isValid); // false\n```\n\n### Hook Signature\n\nconst [`<fieldStates>`, `<fieldActions>`] = useStateValidate(`<initVal>`, `<rules>`)\n\n`fieldStates` - An object wrapping the value and relevant flags\n* `value` - The actual value (think the first tuple in setState)\n* `name` - The name configured in the rules object, handy for applying to input labels.\n* `isDirty` - (Default: false) - Flag for a field change\n* `isRequired` - (Default: false) - Flag taken from the rules object, can be useful for annotating field objects.\n* `isValid` - true if the value passes the rule object's validation, false if it does not\n* `errors` - a string array of messages corresponding to failed validation rules.\n\n`fieldActions` - An object wrapping the value and relevant flags\n* `setValue` - Sets the value, marks the field as dirty, applies validation rules and causes a re-render (via setState)\n* `setClean` - Manually marks the field as clean and causes a re-render (via setState)\n* `setDirty` - Manually marks the field as dirty and causes a re-render (via setState)\n\n\n\n\n|                 |      |\n| --------------- | ---- |\n| `fieldStates`   | An object containing the raw value and validation data, use `<valWrap>`.`value` to get the value |\n| `fieldActions`  | Set function, that behaves like `useState`. PLEASE PASS THE RAW VALUE HERE, not a wrapper like object! |\n| `cleanVal`      | Function to clean the dirty flag. The dirty flag defaults to false, but is set to true if `setVal` is invoked |\n| `initVal`       | The initial value to start with   |\n| `rules`         | A mostly flat object using rules outlined in this readme |\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"isDirty\": false,\n  \"isRequired\": true,\n  \"isValid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"f081d170ba26ea70fca45c1004afcf29b5645ffe","_id":"use-state-validate@3.0.0-alpha.0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-rE276elLmvLc1l0xYvWyY+9RuNhh3lf83nO93sRATONErLCthR0yYfldeNHgFOh5aDHsjBRRXG5l5vd8D5BUcA==","shasum":"827719145050e2bb7ad52df816ad4a6ed4cccd2b","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.0.tgz","fileCount":4,"unpackedSize":12225,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyZWlHWg3OsZl9qREANiJ/G0w2z2u2KZ3An/xRrRZj7QIgc+LELCyp0onQRg9FeCG8yqoVU6a4MwX+WSydziSsoJA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbREmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdLw//W7SzgmBvow2yFHuUHzkaWGRvkmzsfyQPaq+aejvCfo1J58x1\r\n1F2mL5OEM13YFyMg+lGXwXS/LtCF4c7USH7m3Wzgi/CD03FDLlzwEPxxxPSh\r\nq/zBH6uyROAVIpJ+RIHmmfMo1DHiRyHuCUaUSLA1usaOQ+24w9pAUpxmuCAs\r\n6ClpUsB9YlvacjaHxboArUyiaz6zXUYxVcSKSzvsmXArv1rjMSpCgjlQOC+x\r\ncSFZLcXT1DsHLhdJ3xt8T3LyY4BD+Rz513e6w8x2U6fQv05sRrNRLOgwv/0V\r\nMnP662ZnmYk755akhd4MNdupbOejpGEkRzoWKfq0ds/ZYW6JhzYX6HRGY4oe\r\nA4c61BMZp2dVd61AZmw78LQUKuHEuxO5bqlXX9T7izNWvqX0EX5v01a5crnO\r\n2jg7GQlk8ZQcD+SRKhz7RJbaMHSY7ryq3inzJ19QEKpL3m3x4jNZDld/Jy02\r\ny+q5b1PWgODn72b1KgVyL6arznfpfn1jMhrUQ1Jdz81tGqpTTECQyRSfpnl+\r\nDNmZGX+JVAigiEqzRxjTjYSfpD0CizfPQTcYLaEx9Y1YFfRJ+CJas83GdovE\r\nhH3BJawIg+nzMBsYjh7YFHNf6Sjm0E1KkDEiS2Ku45JiT3B1LO68mSjMlUKc\r\nhKirN9m4W6OHwiQooHzXlBqpS58+XcnH4t4=\r\n=3IFm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.0_1668092197837_0.6852705014951701"},"_hasShrinkwrap":false},"3.0.0-alpha.1":{"name":"use-state-validate","version":"3.0.0-alpha.1","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"b1c9b8e863df7da6a9c3d06447c34c6c2281a200","_id":"use-state-validate@3.0.0-alpha.1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-IPae+A7byiaDY4qAwMv4ElqYC9w1WEs6weePvBNSC0+7fOfMt/cL9pz+ldmkQngecrVWhb143VZFNCW7vdSPtA==","shasum":"1476ee8b9ea79a96cbea49eab00a35d73c809022","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.1.tgz","fileCount":4,"unpackedSize":12267,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+kpvAq48Zx55ozS39MZzfgB3tNPuNMH0fhyk7Ap395gIhAKmH+olQhAKBUcaPEI2TgPiTK8dla5d++FfySGzOHVKO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcDmBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1/Q/8D1Mb9YLGh6ky72yF5j2bqrGvkk00C2MuBNkw5uKxLB94xs2o\r\n7fntMifgiDeAufrrrSqhUH8SNqMiv+ws+l95yLKxjAVFsoyRM40UXoHKmudi\r\nnQeAY31j33hNQr1U4+YPkPK0f8goVYWrf2rq0hebIqZk4HHmsmwgLCzWJ/r/\r\nZ3nHaBR0hJ9jEA31q8D6VG6PjhnGX+ERLgq2u3sLIaPgOQ26UDO7JXEb3H4Q\r\nr4hdP/h/FP9aiaaD1yYr3sC/t0e543W1s8K3o8Rl2aOW9XLrVl7NQV+ZftLu\r\nhg1hij5tkxFSyuUKRfMZageeVDcVO/yj+6eGiqht0X0gxgP8iC3soN4iDpni\r\nF7Y4k4JDfwkH6fUFO+ioBJATn4DU+qAaQSVZePaAP9XrpkJNtjYcdz6OjrAm\r\nO+t26mhTOELl20yPfLqWxPtmvt2nuBYHK/vv57lWF6zRioiMWyq2WMUCFtMt\r\nR9K6XbZgkkQXU9gNrSBgGxdrWhyW0e/rKjOPunIebreD/xBPkiIevdGE1CTH\r\nvSy5/vvoetL9rSseeFxkTU6RXiKundmS0QPdgh+46jLYPXrX7yFYsUfLeMIS\r\n79jY7tXUFIA4/GYLcw+2SrFZBywVC0u1yltD9R12s37ru/Y1f82UzixVuJ3a\r\nkZY3smaCaEvFp5yCMPfZS0r2jZRit3voQYY=\r\n=obR6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.1_1668299137313_0.36459811565262856"},"_hasShrinkwrap":false},"3.0.0-alpha.5":{"name":"use-state-validate","version":"3.0.0-alpha.5","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"ecbbcb664cff85670a73b09f50c0f5e02fcdcacd","_id":"use-state-validate@3.0.0-alpha.5","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-PJe3MjrSBeUqExQeFylA6fsSJqfYQYtyP6VV/Jep8O1kQBUonrS2p/znHJ/sCHTyINXv73grUH+WN8R5sEmpSg==","shasum":"108cd5f0de62781715a5d8ca46978f7a586627e4","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.5.tgz","fileCount":4,"unpackedSize":13768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPXGD/JE2u/e20itxyOplC2ku8uI2zriDcXL2XoL9z4QIhANNH7+NmcffNhyKU4U7f1kPADC2kuuwvL45tiVNxblW0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc8hdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmojzA//S+jENDUF+B0MxcxD4b1v/SopneVo2Jy1TD+HUjOnJz0yWBlI\r\npN68IG6Qcxjk95HBgPLSy+attH3ZBJcUoq6Hd3Sc+E+285yi2A7DjJER4s/4\r\n933bZ55YxLIH98ghlr97AS0e3jZ4dkhuZkfL8btrJkyk5Vss/3+RF2X5QQYm\r\nOsh1xuWK5bahc5gvMR5mvZBAODNqARhSFhyaqim3BtgnQx8PkCuuYKQlSlfS\r\nbEyn5b7CTtYVpS34K0ExMK6KlfkiqT7XBn5Al/hZWBwBve2a2zrXk+qiQeMs\r\nIeL0XqaUrDAH3+8TjzyhQuYRp7FOaoOhArcM/46kdRkd74iAzcaoTrfkIMCe\r\n2kXgGMl/RO+SO7FJ1dGp2MNa3wHR7S6647QDTfxy/1Gg6/L+ju1+FPA+9C7H\r\nyyewH3U5ZBS46MKERABUwAlG5kL72n4POqYXy2C8ajZB7Avhuy2fOw6WvA6z\r\nEueZ50qyA6FLN46pwKzix5fZSorQKNG6uY0bOAsawkB/6BfgZlzvt3X5BPKc\r\nVCz1fBw1Ks5OYG21xWpCZfS3DBm0SLoO/1TyqOVCgDZGQj2xGUB85T/txRea\r\nmLr7Ys6GjDhOHhw6J4zqqHdLi1yQLruHtPPT3IEVg5SEm8rRBX3sNBqyg5gq\r\nMSa1HTolLEiQFqMyLAZQQiDe24Q/GcNXs9I=\r\n=xFyi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.5_1668532317578_0.14934788388396925"},"_hasShrinkwrap":false},"3.0.0-alpha.6":{"name":"use-state-validate","version":"3.0.0-alpha.6","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"74e4aa7dcc3645fdb32fd5f4a9ad89b5db0f422a","_id":"use-state-validate@3.0.0-alpha.6","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-k0swV7qDYYCsBDAHcJbdudzSgWRXtTAjoy4efbsqWu+mHIGMbvF4bQmP5LitTV1v+9w1Gx05Awt5OGiHdG4V6w==","shasum":"64794c74738a72aadd4392aae47901b9a96d3f0f","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.6.tgz","fileCount":4,"unpackedSize":14371,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIz0j+SzOsdY0NGvSZSPhHNpIjJ/8tF/ZQoVrPh6jOJAiEAmLevgNX+kTwoT77GvR1SuwblGblnBrISbgawE+AhA/s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc87wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGSA//QpNtdUXtyUd6wrFGwmNHDbSdN7+3lJI60dLV6m+AZj8PiJ1m\r\noSIHGLsWSfANNLrZH6QxwI9m43QZmYMFap0qtTLmvY0R1yue5AomCcEsidhC\r\n3P2wuBOkBBat8f/NkbecH5jX9YqH7BW2w9Ngzlf0Nl4dAOogItK3/4A0jbvj\r\np9K1p7PMXTrPT+U4scPNPNs+JianymlaIxhq7BpgV5AHAaEnAmrMYNkiKID2\r\njvUmtKkH8M4Vs8l3GNvO5aHnpTP0lmSbeSflAuNQD8l1glaV43yVSaxC5N+L\r\nqhx5VURz/J++JOl3hipAdBMKzgeLi3Ij581/xKYW19FPeN5e05Hn5TkMA6p7\r\nQLYIzQKmzEhydacumU8L3Esk4WdMyiUf+flPW++nsv9agsmrqB0cYuo2yNDY\r\nCKkY5t78D5/aORGWno2tOO5vUVFyJfg0skH8ZVWvayRJMi8sxMTXysOuMyN/\r\nH7KWCSDY/bE71CELjq+vpzuF43Y08uWwuZeikYoY9kRcUSt4h6FSL7Up+Bih\r\n1XOwvx/Hk/skJlijtctACG9zTF4jvBwrmwpRnDm74UNtiGYUMryLjW/nEY9n\r\n9zPbrt1hSs5M4ua8No++BgerpjUBjXka7xzncrqPXe9vTq4piAC2i7BED1ZY\r\nTJw84e/hyOJ4qMcCF59XYAax0856bzrnjvU=\r\n=RYiK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.6_1668534000748_0.22201690386219552"},"_hasShrinkwrap":false},"3.0.0-alpha.7":{"name":"use-state-validate","version":"3.0.0-alpha.7","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.d.ts","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"99e72be40d5c90cd82ce961017e77c064a5837d4","_id":"use-state-validate@3.0.0-alpha.7","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-HgGKbYQ2Y0Mbtll00cuSQdGCjUjMpKkU/rxhg5ZTcxq1ffBosHAOrtNA5+oolXepag+qaQsJkOr3w0TNH9Pt6g==","shasum":"211d9332143bc8a99854bc797a658ceb6c1c4b20","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.7.tgz","fileCount":3,"unpackedSize":12311,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAwXoxmLv3BB4syvdo+J3xW69RyIhMTbZMCQRj9agzM1AiAq1GWBfuegxFKO0m697f5ii9BCuTFx5hNxo1Vz9tvDsA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9PIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqS0A//RzfnX89ng5ejjvnjQLgVdzaGVGPgwlhaqk88P3hayvo72l1b\r\nv5Ys9xHWDJimqeDogSqEDIuLjtznLcrk01IqCVsCiv4tR4d02pKYEufZYv5A\r\nzNjggv6DQRTPTsjSrAK/R/jBVUfFIbrS+Jf2fph/2Dfcnh9NxwVtJDHytFY2\r\nC/amAr2fuv6iRN2aSiFuGsMVp4npnPx11u0qSFpookIDkMgTykwRVtbOctg8\r\nIpwC0e8S0Tu43j0jHui3Gn8SKsVVuHZnLY9FSKKa5HHDE5RCG/HM4qRVlHUH\r\nCLNqyXjHE7GdErfGhu72IyhMWK5lOWCYF3JN005FW9Oc5hZefVaDS5Ijj7za\r\nK/UfWss3PLgMJ+HR5bX+ydYulOEjYT42t/yKYanaFRRWOFnCYRyfU6IBweI7\r\ntgtwzLUfwliwr3nsW8Jg5SOXxwLkw41EV5Okbse1K249QM3lhleD+4S1/n0U\r\nJh9oFBuZEl8eciRbQ8V+Vz4sahmMXji1xdRFFlr9ELEJ3Ghf9xhpcVfZ06UO\r\nwd2RkeayasfcfltJKf+wzlY9VzCgyLK+CksCyfBQksUQdSBRGZSui9qyA7u+\r\nMC9xYzdvixAZSTkQmfeJtnTroppavXC2I1I1LoLCySv3AEblTXUlVkeqBM3N\r\n45MvXai4uGuQYoAPT2TUZr5IizeHpKRPyNw=\r\n=4uCU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.7_1668535240362_0.6381560529253409"},"_hasShrinkwrap":false},"3.0.0-alpha.8":{"name":"use-state-validate","version":"3.0.0-alpha.8","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"99e72be40d5c90cd82ce961017e77c064a5837d4","_id":"use-state-validate@3.0.0-alpha.8","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-tYu98UWu475tXacrqmzCL04JsDIY6saltyjtQ/Jsp5vIHyEEvdK4iMqOrTNQf/k+UM6ekq9s9UspxgVGi/EDlg==","shasum":"22c0129aeffd085cbcb3d08eb73df12e7be95a33","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.8.tgz","fileCount":3,"unpackedSize":12278,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCW/IItmwn8a/m36JPqSQXENF8WwKu70o1hqMKsllpuogIgKCM5G/AJFWlTi2zADP5Kuc+QQdID0osSKXCbzZvGXgc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9UIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYoA/8CjbqRWPJYPyYEwcfHACT3V0YoEHk1BcTIigOs4kIbXjYGkeM\r\nlp9D/wG1J34pOUohOFpDkSV5a2co8J62hKcdqmb2BOP1OFlBpaNZHWT8tDI0\r\nc4obLh8wEPrMdBLi5POBTFiutA3jl04cgTEHn2lB3zrl2qPw7jUd+uavL9ux\r\nvZunvWIWli+4+euWT3x8tuh6v1dI/1UFT2WrrAV6OOddE3jKDmBKH5pIT2sh\r\n60mDA/2+BWScTcrCZqjkZyV6mjsC+BEV6zWJ623HN9WSl7rYtqYtJtsvhLh0\r\nQH6aqvPDLaYfDj01h/X71tGYRL5z8SFOcrUQDMBj0GhEue1yjICXcieo5NPn\r\n/0VO5Wr9V+qbPIo3kMr33qjOguDiaBJeB31O/XLImbNmNhZ6MLdlHkkVW74B\r\n0g19r0xIPk65VGgxd7GZ6s9AiwiyWHyIxqOm4NLOYLmxlvP7dUYGmR/DDIcK\r\nIry47rodNH4h/G3oINaDad2fU2cNEsJXTKM+23d3FCXV6X7CiJL2s2dn+OnW\r\nAIrBR6T1J2o8uyjSnIYQBzg1+XsNFvzjS0uk3YjY0Zts3/+OYXlciRkCeXCc\r\nPSRxMWDH2gxSrgmkmuJZ3vXFNS4xVBN05r7LF50Cz3zq+nTFS6fxt1g0GXxN\r\n4crQeD3iV1vZQQLa9rE6dvEPhVQPHgsxdGc=\r\n=EkS9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.8_1668535560442_0.31169726483196913"},"_hasShrinkwrap":false},"3.0.0-alpha.9":{"name":"use-state-validate","version":"3.0.0-alpha.9","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/cjs/index.d.ts","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"99e72be40d5c90cd82ce961017e77c064a5837d4","_id":"use-state-validate@3.0.0-alpha.9","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-5lIB9dLbDqIyvgEvGNvvQLUs9Gz3RNhgbTBC4ukkEZDnwJ7+ho3d0oHziYhaAlzmFRpQH18qUIxpNl9EyjEYaw==","shasum":"1b2f9229ea0288efc5dedf7a33970e5547702dfa","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.9.tgz","fileCount":3,"unpackedSize":12311,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCprtzjuM6v1XTr/Yx4QSDbEj3rNZfvRvnj+e0WsmSdgQIgT9hBoBqjjtn8JO5ltYsn+G5w9xQP2bym7+teqxMvk1o="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9awACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmopmg//ZZua7QinUljqzf7m06ahvzg+XUPEtAzt0V4uLzQlI76w8QQu\r\nTDHJXIUN8peJSF4gIEAsdaTfv+rDKGS7tgnV8XEp/4WfLphiszoKgYt0o45+\r\nRY6noesxStjrGW42ghbf9ctlp/8jbXgUWoLwGEbxNJoGyKNtAFzyV+Ntazyw\r\nrK8sm2MtZ9196oCI3KGtjZnB/lgbsctReUAM9rKp5RggwRxldav8ePwNnLjI\r\nan5l752ujDB6Fncuz87dwZ5LScDpFZoMArNwmEc4RymUivFFM/1jX5JbX/RN\r\ngI8nzNcMbX5WUon1BtlNLCoH56AuPu7UKZQ/GjteveOEIHQ7680SFO+HoSDT\r\n/wDIWJ1MtSfCsipBrWIzvjdtwGQG7KvBiKgnVh1UGaB0KsGXeElTO0bymgda\r\n2IkHpnqkNdjxc57c0wPPag+TwXAgo2K7ro6oplDCTXK/ZjQEKq5RzHk7t6ru\r\nKj1K/R3gmGwgKKjtTKk+MOC9Y+4Q0qJFOoAunpXOa20JjY4WIXTUN1VZPuHl\r\nT4XRAjErWrfX2FP2ZFUShF+a0qjocgS/RqtzwyqD632s6RrKQ13NaZW0yMpM\r\ncuEqkzxkBujPtgzORjm/D1or21MLXjf0aIRMS95iCWxBTSgKRZUXyfRG7CVj\r\nb20nTfJzTnb6aq3np6tOHxYOarDTRGZrkIA=\r\n=99bT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.9_1668535984508_0.6778275868159829"},"_hasShrinkwrap":false},"3.0.0-alpha.10":{"name":"use-state-validate","version":"3.0.0-alpha.10","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"99e72be40d5c90cd82ce961017e77c064a5837d4","_id":"use-state-validate@3.0.0-alpha.10","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-8eokXMCSFT5u2XsX/ttTGoajc4GKZgI2dL9EDcQM8aNKano4RGc2R4DKYoxjBHBtrJdOgMOwGNspyIGHGdr+dQ==","shasum":"0c3ee2b5e317d2f6429401207d50ee917034caa0","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.10.tgz","fileCount":7,"unpackedSize":18572,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXtmYhgxTiO6fgXBGrAsATRzKNkCOPnBCQX0V7SRVh6QIhANI9eRnPqd4u41Qv9X7kq4Jy6k4C/mnESd2grb6Rqidl"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9cLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNIg//XMwfWS73VyNIV6hN8GiKoMeXOdllHKf1YLlxKWgv3HxM6RRH\r\nyRJvxEKngl3ALjO08xye7MzI9K+X9fRFgquF7KLUyYB3KjeuPc13C5V97/Ok\r\nH0ZGp3ZkNPieoKHfl+6tBR0c4TlGlPBuXgjXgNT3wH9CZr2IkuNDZ24xy25T\r\ntDrW4ZQnaQhv1htkCh4HFbO2bBR/qfMeZfl8u5IRDu2NOxgPNs2ReH5R2Nqc\r\nEDpaWfA97WQCrMmTJ9E/xGAwP4Ch9s0c7Vz/ZFzUk5jDKR+gbcIVXKr8CF/+\r\nGQDkiUxK3h2a4mtPM6tR0fZqyW5l8om/j8odfG13qQRhwzBgUFMRpSyiNcoe\r\nmbqQsVmU0RHLuj5LiAnEfmw/fDyEhGjNeMSuqVh7JFLcwTnYLlRDG0rmLB6h\r\not1w22T1RE2uTEniDsb82ZzYYl+1TuZollrQX4i+1Yohws8Bqmlzt5hlXDIQ\r\nEaO/orMXpWHR1DmjFLhTTecbVF7tscp+TxYtY2UVMAXX+WtVsYQmq6g8FzZg\r\nrMWt8DUT6X7buEsWbyk4Zkdrwauuyi6V+XDtGvz91+taFhzQJacxsagnhAO2\r\nx55da9b91x3cHxuybYrZ4fBkzZQWGg5ql5wwvkhntEoWHqer8Nb7uJQOwig3\r\nC0EzJQQp7TMNT8opTGaTFLqWPeO3eVCUZcs=\r\n=DT5+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.10_1668536075531_0.6816020365511115"},"_hasShrinkwrap":false},"3.0.0-alpha.11":{"name":"use-state-validate","version":"3.0.0-alpha.11","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"99e72be40d5c90cd82ce961017e77c064a5837d4","_id":"use-state-validate@3.0.0-alpha.11","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-OjxFi3wXsE5mI4tX3jdfzU+KwA2TpoW5upEcefsVVcoCkz+nTvQ2iWMBJnel0JBJxvAvziq+Yc5ZEy8xm8xuIg==","shasum":"68558d6e2abede74b8e596b996b3a1cf3a2db318","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.11.tgz","fileCount":8,"unpackedSize":18593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaQ9Vg1+BtQAL/ZuMjMXOdzJ7Vgk7YHTjwLxIKkdBqOwIhAMWDZ5wTXudGMOnVQ+oAlpWgUBYm9siZvA2xgm1xuCRR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9c/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkTw/+INblE9IGcRtNnr7SYscpntKpuytGfvfcsOiMD90NQrlt7Aru\r\nPJL80JNqBo0wRxqosX3A9QduEeqDnetTWe2uBT4O+A+VAFW8PFciCODMG3hL\r\nbwUqP279Sl8IVXdzWlqncpr74q74JkJArt/ryFHeieAlv0EZ13V2TTe9p5vY\r\nTYmuDUq5K5vqSXitssof5Y/KssJJjILtHLjz7KZdjk0TzVojzVIXV9qBVPPH\r\n1rr/4CiIfO4DbKRwTXDAitEcUPWY1qgbDz4MN7zExZo7gWy6RwMgFR4LQ7T7\r\nbEUNB4bQlDldCWk353a/QOoM6Rbum2d+BCFBGiCyYldqCwG70nC5IwyA1l0/\r\n8M8q6D7fhwXGNRSOY9MT35Gn8B4FJrEEScoYBoTELaokAiFb0BLfRZWS+pAJ\r\nsUxxworPiq/jKfTjnpVg8mCfCdkOvxKoCnmhsM8yq8Vrue9PSA1HBAoijl3v\r\nIYi3t8c2MLNhxvOi45HwcF2CjKyIiuxTdavUGt4jrn6AQvfI13W0PTzWRUGP\r\nssRlpFdmyCj8gIo05zv1t7ronQYxuf1viar7AcJ0eomfBaM0aZHPOZL2dgeQ\r\nz72ajL3sze5v/ayr+cH8SuoQ0/jv5G2ryB7Bj45fBP/Jemkzu/73OBAWRnW8\r\nb8VpOKwtEpRizGh7773cKUPMCmoa6wi4fTI=\r\n=53xu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.11_1668536126947_0.5471634226628472"},"_hasShrinkwrap":false},"3.0.0-alpha.12":{"name":"use-state-validate","version":"3.0.0-alpha.12","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"65ad2b05a20ca60d15480631b6e2a3e1b82ac6df","_id":"use-state-validate@3.0.0-alpha.12","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ZIZLy2EpXKTs/iS3XjJ38Or0f/IkHxW0jFGJOWxuTng4YrQ6nDMkbKkFfZRL+HoHTlPDmecSh7znsW2J2BEGJg==","shasum":"92c659d2e56909a8bbd57414b8143c3ffbf95e02","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.12.tgz","fileCount":8,"unpackedSize":18593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKjSECu00aqdmwNqvLltCYinW8jzNpHAFHOjKqWGg64AIgETLDJfjsINXmsYDzBfAqaxzNKBJX6RJ62O0ApqAYjRA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9wXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXRw/+KaFV4o8VwaBbhKjV0YDzQwsmcKKjCMZHUmL3jV0+ekqFuixn\r\nyP32qsqOKhu+U1wrJeQV6XgBGp6F+4cByWqe3n6grggquQHtNl1A6IX+r/1A\r\nElSG2v2Ybq+9ABGIZs4kJu3uBiJxAYjkerqrEMhoSPa4avlcwrD3kyl/LsHn\r\n9MjodOdO/VgvH15+GIJwmUBsGl6Ejv+QOa5U6bPiWPp6DNfnEEa409HMKkKy\r\nJvwlMGHYbE/mOgRTt3Kpu8JD6t3gqcZWlShdBm5gseRcaIVwOCumL62G7yIf\r\n9Xe5WJxZQiIp15p69QZu1sWEs/JTTizk2w5zeGCBro/e0Y3mBh/flgwGmDD/\r\n8iiSmpO6BvHosizByHO9vS/uXTY1M5/1kmL+U1/r0HPAjz2lXp2+NqbjR5xM\r\nPakPgmEixb3xgryV1qfDLdqubvAyCQYmEFyVMIcRgSz/WugwTN0g42lSWQk9\r\n2Scyc6SWiAc1f6+y/DXs3mkyVKcZjURrQe2AzesDJ6wR3qlJjiQtkeT0qiMy\r\n+83FMKhMlgowkQunUs5Q3Ox2zc4er3nkGwmEIH4bOHvnBFBvu53Zfa2P3Nay\r\nKFjbBeFdU8w5IFR3ePVv3NvCMf2CrR76vh0Trj9Gl7lAnVeL2BtdyL7Cbu7k\r\nxf8J+DDIdNBYeEwsCpk5CNKaeU4Z8iEALdI=\r\n=N9Fm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.12_1668537366765_0.1558461094458905"},"_hasShrinkwrap":false},"3.0.0-alpha.13":{"name":"use-state-validate","version":"3.0.0-alpha.13","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"65ad2b05a20ca60d15480631b6e2a3e1b82ac6df","_id":"use-state-validate@3.0.0-alpha.13","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-L9yeCLvhPQE17bcnFDkZs8C/hMtsL2Zt4ZScjUMRZhuYPW312jLmzFMU3GqZE4m07wKx8jHobCuIxrgGIHhTRw==","shasum":"7f89599ebaa39fce4ebdff680ad472a04fe251d4","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.13.tgz","fileCount":8,"unpackedSize":18583,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0bIwplnwLowv21HIJHg9RY87ZgYrd2dXmPR+/3qZJqAIhAIeY6F+LpYkmokTUkpImlbPEvUVxBnakoTKLPPzoJV+C"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9y4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrs+xAAoK9cVjJKUaCbCnLalXm2SKi487C+vD/NqGHn5/3a9Eupy7QK\r\nYqt03ArvDCgTnWaGAJ6eBkDCGJK12s7XrwxsA4064tTXnME145LGno9nBpro\r\noc3PtnLEtCxKTrZAFllSvO7YK5zpzpEBG498bpBnkQ7xCfL/Sn5Aqhx2noJD\r\n00S3RsO/E39Fd3IwhPWQfLo+AMAwD7G/ANeRkrgYFlLbE2AtvRhglDRxY8Mm\r\nB0ilXvFaFff9aNcA8LwkGMhS+0IzwVUT/5L7oSWYAF/HOI5geXbtAzXdRD66\r\n9qpxAunVkrJdmzIthuwcCDsgJ9n1hidTTPoh6kRtDSsJMiZrmufd3WdRuf0m\r\nUxvXcKhmlmkgkPYNnj93LyPpkQNZLbBhP3ZgCy4YwgpRFPCIXhcwyvZCW7yj\r\ncVKpu8GoOlCuOipxh2t3H1U/fZ5a7z0T5QBHkncKX2IyWpshz4OIRh4wvqMc\r\nYNs6W5BQqCT+1qvRbaUFTgR32NQuS0H6s0UyzEUPmN63w23mBK/lMx41wNAN\r\nIQd1iK0eE/kqrHRDrUQd0REYWkBCbduFofa4n8SlYG3xhJK0ZWr/n5Z1TxNy\r\nlITS3FHTw991Ft+LTItKdimhjy9npUyo3F5JdFsdYzPYq5jSpAjoxHAv9AXM\r\n3BYP9IuSCpUA1IeEN1QHYbemUGjUdmoCZ+0=\r\n=KCDF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.13_1668537528564_0.44006539244141174"},"_hasShrinkwrap":false},"3.0.0-alpha.14":{"name":"use-state-validate","version":"3.0.0-alpha.14","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"65ad2b05a20ca60d15480631b6e2a3e1b82ac6df","_id":"use-state-validate@3.0.0-alpha.14","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-hszNjB0YfYOrxY0cgPFUCZIRTA57z/sy6QZanKAChKKbkTJO+K4AqXC+Zxw16/9bsH08W+ZSjTvgP47lnbwEWA==","shasum":"3d87934c846d1ee4dad88552cd6f3c329326f6bb","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.14.tgz","fileCount":8,"unpackedSize":18979,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFjjhVPOLHP6fYKojEo448zhXCZ+robkfMx/wTMGA9MrAiEAr1MeQ0uxpqNh1RG18U1U3Li5BskftP6qacWjS/6VopE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc99qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDTA/+J2FieE4+ayRrtV9apkCtKU9FIqozuFzlpggU9+CHO8K9HVfD\r\nZNxqT35sbYFVlRLuFBdxpvJTDoSstrdzV0MSwWd+qA5V/K12vCMgV2uQ4t8O\r\nWzaM2Ddh1qCVNR9UsFhxz8yrGKuq6+z9xM87u6xDUsbqkEVpYYquTxa8wcTJ\r\nVHKomqZdOf8KMwicKyiMq71T5ZB0JaUVY6Pi9UZpgMZSgtVQfmThprvsZoHY\r\nyJnJj2MUUi8bAYxQRwmJoNwhJDZADm7udAUAmwqLxUn0ZNVYS9F5xbuOp90Y\r\nHxz0F9eqPIY3limemy9M8I97l+RNSrcA2fyj40sgYv3Q6LSbcv0GH5hUCeGT\r\nKjvBoLCmkQznywcZkiUd1x3+bY0LLIx+S2Y1x39BWuhqDCmy3pWCCzYbWhfL\r\nWeJn1D9bOULYb8pavXw+46eZFYwcHa/5SoDlJi0WBuYXY/V5mSiTDqgMAf58\r\n/mOqQWqw5EwfU44ld9NoA8pOHlFDo7YOLWNafs8J8gEETrf1j8lv0edKr0dZ\r\nQW4MPAWsdt7MVVFpwTLj8QFiwPHbzS7u/rz1DndOKLusbJX5Gp3oWl3FuCPU\r\n9FVRER6abagzBH7TjaYQq4EG8fl9n2ts4w8JxjUm5thSR6uwCcjWsz5gLuDJ\r\nXKxvA53X0Zse8mnhIgJN/hNvfJYrQ+Uz2j4=\r\n=Xt1p\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.14_1668538218393_0.8434815749762723"},"_hasShrinkwrap":false},"3.0.0-alpha.15":{"name":"use-state-validate","version":"3.0.0-alpha.15","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"types":"./lib/cjs/index.d.ts","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"65ad2b05a20ca60d15480631b6e2a3e1b82ac6df","_id":"use-state-validate@3.0.0-alpha.15","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-wZKaIrlMGaPRvCewUp6AM7N/dkDo1moBqkZtKx8lUzM/NZBkc4pZN/9KMwTENSN//8Q8Jw9E7+bIxZN+Ij/2vg==","shasum":"bb9b27d494d8be646a5f4c51b9360ca1203adca3","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.15.tgz","fileCount":8,"unpackedSize":18947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdoJEmNV/ZG2XOxfb0XPC9eu/yvA5vWIOhP2hY01oHzQIgZyqBC5bNnAFf/9RY/95ueSgMMRHUCtLT352dcSdyk3k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc9/yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmon7RAAli2+bMyHmB9NMq7icU4kD8iWiYPN53wu2MyiXcrm2UrlLm/V\r\n1EvtzRtziWqtK/bAsU8zaJVwPxhe6hsrHbkQZejlhlKnjdWXepcUkXUG3eZO\r\nNCugotTv1S9tI4ZL8h1u4rIvSqqJIGP32e43JKVIjpC0vtVdC/DKWgc1h/5F\r\nuzukPbrBZ5L6u2OI1b9T+OaMMl1F6TfFMh2G1TmEckmhMZFMoDaz3FTwlrFk\r\n2yfjQJzGfAcEpUXmQxsE1mnM5YEDWgvMCTMZ5H4+IgsE4aO89h+1AfSVDZaG\r\nvw4VQPslRo4CO7OqHNAj2q+w+NZnPPdceR2Q1Ln5cuxYwTVcDEwpPUj+SCmW\r\nNSFDANBYdWUFZyizt9DsEzPz6Loy29G8IxtS0EoWecV4qwQrbjQx4dXlDAyM\r\nQfmb71us+GC+73fOC/w7XH1GqKGZlksdLwqLLm3VZwX0t0T321VRZR4mlMeV\r\nlngkp+YdzhegpxtcgICVlfi5S8AVPsXfE6SruOgolMlfr0iHLAdjzjo3hNFA\r\nh+VuIifC4Lu8xR+PVGARMaLePnOlyKRB7DnnU/muCcgv3hHYgS4/XEsIcCXh\r\nfWQQe9ILSdq3+BJs1qRgr6Q7BCuuS+y5JFe/OwIe7HAb0DHHtzZkYykEg0hr\r\neIhGqnowXb21vHqNG28Sa/bAWG7FxrvuETE=\r\n=+7v6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.15_1668538354564_0.17172934141046614"},"_hasShrinkwrap":false},"3.0.0-alpha.16":{"name":"use-state-validate","version":"3.0.0-alpha.16","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate --save\n```\n\n``` js\n  import useStateValidate from 'use-state-validate';\n  // or\n  const useStateValidate = require('use-state-validate');\n```\n\n## Summary\nThis package contains a custom hook that blends `useState` and field validation. `useStateValidate` is focused on the validation of single state values in your form and does not try to handle all of the form logic.  My motivation was to create a clean and terse pattern for dealing with state validation in react.  There are MANY libraries and packages out there, but none have resonated with me just yet.  So here we are...  Enjoy and I hope this helps you in your next project. Please reach out to me or throw an issue on my gitlab if you have any troubles 😀\n\n### Code\n\n``` js\nimport useStateValidate from \"use-state-validate\";\n\nconst [nameV, setName, cleanName] = useStateValidate(\"Tim\", {\n  required: true\n  message: {\n    required: \"A name is required\"\n  }\n});\nconsole.log(nameV.value); // Tim\nconsole.log(nameV.valid); // false\n```\n\n### Hook Signature\n\nconst `fieldObject` = useStateValidate(`initialState`, `ruleObject`)\n\n`fieldObject` - An object wrapping the value and relevant flags\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a fields validity based on the provided rules.\n* `label` - Label from the rules object that is projected out, useful for adding to input labels.\n* `valid` - Flagged as true when valid and false when invalid. This is the absolute truth regarding a fields validity based on the provided rules.\n* `cue` - (Default: false) - A flag for cueing your users to fix validation errors. Use in conjunction with valid to display error states to users. The aim is gently remind your users to correct mistakes after they are made instead of prematurely yelling at them when data entry is in progress.\n* `cueInvalid` - A convenience alias for the expression cue && !valid. In plain terms: the field is invalid and user should be messaged when this flag is true. Use this for error display logic. The flag cueInvalid can also be thought of as computed and cannot be directly modified like cue.\n* `dirty` - (Default: false) - Flagged as true when the field is modified via the setValue() function. Some libraries use a pristine flag, dirty is the negation of pristine and can be used in the same capacity. Extra bytes are not spent in creating an alias on this one. cue is preferred for error presentation logic. The dirty flag's role is to track whether or not a field was modified.\n* `required` - (Default: false) - Flag from the rules object that is projected back out, useful for visually annotating that fields are \"required\".\n* `errors` - A string array of error messages that resulted from validation failures. Use errors[0] to grab the first error message.\n* `setValue` - Modifies the field's value. Analogous to setState().\n(via setState)\n* `setClean` - Marks the field as cued or not cued. Updates the value of cue.\n* `setDirty` - Marks the field as dirty or not dirty. Updates the value of dirty.\n\n\n`rulesObject` - An object with rule configuration options\n* `value` - Flagged as true when valid and false when invalid.  This is the absolute truth regarding a \n\n\n\n### Rule Examples\n```\n{\n  \"required\": true,\n  \"size\": { \"min\": 8, \"max\": 255 },\n  \"message\": {\n    \"required\": \"Your field is required please\",\n    \"size\": \"Use between 8 and 255 characters please\"\n  }\n}\n\n{\n  \"match\": /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,\n  \"message\": {\n    \"match\": \"Pass my crazy regex!\"\n  }\n}\n```\n\n### Illustration of `valueWrapped`, showing the validation wrapper object\n``` js\n{\n  \"value\": \"value of field\",\n  \"name\": \"label given to wrapper\",\n  \"dirty\": false,\n  \"required\": true,\n  \"valid\": false,\n  \"type\": \"string\",\n  \"errors\": [\n    \"Error Message 1\",\n    \"Error Message 2\"\n  ]\n}\n```\n\n### Basic Usage\n\n``` js\nimport React from \"react\";\nimport useStateValidate from \"use-state-validate\";\n\nconst Component: React.FC = () => {\n  const [nameV, setName, cleanName] = useStateValidate(\"Ray Finkle\", {\n    required: true\n    match: /[a-zA-Z ]/\n    message: {\n      required: \"You must enter a name!\",\n      match: \"Please use only letters\",\n    }\n  });\n  return (\n    <section>\n      <label> Name:\n        <span>{nameV.value}</span>\n      </label>\n      <hr />\n      <input value={nameV.value} onChange={(evt) => setName(evt.target.value)}/>\n      <button onClick={cleanName}>Clean it</button>\n      <hr />\n      <div> ⬇️ Show Me the Data! ⬇️ </div>\n      <pre>{JSON.stringify(nameV, null, 2)}</pre>\n    </section>\n  );\n};\n```\n\n## Rules\n\n### Required\nValidation requires a value, `undefined`, `null`, and `\"\"` will cause validation to fail. \n```js\n{\n  required: true\n  message: {\n    required: \"You must enter a name!\",\n  }\n}\n```\n\n### Length\nValidation requires values to match the provided type.\n```js\n{\n  length: { min: 3, max: 10 }\n  message: {\n    length: \"You must enter a value between 3 and 10 characters long!\",\n  }\n}\n```\n\n### Enum\nValidation requires value to match a provided enum.\n```js\n{\n  enum: [\"apple\", \"banana\", \"orange\"]\n  message: {\n    enum: \"Your value must be an apple, banana or orange !\",\n  }\n}\n```\n\n### Match\nValidation requires values to match the provided regex.\n```js\n{\n  match: /[A-Za-z0-9]/\n  message: {\n    match: \"You must enter an alphanumeric value!\",\n  }\n}\n```\n### Function / Fn\nValidation requires values to match the provided regex.\n```js\n{\n  function: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    function: \"The function wants blue!\",\n  }\n}\n```\nor...\n```js\n{\n  fn: (value) => {\n    value === \"blue\"\n  }\n  message: {\n    fn: \"The function wants blue!\",\n  }\n}\n```\n\n### Changelog\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"65ad2b05a20ca60d15480631b6e2a3e1b82ac6df","_id":"use-state-validate@3.0.0-alpha.16","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-r+0nUymgCNDLK6MNwsr2WFv5oKb3N67p+iFZKCS6tuAp8TMnN51w1m8Sr0bxchXUsNeEkC23qbMLao6X0JA5HA==","shasum":"ed1973ab5f5091e60d801942f20ef536be91fe7e","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.16.tgz","fileCount":8,"unpackedSize":18978,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLTwhRkxC2qgTvJnD0AEKka/wUCp690vvdTS1Jd6j/xgIgCQbWnJJwxJmgWB2MyORfGvMaFHg5oeHsf1oiFxwnf0Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdDuoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUYhAAnA9hPaf3tWa8Je/c5Ivk5ujILPmJp2n66mrv2tsS+8wtPlmz\r\nT0xypJ8C1J4/9kmCkcQEpFCwG7tzLBTpjz3KS1xsDzOi0/z584ds7sq1gtT9\r\nEnVWBp4YwlJnwIIbGxMVM2baWLPEdvyJfhl5T/vjzEYO0lnW2ji4ov2sOOEX\r\nUkFSBcXjLtscKGElBXV5Sn76xgIEDUwEufer+izr6V1a7322JfwNgXVegJAB\r\nOOq3c74LFQPIXkkSFdz9vvVLjbQcDDdrKa6a+i4opuCdCGLRwqZVqhU5Hx3Z\r\n9jTng5Q2ofdgJvkrNLsWlNTwN60Lyzk3wxNLzSIcIFpFBoCwZnIwXXyk2Uhg\r\neI35qeCDW5Ejm02gcQUYomqJgTbOYyJzvhr8nSqgCqKR1roOcXTrIjwqpUwJ\r\n65nSHRQW17dKP1n0HupaY2utzQ32U48oBwlAVbq8t+664PRdXGo9kTmHFHBP\r\nIlJT2mZrg3Zfm7MkUbfE70d/oZaF46+2Fa5KDpHihtP7kgGjWb7mHV9HukXM\r\n7LyvvKNIHSjXplXTrRBgpz2MQTvMpG1HHprqKltlP26vbAVGsQZRcplv3H/D\r\nzXnPjwIsvHrhmCSX8QjJVD5xPGUIK/sbClgiPVKhy2VVGo08oPuhYxAEXSyM\r\nJgbR9wHe7JPh+tCrD6C+oF51weh6tFejlsk=\r\n=RvNz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.16_1668561831894_0.20419477749647075"},"_hasShrinkwrap":false},"3.0.0-alpha.17":{"name":"use-state-validate","version":"3.0.0-alpha.17","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"3278ce33ecc9912f5d0010c92a8e139f2cee6759","_id":"use-state-validate@3.0.0-alpha.17","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-h1IZj5TDeYtIUk09M4XvQGFvxH0W9hzCcx/0va17S7Yxf9+xp27ciLuxeUXjELl624rC5eUaBSeiKB640QER1Q==","shasum":"a4aec26743312d6e51138ddd29d225ca1be1bf3a","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.17.tgz","fileCount":8,"unpackedSize":13965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAVI5LGNsv3TkJKBvKbFz/2iwpyYdXeftE/eSf+6rnSXAiA4oY1tbOgbYSE1Kby+UAqydgqfac04I0Txnk5sUZWWTw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeBorACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnDhAAhOGE5OW759KN1N/RiHmlG51GQuocDdWhSCKLygx/0o1HXzLQ\r\n7JHLj7bZtF0XEzW00lUJPJqLfDRYoTZC8ADjThwOnSZ38QvyLmhJFz+B4WpM\r\ndfL6RN+vjfK29vlFBvx9nWFl86aQFOWsU8AYM1FnlTYoTgriyzu8KwqSivm2\r\neU/2nammHWnSXq/ZkxTfrSy3312WDops5d0iYv2UE/5vQSt8TIJr6zcGDJW6\r\n09OQwc9vbp6EDB5LRQVemf+dM7u7bwOd0yxfhmCTZXgH3dsLvn0CoiZd/hV1\r\nlsgsVtAawoKfpbNeqEQFtsRovWx57fnczU7aJNiYwhvDndJ0OcYQckyIhHjM\r\nmpUQeTqvVI4oddD8SVo+Gdwt/L74veiDnmJd8avyMvhJj4h6g+Q8HdhvGmgO\r\ncna2IYMO7OIYR2r+OMshjVWBPn2d59CUHKN3Lww2+Tgi0QBB0AHeqHcKE76Q\r\npBlxDQnW3rMbsJPt6z7i714iljXF/JZsmR0XijqFIJJSseRyxcuOGzt1ftb8\r\nChqSZyu5Jbtn0RMMq/DaV08Uoy9m0qqJB4FFrpLTrSXdt8P6ew+0p2sl3Kji\r\nMQWkl+Ynxw4db1MBip9z9e9g95vgU4xAlH/IdQsNXICzpQrKa8vb9FAc+nEi\r\nFSIvPG51gHB+wlxbkxpiMUGyqLb3kMqMYO0=\r\n=8l5J\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.17_1668815403657_0.22720641403774677"},"_hasShrinkwrap":false},"3.0.0-alpha.18":{"name":"use-state-validate","version":"3.0.0-alpha.18","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"3278ce33ecc9912f5d0010c92a8e139f2cee6759","_id":"use-state-validate@3.0.0-alpha.18","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-xttu/hnP1RJvCoH3S4p5yXSuWCkISFsDtzego7rZATdu/rNCspABW32zSG36/YTthIOu8cUAZIno/Cd8AoHq4A==","shasum":"124356ee6679b67af2695579dd93bc4255e893a9","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.18.tgz","fileCount":8,"unpackedSize":13965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ44XI//TedmQxdJ2j2e6h24cddAh5EC2imdzDAxM0fQIhAPqTssXvBuqM9aBCoc5awslnSGoh+knpaRG3NHd6+x1V"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeCAfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqo4Q/7Bo8KtULXDlaPoEf0brw/0gLo3QuyjWRwYvZq/R0Jr7V/5NHZ\r\nyb0Ix/w+26m9FJMnaYKrvLgQgyga6q6BvMT0KQOVYLwaBmbtgPhD6S2dgMQL\r\nD/aLtzMNgcILUh4XaDUDD0yXg0TQEe+AP50bV1CqoJmNTUnt19c3ETq+QqBr\r\nXdwWr9psKECl3qJdUiihmswHozPX2K/I7q6L2N+I2ccH2W2mz8mSw0GbXN2J\r\nYYq88yWt8QbPNL5y/fMsdHKgifvGGxipOyzZcYVnzjTaOL+lo2/RH4b4HAn2\r\n7tk+6Ib7IQM2PNo6FQy2g8GZfsjMbbjI/ajgB4HlQjaHFSWiEKG8PrtusFH6\r\npfPQt7c4Cem2JE2eB45mg8u3LX+lCFAAaDPvpMXN/Jk7JxWjiRFtUeZUjoMw\r\nM/55TBlTffVxntGVVvjq/kf5uKlruOZIEec7ZWtue/jF1pYjSt0pDe/jHBCT\r\nhcF+h74BQLKhUKFvqTLEObPdmIEBNv+95kywqrlbcQINdaccc07W40hUM5fq\r\nbWuHtOqLlByJTgtQDZPN2QUMwEYhuBOUMlHifIbFje4NA6KDAy19se3ox+4A\r\nAQbzuJT96Kb7Rh0RB036kDSmQ98NVQLjXu8S8gWAPqb+bXmuw1kxk+xD9C9+\r\nCjz7ce6X17YbQcKYylG6MQ85O1BcEr/9fkQ=\r\n=W9y0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.18_1668816927274_0.29237995528697147"},"_hasShrinkwrap":false},"3.0.0-alpha.19":{"name":"use-state-validate","version":"3.0.0-alpha.19","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\nnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"3278ce33ecc9912f5d0010c92a8e139f2cee6759","_id":"use-state-validate@3.0.0-alpha.19","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ABvDnO2cSLKPP4/RucR3V1yH/9Xqmql1z5tQrJ3dd68q/aKshcqHVii6aB+hdn15C+KRF+v+DOKDjE8M/+GZeg==","shasum":"61209cdb0decb534645df6804340a722cfad174f","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.19.tgz","fileCount":8,"unpackedSize":13753,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNRY2eNdgT8CWnxwbptQHK+0/8l6lbyrK2dq/lTX64TwIhANUGCaK4tgYC+tAyjHrjz8p0fXF+8redO5PlJzG4y0DD"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeCErACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmquDg/9GTPNhP/aUCjAls+rj9Ys2qo7tg2aerMRSBZP3vXgjdcE+OZ2\r\nR4iWTZoRw3pfzN08gu/VuvPl12FkTgBSfRNf+uppxekSWVjhfzSUW0fJwrph\r\nBW7tKMli7aq9g+t7C8kI3IJgoRkdzmwKVUmmoFO2wX7XeiyVcYMKvCHu0xk0\r\nsqsQ6b/30eyMGMYkR4FomxwJDj5q76nlY62mJ1MWUuOc9olAG2xwxkF2JOMs\r\nIk6xxhPoY8s3hrxRMIeNatt+xB+vl7uqyH6U3uZHXH644o1AQWdq3KnJti8D\r\nxx7HPInH6QzE8i8sboK8+xYsqo0N7wijjhBvYWKzq56xUqvcv/5ZREsWgvE4\r\nOI50rqLkb0iNaOtXnrIaohye8A8SxFXd44s3ifcI3nE7QrJtCYj7SJSnR3B8\r\nXYAtp6sfx5E3dvE8VlrvHi+U/OZTDmEHHKggH97/4JASMaNaJu+Y4RnWmHzN\r\n5uNoaiFWhEnyJPWOmJgfu1R+whXoe1tnMrnPV2uYNG/rgTdZLtOIiDFESZRa\r\nlwQo1dzfgQsYhkCrf9ISenPBVNFRqtOUF+PrfHVCUMADtzcQAEFNQNDLcFy8\r\nlpR0U1uLRmIFAY77yPVZwgGCdCR5M/7q1dznOK2mMqV/Qauwtbi43XxZC9GC\r\nqZrI8WM0aKc6Dxr2qzTHpED9gKDbx1Iac4o=\r\n=EIj0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.19_1668817195656_0.5245256770473665"},"_hasShrinkwrap":false},"3.0.0-alpha.21":{"name":"use-state-validate","version":"3.0.0-alpha.21","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"e527196fab89426bd0734243b82e3d2847370789","_id":"use-state-validate@3.0.0-alpha.21","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-L5LdfH9fndp1gbxowymbOrKw3g0q8TmAEWp65tN+3BTX3NfLXMNWS8t8rOStwTenLgPnfsx+zfEJUnDsiZAVHg==","shasum":"3f1b9368229df6656c7e0c33b470671651158eb2","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.21.tgz","fileCount":8,"unpackedSize":14234,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSz12mDsApsD57HzWGo8Lw/tEz50I7j4X5FGkBbjSMRAiEAt7bk5kOdLv22gz4CYdn2+0ORJuUq4rFNu3Epfp5x1/0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkP0VdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9tQ/+IMxsfFtg0Ilff6bRWZGdyGJfxSRiZBRZacswQYarFOnSoWKA\r\nAG8mhc4s/m+h0vNQmQYCBmarx9VyYVK/ZKIPbzcukN7/tG+2EnSVrc/DKYGh\r\nasPQTn+V80eTRHWpp6ZcDXPh2Ltg33ZL4n6X/INoc9FsdUwy8F+CLHPKiWnN\r\noZqeA40DRj4bzjomJOolwqpUNmMlqIbKY0P0/33B2KgdNa5K/hOWVi5Zg1sO\r\nJcSLvBvSvCwuDJiKk9AvFfv/tJyW3AOCyXH/GBqLrz+FPT+B6wWcEhLh95Tn\r\nJJ4LNBO2jz7qcPMA7Rx2C5RZJqP8OsSN/rqFw9vKq5pi4eMMk6HXNgSS5JN7\r\nIyaZJFjuJcflze3c4XG9GSGAthYWymBxCYck4OoEC5nDXC48ZZoW1Lkj5rWL\r\nczpuEw57ZGgBkFvYWyrNkFak9cwM7+T4MKEBSu6Og4vBHzQ4iBoV+niohIF5\r\n/75zNK0xV7OxhRttGFuNPqfVy28RrM645urt0Dj35NRd/kFARnj3pR4SHMWI\r\nP/35V3p2YqcxnYxWEfLBPV/kxTxtj/Z26NIdialI6UlQrTcOQZMjlDXU63mk\r\njjx1WBVvtxnJYPWRnUuKw9qBGb/KpajDYJfEtrB73rzwohChczo0CB9zlTd4\r\nUSizBsNVwYcxy/96eB6yBB4IUeiNWHBmeM4=\r\n=uOI0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.21_1681868125198_0.8078948113246345"},"_hasShrinkwrap":false},"3.0.0-alpha.22":{"name":"use-state-validate","version":"3.0.0-alpha.22","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"e527196fab89426bd0734243b82e3d2847370789","_id":"use-state-validate@3.0.0-alpha.22","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-XRHVrPBIUZ52MMCuwUaADXo+rDeED3SxgzAGwbEZRA87OR5uOg123aVLpinAqJir8kR0CNobzlMEeRce7VeYfw==","shasum":"0c3cfab8b6a977dfb045e7569f6b477e7ff8c3f0","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.22.tgz","fileCount":8,"unpackedSize":14234,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYv6OPW69y0FIAa1ODEZGizOqb0YR6+VgYqOvHuX+ziwIgNHmWRXJEm3jP7UUDdubrlHs+gfRQhdhGRRS6vtY1S+Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkP0W7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqEPw//QLlef81Tbpt3ALXS5Soy+I1+6i/feeRiPln9sihjkAUvpt+L\r\nuuO8iThEw6O83tUu0rG1BOtAHwc9ysk2xl69uROfzukPExnsAC+KaR6RBpe2\r\nWQx06JIpe9g7Hjb4A2avhOcx5n7BB02I2/fQt3NC/hJ36L9ednmwdUB8k9MC\r\nDAc1HdZJyi3RerWvzODPvFNwXmOEHJ2MzI4sqUPCie3pBdXgqEQxks8xRhb3\r\n/l7zWOL6pexaE6HoBD5UeHT74k9iVmL7Uw0ubFzckJLUEM77UoS26QdjkoZ7\r\nzp8+1dBQhHSe1uYu+U02yyepBYAGpAv4Pd8cUTSUNrfCdB4PyBchDXj4IhqM\r\nzUXGzV9IIhpAKvcfka2ypyLc7EpcNSOLkr2why74uEC/yjlWf0kJ/nC9bNuL\r\nsqInxEWkA0tH0YTvAQDVGElUAilOe3RJDLXOYjBnelU3lrqwq/qRlKUc8Fu2\r\nnl5r0uP9hT3FyjuMQSyr5xO4Zoz0GR15i2keHOw6LkGWwaRNtEEiVrTzmSGo\r\nOEvaa0tUahyeBVY6u2U3BeptgkwMtx7ukCdiMo52ITPDgsUWJywVlaP2oLBM\r\nGRzxY/ZA3JoJsAzzQU8ELIKlUXWbh4fk1pS8i0x6M8F+7hQt6OqmN90wwEdQ\r\n8UMm1yiNzmyn+YiksTtQOQAk1Zyl/x58UGA=\r\n=vaEZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.22_1681868219332_0.7674779476054585"},"_hasShrinkwrap":false},"3.0.0-alpha.23":{"name":"use-state-validate","version":"3.0.0-alpha.23","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"718b752f5bd129b5c6df28d04b803a22ba8d4206","_id":"use-state-validate@3.0.0-alpha.23","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-c/plTnOFmIFzg6Lca33owdZ/8DAEWzCJOAbO+/KCgdQknCITyTMBgVH9MWnpYFAIeQxGJEb98ZTOi00KiHn8Gg==","shasum":"0990683debac68f7c62e5aa8c1651d8ca3bc3c42","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.23.tgz","fileCount":8,"unpackedSize":14218,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGRXFOQZAo7aQUafb6LkFEUxPH+4mSe1d4B2WPpgp11AiBSSrQcjYQzU+27YhL92qFNOxCiF873Z4xJCWodCusZBg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQBjaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkAw//WNbm/ZgXFbQVx9lXl2YAq6O5elQRmh72C7fQUpUfDYEDGJMp\r\nHi53TT0iI/+squKq9K7T61o6d5XygA5KD3j5veHn5D6bruC+3H9gjPWmAnXv\r\n/+NrtB4pYLU0qj9a5tC6oU9UQh7bpkQD1Cz8ehx164VQTx8r22DFuWUvh9b9\r\nZ8rpSmh/xUL067gZAx9PXTAcgYV2VdaEtXz5FjhVPV86yuCCB5BkWmJNRH0/\r\nEmQEhHnxry4jEBBG6/Jrku06uWcj72TlkyaPDVVplinSwfFSyRHzGFs/5QZq\r\nbB1ngitcHGsApBABz1sbfOCSEcBEmNnOHRvxElFzcP3EwAaQg95uu43AgLo3\r\ngO7dP+l5eIaVqyl0xFMaeDel3lY1tAxf86sxHRQm6YOSvorwCVs+hGP5eZF8\r\neOVVC5srdtJeSI82IF6et7BCmrQaNQaFUfvAyhZNzCMqM98heuidztWX4KKy\r\nVVJ9Q+i0ZQ1UblR0p1IDR+f7xY8ng3V8q6p0gnYa6Z06LSQ/iuwKGtCWeS+A\r\nztD8isu1Rnk56K24iCsnILgwNMn6V5jaFYEHXY5lRnObAbDK5Mh7KCVal/eC\r\nT/B74J3NPxKmI9TpUAtTU/AYsEo9BpzsV4AKLLNNh2BZSoRK8kK+eUkja369\r\ne+mndSJE+nqj4VBmlopKxpl27Bcpwjni0eE=\r\n=8YY1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.23_1681922265946_0.10137578688020876"},"_hasShrinkwrap":false},"3.0.0-alpha.24":{"name":"use-state-validate","version":"3.0.0-alpha.24","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\nDocs may be found here: https://tkil.gitlab.io/use-state-validate\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"e57a6b487ab768177c6c811b0e21dba99c35ba3b","_id":"use-state-validate@3.0.0-alpha.24","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-iakFI/R+mtyVgXI0XCO7vOY6eUdOpKVUGMDvRQN41zPlLQTil5emTZWybUfsWgyqfJb5aDeBItG5dOmfOLvz3A==","shasum":"ed59f82b611964be92669a4fc342f3dc6af6724d","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.24.tgz","fileCount":8,"unpackedSize":14218,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5gESA0228iKX8M+0LklO559/StOVAC7Ky9RBneJtDdAiEA3OhCtjbJN0OWUyLXPAl/CeXYvrferLgKfXOzw3MeatU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQGZDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoK9w/9HY59oAshcGU/O5dOs3ENDHPvcadoOMqbGeF8O8v8zFx3HkMg\r\nhgmt3HQfGRWm7O10ziWI1FNYGcRD0/V8vx82sICGBHxJEV3nv2YlAfQ91Or6\r\nmHfQp0leb438IIcYxfMuQbbEhZjv8wF1i0/ahorsBmf0Kjvi5/4s7T2JSRI9\r\nlIDoWije8PfthZz3uhWIimVH3a49oBgo5XvFokq6Jmosppyw1/zUrbU+R2Z7\r\nq5tU078Dm+KhLSZVsKkhKkTF3kJHpnYsERVjt+1/Ctm8FMLEA86vXTpx0cGb\r\nmXusdspHveJDbyjme47DPBVN5GKhQ+ThMwy7f4aHmI/aAGcFCcBRbLR6CGud\r\nX40eww4wY59V4f3+QakiNQTOl3ObmgIZZ+dx+MUh/EG9YzbbuzJtZPpWFq/6\r\n3VOSk2VDKs9l2/LqNIedOijmzAOaN0weuybHTnNIv7RdI1Gwz7/SbNfCjl6K\r\nlPWY4v3ZQpPOrI47FJm6bwrAeOU32Rc8s50MQ/nrO5m0D36jXRRBegMs3aoT\r\n7VkcjFlJWiDo7jY6bAkLdd8cNHRfuhlqDb8okxXTNfUt9fZ7mowi1UqdA7aM\r\nLXH0lioHwpxhuda5UmzTis7GTA9JNvJFt4QjWFuKHMeejmq4fRcK+h9Gi3Nm\r\nbgrgY/kgV21BTO/ZmFQCmhR7J7HeaSItwNY=\r\n=iHQq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.24_1681942083172_0.9944585148096345"},"_hasShrinkwrap":false},"3.0.0-alpha.25":{"name":"use-state-validate","version":"3.0.0-alpha.25","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n<br />\n\n## 📖 [Documentation](https://tkil.gitlab.io/use-state-validate) 📖\n\n<br />\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\n## Basic Use\n```js\nimport useStateValidate, { ruleEmail } from \"use-state-validate\"\n\nexport const SomeComponent = () => {\n  const field = useStateValidate(\"\", {\n    label: \"Email\",\n    required: true,\n    cueDelay: 0,\n    rules: [[ruleEmail(), \"Email must be in a valid format\"]],\n  })\n\n  return (\n      <form>\n        <label htmlFor=\"email\">Email</label>\n        <input\n          id=\"email\"\n          aria-invalid={field.cueInvalid || undefined}\n          value={field.value}\n          onChange={(e: any) => field.setValue(e.target.value)}\n        />\n        {field.cueInvalid && <div aria-live=\"polite\">{field.errors[0]}</div>}\n      </form>\n  )\n}\n```\n\n\nSee [Documentation](https://tkil.gitlab.io/use-state-validate) for full usage and API.\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md","gitHead":"21293d5e11f161f0774d917211b943076e890e7d","_id":"use-state-validate@3.0.0-alpha.25","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-B9Q9skDAxdTJNP3+bB93FqeUoy9OSnVsY+ZqPneieqXKhDw10ejcmgAlfasKcNqrlWE/MVm2CAqesm2KhuFQFw==","shasum":"d03a3dbaa774d4ba6cac57bfe832f225012efea6","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0-alpha.25.tgz","fileCount":8,"unpackedSize":14984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDSTlmHyKZlBQkU0uXZPo24mAm4xsfRuxmmb+d8FgXhwIgOdOJKLAM6GW1vXrXgt1rsmgNyjBm88WNw0pIzIlFYcw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQGqVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOSQ/+JpQMzTTpFFC6A8/RyXqLx4S8AhpMejUf4agYNLRnHClRpT4i\r\nCenKDyajAEENfM3Y0kDg3e1Ewvza2TOWl4D2xf2XdI+bEjGC9ERFhezhfXHs\r\n2cQOm9r/B7QXMpqxCIVl1u23MfegdR+7L2cke3QnEWI/SnymqVM/08p5DU2j\r\nFRl65LejNHy1BVppD6DHJYlQ56nP0Afpdf7zEVM2gR9j9J8oQnDrw6jSiQcJ\r\nTagF9j9p9UCHVKXUH1jLB2iZZU6Ff/Rz1Ztn9vZC4Kxa0CQnNzafymrUQ7kQ\r\nkj3XVoXXVmBG9mTNWpZqPkvEsZGWKrPam5iesIAr5u1H1a9xEt9koeQxy0Yu\r\nQHUAWRW5VKyTmr4UlkPI2cZU8kIjaZc0DITTJDdmQgD+SVBQILVYmt1qU1Bp\r\nKX/edsmxRzErl/4AnOfMXyF9j8TAZD2w3AbcpnMtHj36RWBu5MVtQOzJVE4M\r\nBEbMEdX2zOOKAOmlvs5L5cw3nAiXJHvO9qKtf46EUuB4dBAKqxOd/9+lW0jW\r\nBCwtzdoLaHtyaShiPs7tuaN2ylZhTpQdfqLdGjE/kSaVBBO7MR+8Yjqufbi6\r\nITBj7nGd1i9f9iCRaTEh74kSVRmcZkp+D5+CpE7Iik4q2mWvv94NOMcOFB8q\r\nqeU1wwuth6FkEvkvIhoQNY8Jgz8o0CFfn98=\r\n=QqzC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0-alpha.25_1681943189014_0.4105306557102466"},"_hasShrinkwrap":false},"3.0.0":{"name":"use-state-validate","version":"3.0.0","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"gitHead":"6129035cdbe6e3e55dff79bbcee6cf6f1f514dcf","_id":"use-state-validate@3.0.0","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ZCEyU1LqrPzKcn6q5+kcOv8yCSFQnRoW17dAUISsOjNDAbDdDNzhXUiKLtiBMMLIvbfPooMLoaDI2e5QbpTB0w==","shasum":"93b628f4d074fb2543078d5c15176f4db5c9c649","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.0.tgz","fileCount":8,"unpackedSize":14975,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA52BIEIVAPmdTABszN1xL3w+cZQAAgkwTuspW1u+hXXAiEAh9msX9/cbC64TpyOU55TpDIkymQfmALRMZmYnvxu89s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQG8XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVew/9G+yzWOjW5O8SdGlCdwgkD8MXGFNDX6O0CbVEYQXAW3CFhr4S\r\nDhnA9Zn+JaWtv2bOHI75Gw9EQMccTYRd2wRk+29/ce6FpY3fwzq3z+KdLl1B\r\n2ltbY+odd4W8fXAxa4pMpZ9eWJv6/nlSH7di0Jhm4vb6H6zVSkFYTY3VYCWT\r\nu1eAocwLUcOhePr3Byv1yvz1DUH/72YgCGx3QvmoVD0wXLgKmoyzRpxF+j+A\r\nkcBXpG9wBCrdwZDHccpIje4XZMo8hnyO+AzLRZDOJKhufiUfDgg8yd3eNc8c\r\n8qhCYuOwwvn+26z2pKi/IIPxdxAo9XN56M+Ofbl+bpfo54lDh17E3lsU5BLE\r\nT5IPOLutV8k9RfgyVYV7RyWtTdp2EHSyne9g1r8QIIJ6tGPEEMbAqWJOthpw\r\n78xMJK6pMGo1yhX+DiepiCobKhPnstCKoZ8szFD8HWRXKC8jmV5GBNn53dE7\r\nXu678SFnCH61umkeFu+nVFxp2xVTMzxm3KrBpg8Tvh5rGQICA9AHmO5E5fWc\r\nqo2Buyydnl/ITLl32MG72vLNuD8zh/IMh+rgaAoG+A1s80X2uUvjlh9G8ttI\r\n/ysD7hvaudg6bsM1GJ25gCEJ3ZG4WcITjvYnGnkt2OprwbY5xPEnXHcX6KZj\r\nHVYAmAjWp/1K1ZH9YVgvThyit6yJet+bhWI=\r\n=hBOO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.0_1681944343356_0.7668158609301359"},"_hasShrinkwrap":false},"3.0.1":{"name":"use-state-validate","version":"3.0.1","description":"Clean featherweight state validation","sideEffects":false,"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"main":"lib/cjs/index.js","module":"lib/mjs/index.js","types":"lib/mjs/index.js","exports":{".":{"import":"./lib/mjs/index.js","require":"./lib/cjs/index.js"},"./package.json":{"import":"./package.json","require":"./package.json"}},"scripts":{"build":"./ci/build.sh","clean":"rm -rf lib _stage","prep-pub_COMMENT":"// >[FIX]<: add test command","prep-pub":"npm run build && npm login","publish:alpha":"npm publish --tag alpha","publish:prepatch":"npm run prep-pub && npm version prepatch --preid alpha && npm publish --tag alpha","publish:premajor":"npm run prep-pub && npm version premajor --preid alpha && npm publish --tag alpha","release:patch":"npm run prep-pub && npm version patch && npm publish","release:minor":"npm run prep-pub && npm login && npm version minor && npm publish","prepublish":"npm run build","test":"jest"},"devDependencies":{"@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^8.0.1","@types/jest":"^26.0.24","@types/react":"^16.14.34","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","eslint":"^8.27.0","eslint-config-prettier":"^8.5.0","eslint-config-standard":"^17.0.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.4","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.1.1","eslint-plugin-standard":"^5.0.0","husky":"^4.3.8","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.7.1","react":"^16.14.0","react-dom":"^16.14.0","ts-jest":"^26.5.6","tslib":"^2.4.1","typescript":"^4.8.4","uglify-js":"^3.17.4"},"peerDependencies":{"react":">=16.8"},"gitHead":"82bcfc1bce13c01eb6c3b64be5c06e976b5419c0","_id":"use-state-validate@3.0.1","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-dl/6RYVvv8Mxk69/zv1KL1UeTN9Rdvk94KGomiq18QT5ENThLtpm9vfhEx7BGxzO5FhyjThiYHXIscgqsnaDfw==","shasum":"966539e466fa8a1133daa57a74d59ce17fbd6c58","tarball":"https://registry.npmjs.org/use-state-validate/-/use-state-validate-3.0.1.tgz","fileCount":8,"unpackedSize":15187,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdfmD5jDURQ0RIUU2Uw0NKaAgVor3P26+M8jafSkTUvQIhAL5FaHIiG/7CHgmYBUiFuqRlzsaL4/hqxFPrNOU2pS+p"}]},"_npmUser":{"name":"tkil","email":"tylerkilburn@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-state-validate_3.0.1_1692716090198_0.019166074132243027"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-04T23:23:55.847Z","0.0.0":"2020-09-04T23:23:55.982Z","modified":"2023-08-22T14:54:50.583Z","0.0.1":"2020-09-05T00:54:27.324Z","0.0.2":"2020-09-05T01:05:30.907Z","0.0.3":"2020-09-05T01:40:10.690Z","0.0.4":"2020-09-05T15:08:45.359Z","0.0.5":"2020-09-07T02:19:08.480Z","1.0.0":"2020-09-08T23:04:34.894Z","1.0.1":"2020-09-09T04:01:53.624Z","1.0.2":"2020-09-09T04:10:20.940Z","1.0.3":"2020-09-09T12:58:10.141Z","1.0.4":"2020-09-10T03:36:43.340Z","1.0.5":"2020-09-11T17:28:15.165Z","2.0.0":"2021-02-09T01:01:19.982Z","2.0.1":"2021-02-09T02:27:40.308Z","2.0.2":"2021-02-09T02:41:13.919Z","2.0.3":"2021-02-09T03:00:56.694Z","2.1.0":"2021-02-09T18:04:11.165Z","2.2.0":"2021-02-09T23:05:16.287Z","2.3.0":"2021-02-10T23:54:07.241Z","2.5.0":"2021-02-17T15:53:34.394Z","2.5.1":"2021-02-17T16:50:26.504Z","2.5.2":"2021-02-17T18:08:49.863Z","2.5.3":"2021-02-17T18:34:03.374Z","2.5.4":"2021-02-17T19:53:33.436Z","2.5.5":"2021-03-19T05:20:36.194Z","2.5.6":"2021-03-22T01:21:41.425Z","2.5.7":"2021-03-23T05:48:29.209Z","2.5.8":"2022-11-05T05:51:56.418Z","2.5.9":"2022-11-05T06:56:08.194Z","2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d":"2022-11-05T22:00:22.378Z","2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-2":"2022-11-05T22:02:32.714Z","2.5.9-snapshot-239f0c52e60f04f633e571be8b7136b6bc6fbc6d-3":"2022-11-05T22:30:10.468Z","2.5.10-alpha.0":"2022-11-10T14:56:02.426Z","3.0.0-alpha.0":"2022-11-10T14:56:38.022Z","3.0.0-alpha.1":"2022-11-13T00:25:37.489Z","3.0.0-alpha.2":"2022-11-15T15:39:54.559Z","3.0.0-alpha.3":"2022-11-15T15:41:30.964Z","3.0.0-alpha.4":"2022-11-15T16:48:27.529Z","3.0.0-alpha.5":"2022-11-15T17:11:57.743Z","3.0.0-alpha.6":"2022-11-15T17:40:00.933Z","3.0.0-alpha.7":"2022-11-15T18:00:40.509Z","3.0.0-alpha.8":"2022-11-15T18:06:00.597Z","3.0.0-alpha.9":"2022-11-15T18:13:04.714Z","3.0.0-alpha.10":"2022-11-15T18:14:35.662Z","3.0.0-alpha.11":"2022-11-15T18:15:27.111Z","3.0.0-alpha.12":"2022-11-15T18:36:07.042Z","3.0.0-alpha.13":"2022-11-15T18:38:48.751Z","3.0.0-alpha.14":"2022-11-15T18:50:18.571Z","3.0.0-alpha.15":"2022-11-15T18:52:34.797Z","3.0.0-alpha.16":"2022-11-16T01:23:52.112Z","3.0.0-alpha.17":"2022-11-18T23:50:03.814Z","3.0.0-alpha.18":"2022-11-19T00:15:27.508Z","3.0.0-alpha.19":"2022-11-19T00:19:55.809Z","3.0.1-alpha.0":"2023-04-19T01:32:09.559Z","3.0.0-alpha.20":"2023-04-19T01:33:52.001Z","3.0.0-alpha.21":"2023-04-19T01:35:25.347Z","3.0.0-alpha.22":"2023-04-19T01:36:59.517Z","3.0.0-alpha.23":"2023-04-19T16:37:46.105Z","3.0.0-alpha.24":"2023-04-19T22:08:03.344Z","3.0.0-alpha.25":"2023-04-19T22:26:29.193Z","3.0.0":"2023-04-19T22:45:43.599Z","3.0.1":"2023-08-22T14:54:50.385Z"},"maintainers":[{"name":"tkil","email":"tylerkilburn@gmail.com"}],"description":"Clean featherweight state validation","homepage":"https://gitlab.com/tkil/use-state-validate/-/blob/master/readme.md","keywords":["use-state-validate","validate","validation","use-state","react","hooks"],"repository":{"type":"git","url":"git+https://gitlab.com/tkil/use-state-validate.git"},"author":{"name":"Tyler Kilburn","email":"tylerkilburn@gmail.com"},"bugs":{"url":"https://gitlab.com/tkil/use-state-validate/issues"},"license":"MIT","readme":"# use-state-validate\n\n[![Version npm](https://img.shields.io/npm/v/use-state-validate.svg?style=flat-square)](https://www.npmjs.com/package/use-state-validate)\n\n[![NPM](https://nodei.co/npm/use-state-validate.png?downloads=true&downloadRank=true)](https://nodei.co/npm/use-state-validate/)\n\n#### Repo: https://gitlab.com/tkil/use-state-validate\n\n<br />\n\n## 📖 [Documentation](https://tkil.gitlab.io/use-state-validate) 📖\n\n<br />\n\n## Install\n``` bash\n# npm\nnpm install use-state-validate\n# yarn\nyarn add use-state-validate\n# pnpm\npnpm install use-state-validate\n```\n\n``` js\n  import useStateValidate from 'use-state-validate'; // ESM\n  // or\n  const useStateValidate = require('use-state-validate'); // CJS\n```\n\n## Summary\nThis package is a custom hook that extends useState to provide validation. <strong>use-state-validate</strong> is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.\n\n## Basic Use\n```js\nimport useStateValidate, { ruleEmail } from \"use-state-validate\"\n\nexport const SomeComponent = () => {\n  const field = useStateValidate(\"\", {\n    label: \"Email\",\n    required: true,\n    cueDelay: 0,\n    rules: [[ruleEmail(), \"Email must be in a valid format\"]],\n  })\n\n  return (\n      <form>\n        <label htmlFor=\"email\">Email</label>\n        <input\n          id=\"email\"\n          aria-invalid={field.cueInvalid || undefined}\n          value={field.value}\n          onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.setValue(e.target.value)}\n        />\n        {field.cueInvalid && <div aria-live=\"polite\">{field.errors[0]}</div>}\n      </form>\n  )\n}\n```\n\n\nSee [Documentation](https://tkil.gitlab.io/use-state-validate) for full usage and API.\n\nPackage size @ [Bundlephobia](https://bundlephobia.com/package/use-state-validate)\n\n### Changelog\n* v3.0.1 - Fixes ruleLength bug on min logic.\n* v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX.  Lib made leaner and more flexible.\n* v2.5.4 - Bugfix - required, message type\n* v2.5.1 - Bugfix\n* v2.4.0 - Adds name to IStateValidateRules and validation wrapper\n* v2.3.0 - Exposes IStateValidateRules\n* v2.2.0 - Adds types to rules object\n* v2.1.0 - Adds types to validation wrapper\n* v2.0.3 - React version bugfix\n* v2.0.0 - Drops 3rd party dep and this project does its own validation\n* v1.0.6 - No breaking changes, but departs from 3rd party dep\n* v1.0.5 - Fixes bug where clean used after set does not honor set's mutation\n* v1.0.1 - v1.0.4 - Readme updates - no code changes\n* v1.0.0 - Hook has been stable in projects, bumping to initial release\n* v0.0.x - Initial dev release - ASSUME UNSTABLE\n","readmeFilename":"README.md"}