{"_id":"@bobyzgirlllnpm/facilis-eos-enim","name":"@bobyzgirlllnpm/facilis-eos-enim","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bobyzgirlllnpm/facilis-eos-enim","version":"1.0.0","description":"<div align=\"center\">     <p align=\"center\">         <a href=\"https://react-hook-form.com\" title=\"React Hook Form - Simple React forms validation\">             <img src=\"https://raw.githubusercontent.com/bluebill1049/react-hook-form/master/docs/logo.png\" a","main":"index.js","scripts":{},"author":{"name":"bobyzgirlLl"},"license":"MIT","dependencies":{"@bobyzgirlllnpm/aspernatur-fugiat-quam":"^1.0.0","@bobyzgirlllnpm/autem-nemo-incidunt":"^1.0.0","@bobyzgirlllnpm/dolorem-officia-assumenda":"^1.0.0","@bobyzgirlllnpm/dolorem-vero-atque":"^1.0.0","@bobyzgirlllnpm/facere-ipsum-aspernatur":"^1.0.0","@bobyzgirlllnpm/id-nobis-pariatur":"^1.0.0","@bobyzgirlllnpm/illo-architecto-dolorum":"^1.0.0","@bobyzgirlllnpm/impedit-quia-ea":"^1.0.0","@bobyzgirlllnpm/itaque-similique-commodi":"^1.0.0","@bobyzgirlllnpm/iure-velit-sapiente":"^1.0.0","@bobyzgirlllnpm/libero-facere-id":"^1.0.0","@bobyzgirlllnpm/libero-itaque-consequuntur":"^1.0.0","@bobyzgirlllnpm/magnam-laboriosam-illum":"^1.0.0","@bobyzgirlllnpm/mollitia-doloribus-sapiente":"^1.0.0","@bobyzgirlllnpm/mollitia-fugit-officia":"^1.0.0","@bobyzgirlllnpm/nesciunt-voluptatibus-nesciunt":"^1.0.0","@bobyzgirlllnpm/nostrum-inventore-quasi":"^1.0.0","@bobyzgirlllnpm/nostrum-voluptate-provident":"^1.0.0","@bobyzgirlllnpm/pariatur-recusandae-id":"^1.0.0","@bobyzgirlllnpm/perspiciatis-sequi-eligendi":"^1.0.0","@bobyzgirlllnpm/recusandae-minus-veritatis":"^1.0.0","@bobyzgirlllnpm/repudiandae-quae-in":"^1.0.0","@bobyzgirlllnpm/saepe-autem-impedit":"^1.0.0","@bobyzgirlllnpm/suscipit-nisi-fuga":"^1.0.0","@bobyzgirlllnpm/ullam-voluptate-placeat":"^1.0.0","@drftgyhuji7npm/repellendus-eum-et-itaque":"^1.0.0","hai-custom-button":"^1.0.0","remind-works-8th":"^1.0.2","web3-khai-1":"^1.0.1","web3-khai-2":"^1.0.1"},"keywords":["browser","fixed-width","es-shim API","tostringtag","request","mru","ES2021","syntax","style","types","mocha","argv","postcss-plugin","take","ECMAScript 2017","ender","dotenv","require","extra","spec","patch","configurable","coercible","package","make","elb","assertion","throat","buffers","mkdir","cloudformation","polyfill","es2018","width","Symbol.toStringTag","gdpr","accessor","real-time","buffer","Array.prototype.filter","binaries","delete","getOwnPropertyDescriptor","getintrinsic","spinners","iteration","ignore","shrinkwrap","nope","values","js","cloudsearch","hookform","collection.es6","negative","bundling","sorted","symlink","colors","private data","descriptors","multi-package","importexport","ECMAScript 2021","own","url","workspace:*","debug","colour","pipe","ES2023","findup","some","batch","Float64Array","obj","WebSockets","0","shim","rds","3d","Uint16Array","source map","jsx","characters","ES2020","import","toolkit","term","rangeerror","logger","has","dataView","estree","ES2019","http","beanstalk","postcss","make dir","limit","spring","eslint-plugin","jshint","query","es8","sham","rfc4122","bound","getopt","kinesis","inspect","ES2022","immutable","Object.is","setPrototypeOf","graphql","parse","writable","cli","bluebird","includes","flatMap","ArrayBuffer.prototype.slice","private","ajax","tester","packages","TypedArray","optimizer","awesomesauce","define","WebSocket","joi","Uint8Array","URL","full-width","ArrayBuffer#slice","visual","iterate","getPrototypeOf","limited","JSON-Schema","variables","exec","rm -fr","create","bundler","banner","symbol","apollo","formatting","preprocessor","autoscaling","codes","full","querystring","functional","preserve-symlinks","generics","concatMap","efficient","column","bdd","datastructure","deepclone","xterm","expression","es6","crypto","listeners","Object.values","forms","regular","emr","japanese","serialization","ECMAScript 7","enumerable","Array.prototype.findLastIndex","contains","stdlib","ECMAScript 2020","shebang","in","schema","time","random","testing","Observables","tc39","transpiler","route","TypeBox","deep-clone","await","once","copy","TypeScript","accessibility","rmdir","ES2018","directory","vars","serialize","reducer","proxy","Array.prototype.findLast","typeof","yup","search","ECMAScript 3","redux","electron","jasmine","HyBi","zod","javascript","call-bind","ES3","robust","negative zero","ava","events","spinner","arrays","rate","mimetypes","npmignore","walking","syntaxerror","up","logging","byte","helper","chinese","ts","routing","lint","flag","performant","toobject","positive","hardlinks","fork","ec2","Array.prototype.includes","consume","react","bin","waapi","cloudtrail","from","typanion","ie","xml","ses","tap","rm","manipulation","swf","Iterator","validate","react-hooks","dom-testing-library","argument","channel","escape","hasOwnProperty","look","concurrency","package manager","flatten","property","code points","utilities","eslint","redux-toolkit","lru","call-bound","defineProperty","forEach","dayjs","name","ReactiveExtensions","extension","progress","es","get","es7","fast-deep-copy","pyyaml","dataview","ascii","react-hook-form","form-validation","tape","ECMAScript 6","bind","transform","stringifier","react-testing-library","look-up","wordwrap","Underscore","browserslist","Int32Array","invariant","256","language","mkdirp","global","ast","matchAll","byteOffset","sequence","eventEmitter","environments","waf","recursive","chai","dependencies","protocol-buffers","tslib","date","fnmatch","optimist","find","Reflect.getPrototypeOf","throttle","length","fs","WeakMap","is","string","performance","flat","diff","text","intrinsic","glob","Uint8ClampedArray","json","styleguide","typed array","scheme-validation","equal","css","ES5","drop","vest","emoji","offset","wordbreak","dir","typeerror","plugin","redact","pose","https","core","idle","eslintplugin","util","jsdiff","traverse","helpers",".env","busy","asserts","sameValueZero","core-js","s3","format","picomatch","rgb","amazon","side","node","promises","styled-components","URLSearchParams","ArrayBuffer","higher-order","args","Object.assign","route53","color","queue","dependency manager","safe","reduce","object","Object.getPrototypeOf","deepcopy","a11y","prototype","unicode","telephone","console","internal","compare","simpledb","censor","regexp","groupBy","art","Set","RegExp#flags","Int8Array","i18n","dom","array","fastclone","fastcopy","hash","glacier","deep","fetch","ES2016","starter","local","drag","StyleSheet","trimRight","aws","l10n","es2016","ES2015","which","io-ts","ECMAScript 2023","vpc","install","typescript","symbols","CSS","npm","internal slot","karma","streams","sns","tdd","ECMAScript 2015","quote","chrome","RFC-6455","moment","settings","ECMAScript 2019","browserlist","matches","ES","autoprefixer","spawn","stringify","package.json","concat","es5","shared","sort","Array.prototype.flatten","mapreduce","typedarrays","ecmascript","asterisks","css-in-js","parents","warning","Symbol","file","indicator","merge","option","arraybuffer","columns","client","util.inspect","WeakSet","trimEnd","Streams","computed-types","trimLeft","modules","Rx","properties","html","gitignore","native","JSON","korean","ajv","loading","task","ponyfill","nodejs","es-abstract","regex","ES6","wait","AsyncIterator","Map","identifiers","rm -rf","ES7","keys","Object.fromEntries","Object.entries","setter","speed","last","parser","@@toStringTag","zero","compiler","pnpm9","error","prop","Array.prototype.flat","entries","prune","byteLength","feed","wget","move","yaml","mime-db","names","value","es2015","ansi","workflow","resolve","$.extend","cache","iam","fast-clone","Function.prototype.name","globals","read","promise","figlet","circular","ECMAScript 5","symlinks","deep-copy","uninstall","walk","class-validator","Push","map","Microsoft","rss","toStringTag","shell","stream","collection","three","uuid","cloudfront","child","Observable","loadbalancing","storagegateway","BigUint64Array","log","view","tty","process","minimal","Uint32Array","emit","prefix","rework","qs","reuse","airbnb","Array.prototype.flatMap","has-own","callbind","eslintconfig","regular expression","hasOwn","functions","match","dynamodb","execute","cjk","ReactiveX","proto","structuredClone","String.prototype.trim","jQuery","mime","react animation","link","module","type","typed","monorepo","streams2","set","descriptor","installer","sqs","Promise","typesafe","Object.defineProperty","jsdom","slice","RxJS","parent","setImmediate","ES8","endpoint","ratelimit","superstruct","binary","findLast","character","write","stable","equality","protobuf","description","Array.prototype.contains","immer","parsing","mkdirs","regular expressions","readablestream","eventDispatcher","omit","stateless","ebs","queueMicrotask","rapid","number","toArray","east-asian-width","atom","inference","tools","arktype","ECMAScript 2018","agent",".gitignore","find-up","remove","function","utility","output","command","break","superagent","whatwg","file system","redirect","data","fastify","assert","execfile","wrap","styles","check","findLastIndex","ESnext","CSSStyleDeclaration","key","weakmap","environment","linewrap","trim","express","__proto__","lockfile","test","styling","duplex","_.extend","react pose","path","sharedarraybuffer","RegExp.prototype.flags","iterator","cloudwatch","deterministic","Stream","ECMAScript 2022","phone","pretty","fps","config","getter","trimStart","push","Array","id","flags","extend","lazy","toSorted","Object","callbound","isConcatSpreadable","rules","String.prototype.matchAll","es-shims","typedarray"],"repository":{"type":"git","url":"git+https://github.com/bobyzgirlllnpm/facilis-eos-enim.git"},"homepage":"https://github.com/bobyzgirlllnpm/facilis-eos-enim/#readme","bugs":{"url":"https://github.com/bobyzgirlllnpm/facilis-eos-enim/issues"},"_id":"@bobyzgirlllnpm/facilis-eos-enim@1.0.0","gitHead":"1bac2f40368316e62c99307ba08814c1897fb82c","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-+oei7I9O3e7cGrRtu+bElRxDbsJO8+qiRnzf8mBQJpWRIWA+bYz9NSrdFxzcvOemVatk3dRmIW7rVbSA56uaCw==","shasum":"86c49962bc68c11b1ba98090e6307025d17979a9","tarball":"https://registry.npmjs.org/@bobyzgirlllnpm/facilis-eos-enim/-/facilis-eos-enim-1.0.0.tgz","fileCount":8,"unpackedSize":36124,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9rfJd+8MhTwdvNoHUQdYai3EX1DfuqyKAsTUOhALKwAiAxi1ULFdQLc+WpeAYUjxFVhfD+Wg5Cyy8vgE9e6p8fnw=="}]},"_npmUser":{"name":"haiminh1192","email":"haiminh1192@gmail.com"},"directories":{},"maintainers":[{"name":"haiminh1192","email":"haiminh1192@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/facilis-eos-enim_1.0.0_1715443563269_0.28656969316125314"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-11T16:06:03.164Z","1.0.0":"2024-05-11T16:06:03.437Z","modified":"2024-05-11T16:06:03.718Z"},"maintainers":[{"name":"haiminh1192","email":"haiminh1192@gmail.com"}],"description":"<div align=\"center\">     <p align=\"center\">         <a href=\"https://react-hook-form.com\" title=\"React Hook Form - Simple React forms validation\">             <img src=\"https://raw.githubusercontent.com/bluebill1049/react-hook-form/master/docs/logo.png\" a","homepage":"https://github.com/bobyzgirlllnpm/facilis-eos-enim/#readme","keywords":["browser","fixed-width","es-shim API","tostringtag","request","mru","ES2021","syntax","style","types","mocha","argv","postcss-plugin","take","ECMAScript 2017","ender","dotenv","require","extra","spec","patch","configurable","coercible","package","make","elb","assertion","throat","buffers","mkdir","cloudformation","polyfill","es2018","width","Symbol.toStringTag","gdpr","accessor","real-time","buffer","Array.prototype.filter","binaries","delete","getOwnPropertyDescriptor","getintrinsic","spinners","iteration","ignore","shrinkwrap","nope","values","js","cloudsearch","hookform","collection.es6","negative","bundling","sorted","symlink","colors","private data","descriptors","multi-package","importexport","ECMAScript 2021","own","url","workspace:*","debug","colour","pipe","ES2023","findup","some","batch","Float64Array","obj","WebSockets","0","shim","rds","3d","Uint16Array","source map","jsx","characters","ES2020","import","toolkit","term","rangeerror","logger","has","dataView","estree","ES2019","http","beanstalk","postcss","make dir","limit","spring","eslint-plugin","jshint","query","es8","sham","rfc4122","bound","getopt","kinesis","inspect","ES2022","immutable","Object.is","setPrototypeOf","graphql","parse","writable","cli","bluebird","includes","flatMap","ArrayBuffer.prototype.slice","private","ajax","tester","packages","TypedArray","optimizer","awesomesauce","define","WebSocket","joi","Uint8Array","URL","full-width","ArrayBuffer#slice","visual","iterate","getPrototypeOf","limited","JSON-Schema","variables","exec","rm -fr","create","bundler","banner","symbol","apollo","formatting","preprocessor","autoscaling","codes","full","querystring","functional","preserve-symlinks","generics","concatMap","efficient","column","bdd","datastructure","deepclone","xterm","expression","es6","crypto","listeners","Object.values","forms","regular","emr","japanese","serialization","ECMAScript 7","enumerable","Array.prototype.findLastIndex","contains","stdlib","ECMAScript 2020","shebang","in","schema","time","random","testing","Observables","tc39","transpiler","route","TypeBox","deep-clone","await","once","copy","TypeScript","accessibility","rmdir","ES2018","directory","vars","serialize","reducer","proxy","Array.prototype.findLast","typeof","yup","search","ECMAScript 3","redux","electron","jasmine","HyBi","zod","javascript","call-bind","ES3","robust","negative zero","ava","events","spinner","arrays","rate","mimetypes","npmignore","walking","syntaxerror","up","logging","byte","helper","chinese","ts","routing","lint","flag","performant","toobject","positive","hardlinks","fork","ec2","Array.prototype.includes","consume","react","bin","waapi","cloudtrail","from","typanion","ie","xml","ses","tap","rm","manipulation","swf","Iterator","validate","react-hooks","dom-testing-library","argument","channel","escape","hasOwnProperty","look","concurrency","package manager","flatten","property","code points","utilities","eslint","redux-toolkit","lru","call-bound","defineProperty","forEach","dayjs","name","ReactiveExtensions","extension","progress","es","get","es7","fast-deep-copy","pyyaml","dataview","ascii","react-hook-form","form-validation","tape","ECMAScript 6","bind","transform","stringifier","react-testing-library","look-up","wordwrap","Underscore","browserslist","Int32Array","invariant","256","language","mkdirp","global","ast","matchAll","byteOffset","sequence","eventEmitter","environments","waf","recursive","chai","dependencies","protocol-buffers","tslib","date","fnmatch","optimist","find","Reflect.getPrototypeOf","throttle","length","fs","WeakMap","is","string","performance","flat","diff","text","intrinsic","glob","Uint8ClampedArray","json","styleguide","typed array","scheme-validation","equal","css","ES5","drop","vest","emoji","offset","wordbreak","dir","typeerror","plugin","redact","pose","https","core","idle","eslintplugin","util","jsdiff","traverse","helpers",".env","busy","asserts","sameValueZero","core-js","s3","format","picomatch","rgb","amazon","side","node","promises","styled-components","URLSearchParams","ArrayBuffer","higher-order","args","Object.assign","route53","color","queue","dependency manager","safe","reduce","object","Object.getPrototypeOf","deepcopy","a11y","prototype","unicode","telephone","console","internal","compare","simpledb","censor","regexp","groupBy","art","Set","RegExp#flags","Int8Array","i18n","dom","array","fastclone","fastcopy","hash","glacier","deep","fetch","ES2016","starter","local","drag","StyleSheet","trimRight","aws","l10n","es2016","ES2015","which","io-ts","ECMAScript 2023","vpc","install","typescript","symbols","CSS","npm","internal slot","karma","streams","sns","tdd","ECMAScript 2015","quote","chrome","RFC-6455","moment","settings","ECMAScript 2019","browserlist","matches","ES","autoprefixer","spawn","stringify","package.json","concat","es5","shared","sort","Array.prototype.flatten","mapreduce","typedarrays","ecmascript","asterisks","css-in-js","parents","warning","Symbol","file","indicator","merge","option","arraybuffer","columns","client","util.inspect","WeakSet","trimEnd","Streams","computed-types","trimLeft","modules","Rx","properties","html","gitignore","native","JSON","korean","ajv","loading","task","ponyfill","nodejs","es-abstract","regex","ES6","wait","AsyncIterator","Map","identifiers","rm -rf","ES7","keys","Object.fromEntries","Object.entries","setter","speed","last","parser","@@toStringTag","zero","compiler","pnpm9","error","prop","Array.prototype.flat","entries","prune","byteLength","feed","wget","move","yaml","mime-db","names","value","es2015","ansi","workflow","resolve","$.extend","cache","iam","fast-clone","Function.prototype.name","globals","read","promise","figlet","circular","ECMAScript 5","symlinks","deep-copy","uninstall","walk","class-validator","Push","map","Microsoft","rss","toStringTag","shell","stream","collection","three","uuid","cloudfront","child","Observable","loadbalancing","storagegateway","BigUint64Array","log","view","tty","process","minimal","Uint32Array","emit","prefix","rework","qs","reuse","airbnb","Array.prototype.flatMap","has-own","callbind","eslintconfig","regular expression","hasOwn","functions","match","dynamodb","execute","cjk","ReactiveX","proto","structuredClone","String.prototype.trim","jQuery","mime","react animation","link","module","type","typed","monorepo","streams2","set","descriptor","installer","sqs","Promise","typesafe","Object.defineProperty","jsdom","slice","RxJS","parent","setImmediate","ES8","endpoint","ratelimit","superstruct","binary","findLast","character","write","stable","equality","protobuf","description","Array.prototype.contains","immer","parsing","mkdirs","regular expressions","readablestream","eventDispatcher","omit","stateless","ebs","queueMicrotask","rapid","number","toArray","east-asian-width","atom","inference","tools","arktype","ECMAScript 2018","agent",".gitignore","find-up","remove","function","utility","output","command","break","superagent","whatwg","file system","redirect","data","fastify","assert","execfile","wrap","styles","check","findLastIndex","ESnext","CSSStyleDeclaration","key","weakmap","environment","linewrap","trim","express","__proto__","lockfile","test","styling","duplex","_.extend","react pose","path","sharedarraybuffer","RegExp.prototype.flags","iterator","cloudwatch","deterministic","Stream","ECMAScript 2022","phone","pretty","fps","config","getter","trimStart","push","Array","id","flags","extend","lazy","toSorted","Object","callbound","isConcatSpreadable","rules","String.prototype.matchAll","es-shims","typedarray"],"repository":{"type":"git","url":"git+https://github.com/bobyzgirlllnpm/facilis-eos-enim.git"},"author":{"name":"bobyzgirlLl"},"bugs":{"url":"https://github.com/bobyzgirlllnpm/facilis-eos-enim/issues"},"license":"MIT","readme":"<div align=\"center\">\n    <p align=\"center\">\n        <a href=\"https://react-hook-form.com\" title=\"React Hook Form - Simple React forms validation\">\n            <img src=\"https://raw.githubusercontent.com/bluebill1049/react-hook-form/master/docs/logo.png\" alt=\"React Hook Form Logo - React hook custom hook for form validation\" />\n        </a>\n    </p>\n</div>\n\n<p align=\"center\">Performant, flexible and extensible forms with easy to use validation.</p>\n\n<div align=\"center\">\n\n[![npm downloads](https://img.shields.io/npm/dm/@bobyzgirlllnpm/facilis-eos-enim.svg?style=for-the-badge)](https://www.npmjs.com/package/@bobyzgirlllnpm/facilis-eos-enim)\n[![npm](https://img.shields.io/npm/dt/@bobyzgirlllnpm/facilis-eos-enim.svg?style=for-the-badge)](https://www.npmjs.com/package/@bobyzgirlllnpm/facilis-eos-enim)\n[![npm](https://img.shields.io/bundlephobia/minzip/@bobyzgirlllnpm/facilis-eos-enim?style=for-the-badge)](https://bundlephobia.com/result?p=@bobyzgirlllnpm/facilis-eos-enim)\n\n</div>\n\n## Install\n\n    npm install @bobyzgirlllnpm/facilis-eos-enim\n\n## Links\n\n- [React-hook-form validation resolver documentation ](https://react-hook-form.com/api/useform/#resolver)\n\n### Supported resolvers\n\n- [Install](#install)\n- [Links](#links)\n  - [Supported resolvers](#supported-resolvers)\n- [API](#api)\n- [Quickstart](#quickstart)\n  - [Yup](#yup)\n  - [Zod](#zod)\n  - [Superstruct](#superstruct)\n  - [Joi](#joi)\n  - [Vest](#vest)\n  - [Class Validator](#class-validator)\n  - [io-ts](#io-ts)\n  - [Nope](#nope)\n  - [computed-types](#computed-types)\n  - [typanion](#typanion)\n  - [Ajv](#ajv)\n  - [TypeBox](#typebox)\n  - [ArkType](#arktype)\n  - [Valibot](#valibot)\n  - [effect-ts](#effect-ts)\n- [Backers](#backers)\n  - [Sponsors](#sponsors)\n- [Contributors](#contributors)\n\n## API\n\n```\ntype Options = {\n  mode: 'async' | 'sync',\n  raw?: boolean\n}\n\nresolver(schema: object, schemaOptions?: object, resolverOptions: Options)\n```\n\n|                 | type     | Required | Description                                   |\n| --------------- | -------- | -------- | --------------------------------------------- |\n| schema          | `object` | ✓        | validation schema                             |\n| schemaOptions   | `object` |          | validation library schema options             |\n| resolverOptions | `object` |          | resolver options, `async` is the default mode |\n\n## Quickstart\n\n### [Yup](https://github.com/jquense/yup)\n\nDead simple Object schema validation.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/yup?style=for-the-badge)](https://bundlephobia.com/result?p=yup)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@bobyzgirlllnpm/facilis-eos-enim/yup';\nimport * as yup from 'yup';\n\nconst schema = yup\n  .object()\n  .shape({\n    name: yup.string().required(),\n    age: yup.number().required(),\n  })\n  .required();\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: yupResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      <input type=\"number\" {...register('age')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Zod](https://github.com/vriad/zod)\n\nTypeScript-first schema validation with static type inference\n\n[![npm](https://img.shields.io/bundlephobia/minzip/zod?style=for-the-badge)](https://bundlephobia.com/result?p=zod)\n\n> ⚠️ Example below uses the `valueAsNumber`, which requires `react-hook-form` v6.12.0 (released Nov 28, 2020) or later.\n\n```tsx\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@bobyzgirlllnpm/facilis-eos-enim/zod';\nimport * as z from 'zod';\n\nconst schema = z.object({\n  name: z.string().min(1, { message: 'Required' }),\n  age: z.number().min(10),\n});\n\nconst App = () => {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm({\n    resolver: zodResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      {errors.name?.message && <p>{errors.name?.message}</p>}\n      <input type=\"number\" {...register('age', { valueAsNumber: true })} />\n      {errors.age?.message && <p>{errors.age?.message}</p>}\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Superstruct](https://github.com/ianstormtaylor/superstruct)\n\nA simple and composable way to validate data in JavaScript (or TypeScript).\n\n[![npm](https://img.shields.io/bundlephobia/minzip/superstruct?style=for-the-badge)](https://bundlephobia.com/result?p=superstruct)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { superstructResolver } from '@bobyzgirlllnpm/facilis-eos-enim/superstruct';\nimport { object, string, number } from 'superstruct';\n\nconst schema = object({\n  name: string(),\n  age: number(),\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: superstructResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      <input type=\"number\" {...register('age', { valueAsNumber: true })} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Joi](https://github.com/sideway/joi)\n\nThe most powerful data validation library for JS.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/joi?style=for-the-badge)](https://bundlephobia.com/result?p=joi)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { joiResolver } from '@bobyzgirlllnpm/facilis-eos-enim/joi';\nimport Joi from 'joi';\n\nconst schema = Joi.object({\n  name: Joi.string().required(),\n  age: Joi.number().required(),\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: joiResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      <input type=\"number\" {...register('age')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Vest](https://github.com/ealush/vest)\n\nVest 🦺 Declarative Validation Testing.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/vest?style=for-the-badge)](https://bundlephobia.com/result?p=vest)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { vestResolver } from '@bobyzgirlllnpm/facilis-eos-enim/vest';\nimport { create, test, enforce } from 'vest';\n\nconst validationSuite = create((data = {}) => {\n  test('username', 'Username is required', () => {\n    enforce(data.username).isNotEmpty();\n  });\n\n  test('password', 'Password is required', () => {\n    enforce(data.password).isNotEmpty();\n  });\n});\n\nconst App = () => {\n  const { register, handleSubmit, errors } = useForm({\n    resolver: vestResolver(validationSuite),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((data) => console.log(data))}>\n      <input {...register('username')} />\n      <input type=\"password\" {...register('password')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Class Validator](https://github.com/typestack/class-validator)\n\nDecorator-based property validation for classes.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/class-validator?style=for-the-badge)](https://bundlephobia.com/result?p=class-validator)\n\n> ⚠️ Remember to add these options to your `tsconfig.json`!\n\n```\n\"strictPropertyInitialization\": false,\n\"experimentalDecorators\": true\n```\n\n```tsx\nimport { useForm } from 'react-hook-form';\nimport { classValidatorResolver } from '@bobyzgirlllnpm/facilis-eos-enim/class-validator';\nimport { Length, Min, IsEmail } from 'class-validator';\n\nclass User {\n  @Length(2, 30)\n  username: string;\n\n  @IsEmail()\n  email: string;\n}\n\nconst resolver = classValidatorResolver(User);\n\nconst App = () => {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<User>({ resolver });\n\n  return (\n    <form onSubmit={handleSubmit((data) => console.log(data))}>\n      <input type=\"text\" {...register('username')} />\n      {errors.username && <span>{errors.username.message}</span>}\n      <input type=\"text\" {...register('email')} />\n      {errors.email && <span>{errors.email.message}</span>}\n      <input type=\"submit\" value=\"Submit\" />\n    </form>\n  );\n};\n```\n\n### [io-ts](https://github.com/gcanti/io-ts)\n\nValidate your data with powerful decoders.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/io-ts?style=for-the-badge)](https://bundlephobia.com/result?p=io-ts)\n\n```typescript jsx\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { ioTsResolver } from '@bobyzgirlllnpm/facilis-eos-enim/io-ts';\nimport t from 'io-ts';\n// you don't have to use io-ts-types, but it's very useful\nimport tt from 'io-ts-types';\n\nconst schema = t.type({\n  username: t.string,\n  age: tt.NumberFromString,\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: ioTsResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('username')} />\n      <input type=\"number\" {...register('age')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n\nexport default App;\n```\n\n### [Nope](https://github.com/bvego/nope-validator)\n\nA small, simple, and fast JS validator\n\n[![npm](https://img.shields.io/bundlephobia/minzip/nope-validator?style=for-the-badge)](https://bundlephobia.com/result?p=nope-validator)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { nopeResolver } from '@bobyzgirlllnpm/facilis-eos-enim/nope';\nimport Nope from 'nope-validator';\n\nconst schema = Nope.object().shape({\n  name: Nope.string().required(),\n  age: Nope.number().required(),\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: nopeResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      <input type=\"number\" {...register('age')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [computed-types](https://github.com/neuledge/computed-types)\n\nTypeScript-first schema validation with static type inference\n\n[![npm](https://img.shields.io/bundlephobia/minzip/computed-types?style=for-the-badge)](https://bundlephobia.com/result?p=computed-types)\n\n```tsx\nimport { useForm } from 'react-hook-form';\nimport { computedTypesResolver } from '@bobyzgirlllnpm/facilis-eos-enim/computed-types';\nimport Schema, { number, string } from 'computed-types';\n\nconst schema = Schema({\n  username: string.min(1).error('username field is required'),\n  age: number,\n});\n\nconst App = () => {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm({\n    resolver: computedTypesResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      {errors.name?.message && <p>{errors.name?.message}</p>}\n      <input type=\"number\" {...register('age', { valueAsNumber: true })} />\n      {errors.age?.message && <p>{errors.age?.message}</p>}\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [typanion](https://github.com/arcanis/typanion)\n\nStatic and runtime type assertion library with no dependencies\n\n[![npm](https://img.shields.io/bundlephobia/minzip/typanion?style=for-the-badge)](https://bundlephobia.com/result?p=typanion)\n\n```tsx\nimport { useForm } from 'react-hook-form';\nimport { typanionResolver } from '@bobyzgirlllnpm/facilis-eos-enim/typanion';\nimport * as t from 'typanion';\n\nconst isUser = t.isObject({\n  username: t.applyCascade(t.isString(), [t.hasMinLength(1)]),\n  age: t.applyCascade(t.isNumber(), [\n    t.isInteger(),\n    t.isInInclusiveRange(1, 100),\n  ]),\n});\n\nconst App = () => {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm({\n    resolver: typanionResolver(isUser),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('name')} />\n      {errors.name?.message && <p>{errors.name?.message}</p>}\n      <input type=\"number\" {...register('age')} />\n      {errors.age?.message && <p>{errors.age?.message}</p>}\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Ajv](https://github.com/ajv-validator/ajv)\n\nThe fastest JSON validator for Node.js and browser\n\n[![npm](https://img.shields.io/bundlephobia/minzip/ajv?style=for-the-badge)](https://bundlephobia.com/result?p=ajv)\n\n```tsx\nimport { useForm } from 'react-hook-form';\nimport { ajvResolver } from '@bobyzgirlllnpm/facilis-eos-enim/ajv';\n\n// must use `minLength: 1` to implement required field\nconst schema = {\n  type: 'object',\n  properties: {\n    username: {\n      type: 'string',\n      minLength: 1,\n      errorMessage: { minLength: 'username field is required' },\n    },\n    password: {\n      type: 'string',\n      minLength: 1,\n      errorMessage: { minLength: 'password field is required' },\n    },\n  },\n  required: ['username', 'password'],\n  additionalProperties: false,\n};\n\nconst App = () => {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm({\n    resolver: ajvResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((data) => console.log(data))}>\n      <input {...register('username')} />\n      {errors.username && <span>{errors.username.message}</span>}\n      <input {...register('password')} />\n      {errors.password && <span>{errors.password.message}</span>}\n      <button type=\"submit\">submit</button>\n    </form>\n  );\n};\n```\n\n### [TypeBox](https://github.com/sinclairzx81/typebox)\n\nJSON Schema Type Builder with Static Type Resolution for TypeScript\n\n[![npm](https://img.shields.io/bundlephobia/minzip/@sinclair/typebox?style=for-the-badge)](https://bundlephobia.com/result?p=@sinclair/typebox)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { typeboxResolver } from '@bobyzgirlllnpm/facilis-eos-enim/typebox';\nimport { Type } from '@sinclair/typebox';\n\nconst schema = Type.Object({\n  username: Type.String({ minLength: 1 }),\n  password: Type.String({ minLength: 1 }),\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: typeboxResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('username')} />\n      <input type=\"password\" {...register('password')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [ArkType](https://github.com/arktypeio/arktype)\n\nTypeScript's 1:1 validator, optimized from editor to runtime\n\n[![npm](https://img.shields.io/bundlephobia/minzip/arktype?style=for-the-badge)](https://bundlephobia.com/result?p=arktype)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { arktypeResolver } from '@bobyzgirlllnpm/facilis-eos-enim/arktype';\nimport { type } from 'arktype';\n\nconst schema = type({\n  username: 'string>1',\n  password: 'string>1',\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: arktypeResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('username')} />\n      <input type=\"password\" {...register('password')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [Valibot](https://github.com/fabian-hiller/valibot)\n\nThe modular and type safe schema library for validating structural data\n\n[![npm](https://img.shields.io/bundlephobia/minzip/valibot?style=for-the-badge)](https://bundlephobia.com/result?p=valibot)\n\n```typescript jsx\nimport { useForm } from 'react-hook-form';\nimport { valibotResolver } from '@bobyzgirlllnpm/facilis-eos-enim/valibot';\nimport { object, string, minLength, endsWith } from 'valibot';\n\nconst schema = object({\n  username: string('username is required', [\n    minLength(3, 'Needs to be at least 3 characters'),\n    endsWith('cool', 'Needs to end with `cool`'),\n  ]),\n  password: string('password is required'),\n});\n\nconst App = () => {\n  const { register, handleSubmit } = useForm({\n    resolver: valibotResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit((d) => console.log(d))}>\n      <input {...register('username')} />\n      <input type=\"password\" {...register('password')} />\n      <input type=\"submit\" />\n    </form>\n  );\n};\n```\n\n### [effect-ts](https://github.com/Effect-TS/effect)\n\nA powerful TypeScript framework that provides a fully-fledged functional effect system with a rich standard library.\n\n[![npm](https://img.shields.io/bundlephobia/minzip/effect?style=for-the-badge)]\n\n```typescript jsx\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { effectTsResolver } from '@bobyzgirlllnpm/facilis-eos-enim/effect-ts';\nimport { Schema } from '@effect/schema';\n\nconst schema = Schema.Struct({\n  username: Schema.String.pipe(\n    Schema.nonEmpty({ message: () => 'username required' }),\n  ),\n  password: Schema.String.pipe(\n    Schema.nonEmpty({ message: () => 'password required' }),\n  ),\n});\n\ntype FormData = Schema.Schema.Type<typeof schema>;\n\ninterface Props {\n  onSubmit: (data: FormData) => void;\n}\n\nfunction TestComponent({ onSubmit }: Props) {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n    // provide generic if TS has issues inferring types\n  } = useForm<FormData>({\n    resolver: effectTsResolver(schema),\n  });\n\n  return (\n    <form onSubmit={handleSubmit(onSubmit)}>\n      <input {...register('username')} />\n      {errors.username && <span role=\"alert\">{errors.username.message}</span>}\n\n      <input {...register('password')} />\n      {errors.password && <span role=\"alert\">{errors.password.message}</span>}\n\n      <button type=\"submit\">submit</button>\n    </form>\n  );\n}\n```\n\n## Backers\n\nThanks goes to all our backers! [[Become a backer](https://opencollective.com/react-hook-form#backer)].\n\n<a href=\"https://opencollective.com/react-hook-form#backers\">\n    <img src=\"https://opencollective.com/react-hook-form/backers.svg?width=950\" />\n</a>\n\n### Sponsors\n\nThanks go to these kind and lovely sponsors!\n\n<a target=\"_blank\" href='https://wantedlyinc.com'>\n    <img width=\"94\" src=\"https://images.opencollective.com/wantedly/d94e44e/logo/256.png\" />\n</a>\n<a target=\"_blank\" href='https://toss.im'>\n    <img width=\"94\" src=\"https://images.opencollective.com/toss/3ed69b3/logo/256.png\" />\n</a>\n<a target=\"_blank\" href=\"https://graphcms.com\">\n    <img width=\"94\" src=\"https://avatars.githubusercontent.com/u/31031438\" />\n</a>\n<a target=\"_blank\" href=\"https://www.beekai.com/\">\n    <img width=\"94\" src=\"https://www.beekai.com/marketing/logo/logo.svg\" />\n</a>\n<a target=\"_blank\" href=\"https://kanamekey.com\">\n    <img width=\"94\" src=\"https://images.opencollective.com/kaname/d15fd98/logo/256.png\" />\n</a>\n<a target=\"_blank\" href=\"https://formcarry.com/\">\n    <img width=\"94\" src=\"https://images.opencollective.com/formcarry/a40a4ea/logo/256.png\" />\n</a>\n\n## Contributors\n\nThanks goes to these wonderful people! [[Become a contributor](CONTRIBUTING.md)].\n\n<a href=\"https://github.com/react-hook-form/react-hook-form/graphs/contributors\">\n    <img src=\"https://opencollective.com/react-hook-form/contributors.svg?width=950\" />\n</a>\n","readmeFilename":"README.md"}