@hookform/resolvers 2.0.0-beta.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +19 -10
  2. package/dist/index.d.ts +1 -1
  3. package/dist/resolvers.js +1 -1
  4. package/dist/resolvers.js.map +1 -1
  5. package/dist/resolvers.mjs +1 -1
  6. package/dist/resolvers.modern.js +1 -1
  7. package/dist/resolvers.modern.js.map +1 -1
  8. package/dist/resolvers.module.js +1 -1
  9. package/dist/resolvers.module.js.map +1 -1
  10. package/dist/resolvers.umd.js +1 -1
  11. package/dist/resolvers.umd.js.map +1 -1
  12. package/dist/toNestError.d.ts +2 -0
  13. package/joi/dist/joi.js +1 -1
  14. package/joi/dist/joi.js.map +1 -1
  15. package/joi/dist/joi.mjs +1 -1
  16. package/joi/dist/joi.modern.js +1 -1
  17. package/joi/dist/joi.modern.js.map +1 -1
  18. package/joi/dist/joi.module.js +1 -1
  19. package/joi/dist/joi.module.js.map +1 -1
  20. package/joi/dist/joi.umd.js +1 -1
  21. package/joi/dist/joi.umd.js.map +1 -1
  22. package/joi/dist/types.d.ts +1 -1
  23. package/joi/src/__tests__/__fixtures__/data.ts +76 -0
  24. package/joi/src/__tests__/__snapshots__/joi.ts.snap +118 -0
  25. package/joi/src/__tests__/joi.ts +35 -88
  26. package/joi/src/joi.ts +47 -64
  27. package/joi/src/types.ts +1 -1
  28. package/package.json +14 -15
  29. package/superstruct/dist/superstruct.js +1 -1
  30. package/superstruct/dist/superstruct.js.map +1 -1
  31. package/superstruct/dist/superstruct.mjs +1 -1
  32. package/superstruct/dist/superstruct.modern.js +1 -1
  33. package/superstruct/dist/superstruct.modern.js.map +1 -1
  34. package/superstruct/dist/superstruct.module.js +1 -1
  35. package/superstruct/dist/superstruct.module.js.map +1 -1
  36. package/superstruct/dist/superstruct.umd.js +1 -1
  37. package/superstruct/dist/superstruct.umd.js.map +1 -1
  38. package/superstruct/dist/types.d.ts +1 -1
  39. package/superstruct/package.json +2 -1
  40. package/superstruct/src/__tests__/__fixtures__/data.ts +73 -0
  41. package/superstruct/src/__tests__/__snapshots__/superstruct.ts.snap +26 -56
  42. package/superstruct/src/__tests__/superstruct.ts +6 -65
  43. package/superstruct/src/superstruct.ts +20 -53
  44. package/superstruct/src/types.ts +1 -1
  45. package/vest/dist/vest.js +1 -1
  46. package/vest/dist/vest.js.map +1 -1
  47. package/vest/dist/vest.mjs +1 -1
  48. package/vest/dist/vest.modern.js +1 -1
  49. package/vest/dist/vest.modern.js.map +1 -1
  50. package/vest/dist/vest.module.js +1 -1
  51. package/vest/dist/vest.module.js.map +1 -1
  52. package/vest/dist/vest.umd.js +1 -1
  53. package/vest/dist/vest.umd.js.map +1 -1
  54. package/vest/package.json +3 -1
  55. package/vest/src/__tests__/__fixtures__/data.ts +67 -0
  56. package/vest/src/__tests__/__snapshots__/vest.ts.snap +28 -0
  57. package/vest/src/__tests__/vest.ts +22 -95
  58. package/vest/src/types.ts +1 -1
  59. package/vest/src/vest.ts +31 -42
  60. package/yup/dist/types.d.ts +4 -3
  61. package/yup/dist/yup.js +1 -1
  62. package/yup/dist/yup.js.map +1 -1
  63. package/yup/dist/yup.mjs +1 -1
  64. package/yup/dist/yup.modern.js +1 -1
  65. package/yup/dist/yup.modern.js.map +1 -1
  66. package/yup/dist/yup.module.js +1 -1
  67. package/yup/dist/yup.module.js.map +1 -1
  68. package/yup/dist/yup.umd.js +1 -1
  69. package/yup/dist/yup.umd.js.map +1 -1
  70. package/yup/package.json +2 -1
  71. package/yup/src/__tests__/__fixtures__/data.ts +65 -0
  72. package/yup/src/__tests__/__snapshots__/yup.ts.snap +99 -13
  73. package/yup/src/__tests__/yup.ts +23 -97
  74. package/yup/src/types.ts +6 -3
  75. package/yup/src/yup.ts +30 -60
  76. package/zod/dist/types.d.ts +1 -1
  77. package/zod/dist/zod.js +1 -1
  78. package/zod/dist/zod.js.map +1 -1
  79. package/zod/dist/zod.mjs +1 -1
  80. package/zod/dist/zod.modern.js +1 -1
  81. package/zod/dist/zod.modern.js.map +1 -1
  82. package/zod/dist/zod.module.js +1 -1
  83. package/zod/dist/zod.module.js.map +1 -1
  84. package/zod/dist/zod.umd.js +1 -1
  85. package/zod/dist/zod.umd.js.map +1 -1
  86. package/zod/src/__tests__/__fixtures__/data.ts +68 -0
  87. package/zod/src/__tests__/__snapshots__/zod.ts.snap +146 -0
  88. package/zod/src/__tests__/zod.ts +19 -79
  89. package/zod/src/types.ts +1 -1
  90. package/zod/src/zod.ts +45 -50
  91. package/dist/convertArrayToPathName.d.ts +0 -1
@@ -1,137 +1,64 @@
1
- import * as vest from 'vest';
2
1
  import { vestResolver } from '..';
3
-
4
- const validationSuite = vest.create('form', (data: any = {}) => {
5
- vest.test('username', 'Username is required', () => {
6
- vest.enforce(data.username).isNotEmpty();
7
- });
8
-
9
- vest.test('username', 'Must be longer than 3 chars', () => {
10
- vest.enforce(data.username).longerThan(3);
11
- });
12
-
13
- vest.test('deepObject.data', 'deepObject.data is required', () => {
14
- vest.enforce(data.deepObject.data).isNotEmpty();
15
- });
16
-
17
- vest.test('password', 'Password is required', () => {
18
- vest.enforce(data.password).isNotEmpty();
19
- });
20
-
21
- vest.test('password', 'Password must be at least 5 chars', () => {
22
- vest.enforce(data.password).longerThanOrEquals(5);
23
- });
24
-
25
- vest.test('password', 'Password must contain a digit', () => {
26
- vest.enforce(data.password).matches(/[0-9]/);
27
- });
28
-
29
- vest.test('password', 'Password must contain a symbol', () => {
30
- vest.enforce(data.password).matches(/[^A-Za-z0-9]/);
31
- });
32
- });
2
+ import {
3
+ invalidData,
4
+ validationSuite,
5
+ validData,
6
+ fields,
7
+ } from './__fixtures__/data';
33
8
 
