@hookform/resolvers 5.4.3 → 5.5.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 (90) hide show
  1. package/ajv/dist/ajv.js.map +1 -1
  2. package/ajv/dist/ajv.modern.mjs.map +1 -1
  3. package/ajv/dist/ajv.module.js.map +1 -1
  4. package/ajv/dist/ajv.umd.js.map +1 -1
  5. package/arktype/dist/arktype.js.map +1 -1
  6. package/arktype/dist/arktype.modern.mjs.map +1 -1
  7. package/arktype/dist/arktype.module.js.map +1 -1
  8. package/arktype/dist/arktype.umd.js.map +1 -1
  9. package/ata-validator/dist/ata-validator.js.map +1 -1
  10. package/ata-validator/dist/ata-validator.modern.mjs.map +1 -1
  11. package/ata-validator/dist/ata-validator.module.js.map +1 -1
  12. package/ata-validator/dist/ata-validator.umd.js.map +1 -1
  13. package/class-validator/dist/class-validator.js.map +1 -1
  14. package/class-validator/dist/class-validator.modern.mjs.map +1 -1
  15. package/class-validator/dist/class-validator.module.js.map +1 -1
  16. package/class-validator/dist/class-validator.umd.js.map +1 -1
  17. package/computed-types/dist/computed-types.js.map +1 -1
  18. package/computed-types/dist/computed-types.modern.mjs.map +1 -1
  19. package/computed-types/dist/computed-types.module.js.map +1 -1
  20. package/computed-types/dist/computed-types.umd.js.map +1 -1
  21. package/dist/resolvers.js.map +1 -1
  22. package/dist/resolvers.mjs.map +1 -1
  23. package/dist/resolvers.module.js.map +1 -1
  24. package/dist/resolvers.umd.js.map +1 -1
  25. package/effect-ts/dist/effect-ts.js.map +1 -1
  26. package/effect-ts/dist/effect-ts.modern.mjs.map +1 -1
  27. package/effect-ts/dist/effect-ts.module.js.map +1 -1
  28. package/effect-ts/dist/effect-ts.umd.js.map +1 -1
  29. package/fluentvalidation-ts/dist/fluentvalidation-ts.js.map +1 -1
  30. package/fluentvalidation-ts/dist/fluentvalidation-ts.modern.mjs.map +1 -1
  31. package/fluentvalidation-ts/dist/fluentvalidation-ts.module.js.map +1 -1
  32. package/fluentvalidation-ts/dist/fluentvalidation-ts.umd.js.map +1 -1
  33. package/io-ts/dist/io-ts.js.map +1 -1
  34. package/io-ts/dist/io-ts.modern.mjs.map +1 -1
  35. package/io-ts/dist/io-ts.module.js.map +1 -1
  36. package/io-ts/dist/io-ts.umd.js.map +1 -1
  37. package/joi/dist/joi.js.map +1 -1
  38. package/joi/dist/joi.modern.mjs.map +1 -1
  39. package/joi/dist/joi.module.js.map +1 -1
  40. package/joi/dist/joi.umd.js.map +1 -1
  41. package/nope/dist/nope.js.map +1 -1
  42. package/nope/dist/nope.modern.mjs.map +1 -1
  43. package/nope/dist/nope.module.js.map +1 -1
  44. package/nope/dist/nope.umd.js.map +1 -1
  45. package/nope/dist/types.d.ts +2 -1
  46. package/nope/src/nope.ts +7 -1
  47. package/nope/src/types.ts +7 -1
  48. package/package.json +31 -28
  49. package/standard-schema/dist/standard-schema.js.map +1 -1
  50. package/standard-schema/dist/standard-schema.modern.mjs.map +1 -1
  51. package/standard-schema/dist/standard-schema.module.js.map +1 -1
  52. package/standard-schema/dist/standard-schema.umd.js.map +1 -1
  53. package/superstruct/dist/superstruct.js.map +1 -1
  54. package/superstruct/dist/superstruct.modern.mjs.map +1 -1
  55. package/superstruct/dist/superstruct.module.js.map +1 -1
  56. package/superstruct/dist/superstruct.umd.js.map +1 -1
  57. package/typanion/dist/typanion.js.map +1 -1
  58. package/typanion/dist/typanion.modern.mjs.map +1 -1
  59. package/typanion/dist/typanion.module.js.map +1 -1
  60. package/typanion/dist/typanion.umd.js.map +1 -1
  61. package/typebox/dist/typebox.js.map +1 -1
  62. package/typebox/dist/typebox.modern.mjs.map +1 -1
  63. package/typebox/dist/typebox.module.js.map +1 -1
  64. package/typebox/dist/typebox.umd.js.map +1 -1
  65. package/typeschema/dist/typeschema.js.map +1 -1
  66. package/typeschema/dist/typeschema.modern.mjs.map +1 -1
  67. package/typeschema/dist/typeschema.module.js.map +1 -1
  68. package/typeschema/dist/typeschema.umd.js.map +1 -1
  69. package/typeschema/src/__tests__/Form-native-validation.tsx +1 -2
  70. package/typeschema/src/__tests__/Form.tsx +1 -2
  71. package/valibot/dist/valibot.js.map +1 -1
  72. package/valibot/dist/valibot.modern.mjs.map +1 -1
  73. package/valibot/dist/valibot.module.js.map +1 -1
  74. package/valibot/dist/valibot.umd.js.map +1 -1
  75. package/vest/dist/vest.js.map +1 -1
  76. package/vest/dist/vest.modern.mjs.map +1 -1
  77. package/vest/dist/vest.module.js.map +1 -1
  78. package/vest/dist/vest.umd.js.map +1 -1
  79. package/vine/dist/vine.js.map +1 -1
  80. package/vine/dist/vine.modern.mjs.map +1 -1
  81. package/vine/dist/vine.module.js.map +1 -1
  82. package/vine/dist/vine.umd.js.map +1 -1
  83. package/yup/dist/yup.js.map +1 -1
  84. package/yup/dist/yup.modern.mjs.map +1 -1
  85. package/yup/dist/yup.module.js.map +1 -1
  86. package/yup/dist/yup.umd.js.map +1 -1
  87. package/zod/dist/zod.js.map +1 -1
  88. package/zod/dist/zod.modern.mjs.map +1 -1
  89. package/zod/dist/zod.module.js.map +1 -1
  90. package/zod/dist/zod.umd.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"io-ts.umd.js","sources":["../src/arrayToPath.ts","../src/errorsToRecord.ts","../src/io-ts.ts"],"sourcesContent":["import * as Either from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\n\nconst arrayToPath = (paths: Either.Either<string, number>[]): string =>\n paths.reduce(\n (previous, path, index) =>\n pipe(\n path,\n Either.fold(\n (key) => `${index > 0 ? '.' : ''}${key}`,\n (key) => `[${key}]`,\n ),\n (path) => `${previous}${path}`,\n ),\n '',\n );\n\nexport default arrayToPath;\n","import * as Either from 'fp-ts/Either';\nimport * as Option from 'fp-ts/Option';\nimport * as ReadonlyArray from 'fp-ts/ReadonlyArray';\nimport * as ReadonlyRecord from 'fp-ts/ReadonlyRecord';\nimport * as SemiGroup from 'fp-ts/Semigroup';\nimport { absurd, flow, identity, not, pipe } from 'fp-ts/function';\nimport * as t from 'io-ts';\nimport {\n ExactType,\n IntersectionType,\n RefinementType,\n TaggedUnionType,\n UnionType,\n ValidationError,\n} from 'io-ts';\nimport { FieldError } from 'react-hook-form';\nimport arrayToPath from './arrayToPath';\n\nexport type ErrorObject = Record<string, FieldError>;\nexport type FieldErrorWithPath = FieldError & { path: string };\n\nconst INSTANCE_TYPES_TO_FILTER = [\n TaggedUnionType,\n UnionType,\n IntersectionType,\n ExactType,\n RefinementType,\n];\nconst formatErrorPath = (context: t.Context): string =>\n pipe(\n context,\n ReadonlyArray.filterMapWithIndex((index, contextEntry) => {\n const previousIndex = index - 1;\n const previousContextEntry =\n previousIndex === -1 ? undefined : context[previousIndex];\n const shouldBeFiltered =\n previousContextEntry === undefined ||\n INSTANCE_TYPES_TO_FILTER.some(\n (type) => previousContextEntry.type instanceof type,\n );\n\n return shouldBeFiltered ? Option.none : Option.some(contextEntry);\n }),\n ReadonlyArray.map(({ key }) => key),\n ReadonlyArray.map((key) =>\n pipe(\n key,\n (k) => parseInt(k, 10),\n Either.fromPredicate(not<number>(Number.isNaN), () => key),\n ),\n ),\n ReadonlyArray.toArray,\n arrayToPath,\n );\n\nconst formatError = (e: t.ValidationError): FieldErrorWithPath => {\n const path = formatErrorPath(e.context);\n\n const message = pipe(\n e.message,\n Either.fromNullable(e.context),\n Either.mapLeft(\n flow(\n ReadonlyArray.last,\n Option.map(\n (contextEntry) =>\n `expected ${contextEntry.type.name} but got ${JSON.stringify(\n contextEntry.actual,\n )}`,\n ),\n Option.getOrElseW(() =>\n absurd<string>('Error context is missing name' as never),\n ),\n ),\n ),\n Either.getOrElseW(identity),\n );\n\n const type = pipe(\n e.context,\n ReadonlyArray.last,\n Option.map((contextEntry) => contextEntry.type.name),\n Option.getOrElse(() => 'unknown'),\n );\n\n return { message, type, path };\n};\n\n// this is almost the same function like Semigroup.getObjectSemigroup but reversed\n// in order to get the first error\nconst getObjectSemigroup = <\n A extends Record<string, unknown> = never,\n>(): SemiGroup.Semigroup<A> => ({\n concat: (first, second) => Object.assign({}, second, first),\n});\n\nconst concatToSingleError = (\n errors: ReadonlyArray<FieldErrorWithPath>,\n): ErrorObject =>\n pipe(\n errors,\n ReadonlyArray.map((error) => ({\n [error.path]: {\n type: error.type,\n message: error.message,\n },\n })),\n (errors) => SemiGroup.fold(getObjectSemigroup<ErrorObject>())({}, errors),\n );\n\nconst appendSeveralErrors: SemiGroup.Semigroup<FieldErrorWithPath> = {\n concat: (a, b) => ({\n ...b,\n types: { ...a.types, [a.type]: a.message, [b.type]: b.message },\n }),\n};\n\nconst concatToMultipleErrors = (\n errors: ReadonlyArray<FieldErrorWithPath>,\n): ErrorObject =>\n pipe(\n ReadonlyRecord.fromFoldableMap(appendSeveralErrors, ReadonlyArray.Foldable)(\n errors,\n (error) => [error.path, error],\n ),\n ReadonlyRecord.map((errorWithPath) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { path, ...error } = errorWithPath;\n\n return error;\n }),\n );\n\nconst errorsToRecord =\n (validateAllFieldCriteria: boolean) =>\n (validationErrors: ReadonlyArray<ValidationError>): ErrorObject => {\n const concat = validateAllFieldCriteria\n ? concatToMultipleErrors\n : concatToSingleError;\n\n return pipe(validationErrors, ReadonlyArray.map(formatError), concat);\n };\n\nexport default errorsToRecord;\n","import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport * as Either from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport * as t from 'io-ts';\nimport {\n FieldErrors,\n FieldValues,\n Resolver,\n ResolverError,\n ResolverSuccess,\n} from 'react-hook-form';\nimport errorsToRecord, { ErrorObject } from './errorsToRecord';\n\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n resolverOptions?: {\n mode?: 'async' | 'sync';\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n resolverOptions: {\n mode?: 'async' | 'sync';\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form using io-ts schema validation\n * @param {t.Type<TFieldValues, T>} schema - The io-ts schema to validate against\n * @param {Object} options - Additional resolver configuration\n * @param {string} [options.mode='async'] - Validation mode\n * @returns {Resolver<t.OutputOf<typeof schema>>} A resolver function compatible with react-hook-form\n * @example\n * const schema = t.type({\n * name: t.string,\n * age: t.number\n * });\n *\n * useForm({\n * resolver: ioTsResolver(schema)\n * });\n */\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n): Resolver<Input, Context, Input | Output> {\n return (values, _context, options) =>\n pipe(\n values,\n schema.decode,\n Either.mapLeft(\n errorsToRecord(\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n ),\n ),\n Either.mapLeft((errors: ErrorObject) =>\n toNestErrors<Input>(errors, options),\n ),\n Either.fold<\n FieldErrors<Input>,\n Output,\n ResolverError<Input> | ResolverSuccess<Output | Input>\n >(\n (errors) => ({\n values: {},\n errors,\n }),\n (values) => {\n options.shouldUseNativeValidation &&\n validateFieldsNatively({}, options);\n\n return {\n values,\n errors: {},\n };\n },\n ),\n );\n}\n"],"names":["arrayToPath","paths","reduce","previous","path","index","pipe","Either","fold","key","_excluded","INSTANCE_TYPES_TO_FILTER","TaggedUnionType","UnionType","IntersectionType","ExactType","RefinementType","formatError","e","context","ReadonlyArray","filterMapWithIndex","contextEntry","previousIndex","previousContextEntry","undefined","some","type","Option","none","map","_ref","k","parseInt","fromPredicate","not","Number","isNaN","toArray","message","fromNullable","mapLeft","flow","last","name","JSON","stringify","actual","getOrElseW","absurd","identity","getOrElse","concatToSingleError","errors","error","_ref2","SemiGroup","concat","first","second","Object","assign","appendSeveralErrors","a","b","_extends2","_extends","types","concatToMultipleErrors","ReadonlyRecord","fromFoldableMap","Foldable","errorWithPath","_objectWithoutPropertiesLoose","schema","values","_context","options","decode","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","validationErrors","toNestErrors","validateFieldsNatively"],"mappings":"mxCAGA,IAAMA,EAAc,SAACC,UACnBA,EAAMC,OACJ,SAACC,EAAUC,EAAMC,GAAK,OACpBC,EAAAA,KACEF,EACAG,EAAOC,KACL,SAACC,GAAG,OAAQJ,EAAQ,EAAI,IAAM,IAAKI,CAAG,EACtC,SAACA,GAAYA,MAAAA,IAAAA,QAEf,SAACL,YAAYD,EAAWC,CAAI,EAC7B,EACH,GACD,ECfHM,EAAA,CAAA,QAqBMC,EAA2B,CAC/BC,EAAeA,gBACfC,EAASA,UACTC,mBACAC,EAAAA,UACAC,EAAAA,gBA6BIC,EAAc,SAACC,GACnB,IA5BuBC,EA4BjBf,EA3BNE,EAAAA,KADuBa,EA4BMD,EAAEC,QAzB7BC,EAAcC,mBAAmB,SAAChB,EAAOiB,GACvC,IAAMC,EAAgBlB,EAAQ,EACxBmB,GACe,IAAnBD,OAAuBE,EAAYN,EAAQI,GAO7C,YAL2BE,IAAzBD,GACAb,EAAyBe,KACvB,SAACC,UAASH,EAAqBG,gBAAgBA,CAAI,GAG7BC,EAAOC,KAAOD,EAAOF,KAAKJ,EACtD,GACAF,EAAcU,IAAI,SAAAC,GAAM,OAAAA,EAAHtB,GAAa,GAClCW,EAAcU,IAAI,SAACrB,UACjBH,OACEG,EACA,SAACuB,GAAC,OAAKC,SAASD,EAAG,GAAG,EACtBzB,EAAO2B,cAAcC,EAAAA,IAAYC,OAAOC,OAAQ,WAAM,OAAA5B,CAAG,GAC1D,GAEHW,EAAckB,QACdtC,GAiCF,MAAO,CAAEuC,QA3BOjC,OACdY,EAAEqB,QACFhC,EAAOiC,aAAatB,EAAEC,SACtBZ,EAAOkC,QACLC,EAAAA,KACEtB,EAAcuB,KACdf,EAAOE,IACL,SAACR,GAAY,MAAA,YACCA,EAAaK,KAAKiB,iBAAgBC,KAAKC,UACjDxB,EAAayB,OACd,GAELnB,EAAOoB,WAAW,kBAChBC,EAAMA,OAAS,gCAAyC,KAI9D1C,EAAOyC,WAAWE,EAAAA,WAUFvB,KAPLrB,EAAAA,KACXY,EAAEC,QACFC,EAAcuB,KACdf,EAAOE,IAAI,SAACR,GAAY,OAAKA,EAAaK,KAAKiB,IAAI,GACnDhB,EAAOuB,UAAU,WAAA,MAAM,SAAS,IAGV/C,KAAAA,EAC1B,EAUMgD,EAAsB,SAC1BC,GAAyC,OAEzC/C,OACE+C,EACAjC,EAAcU,IAAI,SAACwB,GAAK,IAAAC,EAAAA,OAAAA,MACrBD,EAAMlD,MAAO,CACZuB,KAAM2B,EAAM3B,KACZY,QAASe,EAAMf,SAChBgB,CAAA,GAEH,SAACF,GAAW,OAAAG,EAAUhD,KAfM,CAC9BiD,OAAQ,SAACC,EAAOC,UAAWC,OAAOC,OAAO,GAAIF,EAAQD,EAAM,GAc7CF,CAAkD,GAAIH,EAAO,EAC1E,EAEGS,EAA+D,CACnEL,OAAQ,SAACM,EAAGC,GAAC,IAAAC,EAAAC,OAAAA,EACRF,CAAAA,EAAAA,GACHG,MAAKD,EAAA,CAAA,EAAOH,EAAEI,OAAKF,KAAAA,EAAGF,EAAEpC,MAAOoC,EAAExB,QAAO0B,EAAGD,EAAErC,MAAOqC,EAAEzB,QAAO0B,KAAE,GAI7DG,EAAyB,SAC7Bf,GAEA,OAAA/C,EAAIA,KACF+D,EAAeC,gBAAgBR,EAAqB1C,EAAcmD,SAAlEF,CACEhB,EACA,SAACC,GAAU,MAAA,CAACA,EAAMlD,KAAMkD,EAAM,GAEhCe,EAAevC,IAAI,SAAC0C,GAIlB,kJAFsBC,CAAKD,EAAa9D,EAG1C,GACD,iBCtFa,SACdgE,GAEA,OAAO,SAACC,EAAQC,EAAUC,GAAO,OAC/BvE,EAAIA,KACFqE,EACAD,EAAOI,OACPvE,EAAOkC,SDkFVsC,GChFQF,EAAQG,2BAAsD,QAAzBH,EAAQI,sBDiFrDC,GACC,IAAMzB,EAASsB,EACXX,EACAhB,EAEJ,OAAO9C,EAAAA,KAAK4E,EAAkB9D,EAAcU,IAAIb,GAAcwC,EAChE,ICpFIlD,EAAOkC,QAAQ,SAACY,GACd,OAAA8B,EAAAA,aAAoB9B,EAAQwB,EAAQ,GAEtCtE,EAAOC,KAKL,SAAC6C,GAAM,MAAM,CACXsB,OAAQ,CAAA,EACRtB,OAAAA,EACD,EACD,SAACsB,GAIC,OAHAE,EAAQG,2BACNI,EAAAA,uBAAuB,CAAE,EAAEP,GAEtB,CACLF,OAAAA,EACAtB,OAAQ,GAEZ,IDyDN,IAAC0B,CCvDE,CACL"}
