@warlock.js/seal 5.30.0 → 5.32.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 (318) hide show
  1. package/CHANGELOG.md +46 -7
  2. package/README.md +57 -9
  3. package/cjs/index.cjs +41 -29
  4. package/cjs/index.cjs.map +1 -1
  5. package/cjs/{object--LXRt5RF.cjs → object-BoVGJ68E.cjs} +43 -24
  6. package/cjs/object-BoVGJ68E.cjs.map +1 -0
  7. package/cjs/object.cjs +2 -2
  8. package/cjs/{required-methods-DYsRO9aZ.cjs → required-methods-BJlnLnwa.cjs} +343 -258
  9. package/cjs/required-methods-BJlnLnwa.cjs.map +1 -0
  10. package/cjs/{string-DsqnKoSB.cjs → string-CM8x0u2w.cjs} +46 -44
  11. package/cjs/string-CM8x0u2w.cjs.map +1 -0
  12. package/cjs/string.cjs +2 -2
  13. package/esm/config.d.mts +7 -8
  14. package/esm/config.d.mts.map +1 -1
  15. package/esm/config.mjs.map +1 -1
  16. package/esm/factory/index.d.mts +2 -1
  17. package/esm/factory/index.mjs +1 -1
  18. package/esm/factory/validate.d.mts +3 -6
  19. package/esm/factory/validate.d.mts.map +1 -1
  20. package/esm/factory/validators.d.mts +16 -13
  21. package/esm/factory/validators.d.mts.map +1 -1
  22. package/esm/factory/validators.mjs +7 -1
  23. package/esm/factory/validators.mjs.map +1 -1
  24. package/esm/helpers/date-helpers.d.mts +1 -2
  25. package/esm/helpers/date-helpers.d.mts.map +1 -1
  26. package/esm/helpers/file.utils.d.mts +2 -4
  27. package/esm/helpers/file.utils.d.mts.map +1 -1
  28. package/esm/helpers/get-field-value.d.mts +2 -3
  29. package/esm/helpers/get-field-value.d.mts.map +1 -1
  30. package/esm/helpers/get-field-value.mjs +2 -1
  31. package/esm/helpers/get-field-value.mjs.map +1 -1
  32. package/esm/helpers/index.d.mts +6 -0
  33. package/esm/helpers/index.mjs +1 -1
  34. package/esm/helpers/path-helpers.d.mts +1 -2
  35. package/esm/helpers/path-helpers.d.mts.map +1 -1
  36. package/esm/helpers/validation-helpers.d.mts +4 -10
  37. package/esm/helpers/validation-helpers.d.mts.map +1 -1
  38. package/esm/index.d.mts +7 -0
  39. package/esm/mutators/array-mutators.d.mts +6 -7
  40. package/esm/mutators/array-mutators.d.mts.map +1 -1
  41. package/esm/mutators/boolean-mutators.d.mts +3 -4
  42. package/esm/mutators/boolean-mutators.d.mts.map +1 -1
  43. package/esm/mutators/date-mutators.d.mts +18 -19
  44. package/esm/mutators/date-mutators.d.mts.map +1 -1
  45. package/esm/mutators/index.d.mts +8 -0
  46. package/esm/mutators/index.mjs +1 -1
  47. package/esm/mutators/number-mutators.d.mts +10 -11
  48. package/esm/mutators/number-mutators.d.mts.map +1 -1
  49. package/esm/mutators/object-mutators.d.mts +4 -5
  50. package/esm/mutators/object-mutators.d.mts.map +1 -1
  51. package/esm/mutators/object-mutators.mjs +5 -4
  52. package/esm/mutators/object-mutators.mjs.map +1 -1
  53. package/esm/mutators/scalar-mutators.d.mts +2 -3
  54. package/esm/mutators/scalar-mutators.d.mts.map +1 -1
  55. package/esm/mutators/string-mutators.d.mts +37 -38
  56. package/esm/mutators/string-mutators.d.mts.map +1 -1
  57. package/esm/mutators/string-mutators.mjs +5 -3
  58. package/esm/mutators/string-mutators.mjs.map +1 -1
  59. package/esm/object.d.mts +3 -5
  60. package/esm/object.d.mts.map +1 -1
  61. package/esm/object.mjs.map +1 -1
  62. package/esm/plugins/plugin-system.d.mts +11 -9
  63. package/esm/plugins/plugin-system.d.mts.map +1 -1
  64. package/esm/rules/array/array-rules.d.mts +3 -4
  65. package/esm/rules/array/array-rules.d.mts.map +1 -1
  66. package/esm/rules/array/index.d.mts +2 -0
  67. package/esm/rules/array/index.mjs +1 -1
  68. package/esm/rules/color/color-rules.d.mts +8 -9
  69. package/esm/rules/color/color-rules.d.mts.map +1 -1
  70. package/esm/rules/color/index.d.mts +2 -0
  71. package/esm/rules/color/index.mjs +1 -1
  72. package/esm/rules/common/enum.d.mts +5 -6
  73. package/esm/rules/common/enum.d.mts.map +1 -1
  74. package/esm/rules/common/equals-field-rules.d.mts +3 -4
  75. package/esm/rules/common/equals-field-rules.d.mts.map +1 -1
  76. package/esm/rules/common/index.d.mts +7 -0
  77. package/esm/rules/common/index.mjs +1 -1
  78. package/esm/rules/common/instanceof.d.mts +2 -3
  79. package/esm/rules/common/instanceof.d.mts.map +1 -1
  80. package/esm/rules/common/literal.d.mts +2 -3
  81. package/esm/rules/common/literal.d.mts.map +1 -1
  82. package/esm/rules/common/literal.mjs.map +1 -1
  83. package/esm/rules/common/type-rules.d.mts +10 -11
  84. package/esm/rules/common/type-rules.d.mts.map +1 -1
  85. package/esm/rules/common/unknown-key.d.mts +2 -3
  86. package/esm/rules/common/unknown-key.d.mts.map +1 -1
  87. package/esm/rules/conditional/forbidden-if-rules.d.mts +7 -8
  88. package/esm/rules/conditional/forbidden-if-rules.d.mts.map +1 -1
  89. package/esm/rules/conditional/index.d.mts +11 -0
  90. package/esm/rules/conditional/index.mjs +1 -1
  91. package/esm/rules/conditional/present-if-rules.d.mts +6 -7
  92. package/esm/rules/conditional/present-if-rules.d.mts.map +1 -1
  93. package/esm/rules/conditional/present-unless-rules.d.mts +2 -3
  94. package/esm/rules/conditional/present-unless-rules.d.mts.map +1 -1
  95. package/esm/rules/conditional/present-with-rules.d.mts +4 -5
  96. package/esm/rules/conditional/present-with-rules.d.mts.map +1 -1
  97. package/esm/rules/conditional/present-without-rules.d.mts +4 -5
  98. package/esm/rules/conditional/present-without-rules.d.mts.map +1 -1
  99. package/esm/rules/conditional/required-if-rules.d.mts +10 -11
  100. package/esm/rules/conditional/required-if-rules.d.mts.map +1 -1
  101. package/esm/rules/conditional/required-unless-rules.d.mts +2 -3
  102. package/esm/rules/conditional/required-unless-rules.d.mts.map +1 -1
  103. package/esm/rules/conditional/required-when-rule.d.mts +2 -3
  104. package/esm/rules/conditional/required-when-rule.d.mts.map +1 -1
  105. package/esm/rules/conditional/required-with-rules.d.mts +4 -5
  106. package/esm/rules/conditional/required-with-rules.d.mts.map +1 -1
  107. package/esm/rules/conditional/required-without-rules.d.mts +4 -5
  108. package/esm/rules/conditional/required-without-rules.d.mts.map +1 -1
  109. package/esm/rules/core/equal.d.mts +2 -3
  110. package/esm/rules/core/equal.d.mts.map +1 -1
  111. package/esm/rules/core/forbidden.d.mts +2 -3
  112. package/esm/rules/core/forbidden.d.mts.map +1 -1
  113. package/esm/rules/core/index.d.mts +6 -0
  114. package/esm/rules/core/index.mjs +1 -1
  115. package/esm/rules/core/required.d.mts +3 -4
  116. package/esm/rules/core/required.d.mts.map +1 -1
  117. package/esm/rules/core/union.d.mts +10 -4
  118. package/esm/rules/core/union.d.mts.map +1 -1
  119. package/esm/rules/core/union.mjs +56 -10
  120. package/esm/rules/core/union.mjs.map +1 -1
  121. package/esm/rules/core/when.d.mts +2 -3
  122. package/esm/rules/core/when.d.mts.map +1 -1
  123. package/esm/rules/core/when.mjs.map +1 -1
  124. package/esm/rules/date/date-comparison-rules.d.mts +6 -7
  125. package/esm/rules/date/date-comparison-rules.d.mts.map +1 -1
  126. package/esm/rules/date/date-day-rules.d.mts +5 -6
  127. package/esm/rules/date/date-day-rules.d.mts.map +1 -1
  128. package/esm/rules/date/date-field-comparison-rules.d.mts +4 -5
  129. package/esm/rules/date/date-field-comparison-rules.d.mts.map +1 -1
  130. package/esm/rules/date/date-field-comparison-rules.mjs +6 -3
  131. package/esm/rules/date/date-field-comparison-rules.mjs.map +1 -1
  132. package/esm/rules/date/date-period-rules.d.mts +16 -16
  133. package/esm/rules/date/date-period-rules.d.mts.map +1 -1
  134. package/esm/rules/date/date-period-rules.mjs +24 -12
  135. package/esm/rules/date/date-period-rules.mjs.map +1 -1
  136. package/esm/rules/date/date-relative-rules.d.mts +4 -5
  137. package/esm/rules/date/date-relative-rules.d.mts.map +1 -1
  138. package/esm/rules/date/date-relative-rules.mjs +3 -3
  139. package/esm/rules/date/date-relative-rules.mjs.map +1 -1
  140. package/esm/rules/date/date-special-rules.d.mts +4 -5
  141. package/esm/rules/date/date-special-rules.d.mts.map +1 -1
  142. package/esm/rules/date/date.d.mts +16 -17
  143. package/esm/rules/date/date.d.mts.map +1 -1
  144. package/esm/rules/date/date.mjs +4 -2
  145. package/esm/rules/date/date.mjs.map +1 -1
  146. package/esm/rules/date/index.d.mts +8 -0
  147. package/esm/rules/date/index.mjs +1 -1
  148. package/esm/rules/file/dimensions.d.mts +5 -6
  149. package/esm/rules/file/dimensions.d.mts.map +1 -1
  150. package/esm/rules/file/file-size.d.mts +3 -4
  151. package/esm/rules/file/file-size.d.mts.map +1 -1
  152. package/esm/rules/file/index.d.mts +3 -0
  153. package/esm/rules/file/index.mjs +1 -1
  154. package/esm/rules/index.d.mts +56 -0
  155. package/esm/rules/index.mjs +1 -1
  156. package/esm/rules/length/index.d.mts +2 -0
  157. package/esm/rules/length/index.mjs +1 -1
  158. package/esm/rules/length/length-rules.d.mts +8 -9
  159. package/esm/rules/length/length-rules.d.mts.map +1 -1
  160. package/esm/rules/number/index.d.mts +2 -0
  161. package/esm/rules/number/index.mjs +1 -1
  162. package/esm/rules/number/number-rules.d.mts +11 -12
  163. package/esm/rules/number/number-rules.d.mts.map +1 -1
  164. package/esm/rules/number/number-rules.mjs +12 -6
  165. package/esm/rules/number/number-rules.mjs.map +1 -1
  166. package/esm/rules/scalar/index.mjs +1 -1
  167. package/esm/rules/string/alpha.d.mts +4 -5
  168. package/esm/rules/string/alpha.d.mts.map +1 -1
  169. package/esm/rules/string/credit-card.d.mts +2 -3
  170. package/esm/rules/string/credit-card.d.mts.map +1 -1
  171. package/esm/rules/string/email.d.mts +2 -3
  172. package/esm/rules/string/email.d.mts.map +1 -1
  173. package/esm/rules/string/id-formats.d.mts +6 -7
  174. package/esm/rules/string/id-formats.d.mts.map +1 -1
  175. package/esm/rules/string/index.d.mts +12 -0
  176. package/esm/rules/string/index.mjs +1 -1
  177. package/esm/rules/string/ip.d.mts +7 -8
  178. package/esm/rules/string/ip.d.mts.map +1 -1
  179. package/esm/rules/string/matches.d.mts +2 -3
  180. package/esm/rules/string/matches.d.mts.map +1 -1
  181. package/esm/rules/string/pattern.d.mts +2 -3
  182. package/esm/rules/string/pattern.d.mts.map +1 -1
  183. package/esm/rules/string/string-comparison.d.mts +5 -6
  184. package/esm/rules/string/string-comparison.d.mts.map +1 -1
  185. package/esm/rules/string/strong-password-rule.d.mts +2 -3
  186. package/esm/rules/string/strong-password-rule.d.mts.map +1 -1
  187. package/esm/rules/string/url.d.mts +2 -3
  188. package/esm/rules/string/url.d.mts.map +1 -1
  189. package/esm/rules/string/without-whitespace.d.mts +2 -3
  190. package/esm/rules/string/without-whitespace.d.mts.map +1 -1
  191. package/esm/standard-schema/index.d.mts +4 -0
  192. package/esm/standard-schema/json-schema.d.mts +5 -7
  193. package/esm/standard-schema/json-schema.d.mts.map +1 -1
  194. package/esm/standard-schema/json-schema.mjs.map +1 -1
  195. package/esm/standard-schema/map-result.d.mts +2 -3
  196. package/esm/standard-schema/map-result.d.mts.map +1 -1
  197. package/esm/standard-schema/map-result.mjs.map +1 -1
  198. package/esm/standard-schema/types.d.mts +4 -5
  199. package/esm/standard-schema/types.d.mts.map +1 -1
  200. package/esm/string.d.mts +2 -3
  201. package/esm/string.d.mts.map +1 -1
  202. package/esm/types/conditional-types.d.mts +8 -6
  203. package/esm/types/conditional-types.d.mts.map +1 -1
  204. package/esm/types/context-types.d.mts +24 -15
  205. package/esm/types/context-types.d.mts.map +1 -1
  206. package/esm/types/data-transformer-types.d.mts +3 -5
  207. package/esm/types/data-transformer-types.d.mts.map +1 -1
  208. package/esm/types/date-types.d.mts +2 -3
  209. package/esm/types/date-types.d.mts.map +1 -1
  210. package/esm/types/file.types.d.mts +1 -2
  211. package/esm/types/file.types.d.mts.map +1 -1
  212. package/esm/types/index.d.mts +11 -0
  213. package/esm/types/inference-types.d.mts +15 -14
  214. package/esm/types/inference-types.d.mts.map +1 -1
  215. package/esm/types/mutator-types.d.mts +9 -7
  216. package/esm/types/mutator-types.d.mts.map +1 -1
  217. package/esm/types/result-types.d.mts +12 -7
  218. package/esm/types/result-types.d.mts.map +1 -1
  219. package/esm/types/rule-types.d.mts +33 -15
  220. package/esm/types/rule-types.d.mts.map +1 -1
  221. package/esm/types/schema-types.d.mts +1 -3
  222. package/esm/types/schema-types.d.mts.map +1 -1
  223. package/esm/validators/any-validator.d.mts +1 -3
  224. package/esm/validators/any-validator.d.mts.map +1 -1
  225. package/esm/validators/array-validator.d.mts +2 -3
  226. package/esm/validators/array-validator.d.mts.map +1 -1
  227. package/esm/validators/array-validator.mjs +3 -3
  228. package/esm/validators/array-validator.mjs.map +1 -1
  229. package/esm/validators/base-validator.d.mts +10 -11
  230. package/esm/validators/base-validator.d.mts.map +1 -1
  231. package/esm/validators/base-validator.mjs +52 -21
  232. package/esm/validators/base-validator.mjs.map +1 -1
  233. package/esm/validators/boolean-validator.d.mts +1 -3
  234. package/esm/validators/boolean-validator.d.mts.map +1 -1
  235. package/esm/validators/computed-validator.d.mts +3 -4
  236. package/esm/validators/computed-validator.d.mts.map +1 -1
  237. package/esm/validators/computed-validator.mjs +4 -4
  238. package/esm/validators/computed-validator.mjs.map +1 -1
  239. package/esm/validators/date-validator.d.mts +2 -3
  240. package/esm/validators/date-validator.d.mts.map +1 -1
  241. package/esm/validators/discriminated-union-validator.d.mts +3 -3
  242. package/esm/validators/discriminated-union-validator.d.mts.map +1 -1
  243. package/esm/validators/discriminated-union-validator.mjs +1 -1
  244. package/esm/validators/discriminated-union-validator.mjs.map +1 -1
  245. package/esm/validators/float-validator.d.mts +1 -3
  246. package/esm/validators/float-validator.d.mts.map +1 -1
  247. package/esm/validators/index.d.mts +2 -1
  248. package/esm/validators/index.mjs +1 -1
  249. package/esm/validators/instanceof-validator.d.mts +1 -3
  250. package/esm/validators/instanceof-validator.d.mts.map +1 -1
  251. package/esm/validators/int-validator.d.mts +1 -3
  252. package/esm/validators/int-validator.d.mts.map +1 -1
  253. package/esm/validators/lazy-validator.d.mts +2 -3
  254. package/esm/validators/lazy-validator.d.mts.map +1 -1
  255. package/esm/validators/lazy-validator.mjs +1 -1
  256. package/esm/validators/lazy-validator.mjs.map +1 -1
  257. package/esm/validators/literal-validator.d.mts +1 -3
  258. package/esm/validators/literal-validator.d.mts.map +1 -1
  259. package/esm/validators/managed-validator.d.mts +3 -4
  260. package/esm/validators/managed-validator.d.mts.map +1 -1
  261. package/esm/validators/methods/equality-conditional-methods.d.mts +3 -4
  262. package/esm/validators/methods/equality-conditional-methods.d.mts.map +1 -1
  263. package/esm/validators/methods/forbidden-methods.d.mts +2 -3
  264. package/esm/validators/methods/forbidden-methods.d.mts.map +1 -1
  265. package/esm/validators/methods/present-methods.d.mts +2 -3
  266. package/esm/validators/methods/present-methods.d.mts.map +1 -1
  267. package/esm/validators/methods/required-methods.d.mts +3 -4
  268. package/esm/validators/methods/required-methods.d.mts.map +1 -1
  269. package/esm/validators/number-validator.d.mts +1 -3
  270. package/esm/validators/number-validator.d.mts.map +1 -1
  271. package/esm/validators/number-validator.mjs +12 -8
  272. package/esm/validators/number-validator.mjs.map +1 -1
  273. package/esm/validators/numeric-validator.d.mts +1 -3
  274. package/esm/validators/numeric-validator.d.mts.map +1 -1
  275. package/esm/validators/object-validator.d.mts +2 -3
  276. package/esm/validators/object-validator.d.mts.map +1 -1
  277. package/esm/validators/object-validator.mjs +9 -7
  278. package/esm/validators/object-validator.mjs.map +1 -1
  279. package/esm/validators/primitive-validator.d.mts +1 -3
  280. package/esm/validators/primitive-validator.d.mts.map +1 -1
  281. package/esm/validators/record-validator.d.mts +2 -3
  282. package/esm/validators/record-validator.d.mts.map +1 -1
  283. package/esm/validators/record-validator.mjs +3 -3
  284. package/esm/validators/record-validator.mjs.map +1 -1
  285. package/esm/validators/scalar-validator.d.mts +1 -3
  286. package/esm/validators/scalar-validator.d.mts.map +1 -1
  287. package/esm/validators/scalar-validator.mjs.map +1 -1
  288. package/esm/validators/string-validator.d.mts +1 -3
  289. package/esm/validators/string-validator.d.mts.map +1 -1
  290. package/esm/validators/tuple-validator.d.mts +2 -3
  291. package/esm/validators/tuple-validator.d.mts.map +1 -1
  292. package/esm/validators/tuple-validator.mjs +3 -3
  293. package/esm/validators/tuple-validator.mjs.map +1 -1
  294. package/esm/validators/union-validator.d.mts +4 -4
  295. package/esm/validators/union-validator.d.mts.map +1 -1
  296. package/esm/validators/union-validator.mjs +3 -1
  297. package/esm/validators/union-validator.mjs.map +1 -1
  298. package/llms-full.txt +656 -527
  299. package/llms.txt +1 -1
  300. package/package.json +1 -1
  301. package/skills/bridge-standard-schema/SKILL.md +60 -36
  302. package/skills/compose-seal-modifiers/SKILL.md +89 -53
  303. package/skills/define-structural-shape/SKILL.md +41 -27
  304. package/skills/define-structural-shape/array-methods.md +27 -27
  305. package/skills/define-structural-shape/object-methods.md +38 -30
  306. package/skills/extend-seal-with-plugins/SKILL.md +39 -5
  307. package/skills/generate-json-schema/SKILL.md +13 -13
  308. package/skills/handle-seal-errors/SKILL.md +23 -23
  309. package/skills/index.md +4 -1
  310. package/skills/overview/SKILL.md +10 -2
  311. package/skills/pick-seal-primitive/SKILL.md +45 -45
  312. package/skills/pick-seal-primitive/date-methods.md +96 -96
  313. package/skills/pick-seal-primitive/number-methods.md +55 -55
  314. package/skills/pick-seal-primitive/string-methods.md +107 -102
  315. package/skills/seal-basics/SKILL.md +14 -14
  316. package/cjs/object--LXRt5RF.cjs.map +0 -1
  317. package/cjs/required-methods-DYsRO9aZ.cjs.map +0 -1
  318. package/cjs/string-DsqnKoSB.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-validator.mjs","names":[],"sources":["../../../../../../../../packages/seal/src/validators/lazy-validator.ts"],"sourcesContent":["import type { JsonSchemaResult, JsonSchemaTarget } from \"../standard-schema/json-schema\";\nimport type { SchemaContext, ValidationResult } from \"../types\";\nimport { BaseValidator } from \"./base-validator\";\n\n/**\n * Lazy validator — defers resolution of the inner validator until validate-time.\n *\n * Solves the chicken-and-egg of self-referencing schemas. JavaScript evaluates\n * an object literal before the `const` binding completes, so this can't work:\n *\n * ```ts\n * const categorySchema = v.object({\n * name: v.string(),\n * children: v.array(categorySchema), // ❌ ReferenceError\n * });\n * ```\n *\n * Wrap the recursive reference in `v.lazy(() => …)` — the thunk isn't invoked\n * during construction, only when `validate()` is called:\n *\n * ```ts\n * type Category = { name: string; children: Category[] };\n *\n * const categorySchema: ObjectValidator<...> = v.object({\n * name: v.string(),\n * children: v.array(v.lazy(() => categorySchema)),\n * });\n *\n * type T = Infer<typeof categorySchema>;\n * // { name: string; children: T[] } ← recursive type\n * ```\n *\n * The thunk is memoized — it's invoked once on the first validate (or\n * `matchesType` / `toJsonSchema`) call and the result is cached. The thunk is\n * expected to return a stable validator; calling it on every validate would be\n * wasteful and could mask bugs where the user accidentally returns a fresh\n * validator each time.\n *\n * **JSON Schema caveat.** v1 uses simple resolve-and-delegate — recursive\n * schemas will infinite-loop in `toJsonSchema()`. If you need JSON Schema for\n * a recursive shape, generate it manually with `$defs` + `$ref` until v2 lands.\n *\n * @see `domains/seal/plans/2026-05-12-lazy-validator.md`\n */\nexport class LazyValidator<T extends BaseValidator = BaseValidator> extends BaseValidator {\n private resolvedValidator: T | undefined;\n\n public constructor(private thunk: () => T) {\n super();\n // Lazy itself defers required handling to the inner validator —\n // mark the wrapper as optional so the required check doesn't fire here.\n this.requiredRule = null;\n this.isOptional = true;\n }\n\n /**\n * Resolve the inner validator. Memoizes the result so subsequent calls\n * don't re-execute the thunk.\n */\n private resolve(): T {\n if (this.resolvedValidator === undefined) {\n this.resolvedValidator = this.thunk();\n }\n\n return this.resolvedValidator;\n }\n\n public override async validate(data: any, context: SchemaContext): Promise<ValidationResult> {\n return this.resolve().validate(data, context);\n }\n\n public override matchesType(value: any): boolean {\n return this.resolve().matchesType(value);\n }\n\n public override clone(): this {\n const cloned = super.clone();\n // Share the thunk reference; reset the memo so the clone resolves\n // independently on its first call (in case the thunk closure resolves\n // differently in a different context — unlikely but cheap insurance).\n cloned.thunk = this.thunk;\n cloned.resolvedValidator = undefined;\n\n return cloned;\n }\n\n /**\n * JSON Schema generation — simple resolve-and-delegate.\n *\n * **Recursive schemas will infinite-loop.** Until v2 adds `$ref` + `$defs`\n * generation, callers needing JSON Schema for recursive shapes must build\n * the schema manually.\n */\n public override toJsonSchema(target: JsonSchemaTarget = \"draft-2020-12\"): JsonSchemaResult {\n return this.resolve().toJsonSchema(target);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,IAAa,gBAAb,cAA4E,cAAc;CAGxF,AAAO,YAAY,AAAQ,OAAgB;EACzC,MAAM;EADmB;EAIzB,KAAK,eAAe;EACpB,KAAK,aAAa;CACpB;;;;;CAMA,AAAQ,UAAa;EACnB,IAAI,KAAK,sBAAsB,QAC7B,KAAK,oBAAoB,KAAK,MAAM;EAGtC,OAAO,KAAK;CACd;CAEA,MAAsB,SAAS,MAAW,SAAmD;EAC3F,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO;CAC9C;CAEA,AAAgB,YAAY,OAAqB;EAC/C,OAAO,KAAK,QAAQ,CAAC,CAAC,YAAY,KAAK;CACzC;CAEA,AAAgB,QAAc;EAC5B,MAAM,SAAS,MAAM,MAAM;EAI3B,OAAO,QAAQ,KAAK;EACpB,OAAO,oBAAoB;EAE3B,OAAO;CACT;;;;;;;;CASA,AAAgB,aAAa,SAA2B,iBAAmC;EACzF,OAAO,KAAK,QAAQ,CAAC,CAAC,aAAa,MAAM;CAC3C;AACF"}
