@hookform/resolvers 2.9.2 → 2.9.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/ajv/dist/types.d.ts +2 -2
- package/ajv/package.json +1 -1
- package/ajv/src/types.ts +1 -2
- package/class-validator/dist/types.d.ts +2 -2
- package/class-validator/package.json +1 -1
- package/class-validator/src/types.ts +1 -2
- package/computed-types/dist/computed-types.js +1 -1
- package/computed-types/dist/computed-types.js.map +1 -1
- package/computed-types/dist/computed-types.mjs +1 -1
- package/computed-types/dist/computed-types.modern.js +1 -1
- package/computed-types/dist/computed-types.modern.js.map +1 -1
- package/computed-types/dist/computed-types.module.js +1 -1
- package/computed-types/dist/computed-types.module.js.map +1 -1
- package/computed-types/dist/computed-types.umd.js +1 -1
- package/computed-types/dist/computed-types.umd.js.map +1 -1
- package/computed-types/dist/types.d.ts +2 -2
- package/computed-types/package.json +1 -1
- package/computed-types/src/__tests__/Form.tsx +9 -0
- package/computed-types/src/__tests__/__fixtures__/data.ts +14 -0
- package/computed-types/src/__tests__/__snapshots__/computed-types.ts.snap +22 -3
- package/computed-types/src/computed-types.ts +3 -11
- package/computed-types/src/types.ts +1 -2
- 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/dist/validateFieldsNatively.d.ts +2 -2
- package/io-ts/dist/types.d.ts +2 -2
- package/io-ts/package.json +1 -1
- package/io-ts/src/types.ts +1 -2
- package/joi/dist/types.d.ts +2 -2
- package/joi/package.json +1 -1
- package/joi/src/types.ts +1 -2
- package/nope/dist/nope.js.map +1 -1
- package/nope/dist/nope.modern.js.map +1 -1
- package/nope/dist/nope.module.js.map +1 -1
- package/nope/dist/nope.umd.js.map +1 -1
- package/nope/dist/types.d.ts +2 -2
- package/nope/package.json +1 -1
- package/nope/src/nope.ts +2 -2
- package/nope/src/types.ts +1 -2
- package/package.json +2 -2
- package/superstruct/dist/types.d.ts +2 -2
- package/superstruct/package.json +1 -1
- package/superstruct/src/types.ts +2 -3
- 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 +2 -2
- package/typanion/package.json +1 -1
- package/typanion/src/typanion.ts +2 -2
- package/typanion/src/types.ts +1 -2
- package/vest/package.json +1 -1
- package/vest/src/types.ts +1 -2
- package/yup/dist/types.d.ts +2 -2
- package/yup/package.json +1 -1
- package/yup/src/types.ts +1 -2
- package/zod/dist/types.d.ts +2 -2
- package/zod/package.json +1 -1
- package/zod/src/types.ts +1 -2
package/ajv/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
2
2
|
import * as Ajv from 'ajv';
|
|
3
3
|
export declare type Resolver = <T>(schema: Ajv.JSONSchemaType<T>, schemaOptions?: Ajv.Options, factoryOptions?: {
|
|
4
4
|
mode?: 'async' | 'sync';
|
|
5
|
-
}) => <TFieldValues extends FieldValues, TContext>(values:
|
|
5
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
package/ajv/package.json
CHANGED
package/ajv/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import * as Ajv from 'ajv';
|
|
8
7
|
|
|
@@ -11,7 +10,7 @@ export type Resolver = <T>(
|
|
|
11
10
|
schemaOptions?: Ajv.Options,
|
|
12
11
|
factoryOptions?: { mode?: 'async' | 'sync' },
|
|
13
12
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
14
|
-
values:
|
|
13
|
+
values: TFieldValues,
|
|
15
14
|
context: TContext | undefined,
|
|
16
15
|
options: ResolverOptions<TFieldValues>,
|
|
17
16
|
) => Promise<ResolverResult<TFieldValues>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
2
2
|
import { ValidatorOptions } from 'class-validator';
|
|
3
3
|
import { ClassConstructor } from 'class-transformer';
|
|
4
4
|
export declare type Resolver = <T extends {
|
|
@@ -6,4 +6,4 @@ export declare type Resolver = <T extends {
|
|
|
6
6
|
}>(schema: ClassConstructor<T>, schemaOptions?: ValidatorOptions, resolverOptions?: {
|
|
7
7
|
mode?: 'async' | 'sync';
|
|
8
8
|
rawValues?: boolean;
|
|
9
|
-
}) => <TFieldValues extends FieldValues, TContext>(values:
|
|
9
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import { ValidatorOptions } from 'class-validator';
|
|
8
7
|
import { ClassConstructor } from 'class-transformer';
|
|
@@ -12,7 +11,7 @@ export type Resolver = <T extends { [_: string]: any }>(
|
|
|
12
11
|
schemaOptions?: ValidatorOptions,
|
|
13
12
|
resolverOptions?: { mode?: 'async' | 'sync', rawValues?: boolean; },
|
|
14
13
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
15
|
-
values:
|
|
14
|
+
values: TFieldValues,
|
|
16
15
|
context: TContext | undefined,
|
|
17
16
|
options: ResolverOptions<TFieldValues>,
|
|
18
17
|
) => Promise<ResolverResult<TFieldValues>>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r=require("@hookform/resolvers")
|
|
1
|
+
var r=require("@hookform/resolvers");exports.computedTypesResolver=function(e){return function(t,o,n){try{return Promise.resolve(function(o,s){try{var u=Promise.resolve(e(t)).then(function(e){return n.shouldUseNativeValidation&&r.validateFieldsNatively({},n),{errors:{},values:e}})}catch(r){return s(r)}return u&&u.then?u.then(void 0,s):u}(0,function(e){return{values:{},errors:r.toNestError((t=e,(t.errors||[]).reduce(function(r,e){return r[e.path.join(".")]={type:e.error.name,message:e.error.message},r},{})),n)};var t}))}catch(r){return Promise.reject(r)}}};
|
|
2
2
|
//# sourceMappingURL=computed-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed-types.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (
|
|
1
|
+
{"version":3,"file":"computed-types.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (computedTypesError: ValidationError) => {\n const parsedErrors: FieldErrors = {};\n return (computedTypesError.errors || []).reduce((acc, error) => {\n acc[error.path.join('.')] = {\n type: error.error.name,\n message: error.error.message,\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const computedTypesResolver: Resolver =\n (schema) => async (values, _, options) => {\n try {\n const data = await schema(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(error), options),\n };\n }\n };\n"],"names":["schema","values","_","options","data","shouldUseNativeValidation","validateFieldsNatively","errors","error","toNestError","computedTypesError","reduce","acc","path","join","type","name","message"],"mappings":"mEAkBE,SAACA,mBAAkBC,EAAQC,EAAGC,sEAEPH,EAAOC,kBAApBG,GAIN,OAFAD,EAAQE,2BAA6BC,yBAAuB,GAAIH,GAEzD,CACLI,OAAQ,GACRN,OAAQG,0EAEHI,GACP,MAAO,CACLP,OAAQ,GACRM,OAAQE,eA1BUC,EA0BmBF,GAxBnCE,EAAmBH,QAAU,IAAII,OAAO,SAACC,EAAKJ,GAMpD,OALAI,EAAIJ,EAAMK,KAAKC,KAAK,MAAQ,CAC1BC,KAAMP,EAAMA,MAAMQ,KAClBC,QAAST,EAAMA,MAAMS,SAGhBL,GAPyB,KAyBiBT,IA1B5B,IAACO,KAaxB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";var t=function
|
|
1
|
+
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";var t=function(t){return function(o,n,s){try{return Promise.resolve(function(e,n){try{var u=Promise.resolve(t(o)).then(function(e){return s.shouldUseNativeValidation&&r({},s),{errors:{},values:e}})}catch(r){return n(r)}return u&&u.then?u.then(void 0,n):u}(0,function(r){return{values:{},errors:e((t=r,(t.errors||[]).reduce(function(r,e){return r[e.path.join(".")]={type:e.error.name,message:e.error.message},r},{})),s)};var t}))}catch(r){return Promise.reject(r)}}};export{t as computedTypesResolver};
|
|
2
2
|
//# sourceMappingURL=computed-types.module.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";const o=
|
|
1
|
+
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";const o=o=>async(s,a,t)=>{try{const e=await o(s);return t.shouldUseNativeValidation&&r({},t),{errors:{},values:e}}catch(r){return{values:{},errors:e((n=r,(n.errors||[]).reduce((r,e)=>(r[e.path.join(".")]={type:e.error.name,message:e.error.message},r),{})),t)}}var n};export{o as computedTypesResolver};
|
|
2
2
|
//# sourceMappingURL=computed-types.modern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed-types.modern.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (
|
|
1
|
+
{"version":3,"file":"computed-types.modern.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (computedTypesError: ValidationError) => {\n const parsedErrors: FieldErrors = {};\n return (computedTypesError.errors || []).reduce((acc, error) => {\n acc[error.path.join('.')] = {\n type: error.error.name,\n message: error.error.message,\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const computedTypesResolver: Resolver =\n (schema) => async (values, _, options) => {\n try {\n const data = await schema(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(error), options),\n };\n }\n };\n"],"names":["computedTypesResolver","schema","async","values","_","options","data","shouldUseNativeValidation","validateFieldsNatively","errors","error","toNestError","computedTypesError","reduce","acc","path","join","type","name","message"],"mappings":"8EAKA,MAYaA,EACVC,GAAWC,MAAOC,EAAQC,EAAGC,KAC5B,IACE,MAAMC,QAAaL,EAAOE,GAI1B,OAFAE,EAAQE,2BAA6BC,EAAuB,GAAIH,GAEzD,CACLI,OAAQ,GACRN,OAAQG,GAEV,MAAOI,GACP,MAAO,CACLP,OAAQ,GACRM,OAAQE,GA1BUC,EA0BmBF,GAxBnCE,EAAmBH,QAAU,IAAII,OAAO,CAACC,EAAKJ,KACpDI,EAAIJ,EAAMK,KAAKC,KAAK,MAAQ,CAC1BC,KAAMP,EAAMA,MAAMQ,KAClBC,QAAST,EAAMA,MAAMS,SAGhBL,GAPyB,KAyBiBT,IA1B3BO,IAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";var t=function
|
|
1
|
+
import{validateFieldsNatively as r,toNestError as e}from"@hookform/resolvers";var t=function(t){return function(o,n,s){try{return Promise.resolve(function(e,n){try{var u=Promise.resolve(t(o)).then(function(e){return s.shouldUseNativeValidation&&r({},s),{errors:{},values:e}})}catch(r){return n(r)}return u&&u.then?u.then(void 0,n):u}(0,function(r){return{values:{},errors:e((t=r,(t.errors||[]).reduce(function(r,e){return r[e.path.join(".")]={type:e.error.name,message:e.error.message},r},{})),s)};var t}))}catch(r){return Promise.reject(r)}}};export{t as computedTypesResolver};
|
|
2
2
|
//# sourceMappingURL=computed-types.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed-types.module.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (
|
|
1
|
+
{"version":3,"file":"computed-types.module.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (computedTypesError: ValidationError) => {\n const parsedErrors: FieldErrors = {};\n return (computedTypesError.errors || []).reduce((acc, error) => {\n acc[error.path.join('.')] = {\n type: error.error.name,\n message: error.error.message,\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const computedTypesResolver: Resolver =\n (schema) => async (values, _, options) => {\n try {\n const data = await schema(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(error), options),\n };\n }\n };\n"],"names":["computedTypesResolver","schema","values","_","options","data","shouldUseNativeValidation","validateFieldsNatively","errors","error","toNestError","computedTypesError","reduce","acc","path","join","type","name","message"],"mappings":"8EAKA,IAYaA,EACX,SAACC,mBAAkBC,EAAQC,EAAGC,sEAEPH,EAAOC,kBAApBG,GAIN,OAFAD,EAAQE,2BAA6BC,EAAuB,GAAIH,GAEzD,CACLI,OAAQ,GACRN,OAAQG,0EAEHI,GACP,MAAO,CACLP,OAAQ,GACRM,OAAQE,GA1BUC,EA0BmBF,GAxBnCE,EAAmBH,QAAU,IAAII,OAAO,SAACC,EAAKJ,GAMpD,OALAI,EAAIJ,EAAMK,KAAKC,KAAK,MAAQ,CAC1BC,KAAMP,EAAMA,MAAMQ,KAClBC,QAAST,EAAMA,MAAMS,SAGhBL,GAPyB,KAyBiBT,IA1B5B,IAACO,KAaxB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers"],r):r((e||self).hookformResolversComputedTypes={},e.hookformResolvers)}(this,function(e,r){
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers"],r):r((e||self).hookformResolversComputedTypes={},e.hookformResolvers)}(this,function(e,r){e.computedTypesResolver=function(e){return function(o,t,n){try{return Promise.resolve(function(t,s){try{var i=Promise.resolve(e(o)).then(function(e){return n.shouldUseNativeValidation&&r.validateFieldsNatively({},n),{errors:{},values:e}})}catch(e){return s(e)}return i&&i.then?i.then(void 0,s):i}(0,function(e){return{values:{},errors:r.toNestError((o=e,(o.errors||[]).reduce(function(e,r){return e[r.path.join(".")]={type:r.error.name,message:r.error.message},e},{})),n)};var o}))}catch(e){return Promise.reject(e)}}}});
|
|
2
2
|
//# sourceMappingURL=computed-types.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed-types.umd.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (
|
|
1
|
+
{"version":3,"file":"computed-types.umd.js","sources":["../src/computed-types.ts"],"sourcesContent":["import type { FieldErrors } from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'computed-types';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (computedTypesError: ValidationError) => {\n const parsedErrors: FieldErrors = {};\n return (computedTypesError.errors || []).reduce((acc, error) => {\n acc[error.path.join('.')] = {\n type: error.error.name,\n message: error.error.message,\n };\n\n return acc;\n }, parsedErrors);\n};\n\nexport const computedTypesResolver: Resolver =\n (schema) => async (values, _, options) => {\n try {\n const data = await schema(values);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: toNestError(parseErrorSchema(error), options),\n };\n }\n };\n"],"names":["schema","values","_","options","data","shouldUseNativeValidation","validateFieldsNatively","errors","error","toNestError","computedTypesError","reduce","acc","path","join","type","name","message"],"mappings":"2VAkBE,SAACA,mBAAkBC,EAAQC,EAAGC,sEAEPH,EAAOC,kBAApBG,GAIN,OAFAD,EAAQE,2BAA6BC,yBAAuB,GAAIH,GAEzD,CACLI,OAAQ,GACRN,OAAQG,0EAEHI,GACP,MAAO,CACLP,OAAQ,GACRM,OAAQE,eA1BUC,EA0BmBF,GAxBnCE,EAAmBH,QAAU,IAAII,OAAO,SAACC,EAAKJ,GAMpD,OALAI,EAAIJ,EAAMK,KAAKC,KAAK,MAAQ,CAC1BC,KAAMP,EAAMA,MAAMQ,KAClBC,QAAST,EAAMA,MAAMS,SAGhBL,GAPyB,KAyBiBT,IA1B5B,IAACO,KAaxB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FieldValues, ResolverResult,
|
|
2
|
-
export declare type Resolver = (schema: any) => <TFieldValues extends FieldValues, TContext>(values:
|
|
1
|
+
import type { FieldValues, ResolverResult, ResolverOptions } from 'react-hook-form';
|
|
2
|
+
export declare type Resolver = (schema: any) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
|
@@ -8,6 +8,9 @@ import { computedTypesResolver } from '..';
|
|
|
8
8
|
const schema = Schema({
|
|
9
9
|
username: string.min(2).error('username field is required'),
|
|
10
10
|
password: string.min(2).error('password field is required'),
|
|
11
|
+
address: Schema({
|
|
12
|
+
zipCode: string.min(5).max(5).error('zipCode field is required'),
|
|
13
|
+
}),
|
|
11
14
|
});
|
|
12
15
|
|
|
13
16
|
type FormData = Type<typeof schema> & { unusedProperty: string };
|
|
@@ -33,6 +36,11 @@ function TestComponent({ onSubmit }: Props) {
|
|
|
33
36
|
<input {...register('password')} />
|
|
34
37
|
{errors.password && <span role="alert">{errors.password.message}</span>}
|
|
35
38
|
|
|
39
|
+
<input {...register('address.zipCode')} />
|
|
40
|
+
{errors.address?.zipCode && (
|
|
41
|
+
<span role="alert">{errors.address.zipCode.message}</span>
|
|
42
|
+
)}
|
|
43
|
+
|
|
36
44
|
<button type="submit">submit</button>
|
|
37
45
|
</form>
|
|
38
46
|
);
|
|
@@ -50,5 +58,6 @@ test("form's validation with computed-types and TypeScript's integration", async
|
|
|
50
58
|
|
|
51
59
|
expect(screen.getByText(/username field is required/i)).toBeInTheDocument();
|
|
52
60
|
expect(screen.getByText(/password field is required/i)).toBeInTheDocument();
|
|
61
|
+
expect(screen.getByText(/zipCode field is required/i)).toBeInTheDocument();
|
|
53
62
|
expect(handleSubmit).not.toHaveBeenCalled();
|
|
54
63
|
});
|
|
@@ -26,6 +26,12 @@ export const schema = Schema({
|
|
|
26
26
|
name: string.min(4).max(4),
|
|
27
27
|
})
|
|
28
28
|
.optional(),
|
|
29
|
+
address: Schema({
|
|
30
|
+
city: string.min(3, 'Is required'),
|
|
31
|
+
zipCode: string
|
|
32
|
+
.min(5, 'Must be 5 characters long')
|
|
33
|
+
.max(5, 'Must be 5 characters long'),
|
|
34
|
+
}),
|
|
29
35
|
});
|
|
30
36
|
|
|
31
37
|
export const validData: Type<typeof schema> = {
|
|
@@ -43,6 +49,10 @@ export const validData: Type<typeof schema> = {
|
|
|
43
49
|
name: 'name',
|
|
44
50
|
},
|
|
45
51
|
],
|
|
52
|
+
address: {
|
|
53
|
+
city: 'Awesome city',
|
|
54
|
+
zipCode: '12345',
|
|
55
|
+
},
|
|
46
56
|
};
|
|
47
57
|
|
|
48
58
|
export const invalidData = {
|
|
@@ -50,6 +60,10 @@ export const invalidData = {
|
|
|
50
60
|
email: '',
|
|
51
61
|
birthYear: 'birthYear',
|
|
52
62
|
like: [{ id: 'z' }],
|
|
63
|
+
address: {
|
|
64
|
+
city: '',
|
|
65
|
+
zipCode: '123',
|
|
66
|
+
},
|
|
53
67
|
};
|
|
54
68
|
|
|
55
69
|
export const fields: Record<InternalFieldName, Field['_f']> = {
|
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
exports[`computedTypesResolver should return a single error from computedTypesResolver when validation fails 1`] = `
|
|
4
4
|
Object {
|
|
5
5
|
"errors": Object {
|
|
6
|
+
"address": Object {
|
|
7
|
+
"city": Object {
|
|
8
|
+
"message": "Is required",
|
|
9
|
+
"ref": undefined,
|
|
10
|
+
"type": "ValidationError",
|
|
11
|
+
},
|
|
12
|
+
"zipCode": Object {
|
|
13
|
+
"message": "Must be 5 characters long",
|
|
14
|
+
"ref": undefined,
|
|
15
|
+
"type": "ValidationError",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
6
18
|
"birthYear": Object {
|
|
7
19
|
"message": "Expect value to be \\"number\\"",
|
|
8
20
|
"ref": undefined,
|
|
@@ -21,9 +33,16 @@ Object {
|
|
|
21
33
|
"type": "ValidationError",
|
|
22
34
|
},
|
|
23
35
|
"like": Object {
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
36
|
+
"id": Object {
|
|
37
|
+
"message": "Expect value to be \\"number\\"",
|
|
38
|
+
"ref": undefined,
|
|
39
|
+
"type": "ValidationError",
|
|
40
|
+
},
|
|
41
|
+
"name": Object {
|
|
42
|
+
"message": "Expect value to be \\"string\\"",
|
|
43
|
+
"ref": undefined,
|
|
44
|
+
"type": "ValidationError",
|
|
45
|
+
},
|
|
27
46
|
},
|
|
28
47
|
"password": Object {
|
|
29
48
|
"message": "One uppercase character",
|
|
@@ -3,22 +3,14 @@ import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
|
|
|
3
3
|
import type { ValidationError } from 'computed-types';
|
|
4
4
|
import type { Resolver } from './types';
|
|
5
5
|
|
|
6
|
-
const parseErrorSchema = (
|
|
7
|
-
|
|
8
|
-
parsedErrors: FieldErrors = {},
|
|
9
|
-
path = '',
|
|
10
|
-
) => {
|
|
6
|
+
const parseErrorSchema = (computedTypesError: ValidationError) => {
|
|
7
|
+
const parsedErrors: FieldErrors = {};
|
|
11
8
|
return (computedTypesError.errors || []).reduce((acc, error) => {
|
|
12
|
-
|
|
13
|
-
const _path = path ? `${path}.${_currentPath}` : _currentPath;
|
|
14
|
-
|
|
15
|
-
acc[_path] = {
|
|
9
|
+
acc[error.path.join('.')] = {
|
|
16
10
|
type: error.error.name,
|
|
17
11
|
message: error.error.message,
|
|
18
12
|
};
|
|
19
13
|
|
|
20
|
-
parseErrorSchema(error.error, acc, _path);
|
|
21
|
-
|
|
22
14
|
return acc;
|
|
23
15
|
}, parsedErrors);
|
|
24
16
|
};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverResult,
|
|
4
|
-
UnpackNestedValue,
|
|
5
4
|
ResolverOptions,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
|
|
8
7
|
export type Resolver = (
|
|
9
8
|
schema: any,
|
|
10
9
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
11
|
-
values:
|
|
10
|
+
values: TFieldValues,
|
|
12
11
|
context: TContext | undefined,
|
|
13
12
|
options: ResolverOptions<TFieldValues>,
|
|
14
13
|
) => Promise<ResolverResult<TFieldValues>>;
|
package/dist/resolvers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors:
|
|
1
|
+
{"version":3,"file":"resolvers.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref, FieldErrors\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: FieldErrors) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestError = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"iCAIMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,MAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,wBCXc,SACzBC,EACAM,GAEAA,EAAQK,2BAA6BN,EAAuBL,EAAQM,GAEpE,IAAMM,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMO,EAAQL,MAAII,EAAQE,OAAQK,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAEf,IAAKS,GAASA,EAAMT,OAItD,OAAOc"}
|
package/dist/resolvers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.mjs","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors:
|
|
1
|
+
{"version":3,"file":"resolvers.mjs","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref, FieldErrors\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: FieldErrors) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestError = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","fields","field","refs","forEach","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAIA,MAAMA,EAAoB,CAACC,EAAUC,EAAmBC,KACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,MAAMG,EAAQC,EAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,CACpCL,EACAM,KAIA,IAAK,MAAMP,KAAaO,EAAQC,OAAQ,CACtC,MAAMC,EAAQF,EAAQC,OAAOR,GACzBS,GAASA,EAAMV,KAAO,mBAAoBU,EAAMV,IAClDD,EAAkBW,EAAMV,IAAKC,EAAWC,GAC/BQ,EAAMC,MACfD,EAAMC,KAAKC,QAASZ,GAA0BD,EAAkBC,EAAKC,EAAWC,MChBzEW,EAAc,CACzBX,EACAM,KAEAA,EAAQM,2BAA6BP,EAAuBL,EAAQM,GAEpE,MAAMO,EAAc,GACpB,IAAK,MAAMC,KAAQd,EAAQ,CACzB,MAAMQ,EAAQN,EAAII,EAAQC,OAAQO,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAEhB,IAAKU,GAASA,EAAMV,OAItD,OAAOe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.module.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors:
|
|
1
|
+
{"version":3,"file":"resolvers.module.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref, FieldErrors\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: FieldErrors) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestError = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAIA,IAAMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,EAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,ICXAY,EAAc,SACzBX,EACAM,GAEAA,EAAQM,2BAA6BP,EAAuBL,EAAQM,GAEpE,IAAMO,EAAc,GACpB,IAAK,IAAMC,KAAQd,EAAQ,CACzB,IAAMO,EAAQL,EAAII,EAAQE,OAAQM,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAEhB,IAAKS,GAASA,EAAMT,OAItD,OAAOe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.umd.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors:
|
|
1
|
+
{"version":3,"file":"resolvers.umd.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref, FieldErrors\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: FieldErrors) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestError = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"0SAIA,IAAMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,MAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,kBCXc,SACzBC,EACAM,GAEAA,EAAQK,2BAA6BN,EAAuBL,EAAQM,GAEpE,IAAMM,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMO,EAAQL,MAAII,EAAQE,OAAQK,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAEf,IAAKS,GAASA,EAAMT,OAItD,OAAOc"}
|
package/dist/toNestError.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const toNestError: <TFieldValues>(errors:
|
|
1
|
+
import { FieldErrors, ResolverOptions } from 'react-hook-form';
|
|
2
|
+
export declare const toNestError: <TFieldValues>(errors: FieldErrors, options: ResolverOptions<TFieldValues>) => FieldErrors<TFieldValues>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const validateFieldsNatively: <TFieldValues>(errors:
|
|
1
|
+
import { ResolverOptions, FieldErrors } from 'react-hook-form';
|
|
2
|
+
export declare const validateFieldsNatively: <TFieldValues>(errors: FieldErrors, options: ResolverOptions<TFieldValues>) => void;
|
package/io-ts/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as t from 'io-ts';
|
|
2
|
-
import { FieldError, FieldValues, ResolverOptions, ResolverResult
|
|
3
|
-
export declare type Resolver = <T, TFieldValues, TContext>(codec: t.Decoder<FieldValues, T>) => (values:
|
|
2
|
+
import { FieldError, FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
3
|
+
export declare type Resolver = <T, TFieldValues, TContext>(codec: t.Decoder<FieldValues, T>) => (values: TFieldValues, _context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
4
4
|
export declare type ErrorObject = Record<string, FieldError>;
|
|
5
5
|
export declare type FieldErrorWithPath = FieldError & {
|
|
6
6
|
path: string;
|
package/io-ts/package.json
CHANGED
package/io-ts/src/types.ts
CHANGED
|
@@ -4,13 +4,12 @@ import {
|
|
|
4
4
|
FieldValues,
|
|
5
5
|
ResolverOptions,
|
|
6
6
|
ResolverResult,
|
|
7
|
-
UnpackNestedValue,
|
|
8
7
|
} from 'react-hook-form';
|
|
9
8
|
|
|
10
9
|
export type Resolver = <T, TFieldValues, TContext>(
|
|
11
10
|
codec: t.Decoder<FieldValues, T>,
|
|
12
11
|
) => (
|
|
13
|
-
values:
|
|
12
|
+
values: TFieldValues,
|
|
14
13
|
_context: TContext | undefined,
|
|
15
14
|
options: ResolverOptions<TFieldValues>,
|
|
16
15
|
) => ResolverResult<TFieldValues>;
|
package/joi/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
2
2
|
import type { AsyncValidationOptions, Schema } from 'joi';
|
|
3
3
|
export declare type Resolver = <T extends Schema>(schema: T, schemaOptions?: AsyncValidationOptions, factoryOptions?: {
|
|
4
4
|
mode?: 'async' | 'sync';
|
|
5
|
-
}) => <TFieldValues extends FieldValues, TContext>(values:
|
|
5
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
package/joi/package.json
CHANGED
package/joi/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import type { AsyncValidationOptions, Schema } from 'joi';
|
|
8
7
|
|
|
@@ -11,7 +10,7 @@ export type Resolver = <T extends Schema>(
|
|
|
11
10
|
schemaOptions?: AsyncValidationOptions,
|
|
12
11
|
factoryOptions?: { mode?: 'async' | 'sync' },
|
|
13
12
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
14
|
-
values:
|
|
13
|
+
values: TFieldValues,
|
|
15
14
|
context: TContext | undefined,
|
|
16
15
|
options: ResolverOptions<TFieldValues>,
|
|
17
16
|
) => Promise<ResolverResult<TFieldValues>>;
|
package/nope/dist/nope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nope.js","sources":["../src/nope.ts"],"sourcesContent":["import type { FieldErrors
|
|
1
|
+
{"version":3,"file":"nope.js","sources":["../src/nope.ts"],"sourcesContent":["import type {FieldError, FieldErrors} from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { Resolver } from './types';\n\nconst parseErrors = (\n errors: ShapeErrors,\n parsedErrors: FieldErrors = {},\n path = '',\n) => {\n return Object.keys(errors).reduce((acc, key) => {\n const _path = path ? `${path}.${key}` : key;\n const error = errors[key];\n\n if (typeof error === 'string') {\n acc[_path] = {\n message: error,\n } as FieldError;\n } else {\n parseErrors(error, acc, _path);\n }\n\n return acc;\n }, parsedErrors);\n};\n\nexport const nopeResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n ) =>\n (values, context, options) => {\n const result = schema.validate(values, context, schemaOptions) as\n | ShapeErrors\n | undefined;\n\n if (result) {\n return { values: {}, errors: toNestError(parseErrors(result), options) };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrors","errors","parsedErrors","path","Object","keys","reduce","acc","key","_path","error","message","schema","schemaOptions","abortEarly","values","context","options","result","validate","toNestError","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"qCAKMA,EAAc,SAAdA,EACJC,EACAC,EACAC,GAEA,gBAHAD,IAAAA,EAA4B,aAC5BC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,MAAQK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,GACNL,yBAIH,SACEU,EACAC,mBAAAA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAId,OAAQmB,cAAYpB,EAAYkB,GAASD,KAGhEA,EAAQI,2BAA6BC,yBAAuB,GAAIL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nope.modern.js","sources":["../src/nope.ts"],"sourcesContent":["import type { FieldErrors
|
|
1
|
+
{"version":3,"file":"nope.modern.js","sources":["../src/nope.ts"],"sourcesContent":["import type {FieldError, FieldErrors} from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { Resolver } from './types';\n\nconst parseErrors = (\n errors: ShapeErrors,\n parsedErrors: FieldErrors = {},\n path = '',\n) => {\n return Object.keys(errors).reduce((acc, key) => {\n const _path = path ? `${path}.${key}` : key;\n const error = errors[key];\n\n if (typeof error === 'string') {\n acc[_path] = {\n message: error,\n } as FieldError;\n } else {\n parseErrors(error, acc, _path);\n }\n\n return acc;\n }, parsedErrors);\n};\n\nexport const nopeResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n ) =>\n (values, context, options) => {\n const result = schema.validate(values, context, schemaOptions) as\n | ShapeErrors\n | undefined;\n\n if (result) {\n return { values: {}, errors: toNestError(parseErrors(result), options) };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrors","errors","parsedErrors","path","Object","keys","reduce","acc","key","_path","error","message","nopeResolver","schema","schemaOptions","abortEarly","values","context","options","result","validate","toNestError","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"8EAKA,MAAMA,EAAc,CAClBC,EACAC,EAA4B,GAC5BC,EAAO,KAEAC,OAAOC,KAAKJ,GAAQK,OAAO,CAACC,EAAKC,KACtC,MAAMC,EAAQN,KAAUA,KAAQK,IAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,GACNL,GAGQU,EACX,CACEC,EACAC,EAAgB,CACdC,YAAY,KAGhB,CAACC,EAAQC,EAASC,KAChB,MAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAIf,OAAQoB,EAAYrB,EAAYmB,GAASD,KAGhEA,EAAQI,2BAA6BC,EAAuB,GAAIL,GAEzD,CAAEF,OAAAA,EAAQf,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nope.module.js","sources":["../src/nope.ts"],"sourcesContent":["import type { FieldErrors
|
|
1
|
+
{"version":3,"file":"nope.module.js","sources":["../src/nope.ts"],"sourcesContent":["import type {FieldError, FieldErrors} from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { Resolver } from './types';\n\nconst parseErrors = (\n errors: ShapeErrors,\n parsedErrors: FieldErrors = {},\n path = '',\n) => {\n return Object.keys(errors).reduce((acc, key) => {\n const _path = path ? `${path}.${key}` : key;\n const error = errors[key];\n\n if (typeof error === 'string') {\n acc[_path] = {\n message: error,\n } as FieldError;\n } else {\n parseErrors(error, acc, _path);\n }\n\n return acc;\n }, parsedErrors);\n};\n\nexport const nopeResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n ) =>\n (values, context, options) => {\n const result = schema.validate(values, context, schemaOptions) as\n | ShapeErrors\n | undefined;\n\n if (result) {\n return { values: {}, errors: toNestError(parseErrors(result), options) };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrors","errors","parsedErrors","path","Object","keys","reduce","acc","key","_path","error","message","nopeResolver","schema","schemaOptions","abortEarly","values","context","options","result","validate","toNestError","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"8EAKA,IAAMA,EAAc,SAAdA,EACJC,EACAC,EACAC,GAEA,gBAHAD,IAAAA,EAA4B,aAC5BC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,MAAQK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,GACNL,IAGQU,EACX,SACEC,EACAC,mBAAAA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAIf,OAAQoB,EAAYrB,EAAYmB,GAASD,KAGhEA,EAAQI,2BAA6BC,EAAuB,GAAIL,GAEzD,CAAEF,OAAAA,EAAQf,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nope.umd.js","sources":["../src/nope.ts"],"sourcesContent":["import type { FieldErrors
|
|
1
|
+
{"version":3,"file":"nope.umd.js","sources":["../src/nope.ts"],"sourcesContent":["import type {FieldError, FieldErrors} from 'react-hook-form';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { Resolver } from './types';\n\nconst parseErrors = (\n errors: ShapeErrors,\n parsedErrors: FieldErrors = {},\n path = '',\n) => {\n return Object.keys(errors).reduce((acc, key) => {\n const _path = path ? `${path}.${key}` : key;\n const error = errors[key];\n\n if (typeof error === 'string') {\n acc[_path] = {\n message: error,\n } as FieldError;\n } else {\n parseErrors(error, acc, _path);\n }\n\n return acc;\n }, parsedErrors);\n};\n\nexport const nopeResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n ) =>\n (values, context, options) => {\n const result = schema.validate(values, context, schemaOptions) as\n | ShapeErrors\n | undefined;\n\n if (result) {\n return { values: {}, errors: toNestError(parseErrors(result), options) };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return { values, errors: {} };\n };\n"],"names":["parseErrors","errors","parsedErrors","path","Object","keys","reduce","acc","key","_path","error","message","schema","schemaOptions","abortEarly","values","context","options","result","validate","toNestError","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"0TAKA,IAAMA,EAAc,SAAdA,EACJC,EACAC,EACAC,GAEA,gBAHAD,IAAAA,EAA4B,aAC5BC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,MAAQK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,GACNL,mBAIH,SACEU,EACAC,mBAAAA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAId,OAAQmB,cAAYpB,EAAYkB,GAASD,KAGhEA,EAAQI,2BAA6BC,yBAAuB,GAAIL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ"}
|
package/nope/dist/types.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import type { FieldValues, ResolverOptions, ResolverResult } 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
5
|
export declare type Resolver = <T extends NopeObject>(schema: T, schemaOptions?: ValidateOptions, resolverOptions?: {
|
|
6
6
|
mode?: 'async' | 'sync';
|
|
7
7
|
rawValues?: boolean;
|
|
8
|
-
}) => <TFieldValues extends FieldValues, TContext extends Context>(values:
|
|
8
|
+
}) => <TFieldValues extends FieldValues, TContext extends Context>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
9
9
|
export {};
|
package/nope/package.json
CHANGED
package/nope/src/nope.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FieldErrors
|
|
1
|
+
import type {FieldError, FieldErrors} from 'react-hook-form';
|
|
2
2
|
import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
|
|
3
3
|
import type { ShapeErrors } from 'nope-validator/lib/cjs/types';
|
|
4
4
|
import type { Resolver } from './types';
|
|
@@ -15,7 +15,7 @@ const parseErrors = (
|
|
|
15
15
|
if (typeof error === 'string') {
|
|
16
16
|
acc[_path] = {
|
|
17
17
|
message: error,
|
|
18
|
-
};
|
|
18
|
+
} as FieldError;
|
|
19
19
|
} else {
|
|
20
20
|
parseErrors(error, acc, _path);
|
|
21
21
|
}
|
package/nope/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import type {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import type { NopeObject } from 'nope-validator/lib/cjs/NopeObject';
|
|
8
7
|
|
|
@@ -14,7 +13,7 @@ export type Resolver = <T extends NopeObject>(
|
|
|
14
13
|
schemaOptions?: ValidateOptions,
|
|
15
14
|
resolverOptions?: { mode?: 'async' | 'sync', rawValues?: boolean; },
|
|
16
15
|
) => <TFieldValues extends FieldValues, TContext extends Context>(
|
|
17
|
-
values:
|
|
16
|
+
values: TFieldValues,
|
|
18
17
|
context: TContext | undefined,
|
|
19
18
|
options: ResolverOptions<TFieldValues>,
|
|
20
19
|
) => ResolverResult<TFieldValues>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hookform/resolvers",
|
|
3
3
|
"amdName": "hookformResolvers",
|
|
4
|
-
"version": "2.9.
|
|
4
|
+
"version": "2.9.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",
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"prettier": "^2.5.1",
|
|
206
206
|
"react": "^17.0.2",
|
|
207
207
|
"react-dom": "^17.0.2",
|
|
208
|
-
"react-hook-form": "7.
|
|
208
|
+
"react-hook-form": "^7.33.0",
|
|
209
209
|
"reflect-metadata": "^0.1.13",
|
|
210
210
|
"superstruct": "^0.15.3",
|
|
211
211
|
"ts-jest": "^27.1.3",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult } 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 = <T extends Struct<any, any>>(schema: T,
|
|
4
|
+
export declare type Resolver = <T extends Struct<any, any>>(schema: T, options?: Options) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
5
5
|
export {};
|
package/superstruct/package.json
CHANGED
package/superstruct/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import { validate, Struct } from 'superstruct';
|
|
8
7
|
|
|
@@ -10,9 +9,9 @@ type Options = Parameters<typeof validate>[2];
|
|
|
10
9
|
|
|
11
10
|
export type Resolver = <T extends Struct<any, any>>(
|
|
12
11
|
schema: T,
|
|
13
|
-
|
|
12
|
+
options?: Options,
|
|
14
13
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
15
|
-
values:
|
|
14
|
+
values: TFieldValues,
|
|
16
15
|
context: TContext | undefined,
|
|
17
16
|
options: ResolverOptions<TFieldValues>,
|
|
18
17
|
) => ResolverResult<TFieldValues>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldErrors
|
|
1
|
+
{"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import type {FieldError, 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 } as FieldError;\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
|
|
1
|
+
{"version":3,"file":"typanion.modern.js","sources":["../src/typanion.ts"],"sourcesContent":["import type {FieldError, 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 } as FieldError;\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
|
|
1
|
+
{"version":3,"file":"typanion.module.js","sources":["../src/typanion.ts"],"sourcesContent":["import type {FieldError, 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 } as FieldError;\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
|
|
1
|
+
{"version":3,"file":"typanion.umd.js","sources":["../src/typanion.ts"],"sourcesContent":["import type {FieldError, 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 } as FieldError;\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,7 +1,7 @@
|
|
|
1
|
-
import type { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import type { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
|
|
2
2
|
import { ValidationState, AnyStrictValidator } from 'typanion';
|
|
3
3
|
declare type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>;
|
|
4
|
-
declare type RHFResolver = <TFieldValues extends FieldValues, TContext>(values:
|
|
4
|
+
declare type RHFResolver = <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
|
|
5
5
|
export declare type Resolver = <UnknownValidator extends AnyStrictValidator>(validator: UnknownValidator, validatorOptions?: ValidateOptions, resolverOptions?: {
|
|
6
6
|
mode?: 'async' | 'sync';
|
|
7
7
|
rawValues?: boolean;
|
package/typanion/package.json
CHANGED
package/typanion/src/typanion.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FieldErrors
|
|
1
|
+
import type {FieldError, FieldErrors} from 'react-hook-form';
|
|
2
2
|
import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
|
|
3
3
|
import type { Resolver } from './types';
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ const parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {
|
|
|
8
8
|
|
|
9
9
|
acc[e[0].slice(1)] = {
|
|
10
10
|
message: e[1].trim(),
|
|
11
|
-
};
|
|
11
|
+
} as FieldError;
|
|
12
12
|
|
|
13
13
|
return acc;
|
|
14
14
|
}, parsedErrors);
|
package/typanion/src/types.ts
CHANGED
|
@@ -2,14 +2,13 @@ import type {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import { ValidationState, AnyStrictValidator} from 'typanion'
|
|
8
7
|
|
|
9
8
|
type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>
|
|
10
9
|
|
|
11
10
|
type RHFResolver = <TFieldValues extends FieldValues, TContext>(
|
|
12
|
-
values:
|
|
11
|
+
values: TFieldValues,
|
|
13
12
|
context: TContext | undefined,
|
|
14
13
|
options: ResolverOptions<TFieldValues>,
|
|
15
14
|
) => ResolverResult<TFieldValues>;
|
package/vest/package.json
CHANGED
package/vest/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import * as Vest from 'vest';
|
|
8
7
|
|
|
@@ -13,7 +12,7 @@ export type Resolver = (
|
|
|
13
12
|
schemaOptions?: never,
|
|
14
13
|
factoryOptions?: { mode?: 'async' | 'sync', rawValues?: boolean; },
|
|
15
14
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
16
|
-
values:
|
|
15
|
+
values: TFieldValues,
|
|
17
16
|
context: TContext | undefined,
|
|
18
17
|
options: ResolverOptions<TFieldValues>,
|
|
19
18
|
) => Promise<ResolverResult<TFieldValues>>;
|
package/yup/dist/types.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FieldValues, ResolverOptions, ResolverResult
|
|
1
|
+
import { FieldValues, ResolverOptions, ResolverResult } 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
5
|
export declare type Resolver = <T extends Yup.AnyObjectSchema | Lazy<any>>(schema: T, schemaOptions?: Options<T>, factoryOptions?: {
|
|
6
6
|
mode?: 'async' | 'sync';
|
|
7
7
|
rawValues?: boolean;
|
|
8
|
-
}) => <TFieldValues extends FieldValues, TContext>(values:
|
|
8
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
|
9
9
|
export {};
|
package/yup/package.json
CHANGED
package/yup/src/types.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverOptions,
|
|
4
4
|
ResolverResult,
|
|
5
|
-
UnpackNestedValue,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import * as Yup from 'yup';
|
|
8
7
|
import type Lazy from 'yup/lib/Lazy';
|
|
@@ -16,7 +15,7 @@ export type Resolver = <T extends Yup.AnyObjectSchema | Lazy<any>>(
|
|
|
16
15
|
schemaOptions?: Options<T>,
|
|
17
16
|
factoryOptions?: { mode?: 'async' | 'sync', rawValues?: boolean; },
|
|
18
17
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
19
|
-
values:
|
|
18
|
+
values: TFieldValues,
|
|
20
19
|
context: TContext | undefined,
|
|
21
20
|
options: ResolverOptions<TFieldValues>,
|
|
22
21
|
) => Promise<ResolverResult<TFieldValues>>;
|
package/zod/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FieldValues, ResolverResult,
|
|
1
|
+
import { FieldValues, ResolverResult, ResolverOptions } from 'react-hook-form';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
export declare type Resolver = <T extends z.Schema<any, any>>(schema: T, schemaOptions?: Partial<z.ParseParams>, factoryOptions?: {
|
|
4
4
|
/**
|
|
@@ -10,4 +10,4 @@ export declare type Resolver = <T extends z.Schema<any, any>>(schema: T, schemaO
|
|
|
10
10
|
* @default false
|
|
11
11
|
*/
|
|
12
12
|
rawValues?: boolean;
|
|
13
|
-
}) => <TFieldValues extends FieldValues, TContext>(values:
|
|
13
|
+
}) => <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
|
package/zod/package.json
CHANGED
package/zod/src/types.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FieldValues,
|
|
3
3
|
ResolverResult,
|
|
4
|
-
UnpackNestedValue,
|
|
5
4
|
ResolverOptions,
|
|
6
5
|
} from 'react-hook-form';
|
|
7
6
|
import { z } from 'zod';
|
|
@@ -21,7 +20,7 @@ export type Resolver = <T extends z.Schema<any, any>>(
|
|
|
21
20
|
rawValues?: boolean;
|
|
22
21
|
},
|
|
23
22
|
) => <TFieldValues extends FieldValues, TContext>(
|
|
24
|
-
values:
|
|
23
|
+
values: TFieldValues,
|
|
25
24
|
context: TContext | undefined,
|
|
26
25
|
options: ResolverOptions<TFieldValues>,
|
|
27
26
|
) => Promise<ResolverResult<TFieldValues>>;
|