@lowerdeck/validation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.turbo/turbo-build.log +11 -0
  2. package/.turbo/turbo-test.log +144 -0
  3. package/README.md +158 -0
  4. package/dist/index.cjs +2 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.d.ts +119 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.modern.js +2 -0
  9. package/dist/index.modern.js.map +1 -0
  10. package/dist/index.module.js +2 -0
  11. package/dist/index.module.js.map +1 -0
  12. package/dist/index.umd.js +2 -0
  13. package/dist/index.umd.js.map +1 -0
  14. package/dist/lib/introspect.d.ts +13 -0
  15. package/dist/lib/introspect.d.ts.map +1 -0
  16. package/dist/lib/result.d.ts +4 -0
  17. package/dist/lib/result.d.ts.map +1 -0
  18. package/dist/lib/result.test.d.ts +2 -0
  19. package/dist/lib/result.test.d.ts.map +1 -0
  20. package/dist/lib/types.d.ts +48 -0
  21. package/dist/lib/types.d.ts.map +1 -0
  22. package/dist/lib/validator.d.ts +3 -0
  23. package/dist/lib/validator.d.ts.map +1 -0
  24. package/dist/lib/validator.test.d.ts +2 -0
  25. package/dist/lib/validator.test.d.ts.map +1 -0
  26. package/dist/modifiers/color.d.ts +5 -0
  27. package/dist/modifiers/color.d.ts.map +1 -0
  28. package/dist/modifiers/color.test.d.ts +2 -0
  29. package/dist/modifiers/color.test.d.ts.map +1 -0
  30. package/dist/modifiers/email.d.ts +5 -0
  31. package/dist/modifiers/email.d.ts.map +1 -0
  32. package/dist/modifiers/email.test.d.ts +2 -0
  33. package/dist/modifiers/email.test.d.ts.map +1 -0
  34. package/dist/modifiers/emoji.d.ts +5 -0
  35. package/dist/modifiers/emoji.d.ts.map +1 -0
  36. package/dist/modifiers/emoji.test.d.ts +2 -0
  37. package/dist/modifiers/emoji.test.d.ts.map +1 -0
  38. package/dist/modifiers/endsWith.d.ts +5 -0
  39. package/dist/modifiers/endsWith.d.ts.map +1 -0
  40. package/dist/modifiers/endsWith.test.d.ts +2 -0
  41. package/dist/modifiers/endsWith.test.d.ts.map +1 -0
  42. package/dist/modifiers/equals.d.ts +8 -0
  43. package/dist/modifiers/equals.d.ts.map +1 -0
  44. package/dist/modifiers/equals.test.d.ts +2 -0
  45. package/dist/modifiers/equals.test.d.ts.map +1 -0
  46. package/dist/modifiers/includes.d.ts +8 -0
  47. package/dist/modifiers/includes.d.ts.map +1 -0
  48. package/dist/modifiers/includes.test.d.ts +2 -0
  49. package/dist/modifiers/includes.test.d.ts.map +1 -0
  50. package/dist/modifiers/index.d.ts +18 -0
  51. package/dist/modifiers/index.d.ts.map +1 -0
  52. package/dist/modifiers/integer.d.ts +5 -0
  53. package/dist/modifiers/integer.d.ts.map +1 -0
  54. package/dist/modifiers/integer.test.d.ts +2 -0
  55. package/dist/modifiers/integer.test.d.ts.map +1 -0
  56. package/dist/modifiers/ip.d.ts +11 -0
  57. package/dist/modifiers/ip.d.ts.map +1 -0
  58. package/dist/modifiers/ip.test.d.ts +2 -0
  59. package/dist/modifiers/ip.test.d.ts.map +1 -0
  60. package/dist/modifiers/isoDate.d.ts +11 -0
  61. package/dist/modifiers/isoDate.d.ts.map +1 -0
  62. package/dist/modifiers/isoDate.test.d.ts +2 -0
  63. package/dist/modifiers/isoDate.test.d.ts.map +1 -0
  64. package/dist/modifiers/length.d.ts +9 -0
  65. package/dist/modifiers/length.d.ts.map +1 -0
  66. package/dist/modifiers/length.test.d.ts +2 -0
  67. package/dist/modifiers/length.test.d.ts.map +1 -0
  68. package/dist/modifiers/multipleOf.d.ts +5 -0
  69. package/dist/modifiers/multipleOf.d.ts.map +1 -0
  70. package/dist/modifiers/multipleOf.test.d.ts +2 -0
  71. package/dist/modifiers/multipleOf.test.d.ts.map +1 -0
  72. package/dist/modifiers/oneOf.d.ts +5 -0
  73. package/dist/modifiers/oneOf.d.ts.map +1 -0
  74. package/dist/modifiers/oneOf.test.d.ts +2 -0
  75. package/dist/modifiers/oneOf.test.d.ts.map +1 -0
  76. package/dist/modifiers/positive.d.ts +8 -0
  77. package/dist/modifiers/positive.d.ts.map +1 -0
  78. package/dist/modifiers/positive.test.d.ts +2 -0
  79. package/dist/modifiers/positive.test.d.ts.map +1 -0
  80. package/dist/modifiers/regex.d.ts +5 -0
  81. package/dist/modifiers/regex.d.ts.map +1 -0
  82. package/dist/modifiers/regex.test.d.ts +2 -0
  83. package/dist/modifiers/regex.test.d.ts.map +1 -0
  84. package/dist/modifiers/size.d.ts +8 -0
  85. package/dist/modifiers/size.d.ts.map +1 -0
  86. package/dist/modifiers/size.test.d.ts +2 -0
  87. package/dist/modifiers/size.test.d.ts.map +1 -0
  88. package/dist/modifiers/startsWith.d.ts +5 -0
  89. package/dist/modifiers/startsWith.d.ts.map +1 -0
  90. package/dist/modifiers/startsWith.test.d.ts +2 -0
  91. package/dist/modifiers/startsWith.test.d.ts.map +1 -0
  92. package/dist/modifiers/url.d.ts +6 -0
  93. package/dist/modifiers/url.d.ts.map +1 -0
  94. package/dist/modifiers/url.test.d.ts +2 -0
  95. package/dist/modifiers/url.test.d.ts.map +1 -0
  96. package/dist/transformers/case.d.ts +4 -0
  97. package/dist/transformers/case.d.ts.map +1 -0
  98. package/dist/transformers/case.test.d.ts +2 -0
  99. package/dist/transformers/case.test.d.ts.map +1 -0
  100. package/dist/transformers/index.d.ts +3 -0
  101. package/dist/transformers/index.d.ts.map +1 -0
  102. package/dist/transformers/trim.d.ts +5 -0
  103. package/dist/transformers/trim.d.ts.map +1 -0
  104. package/dist/transformers/trim.test.d.ts +2 -0
  105. package/dist/transformers/trim.test.d.ts.map +1 -0
  106. package/dist/validators/any.d.ts +4 -0
  107. package/dist/validators/any.d.ts.map +1 -0
  108. package/dist/validators/any.test.d.ts +2 -0
  109. package/dist/validators/any.test.d.ts.map +1 -0
  110. package/dist/validators/array.d.ts +3 -0
  111. package/dist/validators/array.d.ts.map +1 -0
  112. package/dist/validators/array.test.d.ts +2 -0
  113. package/dist/validators/array.test.d.ts.map +1 -0
  114. package/dist/validators/boolean.d.ts +3 -0
  115. package/dist/validators/boolean.d.ts.map +1 -0
  116. package/dist/validators/boolean.test.d.ts +2 -0
  117. package/dist/validators/boolean.test.d.ts.map +1 -0
  118. package/dist/validators/date.d.ts +3 -0
  119. package/dist/validators/date.d.ts.map +1 -0
  120. package/dist/validators/date.test.d.ts +2 -0
  121. package/dist/validators/date.test.d.ts.map +1 -0
  122. package/dist/validators/enum.d.ts +6 -0
  123. package/dist/validators/enum.d.ts.map +1 -0
  124. package/dist/validators/enum.test.d.ts +2 -0
  125. package/dist/validators/enum.test.d.ts.map +1 -0
  126. package/dist/validators/index.d.ts +17 -0
  127. package/dist/validators/index.d.ts.map +1 -0
  128. package/dist/validators/intersection.d.ts +3 -0
  129. package/dist/validators/intersection.d.ts.map +1 -0
  130. package/dist/validators/intersection.test.d.ts +2 -0
  131. package/dist/validators/intersection.test.d.ts.map +1 -0
  132. package/dist/validators/literal.d.ts +3 -0
  133. package/dist/validators/literal.d.ts.map +1 -0
  134. package/dist/validators/literal.test.d.ts +2 -0
  135. package/dist/validators/literal.test.d.ts.map +1 -0
  136. package/dist/validators/null.d.ts +3 -0
  137. package/dist/validators/null.d.ts.map +1 -0
  138. package/dist/validators/null.test.d.ts +2 -0
  139. package/dist/validators/null.test.d.ts.map +1 -0
  140. package/dist/validators/nullable.d.ts +3 -0
  141. package/dist/validators/nullable.d.ts.map +1 -0
  142. package/dist/validators/nullable.test.d.ts +2 -0
  143. package/dist/validators/nullable.test.d.ts.map +1 -0
  144. package/dist/validators/number.d.ts +3 -0
  145. package/dist/validators/number.d.ts.map +1 -0
  146. package/dist/validators/number.test.d.ts +2 -0
  147. package/dist/validators/number.test.d.ts.map +1 -0
  148. package/dist/validators/object.d.ts +12 -0
  149. package/dist/validators/object.d.ts.map +1 -0
  150. package/dist/validators/object.test.d.ts +2 -0
  151. package/dist/validators/object.test.d.ts.map +1 -0
  152. package/dist/validators/optional.d.ts +3 -0
  153. package/dist/validators/optional.d.ts.map +1 -0
  154. package/dist/validators/optional.test.d.ts +2 -0
  155. package/dist/validators/optional.test.d.ts.map +1 -0
  156. package/dist/validators/record.d.ts +3 -0
  157. package/dist/validators/record.d.ts.map +1 -0
  158. package/dist/validators/record.test.d.ts +2 -0
  159. package/dist/validators/record.test.d.ts.map +1 -0
  160. package/dist/validators/string.d.ts +3 -0
  161. package/dist/validators/string.d.ts.map +1 -0
  162. package/dist/validators/string.test.d.ts +2 -0
  163. package/dist/validators/string.test.d.ts.map +1 -0
  164. package/dist/validators/union.d.ts +3 -0
  165. package/dist/validators/union.d.ts.map +1 -0
  166. package/dist/validators/union.test.d.ts +2 -0
  167. package/dist/validators/union.test.d.ts.map +1 -0
  168. package/dist/validators/void.d.ts +3 -0
  169. package/dist/validators/void.d.ts.map +1 -0
  170. package/package.json +31 -0
  171. package/src/index.ts +33 -0
  172. package/src/lib/introspect.ts +33 -0
  173. package/src/lib/result.test.ts +80 -0
  174. package/src/lib/result.ts +11 -0
  175. package/src/lib/types.ts +57 -0
  176. package/src/lib/validator.test.ts +82 -0
  177. package/src/lib/validator.ts +63 -0
  178. package/src/modifiers/color.test.ts +29 -0
  179. package/src/modifiers/color.ts +18 -0
  180. package/src/modifiers/email.test.ts +29 -0
  181. package/src/modifiers/email.ts +18 -0
  182. package/src/modifiers/emoji.test.ts +31 -0
  183. package/src/modifiers/emoji.ts +18 -0
  184. package/src/modifiers/endsWith.test.ts +50 -0
  185. package/src/modifiers/endsWith.ts +18 -0
  186. package/src/modifiers/equals.test.ts +70 -0
  187. package/src/modifiers/equals.ts +41 -0
  188. package/src/modifiers/includes.test.ts +64 -0
  189. package/src/modifiers/includes.ts +35 -0
  190. package/src/modifiers/index.ts +17 -0
  191. package/src/modifiers/integer.test.ts +45 -0
  192. package/src/modifiers/integer.ts +18 -0
  193. package/src/modifiers/ip.test.ts +34 -0
  194. package/src/modifiers/ip.ts +50 -0
  195. package/src/modifiers/isoDate.test.ts +83 -0
  196. package/src/modifiers/isoDate.ts +51 -0
  197. package/src/modifiers/length.test.ts +107 -0
  198. package/src/modifiers/length.ts +54 -0
  199. package/src/modifiers/multipleOf.test.ts +51 -0
  200. package/src/modifiers/multipleOf.ts +18 -0
  201. package/src/modifiers/oneOf.test.ts +27 -0
  202. package/src/modifiers/oneOf.ts +16 -0
  203. package/src/modifiers/positive.test.ts +64 -0
  204. package/src/modifiers/positive.ts +35 -0
  205. package/src/modifiers/regex.test.ts +40 -0
  206. package/src/modifiers/regex.ts +17 -0
  207. package/src/modifiers/size.test.ts +84 -0
  208. package/src/modifiers/size.ts +37 -0
  209. package/src/modifiers/startsWith.test.ts +40 -0
  210. package/src/modifiers/startsWith.ts +18 -0
  211. package/src/modifiers/url.test.ts +48 -0
  212. package/src/modifiers/url.ts +30 -0
  213. package/src/transformers/case.test.ts +36 -0
  214. package/src/transformers/case.ts +5 -0
  215. package/src/transformers/index.ts +2 -0
  216. package/src/transformers/trim.test.ts +32 -0
  217. package/src/transformers/trim.ts +7 -0
  218. package/src/validators/any.test.ts +11 -0
  219. package/src/validators/any.ts +11 -0
  220. package/src/validators/array.test.ts +46 -0
  221. package/src/validators/array.ts +43 -0
  222. package/src/validators/boolean.test.ts +39 -0
  223. package/src/validators/boolean.ts +34 -0
  224. package/src/validators/date.test.ts +39 -0
  225. package/src/validators/date.ts +26 -0
  226. package/src/validators/enum.test.ts +25 -0
  227. package/src/validators/enum.ts +56 -0
  228. package/src/validators/index.ts +16 -0
  229. package/src/validators/intersection.test.ts +35 -0
  230. package/src/validators/intersection.ts +24 -0
  231. package/src/validators/literal.test.ts +42 -0
  232. package/src/validators/literal.ts +26 -0
  233. package/src/validators/null.test.ts +39 -0
  234. package/src/validators/null.ts +18 -0
  235. package/src/validators/nullable.test.ts +34 -0
  236. package/src/validators/nullable.ts +16 -0
  237. package/src/validators/number.test.ts +39 -0
  238. package/src/validators/number.ts +23 -0
  239. package/src/validators/object.test.ts +66 -0
  240. package/src/validators/object.ts +66 -0
  241. package/src/validators/optional.test.ts +33 -0
  242. package/src/validators/optional.ts +16 -0
  243. package/src/validators/record.test.ts +56 -0
  244. package/src/validators/record.ts +56 -0
  245. package/src/validators/string.test.ts +39 -0
  246. package/src/validators/string.ts +30 -0
  247. package/src/validators/union.test.ts +73 -0
  248. package/src/validators/union.ts +38 -0
  249. package/src/validators/void.ts +6 -0
  250. package/tsconfig.json +9 -0
