{"_id":"@10xjs/form","_rev":"47-1a4124b6528e1aad6ab14c455ed0aa96","name":"@10xjs/form","dist-tags":{"latest":"0.1.7","canary":"0.0.0-9eed5a646","next":"0.0.0-4634fe5ec"},"versions":{"0.1.0":{"name":"@10xjs/form","version":"0.1.0","scripts":{"build":"npm run clean && npm run build:flow && npm run build:es && npm run build:lib","build:es":"BABEL_ENV=es npx babel --copy-files -s -d es src","build:flow":"ncp src es && ncp src lib && npx renamer --regex --find '$' --replace '.flow' '@(es|lib)/**/*.js'","build:lib":"BABEL_ENV=lib npx babel --copy-files -s -d lib src","clean":"npx rimraf lib es","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","start":"cd ./website && npm start","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"CC0-1.0","main":"./lib","module":"./es","sideEffects":false,"files":["lib","es"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-flow":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","@babel/register":"^7.0.0-beta.46","@std/esm":"^0.26.0","babel-core":"^7.0.0-bridge.0","enzyme":"^3.3.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","jest-enzyme":"^6.0.0","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2"},"dependencies":{"hoist-non-react-statics":"^2.5.0"},"jest":{"modulePathIgnorePatterns":["lib/","es/"],"coveragePathIgnorePatterns":["__test__/"],"transform":{"^.+\\.jsx?$":"babel-jest"}},"gitHead":"901748244fa7cb8157b691727b8ce88466a19b42","description":"_A high performance zero-config form state library for React._","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-W6zOUDyHq17mvAwYRdT4dDsiP5DnsLGIbF+FRXqrM4i8ZwBmMDH6/G4hdFhfVB6G9J2lJBwPCr91+yhw37gXCQ==","shasum":"183d731ae3a1b6c5b2425922fccb257d091853ab","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.0.tgz","fileCount":94,"unpackedSize":446510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6WIJCRA9TVsSAnZWagAAcDkP/3MCwPWi/YmTvpmQTw4F\nvc74sYVWAl0/fDJ51q1WnUP+gINeifpQlcj8u5EWsOckgHmYz1Ijv51/GR9Q\n2MnZVgvEABWpf0sSx+SvFXkHyw+LgLdyBqxyEWV3u288teQDDBlwi+uGn8Ul\nu5o+BtqOlVIzdjs8CbZe3fDXN2iqO0OkfwO4YMCKuSwM75RCgKPHUa5oz8GV\n7O6Xq+MoD23NETlEDsB/kKN0+ur1s6A8C+1uotraFHnHFmpg0hyAHUbmlzi7\nLQoG7PurCPVI2gPJiBIx5Lcou/9vJ6XY7DTcDkeWhXbnHurCuimGDGVxifPk\nOyyL9xa5q5VrxJ8LHHXuLTW3d5LNxnkSmi8kQKl3zsfDTzQP8JfmMbrFVRIA\n5mmcgavwTm0xaVwDAYdfG53afo2KleWVWSm4xEsVlC8e/RyagoS0LjXt1LAz\nT1boHmfEQR9HRkCce45KvoWXnlvuKuMQAMdoRa5zhhkuDDOeYT/5Qxy/Sra8\na1wUEjC8Xmv2i6/djRI9C3B5pwec1ggxrQjVUUuTKLxAC7nanXFWE2+5lHW0\nGlgLujRBKD0TMPuZiGxwcMYCr9/JoJuW7Z46YjBVdFyEEPL6j1pTB4rcKIEJ\nOdrZO5WnZjNw8QZ2xIo/E1hIGHqGg1tenihtQGg2CYZX8bK1upqaVnMOx+c8\ntlX2\r\n=xerP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2zulUCWk46WwW2wHm1vpUEm1aGz6D9C5wNuEyegRuyAiABBxz/6crjz+GMAzD9bACp6jqQGnNWvlMmAcBY5ngIwg=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.0_1525244425279_0.42128566491352415"},"_hasShrinkwrap":false},"0.1.1":{"name":"@10xjs/form","version":"0.1.1","scripts":{"build":"npm run clean && npm run build:flow && npm run build:es && npm run build:lib","build:es":"BABEL_ENV=es npx babel --copy-files -s -d es src","build:flow":"ncp src es && ncp src lib && npx renamer --regex --find '$' --replace '.flow' '@(es|lib)/**/*.js'","build:lib":"BABEL_ENV=lib npx babel --copy-files -s -d lib src","clean":"npx rimraf lib es","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","start":"cd ./website && npm start","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"CC0-1.0","main":"./lib","module":"./es","sideEffects":false,"files":["lib","es"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-flow":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","enzyme":"^3.3.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","jest-enzyme":"^6.0.0","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2"},"dependencies":{"hoist-non-react-statics":"^2.5.0"},"jest":{"modulePathIgnorePatterns":["lib/","es/"],"coveragePathIgnorePatterns":["__test__/"],"transform":{"^.+\\.jsx?$":"babel-jest"}},"gitHead":"028c9cddd5a8ee18fdc7a42d4ee3675e9c0eb37e","description":"#### A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"9.10.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-9TjBnvMiLMUKK1jPQz1Lpp9OWmCn527q/ugue9Cwh281dNgKNgZ7CNp8qwTAir1hU9A+tmm02ibWXez+/A4i+g==","shasum":"cf1f277b065bfbfbac11204686d6ef44b73608fb","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.1.tgz","fileCount":76,"unpackedSize":426597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6qY3CRA9TVsSAnZWagAANYcQAJLR/hq3XQ5Qhx2T8KE+\n/ZlxEfHfbqVRxbloJrw/qjWoH4/VPJondXeTaPs6i94b5Nz060vBKhYBo1tb\nlrEk0Kj22iBh/dKlFAVC0p8VuqZqrXSY8heMihQ+9I/a+f7UkTZeq+5xvrtj\nlqPKB9ae+MJzNpgrn1xs3HG7OF3lAVCzsaHWHYRQSGBu+3Vc4U/h99yAtBgo\nLYxTPkJFxHpOEU5S5vKVpB2PBeJWoJA+QnJQIkTSjMiewiVg3QinnT23624+\nXrXq0JnM9uZrNUkWbWXXrr9XRJEjIinl2y+qCe7yhIeuUi/BdX8QHV7utg9J\nx32MW7alzR8UJ7kaqNfIjE84pLBH7a/XQi36RP92EgeUGWHJo5WBKN4klx/s\nU7KBqGdA7INIhKBF49G+VR29feSgoay7DpHL0TEuGV65+jwRHBrGxuXG1S80\nAo6MVbYrbjbRjaiDDaVick6T3SJ76EqSads3AY01ypYafLZRc6yqrcMBfi9+\nd+oCb5bGDAdimYPDZRzGDmTOrIF5BIhpx+Qm+1vJCtr3DfAq8Kxl4obkTJfC\n/GIRSksBs8PNQjfJuOGclyIP4vue6Osc1niDmbEdH+WZLgc3C7Npf2ul0+7s\n2LeLfjkawnPaFn2/Gn6WzgZEJwrDTA6nRkiu26ScHk3kDnnamuit/mYFcdEc\nXOHJ\r\n=sdeU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/cIXlgBpEPOFdC6V2zW5HDIL+9mn51sXCg0Q0d1M5+AiEArr17PgEPNoyERJqaFdzsQqGiNKISNwDLqA3Bz5dLIRM="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.1_1525327415071_0.42972223622561945"},"_hasShrinkwrap":false},"0.1.2":{"name":"@10xjs/form","version":"0.1.2","scripts":{"build":"npm run clean && npm run build:flow && npm run build:es && npm run build:esnext && npm run build:lib","build:es":"BABEL_ENV=es npx babel --copy-files -s -d es src","build:esnext":"BABEL_ENV=esnext npx babel --copy-files -s -d esnext src","build:flow":"ncp src es && ncp src esnext && ncp src lib && npx renamer --regex --find '$' --replace '.flow' '@(es|esnext|lib)/**/*.js'","build:lib":"BABEL_ENV=lib npx babel --copy-files -s -d lib src","clean":"npx rimraf lib es esnext","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","start":"cd ./website && npm start","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"CC0-1.0","main":"./lib","module":"./es","esnext":"./esnext","sideEffects":false,"files":["lib","es","esnext"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-class-properties":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-flow":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","enzyme":"^3.3.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","jest-enzyme":"^6.0.0","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"jest":{"modulePathIgnorePatterns":["lib/","es/"],"coveragePathIgnorePatterns":["__test__/"],"transform":{"^.+\\.jsx?$":"babel-jest"}},"gitHead":"50ba235fdacf80db13f996e4ee17626ac3c04f31","description":"#### A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.2","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-m/pbgDMTVQmEkYXUhp9XwQlERrRznvEw5I8oN3hblwZiV0dpHKf05jm9X0hKStrAOh4oRtR1c+KneS8JJDKqqA==","shasum":"001a6ec01c49da3b0b268e1e52dce5c9909f0486","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.2.tgz","fileCount":113,"unpackedSize":631455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7A46CRA9TVsSAnZWagAALPoP/Ayn6fURN4SjvbFPSffY\nems7YgYJVjveq+00OSuIjIx9a4vIMASX+sP3EzwV5/oi8m3wbPeP6OKFaBpn\nga86nymekYPlEAkk5u8Z6j0mBZaj3ur9RGtrzcGmpxoMqoFyZNjqRKQRwrxV\nqPqHdVcuRPUHrwveeWJt4VFiExVAEP47VdTIlOhDWJ7yArRkMGi3PJa/q/dF\nLdwuXYsqeqUKmvOqyfV3fxb0XD25IbsLxgRRPGoe5Rm3HV2nR8zjzw9I8yaP\nGkim5KhdBMLTAvn5/PbkNHss5Hc+JMHm0qt5NbeWfteA1iwlJfTrdlOGKOxD\nBtKUnuWozEm45DyBzAtSWPvl/yZWA77lFDN9TaxWx1InOyl0OIEdvtfj50Qr\nSVQ98wnOCgt51oPP7mQd1rsBRb9ITcM9qYSO0uHqDx8nZyJP8rG1Zc1S1j4e\nMkB4/QJwD8zX5cIsYHNHxkHSCpMJ3F3Yg/8ewyvvKGh7qy63M8+WdMYmZLdI\naHHpVwhWO/MkDZkRxhrI7FKSwhAoaL9Cy0Uizig63jEvxPfybNEpNjW9tfQM\nmBtgI+qKLPUK+/zVAXk23v62nxj2/F7M7wt0mrhMZCB4Ti4aWSO8cNQUapca\nW3FlwndePAF3pHj3CrsqVDKjZkLT5/qLfAC663q1Vke8qtJzG2Bt35JeRrmw\nR7le\r\n=mQuY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBNnpdoapcXXCImj7d2HxKxrty2Qa2U4HDfrDrFa9k4gIhAMACUADUvB6ex4H2yo/4NbysH/DwOTF0H+/vT+G8lxAQ"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.2_1525419577760_0.8289792908421814"},"_hasShrinkwrap":false},"0.1.3":{"name":"@10xjs/form","version":"0.1.3","scripts":{"build":"npm run clean && npm run build:flow && npm run build:es && npm run build:esnext && npm run build:lib","build:es":"BABEL_ENV=es npx babel --copy-files -s -d es src","build:esnext":"BABEL_ENV=esnext npx babel --copy-files -s -d esnext src","build:flow":"ncp src es && ncp src esnext && ncp src lib && npx renamer --regex --find '$' --replace '.flow' '@(es|esnext|lib)/**/*.js'","build:lib":"BABEL_ENV=lib npx babel --copy-files -s -d lib src","clean":"npx rimraf lib es esnext","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","start":"cd ./website && npm start","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"CC0-1.0","main":"./lib","module":"./es","esnext":"./esnext","sideEffects":false,"files":["lib","es","esnext"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-class-properties":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-flow":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","enzyme":"^3.3.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","jest-enzyme":"^6.0.0","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"jest":{"modulePathIgnorePatterns":["lib/","es/"],"coveragePathIgnorePatterns":["__test__/"],"transform":{"^.+\\.jsx?$":"babel-jest"}},"gitHead":"70691b63ccc45042ca1c30a6cf80350e2f79a819","description":"#### A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.3","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-CJ+SKrRaZSt5emx8r/sDT9VATsd3QoB0sqmnsICjQDDBo3iX26u1qYnC2zQ2+dxjq3PnlKrX+Me4mo1uMfyLXQ==","shasum":"2bd52dd457d18bddc9ec0cc0cf0904f144556519","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.3.tgz","fileCount":113,"unpackedSize":639195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7BsPCRA9TVsSAnZWagAAWjMP/iPYwMfbNSjjYwPIHI2h\n8wqB7qC75aWW0i6Xk/uzviKRn4NOdzCCD1ZMchwAIrWA2KNmY2Mu8v3et8fY\nqD3/bQlzv3veejOfvQb19nECbBN1FoV+UTZK2BEFO0sBmh1j6S7lD8ztap0m\n0YG7f7Kv3Szda4Pra8y3Y2FfN0Zrrbxp33Q0yB/6RttKm9WrN90PqGZMU6hP\nlyM77z1O3q/ISK2qNA4wC7n+MrMrfsjahrDcFPzxPZicDHdU0PnV3Akryhzw\njWKqvFTK63/zmWopaTQrlnxB0VPc0ZnwOP8TkmlRSBX9C9+D1qZWonpBH2ai\npE5O0pjn2PYl4Cv5VaDPuATc7ubbMgyQ8LAl9x+IvA84XelKYVYfQ28cPwRu\ndq0QllHdmSuOg3/M2kpNVrVtvIW3cnESTfsy46o6l10IDSZBRVWS4JKk4mCl\nNrPfCGoh3xC5zfILdXQoNqBV67A5zzSzWp7aIXH/NVvDU4W6ReL8ZHyv4y0H\nesYAvtl10FuXsB/WrXhG78FQZF9fYDKQRbCjuXNgdNGzWSGUzt+4Oe+ENgnw\nP2DTR3AwHHz8aDtowJRWAek5le0B0X9qHaR2cqzsrt4Z3uiuxgQjgucluSui\nqjzd5dH+APbqCDyrFDkUo+cFnS2aR3KCVynh/H1avESks/LhlWIiRCFryfra\nACQo\r\n=ua/4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBtWQkgTPIIGRmx0rWaHSJxLKk3BOWScT1qfpuENEcQ7AiEA4yL75Hj6mO8MGAcUCvLsHcYE3dj4DuCQB5a5Ulu5/qY="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.3_1525422863022_0.8388175175131216"},"_hasShrinkwrap":false},"0.1.4":{"name":"@10xjs/form","version":"0.1.4","scripts":{"build":"npm run clean && npm run build:flow && npm run build:lib && npm run build:esnext","build:flow":"ncp src lib && ncp src esnext && npx renamer --regex --find '$' --replace '.flow' '@(lib|esnext)/**/*.js'","build:lib":"BABEL_ENV=lib npx rollup src/index.js --file lib/index.js --config","build:esnext":"npx babel -s -d esnext src","clean":"npx rimraf lib","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"CC0-1.0","main":"./lib","esnext":"./esnext","sideEffects":false,"files":["@(lib|esnext)/**/*.@(js|map|flow)"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2","rollup":"^0.58.2","rollup-plugin-babel":"^4.0.0-beta.4","rollup-plugin-babel-minify":"^4.0.0"},"jest":{"modulePathIgnorePatterns":["lib/","esnext/"],"coveragePathIgnorePatterns":["test/"]},"gitHead":"21c7ce2afc0db59eb7100927474085f90eb98156","description":"> A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.4","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-rtyUuh1NPWhFeNchMHVmNza/0hsfY28Bdks7/h/siMQrWjPT/VDyQu2k1NppE41+22nGinI8NxuU0AL/XeIFCg==","shasum":"403d65a61a58b3821973dbe922c66da9d0f1afc0","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.4.tgz","fileCount":48,"unpackedSize":278481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa78TBCRA9TVsSAnZWagAAhG0QAKC8A5jr3LbUdlv4NT+Z\nwebF/Z+bclPNT8E0H6FIKoDtq3tLOMnv1U4HxjFKheN93+ckRux/nozpdu86\nQG2UdWK7WAJmATzjV2VnI3A+83kFR2Fl8zOwtTowYfvJCQhNVZteH4XEPNqM\nfjL0Qo9uJ380BvDFtMh8oxQfSWluStKp9ihfcgkjfxzEPf/txwJ7EXfqCKg2\nmraKV4rEnziyjWSPZNSicN84JrCC4sVchpSZixDHHgLRCS63kJBbj9XVC6Ws\nAhId15K/suRA9mI+gMDyleKkRKYECsC21t8fvoJpIYabbedaUeoPvp/4X7JU\nuNcSm4UjV+JiTRfZA4bkN1PqCWNLFZ+gea194EKWy+pDtUGh/f5HOpepwE/l\nKORD6+ubdM66f2WvBF8grO6TUsIIrxD5xG/2P0FTlVT20pJ0RybPttrCcIBO\n0UN3i24EOijZISwBJGXm1vmaOfB1XCI3D0n8NhM8VivJOa4OtKQeWmADdz7u\n0RcAYcldeTeMSwrKCGo8Pam2P84EPBpEOuga+YveV8TGjKCa3TvzMYoCF9QA\nQIeSXLDCd60CzTEfbB6GNjMVyXCzoFOh6f02FLRy2qWlVw9sI2+nD/+jcLUq\nVh7eYWmXxip4AWsZwSnmQzLerya5n+ZSvztRmlge8b8tBu0Q8WpBqZWZSCiU\n71oa\r\n=JvPH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjGSKob5ArNKaql5+1nUoKXLeHTmSKz8r+MEqypNXycAIhAL+3gGeECZ2KeQri/oNpPf80yT2mzVDAAO3b23eeo8dn"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.4_1525662912866_0.3849457678769328"},"_hasShrinkwrap":false},"0.1.5":{"name":"@10xjs/form","version":"0.1.5","scripts":{"build":"npm run clean && npm run build:flow && npm run build:lib && npm run build:esnext","build:flow":"ncp src lib && ncp src esnext && npx renamer --regex --find '$' --replace '.flow' '@(lib|esnext)/**/*.js'","build:lib":"BABEL_ENV=lib npx rollup src/index.js --file lib/index.js --config","build:esnext":"npx babel -s -d esnext src","clean":"npx rimraf lib","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib","esnext":"./esnext","sideEffects":false,"files":["@(lib|esnext)/**/*.@(js|map|flow)"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2","rollup":"^0.58.2","rollup-plugin-babel":"^4.0.0-beta.4"},"jest":{"modulePathIgnorePatterns":["lib/","esnext/"],"coveragePathIgnorePatterns":["test/"]},"gitHead":"7c9214e786a03debaf7c877f129d2cc54e57da80","description":"> A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.5","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-tic6uLV3AzQB0OF7Nj3o+Q+9AA/SiIRcw113tu37xtquNniqCDIdaFiSAXVHD3Cl/M29B01Qzvw2bTzwGAcwDA==","shasum":"ffc42cb4783198798b4c30e70cd4ba2ef645d239","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.5.tgz","fileCount":49,"unpackedSize":312780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8lFGCRA9TVsSAnZWagAAPBkP/3+zpbH2tf3O/xIsCm3T\nJ8hNW5RsbcF40wKrbSzIv/toNMWIbTUHx+yzLDfbfc+wbtA5zD89CznWvu3D\nwVcgSDTTmgqFCg/T70nAUaWSMSDofDXPCR/P+ID7/X/oaTUgVZTXgldkoqai\nOZoW6j/G23xS5V2SsdgfZK2AQDH+XMmxQ5DbeZDggtGlgMHDM6vpBAdiQQAx\nUJHsvdsKasqxDKyDCxgcNuWTFROjvX/P6X9/bTybWt/r40bICSbIxrehmiG3\negpvt4ODRNnY/iCU7tUXbTBT+9fYK/lFwUchHfF9Ec22Opwk6lv/4Pu9dXdN\nk2SVVgEI9KOHm2Awl6h+ViLo2SAqHNIuymMQO47vKQjkwcj6Hq5OZrntGEMg\nbWMXd0bGomJzZCc7KZAqFxF892sS3p9eoRLEERPEhqH/q3SbqBKu+S8F66/S\ndzl/lTSqttWxZ118d20cneIRBraxbEK1NLfj1GO86ecYgp8hXrj998YsWbCV\n2F/1J9IW8Zc7zmaHnZs3VOjAQISi2mg3miwC/4/9Cfv4Q9nBwH3vs4TAqY0V\nKCEl5K1zuRYKXmMDveGtPYOV4Z0Sn9x6vY0w7gGQQ9UvkGCL774b5nRAeQ9y\nsGaQ8USa4dP989HGtvix/kjjfGw0DTvg4EbR+wW3gZOS7mLSfw6OS0B/OdeA\nqoLF\r\n=V6I9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFxFlL0jcVn0/RW9Jy4aTVlQLM7y+YctFFuTNr5rawxNAiA6j/uoqD63p/OYvYx/4I9jS0coZK/CCPhbjgEy1zFBoA=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.5_1525829956951_0.862447962341613"},"_hasShrinkwrap":false},"0.1.6":{"name":"@10xjs/form","version":"0.1.6","scripts":{"build":"npm run clean && npm run build:flow && npm run build:lib && npm run build:esnext","build:flow":"ncp src lib && ncp src esnext && npx renamer --regex --find '$' --replace '.flow' '@(lib|esnext)/**/*.js'","build:lib":"BABEL_ENV=lib npx rollup src/index.js --file lib/index.js --config","build:esnext":"npx babel -s -d esnext src","clean":"npx rimraf lib","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib","esnext":"./esnext","sideEffects":false,"files":["@(lib|esnext)/**/*.@(js|map|flow)"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2","rollup":"^0.58.2","rollup-plugin-babel":"^4.0.0-beta.4"},"jest":{"modulePathIgnorePatterns":["lib/","esnext/"],"coveragePathIgnorePatterns":["test/"]},"gitHead":"2d365579c59308ff7c72370d59835ad87cb41928","description":"> A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.6","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-L677qLaAJXZmVSlAI979DBEpjTigNxKAhysUc5kE/GRx7gaYII+W27Z93gIUST1LzEM+V1DkXOxE0DgLwubgvg==","shasum":"de343f8cfb19c12a845f7c0d8cea834857b87939","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.6.tgz","fileCount":49,"unpackedSize":293086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEd/eCRA9TVsSAnZWagAAdZQP/RZiYaws1HufHBnpvGRs\nqsebsP2d7YMW/4E5MX2duwSGf7V42UvV3DjqePYvOLf1uiwoLalY2m4heIOo\naZ2DOf5513O60SvynVoXj5v12SRJMjlAlfMlv5IqZx8FwE6oPwyeD0fVDo44\nGS7PlacHLHbvMV3vr+N8FMxf1S+he70IFrZYKcDHmfONDi0+zt3hjnHYLscY\nmJZx9wO3gL2UvuchBFOLuzTdJYqn4yBrw+9/XhpzB0FfT9cfi9g+gpWqT4O4\n8e0t1yo1Dl7CqNJL+9UFKTFH40q+qDhJ/XPwYZ/XknzNJl03PQ1WpZN++c7M\nv43YaRSh1/FJuCVBpwT5nD6rbm0AoADAwRAKoWNMi6EWAlMcuMtqqZ0Rr9Kf\nmca3e3TYo+76IA0hhUJ4d1hG1rxxpaod/0pDjaibAVibp8dgCfCZkQKnu1kk\n0f0lORnJvg7KN69+1hQbNNXMDH2yxpGD9aga34cyZOHMAlIUpmq4n4blZC51\nB/oSu9AMxkXzeeTtNe0dw5tLfmM3SMmFOVZPTdaQZw0plcuR2Ej9wJRYDlA+\nKaJdZJlvsRaAT0Id8To6lgglKzFO122G5guiWCu5b8I5t5jtazye2vFEZkEb\nOKZKK88uPd1wftYVrQ2Kk2I/97J9h8G9zG2o1HnaAN0q7zM6snjaogtZ6Xmz\nP+hI\r\n=oRAV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjFYfV16oKH0SAmJs9QRRhHCppydbmXutD6Hy15NbRyQIgNFyAV2iJ0+FXNFX7tPFPsdNU6rvX8ME2OqmKnPzdvsA="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.6_1527898077793_0.05813616349283479"},"_hasShrinkwrap":false},"0.1.7":{"name":"@10xjs/form","version":"0.1.7","scripts":{"build":"npm run clean && npm run build:flow && npm run build:lib && npm run build:esnext","build:flow":"ncp src lib && ncp src esnext && npx renamer --regex --find '$' --replace '.flow' '@(lib|esnext)/**/*.js'","build:lib":"BABEL_ENV=lib npx rollup src/index.js --file lib/index.js --config","build:esnext":"npx babel -s -d esnext src","clean":"npx rimraf lib","flow":"npx flow","format":"npx prettier --write '**/*.js'","prepare":"npm run build","lint":"npx eslint .","spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","spec:watch":"npm run spec -- --watch","test":"npm run flow --silent && npm run lint --slient && npm run spec --silent"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib","esnext":"./esnext","sideEffects":false,"files":["@(lib|esnext)/**/*.@(js|map|flow)"],"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"^4.1.1","hoist-non-react-statics":"^2.5.0"},"peerDependencies":{"react":">=16.3.0"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.46","@babel/plugin-syntax-class-properties":"^7.0.0-beta.46","@babel/plugin-syntax-dynamic-import":"^7.0.0-beta.46","@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.46","@babel/plugin-transform-object-assign":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","eslint":"^4.19.1","eslint-config-metalab":"^9.0.1","flow-bin":"^0.71.0","jest":"^22.4.3","ncp":"^2.0.0","prettier":"^1.12.1","react":"^16.3.2","react-dom":"^16.3.2","renamer":"^0.6.1","rimraf":"^2.6.2","rollup":"^0.58.2","rollup-plugin-babel":"^4.0.0-beta.4"},"jest":{"modulePathIgnorePatterns":["lib/","esnext/"],"coveragePathIgnorePatterns":["test/"]},"gitHead":"2d71da08074bf7eab2046a77812aad14b56ad742","description":"> A high performance zero-config form state library for React.","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.1.7","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-ip9BkR/KwiDIG/0cJRYS34zt3AK5CAa1YIptNG/OobCpQzaZ7aqOOq7i8pbYhG6fhR1dmvt+YhsiXyfaYs14EQ==","shasum":"ada3beffb0dc9f16d79650c56f82c126dad1bad3","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.1.7.tgz","fileCount":49,"unpackedSize":288720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdboCCRA9TVsSAnZWagAAsi8P/iikYC9BwXgEcZnNs4yL\nxsf2u4EwdvcYoji2dh3pjwRbK0bVYelLxplfp9xFIs+YJXcGIQ2M0gUZPBug\ndFT9+6lRgBrZ71RzuOR1s4Rq/iGWHYYPp5vDsk0//ay7kLsuyx0nFu1nYuUJ\nEEgVbVyfGrYcC0cwCtXnAJQlUdZ18otwAgwdOrTpRyrKVmN4eEYk/gj4PK5y\nmLfeo7JmKcx6Thl7p43JVDuWSFbTQWj7ipUVsbt/j3bFI4s/OXbZjyuPXgnn\nlbnfLLiuZX1Zhbynm3SzQA5QmBpw3/EGVaqhlEmbKVlk6EnrJRR4jK9QFSsq\ng/B0EVj1bE8ls8/crH0EGHk/uVZAPih+KjPtCnGvJVuPKiEWjCcLonVgMyXg\nnJdWDo3J7yb1mrheFjLBjYBdYjXDaYaxyVy/L4Z3RVV/ncnpSf2rqdQ0sV7G\n0h1peYEmBqph/7e5dZdvYHpeUdSGnl1ermSGKWtdYAk9lxrAqhjYHwUYsJwC\ngWhwO34XkRJqOE85GmEq4XN5yjDfbEtkhVAYgjjfxO2rrnej0xpvx0ohsrIB\nYDMTzGE9AUHOxKmti6DaGAcWTgZs3aic6+VLV96jlijmyb1DJdqdmpnIhkET\ntO7WpGY//S/dObCItBDnh7caH+JNdyo9bFzzmO+ulQee5DiIjRolQZ3XYde3\n9y9O\r\n=g5Pi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPUDcbGhHj3K7svEX3dYBnG5Qoz9DSaZ7ZXZDFlrNfTAIhAPLmI5GNJcKHAGCyyNDq9+RZTygm4Ih4rPqKzLUk8LJS"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.1.7_1534441985479_0.9628195116206442"},"_hasShrinkwrap":false},"0.0.0":{"name":"@10xjs/form","version":"0.0.0","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.8.0","@typescript-eslint/parser":"1.8.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6NSF/SmXQeh27ncjVEdMQz7sY30V+ZZFFKjGy59AidUjqZHXlUWU/gehseO/Tagk2zYA3hrGGaDoD9lqyR1uOw==","shasum":"a41b90d2dde73b3d8a09f49d41811bc9862cdd5a","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0.tgz","fileCount":76,"unpackedSize":344648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2KbbCRA9TVsSAnZWagAAlw8QAJr5PgwjjlVDN5CBJFY+\n6BqI/mZhEgBY3LrG5doIqIvnFS6C58bqoYxyYds+uNqSuefp1MIerBee4RA/\nedj0JUrYkaoDcJ6V5Ly20Egn5Q4DuVPKTob8nwH9KN96gd0GwIcs4o6wRTkL\nf9fT1MPzvD6xJsjd4BPaKRXIi0xvVIXttx8CaMIgfhqg0GN3gKiTMVwlXgJk\nsQjkXc3OF/lHAQXYezA8m92DO63J1qJJ7WRd70WIpQFXISvEXzzOcxu5tbD8\n+a6Q0ASJyl9/F38SfKVmV5l8tisgwMwiRSI8dyzDkQWHOZpm0/PC/0vccXce\nM6Sc+fZLWxGlgFJoaYFz31FUTcEycbRY7i80zo/1fERQh/OHdnmFRyRaiMXl\nw0cUymU3N/0d/A+g9ghQnev3NqS/B0GZKiKCTifcbKuM0M1pn3YXyMM2Gp7M\n7f61vdTKJGkwM30kKzAtpq+qCo+hJGtSGmTfK3TiaFd7LLsAjRInt3khJSq9\n19pR/+c9uLgcK37KMeSaC9rv9KlkJqBMEHwxEuAYstQm4iG+W0r8iRrV8Dfp\nwa3UTwMz0/J66P4QkeI9K3Mvlb8zLoJOJytcyxEAfSEAI4PCFJMpwdbPcEM9\nqopuVZpjZbqPwUmiekBpx2fLF0pHD4fBlN009R2I129AhvT2S/+kNR6FqDzz\nOG4b\r\n=Msrb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV+fkOfmDSqK5iy1Yer9Vgd3jy3wmCCZB8p0Nz2axcRAIhAPaUTCEvDpT/aBYVtSjWl6j51axCXAEvfRV20G9aEL+Z"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0_1557702363173_0.6398251412885201"},"_hasShrinkwrap":false},"0.0.0-9c22b7df7":{"name":"@10xjs/form","version":"0.0.0-9c22b7df7","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.8.0","@typescript-eslint/parser":"1.8.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-9c22b7df7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-nQzK6usvrB/ksgr9Zpif2yR3oG75i+iluyKT0raO69vGpEHGAFp64JT2WtenOPVBUa/m57vdMrUZ2rIYs8l2VQ==","shasum":"f09643c5405bf3a1da222e59f450b91cdafdfa00","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-9c22b7df7.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2KxeCRA9TVsSAnZWagAAG98P/0IVNKBJyAZ6eDukZsUh\nJ6kk11K+Zgdk4pkVOroSmlkpqCztFXayRb8GbibNxmikcVcIqSdxYW/z0DWf\nH1DXuW3R4LvjywlYNs3DngiGoVncr3qD5Qc/orKPhaBI5xkvHfWHiITS8B0z\n2ZR5Sp7tzjhK1Yj14qwKaashh3GB/nhPyfEXnN4sX+UjxgfItX3hurHn+s5h\nbzkiu6q3N76wUOe3Mh/A5H52mxK6kf0A5J6A1BNFNP4jgHMCqQO1UQ6BPhCa\nKLlssfgGYJLGqKgsdbiYkLdBQgFrcskn6qZytInNDKD4ZLKbmyr0YuYpQreW\nYOCp2iIysgHzPFVKE1hlgKO7GWNXIlx1MkjvuLwulKoi1qeD9Py9tm6gBKVt\nsv31+D/pRBuFZBqstR0RNd21rpK3cpg1laMO7+hl10k/VMwXh7+E4rd8n/j0\nKsUrXKzMu3zv4Y9BOmyuqIeVRtTX3lZ7B0crzmwKDwgmpIHVwfMOyEcwII90\nR4O+Z7IY47KxtJ7yyn28jKDIps8xu4PU1a+/NmyXD+B8KfK7S2r81seqCWKC\n5vFn8zFNolEMVTSyw0HczOS1L6djeWpyyDubEB9BNSTUh0fvzxqunrxbVQaF\nhUBB1QewIG9Bncl1/VSt8igIf0tT831edvc6NOUrLE6nTK5UCkotJFxIcE68\nB3KJ\r\n=EHeG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHsjGznvmI+6laFDdNPGHa3Mkx5oo/lhUR2oZ3A4L2eAiEA2ZGFI/UmZaV5i6wWBMxmM5xkW/9/01gLTT8mep09gFU="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-9c22b7df7_1557703774323_0.9726943096100513"},"_hasShrinkwrap":false},"0.0.0-01f314d71":{"name":"@10xjs/form","version":"0.0.0-01f314d71","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-01f314d71","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-I6gUUxg4zwVsU0XZyoepKA9HGqnF4a9LrKKx4audLJKv9GXAMxMCoAXWttwef7ZH/SqNdKLuweX/o2qwVl43kA==","shasum":"863194a672ffddb8c0816042986738974396d3e3","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-01f314d71.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2K8ICRA9TVsSAnZWagAABHQP/05M6V3+7CEOtdu/P+wy\nhtcaHkuT0ONTKn7UHlK9PFFo4xMcXkewPIFHv1xT5QgLynNCfUBX7h+E9ZPA\nDYRmZ+GVV6Wzx3t6s1CR2Rgg1A27U/VEFFbE9frI9wdk1w8yxQ5TcI99FNQp\nZRmKTMLJW26O60tG6t/wA2rUHJRk6GCfVFEFCEC9FKevF9f6GlcDk+HneqRS\ntQuf1XzNUUA0RX57KL8qCxfwlF8lWfJJGBBBgXfyxodiTh8Ma21T48ctMNT7\nhUvUeU/252AJ26qbHn+NKjUGhHAfEphMPrZoelLW/sn/9NAQiT4/zMVurhjH\n/S02LttUvjzM6jZdiw49va+1M+EK04NbcJtPuC+Ytg9BZVSe+nednQ3Z5u8j\nujRbuv4em6eJJNTpYF+vHmk/+wYzzBhKPggQwyZdCcz6n+Own4XctQCT9gC/\nRrQ9GF5ov0G2eIHv8Hg2rH07sQYJk7lrLEAgMooR3OE5KflTvho2p9JQD/Ig\ne1dvShcg4QHhztZhB5WJO7Z3jIK+TeA2T6w2u69WlMx8GZEFWTJ9++Q6cN5a\nOGwHzbBFDlvQyNVF/CxdzocEMTQ3Fdbi2x8cjq+lCsPS4QJBBW+YyGvRzpu0\nQMCyE/9fziLrWY4RVyszKEDU6gOSfHNPdMrUmPOViIecUuTqLuwu1PrRmMzP\nFDmh\r\n=cmmT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd78XVmTM/FNjl2SY7IsTNvnQrTiPvLk22Q4YArgy9jgIhALK4kax7mS2l2KMQAWS4a4sMjNVXJiXg1AM9BcXT+G1x"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-01f314d71_1557704455851_0.16692722997980747"},"_hasShrinkwrap":false},"0.0.0-77678c287":{"name":"@10xjs/form","version":"0.0.0-77678c287","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-77678c287","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-D5UmEHOUGU8JdC15HrJk+zFnKmFMafy+47vOdS4tQxFd8UP+jDEl4qnky4dqwPitx9iWJYaoc8Wvd+vw5I1SHw==","shasum":"c093a9dab2fb276aeeb2cf7a44f6ec448487a8f6","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-77678c287.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2NSnCRA9TVsSAnZWagAARn4P/0Qbp+qRc8BSw4Z/hYZ3\nC9AB9vzgRurh484HXxWmiP90nICoOzbGrhCqLx9tSTU199/o24BYytr2ilHe\nb0Olk1wsh00xc4+ylxFRC77CihjT3UryzzRzzK6qoztlLcJx5ukUg79jyqds\nMKrBeL/oZuAjFS4AGukc0pYJh+xnrup/qnpEmwkjTL0ZRJoVwTHP5w13nWsV\nBn9yFNEg5+BxokEkiWfoclgY271ZLcipevnmy85eDikHG+palocs4gSaewmW\n/v/wgkq4aLW6g3OZOkvCnhcHjh4gw+erKxJMoFoOvUpmKBxsBKweBk2/Jd/4\nrt2SD2hUgfpBOLNz/kGiQipqA/lCVJzXyAiCYrjJCm1hmUnhpf9MPdbjPT6D\nmWZ+Kv0MiWl5++kDuILOT7Xho/WqujMgMqyO5QmFFJHhCIFV/yoM7Ds31W3f\nkphZJzRiv5fRZq8x5fkGY0+STqW3LBHYpog4jlBxJuDMsA1xWKdQpdNoJd8t\ny7xgFyhZakek67dO9U5pVI/98MvS7XXszGL5tJbTMOwNtO+R+tLnJdJ4Eyxe\n+fDFK+f4I5aUtFbi3mbmaynShfCQiqIgQFnBaOLk1Av/eAiaaavBIwVOrAMH\nN6kAjzmGZRZafee2Ry6wQADu9WD0Zz/K6cIwopmNAcO8DF7sJMlHb/jMuam+\nFTc5\r\n=oEEL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICm8ynS1sF5GulxK6egDkQOp4yD17bf5x3uAE9IAhvOxAiEAy6ki0e5l7/6l2HTI7JeLeDkRIgPI3itPo4D1usBZav4="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-77678c287_1557714087135_0.760813336091938"},"_hasShrinkwrap":false},"0.0.0-c3ebc5726":{"name":"@10xjs/form","version":"0.0.0-c3ebc5726","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-c3ebc5726","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-rf1xe8G9dOTEmpxfWA0WFyiylYUi52JCJbPGQpFh9fuRRwd8VYNX3W1uKDrBvvoCmXLtx8qNFqwGa+1DcRLlAg==","shasum":"6b24f298e1d4b1895a9149050a372287816b7695","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-c3ebc5726.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2NicCRA9TVsSAnZWagAAyN8QAKUwqC+Jm7syIXjpxeFd\niTNwS2Su3UzKIpkxPPf233M+ArcBc8cnBDvL4io1LqqYJTNp8fuK/a9myRCC\nJ0B/pvwR19I5n07rIzqhLm8LlVRVGk3awUE1OGjgTLQ1Jx44QX+7IreNoFfz\nAvbyOJK1NzdUYb8zNKhQse+pkUdzWdKU08DGCqLWR+gxDNom8SII2G3d2/gE\nIr3ydjKsdJV7UVSqjabU5btuvk87bfkZHIMdTwolvQHR6rfG7NJ4IHSqJb/N\nADe6Wv0/9a7ZXH2lbsCbmX5WYWMD2Knvdf5yv9qBDCCVLNk2Pew0x39NRAcY\nws+LLhnb2opXH7+LnEh92gC06HLyO6dkQbu0BkbPojwOsWyoJxdhkNx5z4Ut\nTBC+d4dZJDNDz7INe3+piT30vJ2qbxvMKbcCjUiqrkjWueufjfMFq4pRNZyn\nb5yfVJh2h/jcvxnD6BslAIxjYeM00dvmUiOwHA/9/uFfwWWX5WLPHEGcq1Ot\nAXVe0QKtkGmBuc8egB+URgvyRcy0kinpCFHUysGgkIQlXTtlqX7cQQe1G2sT\nZsm6xCeH2+/S84eS0y2Qeceg9zgHJSUaa/HgRhvAZNN+Hk//HCbojeVSR7xa\ndygq93pXsWNpJn80SBatz7rWfwfGy6GnCtiI6Ci+Dg/JBwqos7EBZvssitPv\nTMHh\r\n=puuZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0WrxuwRyKWOjNX+KRgeZeAcwgOZDcBAfpacyDfMUUSwIgRYL1qunMQAo7K6dhcP9m031TuY9UEsZ9RkXKql1NyMk="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-c3ebc5726_1557715100035_0.9672334450754756"},"_hasShrinkwrap":false},"0.0.0-b6ffd8410":{"name":"@10xjs/form","version":"0.0.0-b6ffd8410","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-b6ffd8410","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-IvUb8SL6aT5itsN1u0Tflb+mFHk8+wh/sz8ZriQgCVb52vyqJHn7usTfIuqbLF1Y1PIRfnCX7y/JIap4TNakMw==","shasum":"e1f75595e426d433fb203aa0caba196a558247db","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-b6ffd8410.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2NuICRA9TVsSAnZWagAABJsP/108LOdGtFvZbEKyDiEn\nMUZP3fYuGKUTRZCfb6l/ZXt9vn5KGHhRKQ83VpLoi6SLvwA/7uiH55O+vORp\nJoHur4fDiv/4IRUa6q4O6FZOhkNajOpYtFcC4+BHWPKln8g2ylVzWpEYvEmZ\nJVOAJa8QBLtWTO8b/0oTQWfNx9etCqBBvW/f3SaGxwGPkPHHMipYO3WvXCIO\n3xLCQotABmcxmgutnLr5v1S6QQcc7TD8CYvVBW9bk+dVPYGfxzr9XT+Mjo5K\nv+JMM2I3cITTwyd1ZDptOBn9KoAPV65x/HP8yUKDfkBjSyn0VOYFSfcxnqmJ\nS+J0mbg9tP5r9AhnUxRhP6xiKKHJHwUrKCq5CU8XrkGcepOFyRDXLmNe/c6T\ncLk/waOPSZFTD3sBL+LnRv8V6xxaMzc2AjblpOS4eCP/3GJvSk3KXD3hATQ5\ntk250FsrVf/Gn9YTJrqEgs4Mwoh+vWV5naGOO4fRdXYMhLDnQAJvDEiDEVYa\nQrolWCYFa4ACeFIP8OD2yXbUYYXMF9Yfrt48iVAD6e7DxF0g6BYUTldvHHRK\nw8O4GT1dGm8Fth6Tr5Cth6XewSH+J2bTQAFM6vXh5El3ZfaGj37iQnRi7R65\nAhqaTvo5IekKEDIrpkdNWJV7t0BQye1AM23pjBOZKjVJOZwZGe/bh+N2YfvX\n5urw\r\n=fulT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTuagwA5cEplewypFbjzLKPi+1VT46uwHq+4JSG4p8GAiAs6zk8hzFF1e1mDIhHaSJqwhcPhzuylntA+hPkr/VN9A=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-b6ffd8410_1557715848283_0.7899411924639013"},"_hasShrinkwrap":false},"0.0.0-2b8f2e087":{"name":"@10xjs/form","version":"0.0.0-2b8f2e087","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-2b8f2e087","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-++7wIql2xDy612MQbR6ZDkXsCpkIBXfPxrFZC5pkir54HyCU+WTZUcOs/2UhJSfbrMqxX5bgeco8clV9BqEMJQ==","shasum":"69a2e4edcba3f490fbcb584762117bbf0cab0e45","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-2b8f2e087.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2N50CRA9TVsSAnZWagAAuhgP/2ckrIvWCzqcCFybD2DN\nChsXU+NyC8vd+raXkfK6u0Np7x8xEyOULDpGtNY3AEImSlU29MoBamejlQ0z\nbA9/ht661AUSehFMB73YI0GKyZ8pobTiMFHNAYeZAX4oNasV7zOQ7fheOY9z\nguMDXEAHx95SbMKSjZrPEkrt+qtPNNzmin1xaOyMrR3i6+oJ7+Kavn60or6K\n0/b5qx+O4kOenWdW2MWqcfYtskXnDHu1C4oxYmysy0+ZSm0jd4oCBtxhBqTG\nM0a13nXht3cdn0rN5uzmygNcV2Li62rdZbyssdP5D/TsnrYAu7nnw2F8Cw1/\nI8HlJ14VQ5vE23kccOmBqjbAMHIjuo2E6p3Pd6RopKfAlM534lmLJIGPHSW4\n6rHoRfF+W9TCbijIDy+S1u9QYsNrDyR9ToWsVQYTHzoZ/ZA+3+dxomYF+CjR\n3loiQOyHxpTdLpgwQrQVPNWVYN0TWhCzCz85cLqkGBBcw0rJXH3W4byT+pHr\nubH5OUnVIPFLOJ99m9dvCuy/tbdoufJBIjfbkdsufV0gQp+ckG3nw9zgOBGm\nXJ3UhBZhcjacCDAVE91kwtplKEWWAnCpZl+GAFicc9g4afQvRNu4b/Svlbz3\nXPptcS8kG0Pn8Nb3WiJ444bNb7IK+Pa1i7TZRWVVA9bkhVDMLQ93dLnvjQdF\nv7DQ\r\n=/d0s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEfYlCxkS/9Tb6cgbTbyjdJnOqLrzdl2EqkMtFP4aqpgIhANC51wbCZ5xSzhVeudr5HuaEdwNZVmtRRXKE+29Txcd6"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-2b8f2e087_1557716595454_0.2982222030972459"},"_hasShrinkwrap":false},"0.0.0-5d65c7914":{"name":"@10xjs/form","version":"0.0.0-5d65c7914","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.0","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-5d65c7914","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-4E/zMGC0qL6Xif7al7nWNQFvniQDjee+jeSDuhuWY9sCUxfTwdiIvAliWDk6rCHoNoBM9p5mMsVkYYB0DWsGJw==","shasum":"4c938a71f804ef752e4d0fd4d6f076d546e4d42a","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-5d65c7914.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2ODUCRA9TVsSAnZWagAAItoP/jbqWnoNShmFYf/LFmLe\n1v4I/Dm0MGCuO6SVXMj2Q76kL93PScbeciY314tKkg9ZhFszkWoXgRimvxph\nLDJya0twwKmwQNXzx8q+GA9LRCkBK45qZF26E9b1fD50dUrJU2PSH0mn9n7G\nC/J6zxnYwJedPkQ4YiRFSSmq+evz8FBV49tpqHUy4ZMef9IT5GYhMnc2edkg\nfMKW05NJnpC+PrSkzJgjcDwR1q/XOvs72lriQu5Wej4lh+xCZU2GtvANOszf\nv9KioMnMS7z5hD5oJN0bkNJCAc6e6Cc+ZPz6o99AYbIHyj25iGIwaS1L379d\nZyMsRDWuQP+4kEwBBCAdBEr45h+0LCNrGirK2dzbgVzlWtqPkGMwUPcWR0qE\n69C8AK8yDO2G2UdpqOcropNNvgS/XSNBu5ECj7cwBlKsKAuv4u0iSZr8J/Gg\nBgkkSIfowLbI8/ZekMuPqzxdATH61OxF1w8WEeoRyxueHN4HyQ4NCNLKV33m\nuIDenMBN342Z2C22tJdmWI1CVsL1kZuyMXrW0H5OZlQ/6sY4c86mXGadoB3h\n2niGh8XeKxXIJ++wnzfX/GPXbt6Dvxq1hcxQPBIf5jYSmhvUOdjpDTkIZ352\nPBoAmnDi6Qe6+bIyeo/PZRfLhGmrQMgGBJbUXh7sIRzsVefFugUkHFzuCfHI\n1lMS\r\n=Q1+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDodWyhXvYQP4HJ2RrEZ5JAKafLlrLSCbTW43py7ejHHAiEA9jUm5rGmliTjTbqx9TKIx3Q83c85VAKYQI+x2f4LFQ4="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-5d65c7914_1557717203619_0.6994496319038086"},"_hasShrinkwrap":false},"0.0.0-b3a38c0c4":{"name":"@10xjs/form","version":"0.0.0-b3a38c0c4","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-b3a38c0c4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-WSA/svtlJIB8Bt67jT6vbIHxcdh9j2BiJHO5DYcvx9j2tS2V9bZ2Unkev9FowkoEj9cO+6m55nkJ05FWJKgadg==","shasum":"8164bfd0612aa4f60144b3af29fc15020049da9e","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-b3a38c0c4.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2bjMCRA9TVsSAnZWagAAKbQQAI5CMXN0GpkSaVnX+8Ah\n/CRCKDcN+ztM1CjvU8D6/0W8+IUC47hONtrYZAuTrmFtKK8lylEOrh7oQeVe\nb2IXdQermj8tghjYZrPZ8PK/iUthsk+7UI7yAYhgfOgLdA75J2fyyM7wz7h0\n3Tkp4Pa5IWZVZU5oXzAkIWGOWclzGf8xgn6IFWAIvThmKHmd/4XznfD90dsc\nQkjzU7LLBE6rZt/40UUV053DYvRKx+qLbU61NhQxTo7SoWfC3wtoFHSErlu+\nZmO1vwFfJQVV8Dmpn58mZmv2eL7xwDvct+akinUpMS/VHSoI8xbN7pLQfxVv\njnzbt959xUoisrWka4f95fy4RkhdRj4RuTWqHmoSbOCIMmfNgd7Cd3kcfq9V\nVswmi+tlstxpjrlw/IJ2SQJnpQ3D9F3ahEsSVgQyAM4WEi7mgXezkQEMSl+Y\nkImLG2VKo0KlR16vUrr7fMwffzHkFRSrtazRzMaKY4JeiqR4QVmqnvyvwmlx\nluWHPFnGzKdLjnyWHgW65v62dY/YYPUAUjFCgjNH9vs05ILVUfu4uH0bOnw1\nLqlmvZ8JTQT5pgsB36AftN3D+KFjpcvDH4+cXJBNY7lgE1B5DZxaa+nCYF48\nNmgjc8w/ckD0c2jm39pmB/qdEpZfwHjjFlaiBZq431O0c+EOyS2adSFcsHt7\n4AuY\r\n=z5ye\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDf1FeWCOQj/ifT0f7wpNZI8zQHQmV71XQadvhxl6caSQIgGgSbB4u+1lSajeRqgTkT/NLrmlb8n5WGLonPBDFOpBI="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-b3a38c0c4_1557772491382_0.46408716209902945"},"_hasShrinkwrap":false},"0.0.0-b5f117330":{"name":"@10xjs/form","version":"0.0.0-b5f117330","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"9.3.4","rollup-plugin-node-resolve":"4.2.4","rollup-plugin-terser":"4.0.4","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-b5f117330","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-O3YnYOA1LRwCur5CSUGdALnv5ccGuMrt4/MD5xuYaDRQLdrcY35/jlxXxV9OwfXqs/Gj/Xegi8lR7I+zsmo0LA==","shasum":"c78d9c63ba9e03941282abb4d8ace297adebc615","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-b5f117330.tgz","fileCount":76,"unpackedSize":344767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3MaeCRA9TVsSAnZWagAAUxUP/isQM2UslK/xYG8YY8KR\np5g0gFSXZJYmaYw68aD75p4lqwZ8TmwWq2y2akVf9fbVgtCecqWMn3i68C15\nJtgKhxeocPyK2VPUan5zNH2Jh1pgtpup44LpyHNGrH3a/+A3MzyfR3Es8ie/\nYY8/RbfrpHcruL+yWwdi7M/zB1js9syG/89TP6/r3iwSdniFFrsHbTGMPvsA\nExd8i/V87pVcAfgKt4Cp97yO6io/ZhmDIVpPgBPD0l7kMKU4oCacGFKybk89\nrOetk8Ys7om4YykGh2tC5UVJhIWge5JOGAqA3Srwum36eqEANwibp6cFBQQU\nRUOuAVkHZA8gT+TIBWl6NCsLfOdQeOjaRVhw4hlAkzLZxQZFdCifYGKIG1Ll\n395e7LjmurQM1qhTegfNCS7krlLiREFHnFwrKjfKwBgLmr/Ux2/eampUtCrs\nBgEC2mRaMoO9vzrMwXtEM9SVFeCKzYSOcjR2coEDsYCvp7Za9X0oAPkw64Ln\naqoc0YcwQOXAgvQkVKh7U+v0eDb6I77ePbJRTr2kGgmebB2xFtIWPBtkctWh\nLKu9nskjk65diOLZvzDNV4nkg2k2UyRSQhV26ie8oIghW1WCY3nS5xuSYmpj\n8ahSICkiD3EMoAeYGmwNhQE1b7mjfXFQTRUBK6uYeDTYTAvN0/JzC5YeXgBB\nQfI8\r\n=2h/M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiiVIN+v5T6dHl1HADDPRYZVmAcStckSiv3WWFLkQNuAIgG7FBJrwVbA79WYV6CO0W2XnrAZ2hrOGLbzUMja38PM8="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-b5f117330_1557972637441_0.39687225363103384"},"_hasShrinkwrap":false},"0.0.0-14d61b8a4":{"name":"@10xjs/form","version":"0.0.0-14d61b8a4","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.13","@types/react":"16.8.18","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.1","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"10.0.0","rollup-plugin-node-resolve":"5.0.0","rollup-plugin-terser":"5.0.0","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-14d61b8a4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-gERYfM9rveeytE/nxTNX+Zp+BrQoYde3iGBcvY/j6Kh1UYU67x2rf7QZ1+qYXkzVQnye2F3uw9wYqLG4oVno7g==","shasum":"6407a4cd7ab10dae2d01a5cebb9e5cff4c6641d9","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-14d61b8a4.tgz","fileCount":76,"unpackedSize":344790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5aABCRA9TVsSAnZWagAAyvMP/RFh3MeaeVnid61ksZ+r\nGrZcePnMxJP4KcST4KGnCKTYJJmja1ZPZ/nyKyAOX2lKBiOdmrDycrMNLfWZ\nrYvLUTNBpSZ8W1Hj7OI6h35puCZLyefgFmqOl5AyUpZR2u0UITXSQmNUvL/q\nnEKBd4aSdu9Q2biSWXEf+v0wBlrLS7Ewr+Ta2FSgOf2xyVd4aULNOaZKEOzq\nXcPuFTO5B3eVI1HXMihc2b2N0tZf0eFcIASNHBz7/OOiQo/uUtx+XRcIXD9p\nzrTxFXZ3m0H7M3rTrr2NuqHFtTcfBE5g0HdscZtnDxZGa3epWrWxsyoB0xaS\nkuSyL6lO5nPmLVIbCtjCNI2WUX97WhqlnjrbhjwPYZP6Xad68osVvcfj8r3M\nSt8FKxp/yKYleOH+LAtvTIhfNscKnAhJ+a9xQLQ8I6R6ycoxNftPt8kBsk2Z\npiCx7hLC4CBaYbziEN/hYiszuAkyO3TLAAYFJ9D2Z57ZiYRrw6BI7PSzShyo\n4IvEc2xXz+KXzf+Yz+ebDF60soMpL3jRPiVoiBmkuFRGucqGmQg0ZLQ5TDXr\nuYl2Jj0ShDPdIDOEe3qMyKE/Aoo/wHy50BRmqMSXoYAkTF9zKJFgYascjjKG\nzIZZ9h5hId+B5caIkKbFlVhxdoHvNjGcgILgfUmFdBv+HkAlr/hiITpVmm5v\nK+Fh\r\n=264x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2exLR+6OktFz5PdjFtiuESvD9xwqvlidUDMl8z1wPQAiBe4VIHx3lEH3x5cuPMEMUspXmTzITb+KhkXGOjgSH48g=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-14d61b8a4_1558552577233_0.8886738950097843"},"_hasShrinkwrap":false},"0.0.0-6700104d7":{"name":"@10xjs/form","version":"0.0.0-6700104d7","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.12","@types/react":"16.8.17","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.0","rimraf":"2.6.3","rollup":"1.11.3","rollup-plugin-commonjs":"10.0.0","rollup-plugin-node-resolve":"5.0.0","rollup-plugin-terser":"5.0.0","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.0","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-6700104d7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-DqbWpbJZmeSQ12NkcyA63LzYWxHycc744s90QlZbBAE2gE4Owx6wpPqwwNJmujw/b9Ej6RLnE1VydcJCLPr/CA==","shasum":"bcbf1c6bf89fa5c0d011ee6a91f7c737bc6665e2","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-6700104d7.tgz","fileCount":76,"unpackedSize":344790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5aLNCRA9TVsSAnZWagAAXkkQAIj/BtFXIij9RBliJB/y\n92CNCxsG6tmkESPkZeGt9Y1SZFHI05s0SvwIgDEhdDBGUZdVr8OO3acdUJlY\n/sysWx7zsA3zGy1Ig12zOBBkqFuJmXlXl4pZt2Y5eeorIYV4Pc2gCeI6NOyQ\nFb0mS1vQxdrgMp7r/91KiDFJDO1I26y29MeeXLjeYXD9PUXHs8aBPljtfkHc\nBsN8gE9/joM6jhu2pAJRcRTypG+juENkO4S+fWNYWBz5nj3IY5jz9MdwLnV5\nS3M19Gzo8H3qtOLgBI9NRNft5hdNzlEqGwCqRVhSHFn6wF2bbrriqQR1vo1A\nGB3a+6ZjIO7fewTqfveXWXelUxUwwhtsZsyMn3RT6stt6fCdPj1NHkFNfMPn\n2J6DNIxW7hqrKz0kQg9aZ9Xas/jhSuW4/5wLwgairGHXU+09YWT4J1p9uwq5\n8lbCKfpcbY2xJrV7PYiX/WJHGBs06drtgpzFGkLoAqUShiJYbcl6wVBAeUx7\nxG+XlncGtw6PJnH21LMOXaYlAIpCgwHdsSwxEJ00QrPAxH6Fq1nqNVWLjFS8\nDda7uOEIZgVgbiLYIj20SSCTrgZk8g7l5YivmvhXB7cnt0Ljj7Ssag5vSS1M\ny1tBqVlir9iTujzYQsGeLb5rPS5uISuOz3yg9QXuZLMSfjdPrr2N/izkN8LN\nqLOO\r\n=vNZU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFQ+CCmOQn91fF0x1mH6BpHL12wG5getI7HB+8wXnRgQIga7Ab6LOyNbcHjb4zmre/YkuGsq/ftMS8xM8hp7cItq8="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-6700104d7_1558553292695_0.642793011304313"},"_hasShrinkwrap":false},"0.0.0-a74c1bc29":{"name":"@10xjs/form","version":"0.0.0-a74c1bc29","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.13","@types/react":"16.8.18","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.2.2","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.1","rimraf":"2.6.3","rollup":"1.12.3","rollup-plugin-commonjs":"10.0.0","rollup-plugin-node-resolve":"5.0.0","rollup-plugin-terser":"5.0.0","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.1","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-a74c1bc29","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-9icTBSx7PAc0G4aKQNAYEKzqeCG4JTN9xiz956HRA6TSeO5jsPYmHOTR1gSIYC0Ln6WtBLLS6BLt2JPdoqhhEQ==","shasum":"67421ee6883814efd6856e28e89acb34527a91c8","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-a74c1bc29.tgz","fileCount":76,"unpackedSize":344790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5xTvCRA9TVsSAnZWagAA/EcP/RMr9Sb8gkIvHaDSk2vH\nELyRFlqd7sH37zHhdQQp9ZciTrjOQrOXmMjIVi2D0ocPUY+UsKmxZtKJacm3\nTyhWKEUKz+Y/7nVm+ZK5udrg8jFuY3HKoV0VKxH6FwnqimH0FQSXUmktxCjs\nIYiyfBQvWyzsOmVpK6Jvhfy7TU/9TaIigrEKUMBxBpwNgljDmeUVP3z4BUpR\nwrMOrEbs0SKP0LPuAOmTNSyltOL8ai84kBGdEag2fe3hvO/RJAL0bSGH1Ivh\nl5bDi4OF3fcA7O24KDRAJ6HEiuEDNFTQ99OeBlXTTRmlkyi/WVD9dX6mm+cO\nDI4/AqYZCdysCelFzF0E+fbv5Jl236XNQQh9+4PJXyy6ne1noWYkFM9foEUU\n5K/A8BOHIO9xLe6+vnbegvxYQ1Jq8Yuz5onG2U3EbvKrgd+e+rbzLcHd7KSW\ny3hXbQOB3CnNHRi6499+DWbPVcquY6aisFBlaIzZ2zpey9u54W9vRuAr2NF7\ne6GbE66cWyysqGN6CQNitPk/wkfdexNRHnN3f5HA5iZ6AVOHnLnE1oH3UxzM\nXjRu721ENgD6VqAzRCpFaPGjg+q8+FHYgGPQGka6l0g2oRYGQBvOXt8IZGfP\nBiJRupc1bRBcFkPoLxtsyfF4voxHv34BDpv6Wut9lh8UFbc6zKNzgKlyE4Jt\ncUAD\r\n=FSta\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFLC9Gj68QDPmdlX+Moyde1kvN8LAQ/ehv8h7DNB89wGAiAZga1baPc+PfOxHNj7NNF37Obb4g82jqxq+Yp8RO1ulg=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-a74c1bc29_1558648046465_0.17338041643731894"},"_hasShrinkwrap":false},"0.0.0-2f61feb6b":{"name":"@10xjs/form","version":"0.0.0-2f61feb6b","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@types/jest":"24.0.13","@types/react":"16.8.18","@typescript-eslint/eslint-plugin":"1.9.0","@typescript-eslint/parser":"1.9.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.13.0","jest":"24.8.0","jest-circus":"24.8.0","jest-dom":"3.3.0","prettier":"1.17.1","react":"16.9.0-alpha.0","react-dom":"16.9.0-alpha.0","react-testing-library":"7.0.1","rimraf":"2.6.3","rollup":"1.12.3","rollup-plugin-commonjs":"10.0.0","rollup-plugin-node-resolve":"5.0.0","rollup-plugin-terser":"5.0.0","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.21.1","ts-jest":"24.0.2","typescript":"3.4.5"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["react-testing-library/cleanup-after-each.js","<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-2f61feb6b","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"dist":{"integrity":"sha512-C5CX+PO4UMD1H54pNiWZuBMqKYlC+MbPKhHFsQ9kE9JvcRjqj9UE8Gvj0CKcQhQ4myRC07QvFNkWbi1/eZYdHQ==","shasum":"9b68b5077efa18a2fffd92561518c2a0039af1f0","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-2f61feb6b.tgz","fileCount":76,"unpackedSize":344790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5xUxCRA9TVsSAnZWagAAbQgP/Asx5KZDqe+Ovau32eYy\n6M4mAkT/nXkE6th5XvKtzcPaWsh2fe3rWaBYJTuVgLZCtAJYbepgjsyxx/7J\nO1HEu4EFkHdkjxopNfvbHJMHGi6pXoroShPguJhhWbZM7S6ynP9OoWq2ngQR\nLFeEahutDdllcoCmq0UNjCii4J5xdIo04piEiSHSxGdxmLVK9t6mr9yTLf1T\nlm9XeSwvJ3RFC7JaCOf1lBD4swVyRWM9m4/XwZx6VRLPp1UFJREJ6M0wOttk\nPYw2Ad2b2jji2YeMYldlsZDV3rYYw4QJJFmIEZNZrFFgZzTmY99jSQCQ5e1z\nVKaGOR9HNf0J+nrKeaXwxdPUxJRmGnlLFY6uD28/AK//B4E/nwgSNBH6+e66\ng9YlPlkFsAGkZwIBbj1UqNBUWtT9DaeqLJ1ZhfnG0kshE6DzuIiOJf25aXCB\n+R1OP2JdDXXNiiihbYc5LTF+DZXhuUfUcftK89jBmavb1RgFe23WZjJfnBCt\nz58GZGMjVkl+eX/SphlCI+Tytag+S4ee7imMdt485I8/Uyw7PdFlblFgkYK9\nEfywDNf2LQZAuWgAx/PPrbAh+8MMCAqXGHVUCXc+y7Yu8tSnUrLKZCsFyf+D\n4XCMcGRJb4vut6+KxaGF6qBI5YRJ2yk4mdIoYOLcNx23tVY96BRCX3wtBW8W\n60em\r\n=l+MP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdYR6q6SHm+10RkKaHJV/BvIx3IJaPymVsKCGbfeMXXAiEA1sak/MrBW0CzIC++9MH4L0AY4OjF1cVm5pLno6P4Clo="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-2f61feb6b_1558648112444_0.15629368568360924"},"_hasShrinkwrap":false},"0.0.0-9b1a66494":{"name":"@10xjs/form","version":"0.0.0-9b1a66494","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"^9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"1.13.0","@typescript-eslint/parser":"1.13.0","eslint":"5.16.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"2.7.1","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-9b1a66494","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mkFtXxs8qmlkt7ybOeFQRn/NKnTOkeUrwAflmKt33lquK4NQIgqka7SE/uGoa14ChET4jjJ3xh4yBp4+jg23pw==","shasum":"470550beb302545aad1534038c3addc67949c94e","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-9b1a66494.tgz","fileCount":75,"unpackedSize":346140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcfrRCRA9TVsSAnZWagAAWqgP/3B1hMJO7bAa/EXs1fEc\nmxzuPYyPcn2bZfG97FqpGI8c+O43gtAizOndEFcw9cFR4SQsIMU/GfvCjkz4\nN1SJ4zMIeP8DH33JH47XM/sUGrTNRWIMAXI5rYXwOzR0W0JE6I9M+S0tczfE\nh6enEtV83X7f3QQG+0/itBKwcbIX7aAN+STH9YFk/HnXX7puJBv1WM77P/M6\nNyAWz8F2IblCxkKY/VQhKfJAZ6uV7aF7zmqdPdQieJEsi0nsm2tDzCFJBSJU\n2XOe94O3SYesGpD7y0ZKvuwjGKuxbqmcQqWbtQJoItf4UP0OefPYZ88xrPII\nHCYJ4m3ayhB3fTLGJMRsJwQuaZoWiTHJ/24yuyOAwAJ5Qw8L9NXS9gYa2tp/\nlF6H0//FPqr8Cs/bclqy3foCSZ4Uura0mlikMOGOrx2AAnhsPBXvGl1sp0mW\nBCkrlEXOeUaYgLQ0AJlLL6IWAkupQ9Shswd7TYrJx/22ND+IeW08fk7GiDt7\n7Z5h+muhzT+4ynqTpfZ9eKkTapcbBeRDNmgTuGX89Rx9CWoRORdSgWX9/4br\nxoJ7tlaOgy0AxYhvkAAEVgzrklv1Bje6QIIVS7tAChj+9U+egAbUMhl75Bfe\nFHZZeqCVYyHfjAr5VJaAlsPJccfwUuXPCZ5IovZLBJLEoUXPrYn1/EWK19s0\nuXtL\r\n=w+ds\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAmilsIx684x1Dj3qKNQ1KFHwlyuxwd1niTqEE/of5NrAiAVcUnh9juadl544ZEqbaGLK0Yd1v0pzRPzwJKSbsyFIQ=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-9b1a66494_1567750864731_0.21048756290747317"},"_hasShrinkwrap":false},"0.0.0-ab158e4e1":{"name":"@10xjs/form","version":"0.0.0-ab158e4e1","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"^9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"1.13.0","@typescript-eslint/parser":"1.13.0","eslint":"5.16.0","eslint-plugin-jest":"^22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"2.7.1","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-ab158e4e1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JFIM51qI4FbMDMB35txNllekjUjg8ZxgnmD/ZEkVIGGkhlBSNgj0vPTtV0QSoAI4jviV7R7ymAH0lc/DKYp42g==","shasum":"ea6fce7fce032045ad5fed41dd9768c6e934121e","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-ab158e4e1.tgz","fileCount":75,"unpackedSize":346178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcf2jCRA9TVsSAnZWagAAVZMQAJcgB0/vs8m0sTGoN78S\n+q2Bn2ZMGUKY83HZeB1THcVSd3rumdLU2V6WrgjTKtXlYmkLfLy1SaV9wkR9\nKP5Vf6WfBNZ6QjBXSa8RtjRsrIXJJ4hndxPJlNgThcYeZ3sjeER9P+iTylG3\nsRO62tC5qIPbFMS0XTNXDG4+0yU3CaSB5Jl6HWzBqq1/lbpZdOaegybAxnu3\nfNkW52p/kfRF/EanZybM84Q1LsnTTUUoVCe6ulQvef8jPjl7Vld0Nwhq57DG\nt4NMydE4oHQFAb92rUwUVBiS5t1fpezxuk/PnhzDkWmX/QuiEyDhPjC1jE3N\ni0my3tjHehPS8FbCy3LxdhWBdjlCF92sBLj1sw9zKk6Oa56VbUNrOvl2nzmt\nh0jQ+QGmXngEBeYsuqX0OBeMXTMfRq6GzpIaPaje9N1y8A/1uXILkCNhoK7L\n+6xZA0vSSi4ijsTlqWGC7diq2fXL1I3Ay7UcWYrR7xjAKwEXjOq6SuRg4kV+\nDAh9ZYMq+r+jNXNPpRjVYsRBAQih3jkLqHevl3/8mimGII4m3Mvu8tv/DpOd\nmx+uaXc4OaeyfyQNkuNJRIOP7xvrcfuhROfisnu4KXTa7mohsTXuNJI1g7/q\nzwjd9E+V5PppaeIa2jbMPxUTijuFrxghW/M70fa+4XRtztAnA4laOApjHHtw\nNuqV\r\n=wmvI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDlu/jVUo/0z94XyL+XxehSzfQ66P/MoX5ysNHvwjEbAiEArzX/rwqJ/Y/P4kRXXIUl4DbAtgBlWNKCGYqCTyPH80s="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-ab158e4e1_1567751587323_0.09237139418162088"},"_hasShrinkwrap":false},"0.0.0-2f1f2707d":{"name":"@10xjs/form","version":"0.0.0-2f1f2707d","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"1.13.0","@typescript-eslint/parser":"1.13.0","eslint":"5.16.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-2f1f2707d","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7O6bvB+AIEQZovvMMk8rIAL2pNlBNbq8JliBv0WK+pXA6wBfSJp+Lk0GyuHt725/xMKheyijiqii9GSfuF7vDg==","shasum":"9883c4caba447dfbb7320325a03c646f131f2d59","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-2f1f2707d.tgz","fileCount":75,"unpackedSize":370478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcgAjCRA9TVsSAnZWagAAR5UQAIfiqtw7vSv/+VH/GElP\nUFZPLPN/N1bT4J5kLb2E0Bac93FPmmckQYqd8bVaMlC4jGeW93JyewKLCrSa\nIz02kjDhwejbzLUzHbrLNsaglEH/XbBq3Z+fV5ARQIwzprZMThA0zdX9Inru\nyJ8qyvLhgfhWp1zurpPhg9wAiDXEdUZZSzgc7S8gQb7Ag0rXLaEV2HXN0PgS\nKbFc32+F9ZH3NSH1ahJ8X9PlbHlUtvF0eouA2bR++oyZGonC3OeADSNzo8UG\n5sbReNQa54hM6O7UPWwDkKVPmoJtTrkRkWQTEYZnIZWvlDKiOz4g18vsTyUU\nWrQNEDq/UEmT7iAGRpeHTJc79r5c4UZQJeXWt8ygCmpG5dVCNkUe9iGqO9eL\n4jsCWGMGQ7Pl+bhslLG6OXUwtqhEKwO6RPSBIKRQgXPreT7aDmTA0r6z9EFH\neNgpFfviPPy+JGTpHuTdrlWZu1siqnKj6BIMZctbqkrPotv29yxLz+JO/d4C\n5B8z/zEoDxAoRO1k6hkxctnzkho6OnssAqVdi0N33hN30fcnBoukvt9elPsd\nuwsdQ/R+FDelV9+ZVwd7iMF6q3ij+zJaBsGjDqanC/uE8ZnjPfJWf4WGfTq8\nI9/fatMqjS0MEw0iYee7Y6ruWi0JeUg3mSrnE0rQ3/aH6mRP5IEBB8T3VSCb\nc73C\r\n=/Mjr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWCVTUbew73z2HKEQAANOO98th5IWMD0rfWm0RDHQgyAiAWEOJkrgMVHY6LJYcWW54MvGt5wv5rbg9e9mq8+duRDw=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-2f1f2707d_1567752226477_0.23829667714602398"},"_hasShrinkwrap":false},"0.0.0-4e51a50b6":{"name":"@10xjs/form","version":"0.0.0-4e51a50b6","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"1.13.0","@typescript-eslint/parser":"1.13.0","eslint":"5.16.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-4e51a50b6","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hM9P63xtNNV+1NGaZz0E/R6L3ilP39nXwJxtNA80FtctSkevcAYgm7GqhVaIXIOJnMOnQOBf1jDDDPqe0bJAEQ==","shasum":"ae56c85e09345df878e66ace249fae6e520885e9","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-4e51a50b6.tgz","fileCount":75,"unpackedSize":370478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcgIbCRA9TVsSAnZWagAARkQP/3aS0OlqOwKBZBMjpJGx\nLFfowrlkcMhiU14+mEUjfaCsIM8BRLEA/0fFx9rmuRo6b4U/sihJyUb77zly\nWoCMYrk9IGUhPij+cA1YPQrtiPv4uav2aJm76T2nG9N6phC8cVy5s7AOim2z\nrhVdU8/hDAuVXB0VvCNUnggAkDvRw0EYTrC8mIC+JLm/emKDrqPnj/oY7ztA\nBIyXimjXb9SEYVlPSn2Sr0kgZSyZXsZfrscPy+Uz6xMbYARGtupvr3rVpXt/\nWdo0j6CqEjEtEs4NAbPGAb0ptAYHbwIQKeTdeT7G/O0f7onyD4WwR2+PZvVt\nYt+u+i/IXR/MetlR/fYNT+Lx9j2WnLSZ7CyXMD1kizuClHm1JBhacKd3hVJw\nMwGVTrb1q07SKFRVG+/RQ+XEbZU8JUi6t+ixW3zd6GIYKWO5cnLo8wsUGGQc\n21qRBBsBDLjrzPB10KMvkAKNGn5BJTT26DmQRWz1mjZt9qIQsNdy1A6/dK6u\nhks7aNSohtKBGG7ylk5ezNG2GjzbfY4IDOm07ht0yb1x7D85khihjdS6aq4L\n9leTkfX/zET4cUyY7jY4qBBeKJrwXzTp+RkXHWX8wm8LsTajJnoNCvmdsjwG\n+Ddz+TXNgfjYFyeKIZc0I3wLy9IBdCK0TepGDoeWeTF8JgluLKox0RfJGivY\n7RAr\r\n=paa9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFcwX7w6QeeqIg91MyiJHoS2S2RyQG1r4FMdfbOuhhVfAiEAzM30hFDHgAq+iR8kJ5USp11uFxECJCxTRF58w/K1YaI="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-4e51a50b6_1567752730649_0.3899818236834276"},"_hasShrinkwrap":false},"0.0.0-c083cf9f9":{"name":"@10xjs/form","version":"0.0.0-c083cf9f9","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .tsx,.ts,.js.,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"5.16.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/?(*.)test.tsx"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-c083cf9f9","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9lzGN80dxPQojN14La5U0t8i9D8+Bg14CLTUh4HdM/E/D3KCGzLnm0HziKdc43TnTBOY66doiZis49543zZORA==","shasum":"e4744a47fc1d02604cd67647b557fc0e3b2546ae","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-c083cf9f9.tgz","fileCount":75,"unpackedSize":370480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcgWtCRA9TVsSAnZWagAA/K4P+gNk1GxrPkuZlxJtOVuM\nQpNDYseIg8F/BJ4w5N3PumpOqqNNtHJorVfV+r3mTu0w66rxs5i+JBOD40lW\n8o5eHzs0RS0NmGFWXOlQhYPv+FJqvcc1SuCYMOSFJgBF/LIFQ/HOdPsJSQqY\nBLBTfx7eR2agB/fnV7XihQN+1T0WtNNpgwix1v9il7BXYMGKIPsOAOw9sxAC\n0GmPAaE1GkcjtxYagZPT+EASYZKW6ExjZQWubC1hS5j0yznMXBNJmRHX/M82\nIUBz3j7/zvJzZYvFFYjlVsmJQFbgpGNVnm08GFYcCW8AVohrL9Kx9gM7IiD4\n+Undx6iTD47P46yC8L/yYur6C/ha4uF7ZxjM3/RgcVtFnNQR5xGv+W3kSOMy\nk409dJg0vld8OlmT4m3e1+rE9mm5gFI6/yb6AMdP1f8xjHgRydSEoYklZG9P\n6VBaHBshPYmdOc40ekgODN4KMOKNvHefiyqXI5G7NbQ5Bkws/7FlfhW18SPC\nA/thnnHsDPfffgKvn2daqVSeAfENi+zu1ZOjs+XtU8v2cgk3ubXP8iEPI7pY\nWrPjyGhEYlk2CGsIrKQ6jaKp00F3R1vhaGYjDFAXWVW6NFD8t8fPPg1HKsqg\nwfTEj0hffwkfS0rzeyRBKyt76J8VuLS7C7KvBkDPvO8OEnjbsfBMGDyiXYvI\npYsJ\r\n=SCLV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGFFMpj6dsWZ+wi5bAqkuHPAs5Yba/cfze1KI+Vuq682AiAb5OCubV+AKnuvn1A6qYARUexPMNX2pwO/s/XV6gapwQ=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-c083cf9f9_1567753644989_0.9463069892313303"},"_hasShrinkwrap":false},"0.0.0-4dee0fc11":{"name":"@10xjs/form","version":"0.0.0-4dee0fc11","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"5.16.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","jest-dom":"3.5.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-4dee0fc11","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xo8YkUah6XQkND/Ehp2XDIS9xAhBVoW6H3EAqwJr85GuCrsHawikgdL6r0A20dksBlghRN9fTVMmFi0WREoA2g==","shasum":"a7cf99cd9afdef4cc03e91e324a4a825c512ab64","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-4dee0fc11.tgz","fileCount":3,"unpackedSize":6904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcocxCRA9TVsSAnZWagAAoFEP/2jo3tvobi9ZYOSVVMRq\n9+F3ekVlhNhLOM241CDdvTxJcnbsFRj01zEEt3nMQC6lTX3ZWty03nh0HXUQ\n+CnrTG/n6w7hKXMhyE4O/gQiAEmY05YRcSlkiMkKkVQR8vYVC1hKh4tCTbDT\n/y9drC7OvM4JsM14HhjbAGR9mkc8Ku3vyMrc1CEapbcP9gRcS5ZYGpyOsdPR\nYpNCVOp+rxz5toGS3T36jObKWd+ItDHQ0FtaHzWTcmf8mbMfPFnCNRohDhsv\nCXJzZ5jNvDlaaX8XcHY2roLbVyG29bsmn1tso5ZlOBQ+izREKTf2WRvb+LOJ\nNwAslpdykuvPq0JUL2m0ABd/z0PPATPt37sfLG3UeQEQ4jdPpqUj55FIxyKW\n3KdbXZSGpBIL9iSyZ4dtygYHCYr9sWUzvTxA64o1CBslkEJkQkkqS9W4HmHG\nynTZqNP/smQGHJLAIrEQ4KxTHqP++zA3gi6gjPrO6jvP34Qy4U7ad+/SVEEX\nztPL6E60fhIEFmHe9j8JjBJYztweGBtQJah9XjuljGpXpJBieiGWd1pbjm2u\nnrDXJ2HeE50GAgWHh7QKDQEt0hNl2tuZ8sPY+OxNr/HrYHI5+QysMvh4YGaP\n4+2sz2vbh2zJhkIYS6m0qJ2jb7z9d2DMpiwrqJ7MGr5DdRtdc6o/4qyKbPKd\njRY0\r\n=0ySf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIxKFEBJwclxVuYnIW6Sh7K75iZ/5PmV0Zoi6Dj5rIgwIhAO4o/WuDdf5yXr7/Nocf8hPguRJBzeUt1WwkDv+Q+zfT"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-4dee0fc11_1567786800734_0.6309331184896083"},"_hasShrinkwrap":false},"0.0.0-7dad34982":{"name":"@10xjs/form","version":"0.0.0-7dad34982","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-7dad34982","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I7j6UW7kvmeoLmuLNSZ0fXBsM4idc6enMlr6P4g2h++Ybv/IeQTc51rUUVqO3PnOkFqJdskSYZsTcWIx88N3dw==","shasum":"48704467480a148dd9cc103ca2937db0b37abc0d","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-7dad34982.tgz","fileCount":3,"unpackedSize":6921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcogwCRA9TVsSAnZWagAApg8QAJ1d0rv03xMNEd7Ss0Fv\n010VJ3tcX/oscGmp5PnCjH4yGVrOcoZTJlPdLeZI0t4pP2zV/Ooe/I46LWIB\n/Lpin1b6KbV2sIb1yDXMvJqHoveEHw7Fat6M3GrSgm60aM0DpCifUSxDVxzd\nZjwoY+oV7nRGUm12K2t2ooElJi7/vYq6FOqs8qDPhAJalqIFdLuz9x75jI40\nOiosEP02K3OCYUikXVDzr54UdRy9WlKGZUMDtHZHrFgMETk7roIrn66+PwkL\n4Nco7KMQjWxtgViqrdToTrik+EJwZXjpEsi58rVynWBL63OsR1EKyWe7bubP\ntaaDYzmzCxyxy6HPl+BQJ9fvmOHETuB2sDNgIXA3BrbQ/pSXt8rSrbc2HYsS\nOKoy3iC1/ViLgPgcWlbCQ9kCErdbNaYzEvbXrYgHdu/a2qkrXjE9Pdtt+FUS\nouaQhXJhLINIKG15QIOg4kH1hUtjm88CftrfHtH9NPGFxSce8wxtFj9jqnxf\nECph9A12eRDax18bUn7pg+nrfJN8+1OJGz/jnfSxod3Do9Nor/spQUSB6SRp\niFHRL2UhBdG3ehB/b95UrX3NFk2extCeZdodXI50pSW+DIBbSB1ItFRiTm+V\nGQ4ZTEHgGhHVH8OXvihe+niOI2ixGdGtx6p8NfyEVRaolqBhBNQic4XwaPhY\ntqWD\r\n=1B2T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd4iaGnQHF6SGEVijk9m9XB8k0q0F37zn0+LwogOmMLAIgF883LL+k4T3R5C4iAj/3VLDdmrXtuXDLu+O17wHyY+M="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-7dad34982_1567787056394_0.6710609081390355"},"_hasShrinkwrap":false},"0.0.0-97fed947e":{"name":"@10xjs/form","version":"0.0.0-97fed947e","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-97fed947e","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-P9K3q1IcPmjTSOeLOAhAozO0Efje3d4N2rbNIq2J8kKpViL9XvfcF6uIB3T426QPXv8jzTsV0pXhtbQEsc+JEQ==","shasum":"641d59d77927c2dbf508d5cbeeb7858ff4ac8ec0","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-97fed947e.tgz","fileCount":3,"unpackedSize":6920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcqD1CRA9TVsSAnZWagAAl/gP/iysqZxd3CEthWjkZoV9\nQ4iwZTKyAUxfGTyndj/3+9DkMzPX/qo/dcXB2svgVHVp5ExQ3NX+XpmsYVz0\neEUadqDSc4eL3RI/HmYlTIDo9eUWQIMQ6h7NlU/TuqeQjMr0xmO7KIQqMfIo\ndtEQLrxfHBuLY+1IUl9DFVzbSIYd9c2pvJvFQP5XjkuGM8a0seT2T7vmDcc9\ngEJpG1FoV8A5YWxePJ1PSlj6Qw9NTcxGaXV4pqf6ZX4LsfLgKNWhJcoUQlvZ\negyRl1P3zRxGhVQNEjM3JDFqtIAJLmaCNV7SBtysaFW9nDfbWJg33cakYug2\nd2lmINnOtPKhdrlNIqUObe4ewmoFGW1LKtz6u310zEcAxHmi/yVSPO3EgSfu\ngTwjiUFJfrlqD7Z8MhFCNkK6ZiZC8d2Xb9BCAmkMnegLIy+VND057mS5KQmv\n+tn7PYv17/iQNWZSyMyhxBfqmHuH7DrPzoaoUoUqvwSm7uYaE/Ogbxu0f9V+\n6bAGuenGzZrEOg7gpy0bp+5cWB8IZHNwJQ1vdKSAxWJxGBqtOTBgstzw8N+9\nxMpE3YbHTguSYCBXLAwrxlJx71XtiNigBpV+ERk1hBPnTV958x8yKk0pp8wC\n38Ltuk3mVK44oAz4Be6tBWLCf5PvoMIN2WZ8wyzxPe8D9ly4TislsYpMaAdv\nSZ0p\r\n=cgIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXkz4U/1mS2g8sl8MSscjrms4BbeQvio/ImGYzOVD/dAiANA0Yos7XL7AeoOuEzBBbUN6YIK71QB620gvnXh0+Iww=="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-97fed947e_1567793396571_0.4304138862400215"},"_hasShrinkwrap":false},"0.0.0-7061e9746":{"name":"@10xjs/form","version":"0.0.0-7061e9746","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-7061e9746","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9ZBuhNdRTcrbaZVtb/iFzDdnwLrMwUrmxlBTHh7FQyvHc1re47rBa2chWqAr2blu2grmWMjQ7XWwpRHsALDCdQ==","shasum":"f8fe1456f2387dd2b1cbabfaed54ea7a2b6de7cf","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-7061e9746.tgz","fileCount":3,"unpackedSize":6920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcqhZCRA9TVsSAnZWagAARsAQAKLwQ747wmcIa9j6BlzH\n1aKZaC9fddLxvrkHu7qUPU4v4lC4P8O5mpA60LZxcvZ0XF+9B3oLTTQVu4jH\nux376iK3hWNC+mkImJVUjJ3O8F++92MF/DfZcLzCEw3qJGhM+09nmNGNRawm\nrVjVN/PUO1/YkT4wHIKYnQoQnAJyIQbiKy8EZ0PDiCPnbmzCi4cq1Xdp7j77\nCkcrwLFGaXWsXXgH+Py0UdU2iVmi0Aju9QeTnYLysMRTVGIMxx8z9Qko2iik\nB4Qu7KThOW1Y3VZuV0PHt8q1W8sK1szr6EjvHkYIwgkw2JEXS8z0EMTjz/Lz\ngBApJsH0cG2O04iLRkYOueMYZmbk7zbaXhM24eHT5mn1eoQ1+/VBtd/dl6F+\nEt+WL1RHe6qTiZoi11+GndPSJ5tOoSOqpLeK0k5ZtY5XhR1iSUmmpJnciRdt\nweAOsr9e2Ugio2GdnFNOjcwkMfiEQveL2qqM5zIhDXV4ryUqdv3NLiQUsKc6\nrBxivjWR8QY3CdAjZsbxyG1YE7ho7c7svExZbzTnj1iFdIagiuhxjyX/EoAd\nrGVDkaVWb4iGqyWqBVV/QVJX19OhbkS/3gB4X4au3zUd4qbkFbw00wgQUmse\npAJ3/8mp+FczYQcSVLELVpR48UpJg+z89i9MPqV3rTuSKG2Rw40aA5okW5mv\nboW3\r\n=7HuD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJePt+kvT7nkid/Nopxim59hiKP6MjG5OPBVWwBrGTGAIgAbjXeiMUeO86uqRj43J7xLMQ/04kBwc/WHaSev20wUo="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-7061e9746_1567795288602_0.856989958552844"},"_hasShrinkwrap":false},"0.0.0-8cca69df6":{"name":"@10xjs/form","version":"0.0.0-8cca69df6","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c rollup.config.js","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-8cca69df6","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hNQZI1lQch40Yd5kJbrWC2l4yNc393/uyJgdZ+DqtoJDlZVKHn9xobp26fDz7mOZ84O0XRSPWoXr/SKpCF/hCA==","shasum":"6bbc087b7cbd688121332551290da8a77014a57c","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-8cca69df6.tgz","fileCount":75,"unpackedSize":370976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcrU2CRA9TVsSAnZWagAAeJgP/1n/fIM2Gui0pRT1mTKg\nEr+DGF17Jk+8NJBKI/nuiP7wUga5CEUxt8C88unvGub1mrpNuhWCxHrTpX36\nQAU2YSl5nxiBrTB9FJexeZ9fcjPvWndCQ5Iy89r0otvaaKL7kIM/Jbdg3cp/\n3A79WCSOYXcLKG4UrmMcoYYQ23rXnFf2Hl7bKeMCEfi+u385YfbI9PV+JquM\n5it5CLmgK68H9+lqIBAm9q5IGegViwzwofIbyWUNo5eCYew6REYVtYLN2sb6\nwbkAwFbkap8WPNTdYUXM5eMHyRYvWIaPbY3OUYd2trJYiEC1S34Nqw0tASNS\n4fSyvPX3qy2pOk3mcY4yVkPHxpUyAH7JQT4nSQRFo/FtQ3x89CptBV1nLOGT\nCItYXVY+L9EjtzNKjiksLrm8tBSpfv+7LJUFHldfvwNLbBgp/dMWTTeAwU4F\n0EqvjT/B+XEa0asZOP8rxdhzONA+tHL7YKUM5+OrqRyEvLkTYyKzwBecoX/a\n7LjqqTcqT23PHTx9Xqh4X7HCPD0+zIJzVzDG6xzJcIgDVQpTn4i2calBwF+l\ntf66LIhRp6BQsqZGAzptCoBi+haFbpKd0ZjO2FxYTKV1dMu/HkBmJg3OHfAM\nwgbfYuLIsGsNloj0dlzDO6W1GK9cCrtn5t9/ZwHlpXaX9n8XhPKAMCRt0h7J\nRQJt\r\n=hm61\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGy9FBJfcqB22jVYnWaRU81jbj/+9JUs+RTMH0O4T5oQIgYSK3OsR59vCJMg1LN82KSBtVst8Kw/nKZpdl5B593ZQ="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-8cca69df6_1567798582174_0.7370266444183009"},"_hasShrinkwrap":false},"0.0.0-04c9ac8c5":{"name":"@10xjs/form","version":"0.0.0-04c9ac8c5","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c rollup.config.js","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.1.0","@typescript-eslint/parser":"2.1.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.20.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.0","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-04c9ac8c5","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bIJnX3CY+3EjUgydG56gJVFFvGDKFwn5QtjD/2OvVQeCpC9gT1s3oBjt6H2z8H1c7eopv9Gn2ym5NycO70xzXA==","shasum":"13acdeb9cd841270a26b3b57bfdb442fe68e21eb","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-04c9ac8c5.tgz","fileCount":75,"unpackedSize":371192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcr7ECRA9TVsSAnZWagAAzxcP/0TO7mVIxvP2/GVXjXVG\nrWAf6ls3esgL5AJm7DgnJJVR5SKtF3VbuGEDHzIt/zc5g1LuT6u2A1ceVHSS\nEVwV0GtV2kWXoWFpnoetQIdxqxOhDdq5kMYsFCDcMUJ9EVyyueCewIMoC35o\nVv5wZIRA3/YnV3JEFV7obhD4fByQBrmQ78CHxQQ+GRh+lsdAHsWUDSNEOi76\nSTB3Y3+Cl0DN4wDHWHn5ihwL8qx8E1nWW0uuXvqxWGlF0KaKygmQPTd6U9A2\nWmH1PmuHgaKYCTb1+/6vMI1XVIj/r+LLFl56HrzGvkwaTACYlfJ6CialNPAD\nlHfYN1E/WXlDQqYz05/6lBMK/mY4z4ZIsFA5CRamyhH+kSZA2J2g3r5h1MIu\n+QjHmrCatYJgEQiXpiQcNT3/eNghw+jzmO+H70QWkp5TJO3gp0SGXZxfqS0C\n2Hy/Ti3e9Sle0QGopJQSLRcEf9Q4PTw14vji2xPeb50xwxTcGG1UzIuln8PI\n3DjgcvN+uwTg1Y9pcGbNKRvjnL4GwKEVlTmf/mk2SwyTdflg6fYC4S5Tz7Jc\nBw0F8a0v5suEcoHQLDtjqdU/g34sLedJx5aKwe+QGHlKcTd/RdO/HU1lM/eK\nmD/J72Q/ZoGjAr21ssUzvzVcuarfkF/yOtqubWcPu+yVwJJTm3j3xm85cr7I\nwGfG\r\n=XHrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDsDlxDn7oZHKMfjHlWc8ftlBRwEOBxhD1Ey0ziXH8NwIgQLNhoF3s0kwoubetEfKGngGwgPsUTez9Zr3yjENNhmQ="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-04c9ac8c5_1567801028055_0.7746018643531865"},"_hasShrinkwrap":false},"0.0.0-abfec2541":{"name":"@10xjs/form","version":"0.0.0-abfec2541","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c rollup.config.js","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.2.0","@typescript-eslint/parser":"2.2.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.21.2","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.1","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-abfec2541","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3wHzdXsVJvvaLqTa4cWnJQ256tj1yCHT5/qP73ldcVe7nwNUjhfbJ5/8b8ycmV44TipOrR1uQKrwYK8sVidDZw==","shasum":"353899033bb8630fc233a8f740d5321584a23458","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-abfec2541.tgz","fileCount":75,"unpackedSize":371192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdduwqCRA9TVsSAnZWagAA5Z8P/icenpyoc41rzeMoe3X1\nbB+vu9LHD92ll/w+YbHoF5zHFqBDuApmlC+gizk5fbmkLL5I1qB9h2SfOzCw\nknzgLgWNMqLzBi8c+5X9rbR6TbVYCj6t2rfIzrNF0w7E6YxR+VeZt2ODFN5X\nWcWA+qDcNwl27g27F7kk/MsQUFFLdLjuZ/2Y3oIpIlbL2mRm4c3PBvodi8wt\nua6ektN/mEfhxkseV98lDIPiJhet8P406nvXWyCDuRuUKKxCYOBmM0SYPqzL\noDKwlUIXDu4Lsxqvee1/jeQmnxbk6vVVBYrPyZLHPZxSWHDU9wkIN/L99SGr\nGwaOh+6EXd/O2rB9sr0bBn9nLNDpMiBJOHZHMynh6IfAzw4WoMQS0/e6lW2c\noQYNgrqYEdcLPss3ewKWkYAkF+wznNTJEBIBEgfdCVtV1eR9CbDEjo6E88tQ\n/Z7myoqovoZ/jeTsmI+r7l97qOMp+GzusOBO2sNQ5tOIfz1/mpoDnc8jT4FL\nvL8jwgcsPnPrrfmLgasXeUOMInKahox/LO/RJ8UoZ1yreM6VSWIDeheaX1Q0\nFcgtKrKhi+HWX0ykjKlqWa8WfH+9ROmFTO8oWnDiSWrnoLeDS3R1FOlR8xkQ\nUqFlgZnHyUlvH+KxnABhXdpmBFRulJ39x0saq//YxFGaNw66hWMAcIEbMfYk\nHs30\r\n=6dB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7pd2uxaIBc0Ny/mis2LNUfnG5xP2eLznRndORWye4AAIhAPy5ZdhWtwba7WWSKm5268mt2Xd54GEslyB6ljfjI+8F"}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-abfec2541_1568074793232_0.48619618599079617"},"_hasShrinkwrap":false},"0.0.0-78f45486d":{"name":"@10xjs/form","version":"0.0.0-78f45486d","scripts":{"build:clean":"npx rimraf lib module types umd","build":"npm run build:clean && npx rollup -c rollup.config.js","format":"npx prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","test":"npm run test:types --slient && npm run test:lint --slient && npm run test:spec --silent","test:lint":"npx eslint . --ext .ts,.tsx,.js,.jsx","test:spec":"npx jest --runInBand=${SPEC_SERIAL:-$CI} --coverage=${SPEC_COVERAGE:-$CI}","test:spec-watch":"npm run test:spec -- --watch","test:types":"npx tsc --noEmit","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"license":"MIT","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/jest-dom":"4.1.0","@testing-library/react":"9.1.4","@types/jest":"24.0.18","@types/react":"16.9.2","@typescript-eslint/eslint-plugin":"2.2.0","@typescript-eslint/parser":"2.2.0","eslint":"6.3.0","eslint-plugin-jest":"22.17.0","eslint-plugin-prettier":"3.1.0","eslint-plugin-react":"7.14.3","jest":"24.9.0","jest-circus":"24.9.0","prettier":"1.18.2","react":"16.9.0","react-dom":"16.9.0","rimraf":"3.0.0","rollup":"1.21.2","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","rollup-plugin-typescript":"1.0.1","rollup-plugin-typescript2":"0.24.1","ts-jest":"24.0.2","typescript":"3.6.2"},"jest":{"testURL":"http://localhost/","testMatch":["<rootDir>/src/**/__test__/**/*.test.ts?(x)"],"setupFilesAfterEnv":["<rootDir>/jestSetup.tsx"],"coveragePathIgnorePatterns":["<rootDir>/src/test/"],"transform":{"^.+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"# @10xjs/form\n\n[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form)\n[![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form)\n[![license](https://img.shields.io/npm/l/@10xjs/form.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/dw/@10xjs/form.svg)](https://www.npmjs.com/package/@10xjs/form)\n[![maintainability](https://api.codeclimate.com/v1/badges/765fb5a2f1be1f7eb075/maintainability)](https://codeclimate.com/github/10xjs/form/maintainability)\n\n> A high performance zero-config form state library for React.\n\n#### Basic Example\n\n```jsx\nimport {Form, useField, input} from '@10xjs/form';\n\nconst Input = ({path}) => <input {...input(useField(path))} />;\n\nconst Fields = () => {\n  const {submit} = useForm();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values) => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst {Form, useContext, input} = FormModule as FormModule.TypedModule<\n  Values,\n  Result\n>;\n\ntype FieldError = {\n  /* ... */\n};\n\ntype FieldWarning = {\n  /* ... */\n};\n\ninterface ErrorProps {\n  field: FormModule.FieldInterface<any, FieldError, FieldWarning>;\n}\n\nconst Error = ({path}: {path: FormModule.Path}) => {\n  const {error, touched} = useField(path);\n  const {submitFailed} = useStatus();\n\n  if ((touched || submitFailed) && error !== null) {\n    return <div>{error}</div>;\n  }\n  return null;\n};\n\nconst Input = ({path}: {path: FormModule.Path}) => {\n  const field = useField(path);\n\n  return <input {...input(field)} />;\n};\n\nconst Fields = () => {\n  const {submit} = useContext();\n  return (\n    <form onSubmit={submit}>\n      <Input path=\"path\" />\n      <Error path=\"path\" />\n      <button type=\"submit\">Submit form</button>\n    </form>\n  );\n};\n\nconst ConsumerComponent = () => (\n  <Form\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <Fields />\n  </Form>\n);\n```\n\n#### Typescript Ref Interface Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {Form} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const ref = React.useRef<Interface>();\n\n  <Form\n    ref={ref}\n    values={{field: ''}}\n    onSubmit={(values: Values): Result => submitHandlerFunction(values)}\n  >\n    <form onSubmit={(event) => (ref.current as Interface).submit(event)}>\n      ...\n    </form>\n  </Form>\n);\n```\n\n#### Typescript `useForm` Hook Example\n\n```tsx\nimport * as FormModule from '@10xjs/form';\n\ntype Values = {\n  /* ... */\n};\n\ntype Result = {\n  /* ... */\n};\n\nconst ModuleType = FormModule.TypedModule<Values, Result>;\ntype Interface = FormModule.FormInterfaceOf<ModuleType>;\n\nconst {useForm, FormProvider} = FormModule as ModuleType;\n\nconst ConsumerComponent = () => (\n  const form = useForm({\n    values,\n    onSubmit,\n  });\n\n  return (\n    <FormProvider form={form}>\n      <form onSubmit={form.submit}>\n        ...\n      </form>\n    </FormProvider>\n  );\n);\n```\n","readmeFilename":"README.md","description":"[![build status](https://img.shields.io/circleci/project/github/10xjs/form/master.svg)](https://circleci.com/gh/10xjs/form) [![coverage](https://codecov.io/gh/10xjs/form/branch/master/graph/badge.svg)](https://codecov.io/gh/10xjs/form) [![license](https:/","bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form#readme","_id":"@10xjs/form@0.0.0-78f45486d","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hpB1f3oAelIbcKoo8QSRSpSBb5pOjge6lO7aREflCU1QKFCC0kvwxan4rvdKkTKJP24z49qwZc12H/i/rbZHBA==","shasum":"dd7a5b6311dddd7da15b3d48166bc159d0cee76e","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-78f45486d.tgz","fileCount":75,"unpackedSize":371380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk6k9CRA9TVsSAnZWagAAFxAQAIrHwNogn7FAEcP9mSbz\ngBK5rXfl8mt/aK+h6irQNNrTmCT5/Dvi73Yq110RJ7k734MXbg7hKuRGFCod\nscmKfIlz1OMfF/YyRzfl7/Na1DHBweV2exSmpfIt++djV/2qRAhc4uI7WfqK\nfhh6Eap/NvslPbUtuDi+37i3qsGB2CB9Y4P5CLoZmtOz0p5wbW0KB6LckZjV\nbkbRwBmjctJrxz9Qj80oJzIOKe+LbIopoxi076nJ1Kgqqshg0LbK6BnkV2vS\nnugjvysH0KigrNw1vzFCGkZ3jfUz1x5bdwxjb68/Vetrf2FYTy3+fabIrgLf\nb1B/tmHQdQIKyGcPPxXwtgFP5VXs3mq6If6o55sJhKA4zG9hHqOvHt1/fdRj\nz66H88Y6brwIcCXaOaay72qS0Fn8Wthik/f2743Gqq0sSblOgvQkJ85Mwq57\nBNS61nphEQSCnJyYLqMWvEP+pAGD3VKdm5AnmKPt+wy1lMDGQicEsFa2vh0N\nkHgeoQpfQ0AAL96zsQ5Rkw7sJVSAYEwmB7lmXUT9r7w07feiMdnJGo5a+UgV\n57V9nqd/MFchb6MGTQ/xiA8qdnMbLBw+qoGfr0sOGGSC8cAwPATlGXwHAfGp\ngH/HjwKuNJFSzmRodfzxn2G0vKuvd4oCW+1oX3HslxK6cfujinWbsuOxUYgh\n2qJW\r\n=fhPc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOyNGn/iXOBEzhw/zim0joyhQf2ZuLeN5JjYLvyyUdkAIgEc2SVFSYj8x8cVqB1ICfKsC59TpA76bmz1pMRPe6B+Q="}]},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-78f45486d_1569958204695_0.8412941271491874"},"_hasShrinkwrap":false},"0.0.0-9eed5a646":{"name":"@10xjs/form","description":"Form library","license":"MIT","author":"Neal Granger <neal@nealg.com>","repository":{"type":"git","url":"https://github.com/10xjs/form"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","version":"0.0.0-9eed5a646","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"test":"npm run test:types && npm run test:lint && npm run test:unit --silent","test:lint":"eslint .","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types umd","build":"npm run build:clean && rollup -c rollup.config.js","build:website":"cd website && yarn install && yarn build","serve:website":"cd website && yarn serve","format":"prettier --write '{,!(coverage)/**/}{*.{js,tsx,html,md,yml},!(package-lock).json}'","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"dependencies":{"es6-error":"4.1.1"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/react":"17.0.11","@types/react-dom":"17.0.8","@typescript-eslint/eslint-plugin":"4.28.0","@typescript-eslint/parser":"4.28.0","eslint":"7.29.0","eslint-config-standard-with-typescript":"20.0.0","eslint-plugin-import":"2.23.4","eslint-plugin-jest":"24.3.6","eslint-plugin-node":"11.1.0","eslint-plugin-prettier":"3.4.0","eslint-plugin-promise":"5.1.0","eslint-plugin-react":"7.24.0","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-standard":"5.0.0","jest":"27.0.5","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","rollup":"2.52.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","rollup-plugin-typescript2":"0.30.0","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_id":"@10xjs/form@0.0.0-9eed5a646","_integrity":"sha512-NEpnDbOSrNcGjv6zZwhqFaLG6vS7OPwOXhwcC+JeiXI1VdZl1fL6HF8XG9CYfK86OlJ8Sn9vjAlriE7o3bq6OQ==","_resolved":"/home/circleci/project/package.tgz","_from":"file:package.tgz","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-NEpnDbOSrNcGjv6zZwhqFaLG6vS7OPwOXhwcC+JeiXI1VdZl1fL6HF8XG9CYfK86OlJ8Sn9vjAlriE7o3bq6OQ==","shasum":"e07196a93054324bde1e19c39be235a932a9a181","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-9eed5a646.tgz","fileCount":83,"unpackedSize":348609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1i2JCRA9TVsSAnZWagAAvKQP/3tUklVsuzzCCVelTdra\nBMX/d21vGN6PhNMFFKM3xCfaSuapkDYYeHIfoUqbxuDdLvmh2LgRritqt5LM\nEihGmlNIC72HUuV+0mYOxZMSZq2PCOQhmNoRelAGS0HE1+2TgZuPXjs2vxBT\nbXt9lGGcJxec7bEAEeIgLqwlQvAv1dQEAmK0kjdItZbH58X8NmgJDAJvdL3K\nHgLvjEbLi5vr+JUVJ30PxATJi87Iqw1HLwoaRvq3x4voW0+ZOFcJJ191sb16\nD8NrGtLh6Q03pmQ61aTJDjJSw2mey0SIzS97LB2K4trkPFiJdc/TaR4LgMCx\n/7mFkQuKa21vKEZN2hvr+yYPKj11Zxy4jnyDZD5GNfeYTZmY5HiTye8t0JbL\n9KQMz52XeC62cLOycDafKoxNSUnKGmz9yg5OPkYQMfn7HJcb4jf9D74+efgK\numbar2LfwCSGgAc2Q3Qp9cY7IToYD0ZUKm6LD9Oc5hmK2wdNM3ljdP1r/PdH\nwZAUiEG4j+Qjs8kJjblOK7bR7HlwG6kFe+u3IsDrGp47c8fklwZ3rl3F/VEY\nK8Yc1UJLtOk7PCGj52YbGDRgQ7Pq+PzPojaz4/MBDrYiGfand65VLnJ6vNrg\nO9kBU/LuDIET7kDxrXJJPX9J+JpIJA48xUhFpJLY7v6vXKOmMtbYngJsPE50\nplGv\r\n=vsIu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpUMww12edudJ4qHpMqlYDQVB+wxjk2CjtjjjeQwHQKAiEAtskNMK4qXC1OZ6ygFHQkvlKGQS+kOPxchG8eVatO3fw="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-9eed5a646_1624649096565_0.49424424559952373"},"_hasShrinkwrap":false},"0.0.0-d287186ea":{"name":"@10xjs/form","version":"0.0.0-d287186ea","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types umd","build":"npm run build:clean && rollup -c rollup.config.js","build:website":"cd website && yarn install && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","rollup":"2.52.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","rollup-plugin-typescript2":"0.30.0","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-d287186ea","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-f9/TCeYn3hg3y5s9ZN2tDJOnC3dtQBWTKthAsIMDbxIDs2PBV3NRNvHO83hor6D+CKSCXUH2wjKNllIaWHsukA==","shasum":"25fd9ca322092933354857511fb2be17bc2ebf31","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-d287186ea.tgz","fileCount":80,"unpackedSize":349414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3J0qCRA9TVsSAnZWagAAbisQAIQh++/0LNTJ30q6JN3e\nAe1WmxPpYQ79OGmiSHViplslalUaFUmgqWhraBHwPAoy2OZVq/8kcrkQZ39A\nxFNBlRc9fnRc7OS9CdUTHDhkOxLSSvIh+MoyWBVn0P4DV6HcqLCokcIel4A8\n+TNg3L+bV/blOd6DQJgt03fUbpgsWbnLHCmrn74c/97pwjXPDpzS4lPCcIDt\nZsUx7h0RWkrYd+iAAg2W53WyRancN85fx6mtUMU/0D0LLpH4rE3cnoEaquqE\nemEfbwMliwXeVD9UyY4X9I798vKxh/LoMEvOzE2BYZWZIv5tv4UffdVfEngo\n7noO7B1jnGVZUi68lKTuGnzD4DaAX4TmspLF+6PEuRuwNa7OfWuZl+woSgJG\nIhRJfD9JNoSB791UKvezHw/l9E24B0haZZKalZFcMVCwt2EK48u6rVwv3ziP\n51Vc0p/eVxfWewuWJs+HAy0f0SLEI9/oKTjsOz+9Ld4xcq06rb4q9W5LBv00\nD8XoAFgjAq4QtNOs66AHZUIXFVwyptpQ6Jc39ZyvZ1IM/28P+tifbSbOGMfg\nGr1OMPL9X4PWArencIh0xj9aicM93hMTZJFcYEHKM4VtWgJhUnCctZyK3Ktl\nTGGdQlFUbR+ADzeGpo8T5lBrh5Ej4fGuAUcjrhgx/2qbaTB8gQqVgcvGQV/A\nOJn1\r\n=rnH4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICHeMQrkY2FC2jdHjtwKDHL1TLigUlUqp75i46Hkln3rAiEAzKBYH+zVZsWFS3kBCXsK9qWpKuDGo/o96mqyC4CL4d4="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-d287186ea_1625070889693_0.10517662886895418"},"_hasShrinkwrap":false},"0.0.0-0d76ae978":{"name":"@10xjs/form","version":"0.0.0-0d76ae978","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types umd","build":"npm run build:clean && rollup -c rollup.config.js","build:website":"cd website && yarn install && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","rollup":"2.52.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","rollup-plugin-typescript2":"0.30.0","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-0d76ae978","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-NH91DQ3eceNb3VMAwwaXe8ysR6CvnlJRDM+kK0t3y18B2f6We+5qSk8iF+pZCSevuK1mxeB4QY4IEZNSOEfJyA==","shasum":"692bf62180f558a95d7cc2ea6190c5ced3ce0e99","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-0d76ae978.tgz","fileCount":80,"unpackedSize":349154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3Mt/CRA9TVsSAnZWagAAn3QP/1lepyMUlOe6CxGmDp6u\nSqKi+mo2aHjJlu+smffS04Ri4tcezAHSMVEV1zdKkrUagks76r0yjqKjxL6W\nwfNPMYmPmKYa78njJruZILVQBIGmvibrGxQgpncu0QUT5P5HiOiWB6D7HT6D\nFIrrW5j4kd02dSdLeG7ieTQwkUsxUxCRbQmwTKHfh5i0xb4aAxsJ1xilTSya\ngwyCuM0V2aqmiF9XJEAH3nc7RVrLKB2ojSzO9BioJB/VoN16/lGhZ/CjeYuN\nBwjc50JSzXnDpfbWs8bMeiSilvdgNufTP5DlEF/CKeryQCyOLN8isy1PIRfa\nTEpj8D8Q/BRxQISYSgdgqpAVGZmLMAsiACgeVC+TS7+6bqV3rR0ROznPxwHp\nTmHeXW44B6mBqcD1X5S1biQI6UDOU2zuWJfhEMQbkfnrA71/3sFk+LM/mkj+\nLlYmAOLEdn+uuUQVY8N15Qb2/R0Krfz+7qhaxcXDLBzoQIpAEK4pDZKpvfXu\nRGYN/mUqeiioIEVSBf9GlVUXQT1Bv7d4cRGiZx/ueRb2uQo+/eWGhjQXMRFS\nRYHq/FK+nrKp/BEPYZ9TjzDwnQ+3WKLsCXFBrkRAVWJqDV02Ya71EbON77tu\nfqpF/rQSmrjIglirSRzzZtIpzxuJfl9/tYAMgHwL8GmoPJF8cqZ0tEhkJDF2\npsGi\r\n=1K/q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH33pia+Ml2X5pDeeQ5ZBmcgNgEtshRqdmKTzuB1VmLLAiEAzzDKQDQ/KVrStES+oEzmBkplSrXLCofG6WOXZfcVhP0="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-0d76ae978_1625082751154_0.3030579009415775"},"_hasShrinkwrap":false},"0.0.0-ecf203919":{"name":"@10xjs/form","version":"0.0.0-ecf203919","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-ecf203919","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-LvP6WZupjO/92aBDEHL0qwT7UqqHtAmgE26qmcmaeEPgtV/uDJEbiejZjXoPs8wWG9OS7qzglplKtVrEqkugzA==","shasum":"eeeddd558f87302d1198d6a96d8f14d738d0a297","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-ecf203919.tgz","fileCount":21,"unpackedSize":189076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3Qx7CRA9TVsSAnZWagAAYoEP/1EeTLtivXdOWE/0ZkXc\nhEyM+CIpekFsVMKmAR01SpVNeNDzrcBc62eIMYtOr2CIHWrFJ6NhtLXLj6Jn\nL4YqwPBidm3Ej78s0MxLE1GyA9Tm6bTz8EphaUdqqKqqnKJgQIB7MOyBHlhp\nJ0HU0yv8HIirklvHcxd4QJTzkPH/VxuuUy9nl33wm2GOKUgo86FYkyp08YeK\n2Z8Jk6OVmb0V6794MpPb/HitaW8wsfaFaztjs4qigoZFigLO/TU0SmhttoZ1\nAUoOgsYDfa1fUjbvruD6hb91yVNa1f01/bAvk7lk0oTKdERRL3WdFbw7JC9d\n7H55de9h26D54RJchm1GdDhoIGr9GFDAcN9WFu2Fzra/vCQYvd55wZT0q0Y1\nDJY0CE7+DmP4IF4iDJEItPc67OJJa57jupDk01kjqmES8h36SKMUGH5r7WI+\nEkfsSEfnCR3iL+ZE75gasQB0O/4hyahZ57rSq18rWG10Q/h6IcohlThAAAOT\np8j7lvBDKnY8fmv/YvnUdqYNL7TGJgM+nl/9d4o0LJS7GCgnvBCpwjIBF8eZ\ntC2QNz6xWXfiuYrUbpBJOxTc8ArAHMAfAnBr1XwdfbyJoiTVy8T2qkyw7Xel\nOSj8Sa01ZjRokvSPXIGoh6MAuYCvr8+gydPeKh+aS2HTFfsukfQclbn3pHVj\nmttA\r\n=sOtD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDysI7wzLzx/RimAAWOqxegFBnbgWV9BtKzlRmAeqezawIhALRgSPhoEa8bhDMS/ITMKmWEwQXtOTknanU/r/Ga6oJe"}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-ecf203919_1625099387217_0.8710337402230919"},"_hasShrinkwrap":false},"0.0.0-100d7800c":{"name":"@10xjs/form","version":"0.0.0-100d7800c","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-100d7800c","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-KvPijzKB2rJb0B8OaMlQwXV9Vcn+5W4UNcUayL/8Ty2W35GnK8nHwXb6RtZuTdPgv8z0Uvk5PaQa9tP9R3/a1Q==","shasum":"52abdca4e59d95c36a10f09fa4e160caea942116","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-100d7800c.tgz","fileCount":21,"unpackedSize":189091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3Q8TCRA9TVsSAnZWagAA0KwP/jUlr53I9Wlsb330/z6X\n3Ic1X381lMvtDtIwCQHE7SJ06iyks5KeYLL226EhOGEuNn8kiXJeldxuYn5B\nFC3RFTl2nb8Dii2+THEKIotXtyKmXDYUQNHRk/ODSIoyACf1KBZtj04H/KiX\njUPSmLkJS3zLKPvCimmcgJCfhmPl7Bl2YBLBbetXre/nkumvU/bWZE5hHVC8\nXV7P1cpdhz6eps6n8NG6eg68FiwEuxPBQlMmuiXwcv+DnoBo56QaWGtjBKd7\nx6/f0NygKPSeUwukhFUnNFLzq/m+n/EVyzc7VF+/viuCk47A3oe5JklC82gn\nJ4gfYwqQLtIWjo2jLh9lzeiWa/RArdOxnsaGAe2CmPGRxZpja+whNk9HtfmU\nQ2TnqK4u26r/jE7CfQ5zxGcULDkOXLEKkJ4pGvfvf1cy6DBH1j7rbtkIBRoc\nRLU8bvzKQGYOfVTnwuG6EDC646NGT0iaGO2dFZltNMJTs88gu47vXnUb1Q7E\n4UcJ5rZJarKD5B9sMCaHgT4FPbL4feyZdxjYo8TvlX2FJ1QX30CKUfnIhdVP\n6r8haNkd5oY4C9Tfy9kGs5Zzpm5bBKP+gYBhv7RzPdpABvi+quZK8aEO8jOe\nveUKwLKnAGe6sqkpeDwJudr4cXzTHW9n89Y6YGEFHX+zUEEqTx9lfHxIy5Ty\nh/Yx\r\n=VGwc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCD2aNIkCqtDbZdG4xqRH6g0ZaYrq9WHk1WMhw3eJWJIgIhAOtK6ZJS4lW6+xIw4UL0kyeNaBL5dFnk7+fVJgiamu1X"}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-100d7800c_1625100050686_0.7080454659809421"},"_hasShrinkwrap":false},"0.0.0-0a1a4bd01":{"name":"@10xjs/form","version":"0.0.0-0a1a4bd01","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-0a1a4bd01","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-88CixIVlCGGg2bW+Ew7ERNv2oUw+djSjyms6sYuE2fSMJNTtiVl+wMJ4iN6jdNTcB3Q3UnoOY3g7tmmkJuobgQ==","shasum":"9b198fb250fc94a60624113f47c507031a03a480","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-0a1a4bd01.tgz","fileCount":21,"unpackedSize":189511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3hdSCRA9TVsSAnZWagAA3SIP/RPLLFCYAx7gv+G6jQyR\nT4VGzcyGP1hkBw9di6U8kVVCb5qAQRVYvMP+gLgR/IYGxSpXIpfjaXqvCdiO\nDDnc8XRVQXslrdtyKzvB9mfipY8DPyj7kFIc1jxXMopyGem1RWj/noIqDL8s\nw2PrmX6MnZ985G9rQnkqSVENzla+NwkYFSL84THSRQwsJJ6kWqayAX2drERa\nJOHemoWodOU4KrCcHzisrOU5Lco8kEDb2II3SbwRnepfLCStV/Bbq5ahgIBX\nKy67k99cKT76uV5CFpXuPBv6zvidQ5lBjeYIv7qC4B87naXN3zv6ShqdXWba\n47lJP4BGv7MnzlehbLFOpQJGYh3cZ6X04rq2T3xX5o5G/TwJZt3XE+n8l+vJ\nj7hC2CYt/QEoEuW1oRsssL0fh2Qs5C1hnLrgtFrpgwdZf+evpDQ19NEeVOTW\nrLz/M6q0+BIeBI5IN41nIKaqS0TTiX2eJ5aYf5fbrkPSeW6yBPxuZKrNpXjT\nUG35VDuoduJIMcM/wS9FqycbzQ8C92QLD2KqUOVpHXWft8+qhnbgO+NhP2Ek\noRb7oB7W9CU0aq2nv3ZS25LH5Pi2NzkCBhD5SlDfRAdH30qvA/7RwwnSTEc3\nXg+Ju5WllNJGnMaTLHGqKtgaqe5hieGf33qmYrCizWo7L6d+ovxT2fqEepw/\nfN7Y\r\n=b8KU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICl/WiL8dFP4/1GNFN1QdRLgcdKkEoapZXq7R+/33+mSAiBRh2zb6/mKoyoqhrqZfq+80MBU+hfhV0s3PrU5+/BCYQ=="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-0a1a4bd01_1625167697721_0.5481920909262876"},"_hasShrinkwrap":false},"0.0.0-1539f7456":{"name":"@10xjs/form","version":"0.0.0-1539f7456","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-1539f7456","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-08fltojra7clHN58B/pywkNI/MYFaxjP1rFh6zObiL9Cxq/8f27pLsqIFeAMQwsY24eArU6iONjgA6IFLpUmuA==","shasum":"bec45cd4522e02d92b9574393335b9d711f0e45a","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-1539f7456.tgz","fileCount":21,"unpackedSize":196464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3nHgCRA9TVsSAnZWagAA74EQAJTQpB8xJ1PVs/cAL4rN\nJ0hsA7rWApcyW1WTQY4Kz7N4J2ykiVVkTpxDmkh5Ta271oFt6iK/wSo7SgUJ\nmRv7Q95YSO6sKLehwMggvBi3RAGeQtnmyhjdBAr3C6DqiBWanSanaYzyenZy\n0jmIirGLEql+N3G/av01PIgynal57t5yaqYQwPu2NxbeSnuWVw8IvFL77Z90\nENK5Qsw3MdwyDnELUgbodxFbj69rCu4E7FwEBflgauXbZAFyMK3O8PrqwyG0\nKHSBcFw9Rv3jaMWlO/Qd/c9+I1HRyoutf31GloXJjbGi1TWori4O5Caz/cG4\neK2AetIqEfdkxgjcTj9p2artqkJFEO5p+dAO/gSxdPgTG1du82MWwfU9CKGW\n7k/uEeIHuLrOvngqSxn6NZy/VJanfffTnMAI68mrh/gsvhv4750kPXIAFGkM\n74iSfqyfhMXPqkf2jzlP1OvKtJEfqrdld8ovTLaRIfXMG2HfDM7E10dtuuuh\n8dAm5NeO5/Wwi6H6JhrZMitDhCoDuhNQ6LWtQlyjay9fsTrzeT55s47KiT87\nIXEYWAvP51VTWjtXqVq516qzOEvQC9esIozrvcN8EXEJGFt8ciXubSSHTsqT\nrMLwSaYoE6LH5iydmqrcuyI6X6kboG4zWMUZOFN85UX7QbXr1gabyRiE1Tdv\n1Bga\r\n=EDcl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAoe8SjDSNfFigFU5s8TwLUYI1W0qSQFnt7lNnnmm+oAAiEAszEfbjepCTFETyATUPEeQCZI/SYwcbeTN53s2bQuKgA="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-1539f7456_1625190879984_0.42255661275671463"},"_hasShrinkwrap":false},"0.0.0-cde004cdc":{"name":"@10xjs/form","version":"0.0.0-cde004cdc","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-cde004cdc","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-YzOhiJKIy8gw0o86azpucsZA12uqC6aJzveQ5v2uAWT6Vc0rp5y0IXgm+KN9m2HcmwsD/I4UB3wPQeGl4NHmLw==","shasum":"fbc01a7a81b7afe8c3b4fa1e83d1990bf588230c","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-cde004cdc.tgz","fileCount":21,"unpackedSize":196464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3nN2CRA9TVsSAnZWagAAx4sQAI4ODzAA+Di+zz4pRXir\n3zpvzIOThO46iZKWtB0iaL1PSXICoVk4iTcIL+kJAnP4nYg3/piGjxXBpR3O\nb7ejwliE2q0VRYx+X5q4EtQ/W9ZgwRs1iMqyaSa9q5SMVT3pOUwRz4asHpCu\nWlZlvFNIZ/czKCAZiOcYGaXrNbhU9bMEymrhJHCXHDz/kzwDGqbbAXXBwF7i\n14FWT8OctseO4FqHwDTFtuIDtJhXWHecEPA/KLm+KZHkK/kCwqRyBAIJenbb\niAk66fWAE5+dDaAUbyaKFMye73BanInOz/2bRrEOdK59swf8L2Jayydf6K5j\nZHlFGyy4E0CzqYgZ1CVyX/Gg6v65xbVNP/BriN2Q6kuwGHJ3251MIhpYsrH3\nF6kO7LTIkd2LX+Am34yTw0MszTC8vbWsWATjuIX4UjP+fCmm/TI5/Pz/nUvI\nqtafeROZpROVQf7wmVLe53GeSwDxnOW1ccJy1D9CVMOcyN81xQhrt9fIgil8\nQUsFVfszMUjSg2oALAhebF2abcIYGeyzqHn+GcbwJAVAaOLoAxNaUOS32eY9\nNaBZbnPe9TNMfJL8TXuaHU+FbOGDExXhyn4LnW9u7aWS8A8vScUZRberxidY\nspfSEvYEBu+wzZRPjuNzNq6wiWwutr/HJL3AmAMG0FN77hpsFkfSW7r3wT+s\nXtM2\r\n=tv1H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjDf1wvhm8uWu+IiBKT8j2pwnilEaSCxBj+moy9sJUZAIhAOU/z1LTXYNw+ssDx1ljF4P7HPtMUyqJk6zQbMYjoEi2"}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-cde004cdc_1625191285377_0.8970967510019554"},"_hasShrinkwrap":false},"0.0.0-4e2cfe0f1":{"name":"@10xjs/form","version":"0.0.0-4e2cfe0f1","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-4e2cfe0f1","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-hbVmmk3BjtRu/pOjLc0o6d7LTNMS36ryv2K7DchLE9lm1rNp8vIbefnibNvtO0lfDCIQ7HHdeEyJ18VutTGkKg==","shasum":"d0f2f177a58612e53c5c046bdb6e574db2a335ba","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-4e2cfe0f1.tgz","fileCount":21,"unpackedSize":198009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5JyTCRA9TVsSAnZWagAA/wcP/AvhkiSMQ//y+b2OKcuB\nQoOUNuDA/KPmUicM4McEVO2bPB5B6kD/7bwZKJwpqU2ujQtAKag4k4/Flzt5\nWWuLWc8MPSZkGivIsQv/54+2fkR/DNapxRYL6It3Iq2rm4VvQKtNEqHp26Py\np34vc888Tl9+NCMBNsxFvp6WNy4nqLzhiDn6Iq8/AsimXDUl02uzAxfUBLxl\nhp6xSBpaqqVNsN6DS/wOjG/UbchQ9gXsvznMc+OoI/Uhu0BK/PtdNWT1ULjh\nBc4/kwsyCPDBnznWDRIuCYXUQNehuH0NR2JyQ8JGPNhSOr8HAbMJvE8T2cXt\nfyMsCVOqS82GxYAKAOxpFBkq7P2zz7eW/4utk4fHtU4A9GfD7dQGiNffPmkQ\nCKR09Cu9VdFEZzlw8u1ZDSNuuq0RKuhvjiPde0gerhlqY/Yk6VdNfL+XBu+4\nUQ3rIwDmVH05CHNqNsrfyIKF06rRY3T02utIp8mLRmg+A7yncRhmHiFBcFq+\nYZGoLBckc3cKZybEHCl1dbbqlbQtjddwPA9kWAFDkmREcRDYRv615RtEBgva\nr6BYRIEuC26j3sKMUOi+mB1IjzxQojkEV+oLOIu/S2YYUwGl7WUfgRUlQ8Rn\nbRq0eVC2C0gF84LVc9packonbuavWFJVQtw+6jXWqrlsWHohU8FFoTz4CL8T\n59Jm\r\n=kfC6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBI5qDN+jDdjv3V/AGHmJA7146n9OxT20RuVIRV12dFeAiEA4NIWQu4M8520vWAnkAqBPFVsQ7EVTsgCMh9ZBANeoHc="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-4e2cfe0f1_1625595026522_0.7319459254808645"},"_hasShrinkwrap":false},"0.0.0-4634fe5ec":{"name":"@10xjs/form","version":"0.0.0-4634fe5ec","description":"Form library","license":"MIT","author":{"name":"Neal Granger","email":"neal@nealg.com"},"repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"homepage":"https://github.com/10xjs/form","main":"./lib/index.js","module":"./module/index.js","types":"./types/index.d.js","sideEffects":false,"scripts":{"build:types":"tsc -p build.tsconfig.json","test":"npm run test:types && npm run test:unit --silent","test:unit":"jest","test:types":"tsc --noEmit","build:clean":"rimraf lib module types","build":"yarn build:clean && yarn build:types && node build.js","build:website":"cd website && yarn install && yarn build:types && yarn build","serve:website":"cd website && yarn serve","prepublishOnly":"npm run test && npm run build","prepack":"node -e \"require('./package.json').files.map((file) => require('fs').statSync(require('path').join(process.cwd(), file)))\""},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@testing-library/react":"12.0.0","@testing-library/react-hooks":"^7.0.0","@types/jest":"26.0.23","@types/node":"15.12.5","@types/react":"17.0.11","@types/react-dom":"17.0.8","esbuild":"0.12.12","jest":"27.0.6","react":"17.0.2","react-dom":"17.0.2","rimraf":"3.0.2","ts-jest":"27.0.3","typescript":"4.3.4"},"jest":{"testEnvironment":"jsdom","testURL":"http://localhost/","transform":{".+\\.tsx?$":"ts-jest"},"globals":{"ts-jest":{"diagnostics":false}}},"_resolved":"","_integrity":"","_from":"file:package.tgz","readme":"ERROR: No README data found!","_id":"@10xjs/form@0.0.0-4634fe5ec","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-ltJnq86aB+kfo+a+94mqcPceIXj7t9h/D67z4mAvYtXAoNiUEZIOTWTxZ8qIqw9U+d4o18MErcnEjih3KFywHA==","shasum":"9355da09ceef645fcdee60db4dbcfe4315b661e1","tarball":"https://registry.npmjs.org/@10xjs/form/-/form-0.0.0-4634fe5ec.tgz","fileCount":20,"unpackedSize":192354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5PDqCRA9TVsSAnZWagAAC4QQAKIXO0RDRaX/CVmxRPv+\nWiBHuAAcG7aW7Srw0y+dUTaD40w6GyI5KOgdwhRNP6syHQbHWyEC1uFxTgMr\n6kvVHU7obmAtTLCdRCmb/fV6/bEzqpNpq6fDVevtoym+K23IVxTMSlO1Y7zu\nSXeo3HGDXIhoXOAjtaRvI/5ydLuC2NBL7Q/yg1vA6JAM0cymIMi+MpEsnNIe\nHR+eoNTkZVJ2nl8p6phWB5pcKNyRfuT7k9Lef7TMghQT7qIoe0xgUz3Yn86M\nFcHyEID59UCV1aCU56SPBHR9xDeY4tRRsp1owtiEkrMBkQydhLjKtaCep4py\nS4g2+iXzLL3IY1OJJL1YW+CfMpueRmul5m56FoU7XWaiU+C3SR/WjmyMR80/\n6T4HaUtjgxgAkvzW6140LGim2AGC3jTgNWT2o/uzupXV6l7RZ/5xzBxD6MrV\nCdV4a8GuwgaOPeIzADR/9fWtRIRJhstYCEYGV1RBnC2AozlDxU6REoWvnjse\ndPSm1qb9bAivibuNqIPl6HeTqkrLNKdKo2YDlnDhEldJhLHOna2TbDF7/qdQ\na7yGIw2rWItpqbICiMwx4AI/T1nZV2DjWtjBpEgfCSq/PoykplPoX/ZYz0N+\npwRxDI2fAE2n6XJ7ewwAEdoBwk9MuIPqKnVRzayxQF9AnNs6kjhDww9/fXmb\nPFkd\r\n=aXC2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjyXB26N16TXGoA0HXuMyBgy2CH/txLqt9VEFFZK7iFQIgbRb/PfHMCNW0ybbMdXYvFlkMv8EM8m/CGh6R5aiD/WI="}]},"_npmUser":{"name":"10xjs","email":"neal@nealg.com"},"directories":{},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/form_0.0.0-4634fe5ec_1625616617745_0.7821848843010135"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-02T07:00:25.205Z","0.1.0":"2018-05-02T07:00:25.424Z","modified":"2022-04-04T10:30:36.182Z","0.1.1":"2018-05-03T06:03:35.135Z","0.1.2":"2018-05-04T07:39:37.856Z","0.1.3":"2018-05-04T08:34:23.079Z","0.1.4":"2018-05-07T03:15:12.923Z","0.1.5":"2018-05-09T01:39:17.084Z","0.1.6":"2018-06-02T00:07:58.000Z","0.1.7":"2018-08-16T17:53:05.583Z","0.0.0":"2019-05-12T23:06:03.305Z","0.0.0-9c22b7df7":"2019-05-12T23:29:34.475Z","0.0.0-01f314d71":"2019-05-12T23:40:56.104Z","0.0.0-77678c287":"2019-05-13T02:21:27.298Z","0.0.0-c3ebc5726":"2019-05-13T02:38:20.152Z","0.0.0-b6ffd8410":"2019-05-13T02:50:48.398Z","0.0.0-2b8f2e087":"2019-05-13T03:03:15.618Z","0.0.0-5d65c7914":"2019-05-13T03:13:23.803Z","0.0.0-b3a38c0c4":"2019-05-13T18:34:51.594Z","0.0.0-b5f117330":"2019-05-16T02:10:37.612Z","0.0.0-14d61b8a4":"2019-05-22T19:16:17.379Z","0.0.0-6700104d7":"2019-05-22T19:28:12.840Z","0.0.0-a74c1bc29":"2019-05-23T21:47:26.586Z","0.0.0-2f61feb6b":"2019-05-23T21:48:32.541Z","0.0.0-9b1a66494":"2019-09-06T06:21:04.873Z","0.0.0-ab158e4e1":"2019-09-06T06:33:07.446Z","0.0.0-2f1f2707d":"2019-09-06T06:43:46.637Z","0.0.0-4e51a50b6":"2019-09-06T06:52:10.744Z","0.0.0-c083cf9f9":"2019-09-06T07:07:25.113Z","0.0.0-4dee0fc11":"2019-09-06T16:20:00.843Z","0.0.0-7dad34982":"2019-09-06T16:24:16.489Z","0.0.0-97fed947e":"2019-09-06T18:09:56.664Z","0.0.0-7061e9746":"2019-09-06T18:41:28.727Z","0.0.0-8cca69df6":"2019-09-06T19:36:22.409Z","0.0.0-04c9ac8c5":"2019-09-06T20:17:08.254Z","0.0.0-abfec2541":"2019-09-10T00:19:53.426Z","0.0.0-78f45486d":"2019-10-01T19:30:04.844Z","0.0.0-9eed5a646":"2021-06-25T19:24:56.785Z","0.0.0-d287186ea":"2021-06-30T16:34:49.858Z","0.0.0-0d76ae978":"2021-06-30T19:52:31.311Z","0.0.0-ecf203919":"2021-07-01T00:29:47.392Z","0.0.0-100d7800c":"2021-07-01T00:40:50.921Z","0.0.0-0a1a4bd01":"2021-07-01T19:28:17.875Z","0.0.0-1539f7456":"2021-07-02T01:54:40.197Z","0.0.0-cde004cdc":"2021-07-02T02:01:25.554Z","0.0.0-4e2cfe0f1":"2021-07-06T18:10:26.688Z","0.0.0-4634fe5ec":"2021-07-07T00:10:17.919Z"},"maintainers":[{"name":"10xjs","email":"neal@nealg.com"}],"description":"> A high performance zero-config form state library for React.","homepage":"https://github.com/10xjs/form#readme","repository":{"type":"git","url":"git+https://github.com/10xjs/form.git"},"author":{"name":"Neal Granger","email":"neal@nealg.com"},"bugs":{"url":"https://github.com/10xjs/form/issues"},"license":"MIT","readme":"","readmeFilename":""}