1
+ {"version":3,"file":"io-ts.umd.js","sources":["../src/arrayToPath.ts","../src/errorsToRecord.ts","../src/io-ts.ts"],"sourcesContent":["import * as Either from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\n\nconst arrayToPath = (paths: Either.Either<string, number>[]): string =>\n paths.reduce(\n (previous, path, index) =>\n pipe(\n path,\n Either.fold(\n (key) => `${index > 0 ? '.' : ''}${key}`,\n (key) => `[${key}]`,\n ),\n (path) => `${previous}${path}`,\n ),\n '',\n );\n\nexport default arrayToPath;\n","import * as Either from 'fp-ts/Either';\nimport * as Option from 'fp-ts/Option';\nimport * as ReadonlyArray from 'fp-ts/ReadonlyArray';\nimport * as ReadonlyRecord from 'fp-ts/ReadonlyRecord';\nimport * as SemiGroup from 'fp-ts/Semigroup';\nimport { absurd, flow, identity, not, pipe } from 'fp-ts/function';\nimport * as t from 'io-ts';\nimport {\n ExactType,\n IntersectionType,\n RefinementType,\n TaggedUnionType,\n UnionType,\n ValidationError,\n} from 'io-ts';\nimport { FieldError } from 'react-hook-form';\nimport arrayToPath from './arrayToPath';\n\nexport type ErrorObject = Record<string, FieldError>;\nexport type FieldErrorWithPath = FieldError & { path: string };\n\nconst INSTANCE_TYPES_TO_FILTER = [\n TaggedUnionType,\n UnionType,\n IntersectionType,\n ExactType,\n RefinementType,\n];\nconst formatErrorPath = (context: t.Context): string =>\n pipe(\n context,\n ReadonlyArray.filterMapWithIndex((index, contextEntry) => {\n const previousIndex = index - 1;\n const previousContextEntry =\n previousIndex === -1 ? undefined : context[previousIndex];\n const shouldBeFiltered =\n previousContextEntry === undefined ||\n INSTANCE_TYPES_TO_FILTER.some(\n (type) => previousContextEntry.type instanceof type,\n );\n\n return shouldBeFiltered ? Option.none : Option.some(contextEntry);\n }),\n ReadonlyArray.map(({ key }) => key),\n ReadonlyArray.map((key) =>\n pipe(\n key,\n (k) => parseInt(k, 10),\n Either.fromPredicate(not<number>(Number.isNaN), () => key),\n ),\n ),\n ReadonlyArray.toArray,\n arrayToPath,\n );\n\nconst formatError = (e: t.ValidationError): FieldErrorWithPath => {\n const path = formatErrorPath(e.context);\n\n const message = pipe(\n e.message,\n Either.fromNullable(e.context),\n Either.mapLeft(\n flow(\n ReadonlyArray.last,\n Option.map(\n (contextEntry) =>\n `expected ${contextEntry.type.name} but got ${JSON.stringify(\n contextEntry.actual,\n )}`,\n ),\n Option.getOrElseW(() =>\n absurd<string>('Error context is missing name' as never),\n ),\n ),\n ),\n Either.getOrElseW(identity),\n );\n\n const type = pipe(\n e.context,\n ReadonlyArray.last,\n Option.map((contextEntry) => contextEntry.type.name),\n Option.getOrElse(() => 'unknown'),\n );\n\n return { message, type, path };\n};\n\n// this is almost the same function like Semigroup.getObjectSemigroup but reversed\n// in order to get the first error\nconst getObjectSemigroup = <\n A extends Record<string, unknown> = never,\n>(): SemiGroup.Semigroup<A> => ({\n concat: (first, second) => Object.assign({}, second, first),\n});\n\nconst concatToSingleError = (\n errors: ReadonlyArray<FieldErrorWithPath>,\n): ErrorObject =>\n pipe(\n errors,\n ReadonlyArray.map((error) => ({\n [error.path]: {\n type: error.type,\n message: error.message,\n },\n })),\n (errors) => SemiGroup.fold(getObjectSemigroup<ErrorObject>())({}, errors),\n );\n\nconst appendSeveralErrors: SemiGroup.Semigroup<FieldErrorWithPath> = {\n concat: (a, b) => ({\n ...b,\n types: { ...a.types, [a.type]: a.message, [b.type]: b.message },\n }),\n};\n\nconst concatToMultipleErrors = (\n errors: ReadonlyArray<FieldErrorWithPath>,\n): ErrorObject =>\n pipe(\n ReadonlyRecord.fromFoldableMap(appendSeveralErrors, ReadonlyArray.Foldable)(\n errors,\n (error) => [error.path, error],\n ),\n ReadonlyRecord.map((errorWithPath) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { path, ...error } = errorWithPath;\n\n return error;\n }),\n );\n\nconst errorsToRecord =\n (validateAllFieldCriteria: boolean) =>\n (validationErrors: ReadonlyArray<ValidationError>): ErrorObject => {\n const concat = validateAllFieldCriteria\n ? concatToMultipleErrors\n : concatToSingleError;\n\n return pipe(validationErrors, ReadonlyArray.map(formatError), concat);\n };\n\nexport default errorsToRecord;\n","import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport * as Either from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport * as t from 'io-ts';\nimport {\n FieldErrors,\n FieldValues,\n Resolver,\n ResolverError,\n ResolverSuccess,\n} from 'react-hook-form';\nimport errorsToRecord, { ErrorObject } from './errorsToRecord';\n\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n resolverOptions?: {\n mode?: 'async' | 'sync';\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n resolverOptions: {\n mode?: 'async' | 'sync';\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form using io-ts schema validation\n * @param {t.Type<TFieldValues, T>} schema - The io-ts schema to validate against\n * @param {Object} options - Additional resolver configuration\n * @param {string} [options.mode='async'] - Validation mode\n * @returns {Resolver<t.OutputOf<typeof schema>>} A resolver function compatible with react-hook-form\n * @example\n * const schema = t.type({\n * name: t.string,\n * age: t.number\n * });\n *\n * useForm({\n * resolver: ioTsResolver(schema)\n * });\n */\nexport function ioTsResolver<Input extends FieldValues, Context, Output>(\n schema: t.Type<Output, Input>,\n): Resolver<Input, Context, Input | Output> {\n return (values, _context, options) =>\n pipe(\n values,\n schema.decode,\n Either.mapLeft(\n errorsToRecord(\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n ),\n ),\n Either.mapLeft((errors: ErrorObject) =>\n toNestErrors<Input>(errors, options),\n ),\n Either.fold<\n FieldErrors<Input>,\n Output,\n ResolverError<Input> | ResolverSuccess<Output | Input>\n >(\n (errors) => ({\n values: {},\n errors,\n }),\n (values) => {\n options.shouldUseNativeValidation &&\n validateFieldsNatively({}, options);\n\n return {\n values,\n errors: {},\n };\n },\n ),\n );\n}\n"],"names":["arrayToPath","paths","reduce","previous","path","index","pipe","Either","fold","key","_excluded","INSTANCE_TYPES_TO_FILTER","TaggedUnionType","UnionType","IntersectionType","ExactType","RefinementType","formatError","e","context","ReadonlyArray","filterMapWithIndex","contextEntry","previousIndex","previousContextEntry","undefined","some","type","Option","none","map","_ref","k","parseInt","fromPredicate","not","Number","isNaN","toArray","message","fromNullable","mapLeft","flow","last","name","JSON","stringify","actual","getOrElseW","absurd","identity","getOrElse","concatToSingleError","errors","error","_ref2","SemiGroup","concat","first","second","Object","assign","appendSeveralErrors","a","b","_extends2","_extends","types","concatToMultipleErrors","ReadonlyRecord","fromFoldableMap","Foldable","errorWithPath","_objectWithoutPropertiesLoose","schema","values","_context","options","decode","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","validationErrors","toNestErrors","validateFieldsNatively"],"mappings":"mxCAGA,IAAMA,EAAc,SAACC,UACnBA,EAAMC,OACJ,SAACC,EAAUC,EAAMC,GAAK,OACpBC,EAAAA,KACEF,EACAG,EAAOC,KACL,SAACC,GAAG,OAAQJ,EAAQ,EAAI,IAAM,IAAKI,CAAG,EACtC,SAACA,GAAYA,MAAAA,IAAAA,QAEf,SAACL,YAAYD,EAAWC,CAAI,EAC7B,EACH,GACD,ECfHM,EAAA,CAAA,QAqBMC,EAA2B,CAC/BC,EAAeA,gBACfC,EAASA,UACTC,mBACAC,EAAAA,UACAC,EAAAA,gBA6BIC,EAAc,SAACC,GACnB,IA5BuBC,EA4BjBf,EA3BNE,EAAAA,KADuBa,EA4BMD,EAAEC,QAzB7BC,EAAcC,mBAAmB,SAAChB,EAAOiB,GACvC,IAAMC,EAAgBlB,EAAQ,EACxBmB,GACe,IAAnBD,OAAuBE,EAAYN,EAAQI,GAO7C,YAL2BE,IAAzBD,GACAb,EAAyBe,KACvB,SAACC,GAAI,OAAKH,EAAqBG,gBAAgBA,CAAI,GAG7BC,EAAOC,KAAOD,EAAOF,KAAKJ,EACtD,GACAF,EAAcU,IAAI,SAAAC,GAAa,OAAPA,EAAHtB,GAAa,GAClCW,EAAcU,IAAI,SAACrB,GAAG,OACpBH,OACEG,EACA,SAACuB,GAAM,OAAAC,SAASD,EAAG,GAAG,EACtBzB,EAAO2B,cAAcC,EAAAA,IAAYC,OAAOC,OAAQ,kBAAM5B,CAAG,GAC1D,GAEHW,EAAckB,QACdtC,GAiCF,MAAO,CAAEuC,QA3BOjC,OACdY,EAAEqB,QACFhC,EAAOiC,aAAatB,EAAEC,SACtBZ,EAAOkC,QACLC,EAAAA,KACEtB,EAAcuB,KACdf,EAAOE,IACL,SAACR,GACaA,MAAAA,YAAAA,EAAaK,KAAKiB,KAAI,YAAYC,KAAKC,UACjDxB,EAAayB,OACd,GAELnB,EAAOoB,WAAW,WAAA,OAChBC,EAAMA,OAAS,gCAAyC,KAI9D1C,EAAOyC,WAAWE,EAAQA,WAUVvB,KAPLrB,EAAIA,KACfY,EAAEC,QACFC,EAAcuB,KACdf,EAAOE,IAAI,SAACR,UAAiBA,EAAaK,KAAKiB,IAAI,GACnDhB,EAAOuB,UAAU,iBAAM,SAAS,IAGV/C,KAAAA,EAC1B,EAUMgD,EAAsB,SAC1BC,GAEA,OAAA/C,OACE+C,EACAjC,EAAcU,IAAI,SAACwB,GAAKC,IAAAA,SAAAA,EAAA,CAAA,GACrBD,EAAMlD,MAAO,CACZuB,KAAM2B,EAAM3B,KACZY,QAASe,EAAMf,SAChBgB,CAAA,GAEH,SAACF,GAAM,OAAKG,EAAUhD,KAfM,CAC9BiD,OAAQ,SAACC,EAAOC,GAAM,OAAKC,OAAOC,OAAO,GAAIF,EAAQD,EAAM,GAc7CF,CAAkD,CAAA,EAAIH,EAAO,EAC1E,EAEGS,EAA+D,CACnEL,OAAQ,SAACM,EAAGC,GAACC,IAAAA,SAAAC,EAAA,CAAA,EACRF,EACHG,CAAAA,MAAKD,EAAA,CAAA,EAAOH,EAAEI,OAAKF,EAAAA,GAAAA,EAAGF,EAAEpC,MAAOoC,EAAExB,QAAO0B,EAAGD,EAAErC,MAAOqC,EAAEzB,QAAO0B,QAI3DG,EAAyB,SAC7Bf,GAEA,OAAA/C,EAAIA,KACF+D,EAAeC,gBAAgBR,EAAqB1C,EAAcmD,SAAlEF,CACEhB,EACA,SAACC,GAAK,MAAK,CAACA,EAAMlD,KAAMkD,EAAM,GAEhCe,EAAevC,IAAI,SAAC0C,GAIlB,kJAFsBC,CAAKD,EAAa9D,EAG1C,GACD,iBCtFa,SACdgE,GAEA,OAAO,SAACC,EAAQC,EAAUC,GAAO,OAC/BvE,EAAIA,KACFqE,EACAD,EAAOI,OACPvE,EAAOkC,SDkFVsC,GChFQF,EAAQG,2BAAsD,QAAzBH,EAAQI,aDiFtD,SAACC,GACC,IAAMzB,EAASsB,EACXX,EACAhB,EAEJ,OAAO9C,EAAIA,KAAC4E,EAAkB9D,EAAcU,IAAIb,GAAcwC,EAChE,ICpFIlD,EAAOkC,QAAQ,SAACY,GAAmB,OACjC8B,EAAYA,aAAQ9B,EAAQwB,EAAQ,GAEtCtE,EAAOC,KAKL,SAAC6C,GAAY,MAAA,CACXsB,OAAQ,CAAE,EACVtB,OAAAA,EACD,EACD,SAACsB,GAIC,OAHAE,EAAQG,2BACNI,EAAsBA,uBAAC,GAAIP,GAEtB,CACLF,OAAAA,EACAtB,OAAQ,CAAA,EAEZ,IDyDN,IAAC0B,CCvDE,CACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"joi.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"sFAsDE,SACEA,EACAC,EAGAC,GAAoB,YAHpBD,IAAAA,IAAAA,EAAgB,CACdE,YAAY,SAEdD,IAAAA,IAAAA,EAAkB,CAAE,GAAA,SAEfE,EAAQC,EAASC,GAAW,IAAA,IAAAC,EAAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAA,EACRM,OAAQC,EAAAA,cA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAAAA,aAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,CAAE,GAoDEZ,KAKNA,EAAQO,2BAA6Be,EAAsBA,uBAAC,GAAItB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAA,EAAI/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgBM,CAAAA,IAAAA,uFAAAC,YAE7CC,OAAAA,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAASC,SAAAA,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,YAAAL,EAAAK,KAAA,aAAA,CAAA,IAAA,OAAAH,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,UAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"joi.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"sFAsDE,SACEA,EACAC,EAGAC,eAHa,IAAbD,IAAAA,EAAgB,CACdE,YAAY,SAEC,IAAfD,IAAAA,EAAkB,CAAA,YAEbE,EAAQC,EAASC,GAAO,QAAIC,EAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAE,EACVM,OAAQC,gBA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAAAA,aAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,IAoDIZ,KAKNA,EAAQO,2BAA6Be,EAAAA,uBAAuB,CAAE,EAAEtB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAE,EAAE/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgB,CAAA,IAAAM,uFAAAC,CAE7C,WAAA,OAAAC,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAAC,SAAQC,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,KAAAL,OAAAA,EAAAK,KAAAH,WAAAA,EAAAA,CAAAA,IAAAA,OAAAA,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,GAAA,OAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"joi.modern.mjs","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["joiResolver","schema","schemaOptions","abortEarly","resolverOptions","async","values","context","options","_schemaOptions","Object","assign","result","mode","validate","value","validateAsync","e","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","parseErrorSchema"],"mappings":"8HAKA,MAgDaA,EACXA,CACEC,EACAC,EAAgB,CACdC,YAAY,GAEdC,EAAkB,KAEpBC,MAAOC,EAAQC,EAASC,KACtB,MAAMC,EAAiBC,OAAOC,OAAO,CAAA,EAAIT,EAAe,CACtDK,YAGF,IAAIK,EAA8B,CAAA,EAClC,GAA6B,SAAzBR,EAAgBS,KAClBD,EAASX,EAAOa,SAASR,EAAQG,QAEjC,IACEG,EAAOG,YAAcd,EAAOe,cAAcV,EAAQG,EACpD,CAAE,MAAOQ,GACPL,EAAOM,MAAQD,CACjB,CAGF,OAAIL,EAAOM,MACF,CACLZ,OAAQ,CAAE,EACVa,OAAQC,GA1EdF,EA4EUN,EAAOM,MA3EjBG,GA4EWb,EAAQc,2BACkB,QAAzBd,EAAQe,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,CAACC,EAAUT,KAC1D,MAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,MAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,GACN,CAAE,GACL,CAAE,GAoDEnB,KAKNA,EAAQc,2BAA6Be,EAAuB,CAAA,EAAI7B,GAEzD,CACLW,OAAQ,CAAA,EACRb,OAAQM,EAAOG,QA1FIuB,IACvBpB,EACAG"}
1
+ {"version":3,"file":"joi.modern.mjs","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["joiResolver","schema","schemaOptions","abortEarly","resolverOptions","async","values","context","options","_schemaOptions","Object","assign","result","mode","validate","value","validateAsync","e","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","parseErrorSchema"],"mappings":"8HAKA,MAgDaA,EACXA,CACEC,EACAC,EAAgB,CACdC,YAAY,GAEdC,EAAkB,CAAA,IAEpBC,MAAOC,EAAQC,EAASC,KACtB,MAAMC,EAAiBC,OAAOC,OAAO,CAAE,EAAET,EAAe,CACtDK,YAGF,IAAIK,EAA8B,GAClC,GAA6B,SAAzBR,EAAgBS,KAClBD,EAASX,EAAOa,SAASR,EAAQG,QAEjC,IACEG,EAAOG,YAAcd,EAAOe,cAAcV,EAAQG,EACpD,CAAE,MAAOQ,GACPL,EAAOM,MAAQD,CACjB,CAGF,OAAIL,EAAOM,MACF,CACLZ,OAAQ,CAAA,EACRa,OAAQC,GA1EdF,EA4EUN,EAAOM,MA3EjBG,GA4EWb,EAAQc,2BACkB,QAAzBd,EAAQe,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,CAACC,EAAUT,KAC1D,MAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,MAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CAAQ,EACd,CAAA,GACH,IAoDInB,KAKNA,EAAQc,2BAA6Be,EAAuB,CAAE,EAAE7B,GAEzD,CACLW,OAAQ,CAAE,EACVb,OAAQM,EAAOG,QA1FIuB,IACvBpB,EACAG,CAyFG"}
@@ -1 +1 @@
1
- {"version":3,"file":"joi.module.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["joiResolver","schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"8HAKA,IAgDaA,EACX,SACEC,EACAC,EAGAC,GAAoB,YAHpBD,IAAAA,IAAAA,EAAgB,CACdE,YAAY,SAEdD,IAAAA,IAAAA,EAAkB,CAAE,GAAA,SAEfE,EAAQC,EAASC,GAAW,IAAA,IAAAC,EAAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAA,EACRM,OAAQC,GA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,CAAE,GAoDEZ,KAKNA,EAAQO,2BAA6Be,EAAuB,GAAItB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAA,EAAI/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgBM,CAAAA,IAAAA,uFAAAC,YAE7CC,OAAAA,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAASC,SAAAA,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,YAAAL,EAAAK,KAAA,aAAA,CAAA,IAAA,OAAAH,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,UAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"joi.module.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["joiResolver","schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"8HAKA,IAgDaA,EACX,SACEC,EACAC,EAGAC,eAHa,IAAbD,IAAAA,EAAgB,CACdE,YAAY,SAEC,IAAfD,IAAAA,EAAkB,CAAA,YAEbE,EAAQC,EAASC,GAAO,QAAIC,EAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAE,EACVM,OAAQC,GA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,IAoDIZ,KAKNA,EAAQO,2BAA6Be,EAAuB,CAAE,EAAEtB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAE,EAAE/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgB,CAAA,IAAAM,uFAAAC,CAE7C,WAAA,OAAAC,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAAC,SAAQC,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,KAAAL,OAAAA,EAAAK,KAAAH,WAAAA,EAAAA,CAAAA,IAAAA,OAAAA,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,GAAA,OAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"joi.umd.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"sYAsDE,SACEA,EACAC,EAGAC,GAAoB,YAHpBD,IAAAA,IAAAA,EAAgB,CACdE,YAAY,SAEdD,IAAAA,IAAAA,EAAkB,CAAE,GAAA,SAEfE,EAAQC,EAASC,GAAW,IAAA,IAAAC,EAAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAA,EACRM,OAAQC,EAAAA,cA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAAAA,aAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,CAAE,GAoDEZ,KAKNA,EAAQO,2BAA6Be,EAAsBA,uBAAC,GAAItB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAA,EAAI/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgBM,CAAAA,IAAAA,uFAAAC,YAE7CC,OAAAA,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAASC,SAAAA,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,YAAAL,EAAAK,KAAA,aAAA,CAAA,IAAA,OAAAH,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,UAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"joi.umd.js","sources":["../src/joi.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ValidationError } from 'joi';\nimport { FieldError, appendErrors } from 'react-hook-form';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (\n error: ValidationError,\n validateAllFieldCriteria: boolean,\n) =>\n error.details.length\n ? error.details.reduce<Record<string, FieldError>>((previous, error) => {\n const _path = error.path.join('.');\n\n if (!previous[_path]) {\n previous[_path] = { message: error.message, type: error.type };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[_path].types;\n const messages = types && types[error.type!];\n\n previous[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n previous,\n error.type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n }, {})\n : {};\n\n/**\n * Creates a resolver for react-hook-form using Joi schema validation\n * @param {Joi.ObjectSchema<TFieldValues>} schema - The Joi schema to validate against\n * @param {Joi.ValidationOptions} [schemaOptions] - Optional Joi validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<TFieldValues>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Joi.object({\n * name: Joi.string().required(),\n * age: Joi.number().required()\n * });\n *\n * useForm({\n * resolver: joiResolver(schema)\n * });\n */\nexport const joiResolver: Resolver =\n (\n schema,\n schemaOptions = {\n abortEarly: false,\n },\n resolverOptions = {},\n ) =>\n async (values, context, options) => {\n const _schemaOptions = Object.assign({}, schemaOptions, {\n context,\n });\n\n let result: Record<string, any> = {};\n if (resolverOptions.mode === 'sync') {\n result = schema.validate(values, _schemaOptions);\n } else {\n try {\n result.value = await schema.validateAsync(values, _schemaOptions);\n } catch (e) {\n result.error = e;\n }\n }\n\n if (result.error) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n result.error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {},\n values: result.value,\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","abortEarly","values","context","options","_temp3","result","error","errors","toNestErrors","validateAllFieldCriteria","shouldUseNativeValidation","criteriaMode","details","length","reduce","previous","_path","path","join","message","type","types","messages","appendErrors","concat","validateFieldsNatively","value","_schemaOptions","Object","assign","_temp2","mode","validate","_temp","_catch","Promise","resolve","validateAsync","then","_schema$validateAsync","e","reject"],"mappings":"sYAsDE,SACEA,EACAC,EAGAC,eAHa,IAAbD,IAAAA,EAAgB,CACdE,YAAY,SAEC,IAAfD,IAAAA,EAAkB,CAAA,YAEbE,EAAQC,EAASC,GAAO,QAAIC,EAAA,WAgBjC,OAAIC,EAAOC,MACF,CACLL,OAAQ,CAAE,EACVM,OAAQC,gBA1EdF,EA4EUD,EAAOC,MA3EjBG,GA4EWN,EAAQO,2BACkB,QAAzBP,EAAQQ,aA3EpBL,EAAMM,QAAQC,OACVP,EAAMM,QAAQE,OAAmC,SAACC,EAAUT,GAC1D,IAAMU,EAAQV,EAAMW,KAAKC,KAAK,KAM9B,GAJKH,EAASC,KACZD,EAASC,GAAS,CAAEG,QAASb,EAAMa,QAASC,KAAMd,EAAMc,OAGtDX,EAA0B,CAC5B,IAAMY,EAAQN,EAASC,GAAOK,MACxBC,EAAWD,GAASA,EAAMf,EAAMc,MAEtCL,EAASC,GAASO,EAAAA,aAChBP,EACAP,EACAM,EACAT,EAAMc,KACNE,EACK,GAAgBE,OAAOF,EAAsBhB,EAAMa,SACpDb,EAAMa,QAEd,CAEA,OAAOJ,CACT,EAAG,CAAA,GACH,IAoDIZ,KAKNA,EAAQO,2BAA6Be,EAAAA,uBAAuB,CAAE,EAAEtB,GAEzD,CACLI,OAAQ,CAAA,EACRN,OAAQI,EAAOqB,QA1FI,IACvBpB,EACAG,CAyFI,EAlCIkB,EAAiBC,OAAOC,OAAO,CAAE,EAAE/B,EAAe,CACtDI,QAAAA,IAGEG,EAA8B,CAAA,EAAGyB,gBACR,SAAzB/B,EAAgBgC,KAClB1B,EAASR,EAAOmC,SAAS/B,EAAQ0B,OAAgB,CAAA,IAAAM,uFAAAC,CAE7C,WAAA,OAAAC,QAAAC,QACmBvC,EAAOwC,cAAcpC,EAAQ0B,IAAeW,KAAA,SAAAC,GAAjElC,EAAOqB,MAAKa,CAAsD,EACpE,EAAC,SAAQC,GACPnC,EAAOC,MAAQkC,CACjB,GAACP,GAAAA,GAAAA,EAAAK,KAAAL,OAAAA,EAAAK,KAAAH,WAAAA,EAAAA,CAAAA,IAAAA,OAAAA,QAAAC,QAAAN,GAAAA,EAAAQ,KAAAR,EAAAQ,KAAAlC,GAAAA,IAuBL,CAAC,MAAAoC,GAAA,OAAAL,QAAAM,OAAAD,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"nope.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"qCAKMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAE,QAC1B,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAI,IAAIK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,uBAoBE,SACEU,EACAC,GAEC,YAFY,IAAbA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,CAAE,EAAEd,OAAQmB,EAAAA,aAAapB,EAAYkB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAsBA,uBAAC,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ,IAC3B,CAAC"}
1
+ {"version":3,"file":"nope.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\n// nope-validator doesn't publicly export this shape (and its internal file\n// layout has changed across major versions), so it's redeclared here to\n// avoid depending on an unstable, non-exported module path.\ntype ShapeErrors = {\n [key: string]: string | ShapeErrors;\n};\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"qCAWMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAA,QACxB,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAQK,IAAAA,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,uBAoBE,SACEU,EACAC,eAAAA,IAAAA,IAAAA,EAAgB,CACdC,YAAY,IAGfC,SAAAA,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAId,OAAQmB,EAAYA,aAACpB,EAAYkB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAsBA,uBAAC,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ,CAAA,GAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nope.modern.mjs","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"+EAKA,MAAMA,EAAcA,CAClBC,EACAC,EAA4B,CAAA,EAC5BC,EAAO,KAEAC,OAAOC,KAAKJ,GAAQK,OAAO,CAACC,EAAKC,KACtC,MAAMC,EAAQN,EAAO,GAAGA,KAAQK,IAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,GACNL,GAoBQU,EACXA,CACEC,EACAC,EAAgB,CACdC,YAAY,KAGhB,CAACC,EAAQC,EAASC,KAChB,MAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,CAAE,EAAEf,OAAQoB,EAAarB,EAAYmB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAuB,GAAIL,GAEzD,CAAEF,SAAQf,OAAQ"}
1
+ {"version":3,"file":"nope.modern.mjs","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\n// nope-validator doesn't publicly export this shape (and its internal file\n// layout has changed across major versions), so it's redeclared here to\n// avoid depending on an unstable, non-exported module path.\ntype ShapeErrors = {\n [key: string]: string | ShapeErrors;\n};\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"+EAWA,MAAMA,EAAcA,CAClBC,EACAC,EAA4B,CAAE,EAC9BC,EAAO,KAEAC,OAAOC,KAAKJ,GAAQK,OAAO,CAACC,EAAKC,KACtC,MAAMC,EAAQN,EAAO,GAAGA,KAAQK,IAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CAAG,EACTL,GAoBQU,EACXA,CACEC,EACAC,EAAgB,CACdC,YAAY,KAGhB,CAACC,EAAQC,EAASC,KAChB,MAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAIf,OAAQoB,EAAarB,EAAYmB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAuB,GAAIL,GAEzD,CAAEF,SAAQf,OAAQ,CAAA,GAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"nope.module.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"+EAKA,IAAMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAE,QAC1B,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAI,IAAIK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,EAmBaU,EACX,SACEC,EACAC,GAEC,YAFY,IAAbA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,CAAE,EAAEf,OAAQoB,EAAarB,EAAYmB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAuB,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQf,OAAQ,IAC3B,CAAC"}
1
+ {"version":3,"file":"nope.module.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\n// nope-validator doesn't publicly export this shape (and its internal file\n// layout has changed across major versions), so it's redeclared here to\n// avoid depending on an unstable, non-exported module path.\ntype ShapeErrors = {\n [key: string]: string | ShapeErrors;\n};\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"+EAWA,IAAMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAA,QACxB,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAQK,IAAAA,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,EAmBaU,EACX,SACEC,EACAC,eAAAA,IAAAA,IAAAA,EAAgB,CACdC,YAAY,IAGfC,SAAAA,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAIf,OAAQoB,EAAarB,EAAYmB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAuB,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQf,OAAQ,CAAA,GAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nope.umd.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { ShapeErrors } from 'nope-validator/lib/cjs/types';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"0TAKA,IAAMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAE,QAC1B,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAI,IAAIK,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,iBAoBE,SACEU,EACAC,GAEC,YAFY,IAAbA,IAAAA,EAAgB,CACdC,YAAY,aAGfC,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,CAAE,EAAEd,OAAQmB,EAAAA,aAAapB,EAAYkB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAsBA,uBAAC,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ,IAC3B,CAAC"}
1
+ {"version":3,"file":"nope.umd.js","sources":["../src/nope.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\n// nope-validator doesn't publicly export this shape (and its internal file\n// layout has changed across major versions), so it's redeclared here to\n// avoid depending on an unstable, non-exported module path.\ntype ShapeErrors = {\n [key: string]: string | ShapeErrors;\n};\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\n/**\n * Creates a resolver for react-hook-form using Nope schema validation\n * @param {NopeSchema} schema - The Nope schema to validate against\n * @param {NopeSchemaOptions} [schemaOptions] - Optional Nope validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {string} [resolverOptions.mode='async'] - Validation mode\n * @returns {Resolver<NopeSchema>} A resolver function compatible with react-hook-form\n * @example\n * const schema = nope.object({\n * name: nope.string().required(),\n * age: nope.number().required()\n * });\n *\n * useForm({\n * resolver: nopeResolver(schema)\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: toNestErrors(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","toNestErrors","shouldUseNativeValidation","validateFieldsNatively"],"mappings":"0TAWA,IAAMA,EAAc,SAClBC,EACAC,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAA4B,CAAA,QACxB,IAAJC,IAAAA,EAAO,IAEAC,OAAOC,KAAKJ,GAAQK,OAAO,SAACC,EAAKC,GACtC,IAAMC,EAAQN,EAAUA,EAAQK,IAAAA,EAAQA,EAClCE,EAAQT,EAAOO,GAUrB,MARqB,iBAAVE,EACTH,EAAIE,GAAS,CACXE,QAASD,GAGXV,EAAYU,EAAOH,EAAKE,GAGnBF,CACT,EAAGL,EACL,iBAoBE,SACEU,EACAC,eAAAA,IAAAA,IAAAA,EAAgB,CACdC,YAAY,IAGfC,SAAAA,EAAQC,EAASC,GAChB,IAAMC,EAASN,EAAOO,SAASJ,EAAQC,EAASH,GAIhD,OAAIK,EACK,CAAEH,OAAQ,GAAId,OAAQmB,EAAYA,aAACpB,EAAYkB,GAASD,KAGjEA,EAAQI,2BAA6BC,EAAsBA,uBAAC,CAAE,EAAEL,GAEzD,CAAEF,OAAAA,EAAQd,OAAQ,CAAA,GAC3B,CAAC"}
@@ -1,5 +1,6 @@
1
- import type { NopeObject } from 'nope-validator/lib/cjs/NopeObject';
1
+ import type { object as nopeObject } from 'nope-validator';
2
2
  import type { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
3
+ type NopeObject = ReturnType<typeof nopeObject>;
3
4
  type ValidateOptions = Parameters<NopeObject['validate']>[2];
4
5
  type Context = Parameters<NopeObject['validate']>[1];
5
6
  export type Resolver = <T extends NopeObject>(schema: T, schemaOptions?: ValidateOptions, resolverOptions?: {
package/nope/src/nope.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';
2
- import type { ShapeErrors } from 'nope-validator/lib/cjs/types';
3
2
  import type { FieldError, FieldErrors } from 'react-hook-form';
4
3
  import type { Resolver } from './types';
5
4
 
5
+ // nope-validator doesn't publicly export this shape (and its internal file
6
+ // layout has changed across major versions), so it's redeclared here to
7
+ // avoid depending on an unstable, non-exported module path.
8
+ type ShapeErrors = {
9
+ [key: string]: string | ShapeErrors;
10
+ };
11
+
6
12
  const parseErrors = (
7
13
  errors: ShapeErrors,
8
14
  parsedErrors: FieldErrors = {},
package/nope/src/types.ts CHANGED
@@ -1,10 +1,16 @@
1
- import type { NopeObject } from 'nope-validator/lib/cjs/NopeObject';
1
+ import type { object as nopeObject } from 'nope-validator';
2
2
  import type {
3
3
  FieldValues,
4
4
  ResolverOptions,
5
5
  ResolverResult,
6
6
  } from 'react-hook-form';
7
7
 
8
+ // nope-validator doesn't publicly export the `NopeObject` class itself (and
9
+ // its internal file layout has changed across major versions), so it's
10
+ // derived here from the return type of its exported `object()` factory
11
+ // instead of depending on an unstable, non-exported module path.
12
+ type NopeObject = ReturnType<typeof nopeObject>;
13
+
8
14
  type ValidateOptions = Parameters<NopeObject['validate']>[2];
9
15
  type Context = Parameters<NopeObject['validate']>[1];
10
16
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hookform/resolvers",
3
3
  "amdName": "hookformResolvers",
4
- "version": "5.4.3",
4
+ "version": "5.5.0",
5
5
  "description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types, TypeBox, arktype, Typanion, Effect-TS and VineJS",
6
6
  "main": "dist/resolvers.js",
7
7
  "module": "dist/resolvers.module.js",
@@ -210,7 +210,7 @@
210
210
  "scripts": {
211
211
  "prepare": "run-s build:src",
212
212
  "build": "cross-env npm-run-all --parallel 'build:*'",
213
- "build:src": "microbundle build --globals react-hook-form=ReactHookForm",
213
+ "build:src": "microbundle build --tsconfig tsconfig.build.json --globals react-hook-form=ReactHookForm",
214
214
  "build:zod": "microbundle --cwd zod --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
215
215
  "build:yup": "microbundle --cwd yup --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
216
216
  "build:joi": "microbundle --cwd joi --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
@@ -276,57 +276,57 @@
276
276
  },
277
277
  "homepage": "https://react-hook-form.com",
278
278
  "devDependencies": {
279
- "@biomejs/biome": "^1.8.3",
280
- "@sinclair/typebox": "^0.34.30",
281
- "@standard-schema/spec": "^1.0.0",
282
- "@testing-library/dom": "^10.4.0",
283
- "@testing-library/jest-dom": "^6.6.3",
284
- "@testing-library/react": "^16.2.0",
279
+ "@biomejs/biome": "^1.9.4",
280
+ "@sinclair/typebox": "^0.34.52",
281
+ "@standard-schema/spec": "^1.1.0",
282
+ "@testing-library/dom": "^10.4.1",
283
+ "@testing-library/jest-dom": "^6.10.0",
284
+ "@testing-library/react": "^16.3.2",
285
285
  "@testing-library/user-event": "^14.6.1",
286
- "@types/node": "^22.13.10",
287
- "@types/react": "^19.0.11",
286
+ "@types/node": "^22.20.1",
287
+ "@types/react": "^19.2.17",
288
288
  "@typeschema/core": "^0.14.0",
289
289
  "@typeschema/main": "^0.14.1",
290
290
  "@typeschema/zod": "^0.14.0",
291
291
  "@vinejs/vine": "^3.0.1",
292
- "@vitejs/plugin-react": "^4.3.4",
293
- "ajv": "^8.17.1",
292
+ "@vitejs/plugin-react": "^4.7.0",
293
+ "ajv": "^8.20.0",
294
294
  "ata-validator": "^0.7.3",
295
295
  "ajv-errors": "^3.0.0",
296
296
  "ajv-formats": "^2.1.1",
297
297
  "arktype": "2.0.4",
298
298
  "check-export-map": "^1.3.1",
299
299
  "class-transformer": "^0.5.1",
300
- "class-validator": "^0.14.1",
300
+ "class-validator": "^0.14.4",
301
301
  "computed-types": "^1.11.2",
302
302
  "cross-env": "^7.0.3",
303
- "effect": "^3.13.12",
304
- "fluentvalidation-ts": "^3.2.0",
305
- "fp-ts": "^2.16.9",
303
+ "effect": "^3.22.0",
304
+ "fluentvalidation-ts": "^3.3.0",
305
+ "fp-ts": "^2.16.11",
306
306
  "io-ts": "^2.2.22",
307
307
  "io-ts-types": "^0.5.19",
308
- "joi": "^17.13.3",
309
- "jsdom": "^26.0.0",
310
- "lefthook": "^1.11.3",
308
+ "joi": "^17.13.4",
309
+ "jsdom": "^26.1.0",
310
+ "lefthook": "^1.13.6",
311
311
  "microbundle": "^0.15.1",
312
312
  "monocle-ts": "^2.3.13",
313
313
  "newtype-ts": "^0.3.5",
314
- "nope-validator": "^1.0.4",
314
+ "nope-validator": "^1.2.2",
315
315
  "npm-run-all": "^4.1.5",
316
- "react": "^19.0.0",
317
- "react-dom": "^19.0.0",
318
- "react-hook-form": "^7.55.0",
316
+ "react": "^19.2.8",
317
+ "react-dom": "^19.2.8",
318
+ "react-hook-form": "^7.83.0",
319
319
  "reflect-metadata": "^0.2.2",
320
320
  "superstruct": "^2.0.2",
321
321
  "typanion": "^3.14.0",
322
- "typescript": "^5.8.2",
322
+ "typescript": "^6.0.3",
323
323
  "valibot": "1.0.0-beta.12",
324
324
  "vest": "^5.4.6",
325
- "vite": "^6.2.2",
325
+ "vite": "^6.4.3",
326
326
  "vite-tsconfig-paths": "^5.1.4",
327
- "vitest": "^3.0.9",
328
- "yup": "^1.6.1",
329
- "zod": "^3.25.0"
327
+ "vitest": "^3.2.7",
328
+ "yup": "^1.7.1",
329
+ "zod": "^3.25.76"
330
330
  },
331
331
  "peerDependencies": {
332
332
  "@sinclair/typebox": ">=0.25.24",
@@ -431,5 +431,8 @@
431
431
  },
432
432
  "dependencies": {
433
433
  "@standard-schema/utils": "^0.3.0"
434
+ },
435
+ "overrides": {
436
+ "ajv": "^8.20.0"
434
437
  }
435
438
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standard-schema.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"uYAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAYA,KAAAA,EAAYA,EACnE,gCAiHM,SAKJC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMd,EAAQU,EAAOI,GACfE,EAAOC,EAAUA,WAACjB,IAAUH,EAC5BqB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASnB,GAIlBE,EAAmBmB,EAAYlB,EAAMC,SALrCU,EAAOS,IAAIJ,EAAM,CAAEf,QAASD,EAAMC,QAASoB,KAAM,KAQ/CT,EAA0B,CAAAU,IAAAA,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAE,EAEtCD,EAAaC,MAAKC,EAAA,CAAA,EACbD,IAAKF,EAAAA,CAAAA,GACPI,OAAOC,KAAKH,GAAOT,QAASf,EAAMC,QAAOqB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,KACVjB,IAASnB,IACXgC,EAAYb,GAFOiB,EAAA,GAIvB,CAEA,IAAME,EAAYxB,EAAOQ,IAAItB,GAW7B,OATIsC,IACEN,EAAYO,MACdrC,EAAmB8B,EAAYO,KAAMD,EAAUlC,SAzDrD,SAA0BD,EAAmBwB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYrC,EAAMwB,OAAS,CAAE,EAEnCc,EAAAC,EAAAA,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMrC,EAAOsC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUd,CAC7C,CAEAD,EAAMwB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,GACRM,OAAQiC,EAAAA,aAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAAA,uBAAuB,CAAA,EAAItC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAA,EAAI1C,GAAUI,EAAOyB,MACjEvB,OAAQ,CAAA,EACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAC9CxC,WAAAA,GAAAA,aAAkByC,QAAOA,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,EAAA,CADpB5C,GACoB,OAAAyC,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
1
+ {"version":3,"file":"standard-schema.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"uYAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAO,KAAKA,EAAYA,EACnE,gCAiHgB,SAKdC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMd,EAAQU,EAAOI,GACfE,EAAOC,aAAWjB,IAAUH,EAC5BqB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASnB,GAIlBE,EAAmBmB,EAAYlB,EAAMC,SALrCU,EAAOS,IAAIJ,EAAM,CAAEf,QAASD,EAAMC,QAASoB,KAAM,KAQ/CT,EAA0B,CAAA,IAAAU,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAA,EAEpCD,EAAaC,MAAKC,EACbD,CAAAA,EAAAA,IAAKF,EAAA,CAAA,GACPI,OAAOC,KAAKH,GAAOT,QAASf,EAAMC,QAAOqB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,EAAA,GACVjB,IAASnB,IACXgC,EAAYb,GAFOiB,EACrB,GAGF,CAEA,IAAME,EAAYxB,EAAOQ,IAAItB,GAW7B,OATIsC,IACEN,EAAYO,MACdrC,EAAmB8B,EAAYO,KAAMD,EAAUlC,SAzDrD,SAA0BD,EAAmBwB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYrC,EAAMwB,OAAS,CAAA,EAEjCc,EAAA,EAAAC,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMrC,EAAOsC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUd,CAC7C,CAEAD,EAAMwB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,CAAE,EACVM,OAAQiC,EAAAA,aAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAsBA,uBAAC,CAAE,EAAEtC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAE,EAAE1C,GAAUI,EAAOyB,MACjEvB,OAAQ,GACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAAA,WAAA,GAC9CxC,aAAkByC,QAAO,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,GAF0B,UAE1BH,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"standard-schema.modern.mjs","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","standardSchemaResolver","schema","_schemaOptions","resolverOptions","async","values","_","options","result","validate","Promise","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","currentError","types","_extends","Object","keys","fieldErrors","rootError","root","nextTypes","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","value"],"mappings":"2VAKA,MAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAU,GAAGD,EAAMC,YAAYA,IAAYA,EACnE,CAiHM,SAAUC,EAKdC,EACAC,EACAC,EAEI,CAAA,GAEJ,OAAOC,MAAOC,EAAQC,EAAGC,KACvB,IAAIC,EAASP,EAAO,aAAaQ,SAASJ,GAK1C,GAJIG,aAAkBE,UACpBF,QAAeA,GAGbA,EAAOG,OAAQ,CACjB,MAAMC,EAnHZ,SACED,EACAE,GAEA,MAAMD,EAAS,IAAIE,IAEnB,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,MAAMjB,EAAQa,EAAOI,GACfE,EAAOC,EAAWpB,IAAUH,EAC5BwB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAAStB,GAIlBE,EAAmBsB,EAAYrB,EAAMC,SALrCa,EAAOS,IAAIJ,EAAM,CAAElB,QAASD,EAAMC,QAASuB,KAAM,KAQ/CT,EAA0B,CAC5B,MAAMU,EAAeX,EAAOQ,IAAIH,GAC1BO,EAAQD,EAAaC,OAAS,CAAA,EAEpCD,EAAaC,MAAKC,EAAA,CAAA,EACbD,EAAK,CACR,CAACE,OAAOC,KAAKH,GAAOR,QAASlB,EAAMC,SAEvC,CACF,CAEA,MAAM6B,EAA0C,CAAE,EAElD,IAAK,MAAOX,EAAMnB,KAAUc,EACtBK,IAAStB,IACXiC,EAAYX,GAAQnB,GAIxB,MAAM+B,EAAYjB,EAAOQ,IAAIzB,GAW7B,OATIkC,IACED,EAAYE,MACdjC,EAAmB+B,EAAYE,KAAMD,EAAU9B,SAzDrD,SAA0BD,EAAmB0B,GAC3C,IAAKA,EACH,OAGF,MAAMO,EAAYjC,EAAM0B,OAAS,CAAA,EAEjC,IAAK,MAAMzB,KAAW2B,OAAOrB,OAAOmB,GAClCO,EAAUL,OAAOC,KAAKI,GAAWf,QAAUjB,EAG7CD,EAAM0B,MAAQO,CAChB,CA8CMC,CAAiBJ,EAAYE,KAAMD,EAAUL,QAE7CI,EAAYE,KAAOD,GAIhBD,CACT,CAgEqBK,CACbzB,EAAOG,QACNJ,EAAQ2B,2BAAsD,QAAzB3B,EAAQ4B,cAGhD,MAAO,CACL9B,OAAQ,CAAE,EACVO,OAAQwB,EAAaxB,EAAQL,GAEjC,CAIA,OAFAA,EAAQ2B,2BAA6BG,EAAuB,CAAA,EAAI9B,GAEzD,CACLF,OAAQF,EAAgBmC,IAAMZ,OAAOa,OAAO,GAAIlC,GAAUG,EAAOgC,MACjE5B,OAAQ,IAGd"}
1
+ {"version":3,"file":"standard-schema.modern.mjs","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","standardSchemaResolver","schema","_schemaOptions","resolverOptions","async","values","_","options","result","validate","Promise","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","currentError","types","_extends","Object","keys","fieldErrors","rootError","root","nextTypes","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","value"],"mappings":"2VAKA,MAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAU,GAAGD,EAAMC,YAAYA,IAAYA,EACnE,CAiHgB,SAAAC,EAKdC,EACAC,EACAC,EAEI,CAAE,GAEN,OAAOC,MAAOC,EAAQC,EAAGC,KACvB,IAAIC,EAASP,EAAO,aAAaQ,SAASJ,GAK1C,GAJIG,aAAkBE,UACpBF,QAAeA,GAGbA,EAAOG,OAAQ,CACjB,MAAMC,EAnHZ,SACED,EACAE,GAEA,MAAMD,EAAS,IAAIE,IAEnB,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,MAAMjB,EAAQa,EAAOI,GACfE,EAAOC,EAAWpB,IAAUH,EAC5BwB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAAStB,GAIlBE,EAAmBsB,EAAYrB,EAAMC,SALrCa,EAAOS,IAAIJ,EAAM,CAAElB,QAASD,EAAMC,QAASuB,KAAM,KAQ/CT,EAA0B,CAC5B,MAAMU,EAAeX,EAAOQ,IAAIH,GAC1BO,EAAQD,EAAaC,OAAS,CAAA,EAEpCD,EAAaC,MAAKC,EACbD,CAAAA,EAAAA,EACH,CAAA,CAACE,OAAOC,KAAKH,GAAOR,QAASlB,EAAMC,SAEvC,CACF,CAEA,MAAM6B,EAA0C,CAAE,EAElD,IAAK,MAAOX,EAAMnB,KAAUc,EACtBK,IAAStB,IACXiC,EAAYX,GAAQnB,GAIxB,MAAM+B,EAAYjB,EAAOQ,IAAIzB,GAW7B,OATIkC,IACED,EAAYE,MACdjC,EAAmB+B,EAAYE,KAAMD,EAAU9B,SAzDrD,SAA0BD,EAAmB0B,GAC3C,IAAKA,EACH,OAGF,MAAMO,EAAYjC,EAAM0B,OAAS,CAAE,EAEnC,IAAK,MAAMzB,KAAW2B,OAAOrB,OAAOmB,GAClCO,EAAUL,OAAOC,KAAKI,GAAWf,QAAUjB,EAG7CD,EAAM0B,MAAQO,CAChB,CA8CMC,CAAiBJ,EAAYE,KAAMD,EAAUL,QAE7CI,EAAYE,KAAOD,GAIhBD,CACT,CAgEqBK,CACbzB,EAAOG,QACNJ,EAAQ2B,2BAAsD,QAAzB3B,EAAQ4B,cAGhD,MAAO,CACL9B,OAAQ,CAAE,EACVO,OAAQwB,EAAaxB,EAAQL,GAEjC,CAIA,OAFAA,EAAQ2B,2BAA6BG,EAAuB,CAAE,EAAE9B,GAEzD,CACLF,OAAQF,EAAgBmC,IAAMZ,OAAOa,OAAO,CAAE,EAAElC,GAAUG,EAAOgC,MACjE5B,OAAQ,GACT,CAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"standard-schema.module.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","standardSchemaResolver","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"icAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAYA,KAAAA,EAAYA,EACnE,CAiHM,SAAUC,EAKdC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMf,EAAQW,EAAOI,GACfE,EAAOC,EAAWlB,IAAUH,EAC5BsB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASpB,GAIlBE,EAAmBoB,EAAYnB,EAAMC,SALrCW,EAAOS,IAAIJ,EAAM,CAAEhB,QAASD,EAAMC,QAASqB,KAAM,KAQ/CT,EAA0B,CAAAU,IAAAA,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAE,EAEtCD,EAAaC,MAAKC,EAAA,CAAA,EACbD,IAAKF,EAAAA,CAAAA,GACPI,OAAOC,KAAKH,GAAOT,QAAShB,EAAMC,QAAOsB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,KACVjB,IAASpB,IACXiC,EAAYb,GAFOiB,EAAA,GAIvB,CAEA,IAAME,EAAYxB,EAAOQ,IAAIvB,GAW7B,OATIuC,IACEN,EAAYO,MACdtC,EAAmB+B,EAAYO,KAAMD,EAAUnC,SAzDrD,SAA0BD,EAAmByB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYtC,EAAMyB,OAAS,CAAE,EAEnCc,EAAAC,EAAAA,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMtC,EAAOuC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUf,CAC7C,CAEAD,EAAMyB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,GACRM,OAAQiC,EAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAuB,CAAA,EAAItC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAA,EAAI1C,GAAUI,EAAOyB,MACjEvB,OAAQ,CAAA,EACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAC9CxC,WAAAA,GAAAA,aAAkByC,QAAOA,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,EAAA,CADpB5C,GACoB,OAAAyC,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
1
+ {"version":3,"file":"standard-schema.module.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","standardSchemaResolver","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"icAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAO,KAAKA,EAAYA,EACnE,CAiHgB,SAAAC,EAKdC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMf,EAAQW,EAAOI,GACfE,EAAOC,EAAWlB,IAAUH,EAC5BsB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASpB,GAIlBE,EAAmBoB,EAAYnB,EAAMC,SALrCW,EAAOS,IAAIJ,EAAM,CAAEhB,QAASD,EAAMC,QAASqB,KAAM,KAQ/CT,EAA0B,CAAA,IAAAU,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAA,EAEpCD,EAAaC,MAAKC,EACbD,CAAAA,EAAAA,IAAKF,EAAA,CAAA,GACPI,OAAOC,KAAKH,GAAOT,QAAShB,EAAMC,QAAOsB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,EAAA,GACVjB,IAASpB,IACXiC,EAAYb,GAFOiB,EACrB,GAGF,CAEA,IAAME,EAAYxB,EAAOQ,IAAIvB,GAW7B,OATIuC,IACEN,EAAYO,MACdtC,EAAmB+B,EAAYO,KAAMD,EAAUnC,SAzDrD,SAA0BD,EAAmByB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYtC,EAAMyB,OAAS,CAAA,EAEjCc,EAAA,EAAAC,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMtC,EAAOuC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUf,CAC7C,CAEAD,EAAMyB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,CAAE,EACVM,OAAQiC,EAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAuB,CAAE,EAAEtC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAE,EAAE1C,GAAUI,EAAOyB,MACjEvB,OAAQ,GACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAAA,WAAA,GAC9CxC,aAAkByC,QAAO,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,GAF0B,UAE1BH,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"standard-schema.umd.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"usBAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAYA,KAAAA,EAAYA,EACnE,0BAiHM,SAKJC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMd,EAAQU,EAAOI,GACfE,EAAOC,EAAUA,WAACjB,IAAUH,EAC5BqB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASnB,GAIlBE,EAAmBmB,EAAYlB,EAAMC,SALrCU,EAAOS,IAAIJ,EAAM,CAAEf,QAASD,EAAMC,QAASoB,KAAM,KAQ/CT,EAA0B,CAAAU,IAAAA,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAE,EAEtCD,EAAaC,MAAKC,EAAA,CAAA,EACbD,IAAKF,EAAAA,CAAAA,GACPI,OAAOC,KAAKH,GAAOT,QAASf,EAAMC,QAAOqB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,KACVjB,IAASnB,IACXgC,EAAYb,GAFOiB,EAAA,GAIvB,CAEA,IAAME,EAAYxB,EAAOQ,IAAItB,GAW7B,OATIsC,IACEN,EAAYO,MACdrC,EAAmB8B,EAAYO,KAAMD,EAAUlC,SAzDrD,SAA0BD,EAAmBwB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYrC,EAAMwB,OAAS,CAAE,EAEnCc,EAAAC,EAAAA,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMrC,EAAOsC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUd,CAC7C,CAEAD,EAAMwB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,GACRM,OAAQiC,EAAAA,aAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAAA,uBAAuB,CAAA,EAAItC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAA,EAAI1C,GAAUI,EAAOyB,MACjEvB,OAAQ,CAAA,EACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAC9CxC,WAAAA,GAAAA,aAAkByC,QAAOA,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,EAAA,CADpB5C,GACoB,OAAAyC,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
1
+ {"version":3,"file":"standard-schema.umd.js","sources":["../src/standard-schema.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\nimport { getDotPath } from '@standard-schema/utils';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\n\nconst schemaRootKey = Symbol('Schema root');\n\nfunction appendErrorMessage(error: FieldError, message: string | undefined) {\n if (!message) {\n return;\n }\n\n error.message = error.message ? `${error.message}\\n${message}` : message;\n}\n\nfunction appendErrorTypes(error: FieldError, types: FieldError['types']) {\n if (!types) {\n return;\n }\n\n const nextTypes = error.types || {};\n\n for (const message of Object.values(types)) {\n nextTypes[Object.keys(nextTypes).length] = message;\n }\n\n error.types = nextTypes;\n}\n\nfunction parseErrorSchema(\n issues: readonly StandardSchemaV1.Issue[],\n validateAllFieldCriteria: boolean,\n) {\n const errors = new Map<string | typeof schemaRootKey, FieldError>();\n\n for (let i = 0; i < issues.length; i++) {\n const error = issues[i];\n const path = getDotPath(error) || schemaRootKey;\n const fieldError = errors.get(path);\n\n if (!fieldError) {\n errors.set(path, { message: error.message, type: '' });\n } else if (path === schemaRootKey) {\n // Root-level issues aren't tied to a single field, so there's no\n // natural \"first\" message to prefer the way there is for a field —\n // keep every one of them regardless of criteriaMode.\n appendErrorMessage(fieldError, error.message);\n }\n\n if (validateAllFieldCriteria) {\n const currentError = errors.get(path)!;\n const types = currentError.types || {};\n\n currentError.types = {\n ...types,\n [Object.keys(types).length]: error.message,\n };\n }\n }\n\n const fieldErrors: Record<string, FieldError> = {};\n\n for (const [path, error] of errors) {\n if (path !== schemaRootKey) {\n fieldErrors[path] = error;\n }\n }\n\n const rootError = errors.get(schemaRootKey);\n\n if (rootError) {\n if (fieldErrors.root) {\n appendErrorMessage(fieldErrors.root, rootError.message);\n appendErrorTypes(fieldErrors.root, rootError.types);\n } else {\n fieldErrors.root = rootError;\n }\n }\n\n return fieldErrors;\n}\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Output>;\n\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions: never | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form that validates data using a Standard Schema.\n *\n * @param {Schema} schema - The Standard Schema to validate against\n * @param {Object} resolverOptions - Options for the resolver\n * @param {boolean} [resolverOptions.raw=false] - Whether to return raw input values instead of parsed values\n * @returns {Resolver} A resolver function compatible with react-hook-form\n *\n * @example\n * ```ts\n * const schema = z.object({\n * name: z.string().min(2),\n * age: z.number().min(18)\n * });\n *\n * useForm({\n * resolver: standardSchemaResolver(schema)\n * });\n * ```\n */\nexport function standardSchemaResolver<\n Input extends FieldValues,\n Context,\n Output,\n>(\n schema: StandardSchemaV1<Input, Output>,\n _schemaOptions?: never,\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Output | Input> {\n return async (values, _, options) => {\n let result = schema['~standard'].validate(values);\n if (result instanceof Promise) {\n result = await result;\n }\n\n if (result.issues) {\n const errors = parseErrorSchema(\n result.issues,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n );\n\n return {\n values: {},\n errors: toNestErrors(errors, options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result.value,\n errors: {},\n };\n };\n}\n"],"names":["schemaRootKey","Symbol","appendErrorMessage","error","message","schema","_schemaOptions","resolverOptions","values","_","options","_temp2","result","issues","errors","validateAllFieldCriteria","Map","i","length","path","getDotPath","fieldError","get","set","type","_extends2","currentError","types","_extends","Object","keys","_step","fieldErrors","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","rootError","root","nextTypes","_i","_Object$values","appendErrorTypes","parseErrorSchema","shouldUseNativeValidation","criteriaMode","toNestErrors","validateFieldsNatively","raw","assign","validate","_temp","Promise","resolve","then","_result","e","reject"],"mappings":"usBAKA,IAAMA,EAAgBC,OAAO,eAE7B,SAASC,EAAmBC,EAAmBC,GACxCA,IAILD,EAAMC,QAAUD,EAAMC,QAAaD,EAAMC,QAAO,KAAKA,EAAYA,EACnE,0BAiHgB,SAKdC,EACAC,EACAC,GAIA,YAJAA,IAAAA,IAAAA,EAEI,CAAE,GAEN,SAAcC,EAAQC,EAAGC,GAAW,IAAA,IAAAC,EAAA,WAMlC,GAAIC,EAAOC,OAAQ,CACjB,IAAMC,EAnHZ,SACED,EACAE,GAIA,IAFA,IAAMD,EAAS,IAAIE,IAEVC,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACtC,IAAMd,EAAQU,EAAOI,GACfE,EAAOC,aAAWjB,IAAUH,EAC5BqB,EAAaP,EAAOQ,IAAIH,GAW9B,GATKE,EAEMF,IAASnB,GAIlBE,EAAmBmB,EAAYlB,EAAMC,SALrCU,EAAOS,IAAIJ,EAAM,CAAEf,QAASD,EAAMC,QAASoB,KAAM,KAQ/CT,EAA0B,CAAA,IAAAU,EACtBC,EAAeZ,EAAOQ,IAAIH,GAC1BQ,EAAQD,EAAaC,OAAS,CAAA,EAEpCD,EAAaC,MAAKC,EACbD,CAAAA,EAAAA,IAAKF,EAAA,CAAA,GACPI,OAAOC,KAAKH,GAAOT,QAASf,EAAMC,QAAOqB,GAE9C,CACF,CAIA,IAFA,IAEkCM,EAF5BC,EAA0C,CAAA,EAEhDC,2pBAAAC,CAA4BpB,KAAMiB,EAAAE,KAAAE,MAAE,CAAA,IAAAC,EAAAL,EAAAM,MAAxBlB,EAAIiB,EAAA,GACVjB,IAASnB,IACXgC,EAAYb,GAFOiB,EACrB,GAGF,CAEA,IAAME,EAAYxB,EAAOQ,IAAItB,GAW7B,OATIsC,IACEN,EAAYO,MACdrC,EAAmB8B,EAAYO,KAAMD,EAAUlC,SAzDrD,SAA0BD,EAAmBwB,GAC3C,GAAKA,EAAL,CAMA,IAFA,IAAMa,EAAYrC,EAAMwB,OAAS,CAAA,EAEjCc,EAAA,EAAAC,EAAsBb,OAAOrB,OAAOmB,GAAMc,EAAAC,EAAAxB,OAAAuB,IAAE,CAAvC,IAAMrC,EAAOsC,EAAAD,GAChBD,EAAUX,OAAOC,KAAKU,GAAWtB,QAAUd,CAC7C,CAEAD,EAAMwB,MAAQa,CARd,CASF,CA8CMG,CAAiBX,EAAYO,KAAMD,EAAUX,QAE7CK,EAAYO,KAAOD,GAIhBN,CACT,CAgEqBY,CACbhC,EAAOC,QACNH,EAAQmC,2BAAsD,QAAzBnC,EAAQoC,cAGhD,MAAO,CACLtC,OAAQ,CAAE,EACVM,OAAQiC,EAAAA,aAAajC,EAAQJ,GAEjC,CAIA,OAFAA,EAAQmC,2BAA6BG,EAAsBA,uBAAC,CAAE,EAAEtC,GAEzD,CACLF,OAAQD,EAAgB0C,IAAMpB,OAAOqB,OAAO,CAAE,EAAE1C,GAAUI,EAAOyB,MACjEvB,OAAQ,GACR,EAtBEF,EAASP,EAAO,aAAa8C,SAAS3C,GAAQ4C,EAAA,WAAA,GAC9CxC,aAAkByC,QAAO,OAAAA,QAAAC,QACZ1C,GAAM2C,KAAA,SAAAC,GAArB5C,EAAM4C,CAAgB,GAF0B,UAE1BH,QAAAC,QAAAF,GAAAA,EAAAG,KAAAH,EAAAG,KAAA5C,GAAAA,IAqB1B,CAAC,MAAA8C,UAAAJ,QAAAK,OAAAD,EACH,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\nimport { Infer, Struct, StructError, validate } from 'superstruct';\n\nfunction parseErrorSchema(error: StructError) {\n return error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n}\n\n// This is required to correctly type the input of the returned function when coerce is true\n// superstruct does not store the input type of a schema alongside it\n// Infer<typeof schema> gives the output type of the coercion\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Output, any>,\n schemaOptions: Omit<Parameters<typeof validate>[2], 'coerce'> & {\n coerce: true;\n },\n resolverOptions?: {\n raw?: boolean;\n },\n): Resolver<Input, Context, Output>;\n\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions?: Parameters<typeof validate>[2],\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Infer<typeof schema>>;\n\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions: Parameters<typeof validate>[2] | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form using Superstruct schema validation\n * @param {Struct<TFieldValues, any>} schema - The Superstruct schema to validate against\n * @param {Parameters<typeof validate>[2]} [schemaOptions] - Optional Superstruct validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {boolean} [resolverOptions.raw=false] - If true, returns raw values rather than validated results\n * @returns {Resolver<Infer<typeof schema>>} A resolver function compatible with react-hook-form\n * @example\n * const schema = struct({\n * name: string(),\n * age: number()\n * });\n *\n * useForm({\n * resolver: superstructResolver(schema)\n * });\n */\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions?: Parameters<typeof validate>[2],\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Input | Output> {\n return (values: Input, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result[1],\n errors: {},\n };\n };\n}\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw","Object","assign"],"mappings":"mGA8DEA,EACAC,EACAC,GAIA,gBAJAA,IAAAA,EAEI,CAAE,GAEEC,SAAAA,EAAeC,EAAGC,GACxB,IAjEsBC,EAiEhBC,EAASC,EAAAA,SAASL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAA,EACRM,OAAQC,EAAYA,cAtEFJ,EAsEoBC,EAAO,GArE5CD,EAAMK,WAAWC,OACtB,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IA+DsDR,KAItDA,EAAQa,2BAA6BC,yBAAuB,CAAA,EAAId,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMC,OAAOC,OAAO,CAAE,EAAEnB,GAAUI,EAAO,GACjEE,OAAQ,CAAA,GAEZ,CACF"}
1
+ {"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError, FieldValues, Resolver } from 'react-hook-form';\nimport { Infer, Struct, StructError, validate } from 'superstruct';\n\nfunction parseErrorSchema(error: StructError) {\n return error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n}\n\n// This is required to correctly type the input of the returned function when coerce is true\n// superstruct does not store the input type of a schema alongside it\n// Infer<typeof schema> gives the output type of the coercion\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Output, any>,\n schemaOptions: Omit<Parameters<typeof validate>[2], 'coerce'> & {\n coerce: true;\n },\n resolverOptions?: {\n raw?: boolean;\n },\n): Resolver<Input, Context, Output>;\n\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions?: Parameters<typeof validate>[2],\n resolverOptions?: {\n raw?: false;\n },\n): Resolver<Input, Context, Infer<typeof schema>>;\n\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions: Parameters<typeof validate>[2] | undefined,\n resolverOptions: {\n raw: true;\n },\n): Resolver<Input, Context, Input>;\n\n/**\n * Creates a resolver for react-hook-form using Superstruct schema validation\n * @param {Struct<TFieldValues, any>} schema - The Superstruct schema to validate against\n * @param {Parameters<typeof validate>[2]} [schemaOptions] - Optional Superstruct validation options\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {boolean} [resolverOptions.raw=false] - If true, returns raw values rather than validated results\n * @returns {Resolver<Infer<typeof schema>>} A resolver function compatible with react-hook-form\n * @example\n * const schema = struct({\n * name: string(),\n * age: number()\n * });\n *\n * useForm({\n * resolver: superstructResolver(schema)\n * });\n */\nexport function superstructResolver<Input extends FieldValues, Context, Output>(\n schema: Struct<Input, any>,\n schemaOptions?: Parameters<typeof validate>[2],\n resolverOptions: {\n raw?: boolean;\n } = {},\n): Resolver<Input, Context, Input | Output> {\n return (values: Input, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result[1],\n errors: {},\n };\n };\n}\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw","Object","assign"],"mappings":"0FA6DM,SACJA,EACAC,EACAC,GAIA,gBAJAA,IAAAA,EAEI,aAEIC,EAAeC,EAAGC,GACxB,IAjEsBC,EAiEhBC,EAASC,EAAQA,SAACL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAA,EACRM,OAAQC,EAAYA,cAtEFJ,EAsEoBC,EAAO,GArE5CD,EAAMK,WAAWC,OACtB,SAACC,EAAUP,UACRO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAE,IA+DoDR,KAItDA,EAAQa,2BAA6BC,EAAAA,uBAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMC,OAAOC,OAAO,CAAA,EAAInB,GAAUI,EAAO,GACjEE,OAAQ,IAEZ,CACF"}