@@ -0,0 +1,2 @@
1
+ function e(){return e=Object.assign?Object.assign.bind():function(e){for(var u=1;u<arguments.length;u++){var l=arguments[u];for(var i in l)({}).hasOwnProperty.call(l,i)&&(e[i]=l[i])}return e},e.apply(null,arguments)}let u=e=>{var l;return{examples:null!=(l=e.examples)?l:[],items:e.items?Array.isArray(e.items)?e.items.map(u):[u(e.items)]:void 0,properties:e.properties?Object.fromEntries(Object.entries(e.properties).filter(([e,u])=>!u.hidden).map(([e,l])=>[e,u(l)])):void 0,type:e.type,name:e.name,description:e.description,optional:!!e.optional,nullable:!!e.nullable}};var l={__proto__:null,introspectType:u};let i=e=>({success:!0,value:e}),a=e=>({success:!1,errors:e});var n={__proto__:null,success:i,error:a};let t=(e,u)=>l=>{var n;return{validate:e=>{try{let n=null!=l&&l.preprocessors&&null!=l&&l.preprocessors.length?((e,u)=>e.reduce((e,u)=>u(e),u))(null==l?void 0:l.preprocessors,e):e,t=u(null!=l?l:{},n);if(!t.success)return t;let r=null!=l&&l.modifiers&&null!=l&&l.modifiers.length?((e,u)=>e.reduce((e,l)=>e.concat(l(u)),[]))(null==l?void 0:l.modifiers,n):[];return r.length?a(r):i(null!=l&&l.transformers&&null!=l&&l.transformers.length?((e,u)=>e.reduce((e,u)=>u(e),u))(null==l?void 0:l.transformers,t.value):t.value)}catch(e){var n;return a([{code:"invalid_type",message:null!=(n=null==l?void 0:l.message)?n:"Unable to validate value"}])}},examples:null!=(n=null==l?void 0:l.examples)?n:[],type:e,name:null==l?void 0:l.name,description:null==l?void 0:l.description,hidden:!(null==l||!l.hidden)}};var r={__proto__:null,createValidator:t};let s=/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,d=/^[\w+-]+(?:\.[\w+-]+)*@[A-Z0-9]+(?:(?:\.|-)[A-Z0-9]+)*\.[A-Z]{2,}$/i,o=/^((?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCCF\uDCD0\uDCF6-\uDCFF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDAE-\uDDE5\uDE01-\uDE0F\uDE1A\uDE2F\uDE32-\uDE3A\uDE3C-\uDE3F\uDE49-\uDE5F\uDE66-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFA]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDEE5\uDEE9\uDEEB-\uDEF0\uDEF3-\uDEFF\uDFDA-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCBC-\uDCBF\uDCC2-\uDCCF\uDCD9-\uDCFF\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE58-\uDE5F\uDE6E-\uDEFF]|\uD83F[\uDC00-\uDFFD])|(?:[#\*0-9\u200D\u20E3\uFE0F]|\uD83C[\uDDE6-\uDDFF\uDFFB-\uDFFF]|\uD83E[\uDDB0-\uDDB3]|\uDB40[\uDC20-\uDC7F]))+$/,v=/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/,c=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,D=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])$/,p=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])T(0[0-9]|1\d|2[0-3]):[0-5]\d$/,m=/^(0[0-9]|1\d|2[0-3]):[0-5]\d$/;var g={__proto__:null,color:e=>u=>{var l;return s.test(u)?[]:[{code:"invalid_color",message:null!=(l=null==e?void 0:e.message)?l:"Invalid color"}]},email:e=>u=>{var l;return d.test(u)?[]:[{code:"invalid_email",message:null!=(l=null==e?void 0:e.message)?l:"Invalid email address"}]},emoji:e=>u=>{var l;return o.test(u)?[]:[{code:"invalid_emoji",message:null!=(l=null==e?void 0:e.message)?l:"Invalid emoji"}]},endsWith:(e,u)=>l=>{var i;return l.endsWith(e)?[]:[{code:"invalid_suffix",message:null!=(i=null==u?void 0:u.message)?i:`Invalid suffix, expected ${e}`,expected:e,received:l}]},equals:(e,u)=>l=>{var i;return l!==e?[{code:"invalid_equals",message:null!=(i=null==u?void 0:u.message)?i:`Invalid value, expected ${e}`,expected:e,received:l}]:[]},notEquals:(e,u)=>l=>{var i;return l===e?[{code:"invalid_not_equals",message:null!=(i=null==u?void 0:u.message)?i:`Invalid value, expected not ${e}`,expected:e,received:l}]:[]},includes:(e,u)=>l=>{var i;return l.includes(e)?[]:[{code:"invalid_includes",message:null!=(i=null==u?void 0:u.message)?i:`Invalid substring, expected ${e}`,expected:e,received:l}]},notIncludes:(e,u)=>l=>{var i;return l.includes(e)?[{code:"invalid_not_includes",message:null!=(i=null==u?void 0:u.message)?i:`Invalid substring, expected not ${e}`,expected:e,received:l}]:[]},integer:e=>u=>{var l;return Number.isInteger(u)?[]:[{code:"invalid_integer",message:null!=(l=null==e?void 0:e.message)?l:"Invalid value, expected integer",expected:u,received:u}]},ip:e=>u=>{var l;return v.test(u)||c.test(u)?[]:[{code:"invalid_ip",message:null!=(l=null==e?void 0:e.message)?l:"Invalid ip address"}]},ipV4:e=>u=>{var l;return v.test(u)?[]:[{code:"invalid_ip_v4",message:null!=(l=null==e?void 0:e.message)?l:"Invalid ip v4 address"}]},ipV6:e=>u=>{var l;return c.test(u)?[]:[{code:"invalid_ip_v6",message:null!=(l=null==e?void 0:e.message)?l:"Invalid ip v6 address"}]},isoDate:e=>u=>{var l;return D.test(u)?[]:[{code:"invalid_iso_date",message:null!=(l=null==e?void 0:e.message)?l:"Invalid iso date"}]},isoDateTime:e=>u=>{var l;return p.test(u)?[]:[{code:"invalid_iso_date_time",message:null!=(l=null==e?void 0:e.message)?l:"Invalid iso date time"}]},isoTime:e=>u=>{var l;return m.test(u)?[]:[{code:"invalid_iso_time",message:null!=(l=null==e?void 0:e.message)?l:"Invalid iso time"}]},length:e=>u=>u.length!==e?[{code:"invalid_length",message:`Invalid length, expected ${e}`,expected:e,received:u.length}]:[],minLength:(e,u)=>l=>{var i;return l.length<e?[{code:"invalid_min_length",message:null!=(i=null==u?void 0:u.message)?i:`Invalid min length, expected ${e}`,expected:e,received:l.length,min:e}]:[]},maxLength:(e,u)=>l=>{var i;return l.length>e?[{code:"invalid_max_length",message:null!=(i=null==u?void 0:u.message)?i:`Invalid max length, expected ${e}`,expected:e,received:l.length,max:e}]:[]},multipleOf:(e,u)=>l=>{var i;return l%e!==0?[{code:"invalid_multiple_of",message:null!=(i=null==u?void 0:u.message)?i:`Invalid multiple of ${e}, expected ${l}`,received:l,multipleOf:e}]:[]},oneOf:(e,u)=>l=>{var i;return e.includes(l)?[]:[{code:"invalid_value",message:null!=(i=null==u?void 0:u.message)?i:`Value must be one of: ${e.join(", ")}`}]},positive:e=>u=>{var l;return u<=0?[{code:"invalid_positive",message:null!=(l=null==e?void 0:e.message)?l:`Invalid positive, expected ${u}`,received:u,positive:!0}]:[]},negative:e=>u=>{var l;return u>=0?[{code:"invalid_negative",message:null!=(l=null==e?void 0:e.message)?l:`Invalid negative, expected ${u}`,received:u,negative:!0}]:[]},regex:(e,u)=>l=>{var i;return e.test(l)?[]:[{code:"invalid_regex",message:null!=(i=null==u?void 0:u.message)?i:`Invalid regex, expected ${e}`,received:l}]},minValue:(e,u)=>l=>{var i;return l<e?[{code:"invalid_min",message:null!=(i=null==u?void 0:u.message)?i:`Invalid min, expected ${e}`,expected:e,received:l,min:e}]:[]},maxValue:(e,u)=>l=>{var i;return l>e?[{code:"invalid_max",message:null!=(i=null==u?void 0:u.message)?i:`Invalid max, expected ${e}`,expected:e,received:l,max:e}]:[]},startsWith:(e,u)=>l=>{var i;return l.startsWith(e)?[]:[{code:"invalid_prefix",message:null!=(i=null==u?void 0:u.message)?i:`Invalid prefix, expected ${e}`,expected:e,received:l}]},url:e=>u=>{try{let i=new URL(u);var l;return null!=e&&e.hostnames&&!e.hostnames.includes(i.hostname)?[{code:"invalid_hostname",message:null!=(l=null==e?void 0:e.message)?l:"Invalid hostname",expected:null==e?void 0:e.hostnames,received:i.hostname}]:[]}catch(l){var i;return[{code:"invalid_url",message:null!=(i=null==e?void 0:e.message)?i:"Invalid URL",received:u}]}}},F={__proto__:null,any:t("any",(e,u)=>({success:!0,value:u})),typedAny:e=>t(e,(e,u)=>({success:!0,value:u}))(),array:(u,l)=>({type:"array",items:u,name:null==l?void 0:l.name,description:null==l?void 0:l.description,examples:Array.isArray(u.examples)?u.examples.map(e=>[e,e]):void 0,validate:l=>{if(!Array.isArray(l))return a([{code:"invalid_type",message:"Invalid input, expected array, received "+typeof l,received:typeof l,expected:"array"}]);let n=[];for(let[i,t]of l.entries()){let l=u.validate(t);if(!l.success)return a(l.errors.map(u=>{var l;return e({},u,{path:[i.toString(),...null!=(l=u.path)?l:[]]})}));n.push(l.value)}return i(n)}}),boolean:t("boolean",(e,u)=>{let l;var i;return"string"==typeof u?"true"==u?l=!0:"false"==u&&(l=!1):"boolean"==typeof u&&(l=u),void 0===l?a([{code:"invalid_type",message:null!=(i=e.message)?i:"Invalid input, expected a boolean, received "+typeof u,received:typeof u,expected:"boolean"}]):{success:!0,value:l}}),date:t("date",(e,u)=>{if("string"==typeof u){let e=new Date(u);isNaN(e.getTime())||(u=e)}var l;return u instanceof Date?{success:!0,value:u}:a([{code:"invalid_type",message:null!=(l=e.message)?l:"Invalid input, expected a date, received "+typeof u,received:typeof u,expected:"date"}])}),enumOf:(e,u)=>({type:"enum",examples:e,name:null==u?void 0:u.name,description:null==u?void 0:u.description,validate:u=>e.includes(u)?{success:!0,value:u}:a([{code:"invalid_enum",message:`Invalid input, expected one of ${e.join(", ")}, received ${u}`,received:u,expected:e}])}),intersection:(u,l)=>({type:"intersection",name:null==l?void 0:l.name,items:u,description:null==l?void 0:l.description,examples:[],validate:l=>{let i={};for(let a of u){let u=a.validate(l);if(!u.success)return u;i=e({},i,u.value)}return{success:!0,value:i}}}),literal:(e,u)=>({type:"literal",examples:[e],name:null==u?void 0:u.name,description:null==u?void 0:u.description,validate:l=>{var i;return l!=e?a([{code:"invalid_literal",message:null!=(i=null==u?void 0:u.message)?i:`Invalid input, expected ${e}, received ${l}`,received:l,expected:e}]):{success:!0,value:e}}}),nullValue:t("null",(e,u)=>{var l;return null!==u?a([{code:"invalid_type",message:null!=(l=e.message)?l:"Invalid input, expected null, received "+typeof u,received:typeof u,expected:"null"}]):{success:!0,value:null}}),nullable:u=>e({},u,{nullable:!0,validate:e=>null===e?{success:!0,value:e}:u.validate(e)}),number:t("number",(e,u)=>{let l="string"==typeof u?parseFloat(u):u;var i;return"number"!=typeof l||isNaN(l)?a([{code:"invalid_type",message:null!=(i=e.message)?i:"Invalid input, expected number, received "+typeof u,received:typeof u,expected:"number"}]):{success:!0,value:l}}),object:(u,l)=>({type:"object",name:null==l?void 0:l.name,description:null==l?void 0:l.description,properties:u,examples:[Object.fromEntries(Object.entries(u).map(([e,u])=>{var l;let i=null==(l=u.examples)?void 0:l[0];return void 0===i&&u.nullable?null:[e,i]}).filter(e=>null!==e))],validate:l=>{if("object"!=typeof l||null===l||Array.isArray(l))return a([{code:"invalid_type",message:"Invalid input, expected object, received "+typeof l,received:Array.isArray(l)?"array":typeof l,expected:"object"}]);let n={};for(let[i,t]of Object.entries(u)){let u=t.validate(l[i]);if(!u.success)return a(u.errors.map(u=>{var l;return e({},u,{path:[i,...null!=(l=u.path)?l:[]]})}));n[i]=u.value}return i(n)}}),optional:u=>e({},u,{optional:!0,validate:e=>void 0===e?{success:!0,value:e}:u.validate(e)}),record:(u,l)=>({type:"record",items:u,name:null==l?void 0:l.name,description:null==l?void 0:l.description,examples:Array.isArray(u.examples)?[{key1:u.examples[0]}]:void 0,validate:l=>{if("object"!=typeof l||null===l||Array.isArray(l))return a([{code:"invalid_type",message:"Invalid input, expected object",received:l,expected:"object"}]);let n={};for(let[i,t]of Object.entries(l)){if("string"!=typeof i)return a([{code:"invalid_type",message:"Invalid input, expected object with string keys, received "+typeof i,received:i,expected:"string"}]);let l=u.validate(t);if(!l.success)return a(l.errors.map(u=>{var l;return e({},u,{path:[i,...null!=(l=u.path)?l:[]]})}));n[i]=l.value}return i(n)}}),string:t("string",(e,u)=>{var l;return"string"!=typeof u?a([{code:"invalid_type",message:null!=(l=e.message)?l:"Invalid input, expected string, received "+typeof u,received:typeof u,expected:"string"}]):u.length>1e5?a([{code:"max_length",message:"Input is too long"}]):{success:!0,value:u}}),union:(e,u)=>({type:"union",name:null==u?void 0:u.name,items:e,description:null==u?void 0:u.description,examples:e.flatMap(e=>e.examples||[]),validate:u=>{let l=[];for(let i of e){let e=i.validate(u);if(e.success)return e;l.push(...e.errors)}return a(l)}}),voidType:t("void",(e,u)=>({success:!0,value:void 0}))};let f=e({},g,l,{__proto__:null,upperCase:e=>e.toUpperCase(),lowerCase:e=>e.toLowerCase(),trim:e=>e.trim(),trimStart:e=>e.trimStart(),trimEnd:e=>e.trimEnd()},F,n,r);export{u as introspectType,f as v};
2
+ //# sourceMappingURL=index.modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.js","sources":["../src/lib/introspect.ts","../src/lib/result.ts","../src/lib/validator.ts","../src/modifiers/color.ts","../src/modifiers/email.ts","../src/modifiers/emoji.ts","../src/modifiers/ip.ts","../src/modifiers/isoDate.ts","../src/modifiers/endsWith.ts","../src/modifiers/equals.ts","../src/modifiers/includes.ts","../src/modifiers/integer.ts","../src/modifiers/length.ts","../src/modifiers/multipleOf.ts","../src/modifiers/oneOf.ts","../src/modifiers/positive.ts","../src/modifiers/regex.ts","../src/modifiers/size.ts","../src/modifiers/startsWith.ts","../src/modifiers/url.ts","../src/validators/any.ts","../src/validators/array.ts","../src/validators/boolean.ts","../src/validators/date.ts","../src/validators/enum.ts","../src/validators/intersection.ts","../src/validators/literal.ts","../src/validators/null.ts","../src/validators/nullable.ts","../src/validators/number.ts","../src/validators/object.ts","../src/validators/optional.ts","../src/validators/record.ts","../src/validators/string.ts","../src/validators/union.ts","../src/validators/void.ts","../src/index.ts","../src/transformers/case.ts","../src/transformers/trim.ts"],"sourcesContent":["import { ValidationType } from './types';\n\nexport interface IntrospectedType {\n examples: any[];\n items?: IntrospectedType[];\n properties?: Record<string, IntrospectedType>;\n type: string;\n name?: string;\n description?: string;\n optional: boolean;\n nullable: boolean;\n}\n\nexport let introspectType = (type: ValidationType<any>): IntrospectedType => ({\n examples: type.examples ?? [],\n items: type.items\n ? Array.isArray(type.items)\n ? type.items.map(introspectType)\n : [introspectType(type.items)]\n : undefined,\n properties: type.properties\n ? Object.fromEntries(\n Object.entries(type.properties)\n .filter(([_, v]) => !v.hidden)\n .map(([key, value]) => [key, introspectType(value)])\n )\n : undefined,\n type: type.type,\n name: type.name,\n description: type.description,\n optional: !!type.optional,\n nullable: !!type.nullable\n});\n","import { ValidationError, ValidationResult } from './types';\n\nexport let success = <T>(value: T): ValidationResult<T> => ({\n success: true,\n value\n});\n\nexport let error = (errors: ValidationError[]): ValidationResult<any> => ({\n success: false,\n errors\n});\n","import { error, success } from './result';\nimport {\n Preprocessor,\n Transformer,\n ValidationError,\n ValidationModifier,\n ValidationResult,\n ValidationType,\n ValidatorOptions\n} from './types';\n\nlet preprocess = (preprocessors: Preprocessor[], value: any) => {\n return preprocessors.reduce((val, fn) => fn(val), value);\n};\n\nlet modify = <T>(modifiers: ValidationModifier<T>[], value: T) => {\n return modifiers.reduce((errors, fn) => errors.concat(fn(value)), [] as ValidationError[]);\n};\n\nlet transform = <T>(transformers: Transformer<T>[], value: T) => {\n return transformers.reduce((val, fn) => fn(val), value);\n};\n\nexport let createValidator =\n <Type, Opts extends ValidatorOptions<Type>>(\n type: string,\n handler: (opts: Opts, value: any) => ValidationResult<Type>\n ) =>\n (opts?: Opts): ValidationType<Type> => ({\n validate: rawValue => {\n try {\n let value =\n !opts?.preprocessors || !opts?.preprocessors.length\n ? rawValue\n : preprocess(opts?.preprocessors, rawValue);\n\n let handlerRes = handler(opts ?? ({} as any), value);\n if (!handlerRes.success) return handlerRes;\n\n let modifierErrors =\n !opts?.modifiers || !opts?.modifiers.length ? [] : modify(opts?.modifiers, value);\n if (modifierErrors.length) return error(modifierErrors);\n\n return success(\n !opts?.transformers || !opts?.transformers.length\n ? handlerRes.value\n : transform(opts?.transformers, handlerRes.value)\n );\n } catch (err) {\n return error([\n {\n code: 'invalid_type',\n message: opts?.message ?? 'Unable to validate value'\n }\n ]);\n }\n },\n examples: opts?.examples ?? [],\n type,\n name: opts?.name,\n description: opts?.description,\n hidden: !!opts?.hidden\n });\n","import { ValidationModifier } from '../lib/types';\n\nlet colorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\nexport let color =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!colorRegex.test(value)) {\n return [\n {\n code: 'invalid_color',\n message: opts?.message ?? 'Invalid color'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emailRegex = /^[\\w+-]+(?:\\.[\\w+-]+)*@[A-Z0-9]+(?:(?:\\.|-)[A-Z0-9]+)*\\.[A-Z]{2,}$/i;\n\nexport let email =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emailRegex.test(value)) {\n return [\n {\n code: 'invalid_email',\n message: opts?.message ?? 'Invalid email address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\n\nexport let emoji =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emojiRegex.test(value)) {\n return [\n {\n code: 'invalid_emoji',\n message: opts?.message ?? 'Invalid emoji'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet ipV4Regex = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$/;\nlet ipV6Regex =\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\n\nexport let ip =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value) && !ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip',\n message: opts?.message ?? 'Invalid ip address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV4 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v4',\n message: opts?.message ?? 'Invalid ip v4 address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV6 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v6',\n message: opts?.message ?? 'Invalid ip v6 address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet isoDateRegex = /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])$/;\nlet isoDateTimeRegex =\n /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])T(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\nlet isoTimeRegex = /^(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\n\nexport let isoDate =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date',\n message: opts?.message ?? 'Invalid iso date'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoDateTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date_time',\n message: opts?.message ?? 'Invalid iso date time'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_time',\n message: opts?.message ?? 'Invalid iso time'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let endsWith =\n (suffix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.endsWith(suffix)) {\n return [\n {\n code: 'invalid_suffix',\n message: opts?.message ?? `Invalid suffix, expected ${suffix}`,\n expected: suffix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let equals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value !== expected) {\n return [\n {\n code: 'invalid_equals',\n message: opts?.message ?? `Invalid value, expected ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notEquals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value === expected) {\n return [\n {\n code: 'invalid_not_equals',\n message: opts?.message ?? `Invalid value, expected not ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let includes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.includes(substring)) {\n return [\n {\n code: 'invalid_includes',\n message: opts?.message ?? `Invalid substring, expected ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notIncludes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (value.includes(substring)) {\n return [\n {\n code: 'invalid_not_includes',\n message: opts?.message ?? `Invalid substring, expected not ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let integer =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (!Number.isInteger(value)) {\n return [\n {\n code: 'invalid_integer',\n message: opts?.message ?? `Invalid value, expected integer`,\n expected: value,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let length =\n (length: number): ValidationModifier<string> =>\n value => {\n if (value.length !== length) {\n return [\n {\n code: 'invalid_length',\n message: `Invalid length, expected ${length}`,\n expected: length,\n received: value.length\n }\n ];\n }\n\n return [];\n };\n\nexport let minLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length < length) {\n return [\n {\n code: 'invalid_min_length',\n message: opts?.message ?? `Invalid min length, expected ${length}`,\n expected: length,\n received: value.length,\n min: length\n }\n ];\n }\n\n return [];\n };\n\nexport let maxLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length > length) {\n return [\n {\n code: 'invalid_max_length',\n message: opts?.message ?? `Invalid max length, expected ${length}`,\n expected: length,\n received: value.length,\n max: length\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let multipleOf =\n (multi: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value % multi !== 0) {\n return [\n {\n code: 'invalid_multiple_of',\n message: opts?.message ?? `Invalid multiple of ${multi}, expected ${value}`,\n received: value,\n multipleOf: multi\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let oneOf =\n (allowed: string[], opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!allowed.includes(value)) {\n return [\n {\n code: 'invalid_value',\n message: opts?.message ?? `Value must be one of: ${allowed.join(', ')}`\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let positive =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value <= 0) {\n return [\n {\n code: 'invalid_positive',\n message: opts?.message ?? `Invalid positive, expected ${value}`,\n received: value,\n positive: true\n }\n ];\n }\n\n return [];\n };\n\nexport let negative =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value >= 0) {\n return [\n {\n code: 'invalid_negative',\n message: opts?.message ?? `Invalid negative, expected ${value}`,\n received: value,\n negative: true\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let regex =\n (pattern: RegExp, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!pattern.test(value)) {\n return [\n {\n code: 'invalid_regex',\n message: opts?.message ?? `Invalid regex, expected ${pattern}`,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let minValue =\n (min: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value < min) {\n return [\n {\n code: 'invalid_min',\n message: opts?.message ?? `Invalid min, expected ${min}`,\n expected: min,\n received: value,\n min\n }\n ];\n }\n\n return [];\n };\n\nexport let maxValue =\n (max: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value > max) {\n return [\n {\n code: 'invalid_max',\n message: opts?.message ?? `Invalid max, expected ${max}`,\n expected: max,\n received: value,\n max\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let startsWith =\n (prefix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.startsWith(prefix)) {\n return [\n {\n code: 'invalid_prefix',\n message: opts?.message ?? `Invalid prefix, expected ${prefix}`,\n expected: prefix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let url =\n (opts?: { message?: string; hostnames?: string[] }): ValidationModifier<string> =>\n value => {\n try {\n let url = new URL(value);\n\n if (opts?.hostnames && !opts.hostnames.includes(url.hostname)) {\n return [\n {\n code: 'invalid_hostname',\n message: opts?.message ?? `Invalid hostname`,\n expected: opts?.hostnames,\n received: url.hostname\n }\n ];\n }\n\n return [];\n } catch (err) {\n return [\n {\n code: 'invalid_url',\n message: opts?.message ?? `Invalid URL`,\n received: value\n }\n ];\n }\n };\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let any = createValidator<any, ValidatorOptions<any>>('any', (opts, value) => {\n return { success: true, value };\n});\n\nexport let typedAny = <T>(name: string) =>\n createValidator<T, ValidatorOptions<T>>(name, (opts, value) => {\n return { success: true, value };\n })();\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let array = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<ValidationTypeValue<Validator>[]>\n): ValidationType<ValidationTypeValue<Validator>[]> => ({\n type: 'array',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? validator.examples.map(v => [v, v])\n : undefined,\n validate: value => {\n if (!Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected array, received ${typeof value}`,\n received: typeof value,\n expected: 'array'\n }\n ]);\n }\n\n let values: ValidationTypeValue<Validator>[] = [];\n\n for (let [key, val] of value.entries()) {\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(\n result.errors.map(e => ({ ...e, path: [key.toString(), ...(e.path ?? [])] }))\n );\n }\n\n values.push(result.value);\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let boolean = createValidator<boolean, ValidatorOptions<boolean>>(\n 'boolean',\n (opts, value) => {\n let serializedValue: boolean | undefined;\n\n if (typeof value == 'string') {\n if (value == 'true') {\n serializedValue = true;\n } else if (value == 'false') {\n serializedValue = false;\n }\n } else if (typeof value == 'boolean') {\n serializedValue = value;\n }\n\n if (serializedValue === undefined) {\n return error([\n {\n code: 'invalid_type',\n message:\n opts.message ?? `Invalid input, expected a boolean, received ${typeof value}`,\n received: typeof value,\n expected: 'boolean'\n }\n ]);\n }\n\n return { success: true, value: serializedValue };\n }\n);\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let date = createValidator<Date, ValidatorOptions<Date>>('date', (opts, value) => {\n if (typeof value === 'string') {\n let date = new Date(value);\n\n if (!isNaN(date.getTime())) {\n value = date;\n }\n }\n\n if (!(value instanceof Date)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected a date, received ${typeof value}`,\n received: typeof value,\n expected: 'date'\n }\n ]);\n }\n\n return { success: true, value };\n});\n","import { error } from '../lib/result';\nimport { ValidationType } from '../lib/types';\n\n// export let enumType = <\n// A extends string | number | boolean,\n// Rest extends (string | number | boolean)[]\n// >(\n// ...values: [A, ...Rest]\n// ): ValidationType<A | Rest[number]> => ({\n// type: 'enum',\n// examples: values,\n// validate: value => {\n// if (!values.includes(value)) {\n// return error([\n// {\n// code: 'invalid_enum',\n// message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n// received: value,\n// expected: values\n// }\n// ]);\n// }\n\n// return { success: true, value };\n// }\n// });\n\nexport let enumOf = <\n const A extends string | number | boolean,\n Rest extends (string | number | boolean)[]\n>(\n values: [A, ...Rest],\n opts?: {\n name?: string;\n description?: string;\n }\n): ValidationType<A | Rest[number]> => ({\n type: 'enum',\n examples: values,\n name: opts?.name,\n description: opts?.description,\n validate: value => {\n if (!values.includes(value)) {\n return error([\n {\n code: 'invalid_enum',\n message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n received: value,\n expected: values\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let intersection = <A extends ValidationType<object>, B extends ValidationType<object>>(\n validators: [A, B],\n opts?: ValidatorOptions<ValidationTypeValue<A> & ValidationTypeValue<B>>\n): ValidationType<ValidationTypeValue<A> & ValidationTypeValue<B>> => ({\n type: 'intersection',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: [],\n validate: value => {\n let fullValue: any = {};\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (!result.success) return result;\n\n fullValue = { ...fullValue, ...result.value };\n }\n\n return { success: true, value: fullValue };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidationType, ValidatorOptions } from '../lib/types';\n\nexport let literal = <A extends string | number | boolean>(\n value: A,\n opts?: ValidatorOptions<A>\n): ValidationType<A> => ({\n type: 'literal',\n examples: [value],\n name: opts?.name,\n description: opts?.description,\n validate: input => {\n if (input != value) {\n return error([\n {\n code: 'invalid_literal',\n message: opts?.message ?? `Invalid input, expected ${value}, received ${input}`,\n received: input,\n expected: value\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let nullValue = createValidator<null, ValidatorOptions<null>>('null', (opts, value) => {\n if (value !== null) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected null, received ${typeof value}`,\n received: typeof value,\n expected: 'null'\n }\n ]);\n }\n\n return { success: true, value: null };\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let nullable = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | null> => ({\n ...validator,\n\n nullable: true,\n validate: value => {\n if (value === null) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let number = createValidator<number, ValidatorOptions<number>>(\n 'number',\n (opts, value) => {\n let number = typeof value == 'string' ? parseFloat(value) : value;\n\n if (typeof number != 'number' || isNaN(number)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected number, received ${typeof value}`,\n received: typeof value,\n expected: 'number'\n }\n ]);\n }\n\n return { success: true, value: number };\n }\n);\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\ntype KeysWhichExtend<T, SelectedType> = {\n [key in keyof T]: SelectedType extends T[key] ? key : never;\n}[keyof T];\ntype Optional<T> = Partial<Pick<T, KeysWhichExtend<T, undefined>>>;\ntype Required<T> = Omit<T, KeysWhichExtend<T, undefined>>;\nexport type UndefinedIsOptional<T> = Optional<T> & Required<T>;\n\nexport let object = <Validator extends { [key: string]: ValidationType<any> }>(\n shape: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<\n UndefinedIsOptional<{\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n }>\n> => ({\n type: 'object',\n name: opts?.name,\n description: opts?.description,\n properties: shape,\n examples: [\n Object.fromEntries(\n Object.entries(shape)\n .map(([key, validator]) => {\n let example = validator.examples?.[0];\n // For nullable fields, if there's no example, don't include it\n // This prevents undefined from becoming {} in Object.fromEntries\n if (example === undefined && validator.nullable) {\n return null; // Will be filtered out\n }\n return [key, example];\n })\n .filter((entry): entry is [string, any] => entry !== null)\n )\n ] as any,\n validate: value => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object, received ${typeof value}`,\n received: Array.isArray(value) ? 'array' : typeof value,\n expected: 'object'\n }\n ]);\n }\n\n let values: {\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n } = {} as any;\n\n for (let [key, validator] of Object.entries(shape)) {\n let result = validator.validate(value[key]);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key as keyof Validator] = result.value;\n }\n\n return success(values);\n }\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let optional = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | undefined> => ({\n ...validator,\n\n optional: true,\n validate: value => {\n if (value === undefined) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let record = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<Record<string, ValidationTypeValue<Validator>>> => ({\n type: 'record',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? [\n {\n key1: validator.examples[0]\n }\n ]\n : undefined,\n validate: value => {\n if (typeof value != 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object`,\n received: value,\n expected: 'object'\n }\n ]);\n }\n\n let values: Record<string, ValidationTypeValue<Validator>> = {};\n\n for (let [key, val] of Object.entries(value)) {\n if (typeof key != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object with string keys, received ${typeof key}`,\n received: key,\n expected: 'string'\n }\n ]);\n }\n\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key] = result.value;\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let string = createValidator<string, ValidatorOptions<string>>(\n 'string',\n (opts, value) => {\n if (typeof value != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected string, received ${typeof value}`,\n received: typeof value,\n expected: 'string'\n }\n ]);\n }\n\n if (value.length > 100_000) {\n return error([\n {\n code: 'max_length',\n message: 'Input is too long'\n }\n ]);\n }\n\n return { success: true, value };\n }\n);\n","import { error } from '../lib/result';\nimport {\n ValidationError,\n ValidationType,\n ValidationTypeValue,\n ValidatorOptions\n} from '../lib/types';\n\nexport let union = <\n A extends ValidationType<any>,\n B extends ValidationType<any>,\n Rest extends ValidationType<any>[]\n>(\n validators: [A, B, ...Rest],\n opts?: ValidatorOptions<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n >\n): ValidationType<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n> => ({\n type: 'union',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: validators.flatMap(v => v.examples || []),\n validate: value => {\n let errors: ValidationError[] = [];\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (result.success) return result;\n\n errors.push(...result.errors);\n }\n\n return error(errors);\n }\n});\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let voidType = createValidator<void, ValidatorOptions<void>>('void', (opts, value) => {\n return { success: true, value: undefined };\n});\n","// export * from './lib/result';\n// export * from './lib/validator';\n// export * from './modifiers';\n// export * from './transformers';\n// export * from './validators';\n\nexport * from './lib/introspect';\nexport * from './lib/types';\n\nimport * as introspect from './lib/introspect';\nimport * as result from './lib/result';\nimport * as validator from './lib/validator';\nimport * as modifiers from './modifiers';\nimport * as transformers from './transformers';\nimport * as validators from './validators';\n\n// export default {\n// ...modifiers,\n// ...introspect,\n// ...transformers,\n// ...validators,\n// ...result,\n// ...validator\n// };\n\nexport let v = {\n ...modifiers,\n ...introspect,\n ...transformers,\n ...validators,\n ...result,\n ...validator\n};\n","import { Transformer } from '../lib/types';\n\nexport let upperCase: Transformer<string> = value => value.toUpperCase();\n\nexport let lowerCase: Transformer<string> = value => value.toLowerCase();\n","import { Transformer } from '../lib/types';\n\nexport let trim: Transformer<string> = value => value.trim();\n\nexport let trimStart: Transformer<string> = value => value.trimStart();\n\nexport let trimEnd: Transformer<string> = value => value.trimEnd();\n"],"names":["introspectType","type","_type$examples","examples","items","Array","isArray","map","undefined","properties","Object","fromEntries","entries","filter","_","v","hidden","key","value","name","description","optional","nullable","success","error","errors","createValidator","handler","opts","_opts$examples","validate","rawValue","preprocessors","length","preprocess","reduce","val","fn","handlerRes","modifierErrors","modifiers","modify","concat","transformers","transform","err","_opts$message","code","message","colorRegex","emailRegex","emojiRegex","ipV4Regex","ipV6Regex","isoDateRegex","isoDateTimeRegex","isoTimeRegex","test","endsWith","suffix","expected","received","equals","notEquals","_opts$message2","includes","substring","notIncludes","Number","isInteger","_opts$message3","minLength","min","maxLength","max","multipleOf","multi","oneOf","allowed","join","positive","negative","regex","pattern","minValue","maxValue","startsWith","prefix","url","URL","hostnames","hostname","array","validator","values","result","e","_e$path","_extends","path","toString","push","serializedValue","date","Date","isNaN","getTime","enumOf","intersection","validators","fullValue","literal","input","number","parseFloat","object","shape","_validator$examples","example","entry","record","key1","union","flatMap","introspect","toUpperCase","toLowerCase","trim","trimStart","trimEnd"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ function e(e,n){(null==n||n>e.length)&&(n=e.length);for(var u=0,t=Array(n);u<n;u++)t[u]=e[u];return t}function n(n,u){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(n,u){if(n){if("string"==typeof n)return e(n,u);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?e(n,u):void 0}}(n))||u&&n&&"number"==typeof n.length){t&&(n=t);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var u=arguments[n];for(var t in u)({}).hasOwnProperty.call(u,t)&&(e[t]=u[t])}return e},u.apply(null,arguments)}var t=function(e){var n;return{examples:null!=(n=e.examples)?n:[],items:e.items?Array.isArray(e.items)?e.items.map(t):[t(e.items)]:void 0,properties:e.properties?Object.fromEntries(Object.entries(e.properties).filter(function(e){return!e[1].hidden}).map(function(e){return[e[0],t(e[1])]})):void 0,type:e.type,name:e.name,description:e.description,optional:!!e.optional,nullable:!!e.nullable}},r={__proto__:null,introspectType:t},i=function(e){return{success:!0,value:e}},a=function(e){return{success:!1,errors:e}},l={__proto__:null,success:i,error:a},o=function(e,n){return function(u){var t;return{validate:function(e){try{var t=null!=u&&u.preprocessors&&null!=u&&u.preprocessors.length?function(e,n){return e.reduce(function(e,n){return n(e)},n)}(null==u?void 0:u.preprocessors,e):e,r=n(null!=u?u:{},t);if(!r.success)return r;var l=null!=u&&u.modifiers&&null!=u&&u.modifiers.length?function(e,n){return e.reduce(function(e,u){return e.concat(u(n))},[])}(null==u?void 0:u.modifiers,t):[];return l.length?a(l):i(null!=u&&u.transformers&&null!=u&&u.transformers.length?function(e,n){return e.reduce(function(e,n){return n(e)},n)}(null==u?void 0:u.transformers,r.value):r.value)}catch(e){var o;return a([{code:"invalid_type",message:null!=(o=null==u?void 0:u.message)?o:"Unable to validate value"}])}},examples:null!=(t=null==u?void 0:u.examples)?t:[],type:e,name:null==u?void 0:u.name,description:null==u?void 0:u.description,hidden:!(null==u||!u.hidden)}}},s={__proto__:null,createValidator:o},c=/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,d=/^[\w+-]+(?:\.[\w+-]+)*@[A-Z0-9]+(?:(?:\.|-)[A-Z0-9]+)*\.[A-Z]{2,}$/i,v=/^((?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCCF\uDCD0\uDCF6-\uDCFF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDAE-\uDDE5\uDE01-\uDE0F\uDE1A\uDE2F\uDE32-\uDE3A\uDE3C-\uDE3F\uDE49-\uDE5F\uDE66-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFA]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDEE5\uDEE9\uDEEB-\uDEF0\uDEF3-\uDEFF\uDFDA-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCBC-\uDCBF\uDCC2-\uDCCF\uDCD9-\uDCFF\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE58-\uDE5F\uDE6E-\uDEFF]|\uD83F[\uDC00-\uDFFD])|(?:[#\*0-9\u200D\u20E3\uFE0F]|\uD83C[\uDDE6-\uDDFF\uDFFB-\uDFFF]|\uD83E[\uDDB0-\uDDB3]|\uDB40[\uDC20-\uDC7F]))+$/,p=/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/,f=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,D=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])$/,m=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])T(0[0-9]|1\d|2[0-3]):[0-5]\d$/,g=/^(0[0-9]|1\d|2[0-3]):[0-5]\d$/,F={__proto__:null,color:function(e){return function(n){var u;return c.test(n)?[]:[{code:"invalid_color",message:null!=(u=null==e?void 0:e.message)?u:"Invalid color"}]}},email:function(e){return function(n){var u;return d.test(n)?[]:[{code:"invalid_email",message:null!=(u=null==e?void 0:e.message)?u:"Invalid email address"}]}},emoji:function(e){return function(n){var u;return v.test(n)?[]:[{code:"invalid_emoji",message:null!=(u=null==e?void 0:e.message)?u:"Invalid emoji"}]}},endsWith:function(e,n){return function(u){var t;return u.endsWith(e)?[]:[{code:"invalid_suffix",message:null!=(t=null==n?void 0:n.message)?t:"Invalid suffix, expected "+e,expected:e,received:u}]}},equals:function(e,n){return function(u){var t;return u!==e?[{code:"invalid_equals",message:null!=(t=null==n?void 0:n.message)?t:"Invalid value, expected "+e,expected:e,received:u}]:[]}},notEquals:function(e,n){return function(u){var t;return u===e?[{code:"invalid_not_equals",message:null!=(t=null==n?void 0:n.message)?t:"Invalid value, expected not "+e,expected:e,received:u}]:[]}},includes:function(e,n){return function(u){var t;return u.includes(e)?[]:[{code:"invalid_includes",message:null!=(t=null==n?void 0:n.message)?t:"Invalid substring, expected "+e,expected:e,received:u}]}},notIncludes:function(e,n){return function(u){var t;return u.includes(e)?[{code:"invalid_not_includes",message:null!=(t=null==n?void 0:n.message)?t:"Invalid substring, expected not "+e,expected:e,received:u}]:[]}},integer:function(e){return function(n){var u;return Number.isInteger(n)?[]:[{code:"invalid_integer",message:null!=(u=null==e?void 0:e.message)?u:"Invalid value, expected integer",expected:n,received:n}]}},ip:function(e){return function(n){var u;return p.test(n)||f.test(n)?[]:[{code:"invalid_ip",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip address"}]}},ipV4:function(e){return function(n){var u;return p.test(n)?[]:[{code:"invalid_ip_v4",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip v4 address"}]}},ipV6:function(e){return function(n){var u;return f.test(n)?[]:[{code:"invalid_ip_v6",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip v6 address"}]}},isoDate:function(e){return function(n){var u;return D.test(n)?[]:[{code:"invalid_iso_date",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso date"}]}},isoDateTime:function(e){return function(n){var u;return m.test(n)?[]:[{code:"invalid_iso_date_time",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso date time"}]}},isoTime:function(e){return function(n){var u;return g.test(n)?[]:[{code:"invalid_iso_time",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso time"}]}},length:function(e){return function(n){return n.length!==e?[{code:"invalid_length",message:"Invalid length, expected "+e,expected:e,received:n.length}]:[]}},minLength:function(e,n){return function(u){var t;return u.length<e?[{code:"invalid_min_length",message:null!=(t=null==n?void 0:n.message)?t:"Invalid min length, expected "+e,expected:e,received:u.length,min:e}]:[]}},maxLength:function(e,n){return function(u){var t;return u.length>e?[{code:"invalid_max_length",message:null!=(t=null==n?void 0:n.message)?t:"Invalid max length, expected "+e,expected:e,received:u.length,max:e}]:[]}},multipleOf:function(e,n){return function(u){var t;return u%e!==0?[{code:"invalid_multiple_of",message:null!=(t=null==n?void 0:n.message)?t:"Invalid multiple of "+e+", expected "+u,received:u,multipleOf:e}]:[]}},oneOf:function(e,n){return function(u){var t;return e.includes(u)?[]:[{code:"invalid_value",message:null!=(t=null==n?void 0:n.message)?t:"Value must be one of: "+e.join(", ")}]}},positive:function(e){return function(n){var u;return n<=0?[{code:"invalid_positive",message:null!=(u=null==e?void 0:e.message)?u:"Invalid positive, expected "+n,received:n,positive:!0}]:[]}},negative:function(e){return function(n){var u;return n>=0?[{code:"invalid_negative",message:null!=(u=null==e?void 0:e.message)?u:"Invalid negative, expected "+n,received:n,negative:!0}]:[]}},regex:function(e,n){return function(u){var t;return e.test(u)?[]:[{code:"invalid_regex",message:null!=(t=null==n?void 0:n.message)?t:"Invalid regex, expected "+e,received:u}]}},minValue:function(e,n){return function(u){var t;return u<e?[{code:"invalid_min",message:null!=(t=null==n?void 0:n.message)?t:"Invalid min, expected "+e,expected:e,received:u,min:e}]:[]}},maxValue:function(e,n){return function(u){var t;return u>e?[{code:"invalid_max",message:null!=(t=null==n?void 0:n.message)?t:"Invalid max, expected "+e,expected:e,received:u,max:e}]:[]}},startsWith:function(e,n){return function(u){var t;return u.startsWith(e)?[]:[{code:"invalid_prefix",message:null!=(t=null==n?void 0:n.message)?t:"Invalid prefix, expected "+e,expected:e,received:u}]}},url:function(e){return function(n){try{var u,t=new URL(n);return null!=e&&e.hostnames&&!e.hostnames.includes(t.hostname)?[{code:"invalid_hostname",message:null!=(u=null==e?void 0:e.message)?u:"Invalid hostname",expected:null==e?void 0:e.hostnames,received:t.hostname}]:[]}catch(u){var r;return[{code:"invalid_url",message:null!=(r=null==e?void 0:e.message)?r:"Invalid URL",received:n}]}}}},y={__proto__:null,any:o("any",function(e,n){return{success:!0,value:n}}),typedAny:function(e){return o(e,function(e,n){return{success:!0,value:n}})()},array:function(e,t){return{type:"array",items:e,name:null==t?void 0:t.name,description:null==t?void 0:t.description,examples:Array.isArray(e.examples)?e.examples.map(function(e){return[e,e]}):void 0,validate:function(t){if(!Array.isArray(t))return a([{code:"invalid_type",message:"Invalid input, expected array, received "+typeof t,received:typeof t,expected:"array"}]);for(var r,l,o=[],s=function(){var n=l.value,t=n[0],r=e.validate(n[1]);if(!r.success)return{v:a(r.errors.map(function(e){var n;return u({},e,{path:[t.toString()].concat(null!=(n=e.path)?n:[])})}))};o.push(r.value)},c=n(t.entries());!(l=c()).done;)if(r=s())return r.v;return i(o)}}},boolean:o("boolean",function(e,n){var u,t;return"string"==typeof n?"true"==n?u=!0:"false"==n&&(u=!1):"boolean"==typeof n&&(u=n),void 0===u?a([{code:"invalid_type",message:null!=(t=e.message)?t:"Invalid input, expected a boolean, received "+typeof n,received:typeof n,expected:"boolean"}]):{success:!0,value:u}}),date:o("date",function(e,n){if("string"==typeof n){var u=new Date(n);isNaN(u.getTime())||(n=u)}var t;return n instanceof Date?{success:!0,value:n}:a([{code:"invalid_type",message:null!=(t=e.message)?t:"Invalid input, expected a date, received "+typeof n,received:typeof n,expected:"date"}])}),enumOf:function(e,n){return{type:"enum",examples:e,name:null==n?void 0:n.name,description:null==n?void 0:n.description,validate:function(n){return e.includes(n)?{success:!0,value:n}:a([{code:"invalid_enum",message:"Invalid input, expected one of "+e.join(", ")+", received "+n,received:n,expected:e}])}}},intersection:function(e,t){return{type:"intersection",name:null==t?void 0:t.name,items:e,description:null==t?void 0:t.description,examples:[],validate:function(t){for(var r,i={},a=n(e);!(r=a()).done;){var l=r.value.validate(t);if(!l.success)return l;i=u({},i,l.value)}return{success:!0,value:i}}}},literal:function(e,n){return{type:"literal",examples:[e],name:null==n?void 0:n.name,description:null==n?void 0:n.description,validate:function(u){var t;return u!=e?a([{code:"invalid_literal",message:null!=(t=null==n?void 0:n.message)?t:"Invalid input, expected "+e+", received "+u,received:u,expected:e}]):{success:!0,value:e}}}},nullValue:o("null",function(e,n){var u;return null!==n?a([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected null, received "+typeof n,received:typeof n,expected:"null"}]):{success:!0,value:null}}),nullable:function(e){return u({},e,{nullable:!0,validate:function(n){return null===n?{success:!0,value:n}:e.validate(n)}})},number:o("number",function(e,n){var u,t="string"==typeof n?parseFloat(n):n;return"number"!=typeof t||isNaN(t)?a([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected number, received "+typeof n,received:typeof n,expected:"number"}]):{success:!0,value:t}}),object:function(e,n){return{type:"object",name:null==n?void 0:n.name,description:null==n?void 0:n.description,properties:e,examples:[Object.fromEntries(Object.entries(e).map(function(e){var n,u=e[1],t=null==(n=u.examples)?void 0:n[0];return void 0===t&&u.nullable?null:[e[0],t]}).filter(function(e){return null!==e}))],validate:function(n){if("object"!=typeof n||null===n||Array.isArray(n))return a([{code:"invalid_type",message:"Invalid input, expected object, received "+typeof n,received:Array.isArray(n)?"array":typeof n,expected:"object"}]);for(var t,r={},l=function(){var e=s[o],t=e[0],i=e[1].validate(n[t]);if(!i.success)return{v:a(i.errors.map(function(e){var n;return u({},e,{path:[t].concat(null!=(n=e.path)?n:[])})}))};r[t]=i.value},o=0,s=Object.entries(e);o<s.length;o++)if(t=l())return t.v;return i(r)}}},optional:function(e){return u({},e,{optional:!0,validate:function(n){return void 0===n?{success:!0,value:n}:e.validate(n)}})},record:function(e,n){return{type:"record",items:e,name:null==n?void 0:n.name,description:null==n?void 0:n.description,examples:Array.isArray(e.examples)?[{key1:e.examples[0]}]:void 0,validate:function(n){if("object"!=typeof n||null===n||Array.isArray(n))return a([{code:"invalid_type",message:"Invalid input, expected object",received:n,expected:"object"}]);for(var t,r={},l=function(){var n=s[o],t=n[0],i=n[1];if("string"!=typeof t)return{v:a([{code:"invalid_type",message:"Invalid input, expected object with string keys, received "+typeof t,received:t,expected:"string"}])};var l=e.validate(i);if(!l.success)return{v:a(l.errors.map(function(e){var n;return u({},e,{path:[t].concat(null!=(n=e.path)?n:[])})}))};r[t]=l.value},o=0,s=Object.entries(n);o<s.length;o++)if(t=l())return t.v;return i(r)}}},string:o("string",function(e,n){var u;return"string"!=typeof n?a([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected string, received "+typeof n,received:typeof n,expected:"string"}]):n.length>1e5?a([{code:"max_length",message:"Input is too long"}]):{success:!0,value:n}}),union:function(e,u){return{type:"union",name:null==u?void 0:u.name,items:e,description:null==u?void 0:u.description,examples:e.flatMap(function(e){return e.examples||[]}),validate:function(u){for(var t,r=[],i=n(e);!(t=i()).done;){var l=t.value.validate(u);if(l.success)return l;r.push.apply(r,l.errors)}return a(r)}}},voidType:o("void",function(e,n){return{success:!0,value:void 0}})},x=u({},F,r,{__proto__:null,upperCase:function(e){return e.toUpperCase()},lowerCase:function(e){return e.toLowerCase()},trim:function(e){return e.trim()},trimStart:function(e){return e.trimStart()},trimEnd:function(e){return e.trimEnd()}},y,l,s);export{t as introspectType,x as v};
2
+ //# sourceMappingURL=index.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.module.js","sources":["../src/lib/introspect.ts","../src/lib/result.ts","../src/lib/validator.ts","../src/modifiers/color.ts","../src/modifiers/email.ts","../src/modifiers/emoji.ts","../src/modifiers/ip.ts","../src/modifiers/isoDate.ts","../src/modifiers/endsWith.ts","../src/modifiers/equals.ts","../src/modifiers/includes.ts","../src/modifiers/integer.ts","../src/modifiers/length.ts","../src/modifiers/multipleOf.ts","../src/modifiers/oneOf.ts","../src/modifiers/positive.ts","../src/modifiers/regex.ts","../src/modifiers/size.ts","../src/modifiers/startsWith.ts","../src/modifiers/url.ts","../src/validators/any.ts","../src/validators/array.ts","../src/validators/boolean.ts","../src/validators/date.ts","../src/validators/enum.ts","../src/validators/intersection.ts","../src/validators/literal.ts","../src/validators/null.ts","../src/validators/nullable.ts","../src/validators/number.ts","../src/validators/object.ts","../src/validators/optional.ts","../src/validators/record.ts","../src/validators/string.ts","../src/validators/union.ts","../src/validators/void.ts","../src/index.ts","../src/transformers/case.ts","../src/transformers/trim.ts"],"sourcesContent":["import { ValidationType } from './types';\n\nexport interface IntrospectedType {\n examples: any[];\n items?: IntrospectedType[];\n properties?: Record<string, IntrospectedType>;\n type: string;\n name?: string;\n description?: string;\n optional: boolean;\n nullable: boolean;\n}\n\nexport let introspectType = (type: ValidationType<any>): IntrospectedType => ({\n examples: type.examples ?? [],\n items: type.items\n ? Array.isArray(type.items)\n ? type.items.map(introspectType)\n : [introspectType(type.items)]\n : undefined,\n properties: type.properties\n ? Object.fromEntries(\n Object.entries(type.properties)\n .filter(([_, v]) => !v.hidden)\n .map(([key, value]) => [key, introspectType(value)])\n )\n : undefined,\n type: type.type,\n name: type.name,\n description: type.description,\n optional: !!type.optional,\n nullable: !!type.nullable\n});\n","import { ValidationError, ValidationResult } from './types';\n\nexport let success = <T>(value: T): ValidationResult<T> => ({\n success: true,\n value\n});\n\nexport let error = (errors: ValidationError[]): ValidationResult<any> => ({\n success: false,\n errors\n});\n","import { error, success } from './result';\nimport {\n Preprocessor,\n Transformer,\n ValidationError,\n ValidationModifier,\n ValidationResult,\n ValidationType,\n ValidatorOptions\n} from './types';\n\nlet preprocess = (preprocessors: Preprocessor[], value: any) => {\n return preprocessors.reduce((val, fn) => fn(val), value);\n};\n\nlet modify = <T>(modifiers: ValidationModifier<T>[], value: T) => {\n return modifiers.reduce((errors, fn) => errors.concat(fn(value)), [] as ValidationError[]);\n};\n\nlet transform = <T>(transformers: Transformer<T>[], value: T) => {\n return transformers.reduce((val, fn) => fn(val), value);\n};\n\nexport let createValidator =\n <Type, Opts extends ValidatorOptions<Type>>(\n type: string,\n handler: (opts: Opts, value: any) => ValidationResult<Type>\n ) =>\n (opts?: Opts): ValidationType<Type> => ({\n validate: rawValue => {\n try {\n let value =\n !opts?.preprocessors || !opts?.preprocessors.length\n ? rawValue\n : preprocess(opts?.preprocessors, rawValue);\n\n let handlerRes = handler(opts ?? ({} as any), value);\n if (!handlerRes.success) return handlerRes;\n\n let modifierErrors =\n !opts?.modifiers || !opts?.modifiers.length ? [] : modify(opts?.modifiers, value);\n if (modifierErrors.length) return error(modifierErrors);\n\n return success(\n !opts?.transformers || !opts?.transformers.length\n ? handlerRes.value\n : transform(opts?.transformers, handlerRes.value)\n );\n } catch (err) {\n return error([\n {\n code: 'invalid_type',\n message: opts?.message ?? 'Unable to validate value'\n }\n ]);\n }\n },\n examples: opts?.examples ?? [],\n type,\n name: opts?.name,\n description: opts?.description,\n hidden: !!opts?.hidden\n });\n","import { ValidationModifier } from '../lib/types';\n\nlet colorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\nexport let color =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!colorRegex.test(value)) {\n return [\n {\n code: 'invalid_color',\n message: opts?.message ?? 'Invalid color'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emailRegex = /^[\\w+-]+(?:\\.[\\w+-]+)*@[A-Z0-9]+(?:(?:\\.|-)[A-Z0-9]+)*\\.[A-Z]{2,}$/i;\n\nexport let email =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emailRegex.test(value)) {\n return [\n {\n code: 'invalid_email',\n message: opts?.message ?? 'Invalid email address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\n\nexport let emoji =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emojiRegex.test(value)) {\n return [\n {\n code: 'invalid_emoji',\n message: opts?.message ?? 'Invalid emoji'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet ipV4Regex = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$/;\nlet ipV6Regex =\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\n\nexport let ip =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value) && !ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip',\n message: opts?.message ?? 'Invalid ip address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV4 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v4',\n message: opts?.message ?? 'Invalid ip v4 address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV6 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v6',\n message: opts?.message ?? 'Invalid ip v6 address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet isoDateRegex = /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])$/;\nlet isoDateTimeRegex =\n /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])T(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\nlet isoTimeRegex = /^(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\n\nexport let isoDate =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date',\n message: opts?.message ?? 'Invalid iso date'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoDateTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date_time',\n message: opts?.message ?? 'Invalid iso date time'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_time',\n message: opts?.message ?? 'Invalid iso time'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let endsWith =\n (suffix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.endsWith(suffix)) {\n return [\n {\n code: 'invalid_suffix',\n message: opts?.message ?? `Invalid suffix, expected ${suffix}`,\n expected: suffix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let equals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value !== expected) {\n return [\n {\n code: 'invalid_equals',\n message: opts?.message ?? `Invalid value, expected ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notEquals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value === expected) {\n return [\n {\n code: 'invalid_not_equals',\n message: opts?.message ?? `Invalid value, expected not ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let includes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.includes(substring)) {\n return [\n {\n code: 'invalid_includes',\n message: opts?.message ?? `Invalid substring, expected ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notIncludes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (value.includes(substring)) {\n return [\n {\n code: 'invalid_not_includes',\n message: opts?.message ?? `Invalid substring, expected not ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let integer =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (!Number.isInteger(value)) {\n return [\n {\n code: 'invalid_integer',\n message: opts?.message ?? `Invalid value, expected integer`,\n expected: value,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let length =\n (length: number): ValidationModifier<string> =>\n value => {\n if (value.length !== length) {\n return [\n {\n code: 'invalid_length',\n message: `Invalid length, expected ${length}`,\n expected: length,\n received: value.length\n }\n ];\n }\n\n return [];\n };\n\nexport let minLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length < length) {\n return [\n {\n code: 'invalid_min_length',\n message: opts?.message ?? `Invalid min length, expected ${length}`,\n expected: length,\n received: value.length,\n min: length\n }\n ];\n }\n\n return [];\n };\n\nexport let maxLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length > length) {\n return [\n {\n code: 'invalid_max_length',\n message: opts?.message ?? `Invalid max length, expected ${length}`,\n expected: length,\n received: value.length,\n max: length\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let multipleOf =\n (multi: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value % multi !== 0) {\n return [\n {\n code: 'invalid_multiple_of',\n message: opts?.message ?? `Invalid multiple of ${multi}, expected ${value}`,\n received: value,\n multipleOf: multi\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let oneOf =\n (allowed: string[], opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!allowed.includes(value)) {\n return [\n {\n code: 'invalid_value',\n message: opts?.message ?? `Value must be one of: ${allowed.join(', ')}`\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let positive =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value <= 0) {\n return [\n {\n code: 'invalid_positive',\n message: opts?.message ?? `Invalid positive, expected ${value}`,\n received: value,\n positive: true\n }\n ];\n }\n\n return [];\n };\n\nexport let negative =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value >= 0) {\n return [\n {\n code: 'invalid_negative',\n message: opts?.message ?? `Invalid negative, expected ${value}`,\n received: value,\n negative: true\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let regex =\n (pattern: RegExp, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!pattern.test(value)) {\n return [\n {\n code: 'invalid_regex',\n message: opts?.message ?? `Invalid regex, expected ${pattern}`,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let minValue =\n (min: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value < min) {\n return [\n {\n code: 'invalid_min',\n message: opts?.message ?? `Invalid min, expected ${min}`,\n expected: min,\n received: value,\n min\n }\n ];\n }\n\n return [];\n };\n\nexport let maxValue =\n (max: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value > max) {\n return [\n {\n code: 'invalid_max',\n message: opts?.message ?? `Invalid max, expected ${max}`,\n expected: max,\n received: value,\n max\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let startsWith =\n (prefix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.startsWith(prefix)) {\n return [\n {\n code: 'invalid_prefix',\n message: opts?.message ?? `Invalid prefix, expected ${prefix}`,\n expected: prefix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let url =\n (opts?: { message?: string; hostnames?: string[] }): ValidationModifier<string> =>\n value => {\n try {\n let url = new URL(value);\n\n if (opts?.hostnames && !opts.hostnames.includes(url.hostname)) {\n return [\n {\n code: 'invalid_hostname',\n message: opts?.message ?? `Invalid hostname`,\n expected: opts?.hostnames,\n received: url.hostname\n }\n ];\n }\n\n return [];\n } catch (err) {\n return [\n {\n code: 'invalid_url',\n message: opts?.message ?? `Invalid URL`,\n received: value\n }\n ];\n }\n };\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let any = createValidator<any, ValidatorOptions<any>>('any', (opts, value) => {\n return { success: true, value };\n});\n\nexport let typedAny = <T>(name: string) =>\n createValidator<T, ValidatorOptions<T>>(name, (opts, value) => {\n return { success: true, value };\n })();\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let array = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<ValidationTypeValue<Validator>[]>\n): ValidationType<ValidationTypeValue<Validator>[]> => ({\n type: 'array',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? validator.examples.map(v => [v, v])\n : undefined,\n validate: value => {\n if (!Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected array, received ${typeof value}`,\n received: typeof value,\n expected: 'array'\n }\n ]);\n }\n\n let values: ValidationTypeValue<Validator>[] = [];\n\n for (let [key, val] of value.entries()) {\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(\n result.errors.map(e => ({ ...e, path: [key.toString(), ...(e.path ?? [])] }))\n );\n }\n\n values.push(result.value);\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let boolean = createValidator<boolean, ValidatorOptions<boolean>>(\n 'boolean',\n (opts, value) => {\n let serializedValue: boolean | undefined;\n\n if (typeof value == 'string') {\n if (value == 'true') {\n serializedValue = true;\n } else if (value == 'false') {\n serializedValue = false;\n }\n } else if (typeof value == 'boolean') {\n serializedValue = value;\n }\n\n if (serializedValue === undefined) {\n return error([\n {\n code: 'invalid_type',\n message:\n opts.message ?? `Invalid input, expected a boolean, received ${typeof value}`,\n received: typeof value,\n expected: 'boolean'\n }\n ]);\n }\n\n return { success: true, value: serializedValue };\n }\n);\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let date = createValidator<Date, ValidatorOptions<Date>>('date', (opts, value) => {\n if (typeof value === 'string') {\n let date = new Date(value);\n\n if (!isNaN(date.getTime())) {\n value = date;\n }\n }\n\n if (!(value instanceof Date)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected a date, received ${typeof value}`,\n received: typeof value,\n expected: 'date'\n }\n ]);\n }\n\n return { success: true, value };\n});\n","import { error } from '../lib/result';\nimport { ValidationType } from '../lib/types';\n\n// export let enumType = <\n// A extends string | number | boolean,\n// Rest extends (string | number | boolean)[]\n// >(\n// ...values: [A, ...Rest]\n// ): ValidationType<A | Rest[number]> => ({\n// type: 'enum',\n// examples: values,\n// validate: value => {\n// if (!values.includes(value)) {\n// return error([\n// {\n// code: 'invalid_enum',\n// message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n// received: value,\n// expected: values\n// }\n// ]);\n// }\n\n// return { success: true, value };\n// }\n// });\n\nexport let enumOf = <\n const A extends string | number | boolean,\n Rest extends (string | number | boolean)[]\n>(\n values: [A, ...Rest],\n opts?: {\n name?: string;\n description?: string;\n }\n): ValidationType<A | Rest[number]> => ({\n type: 'enum',\n examples: values,\n name: opts?.name,\n description: opts?.description,\n validate: value => {\n if (!values.includes(value)) {\n return error([\n {\n code: 'invalid_enum',\n message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n received: value,\n expected: values\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let intersection = <A extends ValidationType<object>, B extends ValidationType<object>>(\n validators: [A, B],\n opts?: ValidatorOptions<ValidationTypeValue<A> & ValidationTypeValue<B>>\n): ValidationType<ValidationTypeValue<A> & ValidationTypeValue<B>> => ({\n type: 'intersection',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: [],\n validate: value => {\n let fullValue: any = {};\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (!result.success) return result;\n\n fullValue = { ...fullValue, ...result.value };\n }\n\n return { success: true, value: fullValue };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidationType, ValidatorOptions } from '../lib/types';\n\nexport let literal = <A extends string | number | boolean>(\n value: A,\n opts?: ValidatorOptions<A>\n): ValidationType<A> => ({\n type: 'literal',\n examples: [value],\n name: opts?.name,\n description: opts?.description,\n validate: input => {\n if (input != value) {\n return error([\n {\n code: 'invalid_literal',\n message: opts?.message ?? `Invalid input, expected ${value}, received ${input}`,\n received: input,\n expected: value\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let nullValue = createValidator<null, ValidatorOptions<null>>('null', (opts, value) => {\n if (value !== null) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected null, received ${typeof value}`,\n received: typeof value,\n expected: 'null'\n }\n ]);\n }\n\n return { success: true, value: null };\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let nullable = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | null> => ({\n ...validator,\n\n nullable: true,\n validate: value => {\n if (value === null) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let number = createValidator<number, ValidatorOptions<number>>(\n 'number',\n (opts, value) => {\n let number = typeof value == 'string' ? parseFloat(value) : value;\n\n if (typeof number != 'number' || isNaN(number)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected number, received ${typeof value}`,\n received: typeof value,\n expected: 'number'\n }\n ]);\n }\n\n return { success: true, value: number };\n }\n);\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\ntype KeysWhichExtend<T, SelectedType> = {\n [key in keyof T]: SelectedType extends T[key] ? key : never;\n}[keyof T];\ntype Optional<T> = Partial<Pick<T, KeysWhichExtend<T, undefined>>>;\ntype Required<T> = Omit<T, KeysWhichExtend<T, undefined>>;\nexport type UndefinedIsOptional<T> = Optional<T> & Required<T>;\n\nexport let object = <Validator extends { [key: string]: ValidationType<any> }>(\n shape: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<\n UndefinedIsOptional<{\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n }>\n> => ({\n type: 'object',\n name: opts?.name,\n description: opts?.description,\n properties: shape,\n examples: [\n Object.fromEntries(\n Object.entries(shape)\n .map(([key, validator]) => {\n let example = validator.examples?.[0];\n // For nullable fields, if there's no example, don't include it\n // This prevents undefined from becoming {} in Object.fromEntries\n if (example === undefined && validator.nullable) {\n return null; // Will be filtered out\n }\n return [key, example];\n })\n .filter((entry): entry is [string, any] => entry !== null)\n )\n ] as any,\n validate: value => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object, received ${typeof value}`,\n received: Array.isArray(value) ? 'array' : typeof value,\n expected: 'object'\n }\n ]);\n }\n\n let values: {\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n } = {} as any;\n\n for (let [key, validator] of Object.entries(shape)) {\n let result = validator.validate(value[key]);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key as keyof Validator] = result.value;\n }\n\n return success(values);\n }\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let optional = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | undefined> => ({\n ...validator,\n\n optional: true,\n validate: value => {\n if (value === undefined) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let record = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<Record<string, ValidationTypeValue<Validator>>> => ({\n type: 'record',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? [\n {\n key1: validator.examples[0]\n }\n ]\n : undefined,\n validate: value => {\n if (typeof value != 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object`,\n received: value,\n expected: 'object'\n }\n ]);\n }\n\n let values: Record<string, ValidationTypeValue<Validator>> = {};\n\n for (let [key, val] of Object.entries(value)) {\n if (typeof key != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object with string keys, received ${typeof key}`,\n received: key,\n expected: 'string'\n }\n ]);\n }\n\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key] = result.value;\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let string = createValidator<string, ValidatorOptions<string>>(\n 'string',\n (opts, value) => {\n if (typeof value != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected string, received ${typeof value}`,\n received: typeof value,\n expected: 'string'\n }\n ]);\n }\n\n if (value.length > 100_000) {\n return error([\n {\n code: 'max_length',\n message: 'Input is too long'\n }\n ]);\n }\n\n return { success: true, value };\n }\n);\n","import { error } from '../lib/result';\nimport {\n ValidationError,\n ValidationType,\n ValidationTypeValue,\n ValidatorOptions\n} from '../lib/types';\n\nexport let union = <\n A extends ValidationType<any>,\n B extends ValidationType<any>,\n Rest extends ValidationType<any>[]\n>(\n validators: [A, B, ...Rest],\n opts?: ValidatorOptions<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n >\n): ValidationType<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n> => ({\n type: 'union',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: validators.flatMap(v => v.examples || []),\n validate: value => {\n let errors: ValidationError[] = [];\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (result.success) return result;\n\n errors.push(...result.errors);\n }\n\n return error(errors);\n }\n});\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let voidType = createValidator<void, ValidatorOptions<void>>('void', (opts, value) => {\n return { success: true, value: undefined };\n});\n","// export * from './lib/result';\n// export * from './lib/validator';\n// export * from './modifiers';\n// export * from './transformers';\n// export * from './validators';\n\nexport * from './lib/introspect';\nexport * from './lib/types';\n\nimport * as introspect from './lib/introspect';\nimport * as result from './lib/result';\nimport * as validator from './lib/validator';\nimport * as modifiers from './modifiers';\nimport * as transformers from './transformers';\nimport * as validators from './validators';\n\n// export default {\n// ...modifiers,\n// ...introspect,\n// ...transformers,\n// ...validators,\n// ...result,\n// ...validator\n// };\n\nexport let v = {\n ...modifiers,\n ...introspect,\n ...transformers,\n ...validators,\n ...result,\n ...validator\n};\n","import { Transformer } from '../lib/types';\n\nexport let upperCase: Transformer<string> = value => value.toUpperCase();\n\nexport let lowerCase: Transformer<string> = value => value.toLowerCase();\n","import { Transformer } from '../lib/types';\n\nexport let trim: Transformer<string> = value => value.trim();\n\nexport let trimStart: Transformer<string> = value => value.trimStart();\n\nexport let trimEnd: Transformer<string> = value => value.trimEnd();\n"],"names":["introspectType","type","_type$examples","examples","items","Array","isArray","map","undefined","properties","Object","fromEntries","entries","filter","_ref","hidden","_ref2","name","description","optional","nullable","success","value","error","errors","createValidator","handler","opts","_opts$examples","validate","rawValue","preprocessors","length","reduce","val","fn","preprocess","handlerRes","modifierErrors","modifiers","concat","modify","transformers","transform","err","_opts$message","code","message","colorRegex","emailRegex","emojiRegex","ipV4Regex","ipV6Regex","isoDateRegex","isoDateTimeRegex","isoTimeRegex","test","suffix","endsWith","expected","received","_opts$message2","substring","includes","Number","isInteger","_opts$message3","min","max","multi","multipleOf","allowed","join","positive","negative","pattern","prefix","startsWith","url","URL","hostnames","hostname","validator","v","_ret","_step","values","_loop","_step$value","key","result","e","_e$path","_extends","path","toString","push","_iterator","_createForOfIteratorHelperLoose","done","serializedValue","date","Date","isNaN","getTime","validators","fullValue","input","number","parseFloat","shape","_validator$examples","example","entry","_Object$entries$_i","_Object$entries","_i","key1","flatMap","apply","introspect","toUpperCase","toLowerCase","trim","trimStart","trimEnd"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e||self).validation={})}(this,function(e){function n(e,n){(null==n||n>e.length)&&(n=e.length);for(var u=0,t=Array(n);u<n;u++)t[u]=e[u];return t}function u(e,u){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,u){if(e){if("string"==typeof e)return n(e,u);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,u):void 0}}(e))||u&&e&&"number"==typeof e.length){t&&(e=t);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function t(){return t=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var u=arguments[n];for(var t in u)({}).hasOwnProperty.call(u,t)&&(e[t]=u[t])}return e},t.apply(null,arguments)}var i=function(e){var n;return{examples:null!=(n=e.examples)?n:[],items:e.items?Array.isArray(e.items)?e.items.map(i):[i(e.items)]:void 0,properties:e.properties?Object.fromEntries(Object.entries(e.properties).filter(function(e){return!e[1].hidden}).map(function(e){return[e[0],i(e[1])]})):void 0,type:e.type,name:e.name,description:e.description,optional:!!e.optional,nullable:!!e.nullable}},r={__proto__:null,introspectType:i},a=function(e){return{success:!0,value:e}},l=function(e){return{success:!1,errors:e}},o={__proto__:null,success:a,error:l},s=function(e,n){return function(u){var t;return{validate:function(e){try{var t=null!=u&&u.preprocessors&&null!=u&&u.preprocessors.length?function(e,n){return e.reduce(function(e,n){return n(e)},n)}(null==u?void 0:u.preprocessors,e):e,i=n(null!=u?u:{},t);if(!i.success)return i;var r=null!=u&&u.modifiers&&null!=u&&u.modifiers.length?function(e,n){return e.reduce(function(e,u){return e.concat(u(n))},[])}(null==u?void 0:u.modifiers,t):[];return r.length?l(r):a(null!=u&&u.transformers&&null!=u&&u.transformers.length?function(e,n){return e.reduce(function(e,n){return n(e)},n)}(null==u?void 0:u.transformers,i.value):i.value)}catch(e){var o;return l([{code:"invalid_type",message:null!=(o=null==u?void 0:u.message)?o:"Unable to validate value"}])}},examples:null!=(t=null==u?void 0:u.examples)?t:[],type:e,name:null==u?void 0:u.name,description:null==u?void 0:u.description,hidden:!(null==u||!u.hidden)}}},d={__proto__:null,createValidator:s},c=/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,v=/^[\w+-]+(?:\.[\w+-]+)*@[A-Z0-9]+(?:(?:\.|-)[A-Z0-9]+)*\.[A-Z]{2,}$/i,f=/^((?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCCF\uDCD0\uDCF6-\uDCFF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDAE-\uDDE5\uDE01-\uDE0F\uDE1A\uDE2F\uDE32-\uDE3A\uDE3C-\uDE3F\uDE49-\uDE5F\uDE66-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFA]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDEE5\uDEE9\uDEEB-\uDEF0\uDEF3-\uDEFF\uDFDA-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCBC-\uDCBF\uDCC2-\uDCCF\uDCD9-\uDCFF\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE58-\uDE5F\uDE6E-\uDEFF]|\uD83F[\uDC00-\uDFFD])|(?:[#\*0-9\u200D\u20E3\uFE0F]|\uD83C[\uDDE6-\uDDFF\uDFFB-\uDFFF]|\uD83E[\uDDB0-\uDDB3]|\uDB40[\uDC20-\uDC7F]))+$/,p=/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/,D=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,m=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])$/,g=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])T(0[0-9]|1\d|2[0-3]):[0-5]\d$/,F=/^(0[0-9]|1\d|2[0-3]):[0-5]\d$/,y={__proto__:null,color:function(e){return function(n){var u;return c.test(n)?[]:[{code:"invalid_color",message:null!=(u=null==e?void 0:e.message)?u:"Invalid color"}]}},email:function(e){return function(n){var u;return v.test(n)?[]:[{code:"invalid_email",message:null!=(u=null==e?void 0:e.message)?u:"Invalid email address"}]}},emoji:function(e){return function(n){var u;return f.test(n)?[]:[{code:"invalid_emoji",message:null!=(u=null==e?void 0:e.message)?u:"Invalid emoji"}]}},endsWith:function(e,n){return function(u){var t;return u.endsWith(e)?[]:[{code:"invalid_suffix",message:null!=(t=null==n?void 0:n.message)?t:"Invalid suffix, expected "+e,expected:e,received:u}]}},equals:function(e,n){return function(u){var t;return u!==e?[{code:"invalid_equals",message:null!=(t=null==n?void 0:n.message)?t:"Invalid value, expected "+e,expected:e,received:u}]:[]}},notEquals:function(e,n){return function(u){var t;return u===e?[{code:"invalid_not_equals",message:null!=(t=null==n?void 0:n.message)?t:"Invalid value, expected not "+e,expected:e,received:u}]:[]}},includes:function(e,n){return function(u){var t;return u.includes(e)?[]:[{code:"invalid_includes",message:null!=(t=null==n?void 0:n.message)?t:"Invalid substring, expected "+e,expected:e,received:u}]}},notIncludes:function(e,n){return function(u){var t;return u.includes(e)?[{code:"invalid_not_includes",message:null!=(t=null==n?void 0:n.message)?t:"Invalid substring, expected not "+e,expected:e,received:u}]:[]}},integer:function(e){return function(n){var u;return Number.isInteger(n)?[]:[{code:"invalid_integer",message:null!=(u=null==e?void 0:e.message)?u:"Invalid value, expected integer",expected:n,received:n}]}},ip:function(e){return function(n){var u;return p.test(n)||D.test(n)?[]:[{code:"invalid_ip",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip address"}]}},ipV4:function(e){return function(n){var u;return p.test(n)?[]:[{code:"invalid_ip_v4",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip v4 address"}]}},ipV6:function(e){return function(n){var u;return D.test(n)?[]:[{code:"invalid_ip_v6",message:null!=(u=null==e?void 0:e.message)?u:"Invalid ip v6 address"}]}},isoDate:function(e){return function(n){var u;return m.test(n)?[]:[{code:"invalid_iso_date",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso date"}]}},isoDateTime:function(e){return function(n){var u;return g.test(n)?[]:[{code:"invalid_iso_date_time",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso date time"}]}},isoTime:function(e){return function(n){var u;return F.test(n)?[]:[{code:"invalid_iso_time",message:null!=(u=null==e?void 0:e.message)?u:"Invalid iso time"}]}},length:function(e){return function(n){return n.length!==e?[{code:"invalid_length",message:"Invalid length, expected "+e,expected:e,received:n.length}]:[]}},minLength:function(e,n){return function(u){var t;return u.length<e?[{code:"invalid_min_length",message:null!=(t=null==n?void 0:n.message)?t:"Invalid min length, expected "+e,expected:e,received:u.length,min:e}]:[]}},maxLength:function(e,n){return function(u){var t;return u.length>e?[{code:"invalid_max_length",message:null!=(t=null==n?void 0:n.message)?t:"Invalid max length, expected "+e,expected:e,received:u.length,max:e}]:[]}},multipleOf:function(e,n){return function(u){var t;return u%e!==0?[{code:"invalid_multiple_of",message:null!=(t=null==n?void 0:n.message)?t:"Invalid multiple of "+e+", expected "+u,received:u,multipleOf:e}]:[]}},oneOf:function(e,n){return function(u){var t;return e.includes(u)?[]:[{code:"invalid_value",message:null!=(t=null==n?void 0:n.message)?t:"Value must be one of: "+e.join(", ")}]}},positive:function(e){return function(n){var u;return n<=0?[{code:"invalid_positive",message:null!=(u=null==e?void 0:e.message)?u:"Invalid positive, expected "+n,received:n,positive:!0}]:[]}},negative:function(e){return function(n){var u;return n>=0?[{code:"invalid_negative",message:null!=(u=null==e?void 0:e.message)?u:"Invalid negative, expected "+n,received:n,negative:!0}]:[]}},regex:function(e,n){return function(u){var t;return e.test(u)?[]:[{code:"invalid_regex",message:null!=(t=null==n?void 0:n.message)?t:"Invalid regex, expected "+e,received:u}]}},minValue:function(e,n){return function(u){var t;return u<e?[{code:"invalid_min",message:null!=(t=null==n?void 0:n.message)?t:"Invalid min, expected "+e,expected:e,received:u,min:e}]:[]}},maxValue:function(e,n){return function(u){var t;return u>e?[{code:"invalid_max",message:null!=(t=null==n?void 0:n.message)?t:"Invalid max, expected "+e,expected:e,received:u,max:e}]:[]}},startsWith:function(e,n){return function(u){var t;return u.startsWith(e)?[]:[{code:"invalid_prefix",message:null!=(t=null==n?void 0:n.message)?t:"Invalid prefix, expected "+e,expected:e,received:u}]}},url:function(e){return function(n){try{var u,t=new URL(n);return null!=e&&e.hostnames&&!e.hostnames.includes(t.hostname)?[{code:"invalid_hostname",message:null!=(u=null==e?void 0:e.message)?u:"Invalid hostname",expected:null==e?void 0:e.hostnames,received:t.hostname}]:[]}catch(u){var i;return[{code:"invalid_url",message:null!=(i=null==e?void 0:e.message)?i:"Invalid URL",received:n}]}}}},x={__proto__:null,any:s("any",function(e,n){return{success:!0,value:n}}),typedAny:function(e){return s(e,function(e,n){return{success:!0,value:n}})()},array:function(e,n){return{type:"array",items:e,name:null==n?void 0:n.name,description:null==n?void 0:n.description,examples:Array.isArray(e.examples)?e.examples.map(function(e){return[e,e]}):void 0,validate:function(n){if(!Array.isArray(n))return l([{code:"invalid_type",message:"Invalid input, expected array, received "+typeof n,received:typeof n,expected:"array"}]);for(var i,r,o=[],s=function(){var n=r.value,u=n[0],i=e.validate(n[1]);if(!i.success)return{v:l(i.errors.map(function(e){var n;return t({},e,{path:[u.toString()].concat(null!=(n=e.path)?n:[])})}))};o.push(i.value)},d=u(n.entries());!(r=d()).done;)if(i=s())return i.v;return a(o)}}},boolean:s("boolean",function(e,n){var u,t;return"string"==typeof n?"true"==n?u=!0:"false"==n&&(u=!1):"boolean"==typeof n&&(u=n),void 0===u?l([{code:"invalid_type",message:null!=(t=e.message)?t:"Invalid input, expected a boolean, received "+typeof n,received:typeof n,expected:"boolean"}]):{success:!0,value:u}}),date:s("date",function(e,n){if("string"==typeof n){var u=new Date(n);isNaN(u.getTime())||(n=u)}var t;return n instanceof Date?{success:!0,value:n}:l([{code:"invalid_type",message:null!=(t=e.message)?t:"Invalid input, expected a date, received "+typeof n,received:typeof n,expected:"date"}])}),enumOf:function(e,n){return{type:"enum",examples:e,name:null==n?void 0:n.name,description:null==n?void 0:n.description,validate:function(n){return e.includes(n)?{success:!0,value:n}:l([{code:"invalid_enum",message:"Invalid input, expected one of "+e.join(", ")+", received "+n,received:n,expected:e}])}}},intersection:function(e,n){return{type:"intersection",name:null==n?void 0:n.name,items:e,description:null==n?void 0:n.description,examples:[],validate:function(n){for(var i,r={},a=u(e);!(i=a()).done;){var l=i.value.validate(n);if(!l.success)return l;r=t({},r,l.value)}return{success:!0,value:r}}}},literal:function(e,n){return{type:"literal",examples:[e],name:null==n?void 0:n.name,description:null==n?void 0:n.description,validate:function(u){var t;return u!=e?l([{code:"invalid_literal",message:null!=(t=null==n?void 0:n.message)?t:"Invalid input, expected "+e+", received "+u,received:u,expected:e}]):{success:!0,value:e}}}},nullValue:s("null",function(e,n){var u;return null!==n?l([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected null, received "+typeof n,received:typeof n,expected:"null"}]):{success:!0,value:null}}),nullable:function(e){return t({},e,{nullable:!0,validate:function(n){return null===n?{success:!0,value:n}:e.validate(n)}})},number:s("number",function(e,n){var u,t="string"==typeof n?parseFloat(n):n;return"number"!=typeof t||isNaN(t)?l([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected number, received "+typeof n,received:typeof n,expected:"number"}]):{success:!0,value:t}}),object:function(e,n){return{type:"object",name:null==n?void 0:n.name,description:null==n?void 0:n.description,properties:e,examples:[Object.fromEntries(Object.entries(e).map(function(e){var n,u=e[1],t=null==(n=u.examples)?void 0:n[0];return void 0===t&&u.nullable?null:[e[0],t]}).filter(function(e){return null!==e}))],validate:function(n){if("object"!=typeof n||null===n||Array.isArray(n))return l([{code:"invalid_type",message:"Invalid input, expected object, received "+typeof n,received:Array.isArray(n)?"array":typeof n,expected:"object"}]);for(var u,i={},r=function(){var e=s[o],u=e[0],r=e[1].validate(n[u]);if(!r.success)return{v:l(r.errors.map(function(e){var n;return t({},e,{path:[u].concat(null!=(n=e.path)?n:[])})}))};i[u]=r.value},o=0,s=Object.entries(e);o<s.length;o++)if(u=r())return u.v;return a(i)}}},optional:function(e){return t({},e,{optional:!0,validate:function(n){return void 0===n?{success:!0,value:n}:e.validate(n)}})},record:function(e,n){return{type:"record",items:e,name:null==n?void 0:n.name,description:null==n?void 0:n.description,examples:Array.isArray(e.examples)?[{key1:e.examples[0]}]:void 0,validate:function(n){if("object"!=typeof n||null===n||Array.isArray(n))return l([{code:"invalid_type",message:"Invalid input, expected object",received:n,expected:"object"}]);for(var u,i={},r=function(){var n=s[o],u=n[0],r=n[1];if("string"!=typeof u)return{v:l([{code:"invalid_type",message:"Invalid input, expected object with string keys, received "+typeof u,received:u,expected:"string"}])};var a=e.validate(r);if(!a.success)return{v:l(a.errors.map(function(e){var n;return t({},e,{path:[u].concat(null!=(n=e.path)?n:[])})}))};i[u]=a.value},o=0,s=Object.entries(n);o<s.length;o++)if(u=r())return u.v;return a(i)}}},string:s("string",function(e,n){var u;return"string"!=typeof n?l([{code:"invalid_type",message:null!=(u=e.message)?u:"Invalid input, expected string, received "+typeof n,received:typeof n,expected:"string"}]):n.length>1e5?l([{code:"max_length",message:"Input is too long"}]):{success:!0,value:n}}),union:function(e,n){return{type:"union",name:null==n?void 0:n.name,items:e,description:null==n?void 0:n.description,examples:e.flatMap(function(e){return e.examples||[]}),validate:function(n){for(var t,i=[],r=u(e);!(t=r()).done;){var a=t.value.validate(n);if(a.success)return a;i.push.apply(i,a.errors)}return l(i)}}},voidType:s("void",function(e,n){return{success:!0,value:void 0}})},A=t({},y,r,{__proto__:null,upperCase:function(e){return e.toUpperCase()},lowerCase:function(e){return e.toLowerCase()},trim:function(e){return e.trim()},trimStart:function(e){return e.trimStart()},trimEnd:function(e){return e.trimEnd()}},x,o,d);e.introspectType=i,e.v=A});
2
+ //# sourceMappingURL=index.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/lib/introspect.ts","../src/lib/result.ts","../src/lib/validator.ts","../src/modifiers/color.ts","../src/modifiers/email.ts","../src/modifiers/emoji.ts","../src/modifiers/ip.ts","../src/modifiers/isoDate.ts","../src/modifiers/endsWith.ts","../src/modifiers/equals.ts","../src/modifiers/includes.ts","../src/modifiers/integer.ts","../src/modifiers/length.ts","../src/modifiers/multipleOf.ts","../src/modifiers/oneOf.ts","../src/modifiers/positive.ts","../src/modifiers/regex.ts","../src/modifiers/size.ts","../src/modifiers/startsWith.ts","../src/modifiers/url.ts","../src/validators/any.ts","../src/validators/array.ts","../src/validators/boolean.ts","../src/validators/date.ts","../src/validators/enum.ts","../src/validators/intersection.ts","../src/validators/literal.ts","../src/validators/null.ts","../src/validators/nullable.ts","../src/validators/number.ts","../src/validators/object.ts","../src/validators/optional.ts","../src/validators/record.ts","../src/validators/string.ts","../src/validators/union.ts","../src/validators/void.ts","../src/index.ts","../src/transformers/case.ts","../src/transformers/trim.ts"],"sourcesContent":["import { ValidationType } from './types';\n\nexport interface IntrospectedType {\n examples: any[];\n items?: IntrospectedType[];\n properties?: Record<string, IntrospectedType>;\n type: string;\n name?: string;\n description?: string;\n optional: boolean;\n nullable: boolean;\n}\n\nexport let introspectType = (type: ValidationType<any>): IntrospectedType => ({\n examples: type.examples ?? [],\n items: type.items\n ? Array.isArray(type.items)\n ? type.items.map(introspectType)\n : [introspectType(type.items)]\n : undefined,\n properties: type.properties\n ? Object.fromEntries(\n Object.entries(type.properties)\n .filter(([_, v]) => !v.hidden)\n .map(([key, value]) => [key, introspectType(value)])\n )\n : undefined,\n type: type.type,\n name: type.name,\n description: type.description,\n optional: !!type.optional,\n nullable: !!type.nullable\n});\n","import { ValidationError, ValidationResult } from './types';\n\nexport let success = <T>(value: T): ValidationResult<T> => ({\n success: true,\n value\n});\n\nexport let error = (errors: ValidationError[]): ValidationResult<any> => ({\n success: false,\n errors\n});\n","import { error, success } from './result';\nimport {\n Preprocessor,\n Transformer,\n ValidationError,\n ValidationModifier,\n ValidationResult,\n ValidationType,\n ValidatorOptions\n} from './types';\n\nlet preprocess = (preprocessors: Preprocessor[], value: any) => {\n return preprocessors.reduce((val, fn) => fn(val), value);\n};\n\nlet modify = <T>(modifiers: ValidationModifier<T>[], value: T) => {\n return modifiers.reduce((errors, fn) => errors.concat(fn(value)), [] as ValidationError[]);\n};\n\nlet transform = <T>(transformers: Transformer<T>[], value: T) => {\n return transformers.reduce((val, fn) => fn(val), value);\n};\n\nexport let createValidator =\n <Type, Opts extends ValidatorOptions<Type>>(\n type: string,\n handler: (opts: Opts, value: any) => ValidationResult<Type>\n ) =>\n (opts?: Opts): ValidationType<Type> => ({\n validate: rawValue => {\n try {\n let value =\n !opts?.preprocessors || !opts?.preprocessors.length\n ? rawValue\n : preprocess(opts?.preprocessors, rawValue);\n\n let handlerRes = handler(opts ?? ({} as any), value);\n if (!handlerRes.success) return handlerRes;\n\n let modifierErrors =\n !opts?.modifiers || !opts?.modifiers.length ? [] : modify(opts?.modifiers, value);\n if (modifierErrors.length) return error(modifierErrors);\n\n return success(\n !opts?.transformers || !opts?.transformers.length\n ? handlerRes.value\n : transform(opts?.transformers, handlerRes.value)\n );\n } catch (err) {\n return error([\n {\n code: 'invalid_type',\n message: opts?.message ?? 'Unable to validate value'\n }\n ]);\n }\n },\n examples: opts?.examples ?? [],\n type,\n name: opts?.name,\n description: opts?.description,\n hidden: !!opts?.hidden\n });\n","import { ValidationModifier } from '../lib/types';\n\nlet colorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\nexport let color =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!colorRegex.test(value)) {\n return [\n {\n code: 'invalid_color',\n message: opts?.message ?? 'Invalid color'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emailRegex = /^[\\w+-]+(?:\\.[\\w+-]+)*@[A-Z0-9]+(?:(?:\\.|-)[A-Z0-9]+)*\\.[A-Z]{2,}$/i;\n\nexport let email =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emailRegex.test(value)) {\n return [\n {\n code: 'invalid_email',\n message: opts?.message ?? 'Invalid email address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\n\nexport let emoji =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!emojiRegex.test(value)) {\n return [\n {\n code: 'invalid_emoji',\n message: opts?.message ?? 'Invalid emoji'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet ipV4Regex = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$/;\nlet ipV6Regex =\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\n\nexport let ip =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value) && !ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip',\n message: opts?.message ?? 'Invalid ip address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV4 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV4Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v4',\n message: opts?.message ?? 'Invalid ip v4 address'\n }\n ];\n }\n\n return [];\n };\n\nexport let ipV6 =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!ipV6Regex.test(value)) {\n return [\n {\n code: 'invalid_ip_v6',\n message: opts?.message ?? 'Invalid ip v6 address'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nlet isoDateRegex = /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])$/;\nlet isoDateTimeRegex =\n /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])T(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\nlet isoTimeRegex = /^(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\n\nexport let isoDate =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date',\n message: opts?.message ?? 'Invalid iso date'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoDateTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoDateTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_date_time',\n message: opts?.message ?? 'Invalid iso date time'\n }\n ];\n }\n\n return [];\n };\n\nexport let isoTime =\n (opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!isoTimeRegex.test(value)) {\n return [\n {\n code: 'invalid_iso_time',\n message: opts?.message ?? 'Invalid iso time'\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let endsWith =\n (suffix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.endsWith(suffix)) {\n return [\n {\n code: 'invalid_suffix',\n message: opts?.message ?? `Invalid suffix, expected ${suffix}`,\n expected: suffix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let equals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value !== expected) {\n return [\n {\n code: 'invalid_equals',\n message: opts?.message ?? `Invalid value, expected ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notEquals =\n (\n expected: string | number | boolean,\n opts?: { message?: string }\n ): ValidationModifier<string> =>\n value => {\n if (value === expected) {\n return [\n {\n code: 'invalid_not_equals',\n message: opts?.message ?? `Invalid value, expected not ${expected}`,\n expected: expected,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let includes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.includes(substring)) {\n return [\n {\n code: 'invalid_includes',\n message: opts?.message ?? `Invalid substring, expected ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n\nexport let notIncludes =\n (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (value.includes(substring)) {\n return [\n {\n code: 'invalid_not_includes',\n message: opts?.message ?? `Invalid substring, expected not ${substring}`,\n expected: substring,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let integer =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (!Number.isInteger(value)) {\n return [\n {\n code: 'invalid_integer',\n message: opts?.message ?? `Invalid value, expected integer`,\n expected: value,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let length =\n (length: number): ValidationModifier<string> =>\n value => {\n if (value.length !== length) {\n return [\n {\n code: 'invalid_length',\n message: `Invalid length, expected ${length}`,\n expected: length,\n received: value.length\n }\n ];\n }\n\n return [];\n };\n\nexport let minLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length < length) {\n return [\n {\n code: 'invalid_min_length',\n message: opts?.message ?? `Invalid min length, expected ${length}`,\n expected: length,\n received: value.length,\n min: length\n }\n ];\n }\n\n return [];\n };\n\nexport let maxLength =\n (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n value => {\n if (value.length > length) {\n return [\n {\n code: 'invalid_max_length',\n message: opts?.message ?? `Invalid max length, expected ${length}`,\n expected: length,\n received: value.length,\n max: length\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let multipleOf =\n (multi: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value % multi !== 0) {\n return [\n {\n code: 'invalid_multiple_of',\n message: opts?.message ?? `Invalid multiple of ${multi}, expected ${value}`,\n received: value,\n multipleOf: multi\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let oneOf =\n (allowed: string[], opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!allowed.includes(value)) {\n return [\n {\n code: 'invalid_value',\n message: opts?.message ?? `Value must be one of: ${allowed.join(', ')}`\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let positive =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value <= 0) {\n return [\n {\n code: 'invalid_positive',\n message: opts?.message ?? `Invalid positive, expected ${value}`,\n received: value,\n positive: true\n }\n ];\n }\n\n return [];\n };\n\nexport let negative =\n (opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value >= 0) {\n return [\n {\n code: 'invalid_negative',\n message: opts?.message ?? `Invalid negative, expected ${value}`,\n received: value,\n negative: true\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let regex =\n (pattern: RegExp, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!pattern.test(value)) {\n return [\n {\n code: 'invalid_regex',\n message: opts?.message ?? `Invalid regex, expected ${pattern}`,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let minValue =\n (min: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value < min) {\n return [\n {\n code: 'invalid_min',\n message: opts?.message ?? `Invalid min, expected ${min}`,\n expected: min,\n received: value,\n min\n }\n ];\n }\n\n return [];\n };\n\nexport let maxValue =\n (max: number, opts?: { message?: string }): ValidationModifier<number> =>\n value => {\n if (value > max) {\n return [\n {\n code: 'invalid_max',\n message: opts?.message ?? `Invalid max, expected ${max}`,\n expected: max,\n received: value,\n max\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let startsWith =\n (prefix: string, opts?: { message?: string }): ValidationModifier<string> =>\n value => {\n if (!value.startsWith(prefix)) {\n return [\n {\n code: 'invalid_prefix',\n message: opts?.message ?? `Invalid prefix, expected ${prefix}`,\n expected: prefix,\n received: value\n }\n ];\n }\n\n return [];\n };\n","import { ValidationModifier } from '../lib/types';\n\nexport let url =\n (opts?: { message?: string; hostnames?: string[] }): ValidationModifier<string> =>\n value => {\n try {\n let url = new URL(value);\n\n if (opts?.hostnames && !opts.hostnames.includes(url.hostname)) {\n return [\n {\n code: 'invalid_hostname',\n message: opts?.message ?? `Invalid hostname`,\n expected: opts?.hostnames,\n received: url.hostname\n }\n ];\n }\n\n return [];\n } catch (err) {\n return [\n {\n code: 'invalid_url',\n message: opts?.message ?? `Invalid URL`,\n received: value\n }\n ];\n }\n };\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let any = createValidator<any, ValidatorOptions<any>>('any', (opts, value) => {\n return { success: true, value };\n});\n\nexport let typedAny = <T>(name: string) =>\n createValidator<T, ValidatorOptions<T>>(name, (opts, value) => {\n return { success: true, value };\n })();\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let array = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<ValidationTypeValue<Validator>[]>\n): ValidationType<ValidationTypeValue<Validator>[]> => ({\n type: 'array',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? validator.examples.map(v => [v, v])\n : undefined,\n validate: value => {\n if (!Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected array, received ${typeof value}`,\n received: typeof value,\n expected: 'array'\n }\n ]);\n }\n\n let values: ValidationTypeValue<Validator>[] = [];\n\n for (let [key, val] of value.entries()) {\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(\n result.errors.map(e => ({ ...e, path: [key.toString(), ...(e.path ?? [])] }))\n );\n }\n\n values.push(result.value);\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let boolean = createValidator<boolean, ValidatorOptions<boolean>>(\n 'boolean',\n (opts, value) => {\n let serializedValue: boolean | undefined;\n\n if (typeof value == 'string') {\n if (value == 'true') {\n serializedValue = true;\n } else if (value == 'false') {\n serializedValue = false;\n }\n } else if (typeof value == 'boolean') {\n serializedValue = value;\n }\n\n if (serializedValue === undefined) {\n return error([\n {\n code: 'invalid_type',\n message:\n opts.message ?? `Invalid input, expected a boolean, received ${typeof value}`,\n received: typeof value,\n expected: 'boolean'\n }\n ]);\n }\n\n return { success: true, value: serializedValue };\n }\n);\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let date = createValidator<Date, ValidatorOptions<Date>>('date', (opts, value) => {\n if (typeof value === 'string') {\n let date = new Date(value);\n\n if (!isNaN(date.getTime())) {\n value = date;\n }\n }\n\n if (!(value instanceof Date)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected a date, received ${typeof value}`,\n received: typeof value,\n expected: 'date'\n }\n ]);\n }\n\n return { success: true, value };\n});\n","import { error } from '../lib/result';\nimport { ValidationType } from '../lib/types';\n\n// export let enumType = <\n// A extends string | number | boolean,\n// Rest extends (string | number | boolean)[]\n// >(\n// ...values: [A, ...Rest]\n// ): ValidationType<A | Rest[number]> => ({\n// type: 'enum',\n// examples: values,\n// validate: value => {\n// if (!values.includes(value)) {\n// return error([\n// {\n// code: 'invalid_enum',\n// message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n// received: value,\n// expected: values\n// }\n// ]);\n// }\n\n// return { success: true, value };\n// }\n// });\n\nexport let enumOf = <\n const A extends string | number | boolean,\n Rest extends (string | number | boolean)[]\n>(\n values: [A, ...Rest],\n opts?: {\n name?: string;\n description?: string;\n }\n): ValidationType<A | Rest[number]> => ({\n type: 'enum',\n examples: values,\n name: opts?.name,\n description: opts?.description,\n validate: value => {\n if (!values.includes(value)) {\n return error([\n {\n code: 'invalid_enum',\n message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n received: value,\n expected: values\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let intersection = <A extends ValidationType<object>, B extends ValidationType<object>>(\n validators: [A, B],\n opts?: ValidatorOptions<ValidationTypeValue<A> & ValidationTypeValue<B>>\n): ValidationType<ValidationTypeValue<A> & ValidationTypeValue<B>> => ({\n type: 'intersection',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: [],\n validate: value => {\n let fullValue: any = {};\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (!result.success) return result;\n\n fullValue = { ...fullValue, ...result.value };\n }\n\n return { success: true, value: fullValue };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidationType, ValidatorOptions } from '../lib/types';\n\nexport let literal = <A extends string | number | boolean>(\n value: A,\n opts?: ValidatorOptions<A>\n): ValidationType<A> => ({\n type: 'literal',\n examples: [value],\n name: opts?.name,\n description: opts?.description,\n validate: input => {\n if (input != value) {\n return error([\n {\n code: 'invalid_literal',\n message: opts?.message ?? `Invalid input, expected ${value}, received ${input}`,\n received: input,\n expected: value\n }\n ]);\n }\n\n return { success: true, value };\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let nullValue = createValidator<null, ValidatorOptions<null>>('null', (opts, value) => {\n if (value !== null) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected null, received ${typeof value}`,\n received: typeof value,\n expected: 'null'\n }\n ]);\n }\n\n return { success: true, value: null };\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let nullable = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | null> => ({\n ...validator,\n\n nullable: true,\n validate: value => {\n if (value === null) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let number = createValidator<number, ValidatorOptions<number>>(\n 'number',\n (opts, value) => {\n let number = typeof value == 'string' ? parseFloat(value) : value;\n\n if (typeof number != 'number' || isNaN(number)) {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected number, received ${typeof value}`,\n received: typeof value,\n expected: 'number'\n }\n ]);\n }\n\n return { success: true, value: number };\n }\n);\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\ntype KeysWhichExtend<T, SelectedType> = {\n [key in keyof T]: SelectedType extends T[key] ? key : never;\n}[keyof T];\ntype Optional<T> = Partial<Pick<T, KeysWhichExtend<T, undefined>>>;\ntype Required<T> = Omit<T, KeysWhichExtend<T, undefined>>;\nexport type UndefinedIsOptional<T> = Optional<T> & Required<T>;\n\nexport let object = <Validator extends { [key: string]: ValidationType<any> }>(\n shape: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<\n UndefinedIsOptional<{\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n }>\n> => ({\n type: 'object',\n name: opts?.name,\n description: opts?.description,\n properties: shape,\n examples: [\n Object.fromEntries(\n Object.entries(shape)\n .map(([key, validator]) => {\n let example = validator.examples?.[0];\n // For nullable fields, if there's no example, don't include it\n // This prevents undefined from becoming {} in Object.fromEntries\n if (example === undefined && validator.nullable) {\n return null; // Will be filtered out\n }\n return [key, example];\n })\n .filter((entry): entry is [string, any] => entry !== null)\n )\n ] as any,\n validate: value => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object, received ${typeof value}`,\n received: Array.isArray(value) ? 'array' : typeof value,\n expected: 'object'\n }\n ]);\n }\n\n let values: {\n [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n } = {} as any;\n\n for (let [key, validator] of Object.entries(shape)) {\n let result = validator.validate(value[key]);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key as keyof Validator] = result.value;\n }\n\n return success(values);\n }\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let optional = <A extends ValidationType<any>>(\n validator: A\n): ValidationType<ValidationTypeValue<A> | undefined> => ({\n ...validator,\n\n optional: true,\n validate: value => {\n if (value === undefined) {\n return { success: true, value };\n }\n\n return validator.validate(value);\n }\n});\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let record = <Validator extends ValidationType<any>>(\n validator: Validator,\n opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<Record<string, ValidationTypeValue<Validator>>> => ({\n type: 'record',\n items: validator,\n name: opts?.name,\n description: opts?.description,\n examples: Array.isArray(validator.examples)\n ? [\n {\n key1: validator.examples[0]\n }\n ]\n : undefined,\n validate: value => {\n if (typeof value != 'object' || value === null || Array.isArray(value)) {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object`,\n received: value,\n expected: 'object'\n }\n ]);\n }\n\n let values: Record<string, ValidationTypeValue<Validator>> = {};\n\n for (let [key, val] of Object.entries(value)) {\n if (typeof key != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: `Invalid input, expected object with string keys, received ${typeof key}`,\n received: key,\n expected: 'string'\n }\n ]);\n }\n\n let result = validator.validate(val);\n\n if (!result.success) {\n return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n }\n\n values[key] = result.value;\n }\n\n return success(values);\n }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let string = createValidator<string, ValidatorOptions<string>>(\n 'string',\n (opts, value) => {\n if (typeof value != 'string') {\n return error([\n {\n code: 'invalid_type',\n message: opts.message ?? `Invalid input, expected string, received ${typeof value}`,\n received: typeof value,\n expected: 'string'\n }\n ]);\n }\n\n if (value.length > 100_000) {\n return error([\n {\n code: 'max_length',\n message: 'Input is too long'\n }\n ]);\n }\n\n return { success: true, value };\n }\n);\n","import { error } from '../lib/result';\nimport {\n ValidationError,\n ValidationType,\n ValidationTypeValue,\n ValidatorOptions\n} from '../lib/types';\n\nexport let union = <\n A extends ValidationType<any>,\n B extends ValidationType<any>,\n Rest extends ValidationType<any>[]\n>(\n validators: [A, B, ...Rest],\n opts?: ValidatorOptions<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n >\n): ValidationType<\n ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n> => ({\n type: 'union',\n name: opts?.name,\n items: validators,\n description: opts?.description,\n examples: validators.flatMap(v => v.examples || []),\n validate: value => {\n let errors: ValidationError[] = [];\n\n for (let validator of validators) {\n let result = validator.validate(value);\n if (result.success) return result;\n\n errors.push(...result.errors);\n }\n\n return error(errors);\n }\n});\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let voidType = createValidator<void, ValidatorOptions<void>>('void', (opts, value) => {\n return { success: true, value: undefined };\n});\n","// export * from './lib/result';\n// export * from './lib/validator';\n// export * from './modifiers';\n// export * from './transformers';\n// export * from './validators';\n\nexport * from './lib/introspect';\nexport * from './lib/types';\n\nimport * as introspect from './lib/introspect';\nimport * as result from './lib/result';\nimport * as validator from './lib/validator';\nimport * as modifiers from './modifiers';\nimport * as transformers from './transformers';\nimport * as validators from './validators';\n\n// export default {\n// ...modifiers,\n// ...introspect,\n// ...transformers,\n// ...validators,\n// ...result,\n// ...validator\n// };\n\nexport let v = {\n ...modifiers,\n ...introspect,\n ...transformers,\n ...validators,\n ...result,\n ...validator\n};\n","import { Transformer } from '../lib/types';\n\nexport let upperCase: Transformer<string> = value => value.toUpperCase();\n\nexport let lowerCase: Transformer<string> = value => value.toLowerCase();\n","import { Transformer } from '../lib/types';\n\nexport let trim: Transformer<string> = value => value.trim();\n\nexport let trimStart: Transformer<string> = value => value.trimStart();\n\nexport let trimEnd: Transformer<string> = value => value.trimEnd();\n"],"names":["introspectType","type","_type$examples","examples","items","Array","isArray","map","undefined","properties","Object","fromEntries","entries","filter","_ref","hidden","_ref2","name","description","optional","nullable","success","value","error","errors","createValidator","handler","opts","_opts$examples","validate","rawValue","preprocessors","length","reduce","val","fn","preprocess","handlerRes","modifierErrors","modifiers","concat","modify","transformers","transform","err","_opts$message","code","message","colorRegex","emailRegex","emojiRegex","ipV4Regex","ipV6Regex","isoDateRegex","isoDateTimeRegex","isoTimeRegex","test","suffix","endsWith","expected","received","_opts$message2","substring","includes","Number","isInteger","_opts$message3","min","max","multi","multipleOf","allowed","join","positive","negative","pattern","prefix","startsWith","url","URL","hostnames","hostname","validator","v","_ret","_step","values","_loop","_step$value","key","result","e","_e$path","_extends","path","toString","push","_iterator","_createForOfIteratorHelperLoose","done","serializedValue","date","Date","isNaN","getTime","validators","fullValue","input","number","parseFloat","shape","_validator$examples","example","entry","_Object$entries$_i","_Object$entries","_i","key1","flatMap","apply","introspect","toUpperCase","toLowerCase","trim","trimStart","trimEnd"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ValidationType } from './types';
2
+ export interface IntrospectedType {
3
+ examples: any[];
4
+ items?: IntrospectedType[];
5
+ properties?: Record<string, IntrospectedType>;
6
+ type: string;
7
+ name?: string;
8
+ description?: string;
9
+ optional: boolean;
10
+ nullable: boolean;
11
+ }
12
+ export declare let introspectType: (type: ValidationType<any>) => IntrospectedType;
13
+ //# sourceMappingURL=introspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/lib/introspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,IAAI,cAAc,GAAI,MAAM,cAAc,CAAC,GAAG,CAAC,KAAG,gBAmBvD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ValidationError, ValidationResult } from './types';
2
+ export declare let success: <T>(value: T) => ValidationResult<T>;
3
+ export declare let error: (errors: ValidationError[]) => ValidationResult<any>;
4
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5D,eAAO,IAAI,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,gBAAgB,CAAC,CAAC,CAGpD,CAAC;AAEH,eAAO,IAAI,KAAK,GAAI,QAAQ,eAAe,EAAE,KAAG,gBAAgB,CAAC,GAAG,CAGlE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=result.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.test.d.ts","sourceRoot":"","sources":["../../src/lib/result.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ export interface ValidationError {
2
+ code: string;
3
+ message: string;
4
+ expected?: any;
5
+ received?: any;
6
+ path?: string[];
7
+ min?: number;
8
+ max?: number;
9
+ positive?: boolean;
10
+ negative?: boolean;
11
+ }
12
+ export type ValidationResult<T> = {
13
+ success: true;
14
+ value: T;
15
+ } | {
16
+ success: false;
17
+ errors: ValidationError[];
18
+ };
19
+ export type ValidationType<T> = {
20
+ validate: (value: any) => ValidationResult<T>;
21
+ examples?: T[];
22
+ items?: ValidationType<any> | ValidationType<any>[];
23
+ properties?: {
24
+ [key: string]: ValidationType<any>;
25
+ };
26
+ type: string;
27
+ name?: string;
28
+ description?: string;
29
+ optional?: boolean;
30
+ nullable?: boolean;
31
+ hidden?: boolean;
32
+ };
33
+ export type ValidationTypeValue<T> = T extends ValidationType<infer U> ? U : never;
34
+ export type ValidationModifier<T> = (value: T) => ValidationError[];
35
+ export type Preprocessor = (value: any) => any;
36
+ export type Transformer<T> = (value: T) => T;
37
+ export interface ValidatorOptions<T> {
38
+ modifiers?: ValidationModifier<T>[];
39
+ transformers?: Transformer<T>[];
40
+ message?: string;
41
+ name?: string;
42
+ description?: string;
43
+ examples?: T[];
44
+ preprocessors?: Preprocessor[];
45
+ oneOf?: T[];
46
+ hidden?: boolean;
47
+ }
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACpD,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEnF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,EAAE,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7C,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ import { ValidationResult, ValidationType, ValidatorOptions } from './types';
2
+ export declare let createValidator: <Type, Opts extends ValidatorOptions<Type>>(type: string, handler: (opts: Opts, value: any) => ValidationResult<Type>) => (opts?: Opts) => ValidationType<Type>;
3
+ //# sourceMappingURL=validator.d.ts.map