1
+ {"version":3,"file":"lazy-validator.mjs","names":[],"sources":["../../../../../../../../packages/seal/src/validators/lazy-validator.ts"],"sourcesContent":["import type { JsonSchemaResult, JsonSchemaTarget } from \"../standard-schema/json-schema\";\nimport type { SchemaContext, ValidationResult } from \"../types\";\nimport { BaseValidator } from \"./base-validator\";\n\n/**\n * Lazy validator — defers resolution of the inner validator until validate-time.\n *\n * Solves the chicken-and-egg of self-referencing schemas. JavaScript evaluates\n * an object literal before the `const` binding completes, so this can't work:\n *\n * ```ts\n * const categorySchema = v.object({\n * name: v.string(),\n * children: v.array(categorySchema), // ❌ ReferenceError\n * });\n * ```\n *\n * Wrap the recursive reference in `v.lazy(() => …)` — the thunk isn't invoked\n * during construction, only when `validate()` is called:\n *\n * ```ts\n * type Category = { name: string; children: Category[] };\n *\n * const categorySchema: ObjectValidator<...> = v.object({\n * name: v.string(),\n * children: v.array(v.lazy(() => categorySchema)),\n * });\n *\n * type T = Infer<typeof categorySchema>;\n * // { name: string; children: T[] } ← recursive type\n * ```\n *\n * The thunk is memoized — it's invoked once on the first validate (or\n * `matchesType` / `toJsonSchema`) call and the result is cached. The thunk is\n * expected to return a stable validator; calling it on every validate would be\n * wasteful and could mask bugs where the user accidentally returns a fresh\n * validator each time.\n *\n * **JSON Schema caveat.** v1 uses simple resolve-and-delegate — recursive\n * schemas will infinite-loop in `toJsonSchema()`. If you need JSON Schema for\n * a recursive shape, generate it manually with `$defs` + `$ref` until v2 lands.\n *\n * @see `domains/seal/plans/2026-05-12-lazy-validator.md`\n */\nexport class LazyValidator<T extends BaseValidator = BaseValidator> extends BaseValidator {\n private resolvedValidator: T | undefined;\n\n public constructor(private thunk: () => T) {\n super();\n // Lazy itself defers required handling to the inner validator —\n // mark the wrapper as optional so the required check doesn't fire here.\n this.requiredRule = null;\n this.isOptional = true;\n }\n\n /**\n * Resolve the inner validator. Memoizes the result so subsequent calls\n * don't re-execute the thunk.\n */\n private resolve(): T {\n if (this.resolvedValidator === undefined) {\n this.resolvedValidator = this.thunk();\n }\n\n return this.resolvedValidator;\n }\n\n public override async validate(data: any, context: SchemaContext): Promise<ValidationResult> {\n return this.refineResult(await this.resolve().validate(data, context), context);\n }\n\n public override matchesType(value: any): boolean {\n return this.resolve().matchesType(value);\n }\n\n public override clone(): this {\n const cloned = super.clone();\n // Share the thunk reference; reset the memo so the clone resolves\n // independently on its first call (in case the thunk closure resolves\n // differently in a different context — unlikely but cheap insurance).\n cloned.thunk = this.thunk;\n cloned.resolvedValidator = undefined;\n\n return cloned;\n }\n\n /**\n * JSON Schema generation — simple resolve-and-delegate.\n *\n * **Recursive schemas will infinite-loop.** Until v2 adds `$ref` + `$defs`\n * generation, callers needing JSON Schema for recursive shapes must build\n * the schema manually.\n */\n public override toJsonSchema(target: JsonSchemaTarget = \"draft-2020-12\"): JsonSchemaResult {\n return this.resolve().toJsonSchema(target);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,IAAa,gBAAb,cAA4E,cAAc;CAGxF,AAAO,YAAY,AAAQ,OAAgB;EACzC,MAAM;EADmB;EAIzB,KAAK,eAAe;EACpB,KAAK,aAAa;CACpB;;;;;CAMA,AAAQ,UAAa;EACnB,IAAI,KAAK,sBAAsB,QAC7B,KAAK,oBAAoB,KAAK,MAAM;EAGtC,OAAO,KAAK;CACd;CAEA,MAAsB,SAAS,MAAW,SAAmD;EAC3F,OAAO,KAAK,aAAa,MAAM,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,OAAO;CAChF;CAEA,AAAgB,YAAY,OAAqB;EAC/C,OAAO,KAAK,QAAQ,CAAC,CAAC,YAAY,KAAK;CACzC;CAEA,AAAgB,QAAc;EAC5B,MAAM,SAAS,MAAM,MAAM;EAI3B,OAAO,QAAQ,KAAK;EACpB,OAAO,oBAAoB;EAE3B,OAAO;CACT;;;;;;;;CASA,AAAgB,aAAa,SAA2B,iBAAmC;EACzF,OAAO,KAAK,QAAQ,CAAC,CAAC,aAAa,MAAM;CAC3C;AACF"}
@@ -1,6 +1,5 @@
1
1
  import { JsonSchemaResult, JsonSchemaTarget } from "../standard-schema/json-schema.mjs";
2
2
  import { BaseValidator } from "./base-validator.mjs";
3
-
4
3
  //#region ../../packages/seal/src/validators/literal-validator.d.ts
5
4
  /**
6
5
  * Literal validator class
@@ -16,7 +15,7 @@ import { BaseValidator } from "./base-validator.mjs";
16
15
  * v.literal(1, 2, 3) // type: 1 | 2 | 3
17
16
  * v.literal(true) // type: true
18
17
  */
19
- declare class LiteralValidator<T extends readonly (string | number | boolean)[] = readonly (string | number | boolean)[]> extends BaseValidator {
18
+ export declare class LiteralValidator<T extends readonly (string | number | boolean)[] = readonly (string | number | boolean)[]> extends BaseValidator {
20
19
  values: T;
21
20
  constructor(values: T, errorMessage?: string);
22
21
  /**
@@ -48,5 +47,4 @@ declare class LiteralValidator<T extends readonly (string | number | boolean)[]
48
47
  toJsonSchema(target?: JsonSchemaTarget): JsonSchemaResult;
49
48
  }
50
49
  //#endregion
51
- export { LiteralValidator };
52
50
  //# sourceMappingURL=literal-validator.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/literal-validator.ts"],"mappings":";;;;;;AAoBA;;;;;;;;;;;;cAAa,gBAAA,oGAEH,aAAA;EACD,MAAA,EAAQ,CAAA;cAEI,MAAA,EAAQ,CAAA,EAAG,YAAA;EAAH;;;EAyBpB,WAAA,CAAY,KAAA;EAAA;;;;;;;EAWH,KAAA;;;;;;;;;;;;;;;EAoBA,YAAA,CAAa,MAAA,GAAQ,gBAAA,GAAqC,gBAAA;AAAA"}
1
+ {"version":3,"file":"literal-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/literal-validator.ts"],"mappings":";;;;;;;;;;;;;;;;;qBAoBa,iBACX,mGACQ;EACD,QAAQ;EAEf,YAAmB,QAAQ,GAAG;;;;EAyBvB,YAAY;;;;;;;;EAWH;;;;;;;;;;;;;;;EAoBA,aAAa,SAAQ,mBAAqC"}
@@ -1,13 +1,13 @@
1
1
  import { SchemaContext } from "../types/context-types.mjs";
2
+ import "../types/index.mjs";
2
3
  import { BaseValidator } from "./base-validator.mjs";
3
4
  import { ComputedValidator } from "./computed-validator.mjs";
4
-
5
5
  //#region ../../packages/seal/src/validators/managed-validator.d.ts
6
6
  /**
7
7
  * Callback function for managed fields
8
8
  * Receives only schema context (no data dependency)
9
9
  */
10
- type ManagedCallback<TResult = any> = (context: SchemaContext) => TResult | Promise<TResult>;
10
+ export type ManagedCallback<TResult = any> = (context: SchemaContext) => TResult | Promise<TResult>;
11
11
  /**
12
12
  * Managed field validator
13
13
  *
@@ -28,7 +28,7 @@ type ManagedCallback<TResult = any> = (context: SchemaContext) => TResult | Prom
28
28
  * });
29
29
  * ```
30
30
  */
31
- declare class ManagedValidator<TResult = any> extends ComputedValidator<TResult> {
31
+ export declare class ManagedValidator<TResult = any> extends ComputedValidator<TResult> {
32
32
  /**
33
33
  * Create a new managed field validator
34
34
  *
@@ -38,5 +38,4 @@ declare class ManagedValidator<TResult = any> extends ComputedValidator<TResult>
38
38
  constructor(callback: ManagedCallback<TResult>, resultValidator?: BaseValidator);
39
39
  }
40
40
  //#endregion
41
- export { ManagedCallback, ManagedValidator };
42
41
  //# sourceMappingURL=managed-validator.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/managed-validator.ts"],"mappings":";;;;;;;AAQA;;KAAY,eAAA,mBAAkC,OAAA,EAAS,aAAA,KAAkB,OAAA,GAAU,OAAA,CAAQ,OAAA;;;;;;;;;;;;;;AAAO;AAsBlG;;;;;;cAAa,gBAAA,wBAAwC,iBAAA,CAAkB,OAAA;EAAlB;;;;;;cAOvC,QAAA,EAAU,eAAA,CAAgB,OAAA,GAAU,eAAA,GAAkB,aAAA;AAAA"}
1
+ {"version":3,"file":"managed-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/managed-validator.ts"],"mappings":";;;;;;;;;YAQY,gBAAgB,kBAAkB,SAAS,kBAAkB,UAAU,QAAQ;;;;;;;;;;;;;;;;;;;;;qBAsB9E,iBAAiB,uBAAuB,kBAAkB;;;;;;;EAOrE,YAAY,UAAU,gBAAgB,UAAU,kBAAkB"}
@@ -1,11 +1,11 @@
1
1
  import { WhenRuleOptions } from "../../types/conditional-types.mjs";
2
-
2
+ import "../../types/index.mjs";
3
3
  //#region ../../packages/seal/src/validators/methods/equality-conditional-methods.d.ts
4
4
  /**
5
5
  * Marker re-exported by the validators barrel so the dts bundler keeps this
6
6
  * module (and its `declare module` augmentation) in the bundled `.d.ts`.
7
7
  */
8
- declare const equalityConditionalMethodsApplied = true;
8
+ export declare const equalityConditionalMethodsApplied = true;
9
9
  declare module "../base-validator.mjs" {
10
10
  interface BaseValidator {
11
11
  /**
@@ -91,7 +91,6 @@ declare module "../base-validator.mjs" {
91
91
  */
92
92
  whenSibling(siblingField: string, options: Omit<WhenRuleOptions, "field" | "scope">): this;
93
93
  }
94
- } //# sourceMappingURL=equality-conditional-methods.d.ts.map
94
+ }
95
95
  //#endregion
96
- export { equalityConditionalMethodsApplied };
97
96
  //# sourceMappingURL=equality-conditional-methods.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"equality-conditional-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/equality-conditional-methods.ts"],"mappings":";;;;;AAUA;;cAAa,iCAAA;AAAA;EAAA,UAGD,aAAA;IAH0C;;;IAOlD,KAAA,CAAM,KAAA,OAAY,YAAA;IA0DW;;;IArD7B,MAAA,CAAO,KAAA,UAAe,YAAA;IA+EyB;;;IA1E/C,aAAA,CAAc,KAAA,UAAe,YAAA;IAVX;;;IAelB,aAAA,CAAc,KAAA,UAAe,YAAA;IAL7B;;;IAUA,oBAAA,CAAqB,KAAA,UAAe,YAAA;IALtB;;;;;;;;;;;;;;;;;AAqEqE;;;;;;;;;;;;;;;;;;;IA1BnF,IAAA,CAAK,KAAA,UAAe,OAAA,EAAS,IAAA,CAAK,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;IA0BlC,WAAA,CAAY,YAAA,UAAsB,OAAA,EAAS,IAAA,CAAK,eAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"equality-conditional-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/equality-conditional-methods.ts"],"mappings":";;;;;;;qBAUa;;YAGD;;;;IAIR,MAAM,YAAY;;;;IAKlB,OAAO,eAAe;;;;IAKtB,cAAc,eAAe;;;;IAK7B,cAAc,eAAe;;;;IAK7B,qBAAqB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCpC,KAAK,eAAe,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;IA0BlC,YAAY,sBAAsB,SAAS,KAAK"}
@@ -3,7 +3,7 @@
3
3
  * Marker re-exported by the validators barrel so the dts bundler keeps this
4
4
  * module (and its `declare module` augmentation) in the bundled `.d.ts`.
5
5
  */
6
- declare const forbiddenMethodsApplied = true;
6
+ export declare const forbiddenMethodsApplied = true;
7
7
  declare module "../base-validator.mjs" {
8
8
  interface BaseValidator {
9
9
  /**
@@ -59,7 +59,6 @@ declare module "../base-validator.mjs" {
59
59
  */
60
60
  forbiddenIfNotInSibling(field: string, values: any[], errorMessage?: string): this;
61
61
  }
62
- } //# sourceMappingURL=forbidden-methods.d.ts.map
62
+ }
63
63
  //#endregion
64
- export { forbiddenMethodsApplied };
65
64
  //# sourceMappingURL=forbidden-methods.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forbidden-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/forbidden-methods.ts"],"mappings":";;AAeA;;;cAAa,uBAAA;AAAA;EAAA,UAGD,aAAA;IAHgC;;;IAOxC,SAAA,CAAU,YAAA;IAAV;;;IAKA,WAAA,CAAY,KAAA,UAAe,KAAA,OAAY,YAAA;IAAZ;;;IAK3B,kBAAA,CAAmB,KAAA,UAAe,KAAA,OAAY,YAAA;IAAZ;;;IAKlC,cAAA,CAAe,KAAA,UAAe,KAAA,OAAY,YAAA;IAAZ;;;IAK9B,qBAAA,CAAsB,KAAA,UAAe,KAAA,OAAY,YAAA;IAAZ;;;IAKrC,gBAAA,CAAiB,KAAA,UAAe,YAAA;IAAA;;;IAKhC,uBAAA,CAAwB,KAAA,UAAe,YAAA;IAKvC;;;IAAA,mBAAA,CAAoB,KAAA,UAAe,YAAA;IAKR;;;IAA3B,0BAAA,CAA2B,KAAA,UAAe,YAAA;IAKb;;;IAA7B,aAAA,CAAc,KAAA,UAAe,MAAA,SAAe,YAAA;IAKR;;;IAApC,oBAAA,CAAqB,KAAA,UAAe,MAAA,SAAe,YAAA;IAKnB;;;IAAhC,gBAAA,CAAiB,KAAA,UAAe,MAAA,SAAe,YAAA;IAKR;;;IAAvC,uBAAA,CAAwB,KAAA,UAAe,MAAA,SAAe,YAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"forbidden-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/forbidden-methods.ts"],"mappings":";;;;;qBAea;;YAGD;;;;IAIR,UAAU;;;;IAKV,YAAY,eAAe,YAAY;;;;IAKvC,mBAAmB,eAAe,YAAY;;;;IAK9C,eAAe,eAAe,YAAY;;;;IAK1C,sBAAsB,eAAe,YAAY;;;;IAKjD,iBAAiB,eAAe;;;;IAKhC,wBAAwB,eAAe;;;;IAKvC,oBAAoB,eAAe;;;;IAKnC,2BAA2B,eAAe;;;;IAK1C,cAAc,eAAe,eAAe;;;;IAK5C,qBAAqB,eAAe,eAAe;;;;IAKnD,iBAAiB,eAAe,eAAe;;;;IAK/C,wBAAwB,eAAe,eAAe"}
@@ -3,7 +3,7 @@
3
3
  * Marker re-exported by the validators barrel so the dts bundler keeps this
4
4
  * module (and its `declare module` augmentation) in the bundled `.d.ts`.
5
5
  */
6
- declare const presentMethodsApplied = true;
6
+ export declare const presentMethodsApplied = true;
7
7
  declare module "../base-validator.mjs" {
8
8
  interface BaseValidator {
9
9
  /**
@@ -103,7 +103,6 @@ declare module "../base-validator.mjs" {
103
103
  */
104
104
  presentWithoutAnySiblings(fields: string[], errorMessage?: string): this;
105
105
  }
106
- } //# sourceMappingURL=present-methods.d.ts.map
106
+ }
107
107
  //#endregion
108
- export { presentMethodsApplied };
109
108
  //# sourceMappingURL=present-methods.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"present-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/present-methods.ts"],"mappings":";;AAwBA;;;cAAa,qBAAA;AAAA;EAAA,UAGD,aAAA;IAH8B;;;IAOtC,WAAA,CAAY,KAAA,UAAe,YAAA;IAA3B;;;IAKA,kBAAA,CAAmB,KAAA,UAAe,YAAA;IAAf;;;IAKnB,cAAA,CAAe,KAAA,UAAe,YAAA;IAAA;;;IAK9B,qBAAA,CAAsB,KAAA,UAAe,YAAA;IAKrC;;;IAAA,SAAA,CAAU,KAAA,UAAe,KAAA,OAAY,YAAA;IAKrC;;;IAAA,gBAAA,CAAiB,KAAA,UAAe,KAAA,OAAY,YAAA;IAK5C;;;IAAA,aAAA,CAAc,KAAA,UAAe,KAAA,OAAY,YAAA;IAKzC;;;IAAA,oBAAA,CAAqB,KAAA,UAAe,KAAA,OAAY,YAAA;IAKhD;;;IAAA,cAAA,CAAe,KAAA,UAAe,YAAA;IAKR;;;IAAtB,qBAAA,CAAsB,KAAA,UAAe,YAAA;IAKJ;;;IAAjC,iBAAA,CAAkB,KAAA,UAAe,YAAA;IAUjC;;;IALA,wBAAA,CAAyB,KAAA,UAAe,YAAA;IAUxC;;;IALA,WAAA,CAAY,KAAA,UAAe,MAAA,SAAe,YAAA;IAU1C;;;IALA,kBAAA,CAAmB,KAAA,UAAe,MAAA,SAAe,YAAA;IAUjD;;;IALA,cAAA,CAAe,KAAA,UAAe,MAAA,SAAe,YAAA;IAU7C;;;IALA,qBAAA,CAAsB,KAAA,UAAe,MAAA,SAAe,YAAA;IAU7B;;;IALvB,cAAA,CAAe,MAAA,YAAkB,YAAA;IAUG;;;IALpC,sBAAA,CAAuB,MAAA,YAAkB,YAAA;IAezC;;;IAVA,iBAAA,CAAkB,MAAA,YAAkB,YAAA;IAeb;;;IAVvB,yBAAA,CAA0B,MAAA,YAAkB,YAAA;IAeR;;;IAVpC,cAAA,CAAe,MAAA,YAAkB,YAAA;IAegC;;AAAA;IAVjE,sBAAA,CAAuB,MAAA,YAAkB,YAAA;;;;IAKzC,iBAAA,CAAkB,MAAA,YAAkB,YAAA;;;;IAKpC,yBAAA,CAA0B,MAAA,YAAkB,YAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"present-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/present-methods.ts"],"mappings":";;;;;qBAwBa;;YAGD;;;;IAIR,YAAY,eAAe;;;;IAK3B,mBAAmB,eAAe;;;;IAKlC,eAAe,eAAe;;;;IAK9B,sBAAsB,eAAe;;;;IAKrC,UAAU,eAAe,YAAY;;;;IAKrC,iBAAiB,eAAe,YAAY;;;;IAK5C,cAAc,eAAe,YAAY;;;;IAKzC,qBAAqB,eAAe,YAAY;;;;IAKhD,eAAe,eAAe;;;;IAK9B,sBAAsB,eAAe;;;;IAKrC,kBAAkB,eAAe;;;;IAKjC,yBAAyB,eAAe;;;;IAKxC,YAAY,eAAe,eAAe;;;;IAK1C,mBAAmB,eAAe,eAAe;;;;IAKjD,eAAe,eAAe,eAAe;;;;IAK7C,sBAAsB,eAAe,eAAe;;;;IAKpD,eAAe,kBAAkB;;;;IAKjC,uBAAuB,kBAAkB;;;;IAKzC,kBAAkB,kBAAkB;;;;IAKpC,0BAA0B,kBAAkB;;;;IAK5C,eAAe,kBAAkB;;;;IAKjC,uBAAuB,kBAAkB;;;;IAKzC,kBAAkB,kBAAkB;;;;IAKpC,0BAA0B,kBAAkB"}
@@ -1,5 +1,5 @@
1
1
  import { SchemaContext } from "../../types/context-types.mjs";
2
-
2
+ import "../../types/index.mjs";
3
3
  //#region ../../packages/seal/src/validators/methods/required-methods.d.ts
4
4
  /**
5
5
  * Marker re-exported by the validators barrel so the dts bundler keeps this
@@ -7,7 +7,7 @@ import { SchemaContext } from "../../types/context-types.mjs";
7
7
  * Without a real export, side-effect-only augmentation modules get tree-shaken
8
8
  * out of the published types, dropping every chainable rule method.
9
9
  */
10
- declare const requiredMethodsApplied = true;
10
+ export declare const requiredMethodsApplied = true;
11
11
  declare module "../base-validator.mjs" {
12
12
  interface BaseValidator {
13
13
  /**
@@ -196,7 +196,6 @@ declare module "../base-validator.mjs" {
196
196
  */
197
197
  requiredWhen(callback: (context: SchemaContext) => boolean | Promise<boolean>, errorMessage?: string): this;
198
198
  }
199
- } //# sourceMappingURL=required-methods.d.ts.map
199
+ }
200
200
  //#endregion
201
- export { requiredMethodsApplied };
202
201
  //# sourceMappingURL=required-methods.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"required-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/required-methods.ts"],"mappings":";;;;;AAiCA;;;;cAAa,sBAAA;AAAA;EAAA,UAGD,aAAA;IAyNc;;;IArNtB,QAAA,CAAS,YAAA;IAAA;;;IAKT,OAAA,CAAQ,YAAA;IAMa;;;;IAArB,QAAA;MAAqB,UAAA;IAAA;IAyBrB;;;;;;;;;;;;;IAVA,OAAA;MAAoB,UAAA;MAAkB,UAAA;IAAA;IAmCtC;;;IA9BA,YAAA,CAAa,KAAA,UAAe,YAAA;IAmC5B;;;IA9BA,mBAAA,CAAoB,KAAA,UAAe,YAAA;IAmCnC;;;IA9BA,eAAA,CAAgB,KAAA,UAAe,YAAA;IAmCR;;;IA9BvB,sBAAA,CAAuB,KAAA,UAAe,YAAA;IAmCJ;;;IA9BlC,UAAA,CAAW,KAAA,UAAe,KAAA,OAAY,YAAA;IAwCtC;;;IAnCA,iBAAA,CAAkB,KAAA,UAAe,KAAA,OAAY,YAAA;IAwClB;;;IAnC3B,cAAA,CAAe,KAAA,UAAe,KAAA,OAAY,YAAA;IAwCL;;;IAnCrC,qBAAA,CAAsB,KAAA,UAAe,KAAA,OAAY,YAAA;IA6CjD;;;IAxCA,eAAA,CAAgB,KAAA,UAAe,YAAA;IA6CD;;;IAxC9B,sBAAA,CAAuB,KAAA,UAAe,YAAA;IA6CE;;;IAxCxC,kBAAA,CAAmB,KAAA,UAAe,YAAA;IAkDlC;;;IA7CA,yBAAA,CAA0B,KAAA,UAAe,YAAA;IAkDzC;;;IA7CA,kBAAA,CAAmB,MAAA,YAAkB,YAAA;IAkDrC;;;IA7CA,0BAAA,CAA2B,MAAA,YAAkB,YAAA;IAkD7C;;;IA7CA,kBAAA,CAAmB,MAAA,YAAkB,YAAA;IAkDrC;;;IA7CA,0BAAA,CAA2B,MAAA,YAAkB,YAAA;IAkDrB;;;IA7CxB,qBAAA,CAAsB,MAAA,YAAkB,YAAA;IAkDH;;;IA7CrC,6BAAA,CAA8B,MAAA,YAAkB,YAAA;IAuDhD;;;IAlDA,qBAAA,CAAsB,MAAA,YAAkB,YAAA;IAuDhB;;;IAlDxB,6BAAA,CAA8B,MAAA,YAAkB,YAAA;IAuDX;;;IAlDrC,YAAA,CAAa,KAAA,UAAe,MAAA,SAAe,YAAA;IAiF3C;;;IA5EA,mBAAA,CAAoB,KAAA,UAAe,MAAA,SAAe,YAAA;IA6EhD;;;IAxEF,eAAA,CAAgB,KAAA,UAAe,MAAA,SAAe,YAAA;IAyEvB;;;IApEvB,sBAAA,CAAuB,KAAA,UAAe,MAAA,SAAe,YAAA;;;;IAKrD,eAAA,CAAgB,MAAA,YAAkB,YAAA;;;;IAKlC,uBAAA,CAAwB,MAAA,YAAkB,YAAA;;;;IAK1C,kBAAA,CAAmB,MAAA,YAAkB,YAAA;;;;IAKrC,0BAAA,CAA2B,MAAA,YAAkB,YAAA;;;;IAK7C,eAAA,CAAgB,MAAA,YAAkB,YAAA;;;;IAKlC,uBAAA,CAAwB,MAAA,YAAkB,YAAA;;;;IAK1C,kBAAA,CAAmB,MAAA,YAAkB,YAAA;;;;IAKrC,0BAAA,CAA2B,MAAA,YAAkB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;IA0B7C,YAAA,CACE,QAAA,GAAW,OAAA,EAAS,aAAA,eAA4B,OAAO,WACvD,YAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"required-methods.d.mts","names":[],"sources":["../../../../../../../../../packages/seal/src/validators/methods/required-methods.ts"],"mappings":";;;;;;;;;qBAiCa;;YAGD;;;;IAIR,SAAS;;;;IAKT,QAAQ;;;;;IAMR;MAAqB;;;;;;;;;;;;;;;IAerB;MAAoB;MAAkB;;;;;IAKtC,aAAa,eAAe;;;;IAK5B,oBAAoB,eAAe;;;;IAKnC,gBAAgB,eAAe;;;;IAK/B,uBAAuB,eAAe;;;;IAKtC,WAAW,eAAe,YAAY;;;;IAKtC,kBAAkB,eAAe,YAAY;;;;IAK7C,eAAe,eAAe,YAAY;;;;IAK1C,sBAAsB,eAAe,YAAY;;;;IAKjD,gBAAgB,eAAe;;;;IAK/B,uBAAuB,eAAe;;;;IAKtC,mBAAmB,eAAe;;;;IAKlC,0BAA0B,eAAe;;;;IAKzC,mBAAmB,kBAAkB;;;;IAKrC,2BAA2B,kBAAkB;;;;IAK7C,mBAAmB,kBAAkB;;;;IAKrC,2BAA2B,kBAAkB;;;;IAK7C,sBAAsB,kBAAkB;;;;IAKxC,8BAA8B,kBAAkB;;;;IAKhD,sBAAsB,kBAAkB;;;;IAKxC,8BAA8B,kBAAkB;;;;IAKhD,aAAa,eAAe,eAAe;;;;IAK3C,oBAAoB,eAAe,eAAe;;;;IAKlD,gBAAgB,eAAe,eAAe;;;;IAK9C,uBAAuB,eAAe,eAAe;;;;IAKrD,gBAAgB,kBAAkB;;;;IAKlC,wBAAwB,kBAAkB;;;;IAK1C,mBAAmB,kBAAkB;;;;IAKrC,2BAA2B,kBAAkB;;;;IAK7C,gBAAgB,kBAAkB;;;;IAKlC,wBAAwB,kBAAkB;;;;IAK1C,mBAAmB,kBAAkB;;;;IAKrC,2BAA2B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;IA0B7C,aACE,WAAW,SAAS,4BAA4B,kBAChD"}
@@ -1,11 +1,10 @@
1
1
  import { JsonSchemaResult, JsonSchemaTarget } from "../standard-schema/json-schema.mjs";
2
2
  import { PrimitiveValidator } from "./primitive-validator.mjs";
3
-
4
3
  //#region ../../packages/seal/src/validators/number-validator.d.ts
5
4
  /**
6
5
  * Number validator class - base for Int and Float validators
7
6
  */
8
- declare class NumberValidator extends PrimitiveValidator {
7
+ export declare class NumberValidator extends PrimitiveValidator {
9
8
  constructor(errorMessage?: string);
10
9
  /**
11
10
  * Check if value is a number type
@@ -193,5 +192,4 @@ declare class NumberValidator extends PrimitiveValidator {
193
192
  protected buildNumberJsonSchema(type: "number" | "integer", target: JsonSchemaTarget): JsonSchemaResult;
194
193
  }
195
194
  //#endregion
196
- export { NumberValidator };
197
195
  //# sourceMappingURL=number-validator.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/number-validator.ts"],"mappings":";;;;;;AA+BA;cAAa,eAAA,SAAwB,kBAAA;cAChB,YAAA;EA6SkB;;;EApS9B,WAAA,CAAY,KAAA;EAVgB;;;;;;EAoB5B,GAAA,CAAI,GAAA,mBAAsB,YAAA;EAVd;;;;;;EAoBZ,GAAA,CAAI,GAAA,mBAAsB,YAAA;EAQ1B;;;;EAAA,UAAA,CAAW,KAAA,UAAe,YAAA;EAQA;;;;EAA1B,UAAA,CAAW,KAAA,UAAe,YAAA;EAuBjB;;;;;;EAbT,WAAA,CAAY,KAAA,mBAAwB,YAAA;EAgCT;;;;;;EAnB3B,QAAA,CAAS,KAAA,mBAAwB,YAAA;EA8CjC;;;;EAnCA,EAAA,CAAG,KAAA,mBAAwB,YAAA;EA8CF;;;;EAtCzB,EAAA,CAAG,KAAA,mBAAwB,YAAA;EAkDf;;;;EA1CZ,kBAAA,CAAmB,KAAA,UAAe,YAAA;EAwDlC;;;;EA7CA,SAAA,CAAU,KAAA,UAAe,YAAA;EAuDzB;;;;EA/CA,eAAA,CAAgB,KAAA,UAAe,YAAA;EAyD1B;;;;EA9CL,SAAA,CAAU,KAAA,UAAe,YAAA;EAoEzB;EA/DA,MAAA,CAAO,KAAA,UAAe,YAAA;EA+DW;;;EAxDjC,WAAA,CAAY,KAAA,UAAe,YAAA;EAsEJ;;;EA/DvB,UAAA,CAAW,KAAA,UAAe,YAAA;EAyE1B;;;EAlEA,SAAA,CAAU,KAAA,UAAe,YAAA;EAkFzB;EA7EA,QAAA,CAAS,YAAA;EA2FT;EAtFA,QAAA,CAAS,YAAA;EAoGT;EA/FA,GAAA,CAAI,YAAA;EAoHJ;EA/GA,IAAA,CAAK,YAAA;EAkII;;;;;;EAxHT,OAAA,CAAQ,GAAA,mBAAsB,GAAA,mBAAsB,YAAA;EAmIzD;;;AACiB;EAxHZ,cAAA,CAAe,QAAA,UAAkB,QAAA,UAAkB,YAAA;;;;;EAcnD,MAAA,CAAO,MAAA,UAAgB,YAAA;;EAKvB,SAAA,CAAU,MAAA,UAAgB,YAAA;;EAK1B,SAAA,CAAU,MAAA,UAAgB,YAAA;;;;EAS1B,GAAA;;;;EAOA,IAAA;;;;EAOA,KAAA;;;;EAOA,KAAA,CAAM,QAAA;;;;;;;;;;;EAcN,OAAA,CAAQ,QAAA;;;;;;;;;;;;;;;;;;EAqBR,MAAA;IAC8C,SAAA;EAAA;;;;;;;;;;;;;;;;EAkBrC,YAAA,CAAa,MAAA,GAAQ,gBAAA,GAAqC,gBAAA;;;;;;YAShE,qBAAA,CACR,IAAA,wBACA,MAAA,EAAQ,gBAAA,GACP,gBAAA;AAAA"}
1
+ {"version":3,"file":"number-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/number-validator.ts"],"mappings":";;;;;;qBA+Ba,wBAAwB;EACnC,YAAmB;;;;EASZ,YAAY;;;;;;;EAUZ,IAAI,sBAAsB;;;;;;;EAU1B,IAAI,sBAAsB;;;;;EAQ1B,WAAW,eAAe;;;;;EAQ1B,WAAW,eAAe;;;;;;;EAU1B,YAAY,wBAAwB;;;;;;;EAapC,SAAS,wBAAwB;;;;;EAWjC,GAAG,wBAAwB;;;;;EAQ3B,GAAG,wBAAwB;;;;;EAQ3B,mBAAmB,eAAe;;;;;EAWlC,UAAU,eAAe;;;;;EAQzB,gBAAgB,eAAe;;;;;EAW/B,UAAU,eAAe;;EAKzB,OAAO,eAAe;;;;EAOtB,YAAY,eAAe;;;;EAO3B,WAAW,eAAe;;;;EAO1B,UAAU,eAAe;;EAKzB,SAAS;;EAKT,SAAS;;EAKT,IAAI;;EAKJ,KAAK;;;;;;;EAUL,QAAQ,sBAAsB,sBAAsB;;;;;EAYpD,eAAe,kBAAkB,kBAAkB;;;;;EAcnD,OAAO,gBAAgB;;EAKvB,UAAU,gBAAgB;;EAK1B,UAAU,gBAAgB;;;;EAS1B;;;;EAOA;;;;EAOA;;;;EAOA,MAAM;;;;;;;;;;;EAcN,QAAQ;;;;;;;;;;;;;;;;;;EAqBR;IAC8C;;;;;;;;;;;;;;;;;EAkBrC,aAAa,SAAQ,mBAAqC;;;;;;YAShE,sBACR,4BACA,QAAQ,mBACP"}
@@ -308,15 +308,19 @@ var NumberValidator = class extends PrimitiveValidator {
308
308
  if (typeof betweenOpts.max === "number") schema.maximum = betweenOpts.max;
309
309
  }
310
310
  const gtOpts = getRuleOptions(this.rules, "greaterThan");
311
- if (gtOpts?.value !== void 0 && typeof gtOpts.value === "number") if (target === "draft-07") {
312
- schema.minimum = gtOpts.value;
313
- schema.exclusiveMinimum = true;
314
- } else schema.exclusiveMinimum = gtOpts.value;
311
+ if (gtOpts?.value !== void 0 && typeof gtOpts.value === "number") {
312
+ if (target === "draft-07") {
313
+ schema.minimum = gtOpts.value;
314
+ schema.exclusiveMinimum = true;
315
+ } else schema.exclusiveMinimum = gtOpts.value;
316
+ }
315
317
  const ltOpts = getRuleOptions(this.rules, "lessThan");
316
- if (ltOpts?.value !== void 0 && typeof ltOpts.value === "number") if (target === "draft-07") {
317
- schema.maximum = ltOpts.value;
318
- schema.exclusiveMaximum = true;
319
- } else schema.exclusiveMaximum = ltOpts.value;
318
+ if (ltOpts?.value !== void 0 && typeof ltOpts.value === "number") {
319
+ if (target === "draft-07") {
320
+ schema.maximum = ltOpts.value;
321
+ schema.exclusiveMaximum = true;
322
+ } else schema.exclusiveMaximum = ltOpts.value;
323
+ }
320
324
  const moduloOpts = getRuleOptions(this.rules, "modulo");
321
325
  if (moduloOpts?.value !== void 0 && typeof moduloOpts.value === "number") schema.multipleOf = moduloOpts.value;
322
326
  const inOpts = getRuleOptions(this.rules, "in");
@@ -1 +1 @@
1
- {"version":3,"file":"number-validator.mjs","names":[],"sources":["../../../../../../../../packages/seal/src/validators/number-validator.ts"],"sourcesContent":["import {\n absMutator,\n ceilMutator,\n floorMutator,\n numericMutator,\n roundMutator,\n toFixedMutator,\n} from \"../mutators\";\nimport {\n betweenNumbersRule,\n evenRule,\n greaterThanRule,\n lengthRule,\n lessThanRule,\n maxLengthRule,\n maxRule,\n minLengthRule,\n minRule,\n moduloRule,\n negativeRule,\n numberRule,\n oddRule,\n positiveRule,\n} from \"../rules\";\nimport { PrimitiveValidator } from \"./primitive-validator\";\nimport { applyNullable, getRuleOptions } from \"../standard-schema/json-schema\";\nimport type { JsonSchemaResult, JsonSchemaTarget } from \"../standard-schema/json-schema\";\n\n/**\n * Number validator class - base for Int and Float validators\n */\nexport class NumberValidator extends PrimitiveValidator {\n public constructor(errorMessage?: string) {\n super();\n this.blankIsMissing = true;\n this.addMutableRule(numberRule, errorMessage);\n }\n\n /**\n * Check if value is a number type\n */\n public matchesType(value: any): boolean {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n /**\n * Value must be equal or higher than the given number or field\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public min(min: number | string, errorMessage?: string) {\n return this.addRule(minRule, errorMessage, { min, scope: \"global\" });\n }\n\n /**\n * Value must be equal or less than the given number or field\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public max(max: number | string, errorMessage?: string) {\n return this.addRule(maxRule, errorMessage, { max, scope: \"global\" });\n }\n\n /**\n * Value must be >= sibling field value\n * @category Validation Rule\n */\n public minSibling(field: string, errorMessage?: string) {\n return this.addRule(minRule, errorMessage, { min: field, scope: \"sibling\" });\n }\n\n /**\n * Value must be <= sibling field value\n * @category Validation Rule\n */\n public maxSibling(field: string, errorMessage?: string) {\n return this.addRule(maxRule, errorMessage, { max: field, scope: \"sibling\" });\n }\n\n /**\n * Value must be strictly greater than the given number or field (>)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public greaterThan(value: number | string, errorMessage?: string) {\n return this.addRule(greaterThanRule, errorMessage, {\n value,\n scope: \"global\",\n });\n }\n\n /**\n * Value must be strictly less than the given number or field (<)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public lessThan(value: number | string, errorMessage?: string) {\n return this.addRule(lessThanRule, errorMessage, {\n value,\n scope: \"global\",\n });\n }\n\n /**\n * Alias for greaterThan() - shorter syntax\n * @category Validation Rule\n */\n public gt(value: number | string, errorMessage?: string) {\n return this.greaterThan(value, errorMessage);\n }\n\n /**\n * Alias for lessThan() - shorter syntax\n * @category Validation Rule\n */\n public lt(value: number | string, errorMessage?: string) {\n return this.lessThan(value, errorMessage);\n }\n\n /**\n * Value must be > sibling field value\n * @category Validation Rule\n */\n public greaterThanSibling(field: string, errorMessage?: string) {\n return this.addRule(greaterThanRule, errorMessage, {\n value: field,\n scope: \"sibling\",\n });\n }\n\n /**\n * Alias for greaterThanSibling() - shorter syntax\n * @category Validation Rule\n */\n public gtSibling(field: string, errorMessage?: string) {\n return this.greaterThanSibling(field, errorMessage);\n }\n\n /**\n * Value must be < sibling field value\n * @category Validation Rule\n */\n public lessThanSibling(field: string, errorMessage?: string) {\n return this.addRule(lessThanRule, errorMessage, {\n value: field,\n scope: \"sibling\",\n });\n }\n\n /**\n * Alias for lessThanSibling() - shorter syntax\n * @category Validation Rule\n */\n public ltSibling(field: string, errorMessage?: string) {\n return this.lessThanSibling(field, errorMessage);\n }\n\n /** Value must be a modulo of the given number */\n public modulo(value: number, errorMessage?: string) {\n return this.addRule(moduloRule, errorMessage, { value });\n }\n\n /**\n * Alias for modulo() - Value must be divisible by the given number\n */\n public divisibleBy(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /**\n * Alias for modulo() - Value must be a multiple of the given number\n */\n public multipleOf(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /**\n * Alias for modulo() - Value must be a multiple of the given number\n */\n public modulusOf(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /** Accept only numbers higher than 0 */\n public positive(errorMessage?: string) {\n return this.addRule(positiveRule, errorMessage);\n }\n\n /** Accept only negative numbers */\n public negative(errorMessage?: string) {\n return this.addRule(negativeRule, errorMessage);\n }\n\n /** Accept only odd numbers */\n public odd(errorMessage?: string) {\n return this.addRule(oddRule, errorMessage);\n }\n\n /** Accept only even numbers */\n public even(errorMessage?: string) {\n return this.addRule(evenRule, errorMessage);\n }\n\n /**\n * Accept only numbers between the given two numbers or fields (Inclusive)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public between(min: number | string, max: number | string, errorMessage?: string) {\n return this.addRule(betweenNumbersRule, errorMessage, {\n min,\n max,\n scope: \"global\",\n });\n }\n\n /**\n * Value must be between sibling field values\n * @category Validation Rule\n */\n public betweenSibling(minField: string, maxField: string, errorMessage?: string) {\n return this.addRule(betweenNumbersRule, errorMessage, {\n min: minField,\n max: maxField,\n scope: \"sibling\",\n });\n }\n\n // Enum and value membership methods are inherited from PrimitiveValidator.\n\n /**\n * Value (as a string) must be exactly this many characters.\n * Useful for fixed-format numeric codes (e.g. 4-digit PIN).\n */\n public length(length: number, errorMessage?: string) {\n return this.addRule(lengthRule, errorMessage, { length });\n }\n\n /** Value (as string representation) length must be ≥ min */\n public minLength(length: number, errorMessage?: string) {\n return this.addRule(minLengthRule, errorMessage, { minLength: length });\n }\n\n /** Value (as string representation) length must be ≤ max */\n public maxLength(length: number, errorMessage?: string) {\n return this.addRule(maxLengthRule, errorMessage, { maxLength: length });\n }\n\n // Mutators\n\n /**\n * Convert value to its absolute value\n */\n public abs() {\n return this.addMutator(absMutator);\n }\n\n /**\n * Round value up to the nearest integer\n */\n public ceil() {\n return this.addMutator(ceilMutator);\n }\n\n /**\n * Round value down to the nearest integer\n */\n public floor() {\n return this.addMutator(floorMutator);\n }\n\n /**\n * Round value to the nearest integer or specified decimals\n */\n public round(decimals = 0) {\n return this.addMutator(roundMutator, { decimals });\n }\n\n /**\n * Round to a fixed number of decimal places, keeping the value a **number**.\n *\n * `v.number().toFixed(2)` on `3.14159` yields `3.14`, not `\"3.14\"` — a number\n * schema has to output a number, or its own type rule rejects the result.\n * Format to a fixed-point *string* at the presentation edge instead.\n *\n * @example\n * v.number().toFixed(2) // 3.14159 → 3.14\n */\n public toFixed(decimals = 2) {\n return this.addMutator(toFixedMutator, { decimals });\n }\n\n /**\n * Opt in to coercion: a numeric-shaped string is converted to a number\n * **before** the type rules run; any other value passes through unchanged\n * so bad input still fails the type rule.\n *\n * Strictness is preserved — coercion only fixes the string *representation*,\n * not the value's shape. `v.int().coerce()` turns `\"5\"` into `5` (valid) but\n * `\"5.5\"` into `5.5`, which still fails the integer rule. Number validators\n * do **not** coerce by default; this only takes effect when explicitly chained.\n *\n * The output type is unchanged (`Infer<>` keys off the validator class), so\n * `v.int().coerce()` still infers `number`.\n *\n * @example\n * v.int().coerce() // \"5\" → 5 (valid); \"5.5\" → 5.5 (invalid); \"abc\" → invalid\n * v.number().coerce() // \"5.5\" → 5.5 (valid)\n */\n public coerce() {\n return this.addMutator(numericMutator) as this & { isCoerced: true };\n }\n\n /**\n * @inheritdoc\n *\n * Returns `{ type: \"number\" }` with numeric constraint keywords.\n * IntValidator overrides `type` to `\"integer\"`.\n *\n * @note Sibling-scoped rules (minSibling, maxSibling, etc.) are not representable\n * in JSON Schema and are silently omitted.\n *\n * @example\n * ```ts\n * v.number().min(0).max(100).toJsonSchema(\"draft-2020-12\")\n * // → { type: \"number\", minimum: 0, maximum: 100 }\n * ```\n */\n public override toJsonSchema(target: JsonSchemaTarget = \"draft-2020-12\"): JsonSchemaResult {\n return this.buildNumberJsonSchema(\"number\", target);\n }\n\n /**\n * Shared logic for number/integer JSON Schema generation.\n * Called by NumberValidator.toJsonSchema() (→ type: \"number\")\n * and IntValidator.toJsonSchema() (→ type: \"integer\").\n */\n protected buildNumberJsonSchema(\n type: \"number\" | \"integer\",\n target: JsonSchemaTarget,\n ): JsonSchemaResult {\n const schema: JsonSchemaResult = { type };\n\n // minimum (inclusive)\n const minOpts = getRuleOptions(this.rules, \"min\");\n if (minOpts?.min !== undefined && typeof minOpts.min === \"number\") {\n schema.minimum = minOpts.min;\n }\n\n // maximum (inclusive)\n const maxOpts = getRuleOptions(this.rules, \"max\");\n if (maxOpts?.max !== undefined && typeof maxOpts.max === \"number\") {\n schema.maximum = maxOpts.max;\n }\n\n // between (inclusive range)\n const betweenOpts = getRuleOptions(this.rules, \"betweenNumbers\");\n if (betweenOpts) {\n if (typeof betweenOpts.min === \"number\") schema.minimum = betweenOpts.min;\n if (typeof betweenOpts.max === \"number\") schema.maximum = betweenOpts.max;\n }\n\n // greaterThan (>) → exclusiveMinimum\n const gtOpts = getRuleOptions(this.rules, \"greaterThan\");\n if (gtOpts?.value !== undefined && typeof gtOpts.value === \"number\") {\n if (target === \"draft-07\") {\n schema.minimum = gtOpts.value;\n schema.exclusiveMinimum = true;\n } else {\n schema.exclusiveMinimum = gtOpts.value;\n }\n }\n\n // lessThan (<) → exclusiveMaximum\n const ltOpts = getRuleOptions(this.rules, \"lessThan\");\n if (ltOpts?.value !== undefined && typeof ltOpts.value === \"number\") {\n if (target === \"draft-07\") {\n schema.maximum = ltOpts.value;\n schema.exclusiveMaximum = true;\n } else {\n schema.exclusiveMaximum = ltOpts.value;\n }\n }\n\n // multipleOf / modulo\n const moduloOpts = getRuleOptions(this.rules, \"modulo\");\n if (moduloOpts?.value !== undefined && typeof moduloOpts.value === \"number\") {\n schema.multipleOf = moduloOpts.value;\n }\n\n // enum (from PrimitiveValidator.in / .enum)\n const inOpts = getRuleOptions(this.rules, \"in\");\n if (inOpts?.values && Array.isArray(inOpts.values)) {\n schema.enum = inOpts.values;\n }\n\n if (this.isNullable) applyNullable(schema, target);\n\n return schema;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"number-validator.mjs","names":[],"sources":["../../../../../../../../packages/seal/src/validators/number-validator.ts"],"sourcesContent":["import {\n absMutator,\n ceilMutator,\n floorMutator,\n numericMutator,\n roundMutator,\n toFixedMutator,\n} from \"../mutators\";\nimport {\n betweenNumbersRule,\n evenRule,\n greaterThanRule,\n lengthRule,\n lessThanRule,\n maxLengthRule,\n maxRule,\n minLengthRule,\n minRule,\n moduloRule,\n negativeRule,\n numberRule,\n oddRule,\n positiveRule,\n} from \"../rules\";\nimport { PrimitiveValidator } from \"./primitive-validator\";\nimport { applyNullable, getRuleOptions } from \"../standard-schema/json-schema\";\nimport type { JsonSchemaResult, JsonSchemaTarget } from \"../standard-schema/json-schema\";\n\n/**\n * Number validator class - base for Int and Float validators\n */\nexport class NumberValidator extends PrimitiveValidator {\n public constructor(errorMessage?: string) {\n super();\n this.blankIsMissing = true;\n this.addMutableRule(numberRule, errorMessage);\n }\n\n /**\n * Check if value is a number type\n */\n public matchesType(value: any): boolean {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n /**\n * Value must be equal or higher than the given number or field\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public min(min: number | string, errorMessage?: string) {\n return this.addRule(minRule, errorMessage, { min, scope: \"global\" });\n }\n\n /**\n * Value must be equal or less than the given number or field\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public max(max: number | string, errorMessage?: string) {\n return this.addRule(maxRule, errorMessage, { max, scope: \"global\" });\n }\n\n /**\n * Value must be >= sibling field value\n * @category Validation Rule\n */\n public minSibling(field: string, errorMessage?: string) {\n return this.addRule(minRule, errorMessage, { min: field, scope: \"sibling\" });\n }\n\n /**\n * Value must be <= sibling field value\n * @category Validation Rule\n */\n public maxSibling(field: string, errorMessage?: string) {\n return this.addRule(maxRule, errorMessage, { max: field, scope: \"sibling\" });\n }\n\n /**\n * Value must be strictly greater than the given number or field (>)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public greaterThan(value: number | string, errorMessage?: string) {\n return this.addRule(greaterThanRule, errorMessage, {\n value,\n scope: \"global\",\n });\n }\n\n /**\n * Value must be strictly less than the given number or field (<)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public lessThan(value: number | string, errorMessage?: string) {\n return this.addRule(lessThanRule, errorMessage, {\n value,\n scope: \"global\",\n });\n }\n\n /**\n * Alias for greaterThan() - shorter syntax\n * @category Validation Rule\n */\n public gt(value: number | string, errorMessage?: string) {\n return this.greaterThan(value, errorMessage);\n }\n\n /**\n * Alias for lessThan() - shorter syntax\n * @category Validation Rule\n */\n public lt(value: number | string, errorMessage?: string) {\n return this.lessThan(value, errorMessage);\n }\n\n /**\n * Value must be > sibling field value\n * @category Validation Rule\n */\n public greaterThanSibling(field: string, errorMessage?: string) {\n return this.addRule(greaterThanRule, errorMessage, {\n value: field,\n scope: \"sibling\",\n });\n }\n\n /**\n * Alias for greaterThanSibling() - shorter syntax\n * @category Validation Rule\n */\n public gtSibling(field: string, errorMessage?: string) {\n return this.greaterThanSibling(field, errorMessage);\n }\n\n /**\n * Value must be < sibling field value\n * @category Validation Rule\n */\n public lessThanSibling(field: string, errorMessage?: string) {\n return this.addRule(lessThanRule, errorMessage, {\n value: field,\n scope: \"sibling\",\n });\n }\n\n /**\n * Alias for lessThanSibling() - shorter syntax\n * @category Validation Rule\n */\n public ltSibling(field: string, errorMessage?: string) {\n return this.lessThanSibling(field, errorMessage);\n }\n\n /** Value must be a modulo of the given number */\n public modulo(value: number, errorMessage?: string) {\n return this.addRule(moduloRule, errorMessage, { value });\n }\n\n /**\n * Alias for modulo() - Value must be divisible by the given number\n */\n public divisibleBy(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /**\n * Alias for modulo() - Value must be a multiple of the given number\n */\n public multipleOf(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /**\n * Alias for modulo() - Value must be a multiple of the given number\n */\n public modulusOf(value: number, errorMessage?: string) {\n return this.modulo(value, errorMessage);\n }\n\n /** Accept only numbers higher than 0 */\n public positive(errorMessage?: string) {\n return this.addRule(positiveRule, errorMessage);\n }\n\n /** Accept only negative numbers */\n public negative(errorMessage?: string) {\n return this.addRule(negativeRule, errorMessage);\n }\n\n /** Accept only odd numbers */\n public odd(errorMessage?: string) {\n return this.addRule(oddRule, errorMessage);\n }\n\n /** Accept only even numbers */\n public even(errorMessage?: string) {\n return this.addRule(evenRule, errorMessage);\n }\n\n /**\n * Accept only numbers between the given two numbers or fields (Inclusive)\n * Smart detection: number or field name\n *\n * @category Validation Rule\n */\n public between(min: number | string, max: number | string, errorMessage?: string) {\n return this.addRule(betweenNumbersRule, errorMessage, {\n min,\n max,\n scope: \"global\",\n });\n }\n\n /**\n * Value must be between sibling field values\n * @category Validation Rule\n */\n public betweenSibling(minField: string, maxField: string, errorMessage?: string) {\n return this.addRule(betweenNumbersRule, errorMessage, {\n min: minField,\n max: maxField,\n scope: \"sibling\",\n });\n }\n\n // Enum and value membership methods are inherited from PrimitiveValidator.\n\n /**\n * Value (as a string) must be exactly this many characters.\n * Useful for fixed-format numeric codes (e.g. 4-digit PIN).\n */\n public length(length: number, errorMessage?: string) {\n return this.addRule(lengthRule, errorMessage, { length });\n }\n\n /** Value (as string representation) length must be ≥ min */\n public minLength(length: number, errorMessage?: string) {\n return this.addRule(minLengthRule, errorMessage, { minLength: length });\n }\n\n /** Value (as string representation) length must be ≤ max */\n public maxLength(length: number, errorMessage?: string) {\n return this.addRule(maxLengthRule, errorMessage, { maxLength: length });\n }\n\n // Mutators\n\n /**\n * Convert value to its absolute value\n */\n public abs() {\n return this.addMutator(absMutator);\n }\n\n /**\n * Round value up to the nearest integer\n */\n public ceil() {\n return this.addMutator(ceilMutator);\n }\n\n /**\n * Round value down to the nearest integer\n */\n public floor() {\n return this.addMutator(floorMutator);\n }\n\n /**\n * Round value to the nearest integer or specified decimals\n */\n public round(decimals = 0) {\n return this.addMutator(roundMutator, { decimals });\n }\n\n /**\n * Round to a fixed number of decimal places, keeping the value a **number**.\n *\n * `v.number().toFixed(2)` on `3.14159` yields `3.14`, not `\"3.14\"` — a number\n * schema has to output a number, or its own type rule rejects the result.\n * Format to a fixed-point *string* at the presentation edge instead.\n *\n * @example\n * v.number().toFixed(2) // 3.14159 → 3.14\n */\n public toFixed(decimals = 2) {\n return this.addMutator(toFixedMutator, { decimals });\n }\n\n /**\n * Opt in to coercion: a numeric-shaped string is converted to a number\n * **before** the type rules run; any other value passes through unchanged\n * so bad input still fails the type rule.\n *\n * Strictness is preserved — coercion only fixes the string *representation*,\n * not the value's shape. `v.int().coerce()` turns `\"5\"` into `5` (valid) but\n * `\"5.5\"` into `5.5`, which still fails the integer rule. Number validators\n * do **not** coerce by default; this only takes effect when explicitly chained.\n *\n * The output type is unchanged (`Infer<>` keys off the validator class), so\n * `v.int().coerce()` still infers `number`.\n *\n * @example\n * v.int().coerce() // \"5\" → 5 (valid); \"5.5\" → 5.5 (invalid); \"abc\" → invalid\n * v.number().coerce() // \"5.5\" → 5.5 (valid)\n */\n public coerce() {\n return this.addMutator(numericMutator) as this & { isCoerced: true };\n }\n\n /**\n * @inheritdoc\n *\n * Returns `{ type: \"number\" }` with numeric constraint keywords.\n * IntValidator overrides `type` to `\"integer\"`.\n *\n * @note Sibling-scoped rules (minSibling, maxSibling, etc.) are not representable\n * in JSON Schema and are silently omitted.\n *\n * @example\n * ```ts\n * v.number().min(0).max(100).toJsonSchema(\"draft-2020-12\")\n * // → { type: \"number\", minimum: 0, maximum: 100 }\n * ```\n */\n public override toJsonSchema(target: JsonSchemaTarget = \"draft-2020-12\"): JsonSchemaResult {\n return this.buildNumberJsonSchema(\"number\", target);\n }\n\n /**\n * Shared logic for number/integer JSON Schema generation.\n * Called by NumberValidator.toJsonSchema() (→ type: \"number\")\n * and IntValidator.toJsonSchema() (→ type: \"integer\").\n */\n protected buildNumberJsonSchema(\n type: \"number\" | \"integer\",\n target: JsonSchemaTarget,\n ): JsonSchemaResult {\n const schema: JsonSchemaResult = { type };\n\n // minimum (inclusive)\n const minOpts = getRuleOptions(this.rules, \"min\");\n if (minOpts?.min !== undefined && typeof minOpts.min === \"number\") {\n schema.minimum = minOpts.min;\n }\n\n // maximum (inclusive)\n const maxOpts = getRuleOptions(this.rules, \"max\");\n if (maxOpts?.max !== undefined && typeof maxOpts.max === \"number\") {\n schema.maximum = maxOpts.max;\n }\n\n // between (inclusive range)\n const betweenOpts = getRuleOptions(this.rules, \"betweenNumbers\");\n if (betweenOpts) {\n if (typeof betweenOpts.min === \"number\") schema.minimum = betweenOpts.min;\n if (typeof betweenOpts.max === \"number\") schema.maximum = betweenOpts.max;\n }\n\n // greaterThan (>) → exclusiveMinimum\n const gtOpts = getRuleOptions(this.rules, \"greaterThan\");\n if (gtOpts?.value !== undefined && typeof gtOpts.value === \"number\") {\n if (target === \"draft-07\") {\n schema.minimum = gtOpts.value;\n schema.exclusiveMinimum = true;\n } else {\n schema.exclusiveMinimum = gtOpts.value;\n }\n }\n\n // lessThan (<) → exclusiveMaximum\n const ltOpts = getRuleOptions(this.rules, \"lessThan\");\n if (ltOpts?.value !== undefined && typeof ltOpts.value === \"number\") {\n if (target === \"draft-07\") {\n schema.maximum = ltOpts.value;\n schema.exclusiveMaximum = true;\n } else {\n schema.exclusiveMaximum = ltOpts.value;\n }\n }\n\n // multipleOf / modulo\n const moduloOpts = getRuleOptions(this.rules, \"modulo\");\n if (moduloOpts?.value !== undefined && typeof moduloOpts.value === \"number\") {\n schema.multipleOf = moduloOpts.value;\n }\n\n // enum (from PrimitiveValidator.in / .enum)\n const inOpts = getRuleOptions(this.rules, \"in\");\n if (inOpts?.values && Array.isArray(inOpts.values)) {\n schema.enum = inOpts.values;\n }\n\n if (this.isNullable) applyNullable(schema, target);\n\n return schema;\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { NumberValidator } from "./number-validator.mjs";
2
-
3
2
  //#region ../../packages/seal/src/validators/numeric-validator.d.ts
4
3
  /**
5
4
  * Numeric validator class - base for Int and Float validators either as number or string
6
5
  */
7
- declare class NumericValidator extends NumberValidator {
6
+ export declare class NumericValidator extends NumberValidator {
8
7
  /**
9
8
  * Constructor
10
9
  */
@@ -15,5 +14,4 @@ declare class NumericValidator extends NumberValidator {
15
14
  matchesType(value: any): boolean;
16
15
  }
17
16
  //#endregion
18
- export { NumericValidator };
19
17
  //# sourceMappingURL=numeric-validator.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numeric-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/numeric-validator.ts"],"mappings":";;;;;AAOA;cAAa,gBAAA,SAAyB,eAAe;;;;cAIhC,YAAA;EAAA;;;EAQZ,WAAA,CAAY,KAAA;AAAA"}
1
+ {"version":3,"file":"numeric-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/numeric-validator.ts"],"mappings":";;;;;qBAOa,yBAAyB;;;;EAIpC,YAAmB;;;;EAQZ,YAAY"}
@@ -3,8 +3,8 @@ import { Schema } from "../types/schema-types.mjs";
3
3
  import { SchemaContext } from "../types/context-types.mjs";
4
4
  import { ValidationResult } from "../types/result-types.mjs";
5
5
  import { InferInputObjectShape, InferOutputObjectShape } from "../types/inference-types.mjs";
6
+ import "../types/index.mjs";
6
7
  import { BaseValidator } from "./base-validator.mjs";
7
-
8
8
  //#region ../../packages/seal/src/validators/object-validator.d.ts
9
9
  /**
10
10
  * Object validator class with generic schema type for proper type inference.
@@ -22,7 +22,7 @@ import { BaseValidator } from "./base-validator.mjs";
22
22
  * recursive class-base evaluation that would otherwise occur when the
23
23
  * brand-aware widening tries to inspect the class type.
24
24
  */
25
- declare class ObjectValidator<TSchema extends Schema = Schema> extends BaseValidator<InferInputObjectShape<TSchema>, InferOutputObjectShape<TSchema>> {
25
+ export declare class ObjectValidator<TSchema extends Schema = Schema> extends BaseValidator<InferInputObjectShape<TSchema>, InferOutputObjectShape<TSchema>> {
26
26
  schema: TSchema;
27
27
  protected shouldAllowUnknown: boolean;
28
28
  protected allowedKeys: string[];
@@ -249,5 +249,4 @@ declare class ObjectValidator<TSchema extends Schema = Schema> extends BaseValid
249
249
  toJsonSchema(target?: JsonSchemaTarget): JsonSchemaResult;
250
250
  }
251
251
  //#endregion
252
- export { ObjectValidator };
253
252
  //# sourceMappingURL=object-validator.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/object-validator.ts"],"mappings":";;;;;;;;;;;;AA6BA;;;;;;;;;;;;cAAa,eAAA,iBAAgC,MAAA,GAAS,MAAA,UAAgB,aAAA,CACpE,qBAAA,CAAsB,OAAA,GACtB,sBAAA,CAAuB,OAAA;EAOd,MAAA,EAAQ,OAAA;EAAA,UALP,kBAAA;EAAA,UACA,WAAA;EAAA,UACA,iBAAA;cAGD,MAAA,EAAQ,OAAA,EACf,YAAA;EAyK0B;;;EAhKrB,WAAA,CAAY,KAAA;EAkKU;EA7JtB,YAAA;EAyNqB;EA/MrB,KAAA,IAAS,IAAA;EA+MyD;EAxMlE,IAAA,CAAK,SAAA;EAwMwD;;;EAhM7D,YAAA,CAAa,KAAA;EAuOkB;;;;;;;;;;;;;EApNtB,KAAA,CAAM,IAAA;EApE8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoI7D,MAAA,oBAA0B,MAAA,EAC/B,iBAAA,EAAmB,UAAA,GAAa,eAAA,CAAgB,UAAA,IAC/C,eAAA,CAAgB,OAAA,GAAU,UAAA;EA6ChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAN,KAAA,gBAAqB,MAAA,EAC1B,SAAA,EAAW,eAAA,CAAgB,MAAA,IAC1B,eAAA,CAAgB,OAAA,GAAU,MAAA;EAmJc;;;;;;;;;;;;;;;;;;;;;;;AA+O+C;;;;;EAtUnF,IAAA,iBAAqB,OAAA,KAAY,IAAA,EAAM,CAAA,KAAM,eAAA,CAAgB,IAAA,CAAK,OAAA,EAAS,CAAA;;;;EAoB3E,OAAA,iBAAwB,OAAA,KAAY,IAAA,EAAM,CAAA;;;;EAmB1C,cAAA,iBAA+B,OAAA,KAAY,IAAA,EAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDjD,OAAA,iBAAwB,OAAA,KAAY,IAAA,EAAM,CAAA,KAAM,eAAA,CAAgB,IAAA,CAAK,OAAA,EAAS,CAAA;;EAkB9E,MAAA,CAAO,IAAA,OAAW,OAAA,EAAS,aAAA;;EAMrB,QAAA,CACX,IAAA,OACA,OAAA,GAAS,aAAA,GACR,OAAA,CAAQ,gBAAA;;;;;UA8JH,mBAAA;;;;UAOA,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CQ,YAAA,CAAa,MAAA,GAAQ,gBAAA,GAAqC,gBAAA;AAAA"}
1
+ {"version":3,"file":"object-validator.d.mts","names":[],"sources":["../../../../../../../../packages/seal/src/validators/object-validator.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;qBA6Ba,gBAAgB,gBAAgB,SAAS,gBAAgB,cACpE,sBAAsB,UACtB,uBAAuB;EAOd,QAAQ;YALP;YACA;YACA;EAEV,YACS,QAAQ,SACf;;;;EASK,YAAY;;EAKZ;;EAUA,SAAS;;EAOT,KAAK;;;;EAQL,aAAa;;;;;;;;;;;;;;EAmBJ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEf,OAAO,mBAAmB,QAC/B,mBAAmB,aAAa,gBAAgB,cAC/C,gBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CtB,MAAM,eAAe,QAC1B,WAAW,gBAAgB,UAC1B,gBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DtB,KAAK,gBAAgB,YAAY,MAAM,MAAM,gBAAgB,KAAK,SAAS;;;;EAoB3E,QAAQ,gBAAgB,YAAY,MAAM;;;;EAmB1C,eAAe,gBAAgB,YAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDjD,QAAQ,gBAAgB,YAAY,MAAM,MAAM,gBAAgB,KAAK,SAAS;;EAkB9E,OAAO,WAAW,SAAS;;EAMrB,SACX,WACA,UAAS,gBACR,QAAQ;;;;;UAiKH;;;;UAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CQ,aAAa,SAAQ,mBAAqC"}
@@ -172,6 +172,7 @@ var ObjectValidator = class ObjectValidator extends BaseValidator {
172
172
  merged.shouldAllowUnknown = validator.shouldAllowUnknown;
173
173
  merged.allowedKeys = [...merged.allowedKeys, ...validator.allowedKeys];
174
174
  merged.rules.push(...validator.rules);
175
+ merged.refinements.push(...validator.refinements);
175
176
  merged.mutators.push(...validator.mutators);
176
177
  merged.dataTransformers.push(...validator.dataTransformers);
177
178
  merged.attributesText = {
@@ -293,7 +294,7 @@ var ObjectValidator = class ObjectValidator extends BaseValidator {
293
294
  });
294
295
  this.setRuleAttributesList(rule);
295
296
  }
296
- const result = await super.validate(mutatedData, context);
297
+ const result = await this.validateRules(mutatedData, context);
297
298
  if (result.isValid === false) return result;
298
299
  if (mutatedData === void 0 || mutatedData === null) return result;
299
300
  const errors = [];
@@ -344,14 +345,15 @@ var ObjectValidator = class ObjectValidator extends BaseValidator {
344
345
  for (const key of Object.keys(this.schema)) if (key in validatedData) orderedData[key] = validatedData[key];
345
346
  const cleanedData = removeUndefinedValues(orderedData);
346
347
  const transformedData = await this.startTransformationPipeline(cleanedData, context);
347
- return {
348
+ const output = this.shouldAllowUnknown === false ? transformedData : {
349
+ ...transformedData,
350
+ ...except(mutatedData, Object.keys(this.schema))
351
+ };
352
+ return this.refineResult({
348
353
  isValid: true,
349
354
  errors: [],
350
- data: this.shouldAllowUnknown === false ? transformedData : {
351
- ...transformedData,
352
- ...except(mutatedData, Object.keys(this.schema))
353
- }
354
- };
355
+ data: output
356
+ }, context);
355
357
  }
356
358
  /**
357
359
  * Check if a validator is a computed or managed field