34
9
  describe('vestResolver', () => {
35
10
  it('should return values from vestResolver when validation pass', async () => {
36
- const data = {
37
- username: 'asdda',
38
- password: 'asddfg123!',
39
- deepObject: {
40
- data: 'test',
41
- },
42
- };
43
11
  expect(
44
- await vestResolver(validationSuite)(data, undefined, { fields: {} }),
12
+ await vestResolver(validationSuite)(validData, undefined, { fields }),
45
13
  ).toEqual({
46
- values: data,
14
+ values: validData,
47
15
  errors: {},
48
16
  });
49
17
  });
50
18
 
51
19
  it('should return values from vestResolver with `mode: sync` when validation pass', async () => {
52
- const data = {
53
- username: 'asdda',
54
- password: 'asddfg123!',
55
- deepObject: {
56
- data: 'test',
57
- },
58
- };
59
20
  expect(
60
- await vestResolver(validationSuite, undefined, { mode: 'sync' })(
61
- data,
62
- undefined,
63
- { fields: {} },
64
- ),
21
+ await vestResolver(validationSuite, undefined, {
22
+ mode: 'sync',
23
+ })(validData, undefined, { fields }),
65
24
  ).toEqual({
66
- values: data,
25
+ values: validData,
67
26
  errors: {},
68
27
  });
69
28
  });
70
29
 
71
30
  it('should return single error message from vestResolver when validation fails and validateAllFieldCriteria set to false', async () => {
72
- const data = {
73
- username: '',
74
- password: 'a',
75
- deepObject: {
76
- data: '',
77
- },
78
- };
79
-
80
31
  expect(
81
- await vestResolver(validationSuite)(data, undefined, { fields: {} }),
32
+ await vestResolver(validationSuite)(invalidData, undefined, {
33
+ fields,
34
+ }),
82
35
  ).toMatchSnapshot();
83
36
  });
84
37
 
85
38
  it('should return single error message from vestResolver when validation fails and validateAllFieldCriteria set to false and `mode: sync`', async () => {
86
- const data = {
87
- username: '',
88
- password: 'a',
89
- deepObject: {
90
- data: '',
91
- },
92
- };
93
-
94
39
  expect(
95
- await vestResolver(validationSuite, undefined, { mode: 'sync' })(
96
- data,
97
- undefined,
98
- { fields: {} },
99
- ),
40
+ await vestResolver(validationSuite, undefined, {
41
+ mode: 'sync',
42
+ })(invalidData, undefined, { fields }),
100
43
  ).toMatchSnapshot();
101
44
  });
102
45
 
103
46
  it('should return all the error messages from vestResolver when validation fails and validateAllFieldCriteria set to true', async () => {
104
- const data = {
105
- username: '',
106
- password: 'a',
107
- deepObject: {
108
- data: '',
109
- },
110
- };
111
-
112
47
  expect(
113
48
  await vestResolver(validationSuite)(
114
- data,
49
+ invalidData,
115
50
  {},
116
- { fields: {}, criteriaMode: 'all' },
51
+ { fields, criteriaMode: 'all' },
117
52
  ),
118
53
  ).toMatchSnapshot();
119
54
  });
120
55
 
121
56
  it('should return all the error messages from vestResolver when validation fails and validateAllFieldCriteria set to true and `mode: sync`', async () => {
122
- const data = {
123
- username: '',
124
- password: 'a',
125
- deepObject: {
126
- data: '',
127
- },
128
- };
129
-
130
57
  expect(
131
58
  await vestResolver(validationSuite, undefined, { mode: 'sync' })(
132
- data,
59
+ invalidData,
133
60
  {},
134
- { fields: {}, criteriaMode: 'all' },
61
+ { fields, criteriaMode: 'all' },
135
62
  ),
136
63
  ).toMatchSnapshot();
137
64
  });
package/vest/src/types.ts CHANGED
@@ -11,7 +11,7 @@ export type ICreateResult = ReturnType<typeof Vest.create>;
11
11
  export type Resolver = (
12
12
  schema: ICreateResult,
13
13
  schemaOptions?: never,
14
- factoryOptions?: { mode: 'async' | 'sync' },
14
+ factoryOptions?: { mode?: 'async' | 'sync' },
15
15
  ) => <TFieldValues extends FieldValues, TContext>(
16
16
  values: UnpackNestedValue<TFieldValues>,
17
17
  context: TContext | undefined,
package/vest/src/vest.ts CHANGED
@@ -1,56 +1,45 @@
1
- import { transformToNestObject } from 'react-hook-form';
1
+ import { toNestError } from '@hookform/resolvers';
2
+ import { FieldError } from 'react-hook-form';
2
3
  import promisify from 'vest/promisify';
3
- import { DraftResult, IVestResult } from 'vest/vestResult';
4
4
  import type { VestErrors, Resolver } from './types';
5
5
 
6
6
  const parseErrorSchema = (
7
7
  vestError: VestErrors,
8
8
  validateAllFieldCriteria: boolean,
9
9
  ) => {
10
- return Object.entries(vestError).reduce((prev, [key, value]) => {
11
- return {
12
- ...prev,
13
- [key]: {
14
- type: '',
15
- message: value[0],
16
- ...(validateAllFieldCriteria
17
- ? {
18
- types: value.reduce((prev, message, index) => {
19
- return {
20
- ...prev,
21
- [index]: message,
22
- };
23
- }, {}),
24
- }
25
- : {}),
26
- },
27
- };
28
- }, {});
10
+ const errors: Record<string, FieldError> = {};
11
+ for (const path in vestError) {
12
+ if (!errors[path]) {
13
+ errors[path] = { message: vestError[path][0], type: '' };
14
+ }
15
+
16
+ if (validateAllFieldCriteria) {
17
+ errors[path].types = vestError[path].reduce<Record<number, string>>(
18
+ (acc, message, index) => (acc[index] = message) && acc,
19
+ {},
20
+ );
21
+ }
22
+ }
23
+ return errors;
29
24
  };
30
25
 
31
26
  export const vestResolver: Resolver = (
32
27
  schema,
33
28
  _,
34
- { mode } = { mode: 'async' },
35
- ) => async (values, _context, { criteriaMode }) => {
36
- let result: IVestResult | DraftResult;
37
- if (mode === 'async') {
38
- const validateSchema = promisify(schema);
39
- result = await validateSchema(values);
40
- } else {
41
- result = schema(values);
42
- }
43
-
44
- const errors = result.getErrors();
45
-
46
- if (!result.hasErrors()) {
47
- return { values, errors: {} };
48
- }
29
+ resolverOptions = {},
30
+ ) => async (values, _context, options) => {
31
+ const result =
32
+ resolverOptions.mode === 'sync'
33
+ ? schema(values)
34
+ : await promisify(schema)(values);
49
35
 
50
- return {
51
- values: {},
52
- errors: transformToNestObject(
53
- parseErrorSchema(errors, criteriaMode === 'all'),
54
- ),
55
- };
36
+ return result.hasErrors()
37
+ ? {
38
+ values: {},
39
+ errors: toNestError(
40
+ parseErrorSchema(result.getErrors(), options.criteriaMode === 'all'),
41
+ options.fields,
42
+ ),
43
+ }
44
+ : { values, errors: {} };
56
45
  };
@@ -1,7 +1,8 @@
1
1
  import { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form';
2
2
  import * as Yup from 'yup';
3
- declare type Options<T extends Yup.AnyObjectSchema> = Parameters<T['validate']>[1];
4
- export declare type Resolver = <T extends Yup.AnyObjectSchema>(schema: T, schemaOptions?: Options<T>, factoryOptions?: {
5
- mode: 'async' | 'sync';
3
+ import type Lazy from 'yup/lib/Lazy';
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>>(schema: T, schemaOptions?: Options<T>, factoryOptions?: {
6
+ mode?: 'async' | 'sync';
6
7
  }) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
7
8
  export {};
package/yup/dist/yup.js CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("react-hook-form");function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}exports.yupResolver=function(r,n,o){void 0===n&&(n={abortEarly:!1});var a=(void 0===o?{mode:"async"}:o).mode;return function(o,s,c){var i=c.criteriaMode;try{return Promise.resolve(function(e,c){try{var i=function(){function e(e){return{values:e,errors:{}}}return n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),"async"===a?Promise.resolve("async"===a?r.validate(o,t({},n,{context:s})):r.validateSync(o,t({},n,{context:s}))).then(e):e("async"===a?r.validate(o,t({},n,{context:s})):r.validateSync(o,t({},n,{context:s})))}()}catch(e){return c(e)}return i&&i.then?i.then(void 0,c):i}(0,function(r){var n,o,a,s=(n=r,o="all"===i,Array.isArray(n.inner)&&n.inner.length?n.inner.reduce(function(e,r){var n,a,s=r.path,c=r.message,i=r.type,u=e[s]&&e[s].types||{},v=s||i;return t({},e,v?((a={})[v]=t({},e[v]||{message:c,type:i},o?{types:t({},u,(n={},n[i]=u[i]?[].concat([].concat(u[i]),[c]):c,n))}:{}),a):{})},{}):((a={})[n.path]={message:n.message,type:n.type},a));return{values:{},errors:e.transformToNestObject(s)}}))}catch(e){return Promise.reject(e)}}};
1
+ var e=require("@hookform/resolvers"),r=require("react-hook-form");exports.yupResolver=function(t,o,n){return void 0===o&&(o={abortEarly:!1}),void 0===n&&(n={}),function(s,a,u){try{return Promise.resolve(function(e,r){try{var u=(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(t["sync"===n.mode?"validateSync":"validate"](s,Object.assign({},o,{context:a}))).then(function(e){return{values:e,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(t){return{values:{},errors:e.toNestError((o=t,n="all"===u.criteriaMode,o.inner.reduce(function(e,t){return e[t.path]||(e[t.path]={message:t.message,type:t.type}),n&&(e[t.path]=r.appendErrors(t.path,n,e,t.type,t.message)),e},{})),u.fields)};var o,n}))}catch(e){return Promise.reject(e)}}};
2
2
  //# sourceMappingURL=yup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { transformToNestObject } from 'react-hook-form';\nimport Yup from 'yup';\nimport { Resolver } from './types';\n\n/**\n * From 0.32.0, Yup add TypeScript support and `path` typing is optional that's why we have `@ts-expect-error`\n * FYI: `path`: a string, indicating where there error was thrown. `path` is empty at the root level.\n * react-hook-form's values are object so path is defined\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 Array.isArray(error.inner) && error.inner.length\n ? error.inner.reduce(\n (previous: Record<string, any>, { path, message, type }) => {\n // @ts-expect-error\n const previousTypes = (previous[path] && previous[path].types) || {};\n const key = path || type;\n\n return {\n ...previous,\n ...(key\n ? {\n [key]: {\n ...(previous[key] || {\n message,\n type,\n }),\n ...(validateAllFieldCriteria\n ? {\n types: {\n ...previousTypes,\n // @ts-expect-error\n [type]: previousTypes[type]\n ? // @ts-expect-error\n [...[].concat(previousTypes[type]), message]\n : message,\n },\n }\n : {}),\n },\n }\n : {}),\n };\n },\n {},\n )\n : {\n // @ts-expect-error\n [error.path]: { message: error.message, type: error.type },\n };\n};\n\nexport const yupResolver: Resolver = (\n schema,\n options = {\n abortEarly: false,\n },\n { mode } = { mode: 'async' },\n) => async (values, context, { criteriaMode }) => {\n try {\n if (options.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 =\n mode === 'async'\n ? await schema.validate(values, {\n ...options,\n context,\n })\n : schema.validateSync(values, {\n ...options,\n context,\n });\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n const parsedErrors = parseErrorSchema(e, criteriaMode === 'all');\n\n return {\n values: {},\n errors: transformToNestObject(parsedErrors),\n };\n }\n};\n"],"names":["schema","options","abortEarly","mode","values","context","criteriaMode","result","errors","process","env","NODE_ENV","console","warn","validate","validateSync","e","error","validateAllFieldCriteria","parsedErrors","Array","isArray","inner","length","reduce","previous","path","message","type","previousTypes","types","key","concat","transformToNestObject"],"mappings":"oQAwDqC,SACnCA,EACAC,cAAAA,IAAAA,EAAU,CACRC,YAAY,QAEZC,cAAS,CAAEA,KAAM,YAAjBA,qBACQC,EAAQC,SAAWC,IAAAA,sFASrBC,GAWN,MAAO,CACLH,OAAQG,EACRC,OAAQ,IArBR,OACEP,EAAQI,SAAoC,gBAAzBI,QAAQC,IAAIC,UAEjCC,QAAQC,KACN,iGAKO,UAATV,kBAAS,UAATA,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,gBAPG,UAATF,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,8EAODW,GACP,IA3EFC,EACAC,IA0EQC,GA3ERF,EA2EwCD,EA1ExCE,EA0E4D,QAAjBZ,EAxEpCc,MAAMC,QAAQJ,EAAMK,QAAUL,EAAMK,MAAMC,OAC7CN,EAAMK,MAAME,OACV,SAACC,aAAiCC,IAAAA,KAAMC,IAAAA,QAASC,IAAAA,KAEzCC,EAAiBJ,EAASC,IAASD,EAASC,GAAMI,OAAU,GAC5DC,EAAML,GAAQE,EAEpB,YACKH,EACCM,UAEGA,QACKN,EAASM,IAAQ,CACnBJ,QAAAA,EACAC,KAAAA,GAEEV,EACA,CACEY,WACKD,UAEFD,GAAOC,EAAcD,aAEd,GAAGI,OAAOH,EAAcD,KAAQD,IACpCA,OAGR,OAGR,KAGR,YAICV,EAAMS,MAAO,CAAEC,QAASV,EAAMU,QAASC,KAAMX,EAAMW,UAqCxD,MAAO,CACLxB,OAAQ,GACRI,OAAQyB,wBAAsBd,OAnCC"}
1
+ {"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError } 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>>((previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {});\n};\n\nexport const yupResolver: Resolver = (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n 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 ](values, Object.assign({}, schemaOptions, { context }));\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(e, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","result","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","inner","reduce","previous","path","message","type","appendErrors","fields"],"mappings":"sFAgCqC,SACnCA,EACAC,EAGAC,mBAHAD,IAAAA,EAAgB,CACdE,YAAY,aAEdD,IAAAA,EAAkB,aACRE,EAAQC,EAASC,uDAErBL,EAAcI,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBX,EACM,SAAzBE,EAAgBU,KAAkB,eAAiB,YACnDR,EAAQS,OAAOC,OAAO,GAAIb,EAAe,CAAEI,QAAAA,oBAFvCU,GAIN,MAAO,CACLX,OAAQW,EACRC,OAAQ,4EAEHC,GACP,MAAO,CACLb,OAAQ,GACRY,OAAQE,eAhDZC,EAiDuBF,EAhDvBG,EAgDmD,QAAzBd,EAAQe,aA9C3BF,EAAMG,MAAMC,OAAmC,SAACC,EAAUL,GAe/D,OAdKK,EAASL,EAAMM,QAClBD,EAASL,EAAMM,MAAS,CAAEC,QAASP,EAAMO,QAASC,KAAMR,EAAMQ,OAG5DP,IACFI,EAASL,EAAMM,MAASG,eACtBT,EAAMM,KACNL,EACAI,EACAL,EAAMQ,KACNR,EAAMO,UAIHF,GACN,KA+BGlB,EAAQuB,SAnDS,IACvBV,EACAC,KAqBmC"}
package/yup/dist/yup.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{transformToNestObject as e}from"react-hook-form";function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var r=function(r,n,o){void 0===n&&(n={abortEarly:!1});var a=(void 0===o?{mode:"async"}:o).mode;return function(o,c,s){var i=s.criteriaMode;try{return Promise.resolve(function(e,s){try{var i=function(){function e(e){return{values:e,errors:{}}}return n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),"async"===a?Promise.resolve("async"===a?r.validate(o,t({},n,{context:c})):r.validateSync(o,t({},n,{context:c}))).then(e):e("async"===a?r.validate(o,t({},n,{context:c})):r.validateSync(o,t({},n,{context:c})))}()}catch(e){return s(e)}return i&&i.then?i.then(void 0,s):i}(0,function(r){var n,o,a,c=(n=r,o="all"===i,Array.isArray(n.inner)&&n.inner.length?n.inner.reduce(function(e,r){var n,a,c=r.path,s=r.message,i=r.type,u=e[c]&&e[c].types||{},v=c||i;return t({},e,v?((a={})[v]=t({},e[v]||{message:s,type:i},o?{types:t({},u,(n={},n[i]=u[i]?[].concat([].concat(u[i]),[s]):s,n))}:{}),a):{})},{}):((a={})[n.path]={message:n.message,type:n.type},a));return{values:{},errors:e(c)}}))}catch(e){return Promise.reject(e)}}};export{r as yupResolver};
1
+ import{toNestError as e}from"@hookform/resolvers";import{appendErrors as t}from"react-hook-form";var r=function(r,o,n){return void 0===o&&(o={abortEarly:!1}),void 0===n&&(n={}),function(s,a,c){try{return Promise.resolve(function(e,t){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({},o,{context:a}))).then(function(e){return{values:e,errors:{}}}))}catch(e){return t(e)}return c&&c.then?c.then(void 0,t):c}(0,function(r){return{values:{},errors:e((o=r,n="all"===c.criteriaMode,o.inner.reduce(function(e,r){return e[r.path]||(e[r.path]={message:r.message,type:r.type}),n&&(e[r.path]=t(r.path,n,e,r.type,r.message)),e},{})),c.fields)};var o,n}))}catch(e){return Promise.reject(e)}}};export{r as yupResolver};
2
2
  //# sourceMappingURL=yup.module.js.map
@@ -1,2 +1,2 @@
1
- import{transformToNestObject as e}from"react-hook-form";function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}const r=(r,n={abortEarly:!1},{mode:o}={mode:"async"})=>async(a,s,{criteriaMode:c})=>{try{return n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),{values:"async"===o?await r.validate(a,t({},n,{context:s})):r.validateSync(a,t({},n,{context:s})),errors:{}}}catch(r){const n=(p=r,y="all"===c,Array.isArray(p.inner)&&p.inner.length?p.inner.reduce((e,{path:r,message:n,type:o})=>{const a=e[r]&&e[r].types||{},s=r||o;return t({},e,s?{[s]:t({},e[s]||{message:n,type:o},y?{types:t({},a,{[o]:a[o]?[...[].concat(a[o]),n]:n})}:{})}:{})},{}):{[p.path]:{message:p.message,type:p.type}});return{values:{},errors:e(n)}}var p,y};export{r as yupResolver};
1
+ import{toNestError as e}from"@hookform/resolvers";import{appendErrors as t}from"react-hook-form";const o=(o,r={abortEarly:!1},s={})=>async(a,n,c)=>{try{return r.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),{values:await o["sync"===s.mode?"validateSync":"validate"](a,Object.assign({},r,{context:n})),errors:{}}}catch(o){return{values:{},errors:e((p=o,l="all"===c.criteriaMode,p.inner.reduce((e,o)=>(e[o.path]||(e[o.path]={message:o.message,type:o.type}),l&&(e[o.path]=t(o.path,l,e,o.type,o.message)),e),{})),c.fields)}}var p,l};export{o as yupResolver};
2
2
  //# sourceMappingURL=yup.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yup.modern.js","sources":["../src/yup.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { transformToNestObject } from 'react-hook-form';\nimport Yup from 'yup';\nimport { Resolver } from './types';\n\n/**\n * From 0.32.0, Yup add TypeScript support and `path` typing is optional that's why we have `@ts-expect-error`\n * FYI: `path`: a string, indicating where there error was thrown. `path` is empty at the root level.\n * react-hook-form's values are object so path is defined\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 Array.isArray(error.inner) && error.inner.length\n ? error.inner.reduce(\n (previous: Record<string, any>, { path, message, type }) => {\n // @ts-expect-error\n const previousTypes = (previous[path] && previous[path].types) || {};\n const key = path || type;\n\n return {\n ...previous,\n ...(key\n ? {\n [key]: {\n ...(previous[key] || {\n message,\n type,\n }),\n ...(validateAllFieldCriteria\n ? {\n types: {\n ...previousTypes,\n // @ts-expect-error\n [type]: previousTypes[type]\n ? // @ts-expect-error\n [...[].concat(previousTypes[type]), message]\n : message,\n },\n }\n : {}),\n },\n }\n : {}),\n };\n },\n {},\n )\n : {\n // @ts-expect-error\n [error.path]: { message: error.message, type: error.type },\n };\n};\n\nexport const yupResolver: Resolver = (\n schema,\n options = {\n abortEarly: false,\n },\n { mode } = { mode: 'async' },\n) => async (values, context, { criteriaMode }) => {\n try {\n if (options.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 =\n mode === 'async'\n ? await schema.validate(values, {\n ...options,\n context,\n })\n : schema.validateSync(values, {\n ...options,\n context,\n });\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n const parsedErrors = parseErrorSchema(e, criteriaMode === 'all');\n\n return {\n values: {},\n errors: transformToNestObject(parsedErrors),\n };\n }\n};\n"],"names":["yupResolver","schema","options","abortEarly","mode","async","values","context","criteriaMode","process","env","NODE_ENV","console","warn","validate","validateSync","errors","e","parsedErrors","error","validateAllFieldCriteria","Array","isArray","inner","length","reduce","previous","path","message","type","previousTypes","types","key","[object Object]","concat","transformToNestObject"],"mappings":"uQAWA,MA6CaA,EAAwB,CACnCC,EACAC,EAAU,CACRC,YAAY,IAEZC,KAAAA,GAAS,CAAEA,KAAM,WAChBC,MAAOC,EAAQC,GAAWC,aAAAA,MAC7B,IAmBE,OAlBIN,EAAQK,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEjCC,QAAQC,KACN,iGAeG,CACLP,OAXS,UAATF,QACUH,EAAOa,SAASR,OACjBJ,GACHK,QAAAA,KAEFN,EAAOc,aAAaT,OACfJ,GACHK,QAAAA,KAKNS,OAAQ,IAEV,MAAOC,GACP,MAAMC,GA3ERC,EA2EwCF,EA1ExCG,EA0E4D,QAAjBZ,EAxEpCa,MAAMC,QAAQH,EAAMI,QAAUJ,EAAMI,MAAMC,OAC7CL,EAAMI,MAAME,OACV,CAACC,GAAiCC,KAAAA,EAAMC,QAAAA,EAASC,KAAAA,MAE/C,MAAMC,EAAiBJ,EAASC,IAASD,EAASC,GAAMI,OAAU,GAC5DC,EAAML,GAAQE,EAEpB,YACKH,EACCM,EACA,CACEC,CAACD,QACKN,EAASM,IAAQ,CACnBJ,QAAAA,EACAC,KAAAA,GAEET,EACA,CACEW,WACKD,GAEHG,CAACJ,GAAOC,EAAcD,GAElB,IAAI,GAAGK,OAAOJ,EAAcD,IAAQD,GACpCA,KAGR,KAGR,KAGR,IAEF,CAEEK,CAACd,EAAMQ,MAAO,CAAEC,QAAST,EAAMS,QAASC,KAAMV,EAAMU,QAqCxD,MAAO,CACLvB,OAAQ,GACRU,OAAQmB,EAAsBjB,IAhFX,IACvBC,EACAC"}
