@hookform/resolvers 3.10.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -5
- package/ajv/dist/ajv.js +1 -1
- package/ajv/dist/ajv.js.map +1 -1
- package/ajv/dist/ajv.mjs +1 -1
- package/ajv/dist/ajv.modern.mjs +1 -1
- package/ajv/dist/ajv.modern.mjs.map +1 -1
- package/ajv/dist/ajv.module.js +1 -1
- package/ajv/dist/ajv.module.js.map +1 -1
- package/ajv/dist/ajv.umd.js +1 -1
- package/ajv/dist/ajv.umd.js.map +1 -1
- package/ajv/dist/types.d.ts +8 -0
- package/ajv/src/__tests__/__fixtures__/data-errors.ts +216 -0
- package/ajv/src/__tests__/__snapshots__/ajv-errors.ts.snap +462 -0
- package/ajv/src/__tests__/__snapshots__/ajv.ts.snap +6 -6
- package/ajv/src/__tests__/ajv-errors.ts +227 -0
- package/ajv/src/ajv.ts +27 -14
- package/ajv/src/types.ts +8 -0
- package/arktype/dist/arktype.js +1 -1
- package/arktype/dist/arktype.js.map +1 -1
- package/arktype/dist/arktype.mjs +1 -1
- package/arktype/dist/arktype.modern.mjs +1 -1
- package/arktype/dist/arktype.modern.mjs.map +1 -1
- package/arktype/dist/arktype.module.js +1 -1
- package/arktype/dist/arktype.module.js.map +1 -1
- package/arktype/dist/arktype.umd.js +1 -1
- package/arktype/dist/arktype.umd.js.map +1 -1
- package/arktype/dist/types.d.ts +1 -1
- package/arktype/package.json +1 -1
- package/arktype/src/__tests__/Form-native-validation.tsx +3 -3
- package/arktype/src/__tests__/Form.tsx +2 -2
- package/arktype/src/__tests__/__fixtures__/data.ts +1 -1
- package/arktype/src/__tests__/__snapshots__/arktype.ts.snap +22 -415
- package/arktype/src/arktype.ts +17 -6
- package/arktype/src/types.ts +1 -1
- package/class-validator/dist/class-validator.js +1 -1
- package/class-validator/dist/class-validator.js.map +1 -1
- package/class-validator/dist/class-validator.mjs +1 -1
- package/class-validator/dist/class-validator.modern.mjs +1 -1
- package/class-validator/dist/class-validator.modern.mjs.map +1 -1
- package/class-validator/dist/class-validator.module.js +1 -1
- package/class-validator/dist/class-validator.module.js.map +1 -1
- package/class-validator/dist/class-validator.umd.js +1 -1
- package/class-validator/dist/class-validator.umd.js.map +1 -1
- package/class-validator/dist/types.d.ts +1 -1
- package/class-validator/src/__tests__/class-validator.ts +1 -1
- package/class-validator/src/class-validator.ts +1 -1
- package/class-validator/src/types.ts +1 -1
- package/dist/resolvers.js +1 -1
- package/dist/resolvers.js.map +1 -1
- package/dist/resolvers.mjs +1 -1
- package/dist/resolvers.mjs.map +1 -1
- package/dist/resolvers.module.js +1 -1
- package/dist/resolvers.module.js.map +1 -1
- package/dist/resolvers.umd.js +1 -1
- package/dist/resolvers.umd.js.map +1 -1
- package/effect-ts/dist/effect-ts.js +1 -1
- package/effect-ts/dist/effect-ts.js.map +1 -1
- package/effect-ts/dist/effect-ts.mjs +1 -1
- package/effect-ts/dist/effect-ts.modern.mjs +1 -1
- package/effect-ts/dist/effect-ts.modern.mjs.map +1 -1
- package/effect-ts/dist/effect-ts.module.js +1 -1
- package/effect-ts/dist/effect-ts.module.js.map +1 -1
- package/effect-ts/dist/effect-ts.umd.js +1 -1
- package/effect-ts/dist/effect-ts.umd.js.map +1 -1
- package/effect-ts/src/__tests__/__snapshots__/effect-ts.ts.snap +35 -1
- package/effect-ts/src/__tests__/effect-ts.ts +61 -0
- package/effect-ts/src/effect-ts.ts +31 -6
- package/io-ts/dist/io-ts.js +1 -1
- package/io-ts/dist/io-ts.js.map +1 -1
- package/io-ts/dist/io-ts.mjs +1 -1
- package/io-ts/dist/io-ts.modern.mjs +1 -1
- package/io-ts/dist/io-ts.modern.mjs.map +1 -1
- package/io-ts/dist/io-ts.module.js +1 -1
- package/io-ts/dist/io-ts.module.js.map +1 -1
- package/io-ts/dist/io-ts.umd.js +1 -1
- package/io-ts/dist/io-ts.umd.js.map +1 -1
- package/package.json +46 -34
- package/standard-schema/dist/index.d.ts +2 -0
- package/standard-schema/dist/standard-schema.d.ts +2 -0
- package/standard-schema/dist/standard-schema.js +2 -0
- package/standard-schema/dist/standard-schema.js.map +1 -0
- package/standard-schema/dist/standard-schema.mjs +2 -0
- package/standard-schema/dist/standard-schema.modern.mjs +2 -0
- package/standard-schema/dist/standard-schema.modern.mjs.map +1 -0
- package/standard-schema/dist/standard-schema.module.js +2 -0
- package/standard-schema/dist/standard-schema.module.js.map +1 -0
- package/standard-schema/dist/standard-schema.umd.js +2 -0
- package/standard-schema/dist/standard-schema.umd.js.map +1 -0
- package/standard-schema/dist/types.d.ts +3 -0
- package/standard-schema/package.json +18 -0
- package/standard-schema/src/__tests__/Form-native-validation.tsx +82 -0
- package/standard-schema/src/__tests__/Form.tsx +56 -0
- package/standard-schema/src/__tests__/__fixtures__/data.ts +65 -0
- package/standard-schema/src/__tests__/__snapshots__/standard-schema.ts.snap +63 -0
- package/standard-schema/src/__tests__/standard-schema.ts +28 -0
- package/standard-schema/src/index.ts +2 -0
- package/standard-schema/src/standard-schema.ts +45 -0
- package/standard-schema/src/types.ts +10 -0
- package/superstruct/dist/superstruct.js +1 -1
- package/superstruct/dist/superstruct.js.map +1 -1
- package/superstruct/dist/superstruct.mjs +1 -1
- package/superstruct/dist/superstruct.modern.mjs +1 -1
- package/superstruct/dist/superstruct.modern.mjs.map +1 -1
- package/superstruct/dist/superstruct.module.js +1 -1
- package/superstruct/dist/superstruct.module.js.map +1 -1
- package/superstruct/dist/superstruct.umd.js +1 -1
- package/superstruct/dist/superstruct.umd.js.map +1 -1
- package/superstruct/src/superstruct.ts +1 -1
- package/typebox/src/__tests__/__snapshots__/typebox-compiler.ts.snap +21 -21
- package/typebox/src/__tests__/__snapshots__/typebox.ts.snap +21 -21
- package/typeschema/dist/typeschema.js +1 -1
- package/typeschema/dist/typeschema.js.map +1 -1
- package/typeschema/dist/typeschema.mjs +1 -1
- package/typeschema/dist/typeschema.modern.mjs +1 -1
- package/typeschema/dist/typeschema.modern.mjs.map +1 -1
- package/typeschema/dist/typeschema.module.js +1 -1
- package/typeschema/dist/typeschema.module.js.map +1 -1
- package/typeschema/dist/typeschema.umd.js +1 -1
- package/typeschema/dist/typeschema.umd.js.map +1 -1
- package/typeschema/src/typeschema.ts +3 -1
- package/valibot/dist/valibot.js +1 -1
- package/valibot/dist/valibot.js.map +1 -1
- package/valibot/dist/valibot.mjs +1 -1
- package/valibot/dist/valibot.modern.mjs +1 -1
- package/valibot/dist/valibot.modern.mjs.map +1 -1
- package/valibot/dist/valibot.module.js +1 -1
- package/valibot/dist/valibot.module.js.map +1 -1
- package/valibot/dist/valibot.umd.js +1 -1
- package/valibot/dist/valibot.umd.js.map +1 -1
- package/valibot/package.json +1 -1
- package/valibot/src/__tests__/valibot.ts +1 -1
- package/valibot/src/valibot.ts +3 -1
- package/vine/dist/vine.js +1 -1
- package/vine/dist/vine.js.map +1 -1
- package/vine/dist/vine.mjs +1 -1
- package/vine/dist/vine.modern.mjs +1 -1
- package/vine/dist/vine.modern.mjs.map +1 -1
- package/vine/dist/vine.module.js +1 -1
- package/vine/dist/vine.module.js.map +1 -1
- package/vine/dist/vine.umd.js +1 -1
- package/vine/dist/vine.umd.js.map +1 -1
- package/vine/src/vine.ts +1 -1
- package/yup/dist/yup.js +1 -1
- package/yup/dist/yup.js.map +1 -1
- package/yup/dist/yup.mjs +1 -1
- package/yup/dist/yup.modern.mjs +1 -1
- package/yup/dist/yup.modern.mjs.map +1 -1
- package/yup/dist/yup.module.js +1 -1
- package/yup/dist/yup.module.js.map +1 -1
- package/yup/dist/yup.umd.js +1 -1
- package/yup/dist/yup.umd.js.map +1 -1
- package/yup/src/yup.ts +1 -1
- package/zod/dist/zod.js +1 -1
- package/zod/dist/zod.js.map +1 -1
- package/zod/dist/zod.mjs +1 -1
- package/zod/dist/zod.modern.mjs +1 -1
- package/zod/dist/zod.modern.mjs.map +1 -1
- package/zod/dist/zod.module.js +1 -1
- package/zod/dist/zod.module.js.map +1 -1
- package/zod/dist/zod.umd.js +1 -1
- package/zod/dist/zod.umd.js.map +1 -1
- package/zod/src/zod.ts +1 -1
package/README.md
CHANGED
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
|
|
19
19
|
## Install
|
|
20
20
|
|
|
21
|
+
Install your preferred validation library alongside `@hookform/resolvers`.
|
|
22
|
+
|
|
21
23
|
npm install @hookform/resolvers
|
|
22
24
|
|
|
23
25
|
## Links
|
|
24
26
|
|
|
25
|
-
- [React-hook-form validation resolver documentation ](https://react-hook-form.com/
|
|
27
|
+
- [React-hook-form validation resolver documentation ](https://react-hook-form.com/docs/useform#resolver)
|
|
26
28
|
|
|
27
29
|
### Supported resolvers
|
|
28
30
|
|
|
@@ -51,6 +53,7 @@
|
|
|
51
53
|
- [effect-ts](#effect-ts)
|
|
52
54
|
- [VineJS](#vinejs)
|
|
53
55
|
- [fluentvalidation-ts](#fluentvalidation-ts)
|
|
56
|
+
- [standard-schema](#standard-schema)
|
|
54
57
|
- [Backers](#backers)
|
|
55
58
|
- [Sponsors](#sponsors)
|
|
56
59
|
- [Contributors](#contributors)
|
|
@@ -119,7 +122,7 @@ TypeScript-first schema validation with static type inference
|
|
|
119
122
|
```tsx
|
|
120
123
|
import { useForm } from 'react-hook-form';
|
|
121
124
|
import { zodResolver } from '@hookform/resolvers/zod';
|
|
122
|
-
import
|
|
125
|
+
import { z } from 'zod';
|
|
123
126
|
|
|
124
127
|
const schema = z.object({
|
|
125
128
|
name: z.string().min(1, { message: 'Required' }),
|
|
@@ -626,7 +629,7 @@ Universal adapter for schema validation, compatible with [any validation library
|
|
|
626
629
|
```typescript jsx
|
|
627
630
|
import { useForm } from 'react-hook-form';
|
|
628
631
|
import { typeschemaResolver } from '@hookform/resolvers/typeschema';
|
|
629
|
-
import
|
|
632
|
+
import { z } from 'zod';
|
|
630
633
|
|
|
631
634
|
// Use your favorite validation library
|
|
632
635
|
const schema = z.object({
|
|
@@ -663,10 +666,10 @@ import { Schema } from 'effect';
|
|
|
663
666
|
|
|
664
667
|
const schema = Schema.Struct({
|
|
665
668
|
username: Schema.String.pipe(
|
|
666
|
-
Schema.
|
|
669
|
+
Schema.nonEmptyString({ message: () => 'username required' }),
|
|
667
670
|
),
|
|
668
671
|
password: Schema.String.pipe(
|
|
669
|
-
Schema.
|
|
672
|
+
Schema.nonEmptyString({ message: () => 'password required' }),
|
|
670
673
|
),
|
|
671
674
|
});
|
|
672
675
|
|
|
@@ -777,6 +780,72 @@ const App = () => {
|
|
|
777
780
|
};
|
|
778
781
|
```
|
|
779
782
|
|
|
783
|
+
### [standard-schema](https://github.com/standard-schema/standard-schema)
|
|
784
|
+
|
|
785
|
+
A standard interface for TypeScript schema validation libraries
|
|
786
|
+
|
|
787
|
+
[](https://bundlephobia.com/result?p=@standard-schema/spec)
|
|
788
|
+
|
|
789
|
+
Example zod
|
|
790
|
+
|
|
791
|
+
```typescript jsx
|
|
792
|
+
import { useForm } from 'react-hook-form';
|
|
793
|
+
import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';
|
|
794
|
+
import { z } from 'zod';
|
|
795
|
+
|
|
796
|
+
const schema = z.object({
|
|
797
|
+
name: z.string().min(1, { message: 'Required' }),
|
|
798
|
+
age: z.number().min(10),
|
|
799
|
+
});
|
|
800
|
+
|
|
801
|
+
const App = () => {
|
|
802
|
+
const {
|
|
803
|
+
register,
|
|
804
|
+
handleSubmit,
|
|
805
|
+
formState: { errors },
|
|
806
|
+
} = useForm({
|
|
807
|
+
resolver: standardSchemaResolver(schema),
|
|
808
|
+
});
|
|
809
|
+
|
|
810
|
+
return (
|
|
811
|
+
<form onSubmit={handleSubmit((d) => console.log(d))}>
|
|
812
|
+
<input {...register('name')} />
|
|
813
|
+
{errors.name?.message && <p>{errors.name?.message}</p>}
|
|
814
|
+
<input type="number" {...register('age', { valueAsNumber: true })} />
|
|
815
|
+
{errors.age?.message && <p>{errors.age?.message}</p>}
|
|
816
|
+
<input type="submit" />
|
|
817
|
+
</form>
|
|
818
|
+
);
|
|
819
|
+
};
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
Example arkType
|
|
823
|
+
|
|
824
|
+
```typescript jsx
|
|
825
|
+
import { useForm } from 'react-hook-form';
|
|
826
|
+
import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';
|
|
827
|
+
import { type } from 'arktype';
|
|
828
|
+
|
|
829
|
+
const schema = type({
|
|
830
|
+
username: 'string>1',
|
|
831
|
+
password: 'string>1',
|
|
832
|
+
});
|
|
833
|
+
|
|
834
|
+
const App = () => {
|
|
835
|
+
const { register, handleSubmit } = useForm({
|
|
836
|
+
resolver: standardSchemaResolver(schema),
|
|
837
|
+
});
|
|
838
|
+
|
|
839
|
+
return (
|
|
840
|
+
<form onSubmit={handleSubmit((d) => console.log(d))}>
|
|
841
|
+
<input {...register('username')} />
|
|
842
|
+
<input type="password" {...register('password')} />
|
|
843
|
+
<input type="submit" />
|
|
844
|
+
</form>
|
|
845
|
+
);
|
|
846
|
+
};
|
|
847
|
+
```
|
|
848
|
+
|
|
780
849
|
## Backers
|
|
781
850
|
|
|
782
851
|
Thanks go to all our backers! [[Become a backer](https://opencollective.com/react-hook-form#backer)].
|
package/ajv/dist/ajv.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@hookform/resolvers"),r=require("ajv"),a=require("ajv-errors"),s=require("react-hook-form");function
|
|
1
|
+
var e=require("@hookform/resolvers"),r=require("ajv"),a=require("ajv-errors"),s=require("react-hook-form");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=/*#__PURE__*/o(r),i=/*#__PURE__*/o(a),n=function(e,r){for(var a={},o=function(e){"required"===e.keyword&&(e.instancePath+="/"+e.params.missingProperty);var o=e.instancePath.substring(1).replace(/\//g,".");if(a[o]||(a[o]={message:e.message,type:e.keyword}),r){var t=a[o].types,i=t&&t[e.keyword];a[o]=s.appendErrors(o,r,a,e.keyword,i?[].concat(i,e.message||""):e.message)}},t=function(){var r=e[i];"errorMessage"===r.keyword?r.params.errors.forEach(function(e){e.message=r.message,o(e)}):o(r)},i=0;i<e.length;i+=1)t();return a};exports.ajvResolver=function(r,a,s){return void 0===s&&(s={}),function(o,u,c){try{var l=new t.default(Object.assign({},{allErrors:!0,validateSchema:!0},a));i.default(l);var v=l.compile(Object.assign({$async:s&&"async"===s.mode},r)),d=v(o);return c.shouldUseNativeValidation&&e.validateFieldsNatively({},c),Promise.resolve(d?{values:o,errors:{}}:{values:{},errors:e.toNestErrors(n(v.errors,!c.shouldUseNativeValidation&&"all"===c.criteriaMode),c)})}catch(e){return Promise.reject(e)}}};
|
|
2
2
|
//# sourceMappingURL=ajv.js.map
|
package/ajv/dist/ajv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors:
|
|
1
|
+
{"version":3,"file":"ajv.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { AjvError, Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors: AjvError[],\n validateAllFieldCriteria: boolean,\n) => {\n const parsedErrors: Record<string, FieldError> = {};\n\n const reduceError = (error: AjvError) => {\n // Ajv will return empty instancePath when require error\n if (error.keyword === 'required') {\n error.instancePath += `/${error.params.missingProperty}`;\n }\n\n // `/deepObject/data` -> `deepObject.data`\n const path = error.instancePath.substring(1).replace(/\\//g, '.');\n\n if (!parsedErrors[path]) {\n parsedErrors[path] = {\n message: error.message,\n type: error.keyword,\n };\n }\n\n if (validateAllFieldCriteria) {\n const types = parsedErrors[path].types;\n const messages = types && types[error.keyword];\n\n parsedErrors[path] = appendErrors(\n path,\n validateAllFieldCriteria,\n parsedErrors,\n error.keyword,\n messages\n ? ([] as string[]).concat(messages as string[], error.message || '')\n : error.message,\n ) as FieldError;\n }\n };\n\n for (let index = 0; index < ajvErrors.length; index += 1) {\n const error = ajvErrors[index];\n\n if (error.keyword === 'errorMessage') {\n error.params.errors.forEach((originalError) => {\n originalError.message = error.message;\n reduceError(originalError);\n });\n } else {\n reduceError(error);\n }\n }\n\n return parsedErrors;\n};\n\nexport const ajvResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n const ajv = new Ajv(\n Object.assign(\n {},\n {\n allErrors: true,\n validateSchema: true,\n },\n schemaOptions,\n ),\n );\n\n ajvErrors(ajv);\n\n const validate = ajv.compile(\n Object.assign(\n { $async: resolverOptions && resolverOptions.mode === 'async' },\n schema,\n ),\n );\n\n const valid = validate(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return valid\n ? { values, errors: {} }\n : {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n validate.errors as DefinedError[],\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","ajvErrors","validateAllFieldCriteria","parsedErrors","reduceError","error","keyword","instancePath","params","missingProperty","path","substring","replace","message","type","types","messages","appendErrors","concat","_loop","index","errors","forEach","originalError","length","schema","schemaOptions","resolverOptions","values","_","options","ajv","Ajv","Object","assign","allErrors","validateSchema","validate","compile","$async","mode","valid","shouldUseNativeValidation","validateFieldsNatively","Promise","resolve","toNestErrors","criteriaMode","e","reject"],"mappings":"+NAMMA,EAAmB,SACvBC,EACAC,GAoCA,IAlCA,IAAMC,EAA2C,GAE3CC,EAAc,SAACC,GAEG,aAAlBA,EAAMC,UACRD,EAAME,cAAY,IAAQF,EAAMG,OAAOC,iBAIzC,IAAMC,EAAOL,EAAME,aAAaI,UAAU,GAAGC,QAAQ,MAAO,KAS5D,GAPKT,EAAaO,KAChBP,EAAaO,GAAQ,CACnBG,QAASR,EAAMQ,QACfC,KAAMT,EAAMC,UAIZJ,EAA0B,CAC5B,IAAMa,EAAQZ,EAAaO,GAAMK,MAC3BC,EAAWD,GAASA,EAAMV,EAAMC,SAEtCH,EAAaO,GAAQO,EAAYA,aAC/BP,EACAR,EACAC,EACAE,EAAMC,QACNU,EACK,GAAgBE,OAAOF,EAAsBX,EAAMQ,SAAW,IAC/DR,EAAMQ,QAEd,CACF,EAAEM,EAAA,WAGA,IAAMd,EAAQJ,EAAUmB,GAEF,iBAAlBf,EAAMC,QACRD,EAAMG,OAAOa,OAAOC,QAAQ,SAACC,GAC3BA,EAAcV,QAAUR,EAAMQ,QAC9BT,EAAYmB,EACd,GAEAnB,EAAYC,EAEhB,EAXSe,EAAQ,EAAGA,EAAQnB,EAAUuB,OAAQJ,GAAS,EAACD,IAaxD,OAAOhB,CACT,sBAGE,SAACsB,EAAQC,EAAeC,GAAoB,YAAL,IAAfA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAC3B,IAAMC,EAAM,IAAIC,EAAG,QACjBC,OAAOC,OACL,GACA,CACEC,WAAW,EACXC,gBAAgB,GAElBV,IAIJzB,UAAU8B,GAEV,IAAMM,EAAWN,EAAIO,QACnBL,OAAOC,OACL,CAAEK,OAAQZ,GAA4C,UAAzBA,EAAgBa,MAC7Cf,IAIEgB,EAAQJ,EAAST,GAIvB,OAFAE,EAAQY,2BAA6BC,EAAAA,uBAAuB,CAAA,EAAIb,GAEhEc,QAAAC,QAAOJ,EACH,CAAEb,OAAAA,EAAQP,OAAQ,IAClB,CACEO,OAAQ,CAAE,EACVP,OAAQyB,eACN9C,EACEqC,EAAShB,QACRS,EAAQY,2BACkB,QAAzBZ,EAAQiB,cAEZjB,IAGV,CAAC,MAAAkB,UAAAJ,QAAAK,OAAAD,EAAA,CAAA,CAAA"}
|
package/ajv/dist/ajv.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as r,toNestErrors as e}from"@hookform/resolvers";import o from"ajv";import a from"ajv-errors";import{appendErrors as s}from"react-hook-form";var t=function(r,e){
|
|
1
|
+
import{validateFieldsNatively as r,toNestErrors as e}from"@hookform/resolvers";import o from"ajv";import a from"ajv-errors";import{appendErrors as s}from"react-hook-form";var t=function(r,e){for(var o={},a=function(r){"required"===r.keyword&&(r.instancePath+="/"+r.params.missingProperty);var a=r.instancePath.substring(1).replace(/\//g,".");if(o[a]||(o[a]={message:r.message,type:r.keyword}),e){var t=o[a].types,i=t&&t[r.keyword];o[a]=s(a,e,o,r.keyword,i?[].concat(i,r.message||""):r.message)}},t=function(){var e=r[i];"errorMessage"===e.keyword?e.params.errors.forEach(function(r){r.message=e.message,a(r)}):a(e)},i=0;i<r.length;i+=1)t();return o},i=function(s,i,n){return void 0===n&&(n={}),function(m,c,v){try{var l=new o(Object.assign({},{allErrors:!0,validateSchema:!0},i));a(l);var u=l.compile(Object.assign({$async:n&&"async"===n.mode},s)),f=u(m);return v.shouldUseNativeValidation&&r({},v),Promise.resolve(f?{values:m,errors:{}}:{values:{},errors:e(t(u.errors,!v.shouldUseNativeValidation&&"all"===v.criteriaMode),v)})}catch(r){return Promise.reject(r)}}};export{i as ajvResolver};
|
|
2
2
|
//# sourceMappingURL=ajv.module.js.map
|
package/ajv/dist/ajv.modern.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestErrors as r}from"@hookform/resolvers";import s from"ajv";import o from"ajv-errors";import{appendErrors as a}from"react-hook-form";const t=(e,r)=>
|
|
1
|
+
import{validateFieldsNatively as e,toNestErrors as r}from"@hookform/resolvers";import s from"ajv";import o from"ajv-errors";import{appendErrors as a}from"react-hook-form";const t=(e,r)=>{const s={},o=e=>{"required"===e.keyword&&(e.instancePath+=`/${e.params.missingProperty}`);const o=e.instancePath.substring(1).replace(/\//g,".");if(s[o]||(s[o]={message:e.message,type:e.keyword}),r){const t=s[o].types,n=t&&t[e.keyword];s[o]=a(o,r,s,e.keyword,n?[].concat(n,e.message||""):e.message)}};for(let r=0;r<e.length;r+=1){const s=e[r];"errorMessage"===s.keyword?s.params.errors.forEach(e=>{e.message=s.message,o(e)}):o(s)}return s},n=(a,n,i={})=>async(c,m,l)=>{const d=new s(Object.assign({},{allErrors:!0,validateSchema:!0},n));o(d);const g=d.compile(Object.assign({$async:i&&"async"===i.mode},a)),p=g(c);return l.shouldUseNativeValidation&&e({},l),p?{values:c,errors:{}}:{values:{},errors:r(t(g.errors,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)}};export{n as ajvResolver};
|
|
2
2
|
//# sourceMappingURL=ajv.modern.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.modern.mjs","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors:
|
|
1
|
+
{"version":3,"file":"ajv.modern.mjs","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { AjvError, Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors: AjvError[],\n validateAllFieldCriteria: boolean,\n) => {\n const parsedErrors: Record<string, FieldError> = {};\n\n const reduceError = (error: AjvError) => {\n // Ajv will return empty instancePath when require error\n if (error.keyword === 'required') {\n error.instancePath += `/${error.params.missingProperty}`;\n }\n\n // `/deepObject/data` -> `deepObject.data`\n const path = error.instancePath.substring(1).replace(/\\//g, '.');\n\n if (!parsedErrors[path]) {\n parsedErrors[path] = {\n message: error.message,\n type: error.keyword,\n };\n }\n\n if (validateAllFieldCriteria) {\n const types = parsedErrors[path].types;\n const messages = types && types[error.keyword];\n\n parsedErrors[path] = appendErrors(\n path,\n validateAllFieldCriteria,\n parsedErrors,\n error.keyword,\n messages\n ? ([] as string[]).concat(messages as string[], error.message || '')\n : error.message,\n ) as FieldError;\n }\n };\n\n for (let index = 0; index < ajvErrors.length; index += 1) {\n const error = ajvErrors[index];\n\n if (error.keyword === 'errorMessage') {\n error.params.errors.forEach((originalError) => {\n originalError.message = error.message;\n reduceError(originalError);\n });\n } else {\n reduceError(error);\n }\n }\n\n return parsedErrors;\n};\n\nexport const ajvResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n const ajv = new Ajv(\n Object.assign(\n {},\n {\n allErrors: true,\n validateSchema: true,\n },\n schemaOptions,\n ),\n );\n\n ajvErrors(ajv);\n\n const validate = ajv.compile(\n Object.assign(\n { $async: resolverOptions && resolverOptions.mode === 'async' },\n schema,\n ),\n );\n\n const valid = validate(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return valid\n ? { values, errors: {} }\n : {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n validate.errors as DefinedError[],\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","ajvErrors","validateAllFieldCriteria","parsedErrors","reduceError","error","keyword","instancePath","params","missingProperty","path","substring","replace","message","type","types","messages","appendErrors","concat","index","length","errors","forEach","originalError","ajvResolver","schema","schemaOptions","resolverOptions","async","values","_","options","ajv","Ajv","Object","assign","allErrors","validateSchema","validate","compile","$async","mode","valid","shouldUseNativeValidation","validateFieldsNatively","toNestErrors","criteriaMode"],"mappings":"2KAMA,MAAMA,EAAmBA,CACvBC,EACAC,KAEA,MAAMC,EAA2C,GAE3CC,EAAeC,IAEG,aAAlBA,EAAMC,UACRD,EAAME,cAAgB,IAAIF,EAAMG,OAAOC,mBAIzC,MAAMC,EAAOL,EAAME,aAAaI,UAAU,GAAGC,QAAQ,MAAO,KAS5D,GAPKT,EAAaO,KAChBP,EAAaO,GAAQ,CACnBG,QAASR,EAAMQ,QACfC,KAAMT,EAAMC,UAIZJ,EAA0B,CAC5B,MAAMa,EAAQZ,EAAaO,GAAMK,MAC3BC,EAAWD,GAASA,EAAMV,EAAMC,SAEtCH,EAAaO,GAAQO,EACnBP,EACAR,EACAC,EACAE,EAAMC,QACNU,EACK,GAAgBE,OAAOF,EAAsBX,EAAMQ,SAAW,IAC/DR,EAAMQ,QAEd,GAGF,IAAK,IAAIM,EAAQ,EAAGA,EAAQlB,EAAUmB,OAAQD,GAAS,EAAG,CACxD,MAAMd,EAAQJ,EAAUkB,GAEF,iBAAlBd,EAAMC,QACRD,EAAMG,OAAOa,OAAOC,QAASC,IAC3BA,EAAcV,QAAUR,EAAMQ,QAC9BT,EAAYmB,EACd,GAEAnB,EAAYC,EAEhB,CAEA,OAAOF,GAGIqB,EACXA,CAACC,EAAQC,EAAeC,EAAkB,CAAE,IAC5CC,MAAOC,EAAQC,EAAGC,KAChB,MAAMC,EAAM,IAAIC,EACdC,OAAOC,OACL,CAAE,EACF,CACEC,WAAW,EACXC,gBAAgB,GAElBX,IAIJzB,EAAU+B,GAEV,MAAMM,EAAWN,EAAIO,QACnBL,OAAOC,OACL,CAAEK,OAAQb,GAA4C,UAAzBA,EAAgBc,MAC7ChB,IAIEiB,EAAQJ,EAAST,GAIvB,OAFAE,EAAQY,2BAA6BC,EAAuB,CAAA,EAAIb,GAEzDW,EACH,CAAEb,SAAQR,OAAQ,CAAI,GACtB,CACEQ,OAAQ,CAAE,EACVR,OAAQwB,EACN7C,EACEsC,EAASjB,QACRU,EAAQY,2BACkB,QAAzBZ,EAAQe,cAEZf"}
|
package/ajv/dist/ajv.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as r,toNestErrors as e}from"@hookform/resolvers";import o from"ajv";import a from"ajv-errors";import{appendErrors as s}from"react-hook-form";var t=function(r,e){
|
|
1
|
+
import{validateFieldsNatively as r,toNestErrors as e}from"@hookform/resolvers";import o from"ajv";import a from"ajv-errors";import{appendErrors as s}from"react-hook-form";var t=function(r,e){for(var o={},a=function(r){"required"===r.keyword&&(r.instancePath+="/"+r.params.missingProperty);var a=r.instancePath.substring(1).replace(/\//g,".");if(o[a]||(o[a]={message:r.message,type:r.keyword}),e){var t=o[a].types,i=t&&t[r.keyword];o[a]=s(a,e,o,r.keyword,i?[].concat(i,r.message||""):r.message)}},t=function(){var e=r[i];"errorMessage"===e.keyword?e.params.errors.forEach(function(r){r.message=e.message,a(r)}):a(e)},i=0;i<r.length;i+=1)t();return o},i=function(s,i,n){return void 0===n&&(n={}),function(m,c,v){try{var l=new o(Object.assign({},{allErrors:!0,validateSchema:!0},i));a(l);var u=l.compile(Object.assign({$async:n&&"async"===n.mode},s)),f=u(m);return v.shouldUseNativeValidation&&r({},v),Promise.resolve(f?{values:m,errors:{}}:{values:{},errors:e(t(u.errors,!v.shouldUseNativeValidation&&"all"===v.criteriaMode),v)})}catch(r){return Promise.reject(r)}}};export{i as ajvResolver};
|
|
2
2
|
//# sourceMappingURL=ajv.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.module.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors:
|
|
1
|
+
{"version":3,"file":"ajv.module.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { AjvError, Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors: AjvError[],\n validateAllFieldCriteria: boolean,\n) => {\n const parsedErrors: Record<string, FieldError> = {};\n\n const reduceError = (error: AjvError) => {\n // Ajv will return empty instancePath when require error\n if (error.keyword === 'required') {\n error.instancePath += `/${error.params.missingProperty}`;\n }\n\n // `/deepObject/data` -> `deepObject.data`\n const path = error.instancePath.substring(1).replace(/\\//g, '.');\n\n if (!parsedErrors[path]) {\n parsedErrors[path] = {\n message: error.message,\n type: error.keyword,\n };\n }\n\n if (validateAllFieldCriteria) {\n const types = parsedErrors[path].types;\n const messages = types && types[error.keyword];\n\n parsedErrors[path] = appendErrors(\n path,\n validateAllFieldCriteria,\n parsedErrors,\n error.keyword,\n messages\n ? ([] as string[]).concat(messages as string[], error.message || '')\n : error.message,\n ) as FieldError;\n }\n };\n\n for (let index = 0; index < ajvErrors.length; index += 1) {\n const error = ajvErrors[index];\n\n if (error.keyword === 'errorMessage') {\n error.params.errors.forEach((originalError) => {\n originalError.message = error.message;\n reduceError(originalError);\n });\n } else {\n reduceError(error);\n }\n }\n\n return parsedErrors;\n};\n\nexport const ajvResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n const ajv = new Ajv(\n Object.assign(\n {},\n {\n allErrors: true,\n validateSchema: true,\n },\n schemaOptions,\n ),\n );\n\n ajvErrors(ajv);\n\n const validate = ajv.compile(\n Object.assign(\n { $async: resolverOptions && resolverOptions.mode === 'async' },\n schema,\n ),\n );\n\n const valid = validate(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return valid\n ? { values, errors: {} }\n : {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n validate.errors as DefinedError[],\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","ajvErrors","validateAllFieldCriteria","parsedErrors","reduceError","error","keyword","instancePath","params","missingProperty","path","substring","replace","message","type","types","messages","appendErrors","concat","_loop","index","errors","forEach","originalError","length","ajvResolver","schema","schemaOptions","resolverOptions","values","_","options","ajv","Ajv","Object","assign","allErrors","validateSchema","validate","compile","$async","mode","valid","shouldUseNativeValidation","validateFieldsNatively","Promise","resolve","toNestErrors","criteriaMode","e","reject"],"mappings":"2KAMA,IAAMA,EAAmB,SACvBC,EACAC,GAoCA,IAlCA,IAAMC,EAA2C,GAE3CC,EAAc,SAACC,GAEG,aAAlBA,EAAMC,UACRD,EAAME,cAAY,IAAQF,EAAMG,OAAOC,iBAIzC,IAAMC,EAAOL,EAAME,aAAaI,UAAU,GAAGC,QAAQ,MAAO,KAS5D,GAPKT,EAAaO,KAChBP,EAAaO,GAAQ,CACnBG,QAASR,EAAMQ,QACfC,KAAMT,EAAMC,UAIZJ,EAA0B,CAC5B,IAAMa,EAAQZ,EAAaO,GAAMK,MAC3BC,EAAWD,GAASA,EAAMV,EAAMC,SAEtCH,EAAaO,GAAQO,EACnBP,EACAR,EACAC,EACAE,EAAMC,QACNU,EACK,GAAgBE,OAAOF,EAAsBX,EAAMQ,SAAW,IAC/DR,EAAMQ,QAEd,CACF,EAAEM,EAAA,WAGA,IAAMd,EAAQJ,EAAUmB,GAEF,iBAAlBf,EAAMC,QACRD,EAAMG,OAAOa,OAAOC,QAAQ,SAACC,GAC3BA,EAAcV,QAAUR,EAAMQ,QAC9BT,EAAYmB,EACd,GAEAnB,EAAYC,EAEhB,EAXSe,EAAQ,EAAGA,EAAQnB,EAAUuB,OAAQJ,GAAS,EAACD,IAaxD,OAAOhB,CACT,EAEasB,EACX,SAACC,EAAQC,EAAeC,GAAoB,YAAL,IAAfA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAC3B,IAAMC,EAAM,IAAIC,EACdC,OAAOC,OACL,GACA,CACEC,WAAW,EACXC,gBAAgB,GAElBV,IAIJ1B,EAAU+B,GAEV,IAAMM,EAAWN,EAAIO,QACnBL,OAAOC,OACL,CAAEK,OAAQZ,GAA4C,UAAzBA,EAAgBa,MAC7Cf,IAIEgB,EAAQJ,EAAST,GAIvB,OAFAE,EAAQY,2BAA6BC,EAAuB,CAAA,EAAIb,GAEhEc,QAAAC,QAAOJ,EACH,CAAEb,OAAAA,EAAQR,OAAQ,IAClB,CACEQ,OAAQ,CAAE,EACVR,OAAQ0B,EACN/C,EACEsC,EAASjB,QACRU,EAAQY,2BACkB,QAAzBZ,EAAQiB,cAEZjB,IAGV,CAAC,MAAAkB,UAAAJ,QAAAK,OAAAD,EAAA,CAAA,CAAA"}
|
package/ajv/dist/ajv.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("ajv"),require("ajv-errors"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","ajv","ajv-errors","react-hook-form"],r):r((e||self).hookformResolversAjv={},e.hookformResolvers,e.ajv,e.ajvErrors,e.ReactHookForm)}(this,function(e,r,o,a
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("ajv"),require("ajv-errors"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","ajv","ajv-errors","react-hook-form"],r):r((e||self).hookformResolversAjv={},e.hookformResolvers,e.ajv,e.ajvErrors,e.ReactHookForm)}(this,function(e,r,o,s,a){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=/*#__PURE__*/t(o),i=/*#__PURE__*/t(s),f=function(e,r){for(var o={},s=function(e){"required"===e.keyword&&(e.instancePath+="/"+e.params.missingProperty);var s=e.instancePath.substring(1).replace(/\//g,".");if(o[s]||(o[s]={message:e.message,type:e.keyword}),r){var t=o[s].types,n=t&&t[e.keyword];o[s]=a.appendErrors(s,r,o,e.keyword,n?[].concat(n,e.message||""):e.message)}},t=function(){var r=e[n];"errorMessage"===r.keyword?r.params.errors.forEach(function(e){e.message=r.message,s(e)}):s(r)},n=0;n<e.length;n+=1)t();return o};e.ajvResolver=function(e,o,s){return void 0===s&&(s={}),function(a,t,l){try{var u=new n.default(Object.assign({},{allErrors:!0,validateSchema:!0},o));i.default(u);var c=u.compile(Object.assign({$async:s&&"async"===s.mode},e)),d=c(a);return l.shouldUseNativeValidation&&r.validateFieldsNatively({},l),Promise.resolve(d?{values:a,errors:{}}:{values:{},errors:r.toNestErrors(f(c.errors,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)})}catch(e){return Promise.reject(e)}}}});
|
|
2
2
|
//# sourceMappingURL=ajv.umd.js.map
|
package/ajv/dist/ajv.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.umd.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors:
|
|
1
|
+
{"version":3,"file":"ajv.umd.js","sources":["../src/ajv.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport Ajv, { DefinedError } from 'ajv';\nimport ajvErrors from 'ajv-errors';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { AjvError, Resolver } from './types';\n\nconst parseErrorSchema = (\n ajvErrors: AjvError[],\n validateAllFieldCriteria: boolean,\n) => {\n const parsedErrors: Record<string, FieldError> = {};\n\n const reduceError = (error: AjvError) => {\n // Ajv will return empty instancePath when require error\n if (error.keyword === 'required') {\n error.instancePath += `/${error.params.missingProperty}`;\n }\n\n // `/deepObject/data` -> `deepObject.data`\n const path = error.instancePath.substring(1).replace(/\\//g, '.');\n\n if (!parsedErrors[path]) {\n parsedErrors[path] = {\n message: error.message,\n type: error.keyword,\n };\n }\n\n if (validateAllFieldCriteria) {\n const types = parsedErrors[path].types;\n const messages = types && types[error.keyword];\n\n parsedErrors[path] = appendErrors(\n path,\n validateAllFieldCriteria,\n parsedErrors,\n error.keyword,\n messages\n ? ([] as string[]).concat(messages as string[], error.message || '')\n : error.message,\n ) as FieldError;\n }\n };\n\n for (let index = 0; index < ajvErrors.length; index += 1) {\n const error = ajvErrors[index];\n\n if (error.keyword === 'errorMessage') {\n error.params.errors.forEach((originalError) => {\n originalError.message = error.message;\n reduceError(originalError);\n });\n } else {\n reduceError(error);\n }\n }\n\n return parsedErrors;\n};\n\nexport const ajvResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n const ajv = new Ajv(\n Object.assign(\n {},\n {\n allErrors: true,\n validateSchema: true,\n },\n schemaOptions,\n ),\n );\n\n ajvErrors(ajv);\n\n const validate = ajv.compile(\n Object.assign(\n { $async: resolverOptions && resolverOptions.mode === 'async' },\n schema,\n ),\n );\n\n const valid = validate(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return valid\n ? { values, errors: {} }\n : {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n validate.errors as DefinedError[],\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","ajvErrors","validateAllFieldCriteria","parsedErrors","reduceError","error","keyword","instancePath","params","missingProperty","path","substring","replace","message","type","types","messages","appendErrors","concat","_loop","index","errors","forEach","originalError","length","schema","schemaOptions","resolverOptions","values","_","options","ajv","Ajv","Object","assign","allErrors","validateSchema","validate","compile","$async","mode","valid","shouldUseNativeValidation","validateFieldsNatively","Promise","resolve","toNestErrors","criteriaMode","e","reject"],"mappings":"0jBAMMA,EAAmB,SACvBC,EACAC,GAoCA,IAlCA,IAAMC,EAA2C,GAE3CC,EAAc,SAACC,GAEG,aAAlBA,EAAMC,UACRD,EAAME,cAAY,IAAQF,EAAMG,OAAOC,iBAIzC,IAAMC,EAAOL,EAAME,aAAaI,UAAU,GAAGC,QAAQ,MAAO,KAS5D,GAPKT,EAAaO,KAChBP,EAAaO,GAAQ,CACnBG,QAASR,EAAMQ,QACfC,KAAMT,EAAMC,UAIZJ,EAA0B,CAC5B,IAAMa,EAAQZ,EAAaO,GAAMK,MAC3BC,EAAWD,GAASA,EAAMV,EAAMC,SAEtCH,EAAaO,GAAQO,EAAYA,aAC/BP,EACAR,EACAC,EACAE,EAAMC,QACNU,EACK,GAAgBE,OAAOF,EAAsBX,EAAMQ,SAAW,IAC/DR,EAAMQ,QAEd,CACF,EAAEM,EAAA,WAGA,IAAMd,EAAQJ,EAAUmB,GAEF,iBAAlBf,EAAMC,QACRD,EAAMG,OAAOa,OAAOC,QAAQ,SAACC,GAC3BA,EAAcV,QAAUR,EAAMQ,QAC9BT,EAAYmB,EACd,GAEAnB,EAAYC,EAEhB,EAXSe,EAAQ,EAAGA,EAAQnB,EAAUuB,OAAQJ,GAAS,EAACD,IAaxD,OAAOhB,CACT,gBAGE,SAACsB,EAAQC,EAAeC,GAAoB,YAAL,IAAfA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAC3B,IAAMC,EAAM,IAAIC,EAAG,QACjBC,OAAOC,OACL,GACA,CACEC,WAAW,EACXC,gBAAgB,GAElBV,IAIJzB,UAAU8B,GAEV,IAAMM,EAAWN,EAAIO,QACnBL,OAAOC,OACL,CAAEK,OAAQZ,GAA4C,UAAzBA,EAAgBa,MAC7Cf,IAIEgB,EAAQJ,EAAST,GAIvB,OAFAE,EAAQY,2BAA6BC,EAAAA,uBAAuB,CAAA,EAAIb,GAEhEc,QAAAC,QAAOJ,EACH,CAAEb,OAAAA,EAAQP,OAAQ,IAClB,CACEO,OAAQ,CAAE,EACVP,OAAQyB,eACN9C,EACEqC,EAAShB,QACRS,EAAQY,2BACkB,QAAzBZ,EAAQiB,cAEZjB,IAGV,CAAC,MAAAkB,UAAAJ,QAAAK,OAAAD,EAAA,CAAA,CAAA"}
|
package/ajv/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import * as Ajv from 'ajv';
|
|
2
|
+
import type { DefinedError, ErrorObject } from 'ajv';
|
|
2
3
|
import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
3
4
|
export type Resolver = <T>(schema: Ajv.JSONSchemaType<T>, schemaOptions?: Ajv.Options, factoryOptions?: {
|
|
4
5
|
mode?: 'async' | 'sync';
|
|
5
6
|
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
|
7
|
+
type ErrorMessage = ErrorObject<'errorMessage', {
|
|
8
|
+
errors: (DefinedError & {
|
|
9
|
+
emUsed: boolean;
|
|
10
|
+
})[];
|
|
11
|
+
}>;
|
|
12
|
+
export type AjvError = ErrorMessage | DefinedError;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { JSONSchemaType } from 'ajv';
|
|
2
|
+
import { Field, InternalFieldName } from 'react-hook-form';
|
|
3
|
+
|
|
4
|
+
interface DataA {
|
|
5
|
+
username: string;
|
|
6
|
+
password: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const schemaA: JSONSchemaType<DataA> = {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
username: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
minLength: 3,
|
|
15
|
+
errorMessage: {
|
|
16
|
+
minLength: 'username should be at least three characters long',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
password: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
pattern: '.*[A-Z].*',
|
|
22
|
+
minLength: 8,
|
|
23
|
+
errorMessage: {
|
|
24
|
+
pattern: 'One uppercase character',
|
|
25
|
+
minLength: 'passwords should be at least eight characters long',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ['username', 'password'],
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
errorMessage: {
|
|
32
|
+
required: {
|
|
33
|
+
username: 'username field is required',
|
|
34
|
+
password: 'password field is required',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const validDataA: DataA = {
|
|
40
|
+
username: 'kt666',
|
|
41
|
+
password: 'validPassword',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const invalidDataA = {
|
|
45
|
+
username: 'kt',
|
|
46
|
+
password: 'invalid',
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const undefinedDataA = {
|
|
50
|
+
username: undefined,
|
|
51
|
+
password: undefined,
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const fieldsA: Record<InternalFieldName, Field['_f']> = {
|
|
55
|
+
username: {
|
|
56
|
+
ref: { name: 'username' },
|
|
57
|
+
name: 'username',
|
|
58
|
+
},
|
|
59
|
+
password: {
|
|
60
|
+
ref: { name: 'password' },
|
|
61
|
+
name: 'password',
|
|
62
|
+
},
|
|
63
|
+
email: {
|
|
64
|
+
ref: { name: 'email' },
|
|
65
|
+
name: 'email',
|
|
66
|
+
},
|
|
67
|
+
birthday: {
|
|
68
|
+
ref: { name: 'birthday' },
|
|
69
|
+
name: 'birthday',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// examples from [ajv-errors](https://github.com/ajv-validator/ajv-errors)
|
|
74
|
+
|
|
75
|
+
interface DataB {
|
|
76
|
+
foo: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export const schemaB: JSONSchemaType<DataB> = {
|
|
80
|
+
type: 'object',
|
|
81
|
+
required: ['foo'],
|
|
82
|
+
properties: {
|
|
83
|
+
foo: { type: 'integer' },
|
|
84
|
+
},
|
|
85
|
+
additionalProperties: false,
|
|
86
|
+
errorMessage: 'should be an object with an integer property foo only',
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const validDataB: DataB = { foo: 666 };
|
|
90
|
+
export const invalidDataB = { foo: 'kt', bar: 6 };
|
|
91
|
+
export const undefinedDataB = { foo: undefined };
|
|
92
|
+
|
|
93
|
+
interface DataC {
|
|
94
|
+
foo: number;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export const schemaC: JSONSchemaType<DataC> = {
|
|
98
|
+
type: 'object',
|
|
99
|
+
required: ['foo'],
|
|
100
|
+
properties: {
|
|
101
|
+
foo: { type: 'integer' },
|
|
102
|
+
},
|
|
103
|
+
additionalProperties: false,
|
|
104
|
+
errorMessage: {
|
|
105
|
+
type: 'should be an object',
|
|
106
|
+
required: 'should have property foo',
|
|
107
|
+
additionalProperties: 'should not have properties other than foo',
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export const validDataC: DataC = { foo: 666 };
|
|
112
|
+
export const invalidDataC = { foo: 'kt', bar: 6 };
|
|
113
|
+
export const undefinedDataC = { foo: undefined };
|
|
114
|
+
export const invalidTypeDataC = 'something';
|
|
115
|
+
|
|
116
|
+
interface DataD {
|
|
117
|
+
foo: number;
|
|
118
|
+
bar: string;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export const schemaD: JSONSchemaType<DataD> = {
|
|
122
|
+
type: 'object',
|
|
123
|
+
required: ['foo', 'bar'],
|
|
124
|
+
properties: {
|
|
125
|
+
foo: { type: 'integer' },
|
|
126
|
+
bar: { type: 'string' },
|
|
127
|
+
},
|
|
128
|
+
errorMessage: {
|
|
129
|
+
type: 'should be an object', // will not replace internal "type" error for the property "foo"
|
|
130
|
+
required: {
|
|
131
|
+
foo: 'should have an integer property "foo"',
|
|
132
|
+
bar: 'should have a string property "bar"',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export const validDataD: DataD = { foo: 666, bar: 'kt' };
|
|
138
|
+
export const invalidDataD = { foo: 'kt', bar: 6 };
|
|
139
|
+
export const undefinedDataD = { foo: undefined, bar: undefined };
|
|
140
|
+
export const invalidTypeDataD = 'something';
|
|
141
|
+
|
|
142
|
+
interface DataE {
|
|
143
|
+
foo: number;
|
|
144
|
+
bar: string;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export const schemaE: JSONSchemaType<DataE> = {
|
|
148
|
+
type: 'object',
|
|
149
|
+
required: ['foo', 'bar'],
|
|
150
|
+
allOf: [
|
|
151
|
+
{
|
|
152
|
+
properties: {
|
|
153
|
+
foo: { type: 'integer', minimum: 2 },
|
|
154
|
+
bar: { type: 'string', minLength: 2 },
|
|
155
|
+
},
|
|
156
|
+
additionalProperties: false,
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
errorMessage: {
|
|
160
|
+
properties: {
|
|
161
|
+
foo: 'data.foo should be integer >= 2',
|
|
162
|
+
bar: 'data.bar should be string with length >= 2',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export const validDataE: DataE = { foo: 666, bar: 'kt' };
|
|
168
|
+
export const invalidDataE = { foo: 1, bar: 'k' };
|
|
169
|
+
export const undefinedDataE = { foo: undefined, bar: undefined };
|
|
170
|
+
|
|
171
|
+
interface DataF {
|
|
172
|
+
foo: number;
|
|
173
|
+
bar: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export const schemaF: JSONSchemaType<DataF> = {
|
|
177
|
+
type: 'object',
|
|
178
|
+
required: ['foo', 'bar'],
|
|
179
|
+
allOf: [
|
|
180
|
+
{
|
|
181
|
+
properties: {
|
|
182
|
+
foo: { type: 'integer', minimum: 2 },
|
|
183
|
+
bar: { type: 'string', minLength: 2 },
|
|
184
|
+
},
|
|
185
|
+
additionalProperties: false,
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
errorMessage: {
|
|
189
|
+
type: 'data should be an object',
|
|
190
|
+
properties: {
|
|
191
|
+
foo: 'data.foo should be integer >= 2',
|
|
192
|
+
bar: 'data.bar should be string with length >= 2',
|
|
193
|
+
},
|
|
194
|
+
_: 'data should have properties "foo" and "bar" only',
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
export const validDataF: DataF = { foo: 666, bar: 'kt' };
|
|
199
|
+
export const invalidDataF = {};
|
|
200
|
+
export const undefinedDataF = { foo: 1, bar: undefined };
|
|
201
|
+
export const invalidTypeDataF = 'something';
|
|
202
|
+
|
|
203
|
+
export const fieldsRest: Record<InternalFieldName, Field['_f']> = {
|
|
204
|
+
foo: {
|
|
205
|
+
ref: { name: 'foo' },
|
|
206
|
+
name: 'foo',
|
|
207
|
+
},
|
|
208
|
+
bar: {
|
|
209
|
+
ref: { name: 'bar' },
|
|
210
|
+
name: 'bar',
|
|
211
|
+
},
|
|
212
|
+
lorem: {
|
|
213
|
+
ref: { name: 'lorem' },
|
|
214
|
+
name: 'lorem',
|
|
215
|
+
},
|
|
216
|
+
};
|