{"_id":"@virtuslab/formts","_rev":"87-5e95165c057c67333d2022b9d371e301","name":"@virtuslab/formts","dist-tags":{"beta":"0.2.29-beta.1","latest":"1.0.1"},"versions":{"0.1.1":{"name":"@virtuslab/formts","version":"0.1.1","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.1","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"02f62b0b85ad5f29f16f50ec85e1e3818cfe766d","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.1.tgz","fileCount":142,"integrity":"sha512-EF9Fr766x+tjoyL1KLMoCvssdfI8fLJaBOFF9XppHznK0slaAWPY6cPlxJbGETLzwQOwE2DpLxRHhlwkWkgTPg==","signatures":[{"sig":"MEYCIQDC+EaCs/ZTEJJnSq/bIounIJfW7GzHtp3MC0k/gybDRgIhAKaBYlGSsW+SI6D93pezC+YoFTESZMvo4o1brHXDnW2Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":373270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfstw/CRA9TVsSAnZWagAAZdgP/RUvYIA2krgd+9is8fVZ\nx+g9j3mj4JK9x324/SES4qVM14Xn/VqS0XhrmBIugW6lCpMNVe+JjwJl1Qu9\nUBc0hwUkNDBc0/lQOPgdBsN2PE8WJ0o10xg9khDDcoCW6fz46Qe0DEx6C2Z6\n7/DHlBXZcRGsPOrXp4j68I8kvfDqpGM7Hqw3xNrjVOQalMxFUop6FL2GSiIf\nksB1r9tFtwYaK5FkmEQxa1+L7I1D5mk4SmjmAvhVEPf3Z+6HXWlN8mvwuWAL\nV0R4nM5l62plRgjRpj6UxUfcAGdc6cwwi5wq9s23USOh4WdN3tX8n/9YSHK2\nMsY5PXt3DM3WhQ4DSz19UcDYMLpxjgVo1+L57rpLm2Q161mO1hUgfmYkSKb0\n57tg4/nFftAnI85mhsHZPvWdNj8ErFMoJW7+7zqVXJ3G9Zy7+Df432Db9rj7\nJ8G98Q5eoVsnbxS+TNkKE+jcjRl3mIL3F/WWMbwKkzfXyZIxce4MBioHYfvh\ndyF4QCWNewGik9tTiMrp4TzQqgo1F342VERPS4Pj0SMroKOtejn+a+f+b8IU\nCpgWFXf+TxOHPFT2Lt53EKecD6+2KM/CNwGho5T7+CPq6WsgL7zzCJDfaQLk\nTqcwwEaQj2m46lckudt8o7zVhZhbfafoPaVgS0K4KpeAoZCL+YxhWG62zRIk\nhNOX\r\n=in0C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"d7545945990d546445ecc4ca90d8611a93cff304","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.1_1605557310716_0.4733762407570339","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@virtuslab/formts","version":"0.1.2","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.2","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"31c42daa98a94180af56e1fe9e174ac545ce5553","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.2.tgz","fileCount":154,"integrity":"sha512-H05YM+OjPraIwojvna2WuO4UElu8/Oe10kXFgAMgcqv6xqv1jCrgC9ewNFWGrvoO3rS7cdUQF1zP68LHXhysdA==","signatures":[{"sig":"MEUCIQDJlvm1ruYmAPDiz2qSXelxsVOWVO3Ko4X5TZs176m/cQIgM1FxaPHHptpnXs9v6TSKJXu102WItAZt8abYR3XL5II=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":410744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsujWCRA9TVsSAnZWagAA/NEP/jf28zbDyLBiNZ/dt0hK\nIyYNPwLNZ1IK4ILcuHBnEZqflSBUzoJAdfUJkWtlub+3Rfh096tBto1jeCkZ\nJhvjivqWWkTE4kh5fYzXvl5KAKOWPKrUiwCYy5spp0PMN61Ld5rOU+NEnUUF\n3Et+4blPf4H5ymuMNx+DNBFY7dAUecMypHfToExD0Cm6w3FUDJI+7kGDeeCV\nSbDTHkLPb4mXIQlDtfF25Ut7PMLqRKrIffY/UIiyMbNdIOVUysvckTkOmPJZ\naTsFxqV6ZGlPqKwjFvP6W1dJajwY4DcSxvDWOoNnw5x3kj9eH5wsqPVMUIMt\n/MTNArcZM9RhCSyp8UgoTD3cKfozGDt6rYGKTCShKzaYxDEP6wR1twXCyDBj\nmEnPMnNSXQFrEtXpQL99VGAYZ3W7R4VsGDxnExb5UsYnx8f0E/9KwhOPVSQs\n9MlTrBm2YA1EWiANmKSqYba1FX+haelE1sCmJf3QLLva+oDFdTR/RJBrugNk\n2pV7Ivf9eTALAy2AO71hLPfCPwuafk2BpBX6qtozb+LlGoNSSsI7OMzv1a/y\nMMn3aUy6orMaE+JyDg3yJBmuIb0NfvTDvn/VmBksohdogOw1deRi6WOhlyeH\nOX47c5U0XhHSDQYMtnsQcVFU5KPbTx2J++4tL+3yxDeGKr6trn6vkb/jWYf2\n3miU\r\n=JL3+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"04aeb2e304f1aa2187b21e01502259cf9df32988","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.2_1605560532960_0.7510579043791528","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@virtuslab/formts","version":"0.1.3","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.3","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"865940a9ddaaf6b16299fd63ba7de81e937a858b","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.3.tgz","fileCount":154,"integrity":"sha512-XNF475FPiAfhrhxu4AfH4PCwVGDWH38HpWQnSciWlVYD50In/BSR8rWNeEXjvSWvqJraTixzCTlC2IFrL38h2A==","signatures":[{"sig":"MEQCIDQ3uPAkeMF0stg+V0s0Q/vrEOOa2E99m0DcMXr+DDnGAiATxuLeeB1+tW7yUHxmbINZjZsUmaILhyTvuvzY5Nuy7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":410831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsunUCRA9TVsSAnZWagAAZUsQAITWo9Aj6GF66m0Dx6er\nXX6Pq1sgNgu6DHS6DXdGxyMbM2ozfa0TzDN/PlQIOGL4jhsvQTW8B6j2alFi\n+WISh4cm1gI2u/7S6+Cxjsz5RQKdHNCI0gkae21b8HTaCuPz8vGNuAjbWYEP\nXFs/+9RXRqbZFTOLHidJ02fkmjTM7pS3aiKIVLalZ8cg7ytrs4OMmp9b3+0w\nU8jjTg5w8WCuUTF2I3q3twaOPWLgaNnJ6O2wyw117DFlHbKuW3JlSa/wAjZj\nchNggPPll/vTiPxglod5gn7gV4F8c+BL7iFQ4IPsHjf52+49MHULPFuLJ1yL\nZBdq1AKlCqcafGd9eLT8N3y9Wl9wvHzojvVLnR17utRhxzqx9RQdBOriT6o7\nWJqhbXuTromUI8/Toz7ICKggtVvnKezNvZs1ANg9hJPZ1j9BZQ76niiYDV1Z\nKWG/AlvFwUjkuBC43MbATB49i2O9okme3UYJOPkL0i3W/LtTelcjB8au7F+U\ng+0EIwrlF0KUN/3YyTLwgJGf/9deAHHHlJxiWPXhI7KuiQl+1IrWXq7+6ffx\n8Q5tHdGhBF4nHyb2s9nDYbMSU4xQm3H0Q6s6mS4mGoMuNbf+o4qMuVrqB9dk\nHQFuRu5Rw5eXEmMhcnhXb9r/eLFzPgOxvRuxNvVF+DREu28flsOFWvD3+MnS\nialc\r\n=nTsl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"551ba0ee472130044f1ae6665de226ed9c4f5706","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.3_1605560788149_0.6046560802537215","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@virtuslab/formts","version":"0.1.4","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.4","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"3e1bacaf0012e5fbd28d61c641a395d0c8667d53","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.4.tgz","fileCount":154,"integrity":"sha512-a9iZZYeGqeqocvWbZgVkMS90biEQp2PWj11bDdmO5gMmHQrkB9BVS8jrqIGm4TfquWhZhnWQpAegb4bYEWkDrg==","signatures":[{"sig":"MEUCIBBRwM9IMCn10olSvz0YWi20DdNb9bbhRof+0tp8XZ0UAiEAom9JLbhNhr90v1Gl1iFyvz/NWelUVua/5kZLsWMhfeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":411140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsu5lCRA9TVsSAnZWagAAYc8QAITYjWzghuMSBD4F2TUD\nOdhm9ymj6lW7sWwvIAqs3TyPVx9IOLUk8jWVMj3v7CwuUEDZ90JE2c4FrwqR\nLEpWSLrd6yzJ/Fj3esUhwFy83xkPI3ix1tkdw26baUIZ2yBQZWo7dgC9dGPr\nN0XLyXcfwmtGmNqfUanZFmNgtUDcvL8vi9wsGtmgh3dhtdaUIXWcP1Yk5w+6\nKLS9HOCJU/TwXr99RfoczresSVLYeZF+u6/Eb5MK4o6JT8OvaVHTV36o2uKy\nko+6R+NVOM8XbkKglfqSHAE5l5mO3qayaawrg1PZJ1DToSOr7nDNXUmsOFNv\n00BVyp/XBjupHFLEipowhcxIY9kAvK08o8I0P4A3EC73yCFgGZXniZ92k+Hf\ndo3TEQUpvUOqlerm0gS/emCeIbUNQiaOj5tmilUdQYZnO4iO1HOf6GT/LSAi\n2S7ipZKz0+7OBDzIyBfVYlpjRMsNlliKx89VJcBZuuKWSPfL5bUgryUPEYyq\n6FtCO8jSlhJXdXJ4e0V1uwNV5ed/VerlekuXnpWMWw+Y4LKPwrSoO2YRWbLZ\nWbxbZOzBUWM7B7F25w3zEBeLjtr8rslPK93I4udsV3M4RJMCwTSn5EeQ1w1n\nK1QDnozCZCMJYxBwYUqv904DPwwbnoYXt7IqO0G7DCXzcBHth3PLYJGkKeEu\nFikY\r\n=oiA7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"37e66086abc6dbfee301bd5aada67eb8afca628d","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.4_1605561956976_0.5096256364855145","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@virtuslab/formts","version":"0.1.5","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.5","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"b15c722f18dfcbecb178827003467db23425daab","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.5.tgz","fileCount":218,"integrity":"sha512-xOsdT+4ero11nB2Rrgmp9Kr2T96JgxpgdvFIz5XpUgovqbIoisfNC97SQyL3Vt3xKdvvM7aCh+EWRQJ/+yCfrA==","signatures":[{"sig":"MEQCIDTwbiR1UO09kiWfll3PXsAPZdk+8M3kt5pTVy6M2LylAiAjrOWoGua6FBUNpwOmVKPxBIi3giukSMYjH++MIVA/ZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":505697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft/r6CRA9TVsSAnZWagAA3kIQAIxPo379eEl0AMNizxWi\nRu5r98iG4cxHIbTp34ytwQ8aeZBe/pYmMqoVOkAOOm4LiCeXlNdECjT5V0AH\nc2va/pHBJCiri/GZaLZM9QyL78Mp0u2Wz522YxoAJQKSaFXrs7h86XpXmflj\nj7rmjdWPZf6HUszXHQDnDSEsHS2Z1pIQwXRwjJZHvtUUjQxPujTRGpGbJgeG\nLNuOy+9Zfvo6XVHzgTT+t9y2Ly82djEdWvG2yDaCWoDIO9GpHQHLQ5I9WuTq\nNSlsF3MEJk0gJQAGviDCx5OZ/yP3CYsqgceNw4kfFLJ2uWoPuoIv3t2NdJxi\nQpZ4zv4oRLepaqWz0l3zsaSTvmM9zgvgY3sfSe/YdLpq+WBsMsO7Zv9R1S+l\nAa262p+zftnRijtnJZmzA0VZ96tCPG6Xtk575QzRK3SUNkYsUSJxU9sDzq6B\nxb7sGGQkvZ7JKYdiE8j/ggEbvuZtgi3UoATaUEsYQp7ttXdg1PoJKusf2cTH\n/qxa6vSt5YENYzoL5LZMaqk4eRCNjD6WyaKl5fOc3uJVv8JbKCmhQVM7C9g+\nJU5oTRJDzo3qY2W4NXpnn4JZANwZIBaeOpGjCmy5489NceQeyGqX4O+IgFEG\n5poew4nLPXif9HdLQGNsOUeeHNpQzTZm6e500waSzt7kVbELwEvYi/+1tHTF\nyZ/L\r\n=yjtj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"4c787b9bf830395a5a3ac4f7bef59915db5a2e98","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.5_1605892858347_0.06854770667141286","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@virtuslab/formts","version":"0.1.6","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.6","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"909c4c03da85356bf1340b2f2e47787ce63bada2","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.6.tgz","fileCount":325,"integrity":"sha512-rHTMcygN1tJbtJpjirSh/vdJN2NwZI2xVCo0TxOl3N+U7zdYZZ0aSnY/jDB5Lt0fZJSOr0D+sU725QR45PKq8Q==","signatures":[{"sig":"MEUCIHrIr7vRg2/6TBevAFeRUTnXZe8tHgNXUv8cc0E67TsmAiEA2HnjRwTzkp4aIXfZg9jIzs1EP4oA8ZsVUWT/XOi7lNQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":764286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuVA6CRA9TVsSAnZWagAAlwEP/3QjbGrNX8FhdSpYOrWM\nDwvxGn0HRAmNB49C08bnM4XX1XcZCgWVnZ4Ev5Clc7gtj1LdhuXL94ouM8aP\nC2UyC11v2ZI1HCrLxdoHXWwY9CyfUyOZScd/sFxQNl/b5/CdqQdGH3HFtNF5\nxi9Y87G/pGGaj8YDFFKIFAl1BYGiXrkPu5lH9MExSW/jEHNL9786S3XIonYZ\nSXW6bCAqlvt1Ol4q1StGU1qgDUr8LhvhWveZ555JSRX+wmvBrf6f1TRlA5Nb\nBeS7fhcT8QyFFsVZsT95q7ml2P80333sC9Pwf5J5qgxluw43jWLwXi2s9eQj\nuiDI6oGbb9pmcqvZ+0fWBWbSuxI1UkiLzfDiX6KrrBNrdUPfgfo1V8UM3A7T\n6x3nRTNjMGiZhVXy85ydY/bH5usn/wO5gEU35nCRgLDZ00YQiK0DpdGDHtcz\nnSKUT2YMDikL3CQ81g/nFCBU3oBGHwfzd5hvXvf647p4JlFvacDrHRFo2wok\nP9NWRYZPJIx/k42BEyTpz8oulF0a8S9APZKYJHhPE9WMZYQywDgNM87UMOC6\nKjD/tEBuQoy1q1SeTiZZL1wTRcdeCyhIguae7nv3DBd7nCfZurqwJ3VTNKj8\nc/5dWzJHTOoVl2ccWLilYxdOduceTEADH/MxP5l18pAq98WiLcTDb4Racd1E\nzlJ+\r\n=D1uw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"119f84e862c162dab6fccf69b001de0aaf79903c","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.6_1605980218066_0.40578287522624334","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@virtuslab/formts","version":"0.1.7","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.7","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"9bb6bd464bd5b9fc748ad5dd09342a5938439ca0","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.7.tgz","fileCount":325,"integrity":"sha512-nG/J5eHyulJ5Inxor2GtZ/hdCtAPGDmWsJOvAIzP7CKvRyS2gr7jauoZZVt0pfsrV9iF0FEx6FD8Mv1Ly0dMdg==","signatures":[{"sig":"MEYCIQDNXoKLyJsZ4PavWMuCUbf0gfjXikDaxM0ReOHiAr9wKAIhAO0eqIR/M+44+fnea2CdsRFexZCQBR/z7o8gW4MGpHpP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":764373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuliFCRA9TVsSAnZWagAA/mwP/RGoPFD/x8kDp70T6LP6\n4/LjBv0BocPPLotnkZQXZG0NRgwZKOHZEzLHW6byY0GlIzEJD8Jnz7n7cLlH\nGaJyRti8sdsFfwCVJXvCg8hfibnk8PAxZbeZ6XbpcIUKMeyeiW6nfY9Ph4nX\nuedeofCMAPSrpD/JRVlMYQJRKMQqNybNorq06TqjUZnDNW1ureJuj+itrax+\nQe6hhczj1k6F/ioY9ffW6gkMT6gvUJyk3H/ZgtVxpL/SvJn40qkfrqdx/dvP\nEZtWLK/R2KehSTOXKjmXkuS/nMZPb5SKIO3/EqOvt/3DFNp4yazqcGi3Wppo\nM2/FeAWhC8gORBqYf8kLKoZST3ekuJGP7EFixMdzBbs1bZqisNY/erGAQVYw\nQD3pLPzIPAwBww+/y8YAixcNeIyj3cirSom00VWbBC1hxP9FHXRL4nG7dlay\naLOAERo03rejxfActh4KQlJOODUQ6/0rdrs8nii527QLX8lT0k+L4GGi4r/3\njp1E14ioRgv96uqPVoJ5jQ1PCln/D2HRSe0fEI5e00gqXpvY1jYQdB6B3EEB\npq5pOZB8Q1djBvE1E9+X+1xBO9Lpl1UbZKKNg30BE4wYLnpeAG9gg/3iK17J\n8zATO12St1Dyx568++AFwMnYmk7XHAsmwmz0Tbcf6C+gJ5D4ntnQ2OaK+LJo\nEzI7\r\n=vyGv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"7466f5959cf1e2850dfe4719cb6569b7153ed17e","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.7_1606047876818_0.8857644762754746","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"@virtuslab/formts","version":"0.1.8","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.8","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"8082a6faa853310357859426e2022b4b9684e193","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.8.tgz","fileCount":325,"integrity":"sha512-PjH/rZPq7arg+gOwuj1xmTkCDeWoLM/9vxjgAc4bY4VO/0qTrFK/wgBlV5+ZEOGN3AMZQdO0NxaqgP7XP8U72g==","signatures":[{"sig":"MEQCICapWuxZSpMPU86U5O5LUr8WEuzbkWtDN52RGrETkwu6AiAKnkMYFDu/HDZiMYDLTlPUMTOZfTWHH4k7vgr5HFEkOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":764460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfulvECRA9TVsSAnZWagAAALQP/iHx9i1VhBJdp1iyVTtC\n0wXfTnASi8F5IrN0s8bpetW3j7L5rzBLZbU4oAGrbljUVxuKi89BdzJAvGWP\nOlnjpCJLG583n6oFyHs7Gm1J3Jk0SAJtDfrk/XVamxCj83d1Pkm7EuArPyyY\nbdsYhxwSQW4xMaGzA38s+hTt+9q7yOpwcI9YaB7oPkdon/VNfJdc/JZmVjj/\nba9MloEpuulGmWq2qM6VF8TNrUCXK5Py4dKkrg7isUquID9DOdxqHZ6TeW88\nACli5XVCSQKRd2Cx06qDsvuRlHwOi7TfKu/3685XFIL6jvQ1qpKD8r6NzHTs\nfKBZRJivLZkXxO9DiVdnsBeR4VRTUsUo0OQRt0bcQfpFyg24LJRSW75v0tES\n3uTI+IDYCRRNwY7N72WQY4B77ajQEExP9HPewAaMSzfMmfCI4L69d26VEn+5\ndC8GGhfDtmCS73WITRSbhpjTP48fciSyN2LV4jXehrPN9TYQ8cyFhL+qf6R0\nGmvFYD4Txek+fscVCQN5wlaWUxVjhs8N8swKPVJzzc82G2N3GLGsv4KAl934\nIXxDl2wC3Wir4rtj2Wm2/RK3ZJVeLqS+tIJWyh/U7ZiI2q1IreWAlb10z4Xs\n8HldoXOSWZffiRFRzjX0spaZu3ZY2xtbhg8B+1FBj1XwSbnmGpZC5Eq4O271\nrcLO\r\n=ltuj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"c214708f8914ab1d4192d9d95f804fbf8b67741b","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.8_1606048707895_0.27432969939448437","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"@virtuslab/formts","version":"0.1.9","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.9","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"29d6e10f72cf1c3a74a2caeb5014d558e62ad047","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.9.tgz","fileCount":325,"integrity":"sha512-fiUD21d8aXi4ItIxA0IF8+qsd2wHQ55xhaSF5XbXKnfGCMiPQFh5ROJDBWUeGsJutyCl+FDvwkmjusiuJFUGMg==","signatures":[{"sig":"MEQCIFGnVFjkW+aglJRQbv+WbxMfI3y9b7fYZ18C6w7i6mYOAiB+7VawlJGyjAsfvMkgN95/v3HS54fvGsKYD30c3FphZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":762832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvjObCRA9TVsSAnZWagAAKRkP/RP4jwoblje8P+VMuLXn\nzcDVYbDzML3GdM2e3yY51npMu7CoCp3Qv71XefEowhtUHrphY1rplsvEiMxI\nYw1ZxoV+eSMVqqTfQITaB+VuCYmIiOtCSUCGEdGEIDa7E9bnKYcvrB0Qd3u6\n62vWA2vg0KSa299XKtjREK2ICSC1Nl0z9lRRjWa8SssJsxrDobhtQ/H4DPSC\noHRkzfJzvOIlA9CBsprzkIm8v2dqeXJUm2h3wrXVPD6Sh7M2u21QAA3bZ/k5\n3aL/GWD6vfbsc3DUn+I4qdBPnAgTRdKymMANWOmMlVb8B2GJNn6BeK3DONv0\nlbO349+iAdEMDp3g8miBH4gkZlamP5AndhHE47CbQC+a9+4dvGY9fnSiiFn6\nBhPUsxp206GSGgpZKeZwHhjg0Frze/8LaxFyjhCUxoT7C9XCizleG34o+flu\nlhCz6iiWQIipYUFfdsOhEeHb5lW3p5GlUY0IFhHxWocpnO7zz3knKkU2IFOX\nr0BBRcdito1r+1Z8rdibRyQ2oh7F0N00mzYDThCulaLqzEXfhvj+KZ5L3uY0\nQ96A2jZNhSuyUbjoTIV/+pHp30SlHx9qLzMo7eH7X4AILG0s4hDJ5db9i6k7\nceCds6vAbabxvd2GHSLl+zusd0oWb85xJfllG7jXZVODllLs71/zGQrJ9uuB\n2nYq\r\n=+OBq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"88e8ea5c10de38cbe7c0d98a4964cfe60e863995","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.9_1606300571216_0.5840492220259177","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"@virtuslab/formts","version":"0.1.10","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.10","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"b91d74c0be983e0ec9372dbf4ccee34a1624a5b4","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.10.tgz","fileCount":325,"integrity":"sha512-prW5M1qqhNtM31TUmEIrPPPfO9raKFZa7blXwWJW1hVMUHRmrkHFHY7m/YTTw4vz1pphvv4uV/OF2ls2UAq2qg==","signatures":[{"sig":"MEUCIQDHWBPmls3HiT8ZXtqqdodmae6KYSH69q7pf+2uA/XqFgIgPFR+bcmZA/lqAtY3jRCnf8hscaLq1mG988zmSHL3PGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":767589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv+A0CRA9TVsSAnZWagAAtcYP/iPOkB9AJjjqz0BDgN2P\nAQOcqybuCu+ok1CYKxUKsiZdRZ19/6SMnK4xkYyRWDKce/uWgkEbFltrCY2b\nmyRxDal0nwkn66q3wbirmFnNUAmOHxweFU8yCHZscqttKG4xDEoN4q0x8Q2b\ned1fp1L+U0L5UkQvb2LZYaf7ltq0+lK/bHWI1oIm8AA59G/M4tn38cTM/wl8\n4oTBJYSZLzlGX3TvhQGCSmjkuFtr/LKB5lSBYIzTxKQtoj4oQv8fIMrFruts\nCrxRzS4vDXxRFRcz4ncRfFr9soVe0ZrwgIVUIDpWs02RgN2UiPy0ZRrRHzop\n6SeV0x1dQQtL7P7Q0262uubxnnqTlVoZjvAxGhWQcF/sorlGpClC/wsvIc0y\nAlN5GUI4gguo7KvYMIh9STl1176jphDuTeEPCE7mVeBOj1keFyvkqvJDIkhb\nuqmp8F/7r8wHInJUzUPkXdJ9FcndGq/3oE6sGxb+mb43sNhY0hoGit5EdYj3\nERRvL3RoDZxVNUTTHE8kJuzxG4N923kt4+EuXDoAscad8H88HeRnX0wZXtlU\nOittsNXKMjUo4WaXAJecgCVFWA7lnTNver1dNY1A3u/f2Yr7Y1fKTZKnNexy\nw0Tb5FhZ7Yt3J5WQfb5YtgSYWcfg0+8HK57NYryutUuvJ86yjiBZwrythgyh\ntTVv\r\n=0COq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"77cf6e676a31c9f34cbfc46ab6e13bcbfce118b0","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.10_1606410292387_0.4346541080811219","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"@virtuslab/formts","version":"0.1.11","author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.11","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"0de3bf1f9e9e8b3d9f73a29afce7f343a875674a","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.11.tgz","fileCount":325,"integrity":"sha512-UlYaTo6wP+/viDt9oIfS6L/YIfhCsFSJ237DunnRyap64GnoGPnaE5Mi8ngjumX8ssWHirCA5w4M4SElcFLm1w==","signatures":[{"sig":"MEUCIQDrZ23su/OmSF+84cTiRmXQGxvxSCW1xW0yPN0ye675SAIgXZTnCMattQrF7EAhQyF+fSxnvDvjs8Rp1ADSR6nmOQM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":767679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfw70QCRA9TVsSAnZWagAAS60QAJ5RS+5nJfhyt1orzUBD\nOIvTWnt2qw3sISHsk6QLYq9esBF0su3HiCUufUtsEj54LaqDXsWEHVgfimSu\nvn7c/N+EgB0EtuNmKzMqmdbwPjPPTkCPFrLEBtaOm6jwfu8mFryn+cCkOV9H\n1E0H6QOzUNjOM5/riSjFyvGdshslIk80x6YFbAAHFd93yIlOkechjuHB6pUq\n+yKtEfVmy7k7eQ2VTpEP92xR6BR7qtTHXfCd5UtNmm0lHHQmKdELhRV6uHOH\n4IAw9Nsz9EDN66YHnaiQRcARNSAS2mLKZ3xl7e8FFLxfeM/k5ewbBgwSxV0+\n7ZivS1gWDlPt/1L3T3aivRMdHfFx+zIJjrOia4VYBuk6071chLP7nucK1/Sb\nFyyKayJa2/1LYmsXbuAOZ4Sd+gOsMzkkKRnxtSprLCsKvQjJ67aiaP55Eea0\nRvH6GUQK58UnPWnCul/71mAI3Bk5OVn+drewW5SLVf+Pss/gvHjcWJB/27gx\ngWm6sef6R6Ivhxg6wftGhIJT9DkOgHYkKcCUMtqx7vAGGiffx7vfn36RVJOg\nctcCyHsQF1JFxuYwreC/DMe7O0VsqJm0Sq1F40W+9nCk7GMAmnVnRX74M5li\nZwywJZZnhO8g1Cle1E2ZXpum25JPVuD5/9XRDjj2zZBlh9qRs73hK/1UvvSf\nfHIx\r\n=ukuc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"0b289e27b011ebc4d49c6001cfe911285a30a9eb","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"Typescript-focused, schema-based React form library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.11_1606663439785_0.10895055492377681","host":"s3://npm-registry-packages"}},"0.1.12":{"name":"@virtuslab/formts","version":"0.1.12","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.12","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"f9c6d7ef092fffd2f9f8de9d077394e71f3809fc","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.12.tgz","fileCount":325,"integrity":"sha512-GEGrI46cCb7sAH+9qiSeFzDQnsNDp+XjXMidXYMAN1gToo30vXo+DzOo760dH9y7jyRge8qRENp5ehWtKvszXQ==","signatures":[{"sig":"MEYCIQCMx3Qjfbbo80QwK3do43n1hzNEqJLo/hHinOwviORbuAIhAI5In05lzlCAli+k3QOh4eBFs26i2s1KXATPdn5PGLhq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":770307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfw8F2CRA9TVsSAnZWagAA43AQAJCYzdvIJyms0FE0Xnzv\nn+x8DiJGE4G63B3cRlZ7u3otjvCjM3lRjPP49bpyT9b3UJcHROoIGV4I1ygz\naSYs9YkLuHKd8F93KgNOneY7HQhiqlSyLTIGZK+898OkpPqKDROLAQvGpqxa\nTsFt4SxQjkymyOh0IZsq5/1ZxEYmVcha0LERwkndc6r1P+R/8AmvNTevvRuZ\nxOClCrvs/MMzQJAkuHNpjXvhEWTjPZo1ahxYK1GZBBDAZaJYtDV7no/iNqAD\nA4/rcREba5D8uvAigYRiL8U6fAYayxU/YjGJ0WfwLAhio7immjl9HS8nA19S\nqhP8j9mLr1wFPq8FroZC+bconxn1S98KxO7XM/yHT0uwlrpzZirVVDwEmrwN\nBOgqwsjvSpGhzSXLh8hKmXCvBi/YKozNOgw4RJ2Iajy2kYWQ/dZawm4NI2tS\njTI3ViEW5LnusGh7CavwE05AXRFKfTVm/0ADW6rxxW8uCtoQZp6OGVvwo5Cs\nF/jckBXUoBsEQu/OHdAoPDGgS+L5AtOJ0I4ur5xjhAdIaP1ufMv0xoFTl//r\nxHLor7pcxthzHcz7rowizrzauUSouByhDclDNCw2CWJm+uiTzC/OeWcrqDu9\nXGbCYwFkkPMlzrQvhGNzqv8de7nhvoUJ44zVGtt7AXjtnzFPbBPWo+SWllcl\nui4b\r\n=hZZO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"f8a8a478e3cf96bc35817fd16deaf817e04f331d","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.12_1606664565796_0.6504922922077854","host":"s3://npm-registry-packages"}},"0.1.13":{"name":"@virtuslab/formts","version":"0.1.13","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.13","maintainers":[{"name":"mixvar","email":"mixvar@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e48536a7b91839e61d5b7d2c1d4d4c6766e621d6","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.13.tgz","fileCount":325,"integrity":"sha512-fn6YRUq+zbHBQKlATTyb9GcsihEdkEzWgU7JEs6ffj5VJsQ6z8BCQgJDKm0KEEd9sYA8lfXBMkQPRG1WqEPg/A==","signatures":[{"sig":"MEUCIFoNf9qx3Ul77F6PSilhHigzSHg4d95iKe13ANfMJdFHAiEA3UX66HbQ+L+pvgLmH7eaxKWaT6g/vhvLG43De5qVEh4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":771254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfw+WLCRA9TVsSAnZWagAAHLkP/3TdlixfHoPuG6FtlDUH\navx6IZBG6hjTj65dnDEpff4wfldnvsqErxROoZ4rRKJr1H5b/K1lG6RunDZk\no3bVhF4NapkWAYIskUjS2O8250Ow0xzACVlOZhfdTG4VICMf/r9n7qyC+EiE\nXtQifrFTcg2x91OocCw4aGB7a4vyXQu+w7rYewRAgCRiARHllKIVq4C45F9f\nOoBsDrqo+7/bwIc6/GcIH5lXJkQRS6ltMUPPC8pLjDDusRkkL4DAKwtlRItR\n2YB930cC1vBlvJVv3eqB8AhCQtHiPXl0azu/STVHu3B2vKGZ/w6gHo3Sw9qo\nVJx5375UHzn1ek9PMVRXDfOcSh+nCe3sjIkreF+mUbqGtDvATEv/ijwO5mDR\nHUd2SZHtatVxVBOqzO3fq3RYdE9c5gGL3C7/PySzJP4ZFfVTwAcAhRQoTS1N\n/Y1JYwJkN+RCK/bd/cybHxHK6vb62Fhy/BTDZ6C9Slcc7pz8vod37iXBvggC\nP97dW6V/9fugZSQOY6r0/g0kjWQMrvNFO3NhZu51YQzW1LpqLqIJXf9xoEh4\nu5rDSH8jrCu/GsezpmVMk/pY12WS0FPhJTHule3XrqqZUAisakUzYJHxa+jt\nnUxnlDGq6IRTn48IYXcBZCEoKCPWfULb5YV9BymkDwJBmRcQb0TZpys37/ND\nYrc5\r\n=W+06\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"4577a67cb006ffdbfc5c14ac4b3d1cb11708a19a","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.13_1606673802668_0.5137837794734561","host":"s3://npm-registry-packages"}},"0.1.14":{"name":"@virtuslab/formts","version":"0.1.14","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.14","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"d9fdcf057a0dfaa7915205a2fa0510ee0efc8ab3","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.14.tgz","fileCount":325,"integrity":"sha512-HtbwJCYEy5pu0m4o3fIxqqoSLGHNYh8lMVJbB6LWIuRLMf7oWhbLhMsJLw9qWmFNT+z2yRRacHJNXFCHpeRmWg==","signatures":[{"sig":"MEUCIQCTeMIan73bYqGt8OHVUCSoEtRPhGZLX6gGbBGe0Z5bOgIgR42UbyUXe6k7UJ2EHwVlrIqs+HCpqRhqGOCV5YeAM7Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":784395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/BxqCRA9TVsSAnZWagAA+XkP/RL4+d78bXuoRsxPLcBw\nFPuMkJYaT4nJo9r5DaMRFeUFQNt/Vif6uUH+FrJQyZ1/To1DG9LrMN4T8xjp\nDhp1P0wLOIAm5a4oTyPa9X2Iavpxyk7d60e1s/NxVrtHuZfKEl3KwIIWMj6h\nC6I65ekRpSjCfe9fuUHvmCFaADJc3uq8behP1OtsO/0AtZ5cacs1c6cmDyln\nzZvHgTOM/U7XsscQZzBiDxUqHxAXlyJdz7eBMIKleJuF/0safKe/6sh+m+Ym\nPtxeIbQ4GVSnYsF48c7d4hdIdzNwUXwwrUUrvRvHQDqP3GIIlJ6JVDI57zLM\nChHcEnspDFnULe4jRsKAVjT0X/sBgpkE7DxohoYCnAwcEUyGL4yVlfaxLA8u\n8RR1yyVdben1ihr5DKU3lll88SItfOxVmfclZZ4klEbnj/ty+fbVdoMnKeZW\nXNXZFFOCDIfEkEu8zoY98Fl6+MkVX3Mvfh/rLjwJYTbd5xtXnxjkudltdAEe\nSeiU8N6VPmZx3/wMby/H+/iKJyaE994pSQw2ltZh2uk+b0NM7usRISH8+4bO\nG60zVLrMnsCfTLAmCvNM7HCve6+G1K3e3ePDp5apYfm+v0zbZGB+F7d4SFtt\nxrdvvoTsGSV3YDeK4ApyG4MdkHFyDssm7v3WDOCOFX42LtTO6c1oPARiRWKQ\nel/y\r\n=Ec2G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"ee33ddeb24cf91c9844e52119d05024f96137c7e","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.14_1610357865408_0.17639701678716335","host":"s3://npm-registry-packages"}},"0.1.15":{"name":"@virtuslab/formts","version":"0.1.15","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.15","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"fb9a40d556565e3889961fa576f0a7c8f79afb2a","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.15.tgz","fileCount":331,"integrity":"sha512-fJ3dlNgUVjZs9Oix8oeaIlkxuSAgd/12MezWP4faGmaoFNW66hPhRwSIXpCu2cHe2YWGEGJ4QgjIfXyRdH4yvw==","signatures":[{"sig":"MEQCIDyGAFM+ARIUdlPRbQ6R6psq+ufQ4SebhrHFULPMkz/5AiA8OawOy/RG2LKKgheDP+MpPs4qquG53x7n4N9s8J1Pxg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":832693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBeQDCRA9TVsSAnZWagAA41YQAISQjFdvbNcGu8LL1xeU\n60TmII4pkPbZmbGrl8a+hIN56EDBEQAKyAVM2fJNF1iRN313z8T/JmnQDkEL\nQ/XbP7TRZw7JmttjWmPa7Tiv6wDueG7323Kx41FTUdYRM0KECzNz3xr3nTeQ\nPp9UzbunFRdrlDLePQVSX3waMNAK9IBpfTEebKDgVPXNUUTU1XU91sfgAXg7\naTxNtqQ8k0fKXXJLbX/7md9IgQBQ0VJba10YsYYjF1Z61JiS7ghtVh0Gc6r/\n2Ll+q9vJDRaIzyNktFRHvGVKT7dkQlwe5LnjshmL+LspOStR9KGYy5lf8rP7\nNnFRrWhAK/3QcVVOxe2dDUo4eeUQVfpbo4tcFWdzmcdcG9xyDlcEU9d0N8vO\njKK6mL+ylSux1AEfjRmg1GcVHWzGbsAFOfnHFNcMcylyP0KDB0jHrhPkMg5y\nmQsq+ekRdMyFbBMLKI+AlMYRGZpm3KmhHVQVB9jdk1CM1PgbLbIbaeX2kL7y\nxfWTB+GwcTWGsZCJoHjA54Wd1opnTGGKiw9w9cl8RXul9fDw0x824o9JojzB\nKQASV5O2pR67KGjjMoUa9ilbTTQEmQ4TCEVFnCesKoKVaZKd2EmK4nWxylfb\nuVhcfYGuRegZ74++iBmbhhatko0F/VnYJg9+Nhf7ijkhV69vXZH0R5jc0dYe\n55E7\r\n=2xuX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"0692f66c11ce17accf92baea8c8a25021e607c25","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.15_1610998787288_0.9370406196363128","host":"s3://npm-registry-packages"}},"0.1.16":{"name":"@virtuslab/formts","version":"0.1.16","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.16","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"023272d92be364f1a76c0156727eb4f4393895f5","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.16.tgz","fileCount":331,"integrity":"sha512-ahkR8HgV/guMHKZBMTUtkMPQbEBIAQFR0E3/+XiYIOtGixvZHsbORX4UDRMqf1NkvCg8H+7AuRNOvFK7iDVj6A==","signatures":[{"sig":"MEUCIQDEFzM3uLElo9cQR2KkEi4OqfHBvz24nsvhsOUAIAaXZAIgJV8zzzr2ieydN5Joz6d/scW3VM47L0i6ZWkGiKDu6z0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":832979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBekgCRA9TVsSAnZWagAA7KAP/0FREhr3GnMCi3UMDa13\nj95eJ3SD9Al6WCsVbPfb10QXnZJbHooqgKAF4XuSAGgPNp1de+u7Y6eKMo5e\nTWXsyLb5xp1EXP1j1JDznzSKTscFwGMYTh8RjQRoVRTGAOuqPo+hyIPhbjOc\nstmZDoxRzg+HtMRVozOr9FOfJZKkr2Z/6o8QVTrZnjMZRwNZqWKYI+xCcMal\nsB7ONr3XExk8ESshTUQZjTc+x4vMJTX47Y5sOx9ZHVlGJJtA4+/AzJ28E+zp\ndEhtn8Edy8x7rm0CQj6Bx2AgD+JNCxy32hQFrFDsCUpltmmVbeuPZURbLPZR\nD5T4/01U/tZ7rpGMSHFBOg24sdxZ7Rqu/Jh6d1tWx6UXeM3K2i9Qp+KrOEVl\nPWXtdtLt1FCKuJ11tftpr9V67OdQeK1499dkAHhTlPJi7cFaXL5JMiCOK339\nM12+/RiQcDDewOH4iFKP1ZX4RgPc5Qk+BgGP7rYPoKP5sCt6t0X2ibdL0+P/\nkjf4CW5fpuxlFDCQstAczduRiQvkxnqnkHLaFoUepvrOqT7i6Rr37Etd5qBg\n8vRBYZsg5humVnPx5xo0kJZq0WyJgmc1GVXyI2bmDIEGRhdlMlRduL1uS0x4\n1gZxUzAKRLddwAmP5GQ40Es54v+mCGHckjZuhn/S8hHDp9jO6BO8Wb9THxFe\nOaYh\r\n=aNP+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"9b29dcbafcad3399ed2be1b23216aa172858cddb","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.16_1611000096549_0.4071109688065573","host":"s3://npm-registry-packages"}},"0.1.17":{"name":"@virtuslab/formts","version":"0.1.17","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.17","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"64891da534d15a9c01f047a68278bd94357c4198","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.17.tgz","fileCount":331,"integrity":"sha512-s9YgO9CRg/tyDP06nWxbkUulbf3aV8kWO04xrOrlZo4h6pVcwhLjOJsFoOIXm1O4f2dntmk+B3lBOjh2/entIA==","signatures":[{"sig":"MEUCIQDs4PoPRM5M6AdWfZDib0PgbFthJInMxcNcUMXP/xmUFQIgMAVVsbTWmku0VHbgwbo3Ak7N1N3dpdPeeJMCEymcRLM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":833515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCblTCRA9TVsSAnZWagAAePcP/02UB0aQ/H2c4iTwVDYr\n8KmjH47zNy2Z7IrSOb7TvR8gNKwQdRXveNvflyF5KxQhKOPSQZkjY1SJHFvO\njHJt93Nn7xs4Ffdddx/CNe4o6pwZWPUEYQMwWuYCg/fM0Pjt+tc8AZBHU5Zc\neu423skKUmb57uGF5QRGOGnYtvKGX7+HbiwR+aJlyLNYdE9uTEAVWYYX+3QG\nQiiFxO8A4n0T/D9s0/F0kJZa8Kc+DgjxbJTDCGcOAmiQeKRCLmwBNdWosKkw\nifas/gvdz5RBnpk533756skcsH3pN3tMYEO6SwNQET8bqnWl2SNs+NSdot74\nofH5iaQwY01HyIhlfExGCXdp6tM4nBXc/PjMYfwqlkzRGC05CK8XtgIIqyrp\nOcSkGSHegTdAXfxjOXppa8jA8abQCgvz/g5tTv4V4uu/AHBGNIeBaaETQKkH\nVxrXz4NFPyA2ik+yZ+t0ZxQ1hsgDzOo5b2X2WFFLcbhD49U8inbcnRmiTxwy\nbQFCbLlifc8YN0LrAYop4Sk1R86e+5C9vxv2aOKI+ipRbxC9tzvK3sieQkN8\nw8wfdPD5+L7vJWf87n5OKC7DQHtlLA8g29BctiwU7aKSYwzoLYV+Nkz7DnYl\n8Y7d4qsXOPWtKLQbOWvI1dUzDGClDqzgcJsCo3KfII+wqKPJYPPexOXxxfKe\noVzS\r\n=Cr6r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"40aa543bedfec4b34f62aafc69fb3e60a28c3f51","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.17_1611250002585_0.5998689535919266","host":"s3://npm-registry-packages"}},"0.1.17-beta.0":{"name":"@virtuslab/formts","version":"0.1.17-beta.0","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.17-beta.0","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"37577efd95cef3f22fbbf5b350c4006f7868cf14","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.17-beta.0.tgz","fileCount":361,"integrity":"sha512-igAp1kndpDKQ6b8VsZulfRCQb4J8clOoGr9c2ecpPy3rLjQi02OXgNGV51HPqe08NQfIhRud8DWOpfUtCZWJKw==","signatures":[{"sig":"MEQCIHJrTdmeH5D10GQ13VOAlE8yLPHNsgdwDyJBONk0hHoqAiBT1WbErpo3p5dn2PMVofYaI/Mdj6yUAu1kgzMPE7CKkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":864272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHAjZCRA9TVsSAnZWagAAUpYP/RQtpvuhCG8P2DFtWSLD\nNLJrOpdOtdo3hkg9LlpsZdc3wYsyCpfcMMqhO91YwtU5TbWNXJ8sKr+9keWS\nGxeDvniqd+45qloAcRg+GqbplnkOmOJFHBItLxKYRxXvgNt7PnzBb3BrUM2c\n4znMgBpsXAGAiym/2iV5AISciKtirSXY92twIXa0TSc7qfxI7bC65opvFDUU\n0gVvfv1yJHCO7pMsXL38WulNfNwHrhM7qPwSlRThh4sNKwDTFWdtkoQ7d2T6\nv2WF712Ci2k/GgYi5UmyaTXHRAPldUmgVbFfanEaECCOURgmfFtRgk3/CKii\nxf+x6IEL4eqnEvzbnau6zsK3zd5yFFx7DXcvwDHoHJrunt1i33nhOk3TvkoS\nCvveYEvVT8IZ2LeSxOVqrUkn3nIih30MogID/UAMdAgYDTu1ZH4des0pMLfR\ntgYoA9luFCYSrzgoy9GwR9A7VO/bWagkc0Zg6GMjMwrlLBRKH+9BQ1tMBDSR\nicsZ6kv8QnbRKJvOq+z/v6Q9rh1j7RqsX1mS+cm1y8EAmWaUYs0TF83AjCo/\notfHwW3R7mRQ0lLtIPfg8HKFl0zKZ00hl4xxW7jUhLVVwwPtkPDk9yJDu1xd\n2zzrHsfkzL33EFDzjxWuSN5calU+L6S7oML+xA03LPHzjKTQaeFDmW8xramW\nhbdh\r\n=/IVe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- **[TODO]** Convenient hooks & context based API allowing for isolated\n  re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- Advanced validation API which enables:\n  - **[TODO]** specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - easy mixing of built-in rules with custom functions\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={e => field.setValue(e.target.value)}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"e90e9c17a1db229e702ab17e6d30cb3fe13532fb","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"5.6.0","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"8.11.2","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.17-beta.0_1612450008560_0.9954541499495766","host":"s3://npm-registry-packages"}},"0.1.17-beta.1":{"name":"@virtuslab/formts","version":"0.1.17-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.17-beta.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"dc06f49d9015a9b9f519d36e2a8ac42637c5cb3c","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.17-beta.1.tgz","fileCount":397,"integrity":"sha512-lFXen//B0Tz9Bzo47p6/9e45EXpVBU9oyvHSAijiFreU+AviGn9JGc2BIHgYExJPZtLGvbw5bvT1WZ2xn7NeNA==","signatures":[{"sig":"MEUCIDpDxTc9vt4XkdbUVpVFUnrD+O8yUFw0Or02TkpONtrMAiEA5Sh4+ySHLQtYN1aFhBN5j6iSo/iHf0YmL9pAjjfKjSY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHAmkCRA9TVsSAnZWagAAzIwQAKD3xKCyBwlE/UrwOFUb\nvO9rxPAgdrcNV1QVf581dG8mlc2rzrx8eGadJqNKTXku2dKoq9W65//9uQSq\nFGcL2bHSV2Oxq9YIx6IJY+I0steWQR/n8LdQwlriMT6izBqIzabRw3TJdnFr\nR0REeE1KufxtTzsGoZcRt3Mtw75E4ZQf5fTB+9b0+9wil+1LgDCYBwnNIXdM\nVEdsPdP807P7PnuxhMEVaI1M3fMO5xkO6r+Yp3Ub7ey+GJT+BJNYIetBxRMQ\nxKZezvFQiltfHz/Z0vtJCfLaZfvFt8/WwQG4MCWVaSHLAUEdnHS5BVxsHu7e\nefC+9yKpmBZI2idNCxt9qb2Thz8+jgLGNd/A6nFmSvPURz5E2Z9fbQQoGcch\nA/9lxc3VGHGDDR32Ce8zjDejT0Rax8KSE1TeM6yyXurcg5cRH0zMZHE1x+Jv\n470svGQCoaNfoBD1hikS+lfFiEj8lqQ5LSVdwwwq5H+4zhz4NBmz58fQbMHi\nV15boXPoGqxrLDvv7Z80odtEFrbsbZyZgkHGUlqe5eF/7tECBfWpbZFQpuNw\n/ghZOg9udv8hx6Y+p/At2ZPRo/QEKCgWjy9apO0+NRKUo4DNugYCoNjZOb4W\nWTuV8/twKYfyb1zRtn5oblaRFQFKK4+gsKMKVlcGS4UxuD1omXyJJBR2ptKq\nkGNV\r\n=rAJZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- **[TODO]** Convenient hooks & context based API allowing for isolated\n  re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- Advanced validation API which enables:\n  - **[TODO]** specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - easy mixing of built-in rules with custom functions\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={e => field.setValue(e.target.value)}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"e90e9c17a1db229e702ab17e6d30cb3fe13532fb","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.4","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.17-beta.1_1612450211895_0.7889279135463232","host":"s3://npm-registry-packages"}},"0.1.18":{"name":"@virtuslab/formts","version":"0.1.18","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.18","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"445a902e36dafdbc72a070f929fbdc841eb99aef","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.18.tgz","fileCount":355,"integrity":"sha512-SgYIK8ma6CXvuevH4G6CLHHUb80+F30eOHBsWMnW6kQjgHH63T45K3Rvj0Chpob/Yx77G6GUVxCZrPaW7Vve8g==","signatures":[{"sig":"MEYCIQDfSIth5V+Mu8qXHEaKfdJZCyHICTAX3GysiHQj1/af3gIhAO9xA0MjF0yh5npDcCu0uagj3BD2og9nt0ehuxxT2Mfp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":913318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIsJyCRA9TVsSAnZWagAAh4AP/i7zBuH6LGSMWsetgFnv\noUhkiKwIg68arAYdBnjnEKdGDv9ITOzSp8c8wjPk7X3Kvh+8eErsj3cbRkuf\niX+yk5QPdNlhYPVx8ddRp033Qf0LUsZM/wZ0B86tx/OADeh1DQ5KBpirwDMH\nm1stAoMcBAqjcUeKi+GHo2GdoiOzhrBueLbrVtW5JmhTAXizdFTj8uVabOOw\nHECOGuAVQo7gGsbkk3otxMFLJmuBN4DRL4tyI5kkjZFL8QAYNFwtKxTz2QG+\ncT9r1TeNDzCjtp6Rjhij9HH+DNyaHR7hy73GRiXE4t1VUvmT/05e7NZhS1J6\nPhHXrr7RkFrAYos2t9aLK3Oru9+y8esaGiMiqKXn88nswIFF7icLo9PaB6VA\n9pR/7HEStiv57y5kv4BVuVpiQPts2bXozvBdVznCNg+8D+tKAYdqccW7LB+X\ntjTSVHw7U+3t/TNzskh5ZU9qGGYwjB3usScYmduZN7S2pkpH1sgwbQh7JD9U\nCC7HQB2JCiIO/SXDEIs7ETcSuaFVsd63ziQ3ooZwbFL39BFhc7IWUvxqh+go\n+EtTPcHpHE308ZjS2VS50KweDe+DWURQ0aGdieAz0D1x+fZb6isKvMrlqLym\nVa+T2d053CCFheFHZhz6s/3/5Wv8HDglvTiUlG3BwK6JC4SxwtxmhPRP5LdS\ndxPO\r\n=FXsW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"e27c38cbdc1941e424b54711fd35a0f68ed74b62","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.18_1612890737974_0.05969143046606096","host":"s3://npm-registry-packages"}},"0.1.19":{"name":"@virtuslab/formts","version":"0.1.19","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.19","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"2d83b82cef7c29091b8e7838fffb6dcbbec729a9","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.19.tgz","fileCount":361,"integrity":"sha512-Rn1wpG7uu2x7cpoaeegrsW0AyCLGPr+s/BAHRqtM2lIWPNxh1O830dJrOXL7Ast7xcE7vNgzPStOF2Cd8A8MLQ==","signatures":[{"sig":"MEUCICWhUHohLYh2+afP0noh+uT4760UxLuBoQfypUsGZ5SxAiEAkg/W9JKSWPwNyKtHAWCnlB5gV5+PKTXgOLc9Do9pX7Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":936192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKpTZCRA9TVsSAnZWagAAXwwQAI3ra0lfMT065+RgUgv3\nha2YVVHUfJlhZyoPDKGe0/adU5wHJgAk+xPblxqLmRGTfP/lHcsd/x5ecYKS\nWOno58UT21VBys4t1Fvzar3pfTocfm/9DSiKeo4JUWdRTMhiAhJAtLqmr2ne\njDl+ZmPsT6dNOvaFSBhyUC+zOWPLfWruLbA13Fv5JFTczTvEwquTg0j9Wr+i\nwo64RjCT71Rtc9FXeLC/BHbJMbjlUaHb1QsUR6mNHQ6VFmEc4yvP3vn3qu0O\nFpMAtH3kpO93jOk+J2LcN3vko/RBruo8JeW3czdivZIV3JaKca725PAPZOvX\nE+k9B/sb7yAC3jcevs98MYoJ/sONVJa86Fq8AH6mzcQWKrv9tUwRXLtGGuzf\n6tU7tFmYfMOndn4nCT/VECVMsyhPVqUAL7/+X6b5H35INvt/RECDmVK7n6OD\n/i4JDSZ4lBoR2FSI1T46H9PzYvC/QEQuVGK81MhVhdcLM4PIobCDRsBa8260\nvJvsXfa55PKSTQs1mnhu/EzAiK+uT85O7+w3wlUo1cnCJ0rk/IUYG4PNLn1p\nUpyUPXg3JVyKSMTxirhDinUUOZhOibEwifbUmAQrCAo98hjw1+IHfJAa30Tc\nZddCoHrF8Wb5mUPXpLlKMLCNJ5acGJkUxlrL1w15tBmwi4tA/5gkLYdbs1XW\nnD6T\r\n=ro+I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"b377c554d0b5fa97828bbfcd0930de6b3cc0fa34","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.19_1613403353151_0.42353084224121496","host":"s3://npm-registry-packages"}},"0.1.20":{"name":"@virtuslab/formts","version":"0.1.20","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.20","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"2a29e03a2eb5538d41de806ac11d60f5e57dfb36","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.20.tgz","fileCount":367,"integrity":"sha512-Zz1qqcOZeDFKhPg6rtT7BAvs850xEPsh71sykm0MXQPDF3ATb+xRCdHPsOYacjaWeu9MPK8/A7bVJZ9ITyC0SQ==","signatures":[{"sig":"MEYCIQCdZ5D/fRKi2HqM+VKOv+LR5hMVnzZ3fqigPHT+TmS9LAIhAO+hODankBunGu2NtD6gIRrg6ikcDeSxE0Bd1RAWg8aJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1005077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM9fpCRA9TVsSAnZWagAA6y0P/j0r+ToQt53DL0W73w5w\nX5YzTIWyvTQoLrUFqhKUzClNsOdlNTL4lV9T9cEgmQ5Q5SyBygLhNVmBS0Rs\nzyOVxVwykWqbSvlfZ7nrr2nFa6LQYo1V0XwUtPJ/Xw0y/Yihxny9gIIb5xyl\nyzwxrH4jrSmtrbvsFMMx/jDOEfhRJU8eN2bOVVb/HEQT505uJsmUhTpx7vdU\n1bWnAklEFJqFxcd3rysVEj5E0PsgU8SO0zPVEJceJshYaNnnBRPr/9GHM/6U\n6ASxqL42tSVee6GMflpJwBG2KuifNm/Idh9hgKadZJqoPR3iSb0fIXnKqGIn\n6YIQDLFnl4B6Cu8pMRsDdY9btRFv66LFe/PFIrIpjZEM7i3N+P/ov1NsLSOp\nbmJNGVJQV6UE29v0mjXPVy/eLOfcDmZO5eCHXCyRXr3wZDRecr3rfvG3MW78\nEsqPgdPYi6CIHrKNIsvRsodh7q1AXIhChyGWFhBUbw5P6TCBAaj1f9IZfklB\nxosfyRgyTNXjejySZOlaH8OGFpM+nBNq0hpVqHcwYtnQ8rFx7UnUafFtsBiK\niOERoPnV8ke8D71KCPGm0u9hVw+HcaYZBxlRjU47LwPn97jde1D1umvHSIOz\nerMA31rV3CKyoXHlGCKNVpxJ28y/Oh4uisvareguYjDLJZyLpdNmYdShm8N1\nrNYW\r\n=Lgl+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"esnext":"dist/esnext/index.js","module":"dist/module/index.js","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"93311aac851902da61fc8090f35565a399c10d6b","private":false,"scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' --fix","test":"jest","build":"yarn build:commonjs && yarn build:module && yarn build:esnext","clean":"rm -rf ./dist","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","clean:all":"yarn clean && rm -rf ./node_modules","build:esnext":"tsc -p ./tsconfig.esnext.json","build:module":"tsc -p ./tsconfig.module.json","build:commonjs":"tsc -p ./tsconfig.commonjs.json"},"typings":"dist/main/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"6.14.6","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"_nodeVersion":"12.18.4","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","yarn":"^1.22.5","husky":">=4","react":"^16.13.1","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","typescript":"^4.0.2","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.1.1","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.1.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.20_1614010344791_0.5676351703443694","host":"s3://npm-registry-packages"}},"0.1.20-beta.1":{"name":"@virtuslab/formts","version":"0.1.20-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.20-beta.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"b11a9f5ee9afcbaa803b475977feced9d381c094","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.20-beta.1.tgz","fileCount":161,"integrity":"sha512-OZfvYXv4N9wBngQMe29jBCYq2sd2BKs4zX2CmXzjvSWWN1gDFdUKSwF6sk9r0ud3lxEsaels1wigxB44RSXkLw==","signatures":[{"sig":"MEYCIQDDV+dN3cp42ex+w8nw2e8gO8LkOhR3dqXctGRhDAVK4AIhAO0aHhnYXxkSZYiOuz44I0TraKe5rsz7w4PxIz92MgyG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM/5KCRA9TVsSAnZWagAAOg4P/3zeVt23HIJqSv5RcsGK\nw/pxiIbkkWd1RBRnJLhsp1raRM1qoFv7gcgO0vjJgQE4ZuEYL9GR6Vnas3tM\nZ2lXPPEQ9xwfz8AgVDdpx+gNcYTGB0pKrjo+p2sgwAX0P1XuEaJ9+lxTvxjn\n4x2Jkgvaotu6Juf79QrdnS8xOy6VZmvf1dGtxZLksZwlK6O0cbWnBPuFgEB0\n1eRfA/70S4WAwq/wVUKHpF6GA/5b5+rolq759JC26/5VgvmzqsGV5c5PMl75\nAuEwOm8XVrkqUIJT9lH9AniLdm1rs6mcRZB0m+FENkS9bKbC2t+r/ZvOKtjD\nrWUP3oPl/wCivq4x4xmI/lVbG51C+zhUfYSE63OtAAyWncZzBi+vLsTaptfn\nFjlftdqeOuROqifTaRsDOn2qKZXl0Rtncn5cQv13C+J0Oy0rDJ0V3IMb60aq\nQrf/6IO37mVFwgLIydE2zLKMWMS3j5MWM+RWPaIeHS1RAkqu8KrH7V78+Rfa\nY8KRa3/isryUvGS3a6Ic5sEjCZt1rveANuuG9oZYtNWC6UY/23HybWXX38En\nZAh0TN65eSQT6bTm6EQeRetbsm30sDHc0Xsw5ZeybjbJEaDz0GUxQATSpHB9\nC3r1Lp7KdlgSOByqnunhe14BF0FaUTBEf7936jFQ36lorIcZyLPo3Um2mc5A\nQqLB\r\n=AULQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- **[TODO]** Convenient hooks & context based API allowing for isolated\n  re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- Advanced validation API which enables:\n  - **[TODO]** specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - easy mixing of built-in rules with custom functions\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={e => field.setValue(e.target.value)}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"8e7212146e834ae7c2db510783c479acdf7bb874","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"7.5.4","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.4.2","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.20-beta.1_1614020169436_0.8111734162400435","host":"s3://npm-registry-packages"}},"0.1.20-beta.2":{"name":"@virtuslab/formts","version":"0.1.20-beta.2","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.20-beta.2","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"c0d1da48ab659815eb1e1beccb88e154518b69d9","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.20-beta.2.tgz","fileCount":161,"integrity":"sha512-GAK62y1akLZ3efUVgL4vd3pYCB6Yv9lXg/+uq4Q+SCtZaX3ohhiPyJ06kJcbePpgYV2FD5vBYXsrj+u+ahZBrw==","signatures":[{"sig":"MEUCIQCb6mdbTtp2a08EKnizSWtWTYZj4u/FckKDHLzMnh3+4wIgd9gH7fvLDgG82xQJ7RSYmrWZa/Cryk42ym169xcc8jA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNAhjCRA9TVsSAnZWagAA82kP/0LCPI9LfxCqUjN8xHhg\nUgg1ijan/jIGymc7Az/oR2NsYGojweotTKffMiU6kliUZqWD9cLq2sA2MdPZ\nwT+eO20mWOE9UQGUPzhjbFmCN1a9S5HFGkcJl7cVG1wT4LS1IGMNoCoMEIkn\nRkWETPwvEWuXGsnmBnnsLvjTAPxPmwL2bKdaxy7SYuVdQG8aWVeQLGNcr2Bm\nRJ7BtucUioko4MeYB2B5Ap8+DFzAbFuJqkp0sJyTcvAjwKMe0wMGZ35d82h1\ntVbmrU9IZwsZIxW0PQpsxb2zGq6mpIQlJ6fKoScrWW1E0nG5e+57KaQZtiYD\noFnfPYODcQT4wqwu48gZusGocEy9Ufv3OgI65ytbBTmZg1HBEJmjion9CgkO\nlgaKN2PD+IW9zrcssve876gzWz+IjO8ntRgoWK10eJkRzlgvcVtJD9m77rpE\nKKTZfVcDDr4b00ZjQ64RPD9H6assR3FNTjD0G95NHZBhYMcmy9e3s6xt1X62\nEChr4fYEFNO5mQHIj/MPq9FWnDe0xWDwZ1B73bigqbpGg8VtK2JFdDJctB5p\nvYv+nB3iicLT/YcNA/ZNEOLrZrsXop/32eCVOpswvR+IAr62hDpWVh5Q9xdC\nslxMPLZRc4b4ePiLGUwIU0K3E4OkJ6rCvdVSPxvH6n/5JZtk0ewUf0jEPArG\ngMcs\r\n=pTPH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- **[TODO]** Convenient hooks & context based API allowing for isolated\n  re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- Advanced validation API which enables:\n  - **[TODO]** specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - easy mixing of built-in rules with custom functions\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={e => field.setValue(e.target.value)}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"6104977c2312d4ea9c42f84ea76fbc0b195e1e70","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"7.5.4","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.0","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.4.2","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.20-beta.2_1614022753908_0.04912963657587466","host":"s3://npm-registry-packages"}},"0.1.20-beta.3":{"name":"@virtuslab/formts","version":"0.1.20-beta.3","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.20-beta.3","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"c4c8c3cb9d689e8518ad547bd34c403d9d7c0a20","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.20-beta.3.tgz","fileCount":161,"integrity":"sha512-t+E15dxjKe1xhp4ZRrvvLxShl0P9dTDdXg0Y5FMfQaoMnmA2SSd1QRb1Cqq+kcry9qFVOPJhVAUomwEfLpeHyA==","signatures":[{"sig":"MEQCIC9LEn8Bh2OB9XRTgDfabnzxlJwAEusFJrnALjlrkT0yAiAawNm+sQMt+y9NCsIWmsmrbfbVWE/eFGatNkh9VCwhfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNfrJCRA9TVsSAnZWagAAab4QAJ2q7RSN3zz45YKh8Jne\nIfH/N4P/nKzJTKc0TvYmiBpTiaV5TEcCXI0r5vr3t49pdBd0U6RR2fKXxvqC\n7guuFLTK5eJ/Ncve2u4V28dnINb3cA6F3/j3fQTFu3wN1linl/F7VtyPs7B9\njEWCVFzJWPpF4kxGgBbl4PDQE86uC0XECKudxTvBLc/f9ua1+463n5nfi1Gu\nR6zJe9/NIBkLy3LasVE2OoJFPRnF2wJo03ET/Y1VR4NW6OugkJh3bdAtnFvi\nVbDeh8+fs2j2BZ8okpc/m4H148bUYZf8pDxI17eqQOHZe+RYnIAC/qsJu3+Q\n6wW6vg01+Jhwb0DIQb5iqQaAOHH1iJuIF1xdnCAFlotQsqc2I9sJ4xqQ91pm\n3IOnzV9NGbJAMeaQmmWPdY6OcrZMaEm7qqGj72eJgazG3dHTLCHSRJTIvAz7\nM5iqXbAoC/ffxNXrrs+RcYKO8JQi4LWrWXUJFRKIicmBiPLP0P3zheK0TR/8\nLwSwMtSbq5z2encda9oRfgBThIWW3kezy139qxCaZ0Lc0oMtzRFmXuHVLAGt\nM7UOFpV2IbzBTirIQkB7518NxjNHYLdY4rBP8Scs/4Ph4nczkqqtQ34DxCCs\n0P1eFrpuNPCYq0udqQ8oFZbczgmpx78K66gCTtJfSu3LF9hAb6qCyz8YIEiM\nkyN7\r\n=pOAU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- **[TODO]** Convenient hooks & context based API allowing for isolated\n  re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- Advanced validation API which enables:\n  - **[TODO]** specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - easy mixing of built-in rules with custom functions\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={e => field.setValue(e.target.value)}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","engines":{"node":"12.18.x","yarn":"1.22.x"},"gitHead":"6104977c2312d4ea9c42f84ea76fbc0b195e1e70","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"7.5.4","description":"TType-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.0","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.4.2","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.20-beta.3_1614150345321_0.5249671710439692","host":"s3://npm-registry-packages"}},"0.1.21":{"name":"@virtuslab/formts","version":"0.1.21","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.21","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"402dfbdf3afbe52a9809065da454a4ee95a065bb","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.21.tgz","fileCount":161,"integrity":"sha512-XImwTWnJIKvC0LoVVMX6c9hcR98hH/Y6HaYjmOQ9tRDa7Jn2af8N+p3vDxjlc5wnWkaVtK6tAkb1iJlC11iCnw==","signatures":[{"sig":"MEUCIDs57XbPbPTSxxNmPuWx4gVHJoIEz+qxigl9pPCDdz3sAiEA1QE+x5ww8xkStBMrbWXLes+S8RxB39+GfmVHNOfhCv0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN+jgCRA9TVsSAnZWagAA4BQQAIA8UMehaivYLpZ7kd2K\n2z3fPhsky99jOJxwoer8P9s50ei685aYNKNlFqxcD8E5HUp1CfaColCZSQKl\nAMp/DcTD6ChAOdmCdTbwhoYHYKfBTWkwAl8ykmG7NhiW7KDYKEEFpT4/zP+V\nBHookAqrnfpouEeSKLqq4BKFHvZkS8Nlg7hi0AT2NuVl/XFqQi3+Q3foh77l\nIzvLX3/S4PyvZJm6ZlQipl2Kr64uPuCS/3feA3XijFJBskkvktETKk/SgDw2\nM3uq6h5DFYDMSzJ5MzBeGlSAM3w/Dp2Ac1bLnqeC719qtJOOK03epRlczv+9\nS2w5hhOwXMinGb0WtyeMH51jQ35b8L4wH8r0iCHhOQusfKnor0m+3Kk+ocWH\nv9XSXb/ggVQOiNsfjqNCTm/bzbgs3/fUpWAS+I9uSjJSoctbJbbmJKoBbNZf\ni8ArHbTDuFTmxHf/OdynvQ51hbiA2BJsLRd+RQ1xH45/lrGwOn7/wZTBJSYX\nwdLbegR2OqGyWGxNEPTjOBc8BiSRkzJh8qwgtsem5mfz04+UkF56YhlhvcFl\naUq1RM1ptDigHdhOGS5k5paDWbHWVWC0qFqLyAEVrLl7FQQZPZpW6yEy3ydP\nxXKkCQFk2HIO1MQvtfDVtmGa5zBqOEZSAaTN6XmcM/6EK9+/m09FjOZQ+y8c\ny6e+\r\n=nHNv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","gitHead":"f677dac7ce170dc3d8b2382dff99ec3ec67f5fa2","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.21_1614276831713_0.5432722442012292","host":"s3://npm-registry-packages"}},"0.1.22":{"name":"@virtuslab/formts","version":"0.1.22","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.22","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"5444760c30dc2c31cce816d96ec9f9d950b5a4c3","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.22.tgz","fileCount":161,"integrity":"sha512-Ep/pEbfqWpVfpmLbJjGA3rP0FTf74gG7WPlR63irEqQ7HdKu1R1tQlZAbVw0ZgaAuU1pkBWjJ6tOm25iRR48mg==","signatures":[{"sig":"MEYCIQCQjgpeqxkWautF1gGFgifpTNr5xpRYb5446wHmotf83wIhAN6jlciM+gtot/+7XG957MynF8Hce05gQiYgBmw6Dp5A","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1024683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN/dDCRA9TVsSAnZWagAAyewP/idCHFUb5COv0f3K+Nge\ntJaa1bl9fdB3L7j5TIJOlgzcLoDWJ9+yl8Qa+KeRjs1Txem4MevM16YtpPH3\nLHjPpQUoXQivrfoG1k/VoTpyHP1ysNpsPFvwwmPHw9bbTBpKvLJ/pDOVIbZW\nZ98AN6Awlv7/5ryyzr5Woi1WMsvLcInKvZ6SwFPJG7ZuFoK1uu9HnmnSrS0I\n8NJTiJTPm60FSDAYG6e2ltUkyOB12Zuu+h3LE4NP00kYxybJmxS20TPcg2ff\ngvWvC5srkT1HRdBvLqeTPtV2CLVwzcdRpT4QSN3coGhDAhgGl55cLJT7PWf7\njfw1n+qr+Wd72rGTP8a4oofev51a1fcvuT1U6800dANKWk/VJIHbWbmQC31i\nP9s2kVtgk4J5380pMWqv2MrYJ/Zn7oYDVxtK/zdHmnQg9KlLlkOXDQovaqGI\n24pMFcm2sPVMB7Ofy0ZDUn72KsSLaRqx64osZfOtt1lYFtvVQXcaDCXsjQiw\nh3CQ1H80Y0WWpwPwyMMvRICt+VyNZUuBvU2ptJOOa7yL/fpATmD2SXPatjWg\n6V3J31IGAdXC4kX+uxobgp3qbbIRLRruMvjs1r9iA5eJjQRhAAYdE7SWWiZg\n9PYqE3fe8lD+VETwXyidHouHYND6Qaych+FV4MPXEpjr5XOP7ogh2LQRgfRo\nS+QS\r\n=QgHB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","gitHead":"701fcb89151285b593cd85262926202b63dc603a","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.4.2","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.3.0","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.14","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.22_1614280514711_0.9834044967049689","host":"s3://npm-registry-packages"}},"0.1.23":{"name":"@virtuslab/formts","version":"0.1.23","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.23","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"eb41166cd203fda8b214c8c70a899192619067e6","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.23.tgz","fileCount":161,"integrity":"sha512-ZU1BzLdYEFDdtngViECwl/O+ExkYvqpId8ReRd3F/hgflRCNKZHugx0rCpAeIwwz6VioUOrtFdNnyyZAl6hIow==","signatures":[{"sig":"MEYCIQCcpMgBOJVO8ByK4K6ruMLhlOYg4Dq+/zJE3jhy4dc+MwIhAN0ThsV4Yh6X66EjXC8P0epoTPGO+TXZmpCZN7fpGvDq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1076058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOMyoCRA9TVsSAnZWagAApGsP/jwXzFzeAAl1cf6b7wx6\nSSjXsiJ8q7mBA2SIQX9yj5XGuODbs02kH7HDjgPmBLxwVX0CCz+xCb3t0H6b\nCNrUs/kNZactZvuzssgrjE+rL8Rwaza+2ew3n9omLUc2fsw0GuvC5zWeQyFg\n1cnQU6iY5U3pYDH90k0Mgo5/gaSNtEfINVwjr9IJ05kurjucWWOiRELZ4GNb\nS9RsZjPmoXINcjxZcSVYdlLyNNTFJKImGh1HqSIaXdvM/uPd/O+DdkLQSev/\n1pPgKxwfV49Kf/pK8BUC7lJ/xEcJBtZdfS0RVjVJ93OoZlj2av70D55GMSlI\n8cJS8DPN4mkPY9BYtWMzNRyfix+0olim4ZD80BGPn0LqRt3yyFVeymzNdOk5\nEkbgClOZfhU0f2OITEGw1zVkkMuEEJHk9szTkKnHGdKv3J1ShH/SduDLfEs3\nTrLVmXAUIhunzKOjfGv+YY4LzPmmK2UHA+ZlxRzUyiNrIH3VjlCi3zKhXB6l\n0ND4KuUh77+4hOkGCIOgrQVyHn8DVOKFlXc3g/nX20mJwN3ChSWKUE6Ar3sX\nPuYN0zXY0s3ApAtJWmEA6G7Im7hDh8jMAFGsjkFydkVWEGhaeDs372BGxlul\n9V7qSf8xoafOUExaZ0kM7zuvn49vQ9L3fUnSbImfEoEm/Gq2iImgJsFpvDfq\nrZej\r\n=6slz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","gitHead":"37a8e2aa92075b8e0f5122d177129b0c7a40a5b4","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\""},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.23_1614335144346_0.7678603528626253","host":"s3://npm-registry-packages"}},"0.1.24":{"name":"@virtuslab/formts","version":"0.1.24","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.24","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"edc495308489387ce56d421dd855950ce1809288","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.24.tgz","fileCount":162,"integrity":"sha512-uAkeSnY4430kpM7yUcNtSkuLxkltsVA+qN8yWROeySSzJkLckAqS44OLfeHhM8843oBhBALPocXIdSz41WEAmg==","signatures":[{"sig":"MEYCIQDiDL+2N93PPHQqwG+CStfwACU9R4fDoabSFbrQmyOgUAIhAK7dmB/o3CdFMm5ofPhscZ3BFM5kJQijvlLfraGNFWqQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1079580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUiLzCRA9TVsSAnZWagAAZCoQAKE9SfGcIHeJ3e8QTWXw\ncggunAzJDWF+NkMv0fv4MjpjywmvpQke/ayLFhigQKp+BxreFr+OhmjA05TA\nPKg9teXbOPIb7yZOxUWzARVQXCdUQX23ELhnI0S3AO56B7n1xGf5RiZBVgWu\nV0d/MmOjdPbcTGVjeXGMEj4dR5XRmrm/BPiJBmgmvOC8QncL392VqeWbIJ3f\neCZq4wEiAh6WNdf6+e3FxloB6vnk3ykdr2am0EYFk8wG0DpM6pKXQMJ4Vc5+\nafPvDGDuapB6Wqnjz5f+g3XZcz3hpDuv8fVvvemtZ9kuJF4dcTVzlnq2zP7x\nzTuBgBXH3P9id4o/DbvkZrgWzyKjISzTn0gBkefGdO9+dFm2EcKBSK5j+GyJ\noOdmYk9JxNUKfUzSPpVC/yivUkOcI8Lk7dBNtl34q4nF1OgiLB/Jcx4moEuo\nmB7acY7CwEVonz/mNCPDUeYY2w4lp1Lt+u5Qxq4nzV1B/YIajlIKcWW5WVE1\n42SK6+fEoReFV7G3KLiGP2X6zb7vPuWWH0NGFi2ZOzSFMMxRW5Hf9/COuCI+\nElEfq92WpOUdPz+JieYx5kGoDIRKeWGJjxZ3CayQb9pnunom+driDsAE1kX2\nYjBtbNBInejjHVuGqz7awcKVwnbMWC9FMf+AwXbblbv29OpswrpiWJcApvlc\n6C7v\r\n=6UK2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","gitHead":"e6db8e401e1a8219ffbe0e248fd64ba65df7e98f","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","typecheck":"tsc -p ./tsconfig.json"},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.24_1615995634951_0.6623508878014974","host":"s3://npm-registry-packages"}},"0.1.24-beta.1":{"name":"@virtuslab/formts","version":"0.1.24-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.24-beta.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"82675ba6d322468e310f4613172ba5cc5e671ae1","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.24-beta.1.tgz","fileCount":168,"integrity":"sha512-9B8nbHB6aiyQhflvwzAccpgw9VkUjw27FfGgwvDStyYEvqvF7IP+k2rpYsZRou5KQhO7WzH3ntQzoHMXQcsgiA==","signatures":[{"sig":"MEUCIQDNVxldUzOpixAqlkJkQgEvt3boWEfDcnX2KG8qdLJ68gIgVagBpcTTALaSnhWALW+2gRH5FY7efpcHh7uK9tUYEdg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1045944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUn6fCRA9TVsSAnZWagAAXBgP/0DZtqQ2zRfATsBzBEh/\nVM4ZhuwDUGxN7o4nftQ3yEznVeKye4qPz9Ul5djAJajrWoDOaynw2APMzOIF\n/mInT55bV18b1TNclkRaEi6XpJM3sFy2+9ly7jo6JQm+n31/2XmuCQ62uQo+\nIkCGkfnFNE7dgR6cwLwC0rhJP/AlYTx8lW+BhxAzycLr/beT7Rpou0/a3c2Y\nYUtySg5NXOG9YSJAQTaGPRARiDafCmRft5mTBStfDcE0eRUy+A6GtiMtHIx3\nfoJ+byIsoL6jwzb3cMVwv5HAw1cUKgfMPboGPy9YMk03uPeQl11nShKSzRnI\n825GaKyW7FJdA0du42MYAx4KMNLNsro+JOI2bY1qsFDlTR3pkc1OWQA7cXfp\nR3potyqGSPCdLbcvTsuuA75RYOWH2F1phky2D2bUp82iO2WX9XNidqyHRiwO\nItr16owtnL6/52HThHwu1jGXVqA9RDHrwjv4LNX/ulVUBEHcXlKpMKalFmep\n75fooSXWzr/7zHsUlDW7Gy8FeU5lRdfvewThcxcjuNLQ9TX6avBzzv9GhsAc\nOPjGaUC0p+K4Mg9YaHkNFMDg4ZGpUvV8NdzA6ZzY2DlPwW2grAgHeR+iGIqx\n3mq2waV5Kqo3jCEUD+POmES1QUWCCQjiT33JHtVwWSYH7Upb4Wf6Qqma4+YL\nvhVp\r\n=9eHo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts/tree/master/examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { createFormSchema } from \"@virtuslab/formts\";\n\nconst Schema = createFormSchema(\n  fields => ({ answer: fields.string() }),\n  errors => errors<string>()\n);\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { createFormValidator } from \"@virtuslab/formts\";\n\nconst validator = createFormValidator(Schema, validate => [\n  validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  ),\n]);\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\nCurrently API documentation is available only in form of JSDocs.\n[Explore CodeSandbox examples](https://github.com/VirtusLab/formts/tree/master/examples)\nto learn more.\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"8d6a1e0a33e5f442cc6ea5d6465d0704c79fc270","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.3","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.24-beta.1_1616019102850_0.4807808655016237","host":"s3://npm-registry-packages"}},"0.1.25":{"name":"@virtuslab/formts","version":"0.1.25","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.25","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"ecf68d2f95629252b6b05cf51121d04a10ac39ee","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.25.tgz","fileCount":162,"integrity":"sha512-TJPadiodz9BtTwsGhdmn40chUJb4A6RgQ67u5/mb1vXznNy6FpJZXevdiv7JX+RyNe1BzY999xhFaAoQyc5VDw==","signatures":[{"sig":"MEQCICZ6dGJ+nXXtUReLIpuEd/Uazs1yqzMalGeOhc9q5sXhAiAq5DaQAHEkuFOzi5ZmFKCaqgQRfo6YrYZLvwm6c//Vig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1086525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVFoLCRA9TVsSAnZWagAAUGsP/AkEcYmOF2Wi2WTHlemq\n/EROvHNZvcVSW+Unn7Y5pkw50cxX4/tlPUZVdVVqwlHMx9enuJpqzv/fU4No\nuQYbrCV1MjhuP1kTyEd4HkZp6FaVw0zJkgLo2f8dNfQBLQKKyOqxUcPP/Q/8\n625EMp6zej09YC5oOdIFfT4L9+MByZGWsn1w4G3N0Y3T30Ivr7QZ0BNNPupV\nZMgs8Im5rmY99M8GLx6EeM/4OLCWGM8+9loWi5ztipY3rAdjL8vT6svKRzj2\nEM4DkJnApkZLwEMr2LypsGAnHDfz7p2FoXzWIoWXo+rB04l3kxYSG0dRttWr\nhFBilFGG6EtO8w2w3uDMyVsUQp5VMzVZiEwx0tOhpIhIYP7uyOk20BrBkbB+\nvSD2MKoiXAi8EzBhV+Bk/UzmDC2zYtOljqhmOkEfAymUneXx3sXeFib38hWJ\nurO9wLgVcF62gonbvdu4jZdN1G83MkzUcDvd480wb1vOYeuv1ckZNeDUwOwC\nfg067r8WKakgvK0kFExUKJJbNyoX3sOsFUARZCdLtQG4itc98tGdl0RQGcvB\nO1f+4f+aG+UII21zs+JolzCFJsM1dQ2eIUAMSd2aQ3btFsBN/hSZH707ngFv\nM6vpsiCCbGXKke7kJKBMR4S4nWsVyhqaK+KyM0jlvYk2eZ37SkIfvFKyabOL\nGcst\r\n=Q+1q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"dist/formts.esm.js","gitHead":"a87a791e502f47359d0bc05086df5d5b4e1e9dd0","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","typecheck":"tsc -p ./tsconfig.json"},"typings":"dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.25_1616140810844_0.15249016550253502","host":"s3://npm-registry-packages"}},"0.1.26":{"name":"@virtuslab/formts","version":"0.1.26","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.1.26","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"ca703e2e1e0e6165330ba5612d5ef84ccb4411f7","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.1.26.tgz","fileCount":168,"integrity":"sha512-N3+gjrKQWrUPx6ecCY4t+k7Leb+3HK1eruhnm5mKg2W0a6P0kOQEb+q9ETTNz7nobUpaMUkKYpeHEzTlv8oeXg==","signatures":[{"sig":"MEYCIQDZxx+vpAWe0UNJZnZZKTiy0R6RsxrZNweoE6y5XYkvRgIhAMrdstlDkb3LRNixuGp0uClXogCgtFg92dBJKxFf0fYn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1052975,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQ14CRA9TVsSAnZWagAA848P/0LWK7F5QqI4CmUzCoQm\nRSw6RvQEBSbV4ls+/n75SazXv4IEk4lmrdyioWWp2DOtkqcS5OWTux33Nxfq\nylUwiMXEVl2vGGhvBLjXNgBh0tSlG87kg+MJrDjMZI6ex5qXOkpXm9jqQjBu\nRoNNqwk20gXkCbUzDeJup+R4RqNdhZYFGIByTC5ciqALvytDRRU3IA2WHQYQ\ntXJEdMFGvIFm7Fd84MjF5+eN8dwqHfwfLmrD8HrxMLbdqXHaJlJ/O85ONW2r\nayUP6FKN/VqkDbLa4d3zdig8PJLdAkHGqM3jPY2QzT4fZgzxjdeE8dRLYD9d\nlR6+nqQHokZA5IHuczOQg2CIS6KtpKqGAKIz0G5K3W5DmF2P73XREeJDe7ee\nJ4wS2ShRbmtx8DvfQ0m/+L6iBPO2zjAhT600Zy+pt8NZWdBlS6TSZCSbxt5L\nNM9ZFm/0tddprElYbUW0Wt8Z9rP00CeieZSWOblMGGTv/gxwFI0x89l270sB\ntjrYcaUBG5TMX3n+JW6Wz+L8Na+6n6dYQx1LH8FGUXDsb6LuWEdWPhs42t/B\nZ573L5uDOqZ4LWhkKvkVyfQnzI70EAg3GxOPkpdPaPTXmn95QL0EPLqELLJA\nf5AU9Omwg1Nm4ldjE/zBwh5CV12zbljopd5uW2LWlbjsIvL/eUBpsrhb3aJn\njRU5\r\n=9PkH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"52a99968f333af066c8b927eaf05d9e3d9d1722b","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.1.26_1616186744397_0.30663279869026416","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@virtuslab/formts","version":"0.2.0","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.0","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"9b58f623599f6f67a7b3631195f2bbebf3de4228","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.0.tgz","fileCount":168,"integrity":"sha512-FFPc/OJcxLVbj9zaAlz/+sJWCyHgQOszgdu4J6H6XFDnT0D76a+SIwX2eJjzcguRn/bq73Bc69BgIG32jcy5Pw==","signatures":[{"sig":"MEUCIQCvG/BAodS/ZbIoF5smZOWzTnW28sughmqQK7MYK3FGSwIgGSNqZLhGI7VCX80Xswd+XNB/XygmXKBmJeYFr9Wguok=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1052974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV1SmCRA9TVsSAnZWagAAHRMP+gPwYIAV/YgzJ3NfEXwb\nam7JLYCJqSlgxMC3YmcqzFhptBv32kFtG8A9KBSFh60ko6vO+E16fgB5yKRI\nHsrjmRjrM45KAsubCqWWXBf1ExM+NSvBRR76od7QDjpFzY6G0sUjtTa7dys+\nbQA9UumfD/A2u8qoRVrC2Odn4yMq2bdSrw16t4s3tg2sFWAYn3cC9hUXzmxx\nq4lh7NmtlW90ANend6umUQVuP4DmA85ndVNQTA/fUqzwNS3H5qFXla1s9AvV\nPdlEyPR+PKQpdU/ZuS7XiW7FEV0rTtS3DEigUsvxgVYMjylvoDJoOwwHfqYb\nuaVkodzNKRs92nD9TbQF0fGTTbjbjog+Vadn8EOAhCEu2liR9me9FbIraLCZ\n1rFXL1d1/W1yPg1I0rpkcZoDk28C00ph1ZNvTkahwWhFizH/1oO/NpK9k7eM\n7Je6f507ihDHj8We7TudqmlybtEmv+fQMLNNNNJlpxZ0IHm0kHxnGRkTmsgY\nVXyWogjwwiD3smkjmqTUIR9gANqam8rbcQsH+iVosg2JIaKoLHcSlNcU/zY9\nagyCRtfT6kgqeD2L77HDJa1vfro0+FXVLEOiu1oyizMiFsGNX9rzKd6AHnQy\nCvWyGHmVJ2VUXleEJKLb5mekWB+wYAagGTeNov4pBMgScSn4+O1YcVAAO9gp\ny1jo\r\n=1rbQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"143d56a7f912535804af6d4ee8fa832a0f86f407","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.3","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.0_1616336037928_0.05295862656455852","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@virtuslab/formts","version":"0.2.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"6ee90369a6819f9b14599ed076ef8f8b6f4dfcf4","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.1.tgz","fileCount":168,"integrity":"sha512-Sv+pqHIR+bjbfoBvvkO3hcwhSFh1KdcXYJrFRJu50xbhYQ+HCqwqmDO/D2tVZMxpkTP/Z7QomsToQ0/aQjhITw==","signatures":[{"sig":"MEUCIQDWyNon4nfdxYyfhXuW/FJpHuu+cIgt7s3ys1RVMnMRWQIgFHRMFh4uZOQEfJu7FLzbbO0YlbK9ONpECRx6Z8wxtIc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1053892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV3WzCRA9TVsSAnZWagAADYoQAJmpcGPeqUC+r2uafHWV\nRGyRF3YOX5JWSfgMFbHjcQ6zH31AhnKI/VG55AsiJyRZPWjBy54wvs58Dfu9\nK5HNa8Lqt2+iuO4jr+OuQZ7nhuE1XiPgOPTdDsVMKonSXfWpoC6IK0ot8Zq6\no2N61pyTj1VXyXF1X4D1dz8aAcGBXnflQVqEKuMzQhrMMjBq1H5/ECStVwQY\naJK0O/41LHoOoWg14qIaTfjClUgPJyrvcPqCYCpGmwoBo/JCnmZ7V62MJoLf\n4K0oECVhhkhdUbw1V7vzaDZq01uYHfBsYVLI2czH52ZQQAhY/Q5VI+8TtwaH\nacD7qJLJiO4r32iFagG04n99hBHMXL+7h57pDQrc5ZIu3ONlowah/McljjHJ\nYCKD0hc+IBgPqrt5LMHGP2fUPMuvg3PGNRNCJFDbzFCvN9CSxWV4ogV49VY3\nSIWzmvx0xdWlE90fubtX8AC83BAJSTI4K2/JXjOlhSEWD9bq1C5/KpA5frc7\nOujzxgK9IVP+uffo7Mo0rVywRoIUnJ3vNi6bldSf4vUjS6NZlq/IDet3cAi9\n3ThvjXicgDVwHd4Tix4l75Hse+K86wg+nQrWJ0U+zaCJiGZSskELlvZQHugU\nmrxcsJei2RNycx+TspNuobBzcJwWuLNN1DTtZEjaUtMYYyZCgiiKNQmd5h/E\nFzxi\r\n=Mq81\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"6cf1254e5fc514624fa2df4696e2614346b1319c","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.1_1616344498889_0.38758255058142455","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@virtuslab/formts","version":"0.2.2","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.2","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"0b3309d2b8dcd9b933b868586617ac002fe1ba26","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.2.tgz","fileCount":168,"integrity":"sha512-gSrKqWnYjSXprGWdja8ylJ6FOTG7VkAPrFJHTfI5zQ4vnbqCAVGKheAT8ubTk8ft5yOQU3+MpwdOzysZDKg5SA==","signatures":[{"sig":"MEQCIEvvYBzNcz77Ajrv0eQNtekzWGT0xhP5jWbp8K3RHCtKAiBm5VgUzlarfx0IhzomIDS6QLH/fPEeBtnjW/Ih+qy26Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1053979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZjtICRA9TVsSAnZWagAA5psP/iVwtgE5CSYwUPr53hot\n01457YQHnCkD0vCkLQ4zwT72qVnbDeUPdSHuIupt5JI+IiKFGOA6oiUB0GME\nzcp6kc5XKWFcKMM+/HGjB+Vrz69SZsfeLMQduBRGV55nypmWgtEHi/Offnqp\nFdKJBe412RBXz0K+3Zjs8C/OwzQVeimzHNVAEgotwDgVw6iIB2SYTvrq8ACM\nLgfdm2XT9fuQduJ9uepF9aVRnInBUJa7cL/rz+1GZZXUxwKU1pLIMXMpz5kV\nNecR6nPJbu407Y+yCbm0Sx9I0ex/bHgY82LbOAWIcuNRDhLcbEJTTQ1zwKTc\ncjrriIbHKxeXg45O1eR8seNI1CvyelY+p+rqf+vmutN2yr3a00PeR2yKBYJO\nF1vJG6eCwF99IoKRGZ7h94BCIDlATkxA8ypdKuzp54xyQ4g6WU2W4ag61aB5\nsrWQ+NHReUK+ubgbB5PwLK61boFfW18cPh/Y00SydrwfnyQX42cwoXfREbC4\nU+VRcG7TqYvi3hIjDXDyaUSCK3RRmqJsNejIwIr1UP4fKSXnMYkaKwHOk34f\njiB+nkXiSpqfsFuq9qUJNUQh+v1qdgYi8HqCtpGFPRPDpdQQLp/1ocZBXuA1\ncS/cPL1B0m+QoQPn8zCWR0wW8gtB0E/LS0mII8VgqHlOF7N0Ql++6APwG6kv\nnpvM\r\n=wH/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"eb837f7924135a5e9fd8f02fa88777e05bad9791","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.2_1617312583466_0.8073526163249296","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@virtuslab/formts","version":"0.2.3","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.3","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e2a710654dc8e6c942cde71e85080dc4e4c16278","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.3.tgz","fileCount":168,"integrity":"sha512-957VI0K5h4RWI7Gv7DXzWpBo63F3gH3PVuG71rfoyAMa2MAntL//TN8292iV+RDexdZ9tKRjI46NJED52HwIzg==","signatures":[{"sig":"MEUCIQDnKs2qbIH2+Ti/AOz7DKBNWMJ3ujORv3XboVoArncHhAIgDnRbwrJO9eqpdwLqRBkSy3O0fgQn1uDfGMFe+ZT1lJA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1055648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaawsCRA9TVsSAnZWagAAmjIP/jAPdrthADJN5dXYgwT0\nl5mitd3Wm6mzebM9XjKyn6Dk8TAmGg4pknKHG21UVUOey+pOU8/rYGcTFVGf\nbO+OgPft2NuoIphv0WJe3E9mf9IK0GZ/PgTwOKGjLdePmiZZMYmZSlAVvPB3\n1GjbHljbAdcIeG+7OGWOybVv4QtSIgjw6kdmucaUHUGnoa5vYRSqpnj/tTRM\nahD4nZTAivddVwenAopJ1iI0dtubsZD6YdzJOZY7NlDgEcTN66rodGo6NK/D\nRrqzEeQVCyb/O3zKWs+46Pu+LD+vWoGqdYts6BuE7XF93jFL6lRvQF8HIVqu\nACzKrUOAW1auAcR3cAuYBv2iEVPh4ylYtOO+1iD0xZhUi7TAHM3m7q+F/pES\nvWeo33BN1a7NRDi16Kc7lSpzkfi1146GPH4mtJ0EJZD9vkGiWOQkcBrdgs4p\nFtzHXrzJl9u4K2J5xTWeb8gp4NBDwit7/+/IcoeV4bK1UbeI7nntTIGpHPlm\nGYWCVxXlmk5D531S/KJj3rzCxprfCGWdMqsKRX9hFQ5FDzm+JCTSbRQyZYFT\nwbl0cmilNe6Nio2cfWNzSU/+B+yrvsY7PKa80QS6Cv+bQ6sEBxohLTuZaZ7A\ntDD3Nl0o1KFTxaelf4cBMAo0ABohi/9wnYkMP7PRzofvvsN1tQuJ0JB7iMUz\n4lmR\r\n=HKZw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"8c4edb391027da3b72768b933d466c447a7b8a74","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"^4.0.5","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.3_1617538091369_0.22083732967592118","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@virtuslab/formts","version":"0.2.4","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.4","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"48fc8fbb426e38f951f67e5da1238461f4eceb4b","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.4.tgz","fileCount":172,"integrity":"sha512-2ICDEuajtu89fGhouE9KxQzlrbkW8J32UeZunbIVL9g5Ww+GjHqQVU4bZOdRR8bQBJx6ERWAeoMvpHrr4d9h8A==","signatures":[{"sig":"MEUCIQDH5fN1wS9zaeZCUYN1F6DmNagqmA0m0dH5F1RI+uot3QIgegrrVEh3P5ZQYGkUVE6psN8nI+qTPaqkh/W34lao0oY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1085451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdoryCRA9TVsSAnZWagAANJgP/0+MkV5gUxD6An1xh1u8\n9yOzrYOtyYIHlwkl85TWGOrMdMQW9KEE4TVxwBR5ucetxOop1H9gLFO5eBSy\nMo5sx3FYMuXbCt4/wJeCRTu4T996Lc+TDVkFzsWhB7c6xHK9JJjUI1ioOm/J\nxxukyLOJLUjmgynvNhxzhATTRb8FCqZcehZ41OIVKZGAqgzHrIdsLN+Jow39\nL7lUyVV3b3LsHRx2pKFQO11zAVSwPvLjfhEThNMG+pjElMT5cmyPYHCgO2ku\n+3IwewSrX8eEPupxEmGLDgt/oI8RXQN+P7vn7EGDfm6wxOlK5/L24qJSVx9S\n1viul8MW6PK0Vc5e9KHnDDyj2PSTP8o0U14PLYbcgt5dhfJ6cPwelZhnzuGv\nmSU8uRb6Z2KGsM15axjtR2B10Hhf+s5PzScw375T6E6AypML6x/zzwhBscom\n5Lt2KCq7tdGRWjp6ttsjOP2QWjYSt87YCYztwFGd/P0T1xh+upbNwz03vnDE\nNqz3FFxMfsrFLHDRvdByeDnBYYLbAX19O9UIJjFCptj6gOBn74idmfRdP1Bg\n724NJtZcpeC9WYcLHzsEsaRa6tmTZhDu8+m6iRmLIKY1YLTIq+zolZXgSFnY\nx3kCvzSBDNPDNbYsEj0FgQUURI6O799enIWHifX8TWeTnF7P/Y0Kl+uGopAa\nxezt\r\n=5H+L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"dcd2b48f3514a53a9e67889af305106f9566d67b","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.4_1618381553588_0.943342853042656","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"@virtuslab/formts","version":"0.2.5","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.5","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"16082a3f37b9130324651e139c9188866ab1ddee","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.5.tgz","fileCount":172,"integrity":"sha512-VW9NGbCG9jPpOxTrbXhq0VGKuxeRPsgOzyMFMgsPTGGOfMBDCaEkKwnywmVyv1HPBHzkS8GEw7MDQSsEYuWX+g==","signatures":[{"sig":"MEQCIHd3zVbyf7Gy21DluX2Nu4KlIpoNg7Sk6pIe81S/qWnKAiBnmK6Mew+e3PJ1D9wJauE64Y5jBOyjCqlN54F5uhYzmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1100058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiYndCRA9TVsSAnZWagAAF/MP/0PnIYJ2rJ6MSrzaExbz\n2mgzi7JJhvq3GzRW98EM/KUAoEFal5ZIlqfR+hdnq5pln7eJaQocD/S887t0\ne9Jc4k5EsmPDFBhMytS9GbZ8llwSzBx7JqZuD6iiOMjNqWcKmpdb2wFlZkxB\nZ7SW9GjSd/zwhG74PZ5Se9FM1Siv64xlpupssx3/i+YCkFJ7o0VM62tM0/sO\nPT9er5YjvbFnzqSfno6dCk+KHyXQEXKFdG+3M8+7yEjwkAi2QpGrBzf9ZeZE\nCq9ZfhHUzNp1Rkj3UeVY7xRbW6N56G0bG3uSoZqZqtzcqXCZk1uSCzMrcl8T\nCbG8qM8IiJmZx02YAe2zQwl0L/BDjBU9Dl1866pYGE+bqSllNTHASCeC6T3/\nyje2f1glMc6t+rzMWiFHx07dn9pjWTmJZ1H7p2s0A79AXd9wq/+iV8If78qy\nXRuV/d+WUgUaOi4GxhkDmqsyYQQZBvkh13FQ6POkq85fTNGzZGr3hMYNSBh2\nTuF2cHtOWhtInpExc3ApEP5VRwHCIdlxD0ostg0Y90P2jEAk9963xgFVLGgn\n6fwaOS6bI1oXLbaha/2qkFdP5M6yJ6l16ilf1qlJbjLcYT+9K4VnmtMV69qj\nS/o/Ef7h3cdzJzVU7TqNk+VXkIY/HBpjG3A/WdoPO83EeJMllzoxfb3q2dsA\nBKUz\r\n=kyxa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"e3c5cbb17239d9a9eaa1bc529f16861e1de5c7b6","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.5_1619626461274_0.9253866982448964","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@virtuslab/formts","version":"0.2.6","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.6","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"de74c6bd165f1bbaa1b1d61d500325d52eeb4b5a","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.6.tgz","fileCount":172,"integrity":"sha512-RUnXv6ruTAA8jjBo9T4Z7/zT3yTLwrpjXMjlLZc9kprz/4NBWTJ030uSHgN6+iD9ezUA0kGzn+2WS/EwVtcBHg==","signatures":[{"sig":"MEUCICvvro7+uoqfLSaEKqdb47UDto5aQW+ZrYof4crLzSj8AiEA4+OJFUUj3YteuocSRNnmGAuDCuwnFoD2zBvbmYInAC4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1100145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiYz9CRA9TVsSAnZWagAA6yEQAJQ4VXaDUx22BmvfCfvv\nviOMjFDoypsypiYeR4ae4Fm4pLmrN9SA1QvrnhsFQlVCY1dK25xMM2oTICQO\nuyCLfWY9CwqCWRMBVnv8Ndivh8xro2T+AIQxQgNJOoirBWOSGcjpO1JVC6pD\nWNrm8OODQOoA5bf0ZvoSvStyXa3DEtLu+MhRhf79ws9LHSgc0PNV9mzP5KR1\n8VIZPcMa1l8UM6HJO6nUKc2yfqKObI2xzlL77XyM5Y5lXaUEzSUsrIIorYo/\n8SGkj84xK65yqpXSq/jBNodXg5IWfK6FVIIT9USjX0YJCzy78Ol8p2PQDhn8\ncSFSqI1Nsc4E/6UfMzE7Q9t5g617vvRaWESWZFkQsXgolN5y40pXFmVASSDZ\n0/eLbm2weP15TlrIOHCkmLoYexn0toc4X1OiLqjLCqC5CshxTkIBdDmLyL6O\n9bQS9pGqsxXiWP1MVp9xHIkewC/tp498bE+3x3h2y6TOtT32IWIvbMVcu/xo\nTlvdq8EhTKYCh0mvn1kWTvYG69uoY2gqwjoFoOBWwHCFUv/00sj99kG6PRiB\nAGKdxRaG5N9si3zE2tQqYdmSRNxYhn4cENB9pffGvVDqlElHqxQBqwI4R36N\np9bljbD5FiUSW+wDAeMkmFOrusHNKj85vJoTSWX2HONE+PGtpktJZ9r/wZ+y\nqXoj\r\n=Pq9u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"4098af0a8173eb8baacc44b8dc5f9ee7ee4f9c2e","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.6_1619627261481_0.4425247945444226","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"@virtuslab/formts","version":"0.2.7","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.7","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"b3915a3db57bea8e6862111a59aa5497df7230af","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.7.tgz","fileCount":170,"integrity":"sha512-h5HmGCtUNSShozUTn17efOHdCCeFvvd86+jQD2rgiCALNjkfuWv4wieePBanPtuXqlmHoj15qwEdbUWr7E5MfA==","signatures":[{"sig":"MEUCIQDKV7WzBZ7MEkEvm00PKfapAYRxGZk3D1qi4WgrJUuCCQIgD2C5TGlj+RXnT+YTOSdwKslulEY9XHHepPfoUIvrYZw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1096214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjEVVCRA9TVsSAnZWagAA22wP/ilRpR2/aYHtO1ugJMsA\n0AplLRFv75jIyTB4CNfEYQmeCH72VXOGzuysPygb/YBc2PlRiM9oxcMpakbC\n1Dys49r5vTji9wHOwV+bWOWNM5zN8YgwzufhZ0kINyn/ZfqWNcLX/5saOtqm\nVqf91qjgJXYW4WOrSWaDfl/kd4D8WB31JtThjQZ/xBZ9Yd775jMdX7oeUNtD\nXeRHk6+bPWT6SL88xoOWh6S+rK+tb+yweswE7/gpMgaSbAlgp5d09LgpjGEy\nCRs7N2y3vtBwf5dObTfgXdDgVaT16wmvErW3UUnS6gl0NW9nxLVFNsXR2tpe\nf/4ZQGPois8oxvVSGhYoTX/3hVDC4l5p6hREP4B8YQKMkLuRSfzN5njZkaTb\ncZLAhIo4ex+fP/z/f//D44CZ0iCRdoct8MMkDQy0p63pbFSD0sdHgbxRUd0L\nsAboytuL2aY7h6AMlt2x2fOU/gQt8dgBrIeav7NUIsGFMHuJdjB46hiJ55kv\nOXoFt6oNW6RohKadrwqLIQvumzwa6t0l+VFKGWXBU5OKDTg9k/HnnL92IMML\n+Wk8mVmfyanwmiakjM0B3KfP3I5pnFaeKNUMg9DNa0skDBNO5Q5pnZlQhQOf\nqGLx5WhioskSWiWm59PEmzg8/8uedo6Tjw97knMijiToAa9GRZ/xvb3Xv3NO\niY4X\r\n=sfGu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"b6d289eba1d3fe78d6241d6ce5ae7a0525133b81","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.7_1619805524944_0.3337936254267926","host":"s3://npm-registry-packages"}},"0.2.8-beta.2":{"name":"@virtuslab/formts","version":"0.2.8-beta.2","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.8-beta.2","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"1e19972772c531d88d54ab7f0ae446149760309e","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.8-beta.2.tgz","fileCount":182,"integrity":"sha512-hunDXAftYR9TDECX2ukeydHqlB0aGuw0+e7wFoQgWlyDIC3nIkH/xLVujapUkzQXuE6aMBoa5eZyCWHM9purnw==","signatures":[{"sig":"MEQCIDa1gk5vyJ3gdgMEQo+kMUd1xQ+wS9CteGhQWtP+ghsZAiAp57X6cPdKGECIvIKiLbIFtfR+dLcSriWiWUOnp/MKBA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1155533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkBJXCRA9TVsSAnZWagAAvB8P/R8KDYh3uwWAJRdYTaO5\n3VdA6y6e3Y58BOZsp448DH1IAEtfyO3tlzlkqbRSWNBDIqU9A2SlusAx+ZkP\nnSOzPcNORbPHjuicmJmDW5dBB3QsQLoJlznGcRca6TK0/BTDGP+rj7g0yC2v\nOo4BQzSwGyvS5hyBdykoFt4KRxSJtlqlxgFPMB6UbDyg5TMQQCMq6VSWCnZ+\nKY8zVQkBYcN0CmhlcIOtomm2GkwlWtbMrEJHL4yWDwU9mrffkfE9ed84ZaYV\nWEa/nMyRGMbTseLeYydLQcTI6O7vmDF2w/Dn6KVH2He+gfaaiA2u1oLUPKdp\nJTjgrlj81mO1aP24cFFjZaguWUHj2t2irEYfOJPTtbOkGkIiVdxdTbtMqqW7\n+UoOgOb9Tvs/X6XwiE5C5zdwdIilEX5Owjlg+b4P6AQACbPU73I9VQ2iuRaN\nqcjquEz7ggvX5G/aDxaEoris3VKVkkWsZn5QuO+bBTGPRsIZH8iFItL5AaYy\npO0omIXKDhLVDYsvc94sL7bgqHhQMWmIkh0DL781kTwBY+4ui8NFD5GSMnLu\nRsB+JcrUr7JDa6ZRy3FwgilIY/pobtw9f2z3xnrfJq8xWN0eOQnE+I7bM2jy\nOvUTMVEg71Vvwrf7ef4B6r0maBC4zSRTHgIzK9w1mfSO3Dzz6499Vin+JSu6\nbB7M\r\n=DSnL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-bsrv5?file=/src/example.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"dbb9430e902b3f764382d8471cfdf10aded23884","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.3","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.8-beta.2_1620054615296_0.4471044482626003","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"@virtuslab/formts","version":"0.2.8","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.8","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"45d7b7debf80c0de79db9f1deae85bbd82cffbc6","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.8.tgz","fileCount":170,"integrity":"sha512-Tss6ZGrLR5Tdy+jdfchkzH45cyeZMTKcJFHm2ntFJ6eociqP1hk8QkhASD5Ez02I8rWUJN8+IauA1N+Ed3H2Rw==","signatures":[{"sig":"MEQCIHwy1lJoyTdV7eOWjH9oE5tbBW2NlhbwDL6y9WyoOPTrAiBBCku6u3FyO/ex82u1jY9tH/Ys6Vc7igqLoubYKRxhUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1096169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm3lKCRA9TVsSAnZWagAAE8YP/1Q2G+7+dCAjfaXydMUM\nsYG9TE/L1IyfgOI2butfKRtJ/ycAxSPMtBqUqp3nmL8LGe3wU+jVDUHaENdI\ncdfqteV7Vg3tES2GJUD7jIpsemzDpdAP2gGlvFXNH4qCpdyf3bNQkA1aF1W7\nK73tZHqTyUrV30Y5gCV5dsRwDLrv9EnCfqRO+leQahld6wR1C6qzLPXhSSDN\nmuAJ6EyqrgzrJ3E7ieuUBbEe6Er5gQighZlCTraa9VYz5bDC8J/65BfUhTvv\nmBeKs2l69Wf9knXu1AMY59kmExlWUaxeoMhJelD+j+HUVkn0ki/GCTIvCDU0\nWaraTNYmF28L8DQ7k6+1P8YEQBWFkiQYAUV7dY1w7Dl+7LVwJpdcWduFn2sW\nWeIkwQ35psOmdPeZaXVFxYWr090F2fEmk7O6w3BYit1evDeZJBK6ETeGSzdv\n/EdwG2FeXBDRW7ldodZvmApj60gozB2ejruZXPb5xJPf58EJEnJRsxpYr/Ca\nSuGaO10IkgEuR8dpOYgmKg4QXnIyjJ9wae/4rhni2p+ezJTRlot/I4RiYbuM\nFRCjBuXZXmkBHdRmPqldulIP3S0Wme71L66mv64mkVmLnzZ7pIRkvjO9D5Sy\nQeYBAMbwD/TKHqHYqrTsmDtvoZ662sdL20nEtb5wDamew2Fun2y7/lniDlpU\n1UkX\r\n=0PGO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"4303e02cfb1e31debbe44f543f2eaeedc8f4b76c","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.8_1620801865730_0.2514087294545766","host":"s3://npm-registry-packages"}},"0.2.9":{"name":"@virtuslab/formts","version":"0.2.9","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.9","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"984fbac9f8855eef69357b8c8b5a9c55967353a1","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.9.tgz","fileCount":170,"integrity":"sha512-crEhdzys1f5EyHJNsq4WVuV0dZKxwxlx0BIbUnqRWpmHX8vViM08JZsQd+rwirS0Om3IYdAyih1rWNahiqdOwA==","signatures":[{"sig":"MEQCICJT6d3IUm3OiP6CyIn7LrNmpTW5HD7JfsYyVSJ/Mdp0AiABH2RjNvyi03t2Uqv1WuC/6cKKiXDtkTMbQ0pvIBNWdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1096256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/DtCRA9TVsSAnZWagAAPTgP/08+gubAMXr6J+GefqFf\nEUReGn0NlDDSFLSDuOsaooh9Wi+Aah2C0ea4PqCr0bhVzLpf/lYWzOoa0Zuh\nnwiJDzdT0jRQWtQkkU/+4FkM9g9aCRUhzV5rXaC1+csIpv6GjqOb4l/W8CFM\nr6obevmDQFbw+rYXdmjn1BQIofGsGHzQwt8H3TzC31OxFZebm2bm/et25G8W\ngAzXGdDxErR6N2sc+14hT6onjY95GyDHEfelVOoLIYX2t2BeeeYa13ClbAgQ\nC3koiuNLQDlGGBdKjHuIHh7DLxvuCqta2LT6gNgVDm9aMaUhyANSLrDXryMa\nIu809VnKyAC9M0m5qRtmVknwdeCdybi5ofO84aQ6BSLacJoZg4tkZ02ucc6N\n0OhzhRxJFuY3dWkEPig/dLsumjsI1usseb+MIilpfEZHCy+dDLttq/7Jfqzy\nV3th/y+V0dBOiUftzzzzK1yauC3lxsT0qNKnUvSdpBTfzvOb8zE7JO8Uuli7\nWZmYCs2znwTL3YZCGreNL85vpeToRNY1f4qz66M7TMbcTWWv0r2D2vt6Fe9q\nYSa8H6w+kDFHs463fn1AGjufbeQ6E1zD9SywmWHbpFzAnFlPELEzdLv5WQPx\nhgPHGelPVFpl5BPwnRvu/l38cJgyx86A6kOdHdyjLECFQb3pD7c9Nof+xueV\nXCOG\r\n=rOMt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"6e7580041342c94d4acad549a3516c52b5f42db2","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.9_1620832492505_0.034226918629558956","host":"s3://npm-registry-packages"}},"0.2.10":{"name":"@virtuslab/formts","version":"0.2.10","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.10","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"1cba427203c102ac354a029b7a4b224e520b41f4","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.10.tgz","fileCount":170,"integrity":"sha512-BVWE5SX6m2wZ8RPsl3sssGPSXkaTBA3IYzauU9cvZ5ahQxUcgv9OAARFHAzbXrPp6DjmGOAo/Ynz/wu32SnkzA==","signatures":[{"sig":"MEUCIQDOvdUWZD7L9unyfOE+IXSLpBapF1cNUADnLlG6K/G+jAIgEoyevLEZEaajYCU30BofZX4smbMroKf6vRVJrzwau5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1096346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/ZzCRA9TVsSAnZWagAAkO8P/11B17Yub0nN4FL+06OX\nsN7frkOlrXNTG2lsjd2sRApS0JGLfLuiplcP1Jc7MNOYJMyJ4+Ph9CHkj6kS\n4mdineMx6TqFxx5qVVS7ivCqRvHEcno4tsWWdTFpfXX6WRAQShiIWQ3dT8Uq\nqhbcQ4q+NB8bGQAAyMWO+at4Invcn9uizevWH1oQYuXWSVAOk6fb3j44wdgM\nqKsXriX/QxaTNf5ck3VZz/eX+9YFD/mVB6OLvIl3PpnPmh1evYdQ0NDhpG8j\nTEhXeUA8G8BCC9fMMW1KCeedOq8ElhsZchxss+S6y7+HvHp6mUtaZCT10Mj9\nHNKitokXlp0ZlWKV/CLgdv0cAOh9nYm13IHMzwdWNB0uAMAiDosIe9yIGeab\nnuQbttFeRKAiimSz0CjJ5YfmpPAgqp3UJEMBtXGvZxhr3gPJwPm8zb6nISpT\nna3bO+1QiJ8hsr64G1utzBZ62HidmrZbIebQrLHD+jEkK+2Gwnge9/Nb+wLq\nLMDeI8Z8ymhkitCFde5vs0n7ryfMgpUtEWmBzINNyOcp/ehPe6PNtjUI8RtK\nDK0NntG3nfkiPuoCcHipa/AdArx6FOK+VZpWjbmTpNab1bE+xJ2GwFU4bXKi\nDGMzOqtIoATrv5PIOhw54dagz3vLkveNv9/rtURiJvxlbQoJu4xc4FhDAhuS\ncJaZ\r\n=VM/R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"0ba16ac0edc1265eb6174f0db22b1f519226c7ad","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.10_1620833906766_0.522979114479154","host":"s3://npm-registry-packages"}},"0.2.11":{"name":"@virtuslab/formts","version":"0.2.11","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.11","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"52e316cf840218f798ba5999aa89bb382bd381a0","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.11.tgz","fileCount":182,"integrity":"sha512-8Ssu7kSCMYTYivfxghArawbeODabMSdNdgzHmbRI3LtCiT/OGvloAjg2upgfIei/KpZO9EmfkLTmjBnQmmGMJQ==","signatures":[{"sig":"MEQCIERG0FbAk+ayO4YBuHe1bl6sBTI+Jws6kodQNlnkpHZjAiBUZiIdt4/jsqczCbWYrURD79metm8MNcggIT8ZBfojAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1156062,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/2SCRA9TVsSAnZWagAARfMP/jU0K67GNjWHLAmASh/V\ncoWy53A1ia3ugNFO/6oB3UjOh5BH/5i6gne0UWNOP73p5BBujZJ0WFfRL/u3\n1ey0L7ld6mbvn5QOSPT03qOc+XwQQTttFQQWYscxrs33PrPf2Qbw9llJY8UK\nQPS7P45Cp0QRxDINslXg4+bX5kKNJdS2o6xN5RaJLqu2MROszyD4P82+t6v7\nXhpbInAzM1ExbgmA30GSukE9e/T6G0SV1OPumlJQ2J9XS+h98pATThfpR+Pu\niZtGMdSUdse51o63xqKIpf7r1/M8i+ShYm+Ir/O2ysUf+GP/Nf0sKFwlPspX\nIouinLl9Rg1Q1ftrhtuw5HId+cxCVzbbK2rAF0t0l8B/d0nRyW/ByXT8LC9N\nIMwxVpdv8FVz73EtJQzEIU3Wj95LQ775PQndjC1r8oXeXRk5E9mtp2hKMRAx\nUrChZjugyq28FDHnd7n5Id9PMl08ae/6ShYbzdek8H1r9H7z8sEx4V82gRbJ\n7J/VlKyYvvUAtiC4AnY7hQolN0qMfdP9V6PFbMpTQ04etfLVEzvfWUAGrSAk\npWhMB9XBmqdDF6rR3RXfHYdBYULnJEcBexDF/CQqm3gTMfT+FAGU2kX0DKgb\nxRyCWPHDhTdSNZHGQhdPPE56EgULjmqLVsQT78R3j3uix9wb6FpI8PZ9aCkF\ntdD7\r\n=O0fZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"489b7e20cb3889ddd58e8a1b388fa79ac8480a93","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.11_1620835729719_0.917909899448982","host":"s3://npm-registry-packages"}},"0.2.12":{"name":"@virtuslab/formts","version":"0.2.12","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.12","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e74a7758c537d968045648a4f87a7ba693dc23ec","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.12.tgz","fileCount":182,"integrity":"sha512-ESQq+a6ZC/nMc/AttVRqY/3HVsi+RqJ9t4oNK8QI+toaY82IVAGdn+PAG5jq7McqnBV7DEek/oqqBGE0CANwuw==","signatures":[{"sig":"MEUCIDcNAYkfJm81npykFHsPvVpKLONZkLAE1Myo1HKXVyOfAiEA6LG+mzHcHu86FvZ7kHkhjRZkJZYlJwcQmnffb9LqdKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1156710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp7RNCRA9TVsSAnZWagAApNcP/1DbnCaPs/ouuvLTd8Im\nG0fxKIvcRtoVDpvSczdZcKdwn7FT0fj1U0pnxf68i1P785FP/qk6Mac0/Ubc\ny65jDsV5R7nkmt5wLdMEuhVhNocl1VfVL8RBKxL/Ybz2kky2T/dbQScrCcBm\nFzIpb9kUOvWdDGrqaKVrHjvdGRPmUg32QxX1NJEAtX6fmHjXosVUf7BnNaQY\naLfGOXi8C25BpPwU1boQzTSVoo1+Ssv1fPhzjzEMpOfB7G81XYh1U4KArZ30\no+8FPSRsX8jMx8AtWnNPfAyyOOeumN3hH9iQgx9fUNgPk2MSnn2/oY4BMUgt\nTNQcv01C/Tm9jmc16XnMuEk+4Vu32LKp4MziHkNoR6o9w1+YrTeRrQEdwPzw\nQvggD+rMvZEARR2ZXyu98k/tO3DWTnzsO+JORFZk2W3Xo6WqSgZhfeTzcyE5\n8Ewx/GmMII4jWF8YITgSbIWZVnOz43/KljE4kY1h0oG0Q9KwVvACzl/+SPD9\nfaTdFFUs4m3lBVUenl7082fwGJMTzNBdzDarDPzZumfh+33lg6SXIMWVEqBn\ni5D7hN0tU4EsI3JfHMnrO48+UVZWyotld6+Yak+xi6mqS81ebVwFadJFtqN7\nZZOFjO0jRnUnSdBPw5CX0LcwzRm6hw7vsB7BUMIrViODrC0ijNseyyVBmxiW\nFI5g\r\n=VUQO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"f485363d14ac7c2f5320efaa6b98d60a01997595","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.12_1621603404963_0.03648917433206633","host":"s3://npm-registry-packages"}},"0.2.13":{"name":"@virtuslab/formts","version":"0.2.13","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.13","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"b28748cb2bbefb6adbd0dc508eeee05072672fc6","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.13.tgz","fileCount":182,"integrity":"sha512-0Ba0s07xOj9rWYgX/KDTDfu5RNZVGFU5Do129Aww0QMOzyqbS4Pejm2J7eITaA4hiUllaKOp0PN8FxnzfVm50w==","signatures":[{"sig":"MEQCIFRQ+DsLzY7pHBplh0V8ehUlL4U2s/00f0UMh7vf4ONrAiAdJdnnlWEg/ZXA5JZs5AY1WUuwvBqyX3/fpO00FIACkA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1156800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvnMfCRA9TVsSAnZWagAACF0P/2+2JpwnMNc67W7jLgX2\nVUKnU/sIrmZKk6tv7iNhM+A/oKYe2tdLsjOn5Qe+t+lx9SUWCoRoUw1SjEiX\nqaOsbt7M7V3PyZahSvkN7fpE68Yy8kyeMk5VnqNRYMielLFGQxV1V7qMhBuh\nUbhFfzXLJhrA153s1FsU0P/JQ9qjn/Ox9ww1mFkSHns9JHAbP1Gw4gnzf3P1\ndXezsg8LRMhx9T0k5zEkFRYKMGkHWzGi40SLJnjgjUdXaaMcAs8rogHtDDq6\n1L0ZZkZuUpI1LbL/wcKslHEL0ohUMV7ODBVGQm7a4wZhAr5U3TXm2jwJEihr\ntEqrOnPwEDh1px5LvnAuQzKnhZFg/oAykuiZYVSBMYvkFfm18ecHQPQDbYif\nABptq5goDB47CoytIJG6H1eQwY9h+11DaFShSMj5auKDjP+tqTmOjTjMpf8s\n0fuoCAA3JOi7hD3VqfJ7pZDplkw/zJ7JSZuvTvKxBjSnF+biN4g+25h4qerQ\nGcBgQ0zFj3wVOhVPg/tEi7q73g3U95DZ6cESnHfXFBJ5ATYumgIfQzAqxczp\nVGCKm2Y1jCA8t4yGKVlimN4Ji2qsBjeZcxY9B1ckP8NYVSqK1ZcnqxFyUOQ2\nycxz/htsP2v0XtY1RaanjvouU9y6ejtpATXNOxlsG8Rww5oqfRqSnY3e3bkr\n7ArS\r\n=NKLK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"75bf2a6b2710d15e77263e05c3bbea4d4036aab0","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.13_1623094047765_0.23012340093873052","host":"s3://npm-registry-packages"}},"0.2.14":{"name":"@virtuslab/formts","version":"0.2.14","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.14","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"60a5dea7f132f9c57dbc70c1dfe8543e886a8978","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.14.tgz","fileCount":182,"integrity":"sha512-AgNPuOAando+FiEuylzLno7sqpOZkN+FsS2Ow30QB+X4lHMFvzRNjJe48URp+tgGgj9jEd8qex7IpvNoAikrfA==","signatures":[{"sig":"MEUCIQDWw+8KftLF/kFkFhZNHF1xMBzUfBUpkh11nGdxR9iJIgIgbH7DAN8Jd9en/b8DKTyR+Iw0II8kDu6himmRP9Jogmw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1156890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvnRbCRA9TVsSAnZWagAA1kEQAJXcaa6Li0ods/GAaxBk\n+TiZ+7/tonZreOdq2JxGjgXdmEsbucDBeeilCRy0kgRuvQTS7i3XlYYfbxdI\n3wPlb2eiCeG5exJbC29bp8f9pBFRw19NLFBffYdQL6orbsffX3xtrrx8SZUk\nk3vl4gEZq7l8xfbEDnxZ/HkulXApFT15Ig0PgjDDL8kgM3s58egm1Aslw13a\ncQx+NCwu9BgsINL8iWBsfI4NbW3fdJuWCBszoxYhN1WQr+efpfK+AP900vRi\n99pbxUZeh2trme9px0we0US0O5vVUHvnwmfM8Nay1hqOUypwJLrM/F0+X5Vx\nUVJr0/TcRPoBkselW31wD/r6+myuJh5e1kwt7f8t0ofUU6rNa0L1S2Ji2udJ\n2mu006S++DvpSFMKSIDC9ObzI0qxGMxkjPAiFQWeOVBS631X7165isXXknhD\nSO9bIcVmpS5jwmsURC0XJM8PozjjHvpA6BcGBcdBWVM0LytonmWV8GNUmXNI\nqXOPhVOU7hOglbygTNY/So7baZfn6ps+capxoQe8xqHx4tpVViok24yFbxbB\nYM2YTbCRkwAh5FHBu4vwEKut2Mt4BwoJNGCo6buvyTBURzrBAvtIUYxY8YmY\nNWg4rVoysk8NXD455TdWFsnU2kqyORWoBjLcvTs++xgEmdyMlS+3J28LwBn/\nTH9T\r\n=WIti\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"61246f27d8a213d87daf77a77595090b6251b90c","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.14_1623094363576_0.0393778440249406","host":"s3://npm-registry-packages"}},"0.2.15":{"name":"@virtuslab/formts","version":"0.2.15","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.15","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"cc479edeac0b48806342ed11a37573177f3824db","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.15.tgz","fileCount":182,"integrity":"sha512-6iGm9zdrDFOIqKwKLunF2jMvqRwwxPsBCF/HF3mhAfV+sonuNIWOcY9vbtwL+QMTqnOiQv8V9h/sdhG34Xbofg==","signatures":[{"sig":"MEYCIQC5394AF128Z04r47eyu4xyhlU0aLwPdgaCWwjPwT5kVgIhAMf4DHwQzp2uctK4Yc8AlC9OrE7/z8V5PSMNHlldl73h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1158241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsfnECRA9TVsSAnZWagAA14cP+QCcDXZzROk+i/JDIeRA\nQwFY2OSTWC2CJvlCXOuMDtoAsDkWs/4RitqSrw+POZbxRJFCyQBXcbeCW8dw\n+L5mDebycfIUMn3wTOqNaNYhFqzN0gYGAmNgtQgcNPHwsgpqrWrsOEC6z7fv\nlu12fh2xHbJm6KuTSJPENR/UMneRiKAWMpoQWNOLbOvLy9gBfvKGiTAuyxDo\nQR3riqpdgCRvstODjtpu/qZtD9TV1Qf5fKtgldgS76/c1SugsOCZo073UJzJ\nXdGafVXFzhkVRzEyXUvyrqilSa5Wk7DI2amWDaOe9djRXNi1IJ/EijETTaWl\nvKacPK++wQxSKsjpvgg5r4UULz2p55xJx+UA2K6MEBaGAUk8/wUUFqeMhI9s\nUVCMXkbPXI5heh+2ug+pqvszG28Hb3z6560Wa5vgEKIAZXp8AquM8MmUgbnm\nPjaaDoKhV1yAJoyDbgWmS83gLc+CFVQGbqRcFwAaw+qggk21IRtnQrN92ZBG\nTf3zwIhDuIi2WQyguEy28zrp6slXxq0++2oIjPb3auhzQKk/4SvPp2fRn+TS\naFIRrq1C2eENEqlVUOx19oXXbjuFaBqZYqGFAPfk16kqK+y93tVIMI+/RNT2\nEGoMs0j8C4KskVg07ezK5P+C5K23ukVeSKGufJALBhwsaNLabAIdx8gm/G8J\nsLxc\r\n=TRRy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"e3695453a3db8b733c8b942e894c449e78c24f00","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.15_1639053764050_0.9978145335722013","host":"s3://npm-registry-packages"}},"0.2.16":{"name":"@virtuslab/formts","version":"0.2.16","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.16","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"edecb4dc578c91fb348382403d66baefc59ef5f7","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.16.tgz","fileCount":182,"integrity":"sha512-+Qe/QbDcpLBmSM2DPm7Dj3P6eguCzghvAJrilasS+7nQeZCnB9EOhXoiQJFE5zVmRfFZ53eefXejLmBE1zlF9w==","signatures":[{"sig":"MEUCIEv7Wb32zFV8uS+IgcwcOFoP0Lpm7bsTCI8m+PcHw/+9AiEAyi9E0uijJtAltBouqaw4SffToizlb6EsUdSE2tn0PEw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1158355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGtgBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7Aw/+LxsUEnlDCzr5PNFA6geWCGYM6Ton34I3FzIztftGjhHlGIdN\r\n8DPcKtB7oXx0/O+7B4r6/a3Oo0QsNPIstwnn+FJPhlo2dDmklkSV8UrmfExX\r\nIy0yasca4V9vLK0W0c+2akV8DHMEgKYC+oTj+OCaNUBIdxMb+3UCGl0U69GG\r\nGDA4iPl4Yax8MosO1E/Qjzx9JSbUM6Iv1xO86VyWy/27VCnjnnNb+dDiRbrh\r\n0F4CykLP/Cf6TvEy7Sm3VeZbzCmrPis/tV2paZE/nDhuIh6NDrjiaOX3SxY0\r\n9wnhgmQoE4qD6bwSIf279VrU0YTIB8ndqtqlV5GkCTIhQQAYRLOdbJTOOm8i\r\nSUH8szWVCzt86VsAotc+avFqmrXOv865RCduc0L5ZsWcR04mvqB565d7bvok\r\nOy3oU6cueV1qJtleJ2TsnJg+kuFY9Bh6gXUeN/4BQlQNGHwh0BWgOIJf/Ooy\r\ndJy5c0xUa3eCTXjeYMrp97sM7DxbVksmQted/c50+zb6UuKHNeQyaQOjSiDK\r\nPbQkR7g4/SZYzHW8eNlyash5zWMiUsah699XG8Lhz2Lu4oMr/Vb6Y0WMbNbr\r\nfD0UbFeF60fPNsAf96JSvtaYk4e/0bkBsnSFHQEqcxpvGHUV1ZbVoksuNPIv\r\nZ0RwrIyEazz4W/RnW5AdrZSCmW9fmk1x/FY=\r\n=xZAe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"ffdc7abaf123fb8eafaeebc95e3243f2427cfb2b","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.16_1645926401529_0.23434888702476586","host":"s3://npm-registry-packages"}},"0.2.17":{"name":"@virtuslab/formts","version":"0.2.17","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.17","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"95c03ab605e056f32c8e524783cbfa150b23e921","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.17.tgz","fileCount":182,"integrity":"sha512-1JriDcZ9I+OlhJaPA/kM5YwPy4rCqX+cGpeEcafS5q9rFfME6hRZyN5LgJc9dEsbEXWyAwISgA0cx0y7fug/hQ==","signatures":[{"sig":"MEQCIEYxyu9Vc1dQe2cWIjImt6lgTQ/W88H/POjtGKRUZmojAiBQ/k4CjVBbzj0/+4LbUtaZ4QUqjbTtB1/Z0KJqJQf0Ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1158445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+TQbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpF2Q/9HIdpD7upoHExvrFfXid1jpmJ3etwgkHDgEUY8yrFdJ5Jdpai\r\nlUwZmRHkurrCNrHfRNNZ3ztla+1CkEcydQ5CY/12CbzTDHuRqh8le00jIkHF\r\ndwScRKMyePv0Lg0yuS91S345kgsJUrMGKYdiMSZG9lFhIJ71laAM1sYTj8y8\r\nMCNdsTkPVUwaiXwNqlg9mkn3b+JjNvNVs0729G4pewLJbqEKo78clYgdKeJ5\r\n8ehH31awDtzgqra840wPZ3CJTiSXij6UOi/5necbp5waIR0VZirlPvZp5OBZ\r\n8MFz8XPRQargodEdqIWRgdUoCgyV7H/R7TcrfeRhfVp2uc96R47UO0kTrWPs\r\nLDkg13VVe9z/UwMISHwIYQhEuG8jTYFe3lhWf7mPDs6begjf00p+ysmy/51u\r\nVtsFFq4IadbFuLAjbPpEQk5y7UcAcR99tDikHrl44JES++0/U1L8sxn+UHWT\r\n5rLAkMvHt6nUsJNsd+MJu8GV90kS0Bj4qVpxcIiUJMCv/FuXWQX2USsA6iT/\r\n9iHmm71Kzp/G+z55pq9hSeVd/vDq4g/SM+HDFeBgr27+Tb4sMj6OIbZMSsSd\r\nQ7tLP19Ets/lORJtqPUXx0/MUfNZikxzHIEpeArzfdznEyA56drqSgGQa759\r\nC7WaUxoVjzuoNB+ng7z7x01ZNCtpqH5PmjQ=\r\n=EkQi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"9a1a85d51ecb32420ea001fc686b6a84a0dc3831","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.17_1660498970974_0.8275476265651733","host":"s3://npm-registry-packages"}},"0.2.18":{"name":"@virtuslab/formts","version":"0.2.18","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.18","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"89d1621b64fb8d166ce24f37a74ede706ceda716","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.18.tgz","fileCount":182,"integrity":"sha512-B7xpKV+f+8IYxGZml4/NGR6dMuonenjEc/Zi4DYm/dNFm4pbEMwNLl6CtC61gIpnYYgCmvk+rCdApQEgNz7w4A==","signatures":[{"sig":"MEUCIEWL4NOU2pb9Z85vLfvqewtNjTTZd7ljAweAf45P6/RwAiEAztfiKfPlI9ONMh55a/RME4omhLOnL0WZN6m8lGTCmp8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1158535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+TX4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWog/+N0bJw7/YQdiDjypycbz5l7dF4jxzoZx7pbNWyFaCHpZm/WZg\r\nTV87EouWHfiwNDjedA4bei0ficETRemj7HDGyAbOMpzlZV3p0yJa5tK1k7LR\r\nWkRUVwHgLE/UmNAY2ozbWvFgUPloUB+Vp2GZuumtVptcVFn+vUB+FjRwFCOW\r\nR/fYSHo/Nml+8/whnuwE0dGKNy6CmwRu4vOK4NmBbVA8uJfZLlefCNKGd/ZI\r\nNLqQmJvOuYDfDFS2rhVDPFG1u3Ab0Ad1mcP6HMPbevhJh0UAVnWie6esyyDT\r\nV7aZccux+IMd4XJS9j6puvc05nh4IuzXGc8k+r6qAVnb1twC7R5D/s37MXQn\r\nSY+urY371qSVHiiWzOKAefefqozJwm4H/s7POOeiZqiHf8d4B1W1uaIZ1Oox\r\nYBRSx8LjOlXLr10kgRZp3RGX5IXFVE2feeHL6P25MTUPQH3ruTkxNThLi+QX\r\ndzEsKJpQH+lj+cOpqJ1z6OicHoJXAVdAkvg1hgJDLeonZD4a0izheXKZbdXP\r\nMfSCCZqkZBkJbhntkMqb6GlMNss0X/1VYd4svq/QmJ6B0BS5JUJHceYFx2sY\r\nf5QkI+KRl+pqT2p4Y9EOmiDdiB18HjqjKyxjoCRvRLGHXmHpkrsTuabNRdw2\r\nVNF9RvZHIUEmSWnb2emIoxbVE8LOeypF6a0=\r\n=Szuo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"8098114200a41291770424d756e29420c7bc517c","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.18_1660499447812_0.8877794126898149","host":"s3://npm-registry-packages"}},"0.2.19":{"name":"@virtuslab/formts","version":"0.2.19","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.19","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"884421beac5370be531c5bb3d6e430c7fb574cf1","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.19.tgz","fileCount":182,"integrity":"sha512-KLwpyqaSSbNlFwR8fAz0JNloZ2kLXGI8aPNMHFz92STt0al1V2bVk0EpXrdmXeJuohSwQRiIs2+8w6JjSVUbeg==","signatures":[{"sig":"MEQCIH5pRQn+cKNSPnVQ4CDlkzCrtP8kyGqddoGB6qOM4y/uAiBKtXjHNY8xM+gqUdmDT9ZpOEQjXj129XZ+vDGIKTB6ag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1158625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+ThKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqyMg//TDY947iHIJxLh6kze+dWp23pHEcnGM2bs2Ec1tMWju2ZO9z5\r\ncCSHPV1M3Ct51aOonbp+LJXtz8UxuWZpcrjLEBvXFnV+EVIrIjxkrQPNB1qu\r\nu4RC9fb/2hmoC7+F9wkLy+cBk0ugZ9BQoJXHxzwq6VQGKk6hVApexljUTuzg\r\nmfQ1DpuoxfFOQnGNdDxBLADtAuTzy99rSZkwRFJ4pvDAnXagz4UPl7ZlAV9L\r\nmrhRCCV+HAlm4WHmWuN5iN2aSbnG7n8uBmphrA9Cl9o79XuOROKKe8liWnvY\r\nB6t/pbt6C0mL/XZG0K7R0pLI6EU9ZPht0bNSYTmCn6HBgyGGRUT27bca8LG5\r\nK1gFFXS08R77D719qhz1xk6sl5L0a/ti5kRkBgLrWRvpaFvZnXf17I/9icU6\r\noNL02fWWm86/QApqq6qhh0Emj8Zol1CEa52brIKxClJvrp2KXIqiBc4sNCqJ\r\nEEyCH/AZ1nfOXTtgCuqqhSzMaoHhZvKWNVwoje3Yqk/+ZY3bhW7R1OITdpje\r\nDCWHTU2u6XVa/KuYckrgsHzHt38a56zPpYk4jInYtzlyF12qXHXY0CcxJEF+\r\nKvM4UasAWKTLQR9mSJ2O/jLnLo2WOV/pO0xrhq18nORJn/K9ZpgNZDqgmMVT\r\nwbSsCFxGfnLWBfITgiOUoe4uri7Ft+R0ohk=\r\n=apAe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"2f461152f4ee6bc8cc65ef3a2b3aab27969fce2e","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.19_1660500042318_0.08053160339541643","host":"s3://npm-registry-packages"}},"0.2.20-beta.1":{"name":"@virtuslab/formts","version":"0.2.20-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.20-beta.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"d4134df40f5c468b248abf1ad6cdf3b98d346d3a","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.20-beta.1.tgz","fileCount":182,"integrity":"sha512-bSvZk9pZ0EiOyQ+p2KeOWDQTyalyOf+iyCowbNHXJxtdWAfsEWWACbDqgM87FLk2/j9shFEVm8q03ePseU5eew==","signatures":[{"sig":"MEUCIQDc7dxgV3FCdOArMJM1w9J5piO5HrfngLxfzcJBEl+VqwIgQABQ0u0sF4qFNtH7X3EKiTk//vpH2ozXnAkYOz0U3PY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1170085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+YLgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmobtw/+NykOKDxKDvoSbzdVhbX/n6m7BDZY4+HH08NVXGTfzqxtKTF3\r\ngmOJCk/+htO4nIF5MV9yslhjiL7tAeMlbryIBKPL7fmY1Chrl9nB2sJ9yBGX\r\nd0D7PjSmRpBsKSzpQicwy65EPCoOo0iGj2LXXAgG+LmAvX9/KeyWhEpkjLkR\r\n20gnED+ZpX2wTMo00EAkdB3eUpOACCzyegV1kclhE/elWDUc4dk4z6IVqGTX\r\nMFjkfpfQmZat2rEZ5eyJ8cI/5Au9WX/2t1+7iyXSWymJLL8jl7+l9KRSyQ09\r\nl9YGLfBYvo2zyWJHP2YL5O3l8koc5bCipjjKkzaSpbMd7PEnI8hap1YBr2fg\r\nFKIvYGB5JwJ+y6Eo9pzCHJLryGPloHiFRffygqZKKFkYNJbSLj52tBGdhxbo\r\nhwHvzIChTbuf8XthC2JF6tORv6TPtcHyvR2+k1blkTtjgm02rd4VUFGrl0+U\r\nBbsdeIcH8O0bRV3khqSsnBHWqWGNPSMpStuLrxZyCwxpEMMTqXKl18/fHsn5\r\nlq+yWb7oq4ML96rJAx0eTG2Dqd/eTJpdZLhR6sPULjlgmf3V19ki3Fo2Hdcs\r\n3ScSDKKCXoHHBTWQ46fU98hbVPQsxM09AF/OTjzq4w2gXeb8RUNzvWB4rgeB\r\nahIPie3l89qVbKKUIJn38l3T34uVbDnzHWM=\r\n=CqsJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-bsrv5?file=/src/example.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"e08226b4434df769c854ef83e90d3c89f8ba8523","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.15","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"14.18.0","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.20-beta.1_1660519135883_0.5672523650319334","host":"s3://npm-registry-packages"}},"0.2.20":{"name":"@virtuslab/formts","version":"0.2.20","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.20","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"13459ae26e28e2e2ab7f8deb3587cdb4c8d0ca63","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.20.tgz","fileCount":182,"integrity":"sha512-Q6g94Z27V9vB5k+M0qxVdNHjdshC+hiYwD4BW5T6Hs61oK+wOWeFEqsmjipQJqNRnOiCnJ/Cdnljbc5b9pgKhQ==","signatures":[{"sig":"MEUCIQC+Umo7sChPQV2cxMWQEYQ1JU36l+QyBaqx5SIdvwqcuAIgZZSh85BCMbV+EYb1YFedxtSn2uBxSznTmnKMvCwz934=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1169980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCAceACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRTQ/9FsZMJ93xNPp84Y5rslvW/rtAllJfO5e7MIly7sxK5VoFikHN\r\nB8EW3N/yjShZ4D/XIReQQAVY+hoUFDLZwbGblE65yZ3AQ5jjw9apHADVeRc1\r\nbsQ6fszKydlRzX7v9jo49GGU8V1daPIUF0WBQO7AsQrsCnc2quK1aBKZviq1\r\n8WwUmCL8MsIH7qzktoCE33yGKmY5AyLPZTpRhzAARGNZZqNafadeINwAHI/L\r\nEBzsWILVEr34oM4u3fv31b1SoElDfuZts2U3+GjdmVg7lfu8BAp8C9Uqu926\r\nY450CK1nsu1NPtyYVg37H2n6/FAI1V9Ahnidp4gW+3f3V9olO+j/lfUQMAY6\r\nsJ4ijTimtAOh49fnKe9hFLd9P/pug8iJv7pUZeuMMu18JvBiQgWStPFeoINP\r\n6TQcjZpkijevY7VeC3ZIAZggruzruQ283ot0nSVdKwymV6KO95KbcrIkjjxM\r\nJQnBPWoaNfeBqG6f6QnLGelnh9130YWPopdzwp9jUOamqxZ7BK0081/NiAsN\r\nFYatfbOUetRiou620hqB+6PqvbDuLgnxa/uOh64uS3Gx7SGGqIxOEeeQbQzM\r\ndVqtoIH++syC98DzOz1Vmq5Z9yhUB4Fp52a9Yo0Rzb+UBR1rWjFU1AQLH5G0\r\nXqcuryc+eKw6sAbjoogxsGy1zq7lYZpptoI=\r\n=+vra\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"c800bca2edf25342def2e46210b73f213ff3638e","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.20_1661470494300_0.12260114050851101","host":"s3://npm-registry-packages"}},"0.2.21-beta.1":{"name":"@virtuslab/formts","version":"0.2.21-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.21-beta.1","maintainers":[{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"2f029d869ed6b5be700732fed4f5c7b51e85dd20","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.21-beta.1.tgz","fileCount":182,"integrity":"sha512-uDjEzbhP9UvuH8wYQEnKPzoz/8RPAwa00J51l/8Mp2Qq9erbxOJ2rUhacnlGURP4DcbiK/0b9iyAriS45wQa6w==","signatures":[{"sig":"MEQCIHi/Si9mnydYpZYY7Y9e9kngcKq0z7sCPLHBGCB+l3ghAiAqOBi88Gl/iHxXWgBdfGSvhqEI/NtyEgkWdJf9I94gfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1196263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjC+ciACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoALA//TyeGBEJxWSar87cOM67b6tRkyF/yd8Q6Gerh+7UkdVTuG7sg\r\n76i2XeQ39nEFoKHPZe8hF1OJ5f32myji3mv5csBSisA9LR7Ke/UgvEi9HC7n\r\nzsYGJ857iVFaQA6m3kpe7Up3bdhTUVLo3+t2xcrSxpbaKZOi+ZcByupnH2r4\r\ntb6IH6j166zuFRnu2cPj2yHZaai9L53QCzEMP4JRVSp+uIriTLjy7DeAk3+Z\r\ncpctLF9ylQKx573twdonSuoP53spAO7Yd/a2ftIYr4zgDsKNppUvmzOYaWzF\r\nGQTdT70e85Iyxl2lue2aG55gIGd3tSXPF5ZXcgFbAgVwoxdQhMqvlPXYVUNm\r\nP57j5eTCZ47sna6R1sRSGxNQOi4SU/4yoCKR9iBHsHgReT6k5LoGN9uqBxh7\r\nbl1atQuKS3xNBAU/UsEZNcfSRCed3CpUfOu4KNfJrspKP2F9K834iXcarqDz\r\nE07jrDcH6qKg8JwGl0lW9eMBCgJYWpaQzf6RG8Xc8KW4hRCU2JJ+fmeFqAue\r\na+QvHMV2OBHhWq+LoOPiCoQqsTwCy2O1+Ou/eL2HDaQn2C9rX1dQbcKSfB+u\r\n+bIPjeGRYXut1UQ2iFsbixa5gIQ0W+RkacK/NFUgCePyjg7V9C+JGq9S11Nc\r\nFqis4KBQ3K4RSbd6/1bq1HoBaHFbFnjkADA=\r\n=gh0J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"c2685913c2e9513031ef8675ab048363ce947607","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.3","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.21-beta.1_1661724450323_0.9176688265072648","host":"s3://npm-registry-packages"}},"0.2.21":{"name":"@virtuslab/formts","version":"0.2.21","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.21","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"c2e2c6fe0c2feb49252bc98cde4a1c2fd91515fc","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.21.tgz","fileCount":182,"integrity":"sha512-AFNvJhHu7icA+uHnmoe46n61kcaix/UhP6eOqCXRx5gAHD14cufuHIL2pYoN6GBRtGL5gVZRWwfgMaFUJsAqzg==","signatures":[{"sig":"MEQCICXikDFoGl1MLNlSfGbrhoFfBhPttegfRMMWX9zfV3B/AiBJIuLsLxUAZlZ52V/FdWjDMHSX0Q/VuMC+AzuApNCEbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1196544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFixEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrELA//TTHvw33CC6pYFFMEs+GgzoBJmJ6P/D4A0+bs80f/3RIEZTrB\r\nZ5vqwvlu6nRtxw31YRZW9hazcxf9/WdunCte42ypDOozrJGa2su8zJSKcoEm\r\nFEubj3u45Zt2wGbckyblb4sjIf+OX5QJLJVKjAeuMMSOjmgeaHSNKTVFpecS\r\nIttDknwkzzX85RVrD6GTccPrqjOXEnvWYMNcV8kl0pmkEhgphC7DdkK/Uv/B\r\n4X+J4IIkEo5qX1uM979FPhLhZhMB22XtSKc626hCZMRveqZoznn+/D6v+afC\r\n+7zxQFyi2rWwxQj6h7Stb33mgG2ksBTmHqc5EuqSgx+ea5rDZr/MvVnWLe0a\r\n/UFtbqxvZVc6sZz/wTDYi0VkwXFr+Tnf6MKVELVekccbLR4uwwo3dk4oCt0X\r\nrmZ5tn+zaOGtX8YjyG8siXbChbh3pFSFcqGAaWDyEIXDpPnNKybo+3n9YMM1\r\n5khme8bbWm4FI1aAP087/HV/5LqothBm4zSLYHqNH2PptI9RDBi1fMdbbeAu\r\nHHSzcOHyK4owxZn+0bEJJyQPSboKrKw6xLNQEOXonffoefM4Og0UxqxZ5jhI\r\nBIDgwWBVz2gtCj7XTy8KrmqyUbhP6fDuu2UiD613m5U+eBl+0lLBBZ2OGvrt\r\ntgL+9pBvsYojvfZUy1pFTFAdzceVaNa1qAc=\r\n=9hWo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"2982ef7ee26fb4244bebbee93de9525821b8f824","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.21_1662397508385_0.3967445324815453","host":"s3://npm-registry-packages"}},"0.2.22":{"name":"@virtuslab/formts","version":"0.2.22","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.22","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"443262ac8ea984784188142bd408cbd1d471b5e0","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.22.tgz","fileCount":182,"integrity":"sha512-MGQ9mC2c6xhIdjmZ9E7l4hnVwuPg+ST6JNygoDJcaSdO7hwcG7ysLg3bOgTJ9EEbE+dolL26JlQ8Wl2D6lCvDA==","signatures":[{"sig":"MEUCIAz9O0O4jqKktzpvTQZYoXj9XvnZIvb0zdh7GgBEkxM9AiEAwHO8XCtM2eEH+GUopx1q+RyG3OuJYCDsQupSdtRZJTo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1196644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJipuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCEBAAiaESqMYJT9/c++ZlXQrdESRlI/y9okDkowsgCLOs5shXupbN\r\nImSiUvRi90o3qMjN+xYU0TfH13pxjtvcd2f4SqIFpB2q6UkMX/bLuQI8KKBO\r\npjP3kUgd21iYHbFQ5S8yZjlKDKPLjY2ETUsWX3sr9WA/sFU4UfQP2rSg9RiZ\r\njRl3d9MEQ0t5PdkqXMZZlluPcdgmjMC0oIgnfSX8J251ZNJTJgKLMIoxMTHy\r\ntPyZPsqEMfSVa1NmEapccAIJltU5j3velhZa3CY0BG47hXEmeuRX7M6JZ8/1\r\n++6xS+/TZGXsVIemJJhkNMo4fVNJ9JGsCK6aHwVZGDKJxD8OpqHHgShVKojt\r\nQdRUE4dlsikwDmX9JWFwtsmoYtgX6pOkQkRc27jM1NACqyCuvGSuiqnuKJdo\r\nR8mhvzynwhP5sHp4pbemd0unsPfiZYco5D/RoTRnDPG96uxWIY64bO38Q6jr\r\nuH/PjpLTIpJ5qdEXjFLd+MiLucmazeMTEvwxx8waw21dSQ1/37+ZBeKzVmQx\r\nF4Q/Bd2hGbPq3Vd9wwXISVlfQ3jPsV+qy2ty8USa/wEzouvK+qaL9UKHBlOm\r\nJfQ1RrEZXF8ksD8t0BV1PndAcNPZ0Os9afA2CPfPc8bXzdbSKIllR++YcCl9\r\nPzKPRwbNeeQXIz8ZtM9sVbYI/v7cyRarB6Q=\r\n=KF+b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"4f528eb242425d65d88a454cdd0fac1453bfa863","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.22_1663445613903_0.4683892735275994","host":"s3://npm-registry-packages"}},"0.2.23-beta.1":{"name":"@virtuslab/formts","version":"0.2.23-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.23-beta.1","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"ca34d4a00a0ea863ba23293aa59227dcae40f9db","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.23-beta.1.tgz","fileCount":181,"integrity":"sha512-Z7Ydjwp8u1QzwHmGP5ZnJClMzXWjDvF4m/HNAhQCSf5OCXXSVN/ueWYzOggz7fB8v1eWJQ6BfQeDRtuEbR/a4w==","signatures":[{"sig":"MEQCIAqEDA2k4UH4mf8vPXsPRw48DaYUaK15zIcbQyh7RR4FAiAJfPKXOG5ZbKdAAhovPpAQk98tw12EPrtvNvZi8MMcEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1189476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc/uWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJbQ//eiHTJCuUrMA0njQ68NQ3fbFJnVyM7ZO9KpKHlgtGR56dPL5S\r\nOzB+QJWph5nB58EWwUF//GyXkXl/m4csPfR1oeb/HC1PS9MY/6f1hGcEFDrF\r\nyGgytoYCh46nwrvC2cosjK4C/bkpXzuFkMkxrYZ3mCbcNLfJRpHl8KwgXhwq\r\nBujFsYO9qDDul00p7CiqzbyzVmNB6sGUwsy7PXi7EaOnOJj+hcQS4GQAZ+G7\r\ndgCED4lIh2Wkx7MQ0Xyew6YWoY7FaRGZ1Z0bWJCD3V3j3HtC+u0/CFWMzOmw\r\njJsNo9c1oNXErYyQxhni/u9P1oXBELK0qwQj5YBJdMU3Sa+m7dqTUeleHVkv\r\nEsqhf9WnHLwrEWxq2sXHuv/AdkdxcjTplZpHZUBZvtP7tqqNhD5jeCs7xkMR\r\nwKl5Zer86GUKe78SJhLFKS4lUl9l6nP9JIo8Erh536s0PmdkNynkl4xmYsVB\r\nMnOaDpJG5bNZhd01RNIkfVPLyWI6vXJyZx/YYeYKnfJWI6EHcDC01dNiNup6\r\nA0rin4w1sH6tA+nFCRZLOv4I/yVLkiMKHplpRoCaRC4ma3XcjvjiPqar2lVf\r\noLyiAsnG6kd8NpDwZSP0+lje0Eh/2kSM01EZrzioRh3ZuNFopX3RbNzGg4rk\r\n8+cjQ04xXm6CJsbI+e1IYkzWuZ5S5w/nBdU=\r\n=ODSI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"f019b6d3e26bd5fb3b68a5d01f479af426d05ab5","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"8.15.0","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"16.17.1","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.23-beta.1_1668545430572_0.00910409013967306","host":"s3://npm-registry-packages"}},"0.2.23":{"name":"@virtuslab/formts","version":"0.2.23","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.23","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e10a44aab0db7dfd962472820f68880bf060aa87","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.23.tgz","fileCount":182,"integrity":"sha512-h9yYi5Sw4T+0PrZ6/guIHawpvj9kY5LP18OsORYOrtonFG2xgB9C68482nZIH9pv+gK8OgfdfF9HKqxdSA/sqQ==","signatures":[{"sig":"MEUCIHFDc1E1MJK3bS/9P2Ou/bgpAxJHRqLTAhrVWJIjiFJuAiEAxCU3bvTjMpdbvpbQ7TSb6OQtg25+lpjA0BVpwky2gyY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1204483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj75XSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHSg//TwpFM/vIVmgfOQ3d5bJeeAUTesxmEjJ9YjiIoOXNe8Orlcvo\r\nTRdTx7u+fB/yyGnROl8jf8LKYYNQ3Q3yq2hUtAJvPhxsMXKkrdKZeiB1ez3A\r\nHDLg6SaFAH6uI02LK9tk4AoTUyQCURrfKZutjl3hc/XYAIFYHPPkFiZQBDqo\r\nc3kN2s1S2wgmLgWZQBUxv3HRtoMfHZftJxWENYGevYwvJMXWU67pf+DBGdAW\r\nw8qoFZZTDs0PeQiwMp33nR6KHW0x+kLrdt4IQQYERhX2Af/hEF0JJ2UeNcFd\r\nDI0h2D/99+xgNxYNVQj59NvPXnglJFz+keZz4cYcTQRkFMCVO84gBvAt5vso\r\npO+Aj8m5tCkilZESS8vpFTy+0peylfX/ogPynRiOuhGaItmzmgI3N9lfDypw\r\nJZkX96IhAwS7aoyZG/8IL4Q/+JNPRyOR2V1FzOgLvVojDPYn+NK1FcSOT3cV\r\nB4SVU0rCo6ZLh4qExgaofxC91IEWNnr9fwGiAq2GJBRhJLKjZR6rwHLjFtRI\r\nZs546xbLxTTGORQHUIAEe/gw+UG4DF071EuSWE2U8FdUbvDeHtahrHGIDbw0\r\nZuDIIr6/7CMH1lAmbZjRMOFHvZ8DZVqq+ZL2ICC+Thcwz0x6+s/uoM58fneh\r\nS+NfpqcFHfr5dovf1J+/ksZZuVDrQPf7PtU=\r\n=apHj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"e2dfab19057cf2abab98428644983572e372f43f","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.23_1676645842670_0.5368860919439062","host":"s3://npm-registry-packages"}},"0.2.24":{"name":"@virtuslab/formts","version":"0.2.24","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.24","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"88e728ca5d14b49bbf61b2354c56db27d39db872","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.24.tgz","fileCount":182,"integrity":"sha512-JuLikZmAtmNx7h1xj9p192kU3UJuEBxnnt97Y5VUuhvnv15FiPkJ3EvmBcoVjkSWkkFICb+3bMfyUEOxyEjJ6g==","signatures":[{"sig":"MEUCIQC6BkB7yB1BuYA8Tf2uRlK4wstLStc4em5xvZoivftKFQIgLiL+igChJHDIVM8bE4L08s11jQTfi0O+HXhBTy5WCsw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1209401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8XU9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrjjg//ahbxWgn+SQItQYXNm5pC1YkXf5GjTfy49+FXPNJ2YJFcLxEE\r\nKyMSNICfHr99ANU0UFqSUw01LX51XtDlc0ZF30IU7v6tCOFtQvZZFFizJbFG\r\nzY+gIcgfmA1n50J4pr4oJPchhF8/9fJfQs293OELcZNgUwr+V5IzInvBBIVl\r\nB+5s4NvPKZQxaR9HAjITtw9e82VnJQbMP7GqjZtse1H+0ENNLdC+0nc1mNtK\r\nBWj4b0pkZWzfa4KVjRTh94nWad4Yqf5Psicr2pJnt6jhzaEpbhy4J/2FXFt1\r\nNk+AOczp4IUFJn5qUzEasOKwmsDL+/7FSn7iAV8f0gZf/D6hjaOOcUX6KbLw\r\nS9+INkPeiTkLIGidYKGt8ViAhp1Vb+7ZXbWw982HENDc8xPAFcNhcfFwjvap\r\nQPpKEXS66g5Q8Gb5AsifubIvxPds9aUQhBT5/XhM1IDqMkIoKNlTrDx8dmhU\r\nTyjCZDMr7VrWdRYskXgUaD5yTtEfq2tLb8JkKQYPEr8YFRXH8oAHZd7P1nZe\r\nc9e3L5J+5z1tW/6ZaO7Qm7u7NqZgENrRrPr5Z8HMklPJHcyO5s9yvkD/9MGQ\r\ncByY/S55eg64etQua2go72PzqOpsvLOJ0snasLElH/dTNrTm4sEk5GSU93Xi\r\nwN05k3T0wYBY+C7cstxUsfgCWRwOK5bKErE=\r\n=ywv7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"047d57b37e6d3bab8ecbb705b515b712c97f97f4","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.24_1676768573676_0.008293034561100532","host":"s3://npm-registry-packages"}},"0.2.25-beta.1":{"name":"@virtuslab/formts","version":"0.2.25-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.25-beta.1","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"cd1b2cf861cb28cb9f8f0f1ac52c8d23bbef8eaa","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.25-beta.1.tgz","fileCount":190,"integrity":"sha512-CdjUhwQSLudw67BGZUc0AnGK61KwlVFI6gUQ4SCQTJ+DGVyG4YDnEEhy04/fLmjFvS9vxEuk060mn5BNOlP8Jg==","signatures":[{"sig":"MEUCIQD6un3QIsUit92NOGMeLV+mhOccUpn2H1MkkIMFwzOtOAIgHrHkF2DWoHY2JIDLeNmQ2j5Sm0OC9rrJQlc7UCxgP/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1237644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+7UGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWBg/5AdM6mzoTuVG4EgS64wUnbcdalwkmUYNtGhXddl1XxPximjvB\r\nuuQlzNEE8XVMttGYvkVD+JmJYVs/fcy8u1bvxIa5tn/Rm1yeXb/5UE0X+1yz\r\nMqwNc2TGEFr46C2Mf9EvECcqWwCoyhm32+bo/Q4D/d2rNXB2qtKP5UICBDct\r\nbC4oWWJ018Rvj//3ij+oPFQqavRkz6Dvi9ti8fwZwCyCylXIXsfXVmaVSnPn\r\n9n6bE0QX5bEcwnMhUlhvPCuWAIBbjXjjs1nWNllzgzlIEAQWLvHegswfFDyS\r\nBm7gcE5Y2BCoQQJE/nNqp5fJjnsr0m/n7PO7cmMOfTqoHOgzMmVeDIX7/eQL\r\nyjO4+iakSG3Jm2Qc0zREHUsahgkW4Xe9M5VayW7SoOO6hedzgm7Epk7dCGAJ\r\nhI0Uh0wyYOenN7fWHiWx0LbRMf2y516cakqhKaynW0XxT9XhYI2eEGut2Spm\r\nyWsJiUzmr/fGQb1XCARViahpS2LuzA4dyqGm40DalGOP9D4J21LVn9P0KXJB\r\nvAJLp/8DoczAFKgpn89ZWXGewUZEFyKVJwMfbhLZeoCRRscPdHaiyJseEySA\r\n2Ucs9XXwb8L0VGMv1O8lA5QjihUXhhf5pCHhe84QrmDdkDSy3WytVRWP5nsK\r\nBTqup1StK3kfyOINHgNbdiy1pR/XqVd6KaI=\r\n=S9ZP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"3e60c8aa164652c1eb0f17394a964a699e6d0023","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"8.15.0","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"16.17.1","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.25-beta.1_1677440262044_0.8164455547082614","host":"s3://npm-registry-packages"}},"0.2.25":{"name":"@virtuslab/formts","version":"0.2.25","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.25","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e422ebe02059029f9ba2b88a728da9dc9e84682f","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.25.tgz","fileCount":191,"integrity":"sha512-7aIx7U9Zl1YRNsKTbX6wR2VOR/OdU0DqHxyKJWMx4kfiC44gLHRC0aEscvapagZ/9TTCkXICpXvXDKAFNv5sLQ==","signatures":[{"sig":"MEUCIQDhIGAeeVA/ygOkx765nEWdhAcIC8c0ZAP1j6/C+K2wuQIgFFw91fLA0Q2YUmXB/x9Hj+jIznVSs9bzlL3p8wuRnZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1253774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+9YTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpUsg/+Ocm8vYS4mi0d94AmtGcxhc5XYjpwd6ASC9K8E/0SnjH5EvBW\r\ni3g2y1Rpy6e1lqtsrAqjvpo/k0Os31Gu96bZch+Fx3CS0F24quEHIteF+6hL\r\njFa210IGBR7CScUu41PVnjSqCi7cnlmV6YoV9OFV/ny8b7crsGwqde60d/mr\r\no4891BctD87HK5dLQqA3TqDsB2Ayurq6J3GSL/JeJ+kf3YPLphU5CstLLuB4\r\nfbnopnTouFBCmI57vNsGj7YG7KY4C1ny/JGJ4aDuNNKWPiDz6YUj0eqT/AH1\r\nRtc8VHnVpS3yRpGWARzxvjwqjL0E8tWCPtBfAMGcGJ1DdODD4sgnAigLg6gS\r\nZUZEcrR1B6aV+U5u4qwBzGwsr6VpntqKbitJFZAzWjTWXwHMhLHbf41tMEPh\r\n37kM25qB1j4ud22PmQDkB8bpXTG9sYA+ZnBzIWlj7SfbJX8Zre/fCjkZt76y\r\n18pzXKg0XNxTk4LksZecSHpdyOdQOoC05IjS9pJzP1ey/MmTWV2nNi4J/aBP\r\nvz6K+meELywQ/VYBNvKfXE4z4u4I4Y+QeTDJBCvTzOj1pXaOP+r/BzEQ34GZ\r\nIORCM6oayjecASEIDLwZyAEmqGMgmXISn4OfcJb+Ae2nE0estmp5uHhnh0iL\r\nMsS0aqiqbZefjCwP1OWJD3+Q0RUws+6pzGU=\r\n=8eEO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"7dcf769f9c6b2813d0f3719fbd0bcb6a1db458f5","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.25_1677448722902_0.10176740835054776","host":"s3://npm-registry-packages"}},"0.2.26-beta.1":{"name":"@virtuslab/formts","version":"0.2.26-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.26-beta.1","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"d12598d875f441d1723cd8e1a4bfce83c73c94f0","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.26-beta.1.tgz","fileCount":200,"integrity":"sha512-eMCR3Dz0moVd/qIl0Qb1KDC6jTrK3iAht5qfkQEL5Ge6z27QHZ1218zajGQbCWP6qk77U38sG/brCbcUqyEdcQ==","signatures":[{"sig":"MEYCIQDpxafh3CZtHk/pcUXcQC4jvgSlOPkFBqGTbNg60mMdgAIhAJr5Yvn3FnCcB293SY//UUxKO3QVklj86i5QUwaHWg6e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1244092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkA/bxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYpg/+I2GxC+wZDqmw1xuJliUoCJwx8uEeFxP+Bb85/qtugrAeABDv\r\n0luOMpLBuaz24ntB2Jn5+r0aLRZYeVLn8jHNa4YjFRykPUF336bBbcAkeKWO\r\nmRuUKSPH3TqGyffVMSyFSApuxxAPIVT630f41uaR4PDfkyIiK/nuwWAeEHWQ\r\nsZ6JyNeG+4cNKS25gja6+mg6yLw5Tdm6lupw8qOSA1d2TK6dPXgI+kF+o1NH\r\nlR5lGc1zPzTDeuvC9OiB9wB0EyH1n1q4yNTLflipaUay2kWDBV3FK3dF+oWW\r\nv/fI0o+Sdk9s0pK0EVhKmxugPoWThjIDi/jR2TyS/WgpPxobgWiKGexuoSJl\r\nKg36lVOqtEJ/pNzkhVwH3VLb/7Y+9knqHIKqviQ4c8dMX+2J2lWGjozM7FnG\r\nMI3CRexYyGRdhTT5urO/nJuR9pk4LYm0uoSzCgGAo5x785i0lKOVok6QiL/7\r\nge+CbjWAgpkY7AdS++BKGff71Unn+GWio4RHQRZhBCewc/o0uBZh8MTR4FrM\r\nR8zdxrOWJzonlWdgJBdfKIX8VPZpJKCNMoz1zum1AlocUzKEEaUqT85VYMsD\r\nDZNElXA4AfQ7rEM3JhayIQF/eQWX2gMGYLCkf8aDnYtQ/bNly421o0VBDanv\r\n/w7Dgnlt2wcC8zSbrfmo+z2Zx/xTWjmhcU0=\r\n=KLIT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n3. [form with summary of validation errors](https://codesandbox.io/s/form-with-summary-of-validation-errors-r44usv?file=/src/example.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"33db490ad10741b57a7ea4125d2003606ea0674e","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"8.15.0","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"16.17.1","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.26-beta.1_1677981425195_0.4192924227617123","host":"s3://npm-registry-packages"}},"0.2.26-beta.2":{"name":"@virtuslab/formts","version":"0.2.26-beta.2","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.26-beta.2","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"e18670ecd9504575f4d7b7c633f07b78d57d2d1f","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.26-beta.2.tgz","fileCount":200,"integrity":"sha512-oQrF5YwLrnhHzOZlDVB6ww2EFYZhZuaG3ue+gq4PXtJ1ep0Oc3aezrXVwRIwKP3Xk0cwxdXQ7sysCuMAMsTOyw==","signatures":[{"sig":"MEUCIQDN1y3C9tNF0Y22Ka9qOVIJwJM8Xt+P84I/tnFCmVcckgIgH0Aljoi9Ebd+SF2uCUbnBBT+RKDzZZfO5wjzsFPWSq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1244729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkA/uAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmonNg//UIqqQe6T84A/1MXFJwcqakhBsj/9A7KIW4bEpNAK30Jil6MS\r\n56yMHhqVmGf2RYTYiMCD8MbhsbC71LONjtlwrRtmy1pIbX6Hl7p8OjVmKT62\r\nFG53FFUUVfgHGwhLbNb4uVdK7KYhyTY490gTEFy7Z4Bi7nNGvvDT7IgFYG48\r\nxYtomQHyiaxWWzyrZAtgGdVt7TbqSspcuHphy5hg5n1uubPSfRaPYNNQ/oHn\r\nXKJ7Ao0+ANMp4QECRZjisaSh4I77BtOZ3BDw4xJhiDEZoV/w7tSyH8fbMuRs\r\n7nu1qCOohSjt6/TJlZVYf/q86ub1kGej96EmPV0kUdEISaT8paEj+9c0c4tF\r\nIwy1qY1MFysuvH/PSREyPS6sWl50bGCmZ5PElSHgTm2azDucbzMWP+JK43mE\r\nwYG6aupV3e9SGvVlXBAHsG7cq1PGbSu637PNCNuwkPPCyOhJqRQ3fVNwjb5J\r\nXTJM7kcXkHJrncdoPJhQwYvtyjCpevsXKbyBtxJ7yfZ2Qf/1G/XxsdjDAhlm\r\n2a7Uvdg5nbWvPTBZJftqZNS1yw2dQOZzc8oP139jqRbsZfmGezF3HzWHqZxp\r\nU89JVq3QGnHH5D7woPZlBMazZojo0lfA53AQQ8C8JrA5/fmlLcXbYOgFbQNs\r\nurxf1x8pxVfc+x4Vx7Hen9uSQlq/Oo6feQc=\r\n=b6xO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n3. [form with summary of validation errors](https://codesandbox.io/s/form-with-summary-of-validation-errors-r44usv?file=/src/example.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"5f32d2a6c5c4bf58a78c3fde23ed604898d826e9","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"8.15.0","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"16.17.1","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.26-beta.2_1677982591803_0.6576134782085095","host":"s3://npm-registry-packages"}},"0.2.26":{"name":"@virtuslab/formts","version":"0.2.26","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.26","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"9dec25e2e61a0e0d1dfa7c0eacdc536ccc5cf925","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.26.tgz","fileCount":201,"integrity":"sha512-wmsqGbw5TcLnOcLW0AhILAQpVPHXx2CHjafiLdY9BFBgsQ1TYMbfRk8vq8pa2It2c+idj3FO9Qy/n/a7vxdRvg==","signatures":[{"sig":"MEUCIQCu4nuEE8ngPLy+0oaVXvKTfLXp6epu1WFxlH6LLhiC9QIgJFe/JG7vBeGmCPF7XS7Nj1/aHPV/QJQmw6axlHwXq8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1260622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkA/46ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKuw//Y+f7eGy5RmkbC3TJC7y32/Ao/VlJYCgA+k9vH6j/FsvGwjL4\r\nQVSh8g+p4Np9LLz5TxQWsWOZ1IQ5Hg2Ks3jzyeglTVHhXibu/hbG913Ubyvu\r\nUSIh4ouzaaAQZsTFpFC4JX26ocZw9pwph0/lIyYqWaxtDBH7C9oLp+wEAUd4\r\ngQGEmM4IySlUpYVa7+EnQg5c03Zkxvn7GjYFoj3ohj51yWnEcv6lN7/1ZSxB\r\nS4RBi3hjFvo8OlrKETo46XlYyNI20ZLHt91xFUCfX1bD5nMBhVgeRyzBj3TW\r\nBRAcQylIykhZhugY+967iE1FPwXXAsYxU94eCrWRwJHyNKteiOLm8gAEj9lF\r\nhRrG5SIFCdSujk4+WnE8cNwqOVIllID9/a9OYqGETjldEl5gGsiSo8FgFhwd\r\n7Q9GqshLvbO5ufQl2SKW1SUrtG77lYqsReJXYYluj+Ryo51AdF1UGQEXkEy6\r\nlGmovtVaXxUxEvZQwx730mvQyPjXE7aCwZo8iUd/It+zUIuKSvp4N/HE6sWm\r\npyAtiGwP9B9kEG3aV8Tpt1IiOvxNohcl2rILKoxOfA3UylcOqtLd+LT2cMCX\r\nul5Whr7brAaXZ2Fq+IQGrD5oav8CAx5roZqy4yz8/kKDWsjUgnltwDWHW84Q\r\nbuZph/oTCrfKBoE3Los2NEzbV0FmiYcxvUE=\r\n=JGFv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"a7f4b825041339d84c18f2df29b25d3ab367db0a","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.26_1677983290587_0.5514701385472136","host":"s3://npm-registry-packages"}},"0.2.27-beta.1":{"name":"@virtuslab/formts","version":"0.2.27-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.27-beta.1","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"3a943851e2e0a04058d4f31c4e8eae5ae123248e","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.27-beta.1.tgz","fileCount":200,"integrity":"sha512-miEquGDkbMbVP1dlQ8nR6MLwfTbw5z8mtNvvfiZItqH3soabrLYdMS6xencEMSr29CgXZImcB774wiEOQX0rQA==","signatures":[{"sig":"MEYCIQDTrddNYCwn8EgY4/V7bxEBETPm+n5sL6ovgmTG1h4D/AIhAO3XMpeZjk5x0m/PUcAuO4cbcexNBUpXGPggzumMWANr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1255832},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n3. [form with summary of validation errors](https://codesandbox.io/s/form-with-summary-of-validation-errors-r44usv?file=/src/example.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"0795eb40a3335269568622c15d5425d06f3a18ab","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"18.16.0","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.27-beta.1_1686513990951_0.13571421994724608","host":"s3://npm-registry-packages"}},"0.2.27":{"name":"@virtuslab/formts","version":"0.2.27","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.27","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"7dc3603e687f6788c6d5443c1adca4131e8f4eee","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.27.tgz","fileCount":201,"integrity":"sha512-UDULoEiuhShn1l8mNnR2qYaSZ/cyWX5G0Ld//vOSycLmbYepJXGSS4EfBptvil+MyWbriS/BLPFWwCviQnNhMg==","signatures":[{"sig":"MEUCIQDAdx7FKpuQDKY6DXrrvGuVB4oYV2EzFVxRJ6ayBT0qkgIgYnrTwtnGaFjNrZhvLhE6X1V4Su6H0j20Clixx05G0QM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1272036},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"e668a20a4bd75c1136c7c3144a117760e39fe98e","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.27_1686515594210_0.8464558936420572","host":"s3://npm-registry-packages"}},"0.2.28":{"name":"@virtuslab/formts","version":"0.2.28","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.28","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"654634e56d7741114075e44bf77ad7e2aa2ffd5c","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.28.tgz","fileCount":201,"integrity":"sha512-kUpFWXqP7VqoDPVPLE5psgFPEUeuynwoejcYvdwRIATNY24vA/9tlT7drubGNRD9y3KALqJkwHHhLvgQl9uP9g==","signatures":[{"sig":"MEUCIQDbbdXW+7mD452HE9z+KQqINGLHcexjgOuFT6HUCvH2GgIgc62jVA4hZPvaThg/8BI+1iipzZjQ5Uu6S2Krk+JmTV0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1272256},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"489dafe9d06f89c23035cd78fa9e120f8fce47bd","private":false,"scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"6.14.6","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/typescript":"^4.0.5","**/@typescript-eslint/parser":"^4.6.1","**/@typescript-eslint/eslint-plugin":"^4.6.1"},"_nodeVersion":"12.18.4","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.1.0","eslint":"^7.9.0","ts-jest":"~26.5.2","prettier":"^2.1.2","babel-jest":"26.6.3","size-limit":"^4.9.2","typescript":"4.2.2","@types/jest":"~26.0.20","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^4.6.1","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^3.4.2","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^4.6.1"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.28_1688319897559_0.45321229885636405","host":"s3://npm-registry-packages"}},"0.2.29-beta.1":{"name":"@virtuslab/formts","version":"0.2.29-beta.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.29-beta.1","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"349ba7987a640094c733a1600b74a3f787776887","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.29-beta.1.tgz","fileCount":200,"integrity":"sha512-fmi4VxT46TygpvwKJT83ttxcmb+859Ca1WQiQCAbOznEEn9DBU8z5WLBze5iFHfAR6r7iCvyQ6y38mJrrhbAcw==","signatures":[{"sig":"MEYCIQDesKyrW7ZgKF+RU0ZnqYTItPwhvMJ+tkVkGvVfaaV0KAIhAKV+/ziCRTgtDh7abIjDShAcg9O3jZjbgBiZhxcHGSBJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1256893},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\nActive development. Expect frequent breaking changes until `1.0.0` is reached ⚠️\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- **[TODO]** Transformation API for declarative mapping and filtering of field\n  values\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of exhaustive JSDocs and\nexamples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n3. [form with summary of validation errors](https://codesandbox.io/s/form-with-summary-of-validation-errors-r44usv?file=/src/example.tsx)\n4. [registration stepper form](https://codesandbox.io/s/registration-stepper-form-8c3jdm?file=/src/registration-stepper-form.tsx)\n\n### Why another form lib?\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Current limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values on Submit\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n- Transformation API is limited to mapping inside the same type, i.e. `T => T`\n","gitHead":"4a934cbf1a5fec11ee02c1dc6bfd13ae249a2f03","private":false,"scripts":{"lint":"eslint --fix ./src/**/*.ts && prettier --write ./src","size":"size-limit","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","analyze":"size-limit --why","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"mixvar","email":"mixvar@gmail.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"size-limit":[{"path":"dist/tsdx-example.cjs.production.min.js","limit":"10 KB"},{"path":"dist/tsdx-example.esm.js","limit":"10 KB"}],"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/jest":"^29.6.0","**/ts-jest":"^29.1.1","**/typescript":"^5.1.6","**/@typescript-eslint/parser":"^5.61.0","**/@typescript-eslint/eslint-plugin":"^5.61.0"},"_nodeVersion":"18.16.0","side-effects":false,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"~29.6.0","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.6.0","eslint":"^7.9.0","ts-jest":"~29.1.1","prettier":"^2.1.2","babel-jest":"29.6.0","size-limit":"^4.9.2","typescript":"5.1.6","@types/jest":"~29.5.2","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^5.61.0","@size-limit/preset-small-lib":"^4.9.2","@testing-library/react-hooks":"^8.0.1","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^5.61.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.29-beta.1_1688587826203_0.37243364779164745","host":"s3://npm-registry-packages"}},"0.2.29":{"name":"@virtuslab/formts","version":"0.2.29","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.29","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"120e50cb850c71b7bf1ab36baa4ab9488f6f3e7f","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.29.tgz","fileCount":200,"integrity":"sha512-ODiX+4NSqZOv2zXdllzUrCyHBkJb/oZ6Xl9VHts7hxfWsr5L2HVCRyrXstEZvjYVN6+Qe3PJArWNV63ICqI6pA==","signatures":[{"sig":"MEYCIQDXwZvhiiZbZPvrdgHYCfHEMVFRHf0mHQJDzKRsc8h4+QIhANcvL0+cC8Ez9hfuMP232ZbmaYFPpuAqVI4zxrCUsJ55","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1256558},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"092e65a3441672f12666c40bda38f3bacfc4ae00","private":false,"scripts":{"lint":"eslint --fix ./src/**/*.ts && prettier --write ./src","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/jest":"^29.6.0","**/ts-jest":"^29.1.1","**/typescript":"^5.1.6","**/@typescript-eslint/parser":"^5.61.0","**/@typescript-eslint/eslint-plugin":"^5.61.0"},"_nodeVersion":"18.16.1","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~29.6.0","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.6.0","eslint":"^7.9.0","ts-jest":"~29.1.1","prettier":"^2.1.2","babel-jest":"29.6.0","typescript":"5.1.6","@types/jest":"~29.5.2","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^5.61.0","@testing-library/react-hooks":"^8.0.1","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^5.61.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.29_1688591286042_0.6089458117384872","host":"s3://npm-registry-packages"}},"0.2.30":{"name":"@virtuslab/formts","version":"0.2.30","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.30","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"325bda5917083446e56c32a6966d92c5731af797","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.30.tgz","fileCount":200,"integrity":"sha512-wk5iaEezON13v+BhpGzDAQE0B6NqJmaJf4Pra6Bk4UkyUNVkkjJbbVEzHU5lEvBCLhxZpwzE2nSW1n65/FMiJQ==","signatures":[{"sig":"MEYCIQDZDnd/0122VKG45m7oF7Cn+rkqFIqsaSx9k/3KXEB9hwIhAJ+B+no9eKKAm9IHDpoBvYPHGbekjWFlEQ9Z55T1HWbx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1259087},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"92a6a55b7e78d8a4bb637cf57ca6f915a3cde831","private":false,"scripts":{"lint":"eslint --fix ./src/**/*.ts && prettier --write ./src","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json","generate-docs":"typedoc src/index.ts"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/jest":"^29.6.0","**/ts-jest":"^29.1.1","**/typescript":"^5.1.6","**/@typescript-eslint/parser":"^5.61.0","**/@typescript-eslint/eslint-plugin":"^5.61.0"},"_nodeVersion":"18.16.1","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~29.6.0","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.6.0","eslint":"^7.9.0","ts-jest":"~29.1.1","typedoc":"^0.24.8","prettier":"^2.1.2","babel-jest":"29.6.0","typescript":"5.1.6","@types/jest":"~29.5.2","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^5.61.0","@testing-library/react-hooks":"^8.0.1","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^5.61.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.30_1688685725230_0.6605222627863994","host":"s3://npm-registry-packages"}},"0.2.31":{"name":"@virtuslab/formts","version":"0.2.31","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@0.2.31","maintainers":[{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"a564a8ff80126c8d5d4230ba336b1aa3a93af184","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-0.2.31.tgz","fileCount":200,"integrity":"sha512-PJga1kxwVXTWUZk8KaLgYR+fWzz/2ji6l3koju7jA+Gu7EdoYWkgZY1kze66HktM1ZJSdMMBOxzmIZKSjdKUhw==","signatures":[{"sig":"MEUCIHWa68+83VIh8dJh9wz2ZhhEYOPwr4avvzNrhmcdsm9fAiEA57Zaxsu1rYVLRtt84ZEmHIFL/q0Qv7tJ+x0mQ3snU2E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1259087},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"26e068af0b15e2179e7f8e9aecc9bae2f5f84950","private":false,"scripts":{"lint":"eslint --fix ./src/**/*.ts && prettier --write ./src","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json","generate-docs":"typedoc src/index.ts"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/jest":"^29.6.0","**/ts-jest":"^29.1.1","**/typescript":"^5.1.6","**/@typescript-eslint/parser":"^5.61.0","**/@typescript-eslint/eslint-plugin":"^5.61.0"},"_nodeVersion":"18.16.1","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~29.6.0","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.6.0","eslint":"^7.9.0","ts-jest":"~29.1.1","typedoc":"^0.24.8","prettier":"^2.1.2","babel-jest":"29.6.0","typescript":"5.1.6","@types/jest":"~29.5.2","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^5.61.0","@testing-library/react-hooks":"^8.0.1","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^5.61.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_0.2.31_1689064257321_0.04627132448343119","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@virtuslab/formts","version":"1.0.1","keywords":["react","typescript","forms","validation"],"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","_id":"@virtuslab/formts@1.0.1","maintainers":[{"name":"mwleklinski","email":"mwleklinski@virtuslab.com"},{"name":"adrian-potepa","email":"adrian.potepa@gmail.com"},{"name":"jkoziel","email":"jkoziel@virtuslab.com"},{"name":"kusmierz","email":"kusmierz@gmail.com"},{"name":"mstrag","email":"mateusz.strag@gmail.com"},{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},{"name":"mixvar","email":"mixvar@gmail.com"}],"homepage":"https://github.com/VirtusLab/formts#readme","bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"dist":{"shasum":"766a66fdb641a217a9550328bdd5409544751392","tarball":"https://registry.npmjs.org/@virtuslab/formts/-/formts-1.0.1.tgz","fileCount":200,"integrity":"sha512-4UOTdIWkM2ZlFh/1lrTYdEm3UKwa0BkooEacQF0OJj4Bw9QtzbzirsP3/8Fq7JuZ6SHAQo8wTQffd4RPoZ4slQ==","signatures":[{"sig":"MEUCICFgua6kTVUDxMkHXXQzn6vKBYV5jlVHUcbg25jpKdFpAiEAyRBxgT2YasVvFr984FLg0g9XydZCULHAofUFcoCfX7k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1259539},"main":"__dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"module":"__dist/esm/index.js","gitHead":"72639440019e6152a2e358015460a855ec001b74","private":false,"scripts":{"lint":"eslint --fix ./src/**/*.ts && prettier --write ./src","test":"tsdx test","build":"yarn typecheck && tsdx build && sh ./scripts/postbuild.sh","start":"tsdx watch","prepack":"sh ./scripts/prepack.sh","prepare":"yarn build","release":"standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [ci skip]\"","test:ci":"tsdx test --ci --runInBand","postpack":"sh ./scripts/postpack.sh","typecheck":"tsc -p ./tsconfig.json","generate-docs":"typedoc src/index.ts"},"typings":"__dist/index.d.ts","_npmUser":{"name":"pidkopaj-virtus","email":"vbilovus@virtuslab.com"},"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"_npmVersion":"9.5.1","description":"Type-safe, declarative and performant React form & validation library","directories":{},"lint-staged":{"*.{ts,tsx}":["jest --bail --findRelatedTests","eslint --fix","prettier --write"],"*.{md,json}":["prettier --write"]},"resolutions":{"**/jest":"^29.6.0","**/ts-jest":"^29.1.1","**/typescript":"^5.1.6","**/@typescript-eslint/parser":"^5.61.0","**/@typescript-eslint/eslint-plugin":"^5.61.0"},"_nodeVersion":"18.16.1","side-effects":false,"_hasShrinkwrap":false,"devDependencies":{"jest":"~29.6.0","tsdx":"^0.14.1","yarn":"^1.22.5","husky":"4.0.0","react":"^16.13.1","tslib":"^2.6.0","eslint":"^7.9.0","ts-jest":"~29.1.1","typedoc":"^0.24.8","prettier":"^2.1.2","babel-jest":"29.6.0","typescript":"5.1.6","@types/jest":"~29.5.2","lint-staged":">=10","@types/react":"^16.9.50","@commitlint/cli":"^11.0.0","standard-version":"^9.0.0","react-test-renderer":"^16.13.1","eslint-plugin-import":"^2.22.0","eslint-config-prettier":"^6.11.0","conditional-type-checks":"^1.0.5","@typescript-eslint/parser":"^5.61.0","@testing-library/react-hooks":"^8.0.1","@commitlint/config-conventional":"^11.0.0","@typescript-eslint/eslint-plugin":"^5.61.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/formts_1.0.1_1690204620290_0.008699009491522691","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-11-16T20:08:30.441Z","modified":"2026-09-09T14:45:52.941Z","0.1.1":"2020-11-16T20:08:30.922Z","0.1.2":"2020-11-16T21:02:13.538Z","0.1.3":"2020-11-16T21:06:28.343Z","0.1.4":"2020-11-16T21:25:57.220Z","0.1.5":"2020-11-20T17:20:58.560Z","0.1.6":"2020-11-21T17:36:58.172Z","0.1.7":"2020-11-22T12:24:37.301Z","0.1.8":"2020-11-22T12:38:28.125Z","0.1.9":"2020-11-25T10:36:11.357Z","0.1.10":"2020-11-26T17:04:52.562Z","0.1.11":"2020-11-29T15:23:59.893Z","0.1.12":"2020-11-29T15:42:45.977Z","0.1.13":"2020-11-29T18:16:42.864Z","0.1.14":"2021-01-11T09:37:45.719Z","0.1.15":"2021-01-18T19:39:47.421Z","0.1.16":"2021-01-18T20:01:36.658Z","0.1.17":"2021-01-21T17:26:42.790Z","0.1.2-beta.0":"2021-02-01T19:54:38.201Z","0.1.17-beta.0":"2021-02-04T14:46:48.708Z","0.1.17-beta.1":"2021-02-04T14:50:12.073Z","0.1.18":"2021-02-09T17:12:18.127Z","0.1.19":"2021-02-15T15:35:53.291Z","0.1.20":"2021-02-22T16:12:24.972Z","0.1.20-beta.1":"2021-02-22T18:56:09.611Z","0.1.20-beta.2":"2021-02-22T19:39:14.080Z","0.1.20-beta.3":"2021-02-24T07:05:45.515Z","0.1.21":"2021-02-25T18:13:51.886Z","0.1.22":"2021-02-25T19:15:14.886Z","0.1.23":"2021-02-26T10:25:44.622Z","0.1.24":"2021-03-17T15:40:35.131Z","0.1.24-beta.1":"2021-03-17T22:11:43.006Z","0.1.25":"2021-03-19T08:00:11.365Z","0.1.26":"2021-03-19T20:45:44.573Z","0.2.0":"2021-03-21T14:13:58.172Z","0.2.1":"2021-03-21T16:34:59.125Z","0.2.2":"2021-04-01T21:29:43.659Z","0.2.3":"2021-04-04T12:08:11.559Z","0.2.4":"2021-04-14T06:25:53.738Z","0.2.5":"2021-04-28T16:14:21.490Z","0.2.6":"2021-04-28T16:27:41.692Z","0.2.7":"2021-04-30T17:58:45.100Z","0.2.8-beta.1":"2021-05-03T14:37:22.053Z","0.2.8-beta.2":"2021-05-03T15:10:15.514Z","0.2.8":"2021-05-12T06:44:25.920Z","0.2.9":"2021-05-12T15:14:52.689Z","0.2.10":"2021-05-12T15:38:26.916Z","0.2.11":"2021-05-12T16:08:49.945Z","0.2.12":"2021-05-21T13:23:25.116Z","0.2.13":"2021-06-07T19:27:27.985Z","0.2.14":"2021-06-07T19:32:43.770Z","0.2.15":"2021-12-09T12:42:44.270Z","0.2.16":"2022-02-27T01:46:41.744Z","0.2.17":"2022-08-14T17:42:51.115Z","0.2.18":"2022-08-14T17:50:48.071Z","0.2.19":"2022-08-14T18:00:42.584Z","0.2.20-beta.1":"2022-08-14T23:18:56.103Z","0.2.20":"2022-08-25T23:34:54.599Z","0.2.21-beta.1":"2022-08-28T22:07:30.642Z","0.2.21":"2022-09-05T17:05:08.625Z","0.2.22":"2022-09-17T20:13:34.174Z","0.2.23-beta.1":"2022-11-15T20:50:30.894Z","0.2.23":"2023-02-17T14:57:22.870Z","0.2.24":"2023-02-19T01:02:53.930Z","0.2.25-beta.1":"2023-02-26T19:37:42.303Z","0.2.25":"2023-02-26T21:58:43.150Z","0.2.26-beta.1":"2023-03-05T01:57:05.404Z","0.2.26-beta.2":"2023-03-05T02:16:32.017Z","0.2.26":"2023-03-05T02:28:10.814Z","0.2.27-beta.1":"2023-06-11T20:06:31.184Z","0.2.27":"2023-06-11T20:33:14.430Z","0.2.28":"2023-07-02T17:44:57.793Z","0.2.29-beta.1":"2023-07-05T20:10:26.471Z","0.2.29":"2023-07-05T21:08:06.271Z","0.2.30":"2023-07-06T23:22:05.489Z","0.2.31":"2023-07-11T08:30:57.599Z","1.0.1":"2023-07-24T13:17:00.584Z"},"bugs":{"url":"https://github.com/VirtusLab/formts/issues"},"author":{"name":"Mikołaj Klaman","email":"mklaman@virtuslab.com"},"license":"MIT","homepage":"https://github.com/VirtusLab/formts#readme","keywords":["react","typescript","forms","validation"],"repository":{"url":"git+ssh://git@github.com/VirtusLab/formts.git","type":"git"},"description":"Type-safe, declarative and performant React form & validation library","maintainers":[{"email":"hello@sensinum.com","name":"cyp3r"},{"email":"mateusz.strag@gmail.com","name":"mstrag"},{"email":"jkoziel@virtuslab.com","name":"jkoziel"},{"email":"adam@warski.org","name":"adamwarski"},{"email":"zruksza@virtuslab.com","name":"zruksza"}],"readme":"[![build status](https://circleci.com/gh/VirtusLab-Open-Source/formts.svg?style=shield)](https://app.circleci.com/pipelines/github/VirtusLab-Open-Source/formts)\n[![GitHub license](https://img.shields.io/github/license/VirtusLab/formts)](https://github.com/VirtusLab/formts/blob/master/LICENSE)\n[![npm](https://img.shields.io/npm/v/@virtuslab/formts)](https://www.npmjs.com/package/@virtuslab/formts)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@virtuslab/formts)](https://bundlephobia.com/result?p=@virtuslab/formts)\n[![examples](https://img.shields.io/badge/examples-codesandbox-blue)](https://github.com/VirtusLab/formts#examples)\n\n# Formts\n\n**Type-safe, declarative and performant React form & validation library**\n\n### Status\n\n**A stable release has been reached.** Further development of new features is\ncurrently not planned. Bug fixes will be provided if needed, feature requests\nwil still be considered.\n\n### Features\n\n- Fully type-safe API, purpose built to get the most out of Typescript\n  type-inference\n- Declarative definition of form shape and validation rules\n- Runtime type-checking of form values against the schema\n- Convenient hooks & context based API allowing for isolated re-renders\n- Plain react-typescript, 0 dependencies\n- View layer agnostic - no components are provided, works with any 3rd-party\n  components\n- `handleChange` function for dealing with change events automatically\n- Advanced validation API which enables:\n  - specifying dependencies on other fields\n  - specifying validation triggers for individual rules\n  - selective validation of just the affected fields on value changes\n  - separation of error messages from error codes (optional)\n  - async validation rules with debounce option\n  - easy mixing of built-in rules with custom functions\n  - combining multiple validation rules into composite validators\n- Good scalability for very large and complex forms\n\n### Getting Started\n\n#### 1) Install\n\n```bash\nnpm install @virtuslab/formts\n```\n\n#### 2) Define shape of the form\n\n```ts\nimport { FormSchemaBuilder, FormFields } from \"@virtuslab/formts\";\n\nconst Schema = new FormSchemaBuilder()\n  .fields({ answer: FormFields.string() })\n  .errors<string>()\n  .build();\n```\n\n#### 3) Define validation rules (optional)\n\n```ts\nimport { FormValidatorBuilder } from \"@virtuslab/formts\";\n\nconst validator = new FormValidatorBuilder(Schema)\n  .validate(\n    Schema.answer,\n    val => (val === \"\" ? \"Required!\" : null),\n    val => (val !== \"42\" ? \"Wrong answer!\" : null)\n  )\n  .build();\n```\n\n#### 3) Create controller holding form state\n\n```tsx\nimport { useFormController, FormProvider } from \"@virtuslab/formts\";\n\nconst MyForm: React.FC = () => {\n  const controller = useFormController({ Schema, validator });\n\n  return (\n    <FormProvider controller={controller}>\n      <AnswerField />\n      <FormActions />\n    </FormProvider>\n  );\n};\n```\n\n#### 4) Connect inputs to form\n\n```tsx\nimport { useField } from \"@virtuslab/formts\";\n\nconst AnswerField: React.FC = () => {\n  const field = useField(Schema.answer);\n\n  return (\n    <section>\n      <label htmlFor={field.id}>\n        What is the answer to the meaning of life, the universe, and everything?\n      </label>\n      <input\n        id={field.id}\n        value={field.value}\n        onChange={field.handleChange}\n        onBlur={field.handleBlur}\n      />\n      <div className=\"error\">{field.error}</div>\n    </section>\n  );\n};\n```\n\n#### 5) Connect actions to form\n\n```tsx\nimport { useFormHandle } from \"@virtuslab/formts\";\n\nconst FormActions: React.FC = () => {\n  const form = useFormHandle(Schema);\n\n  return (\n    <section>\n      <button\n        type=\"submit\"\n        disabled={form.isValid === false}\n        onClick={() => form.submit(console.log)}\n      >\n        Submit!\n      </button>\n\n      <button type=\"reset\" onClick={form.reset}>\n        Reset\n      </button>\n    </section>\n  );\n};\n```\n\n### Documentation\n\nCurrently API documentation is available in form of:\n\n- exhaustive JSDocs\n- [TYPEDOC docs](https://virtuslab-open-source.github.io/formts/)\n- CodeSandbox examples\n\n### Examples\n\nPlay around with the code on _CodeSandbox_ to learn _Formts_ API and features:\n\na) Step-by-step introduction:\n\n1. [basic form (naive)](https://codesandbox.io/s/intro-01-basic-form-naive-vplnc?file=/src/example.tsx)\n2. [basic form + optimized re-renders](https://codesandbox.io/s/intro-02-basic-form-optimised-re-renders-r6mrc?file=/src/example.tsx)\n3. [basic form + validation](https://codesandbox.io/s/intro-03-basic-form-validation-nhsg7?file=/src/example.tsx:770-795)\n4. [basic form + Material-UI](https://codesandbox.io/s/intro-04-basic-form-material-ui-e0kkl?file=/src/example.tsx)\n\nb) HTML input bindings:\n\n1. [radio group input](https://codesandbox.io/s/inputs-radio-group-4l1pu?file=/src/example.tsx)\n2. [checkbox group input](https://codesandbox.io/s/inputs-checkbox-group-t0mqb?file=/src/example.tsx)\n3. [select input](https://codesandbox.io/s/inputs-select-1twl4?file=/src/example.tsx)\n4. [input array](https://codesandbox.io/s/inputs-field-arrays-005tl?file=/src/example.tsx)\n5. [mui multi-select input](https://codesandbox.io/s/inputs-mui-multi-select-lczxy?file=/src/example.tsx)\n6. [mui date-picker input](https://codesandbox.io/s/inputs-mui-date-picker-x21vz?file=/src/example.tsx)\n\nc) Advanced examples:\n\n1. [change password form](https://codesandbox.io/s/change-password-form-yn1yz?file=/src/example.tsx)\n2. [order pizza form](https://codesandbox.io/s/order-pizza-form-czt6cw?file=/src/order-pizza-form.tsx)\n3. [form with summary of validation errors](https://codesandbox.io/s/form-with-summary-of-validation-errors-r44usv?file=/src/example.tsx)\n4. [registration stepper form](https://codesandbox.io/s/registration-stepper-form-8c3jdm?file=/src/registration-stepper-form.tsx)\n\n### Why another form lib?\n\n#### Update 2023:\n\nSome of the reasons outlined below are no longer valid as\n[react-hook-form](https://github.com/react-hook-form/react-hook-form) has\nimproved since this project started. It offers good type-safety and performance.\nIf for some reason you are not happy with it however, this library offers\ndifferent approach to many aspects of form management and a powerful validation\nAPI - so it may suit your needs better.\n\n#### a) Type-safety\n\nMost popular form libraries like `Formik` and `react-hook-form` are written in\nTypescript but are not _designed_ with type-safe API as a primary concern.\n\nThere is some evidence that this is important for some people:\n\n- [Reddit: Fully type-safe form libraries?](https://www.reddit.com/r/typescript/comments/co03ud/fully_typesafe_form_libraries/ewg09p0/)\n- [Formik issue: Strongly Typed Fields](https://github.com/formium/formik/issues/1334)\n- [react-hook-form extension: strictly-typed](https://github.com/react-hook-form/strictly-typed)\n\nThere are some existing truly type-safe react form solutions, but each has a\ncostly dependency associated with it:\n\n- [formstate](https://github.com/formstate/formstate) --> `MobX`\n- [Typescript.fun](https://dev.to/steida/how-to-forms-with-react-and-typescript-4icb)\n  --> `fp-ts`\n- [ReForm](https://github.com/Astrocoders/reform) --> `ReasonML`\n\n#### b) Performance\n\nThere are SOME form libraries with really good performance (react-hook-form).\nHowever combining convenient Context based hook API with React performance\noptimizations is still problematic. See\nhttps://react-hook-form.com/advanced-usage#FormProviderPerformance for example.\n\n#### c) Declarative validation API\n\nUsually form libs \"outsource\" advanced validation to schema-based libraries such\nas `Yup`. This seems like a great idea but has some limitations:\n\n- `yup` and similar packages are not designed with type-safety in mind\n- Advanced optimizations (such as validating only the affected fields rather\n  than the entire form) are not available.\n\n### Limitations\n\n- Form values type is limited by schema definition API and can't represent more\n  advanced TS types\n- Adding `required` validator does not impact type of values.\n- number() fields are typed as `number | \"\"`, this is because HTML number inputs\n  work with `\"\"` as empty value.\n- Definition of form shape and validation split into 2 separate steps\n- Binding to input components is more verbose than with other form libraries\n  (this is intentional to keep API type-safe and view-layer agnostic)\n","readmeFilename":"README.md"}