1
+ {"version":3,"file":"yup.modern.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError } 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>>((previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {});\n};\n\nexport const yupResolver: Resolver = (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n 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 ](values, Object.assign({}, schemaOptions, { context }));\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(e, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["yupResolver","schema","schemaOptions","abortEarly","resolverOptions","async","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","inner","reduce","previous","path","message","type","appendErrors","fields"],"mappings":"iGASA,MAuBaA,EAAwB,CACnCC,EACAC,EAAgB,CACdC,YAAY,GAEdC,EAAkB,KACfC,MAAOC,EAAQC,EAASC,KAC3B,IAYE,OAXIN,EAAcK,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iGAQG,CACLP,aALmBL,EACM,SAAzBG,EAAgBU,KAAkB,eAAiB,YACnDR,EAAQS,OAAOC,OAAO,GAAId,EAAe,CAAEK,QAAAA,KAI3CU,OAAQ,IAEV,MAAOC,GACP,MAAO,CACLZ,OAAQ,GACRW,OAAQE,GAhDZC,EAiDuBF,EAhDvBG,EAgDmD,QAAzBb,EAAQc,aA9C3BF,EAAMG,MAAMC,OAAmC,CAACC,EAAUL,KAC1DK,EAASL,EAAMM,QAClBD,EAASL,EAAMM,MAAS,CAAEC,QAASP,EAAMO,QAASC,KAAMR,EAAMQ,OAG5DP,IACFI,EAASL,EAAMM,MAASG,EACtBT,EAAMM,KACNL,EACAI,EACAL,EAAMQ,KACNR,EAAMO,UAIHF,GACN,KA+BGjB,EAAQsB,SAnDS,IACvBV,EACAC"}
@@ -1,2 +1,2 @@
1
- import{transformToNestObject as e}from"react-hook-form";function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var r=function(r,n,o){void 0===n&&(n={abortEarly:!1});var a=(void 0===o?{mode:"async"}:o).mode;return function(o,c,s){var i=s.criteriaMode;try{return Promise.resolve(function(e,s){try{var i=function(){function e(e){return{values:e,errors:{}}}return n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),"async"===a?Promise.resolve("async"===a?r.validate(o,t({},n,{context:c})):r.validateSync(o,t({},n,{context:c}))).then(e):e("async"===a?r.validate(o,t({},n,{context:c})):r.validateSync(o,t({},n,{context:c})))}()}catch(e){return s(e)}return i&&i.then?i.then(void 0,s):i}(0,function(r){var n,o,a,c=(n=r,o="all"===i,Array.isArray(n.inner)&&n.inner.length?n.inner.reduce(function(e,r){var n,a,c=r.path,s=r.message,i=r.type,u=e[c]&&e[c].types||{},v=c||i;return t({},e,v?((a={})[v]=t({},e[v]||{message:s,type:i},o?{types:t({},u,(n={},n[i]=u[i]?[].concat([].concat(u[i]),[s]):s,n))}:{}),a):{})},{}):((a={})[n.path]={message:n.message,type:n.type},a));return{values:{},errors:e(c)}}))}catch(e){return Promise.reject(e)}}};export{r as yupResolver};
1
+ import{toNestError as e}from"@hookform/resolvers";import{appendErrors as t}from"react-hook-form";var r=function(r,o,n){return void 0===o&&(o={abortEarly:!1}),void 0===n&&(n={}),function(s,a,c){try{return Promise.resolve(function(e,t){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({},o,{context:a}))).then(function(e){return{values:e,errors:{}}}))}catch(e){return t(e)}return c&&c.then?c.then(void 0,t):c}(0,function(r){return{values:{},errors:e((o=r,n="all"===c.criteriaMode,o.inner.reduce(function(e,r){return e[r.path]||(e[r.path]={message:r.message,type:r.type}),n&&(e[r.path]=t(r.path,n,e,r.type,r.message)),e},{})),c.fields)};var o,n}))}catch(e){return Promise.reject(e)}}};export{r as yupResolver};
2
2
  //# sourceMappingURL=yup.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yup.module.js","sources":["../src/yup.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { transformToNestObject } from 'react-hook-form';\nimport Yup from 'yup';\nimport { Resolver } from './types';\n\n/**\n * From 0.32.0, Yup add TypeScript support and `path` typing is optional that's why we have `@ts-expect-error`\n * FYI: `path`: a string, indicating where there error was thrown. `path` is empty at the root level.\n * react-hook-form's values are object so path is defined\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 Array.isArray(error.inner) && error.inner.length\n ? error.inner.reduce(\n (previous: Record<string, any>, { path, message, type }) => {\n // @ts-expect-error\n const previousTypes = (previous[path] && previous[path].types) || {};\n const key = path || type;\n\n return {\n ...previous,\n ...(key\n ? {\n [key]: {\n ...(previous[key] || {\n message,\n type,\n }),\n ...(validateAllFieldCriteria\n ? {\n types: {\n ...previousTypes,\n // @ts-expect-error\n [type]: previousTypes[type]\n ? // @ts-expect-error\n [...[].concat(previousTypes[type]), message]\n : message,\n },\n }\n : {}),\n },\n }\n : {}),\n };\n },\n {},\n )\n : {\n // @ts-expect-error\n [error.path]: { message: error.message, type: error.type },\n };\n};\n\nexport const yupResolver: Resolver = (\n schema,\n options = {\n abortEarly: false,\n },\n { mode } = { mode: 'async' },\n) => async (values, context, { criteriaMode }) => {\n try {\n if (options.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 =\n mode === 'async'\n ? await schema.validate(values, {\n ...options,\n context,\n })\n : schema.validateSync(values, {\n ...options,\n context,\n });\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n const parsedErrors = parseErrorSchema(e, criteriaMode === 'all');\n\n return {\n values: {},\n errors: transformToNestObject(parsedErrors),\n };\n }\n};\n"],"names":["yupResolver","schema","options","abortEarly","mode","values","context","criteriaMode","result","errors","process","env","NODE_ENV","console","warn","validate","validateSync","e","error","validateAllFieldCriteria","parsedErrors","Array","isArray","inner","length","reduce","previous","path","message","type","previousTypes","types","key","concat","transformToNestObject"],"mappings":"uQAWA,IA6CaA,EAAwB,SACnCC,EACAC,cAAAA,IAAAA,EAAU,CACRC,YAAY,QAEZC,cAAS,CAAEA,KAAM,YAAjBA,qBACQC,EAAQC,SAAWC,IAAAA,sFASrBC,GAWN,MAAO,CACLH,OAAQG,EACRC,OAAQ,IArBR,OACEP,EAAQI,SAAoC,gBAAzBI,QAAQC,IAAIC,UAEjCC,QAAQC,KACN,iGAKO,UAATV,kBAAS,UAATA,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,gBAPG,UAATF,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,8EAODW,GACP,IA3EFC,EACAC,IA0EQC,GA3ERF,EA2EwCD,EA1ExCE,EA0E4D,QAAjBZ,EAxEpCc,MAAMC,QAAQJ,EAAMK,QAAUL,EAAMK,MAAMC,OAC7CN,EAAMK,MAAME,OACV,SAACC,aAAiCC,IAAAA,KAAMC,IAAAA,QAASC,IAAAA,KAEzCC,EAAiBJ,EAASC,IAASD,EAASC,GAAMI,OAAU,GAC5DC,EAAML,GAAQE,EAEpB,YACKH,EACCM,UAEGA,QACKN,EAASM,IAAQ,CACnBJ,QAAAA,EACAC,KAAAA,GAEEV,EACA,CACEY,WACKD,UAEFD,GAAOC,EAAcD,aAEd,GAAGI,OAAOH,EAAcD,KAAQD,IACpCA,OAGR,OAGR,KAGR,YAICV,EAAMS,MAAO,CAAEC,QAASV,EAAMU,QAASC,KAAMX,EAAMW,UAqCxD,MAAO,CACLxB,OAAQ,GACRI,OAAQyB,EAAsBd,OAnCC"}
