@hookform/resolvers 2.8.1 → 2.8.5
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 +3 -3
- package/class-validator/dist/types.d.ts +2 -2
- package/class-validator/src/__tests__/Form-native-validation.tsx +2 -2
- package/class-validator/src/__tests__/Form.tsx +2 -2
- package/class-validator/src/types.ts +2 -6
- package/computed-types/dist/computed-types.js.map +1 -1
- package/computed-types/dist/computed-types.modern.js.map +1 -1
- package/computed-types/dist/computed-types.module.js.map +1 -1
- package/computed-types/dist/computed-types.umd.js.map +1 -1
- package/computed-types/src/computed-types.ts +1 -1
- package/dist/resolvers.js.map +1 -1
- package/dist/resolvers.mjs.map +1 -1
- package/dist/resolvers.module.js.map +1 -1
- package/dist/resolvers.umd.js.map +1 -1
- package/dist/toNestError.d.ts +2 -2
- 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.modern.js.map +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/io-ts/dist/types.d.ts +2 -2
- package/io-ts/src/__tests__/Form-native-validation.tsx +5 -5
- package/io-ts/src/__tests__/Form.tsx +5 -5
- package/io-ts/src/io-ts.ts +2 -3
- package/io-ts/src/types.ts +4 -8
- package/joi/dist/types.d.ts +3 -3
- package/joi/src/types.ts +3 -2
- package/nope/dist/types.d.ts +2 -2
- package/nope/src/types.ts +3 -6
- package/package.json +24 -24
- package/superstruct/dist/superstruct.js.map +1 -1
- package/superstruct/dist/superstruct.modern.js.map +1 -1
- package/superstruct/dist/superstruct.module.js.map +1 -1
- package/superstruct/dist/superstruct.umd.js.map +1 -1
- package/superstruct/dist/types.d.ts +2 -2
- package/superstruct/src/__tests__/Form.tsx +1 -1
- package/superstruct/src/superstruct.ts +3 -6
- package/superstruct/src/types.ts +11 -10
- package/typanion/dist/typanion.js.map +1 -1
- package/typanion/dist/typanion.modern.js.map +1 -1
- package/typanion/dist/typanion.module.js.map +1 -1
- package/typanion/dist/typanion.umd.js.map +1 -1
- package/typanion/dist/types.d.ts +4 -4
- package/typanion/src/__tests__/Form-native-validation.tsx +2 -3
- package/typanion/src/__tests__/Form.tsx +2 -6
- package/typanion/src/typanion.ts +2 -5
- package/typanion/src/types.ts +8 -16
- package/vest/dist/vest.js +1 -1
- package/vest/dist/vest.js.map +1 -1
- package/vest/dist/vest.umd.js +1 -1
- package/vest/dist/vest.umd.js.map +1 -1
- package/vest/src/__tests__/Form-native-validation.tsx +1 -1
- package/vest/src/__tests__/Form.tsx +1 -1
- package/vest/src/types.ts +3 -2
- package/yup/dist/types.d.ts +3 -3
- 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.js +1 -1
- package/yup/dist/yup.modern.js.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/__tests__/Form-native-validation.tsx +1 -1
- package/yup/src/__tests__/Form.tsx +1 -1
- package/yup/src/types.ts +11 -10
- package/yup/src/yup.ts +25 -22
- package/zod/dist/types.d.ts +3 -3
- package/zod/dist/zod.js.map +1 -1
- package/zod/dist/zod.modern.js.map +1 -1
- package/zod/dist/zod.module.js.map +1 -1
- package/zod/dist/zod.umd.js.map +1 -1
- package/zod/src/__tests__/Form.tsx +1 -1
- package/zod/src/__tests__/zod.ts +1 -1
- package/zod/src/types.ts +11 -10
- package/zod/src/zod.ts +8 -8
package/joi/src/types.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
+
FieldValues,
|
|
2
3
|
ResolverOptions,
|
|
3
4
|
ResolverResult,
|
|
4
5
|
UnpackNestedValue,
|
|
5
6
|
} from 'react-hook-form';
|
|
6
7
|
import type { AsyncValidationOptions, Schema } from 'joi';
|
|
7
8
|
|
|
8
|
-
export type Resolver = <T extends Schema
|
|
9
|
+
export type Resolver = <T extends Schema>(
|
|
9
10
|
schema: T,
|
|
10
11
|
schemaOptions?: AsyncValidationOptions,
|
|
11
12
|
factoryOptions?: { mode?: 'async' | 'sync' },
|
|
12
|
-
) => (
|
|
13
|
+
) => <TFieldValues extends FieldValues, TContext>(
|
|
13
14
|
values: UnpackNestedValue<TFieldValues>,
|
|
14
15
|
context: TContext | undefined,
|
|
15
16
|
options: ResolverOptions<TFieldValues>,
|
package/nope/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
|
|
1
|
+
import type { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
|
|
2
2
|
import type { NopeObject } from 'nope-validator/lib/cjs/NopeObject';
|
|
3
3
|
declare type ValidateOptions = Parameters<NopeObject['validate']>[2];
|
|
4
4
|
declare type Context = Parameters<NopeObject['validate']>[1];
|
|
5
|
-
export declare type Resolver = <T extends NopeObject
|
|
5
|
+
export declare type Resolver = <T extends NopeObject>(schema: T, schemaOptions?: ValidateOptions) => <TFieldValues extends FieldValues, TContext extends Context>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
6
6
|
export {};
|
package/nope/src/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
FieldValues,
|
|
2
3
|
ResolverOptions,
|
|
3
4
|
ResolverResult,
|
|
4
5
|
UnpackNestedValue,
|
|
@@ -8,14 +9,10 @@ import type { NopeObject } from 'nope-validator/lib/cjs/NopeObject';
|
|
|
8
9
|
type ValidateOptions = Parameters<NopeObject['validate']>[2];
|
|
9
10
|
type Context = Parameters<NopeObject['validate']>[1];
|
|
10
11
|
|
|
11
|
-
export type Resolver = <
|
|
12
|
-
T extends NopeObject,
|
|
13
|
-
TFieldValues,
|
|
14
|
-
TContext extends Context,
|
|
15
|
-
>(
|
|
12
|
+
export type Resolver = <T extends NopeObject>(
|
|
16
13
|
schema: T,
|
|
17
14
|
schemaOptions?: ValidateOptions,
|
|
18
|
-
) => (
|
|
15
|
+
) => <TFieldValues extends FieldValues, TContext extends Context>(
|
|
19
16
|
values: UnpackNestedValue<TFieldValues>,
|
|
20
17
|
context: TContext | undefined,
|
|
21
18
|
options: ResolverOptions<TFieldValues>,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hookform/resolvers",
|
|
3
3
|
"amdName": "hookformResolvers",
|
|
4
|
-
"version": "2.8.
|
|
4
|
+
"version": "2.8.5",
|
|
5
5
|
"description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types and Typanion",
|
|
6
6
|
"main": "dist/resolvers.js",
|
|
7
7
|
"module": "dist/resolvers.module.js",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"require": "./typanion/dist/typanion.js"
|
|
77
77
|
},
|
|
78
78
|
"./package.json": "./package.json",
|
|
79
|
-
"
|
|
79
|
+
"./*": "./*"
|
|
80
80
|
},
|
|
81
81
|
"files": [
|
|
82
82
|
"dist",
|
|
@@ -164,27 +164,27 @@
|
|
|
164
164
|
},
|
|
165
165
|
"homepage": "https://react-hook-form.com",
|
|
166
166
|
"devDependencies": {
|
|
167
|
-
"@testing-library/jest-dom": "^5.
|
|
168
|
-
"@testing-library/react": "^12.
|
|
169
|
-
"@testing-library/user-event": "^13.
|
|
170
|
-
"@types/jest": "^27.0.
|
|
171
|
-
"@types/react": "^17.0.
|
|
172
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
173
|
-
"@typescript-eslint/parser": "^
|
|
174
|
-
"check-export-map": "^1.
|
|
167
|
+
"@testing-library/jest-dom": "^5.15.0",
|
|
168
|
+
"@testing-library/react": "^12.1.2",
|
|
169
|
+
"@testing-library/user-event": "^13.5.0",
|
|
170
|
+
"@types/jest": "^27.0.2",
|
|
171
|
+
"@types/react": "^17.0.33",
|
|
172
|
+
"@typescript-eslint/eslint-plugin": "^5.3.0",
|
|
173
|
+
"@typescript-eslint/parser": "^5.3.0",
|
|
174
|
+
"check-export-map": "^1.2.0",
|
|
175
175
|
"class-transformer": "^0.4.0",
|
|
176
176
|
"class-validator": "^0.13.1",
|
|
177
|
-
"computed-types": "^1.
|
|
177
|
+
"computed-types": "^1.11.1",
|
|
178
178
|
"eslint": "^7.27.0",
|
|
179
179
|
"eslint-config-prettier": "^8.3.0",
|
|
180
|
-
"fp-ts": "^2.11.
|
|
181
|
-
"husky": "^7.0.
|
|
180
|
+
"fp-ts": "^2.11.5",
|
|
181
|
+
"husky": "^7.0.4",
|
|
182
182
|
"io-ts": "^2.0.0",
|
|
183
183
|
"io-ts-types": "^0.5.16",
|
|
184
|
-
"jest": "^27.
|
|
184
|
+
"jest": "^27.3.1",
|
|
185
185
|
"joi": "^17.4.2",
|
|
186
|
-
"lint-staged": "^11.
|
|
187
|
-
"microbundle": "^0.
|
|
186
|
+
"lint-staged": "^11.2.6",
|
|
187
|
+
"microbundle": "^0.14.1",
|
|
188
188
|
"monocle-ts": "^2.3.10",
|
|
189
189
|
"newtype-ts": "^0.3.4",
|
|
190
190
|
"nope-validator": "^1.0.0",
|
|
@@ -192,15 +192,15 @@
|
|
|
192
192
|
"prettier": "^2.3.2",
|
|
193
193
|
"react": "^17.0.2",
|
|
194
194
|
"react-dom": "^17.0.2",
|
|
195
|
-
"react-hook-form": "7.
|
|
195
|
+
"react-hook-form": "7.20.4",
|
|
196
196
|
"reflect-metadata": "^0.1.13",
|
|
197
|
-
"superstruct": "^0.15.
|
|
198
|
-
"ts-jest": "^27.0.
|
|
199
|
-
"typanion": "^3.
|
|
200
|
-
"typescript": "^4.
|
|
201
|
-
"vest": "^3.2.
|
|
202
|
-
"yup": "^0.32.
|
|
203
|
-
"zod": "^3.
|
|
197
|
+
"superstruct": "^0.15.3",
|
|
198
|
+
"ts-jest": "^27.0.7",
|
|
199
|
+
"typanion": "^3.7.1",
|
|
200
|
+
"typescript": "^4.4.4",
|
|
201
|
+
"vest": "^3.2.8",
|
|
202
|
+
"yup": "^0.32.11",
|
|
203
|
+
"zod": "^3.11.6"
|
|
204
204
|
},
|
|
205
205
|
"peerDependencies": {
|
|
206
206
|
"react-hook-form": "^7.0.0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError
|
|
1
|
+
{"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, resolverOptions) => (values, _, options) => {\n const result = validate(values, schema, resolverOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result[1],\n errors: {},\n };\n };\n"],"names":["schema","resolverOptions","values","_","options","error","result","validate","errors","toNestError","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"0FAiBE,SAACA,EAAQC,mBAAqBC,EAAQC,EAAGC,GACvC,IAZsBC,EAYhBC,EAASC,WAASL,EAAQF,EAAQC,GAExC,OAAIK,EAAO,GACF,CACLJ,OAAQ,GACRM,OAAQC,eAjBUJ,EAiBmBC,EAAO,GAhBlDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,UACRO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,GACR,KAUqDR,KAIrDA,EAAQa,2BAA6BC,yBAAuB,GAAId,GAEzD,CACLF,OAAQI,EAAO,GACfE,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superstruct.modern.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError
|
|
1
|
+
{"version":3,"file":"superstruct.modern.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, resolverOptions) => (values, _, options) => {\n const result = validate(values, schema, resolverOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","resolverOptions","values","_","options","result","validate","errors","toNestError","error","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"qHAMA,MAUaA,EACX,CAACC,EAAQC,IAAoB,CAACC,EAAQC,EAAGC,KACvC,MAAMC,EAASC,EAASJ,EAAQF,EAAQC,GAExC,OAAII,EAAO,GACF,CACLH,OAAQ,GACRK,OAAQC,GAjBUC,EAiBmBJ,EAAO,GAhBlDI,EAAMC,WAAWC,OACf,CAACC,EAAUH,KACRG,EAASH,EAAMI,KAAKC,KAAK,MAAQ,CAChCC,QAASN,EAAMM,QACfC,KAAMP,EAAMO,QACRJ,EACR,KAUqDR,KAIrDA,EAAQa,2BAA6BC,EAAuB,GAAId,GAEzD,CACLF,OAAQG,EAAO,GACfE,OAAQ,KAzBYE,IAAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superstruct.module.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError
|
|
1
|
+
{"version":3,"file":"superstruct.module.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, resolverOptions) => (values, _, options) => {\n const result = validate(values, schema, resolverOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","resolverOptions","values","_","options","error","result","validate","errors","toNestError","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"qHAMA,IAUaA,EACX,SAACC,EAAQC,mBAAqBC,EAAQC,EAAGC,GACvC,IAZsBC,EAYhBC,EAASC,EAASL,EAAQF,EAAQC,GAExC,OAAIK,EAAO,GACF,CACLJ,OAAQ,GACRM,OAAQC,GAjBUJ,EAiBmBC,EAAO,GAhBlDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,UACRO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,GACR,KAUqDR,KAIrDA,EAAQa,2BAA6BC,EAAuB,GAAId,GAEzD,CACLF,OAAQI,EAAO,GACfE,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superstruct.umd.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError
|
|
1
|
+
{"version":3,"file":"superstruct.umd.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, resolverOptions) => (values, _, options) => {\n const result = validate(values, schema, resolverOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result[1],\n errors: {},\n };\n };\n"],"names":["schema","resolverOptions","values","_","options","error","result","validate","errors","toNestError","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"4YAiBE,SAACA,EAAQC,mBAAqBC,EAAQC,EAAGC,GACvC,IAZsBC,EAYhBC,EAASC,WAASL,EAAQF,EAAQC,GAExC,OAAIK,EAAO,GACF,CACLJ,OAAQ,GACRM,OAAQC,eAjBUJ,EAiBmBC,EAAO,GAhBlDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,UACRO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,GACR,KAUqDR,KAIrDA,EAAQa,2BAA6BC,yBAAuB,GAAId,GAEzD,CACLF,OAAQI,EAAO,GACfE,OAAQ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
|
|
2
2
|
import { validate, Struct } from 'superstruct';
|
|
3
3
|
declare type Options = Parameters<typeof validate>[2];
|
|
4
|
-
export declare type Resolver = <
|
|
4
|
+
export declare type Resolver = <T extends Struct<any, any>>(schema: T, factoryOtions?: Options) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
5
5
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FieldError
|
|
1
|
+
import { FieldError } from 'react-hook-form';
|
|
2
2
|
import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
|
|
3
3
|
|
|
4
4
|
import { StructError, validate } from 'superstruct';
|
|
@@ -21,10 +21,7 @@ export const superstructResolver: Resolver =
|
|
|
21
21
|
if (result[0]) {
|
|
22
22
|
return {
|
|
23
23
|
values: {},
|
|
24
|
-
errors: toNestError(
|
|
25
|
-
parseErrorSchema(result[0]),
|
|
26
|
-
options,
|
|
27
|
-
) as FieldErrors<any>,
|
|
24
|
+
errors: toNestError(parseErrorSchema(result[0]), options),
|
|
28
25
|
};
|
|
29
26
|
}
|
|
30
27
|
|
|
@@ -32,6 +29,6 @@ export const superstructResolver: Resolver =
|
|
|
32
29
|
|
|
33
30
|
return {
|
|
34
31
|
values: result[1],
|
|
35
|
-
errors: {}
|
|
32
|
+
errors: {},
|
|
36
33
|
};
|
|
37
34
|
};
|
package/superstruct/src/types.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
FieldValues,
|
|
3
|
+
ResolverOptions,
|
|
4
|
+
ResolverResult,
|
|
5
|
+
UnpackNestedValue,
|
|
6
|
+
} from 'react-hook-form';
|
|
3
7
|
import { validate, Struct } from 'superstruct';
|
|
4
8
|
|
|
5
9
|
type Options = Parameters<typeof validate>[2];
|
|
6
10
|
|
|
7
|
-
export type Resolver = <
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
>(
|
|
11
|
-
|
|
12
|
-
factoryOptions?: Options,
|
|
13
|
-
) => (
|
|
14
|
-
values: unknown,
|
|
11
|
+
export type Resolver = <T extends Struct<any, any>>(
|
|
12
|
+
schema: T,
|
|
13
|
+
factoryOtions?: Options,
|
|
14
|
+
) => <TFieldValues extends FieldValues, TContext>(
|
|
15
|
+
values: UnpackNestedValue<TFieldValues>,
|
|
15
16
|
context: TContext | undefined,
|
|
16
17
|
options: ResolverOptions<TFieldValues>,
|
|
17
18
|
) => ResolverResult<TFieldValues>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {}
|
|
1
|
+
{"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestError(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","e","split","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestError"],"mappings":"8DAiBE,SAACA,EAAWC,mBAAAA,IAAAA,EAAmB,aAC9BC,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA1BU,SAACD,EAAkBC,GACrC,gBADqCA,IAAAA,EAA4B,IAC1DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAID,EAAME,MAAM,KAMtB,OAJAH,EAAIE,EAAE,GAAGE,MAAM,IAAM,CACnBC,QAASH,EAAE,GAAGI,QAGTN,GACNF,GAiBoBS,CAAYd,GAEjC,OAAIC,GACFF,EAAQgB,2BACNC,yBAAuBX,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,KAGpB,CAAEP,OAAQ,GAAIO,OAAQa,cAAYZ,EAAcN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typanion.modern.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {}
|
|
1
|
+
{"version":3,"file":"typanion.modern.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestError(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","e","split","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestError"],"mappings":"8EAIA,MAYaA,EACX,CAACC,EAAWC,EAAmB,KAC/B,CAACC,EAAQC,EAAGC,KACV,MAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA1BU,EAACD,EAAkBC,EAA4B,KAC1DD,EAAOE,OAAO,CAACC,EAAKC,KACzB,MAAMC,EAAID,EAAME,MAAM,KAMtB,OAJAH,EAAIE,EAAE,GAAGE,MAAM,IAAM,CACnBC,QAASH,EAAE,GAAGI,QAGTN,GACNF,GAiBoBS,CAAYd,GAEjC,OAAIC,GACFF,EAAQgB,2BACNC,EAAuBX,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,KAGpB,CAAEP,OAAQ,GAAIO,OAAQa,EAAYZ,EAAcN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typanion.module.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {}
|
|
1
|
+
{"version":3,"file":"typanion.module.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestError(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","e","split","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestError"],"mappings":"8EAIA,IAYaA,EACX,SAACC,EAAWC,mBAAAA,IAAAA,EAAmB,aAC9BC,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA1BU,SAACD,EAAkBC,GACrC,gBADqCA,IAAAA,EAA4B,IAC1DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAID,EAAME,MAAM,KAMtB,OAJAH,EAAIE,EAAE,GAAGE,MAAM,IAAM,CACnBC,QAASH,EAAE,GAAGI,QAGTN,GACNF,GAiBoBS,CAAYd,GAEjC,OAAIC,GACFF,EAAQgB,2BACNC,EAAuBX,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,KAGpB,CAAEP,OAAQ,GAAIO,OAAQa,EAAYZ,EAAcN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typanion.umd.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {}
|
|
1
|
+
{"version":3,"file":"typanion.umd.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const e = error.split(':');\n\n acc[e[0].slice(1)] = {\n message: e[1].trim(),\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestError(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","e","split","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestError"],"mappings":"iVAiBE,SAACA,EAAWC,mBAAAA,IAAAA,EAAmB,aAC9BC,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA1BU,SAACD,EAAkBC,GACrC,gBADqCA,IAAAA,EAA4B,IAC1DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAID,EAAME,MAAM,KAMtB,OAJAH,EAAIE,EAAE,GAAGE,MAAM,IAAM,CACnBC,QAASH,EAAE,GAAGI,QAGTN,GACNF,GAiBoBS,CAAYd,GAEjC,OAAIC,GACFF,EAAQgB,2BACNC,yBAAuBX,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,KAGpB,CAAEP,OAAQ,GAAIO,OAAQa,cAAYZ,EAAcN"}
|
package/typanion/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
2
|
-
import { ValidationState,
|
|
1
|
+
import type { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
|
|
2
|
+
import { ValidationState, AnyStrictValidator } from 'typanion';
|
|
3
3
|
declare type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>;
|
|
4
|
-
declare type RHFResolver<TFieldValues extends FieldValues,
|
|
5
|
-
export declare type Resolver = <
|
|
4
|
+
declare type RHFResolver = <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
5
|
+
export declare type Resolver = <UnknownValidator extends AnyStrictValidator>(validator: UnknownValidator, validatorOptions?: ValidateOptions) => RHFResolver;
|
|
6
6
|
export {};
|
|
@@ -5,8 +5,7 @@ import { useForm } from 'react-hook-form';
|
|
|
5
5
|
import * as t from 'typanion';
|
|
6
6
|
import { typanionResolver } from '..';
|
|
7
7
|
|
|
8
|
-
const ERROR_MESSAGE =
|
|
9
|
-
'Expected to have a length of at least 1 elements (got 0)';
|
|
8
|
+
const ERROR_MESSAGE = 'Expected to have a length of at least 1 elements (got 0)';
|
|
10
9
|
|
|
11
10
|
const schema = t.isObject({
|
|
12
11
|
username: t.applyCascade(t.isString(), [t.hasMinLength(1)]),
|
|
@@ -24,7 +23,7 @@ interface Props {
|
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
function TestComponent({ onSubmit }: Props) {
|
|
27
|
-
const { register, handleSubmit } = useForm({
|
|
26
|
+
const { register, handleSubmit } = useForm<FormData>({
|
|
28
27
|
resolver: typanionResolver(schema),
|
|
29
28
|
shouldUseNativeValidation: true,
|
|
30
29
|
});
|
|
@@ -25,7 +25,7 @@ function TestComponent({ onSubmit }: Props) {
|
|
|
25
25
|
register,
|
|
26
26
|
formState: { errors },
|
|
27
27
|
handleSubmit,
|
|
28
|
-
} = useForm({
|
|
28
|
+
} = useForm<FormData>({
|
|
29
29
|
resolver: typanionResolver(schema), // Useful to check TypeScript regressions
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -52,10 +52,6 @@ test("form's validation with Typanion and TypeScript's integration", async () =>
|
|
|
52
52
|
user.click(screen.getByText(/submit/i));
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
expect(
|
|
56
|
-
screen.getAllByText(
|
|
57
|
-
'Expected to have a length of at least 1 elements (got 0)',
|
|
58
|
-
),
|
|
59
|
-
).toHaveLength(2);
|
|
55
|
+
expect(screen.getAllByText('Expected to have a length of at least 1 elements (got 0)')).toHaveLength(2);
|
|
60
56
|
expect(handleSubmit).not.toHaveBeenCalled();
|
|
61
57
|
});
|
package/typanion/src/typanion.ts
CHANGED
|
@@ -34,11 +34,8 @@ export const typanionResolver: Resolver =
|
|
|
34
34
|
options.shouldUseNativeValidation &&
|
|
35
35
|
validateFieldsNatively(parsedErrors, options);
|
|
36
36
|
|
|
37
|
-
return { values, errors: {}
|
|
37
|
+
return { values, errors: {} };
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
return {
|
|
41
|
-
values: {},
|
|
42
|
-
errors: toNestError(parsedErrors, options) as FieldErrors<any>,
|
|
43
|
-
};
|
|
40
|
+
return { values: {}, errors: toNestError(parsedErrors, options) };
|
|
44
41
|
};
|
package/typanion/src/types.ts
CHANGED
|
@@ -1,28 +1,20 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
1
|
import type {
|
|
3
2
|
FieldValues,
|
|
4
3
|
ResolverOptions,
|
|
5
4
|
ResolverResult,
|
|
5
|
+
UnpackNestedValue,
|
|
6
6
|
} from 'react-hook-form';
|
|
7
|
-
import { ValidationState,
|
|
7
|
+
import { ValidationState, AnyStrictValidator} from 'typanion'
|
|
8
8
|
|
|
9
|
-
type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'
|
|
9
|
+
type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>
|
|
10
10
|
|
|
11
|
-
type RHFResolver<
|
|
12
|
-
TFieldValues
|
|
13
|
-
TInput = unknown,
|
|
14
|
-
TContext extends Object = object,
|
|
15
|
-
> = (
|
|
16
|
-
values: TInput,
|
|
11
|
+
type RHFResolver = <TFieldValues extends FieldValues, TContext>(
|
|
12
|
+
values: UnpackNestedValue<TFieldValues>,
|
|
17
13
|
context: TContext | undefined,
|
|
18
14
|
options: ResolverOptions<TFieldValues>,
|
|
19
15
|
) => ResolverResult<TFieldValues>;
|
|
20
16
|
|
|
21
|
-
export type Resolver = <
|
|
22
|
-
|
|
23
|
-
TFieldValues extends TInput = TInput,
|
|
24
|
-
TContext extends object = object,
|
|
25
|
-
>(
|
|
26
|
-
validator: StrictValidator<TInput, TFieldValues>,
|
|
17
|
+
export type Resolver = <UnknownValidator extends AnyStrictValidator>(
|
|
18
|
+
validator: UnknownValidator,
|
|
27
19
|
validatorOptions?: ValidateOptions,
|
|
28
|
-
)
|
|
20
|
+
)=> RHFResolver
|
package/vest/dist/vest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@hookform/resolvers");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t
|
|
1
|
+
var e=require("@hookform/resolvers");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=/*#__PURE__*/r(require("vest/promisify")),o=function(e,r){var t={};for(var o in e)t[o]||(t[o]={message:e[o][0],type:""}),r&&(t[o].types=e[o].reduce(function(e,r,t){return(e[t]=r)&&e},{}));return t};exports.vestResolver=function(r,s,i){return void 0===i&&(i={}),function(s,n,a){try{var u=function(r){return r.hasErrors()?{values:{},errors:e.toNestError(o(r.getErrors(),!a.shouldUseNativeValidation&&"all"===a.criteriaMode),a)}:(a.shouldUseNativeValidation&&e.validateFieldsNatively({},a),{values:s,errors:{}})};return Promise.resolve("sync"===i.mode?u(r(s)):Promise.resolve(t.default(r)(s)).then(u))}catch(e){return Promise.reject(e)}}};
|
|
2
2
|
//# sourceMappingURL=vest.js.map
|
package/vest/dist/vest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vest.js","sources":["../src/vest.ts"],"sourcesContent":["import { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\nimport promisify from 'vest/promisify';\nimport type { VestErrors, Resolver } from './types';\n\nconst parseErrorSchema = (\n vestError: VestErrors,\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (const path in vestError) {\n if (!errors[path]) {\n errors[path] = { message: vestError[path][0], type: '' };\n }\n\n if (validateAllFieldCriteria) {\n errors[path].types = vestError[path].reduce<Record<number, string>>(\n (acc, message, index) => (acc[index] = message) && acc,\n {},\n );\n }\n }\n return errors;\n};\n\nexport const vestResolver: Resolver =\n (schema, _, resolverOptions = {}) =>\n async (values, _context, options) => {\n const result =\n resolverOptions.mode === 'sync'\n ? schema(values)\n : await promisify(schema)(values);\n\n if (result.hasErrors()) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n result.getErrors(),\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrorSchema","vestError","validateAllFieldCriteria","errors","path","message","type","types","reduce","acc","index","schema","_","resolverOptions","values","_context","options","result","hasErrors","toNestError","getErrors","shouldUseNativeValidation","criteriaMode","validateFieldsNatively","mode","promisify"],"mappings":"
|
|
1
|
+
{"version":3,"file":"vest.js","sources":["../src/vest.ts"],"sourcesContent":["import { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\nimport promisify from 'vest/promisify';\nimport type { VestErrors, Resolver } from './types';\n\nconst parseErrorSchema = (\n vestError: VestErrors,\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (const path in vestError) {\n if (!errors[path]) {\n errors[path] = { message: vestError[path][0], type: '' };\n }\n\n if (validateAllFieldCriteria) {\n errors[path].types = vestError[path].reduce<Record<number, string>>(\n (acc, message, index) => (acc[index] = message) && acc,\n {},\n );\n }\n }\n return errors;\n};\n\nexport const vestResolver: Resolver =\n (schema, _, resolverOptions = {}) =>\n async (values, _context, options) => {\n const result =\n resolverOptions.mode === 'sync'\n ? schema(values)\n : await promisify(schema)(values);\n\n if (result.hasErrors()) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n result.getErrors(),\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrorSchema","vestError","validateAllFieldCriteria","errors","path","message","type","types","reduce","acc","index","schema","_","resolverOptions","values","_context","options","result","hasErrors","toNestError","getErrors","shouldUseNativeValidation","criteriaMode","validateFieldsNatively","mode","promisify"],"mappings":"6JAKMA,EAAmB,SACvBC,EACAC,GAEA,IAAMC,EAAqC,GAC3C,IAAK,IAAMC,KAAQH,EACZE,EAAOC,KACVD,EAAOC,GAAQ,CAAEC,QAASJ,EAAUG,GAAM,GAAIE,KAAM,KAGlDJ,IACFC,EAAOC,GAAMG,MAAQN,EAAUG,GAAMI,OACnC,SAACC,EAAKJ,EAASK,UAAWD,EAAIC,GAASL,IAAYI,GACnD,KAIN,OAAON,wBAIP,SAACQ,EAAQC,EAAGC,mBAAAA,IAAAA,EAAkB,aACvBC,EAAQC,EAAUC,sBACjBC,GAKN,OAAIA,EAAOC,YACF,CACLJ,OAAQ,GACRX,OAAQgB,cACNnB,EACEiB,EAAOG,aACNJ,EAAQK,2BACkB,QAAzBL,EAAQM,cAEZN,KAKNA,EAAQK,2BAA6BE,yBAAuB,GAAIP,GAEzD,CAAEF,OAAAA,EAAQX,OAAQ,6BApBE,SAAzBU,EAAgBW,OACZb,EAAOG,oBACDW,UAAUd,EAAVc,CAAkBX,aALhC"}
|
package/vest/dist/vest.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("vest/promisify")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","vest/promisify"],r):r((e||self).hookformResolversVest={},e.hookformResolvers,e.promisify)}(this,function(e,r,o){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("vest/promisify")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","vest/promisify"],r):r((e||self).hookformResolversVest={},e.hookformResolvers,e.promisify)}(this,function(e,r,o){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=/*#__PURE__*/t(o),i=function(e,r){var o={};for(var t in e)o[t]||(o[t]={message:e[t][0],type:""}),r&&(o[t].types=e[t].reduce(function(e,r,o){return(e[o]=r)&&e},{}));return o};e.vestResolver=function(e,o,t){return void 0===t&&(t={}),function(o,n,f){try{var u=function(e){return e.hasErrors()?{values:{},errors:r.toNestError(i(e.getErrors(),!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)}:(f.shouldUseNativeValidation&&r.validateFieldsNatively({},f),{values:o,errors:{}})};return Promise.resolve("sync"===t.mode?u(e(o)):Promise.resolve(s.default(e)(o)).then(u))}catch(e){return Promise.reject(e)}}}});
|
|
2
2
|
//# sourceMappingURL=vest.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vest.umd.js","sources":["../src/vest.ts"],"sourcesContent":["import { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\nimport promisify from 'vest/promisify';\nimport type { VestErrors, Resolver } from './types';\n\nconst parseErrorSchema = (\n vestError: VestErrors,\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (const path in vestError) {\n if (!errors[path]) {\n errors[path] = { message: vestError[path][0], type: '' };\n }\n\n if (validateAllFieldCriteria) {\n errors[path].types = vestError[path].reduce<Record<number, string>>(\n (acc, message, index) => (acc[index] = message) && acc,\n {},\n );\n }\n }\n return errors;\n};\n\nexport const vestResolver: Resolver =\n (schema, _, resolverOptions = {}) =>\n async (values, _context, options) => {\n const result =\n resolverOptions.mode === 'sync'\n ? schema(values)\n : await promisify(schema)(values);\n\n if (result.hasErrors()) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n result.getErrors(),\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrorSchema","vestError","validateAllFieldCriteria","errors","path","message","type","types","reduce","acc","index","schema","_","resolverOptions","values","_context","options","result","hasErrors","toNestError","getErrors","shouldUseNativeValidation","criteriaMode","validateFieldsNatively","mode","promisify"],"mappings":"
|
|
1
|
+
{"version":3,"file":"vest.umd.js","sources":["../src/vest.ts"],"sourcesContent":["import { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\nimport promisify from 'vest/promisify';\nimport type { VestErrors, Resolver } from './types';\n\nconst parseErrorSchema = (\n vestError: VestErrors,\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (const path in vestError) {\n if (!errors[path]) {\n errors[path] = { message: vestError[path][0], type: '' };\n }\n\n if (validateAllFieldCriteria) {\n errors[path].types = vestError[path].reduce<Record<number, string>>(\n (acc, message, index) => (acc[index] = message) && acc,\n {},\n );\n }\n }\n return errors;\n};\n\nexport const vestResolver: Resolver =\n (schema, _, resolverOptions = {}) =>\n async (values, _context, options) => {\n const result =\n resolverOptions.mode === 'sync'\n ? schema(values)\n : await promisify(schema)(values);\n\n if (result.hasErrors()) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n result.getErrors(),\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrorSchema","vestError","validateAllFieldCriteria","errors","path","message","type","types","reduce","acc","index","schema","_","resolverOptions","values","_context","options","result","hasErrors","toNestError","getErrors","shouldUseNativeValidation","criteriaMode","validateFieldsNatively","mode","promisify"],"mappings":"mdAKMA,EAAmB,SACvBC,EACAC,GAEA,IAAMC,EAAqC,GAC3C,IAAK,IAAMC,KAAQH,EACZE,EAAOC,KACVD,EAAOC,GAAQ,CAAEC,QAASJ,EAAUG,GAAM,GAAIE,KAAM,KAGlDJ,IACFC,EAAOC,GAAMG,MAAQN,EAAUG,GAAMI,OACnC,SAACC,EAAKJ,EAASK,UAAWD,EAAIC,GAASL,IAAYI,GACnD,KAIN,OAAON,kBAIP,SAACQ,EAAQC,EAAGC,mBAAAA,IAAAA,EAAkB,aACvBC,EAAQC,EAAUC,sBACjBC,GAKN,OAAIA,EAAOC,YACF,CACLJ,OAAQ,GACRX,OAAQgB,cACNnB,EACEiB,EAAOG,aACNJ,EAAQK,2BACkB,QAAzBL,EAAQM,cAEZN,KAKNA,EAAQK,2BAA6BE,yBAAuB,GAAIP,GAEzD,CAAEF,OAAAA,EAAQX,OAAQ,6BApBE,SAAzBU,EAAgBW,OACZb,EAAOG,oBACDW,UAAUd,EAAVc,CAAkBX,aALhC"}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { render, screen, act } from '@testing-library/react';
|
|
3
3
|
import user from '@testing-library/user-event';
|
|
4
4
|
import { useForm } from 'react-hook-form';
|
|
5
|
-
import vest from 'vest';
|
|
5
|
+
import * as vest from 'vest';
|
|
6
6
|
import { vestResolver } from '..';
|
|
7
7
|
|
|
8
8
|
const USERNAME_REQUIRED_MESSAGE = 'username field is required';
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { render, screen, act } from '@testing-library/react';
|
|
3
3
|
import user from '@testing-library/user-event';
|
|
4
4
|
import { useForm } from 'react-hook-form';
|
|
5
|
-
import vest from 'vest';
|
|
5
|
+
import * as vest from 'vest';
|
|
6
6
|
import { vestResolver } from '..';
|
|
7
7
|
|
|
8
8
|
interface FormData {
|
package/vest/src/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
FieldValues,
|
|
2
3
|
ResolverOptions,
|
|
3
4
|
ResolverResult,
|
|
4
5
|
UnpackNestedValue,
|
|
@@ -7,11 +8,11 @@ import * as Vest from 'vest';
|
|
|
7
8
|
|
|
8
9
|
export type ICreateResult = ReturnType<typeof Vest.create>;
|
|
9
10
|
|
|
10
|
-
export type Resolver =
|
|
11
|
+
export type Resolver = (
|
|
11
12
|
schema: ICreateResult,
|
|
12
13
|
schemaOptions?: never,
|
|
13
14
|
factoryOptions?: { mode?: 'async' | 'sync' },
|
|
14
|
-
) => (
|
|
15
|
+
) => <TFieldValues extends FieldValues, TContext>(
|
|
15
16
|
values: UnpackNestedValue<TFieldValues>,
|
|
16
17
|
context: TContext | undefined,
|
|
17
18
|
options: ResolverOptions<TFieldValues>,
|
package/yup/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
|
|
2
2
|
import * as Yup from 'yup';
|
|
3
3
|
import type Lazy from 'yup/lib/Lazy';
|
|
4
4
|
declare type Options<T extends Yup.AnyObjectSchema | Lazy<any>> = Parameters<T['validate']>[1];
|
|
5
|
-
export declare type Resolver = <T extends Yup.AnyObjectSchema | Lazy<any
|
|
5
|
+
export declare type Resolver = <T extends Yup.AnyObjectSchema | Lazy<any>>(schema: T, schemaOptions?: Options<T>, factoryOptions?: {
|
|
6
6
|
mode?: 'async' | 'sync';
|
|
7
|
-
}) => (values:
|
|
7
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
|
8
8
|
export {};
|
package/yup/dist/yup.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@hookform/resolvers"),t=require("react-hook-form");exports.yupResolver=function(r,o,n){return void 0===o&&(o={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(o.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(r["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},o,{context:a}))).then(function(t){return i.shouldUseNativeValidation&&e.validateFieldsNatively({},i),{values:t,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(r){return{values:{},errors:e.toNestError((o=r,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,o.inner.reduce(function(e,r){if(e[r.path]||(e[r.path]={message:r.message,type:r.type}),n){var o=e[r.path].types,s=o&&o[r.type];e[r.path]=t.appendErrors(r.path,n,e,r.type,s?[].concat(s,r.message):r.message)}return e},{})),i)};var o,n}))}catch(e){return Promise.reject(e)}}};
|
|
1
|
+
var e=require("@hookform/resolvers"),t=require("react-hook-form");exports.yupResolver=function(r,o,n){return void 0===o&&(o={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(o.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(r["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},o,{context:a}))).then(function(t){return i.shouldUseNativeValidation&&e.validateFieldsNatively({},i),{values:t,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(r){return{values:{},errors:e.toNestError((o=r,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(o.inner||[]).reduce(function(e,r){if(e[r.path]||(e[r.path]={message:r.message,type:r.type}),n){var o=e[r.path].types,s=o&&o[r.type];e[r.path]=t.appendErrors(r.path,n,e,r.type,s?[].concat(s,r.message):r.message)}return e},{})),i)};var o,n}))}catch(e){return Promise.reject(e)}}};
|
|
2
2
|
//# sourceMappingURL=yup.js.map
|
package/yup/dist/yup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup
|
|
1
|
+
{"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","inner","reduce","previous","path","message","type","types","messages","appendErrors","concat"],"mappings":"sFAyCE,SAACA,EAAQC,EAAoBC,mBAApBD,IAAAA,EAAgB,aAAIC,IAAAA,EAAkB,aACxCC,EAAQC,EAASC,uDAEhBJ,EAAcG,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBV,EACM,SAAzBE,EAAgBS,KAAkB,eAAiB,YAEnDR,EACAS,OAAOC,OAAO,CAAEC,YAAY,GAASb,EAAe,CAAEG,QAAAA,oBAJlDW,GASN,OAFAV,EAAQW,2BAA6BC,yBAAuB,GAAIZ,GAEzD,CACLF,OAAQY,EACRG,OAAQ,4EAEHC,GACP,MAAO,CACLhB,OAAQ,GACRe,OAAQE,eAzDdC,EA2DUF,EA1DVG,GA2DWjB,EAAQW,2BACkB,QAAzBX,EAAQkB,cA1DZF,EAAMG,OAAS,IAAIC,OACzB,SAACC,EAAUL,GAKT,GAJKK,EAASL,EAAMM,QAClBD,EAASL,EAAMM,MAAS,CAAEC,QAASP,EAAMO,QAASC,KAAMR,EAAMQ,OAG5DP,EAA0B,CAC5B,IAAMQ,EAAQJ,EAASL,EAAMM,MAAOG,MAC9BC,EAAWD,GAASA,EAAMT,EAAMQ,MAEtCH,EAASL,EAAMM,MAASK,eACtBX,EAAMM,KACNL,EACAI,EACAL,EAAMQ,KACNE,EACK,GAAgBE,OAAOF,EAAsBV,EAAMO,SACpDP,EAAMO,SAId,OAAOF,GAET,KAqCMrB,IAhEe,IACvBgB,EACAC,KA8BA"}
|
package/yup/dist/yup.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,o.inner.reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
1
|
+
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.module.js.map
|
package/yup/dist/yup.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as o}from"react-hook-form";const a=(a,s={},r={})=>async(n,c,i)=>{try{s.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead");const t=await a["sync"===r.mode?"validateSync":"validate"](n,Object.assign({abortEarly:!1},s,{context:c}));return i.shouldUseNativeValidation&&e({},i),{values:t,errors:{}}}catch(e){return{values:{},errors:t((p=e,l=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,p.inner.reduce((e,t)=>{if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),l){const a=e[t.path].types,s=a&&a[t.type];e[t.path]=o(t.path,l,e,t.type,s?[].concat(s,t.message):t.message)}return e},{})),i)}}var p,l};export{a as yupResolver};
|
|
1
|
+
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as o}from"react-hook-form";const a=(a,s={},r={})=>async(n,c,i)=>{try{s.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead");const t=await a["sync"===r.mode?"validateSync":"validate"](n,Object.assign({abortEarly:!1},s,{context:c}));return i.shouldUseNativeValidation&&e({},i),{values:t,errors:{}}}catch(e){return{values:{},errors:t((p=e,l=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(p.inner||[]).reduce((e,t)=>{if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),l){const a=e[t.path].types,s=a&&a[t.type];e[t.path]=o(t.path,l,e,t.type,s?[].concat(s,t.message):t.message)}return e},{})),i)}}var p,l};export{a as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.modern.js.map
|