1
+ {"version":3,"file":"yup.module.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError } 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>>((previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {});\n};\n\nexport const yupResolver: Resolver = (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n 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 ](values, Object.assign({}, schemaOptions, { context }));\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(e, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["yupResolver","schema","schemaOptions","resolverOptions","abortEarly","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","result","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","inner","reduce","previous","path","message","type","appendErrors","fields"],"mappings":"iGASA,IAuBaA,EAAwB,SACnCC,EACAC,EAGAC,mBAHAD,IAAAA,EAAgB,CACdE,YAAY,aAEdD,IAAAA,EAAkB,aACRE,EAAQC,EAASC,uDAErBL,EAAcI,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBX,EACM,SAAzBE,EAAgBU,KAAkB,eAAiB,YACnDR,EAAQS,OAAOC,OAAO,GAAIb,EAAe,CAAEI,QAAAA,oBAFvCU,GAIN,MAAO,CACLX,OAAQW,EACRC,OAAQ,4EAEHC,GACP,MAAO,CACLb,OAAQ,GACRY,OAAQE,GAhDZC,EAiDuBF,EAhDvBG,EAgDmD,QAAzBd,EAAQe,aA9C3BF,EAAMG,MAAMC,OAAmC,SAACC,EAAUL,GAe/D,OAdKK,EAASL,EAAMM,QAClBD,EAASL,EAAMM,MAAS,CAAEC,QAASP,EAAMO,QAASC,KAAMR,EAAMQ,OAG5DP,IACFI,EAASL,EAAMM,MAASG,EACtBT,EAAMM,KACNL,EACAI,EACAL,EAAMQ,KACNR,EAAMO,UAIHF,GACN,KA+BGlB,EAAQuB,SAnDS,IACvBV,EACAC,KAqBmC"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","react-hook-form"],t):t((e||self).hookformResolversYup={},e.reactHookForm)}(this,function(e,t){function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}e.yupResolver=function(e,n,o){void 0===n&&(n={abortEarly:!1});var a=(void 0===o?{mode:"async"}:o).mode;return function(o,s,c){var i=c.criteriaMode;try{return Promise.resolve(function(t,c){try{var i=function(){function t(e){return{values:e,errors:{}}}return n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),"async"===a?Promise.resolve("async"===a?e.validate(o,r({},n,{context:s})):e.validateSync(o,r({},n,{context:s}))).then(t):t("async"===a?e.validate(o,r({},n,{context:s})):e.validateSync(o,r({},n,{context:s})))}()}catch(e){return c(e)}return i&&i.then?i.then(void 0,c):i}(0,function(e){var n,o,a,s=(n=e,o="all"===i,Array.isArray(n.inner)&&n.inner.length?n.inner.reduce(function(e,t){var n,a,s=t.path,c=t.message,i=t.type,u=e[s]&&e[s].types||{},f=s||i;return r({},e,f?((a={})[f]=r({},e[f]||{message:c,type:i},o?{types:r({},u,(n={},n[i]=u[i]?[].concat([].concat(u[i]),[c]):c,n))}:{}),a):{})},{}):((a={})[n.path]={message:n.message,type:n.type},a));return{values:{},errors:t.transformToNestObject(s)}}))}catch(e){return Promise.reject(e)}}}});
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@hookform/resolvers"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","react-hook-form"],o):o((e||self).hookformResolversYup={},e.hookformResolvers,e.reactHookForm)}(this,function(e,o,r){e.yupResolver=function(e,t,n){return void 0===t&&(t={abortEarly:!1}),void 0===n&&(n={}),function(s,i,u){try{return Promise.resolve(function(o,r){try{var u=(t.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(e["sync"===n.mode?"validateSync":"validate"](s,Object.assign({},t,{context:i}))).then(function(e){return{values:e,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){return{values:{},errors:o.toNestError((t=e,n="all"===u.criteriaMode,t.inner.reduce(function(e,o){return e[o.path]||(e[o.path]={message:o.message,type:o.type}),n&&(e[o.path]=r.appendErrors(o.path,n,e,o.type,o.message)),e},{})),u.fields)};var t,n}))}catch(e){return Promise.reject(e)}}}});
2
2
  //# sourceMappingURL=yup.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yup.umd.js","sources":["../src/yup.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { transformToNestObject } from 'react-hook-form';\nimport Yup from 'yup';\nimport { Resolver } from './types';\n\n/**\n * From 0.32.0, Yup add TypeScript support and `path` typing is optional that's why we have `@ts-expect-error`\n * FYI: `path`: a string, indicating where there error was thrown. `path` is empty at the root level.\n * react-hook-form's values are object so path is defined\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 Array.isArray(error.inner) && error.inner.length\n ? error.inner.reduce(\n (previous: Record<string, any>, { path, message, type }) => {\n // @ts-expect-error\n const previousTypes = (previous[path] && previous[path].types) || {};\n const key = path || type;\n\n return {\n ...previous,\n ...(key\n ? {\n [key]: {\n ...(previous[key] || {\n message,\n type,\n }),\n ...(validateAllFieldCriteria\n ? {\n types: {\n ...previousTypes,\n // @ts-expect-error\n [type]: previousTypes[type]\n ? // @ts-expect-error\n [...[].concat(previousTypes[type]), message]\n : message,\n },\n }\n : {}),\n },\n }\n : {}),\n };\n },\n {},\n )\n : {\n // @ts-expect-error\n [error.path]: { message: error.message, type: error.type },\n };\n};\n\nexport const yupResolver: Resolver = (\n schema,\n options = {\n abortEarly: false,\n },\n { mode } = { mode: 'async' },\n) => async (values, context, { criteriaMode }) => {\n try {\n if (options.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 =\n mode === 'async'\n ? await schema.validate(values, {\n ...options,\n context,\n })\n : schema.validateSync(values, {\n ...options,\n context,\n });\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n const parsedErrors = parseErrorSchema(e, criteriaMode === 'all');\n\n return {\n values: {},\n errors: transformToNestObject(parsedErrors),\n };\n }\n};\n"],"names":["schema","options","abortEarly","mode","values","context","criteriaMode","result","errors","process","env","NODE_ENV","console","warn","validate","validateSync","e","error","validateAllFieldCriteria","parsedErrors","Array","isArray","inner","length","reduce","previous","path","message","type","previousTypes","types","key","concat","transformToNestObject"],"mappings":"0gBAwDqC,SACnCA,EACAC,cAAAA,IAAAA,EAAU,CACRC,YAAY,QAEZC,cAAS,CAAEA,KAAM,YAAjBA,qBACQC,EAAQC,SAAWC,IAAAA,sFASrBC,GAWN,MAAO,CACLH,OAAQG,EACRC,OAAQ,IArBR,OACEP,EAAQI,SAAoC,gBAAzBI,QAAQC,IAAIC,UAEjCC,QAAQC,KACN,iGAKO,UAATV,kBAAS,UAATA,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,gBAPG,UAATF,EACUH,EAAOc,SAASV,OACjBH,GACHI,QAAAA,KAEFL,EAAOe,aAAaX,OACfH,GACHI,QAAAA,8EAODW,GACP,IA3EFC,EACAC,IA0EQC,GA3ERF,EA2EwCD,EA1ExCE,EA0E4D,QAAjBZ,EAxEpCc,MAAMC,QAAQJ,EAAMK,QAAUL,EAAMK,MAAMC,OAC7CN,EAAMK,MAAME,OACV,SAACC,aAAiCC,IAAAA,KAAMC,IAAAA,QAASC,IAAAA,KAEzCC,EAAiBJ,EAASC,IAASD,EAASC,GAAMI,OAAU,GAC5DC,EAAML,GAAQE,EAEpB,YACKH,EACCM,UAEGA,QACKN,EAASM,IAAQ,CACnBJ,QAAAA,EACAC,KAAAA,GAEEV,EACA,CACEY,WACKD,UAEFD,GAAOC,EAAcD,aAEd,GAAGI,OAAOH,EAAcD,KAAQD,IACpCA,OAGR,OAGR,KAGR,YAICV,EAAMS,MAAO,CAAEC,QAASV,EAAMU,QAASC,KAAMX,EAAMW,UAqCxD,MAAO,CACLxB,OAAQ,GACRI,OAAQyB,wBAAsBd,OAnCC"}
1
+ {"version":3,"file":"yup.umd.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError } 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>>((previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {});\n};\n\nexport const yupResolver: Resolver = (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n 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 ](values, Object.assign({}, schemaOptions, { context }));\n\n return {\n values: result,\n errors: {},\n };\n } catch (e) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(e, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","result","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","inner","reduce","previous","path","message","type","appendErrors","fields"],"mappings":"sYAgCqC,SACnCA,EACAC,EAGAC,mBAHAD,IAAAA,EAAgB,CACdE,YAAY,aAEdD,IAAAA,EAAkB,aACRE,EAAQC,EAASC,uDAErBL,EAAcI,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBX,EACM,SAAzBE,EAAgBU,KAAkB,eAAiB,YACnDR,EAAQS,OAAOC,OAAO,GAAIb,EAAe,CAAEI,QAAAA,oBAFvCU,GAIN,MAAO,CACLX,OAAQW,EACRC,OAAQ,4EAEHC,GACP,MAAO,CACLb,OAAQ,GACRY,OAAQE,eAhDZC,EAiDuBF,EAhDvBG,EAgDmD,QAAzBd,EAAQe,aA9C3BF,EAAMG,MAAMC,OAAmC,SAACC,EAAUL,GAe/D,OAdKK,EAASL,EAAMM,QAClBD,EAASL,EAAMM,MAAS,CAAEC,QAASP,EAAMO,QAASC,KAAMR,EAAMQ,OAG5DP,IACFI,EAASL,EAAMM,MAASG,eACtBT,EAAMM,KACNL,EACAI,EACAL,EAAMQ,KACNR,EAAMO,UAIHF,GACN,KA+BGlB,EAAQuB,SAnDS,IACvBV,EACAC,KAqBmC"}
package/yup/package.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "types": "dist/index.d.ts",
12
12
  "license": "MIT",
13
13
  "peerDependencies": {
14
- "react-hook-form": ">=6.6.0"
14
+ "react-hook-form": ">=6.6.0",
15
+ "@hookform/resolvers": ">=2.0.0"
15
16
  }
16
17
  }
@@ -0,0 +1,65 @@
1
+ import { Field, InternalFieldName } from 'react-hook-form';
2
+ import * as yup from 'yup';
3
+
4
+ export const schema = yup.object({
5
+ username: yup.string().matches(/^\w+$/).min(3).max(30).required(),
6
+ password: yup
7
+ .string()
8
+ .matches(/^[a-zA-Z0-9]{3,30}/)
9
+ .required(),
10
+ repeatPassword: yup.ref('password'),
11
+ accessToken: yup.string(),
12
+ birthYear: yup.number().min(1900).max(2013),
13
+ email: yup.string().email(),
14
+ tags: yup.array(yup.string()),
15
+ enabled: yup.boolean(),
16
+ like: yup.array().of(
17
+ yup.object({
18
+ id: yup.number().required(),
19
+ name: yup.string().length(4).required(),
20
+ }),
21
+ ),
22
+ });
23
+
24
+ export const validData: yup.InferType<typeof schema> = {
25
+ username: 'Doe',
26
+ password: 'Password123',
27
+ repeatPassword: 'Password123',
28
+ birthYear: 2000,
29
+ email: 'john@doe.com',
30
+ tags: ['tag1', 'tag2'],
31
+ enabled: true,
32
+ accessToken: 'accessToken',
33
+ like: [
34
+ {
35
+ id: 1,
36
+ name: 'name',
37
+ },
38
+ ],
39
+ };
40
+
41
+ export const invalidData = {
42
+ password: '___',
43
+ email: '',
44
+ birthYear: 'birthYear',
45
+ like: [{ id: 'z' }],
46
+ };
47
+
48
+ export const fields: Record<InternalFieldName, Field['_f']> = {
49
+ username: {
50
+ ref: { name: 'username' },
51
+ name: 'username',
52
+ },
53
+ password: {
54
+ ref: { name: 'password' },
55
+ name: 'password',
56
+ },
57
+ email: {
58
+ ref: { name: 'email' },
59
+ name: 'email',
60
+ },
61
+ birthday: {
62
+ ref: { name: 'birthday' },
63
+ name: 'birthday',
64
+ },
65
+ };