@oxog/vld 1.3.1 โ†’ 1.4.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 (257) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +1129 -1128
  3. package/dist/coercion/bigint.js +1 -1
  4. package/dist/coercion/boolean.js +1 -1
  5. package/dist/coercion/date.js +1 -1
  6. package/dist/coercion/number.d.ts.map +1 -1
  7. package/dist/coercion/number.js +20 -4
  8. package/dist/coercion/number.js.map +1 -1
  9. package/dist/coercion/string.d.ts.map +1 -1
  10. package/dist/coercion/string.js +9 -73
  11. package/dist/coercion/string.js.map +1 -1
  12. package/dist/index.d.ts +593 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +76 -5
  15. package/dist/index.js.map +1 -1
  16. package/dist/locales/af.d.ts.map +1 -1
  17. package/dist/locales/af.js +18 -1
  18. package/dist/locales/af.js.map +1 -1
  19. package/dist/locales/ar.d.ts.map +1 -1
  20. package/dist/locales/ar.js +18 -1
  21. package/dist/locales/ar.js.map +1 -1
  22. package/dist/locales/backup-en.d.ts +3 -0
  23. package/dist/locales/backup-en.d.ts.map +1 -0
  24. package/dist/locales/backup-en.js +105 -0
  25. package/dist/locales/backup-en.js.map +1 -0
  26. package/dist/locales/bn.d.ts.map +1 -1
  27. package/dist/locales/bn.js +18 -1
  28. package/dist/locales/bn.js.map +1 -1
  29. package/dist/locales/da.d.ts.map +1 -1
  30. package/dist/locales/da.js +18 -1
  31. package/dist/locales/da.js.map +1 -1
  32. package/dist/locales/de.d.ts.map +1 -1
  33. package/dist/locales/de.js +18 -1
  34. package/dist/locales/de.js.map +1 -1
  35. package/dist/locales/en.d.ts.map +1 -1
  36. package/dist/locales/en.js +18 -1
  37. package/dist/locales/en.js.map +1 -1
  38. package/dist/locales/es-MX.d.ts.map +1 -1
  39. package/dist/locales/es-MX.js +17 -1
  40. package/dist/locales/es-MX.js.map +1 -1
  41. package/dist/locales/es.d.ts.map +1 -1
  42. package/dist/locales/es.js +18 -1
  43. package/dist/locales/es.js.map +1 -1
  44. package/dist/locales/fi.d.ts.map +1 -1
  45. package/dist/locales/fi.js +18 -1
  46. package/dist/locales/fi.js.map +1 -1
  47. package/dist/locales/fr.d.ts.map +1 -1
  48. package/dist/locales/fr.js +18 -1
  49. package/dist/locales/fr.js.map +1 -1
  50. package/dist/locales/hi.d.ts.map +1 -1
  51. package/dist/locales/hi.js +18 -1
  52. package/dist/locales/hi.js.map +1 -1
  53. package/dist/locales/id.d.ts.map +1 -1
  54. package/dist/locales/id.js +18 -1
  55. package/dist/locales/id.js.map +1 -1
  56. package/dist/locales/it.d.ts.map +1 -1
  57. package/dist/locales/it.js +18 -1
  58. package/dist/locales/it.js.map +1 -1
  59. package/dist/locales/ja.d.ts.map +1 -1
  60. package/dist/locales/ja.js +18 -1
  61. package/dist/locales/ja.js.map +1 -1
  62. package/dist/locales/ko.d.ts.map +1 -1
  63. package/dist/locales/ko.js +18 -1
  64. package/dist/locales/ko.js.map +1 -1
  65. package/dist/locales/nl.d.ts.map +1 -1
  66. package/dist/locales/nl.js +18 -1
  67. package/dist/locales/nl.js.map +1 -1
  68. package/dist/locales/no.d.ts.map +1 -1
  69. package/dist/locales/no.js +18 -1
  70. package/dist/locales/no.js.map +1 -1
  71. package/dist/locales/pl.d.ts.map +1 -1
  72. package/dist/locales/pl.js +18 -1
  73. package/dist/locales/pl.js.map +1 -1
  74. package/dist/locales/pt-BR.d.ts.map +1 -1
  75. package/dist/locales/pt-BR.js +18 -1
  76. package/dist/locales/pt-BR.js.map +1 -1
  77. package/dist/locales/pt.d.ts.map +1 -1
  78. package/dist/locales/pt.js +18 -1
  79. package/dist/locales/pt.js.map +1 -1
  80. package/dist/locales/ru.d.ts.map +1 -1
  81. package/dist/locales/ru.js +18 -1
  82. package/dist/locales/ru.js.map +1 -1
  83. package/dist/locales/sv.d.ts.map +1 -1
  84. package/dist/locales/sv.js +18 -1
  85. package/dist/locales/sv.js.map +1 -1
  86. package/dist/locales/sw.d.ts.map +1 -1
  87. package/dist/locales/sw.js +18 -1
  88. package/dist/locales/sw.js.map +1 -1
  89. package/dist/locales/th.d.ts.map +1 -1
  90. package/dist/locales/th.js +18 -1
  91. package/dist/locales/th.js.map +1 -1
  92. package/dist/locales/tr.d.ts.map +1 -1
  93. package/dist/locales/tr.js +18 -1
  94. package/dist/locales/tr.js.map +1 -1
  95. package/dist/locales/types.d.ts +13 -0
  96. package/dist/locales/types.d.ts.map +1 -1
  97. package/dist/locales/types.js.map +1 -1
  98. package/dist/locales/vi.d.ts.map +1 -1
  99. package/dist/locales/vi.js +18 -1
  100. package/dist/locales/vi.js.map +1 -1
  101. package/dist/locales/zh.d.ts.map +1 -1
  102. package/dist/locales/zh.js +18 -1
  103. package/dist/locales/zh.js.map +1 -1
  104. package/dist/utils/codec-utils.d.ts +2 -0
  105. package/dist/utils/codec-utils.d.ts.map +1 -1
  106. package/dist/utils/codec-utils.js +22 -4
  107. package/dist/utils/codec-utils.js.map +1 -1
  108. package/dist/utils/deep-merge.d.ts +2 -0
  109. package/dist/utils/deep-merge.d.ts.map +1 -1
  110. package/dist/utils/deep-merge.js +22 -39
  111. package/dist/utils/deep-merge.js.map +1 -1
  112. package/dist/utils/ip-validation.d.ts +11 -0
  113. package/dist/utils/ip-validation.d.ts.map +1 -0
  114. package/dist/utils/ip-validation.js +78 -0
  115. package/dist/utils/ip-validation.js.map +1 -0
  116. package/dist/utils/security.d.ts +12 -0
  117. package/dist/utils/security.d.ts.map +1 -0
  118. package/dist/utils/security.js +61 -0
  119. package/dist/utils/security.js.map +1 -0
  120. package/dist/validators/array.d.ts +3 -1
  121. package/dist/validators/array.d.ts.map +1 -1
  122. package/dist/validators/array.js +41 -15
  123. package/dist/validators/array.js.map +1 -1
  124. package/dist/validators/base.d.ts +131 -0
  125. package/dist/validators/base.d.ts.map +1 -1
  126. package/dist/validators/base.js +247 -1
  127. package/dist/validators/base.js.map +1 -1
  128. package/dist/validators/base64.js +1 -1
  129. package/dist/validators/bigint.d.ts +20 -0
  130. package/dist/validators/bigint.d.ts.map +1 -1
  131. package/dist/validators/bigint.js +39 -1
  132. package/dist/validators/bigint.js.map +1 -1
  133. package/dist/validators/boolean.js +29 -1
  134. package/dist/validators/boolean.js.map +1 -1
  135. package/dist/validators/codec.js +1 -1
  136. package/dist/validators/custom.d.ts +47 -0
  137. package/dist/validators/custom.d.ts.map +1 -0
  138. package/dist/validators/custom.js +50 -0
  139. package/dist/validators/custom.js.map +1 -0
  140. package/dist/validators/date.d.ts +16 -0
  141. package/dist/validators/date.d.ts.map +1 -1
  142. package/dist/validators/date.js +62 -7
  143. package/dist/validators/date.js.map +1 -1
  144. package/dist/validators/discriminated-union.d.ts +29 -0
  145. package/dist/validators/discriminated-union.d.ts.map +1 -0
  146. package/dist/validators/discriminated-union.js +98 -0
  147. package/dist/validators/discriminated-union.js.map +1 -0
  148. package/dist/validators/enum.d.ts +10 -0
  149. package/dist/validators/enum.d.ts.map +1 -1
  150. package/dist/validators/enum.js +38 -1
  151. package/dist/validators/enum.js.map +1 -1
  152. package/dist/validators/file.d.ts +57 -0
  153. package/dist/validators/file.d.ts.map +1 -0
  154. package/dist/validators/file.js +114 -0
  155. package/dist/validators/file.js.map +1 -0
  156. package/dist/validators/function.d.ts +26 -0
  157. package/dist/validators/function.d.ts.map +1 -0
  158. package/dist/validators/function.js +45 -0
  159. package/dist/validators/function.js.map +1 -0
  160. package/dist/validators/hex.d.ts.map +1 -1
  161. package/dist/validators/hex.js +3 -2
  162. package/dist/validators/hex.js.map +1 -1
  163. package/dist/validators/index.d.ts +18 -1
  164. package/dist/validators/index.d.ts.map +1 -1
  165. package/dist/validators/index.js +16 -1
  166. package/dist/validators/index.js.map +1 -1
  167. package/dist/validators/intersection.d.ts.map +1 -1
  168. package/dist/validators/intersection.js +15 -8
  169. package/dist/validators/intersection.js.map +1 -1
  170. package/dist/validators/json.d.ts +26 -0
  171. package/dist/validators/json.d.ts.map +1 -0
  172. package/dist/validators/json.js +64 -0
  173. package/dist/validators/json.js.map +1 -0
  174. package/dist/validators/lazy.d.ts +28 -0
  175. package/dist/validators/lazy.d.ts.map +1 -0
  176. package/dist/validators/lazy.js +42 -0
  177. package/dist/validators/lazy.js.map +1 -0
  178. package/dist/validators/literal.js +1 -1
  179. package/dist/validators/map.js +1 -1
  180. package/dist/validators/nan.d.ts +17 -0
  181. package/dist/validators/nan.d.ts.map +1 -0
  182. package/dist/validators/nan.js +32 -0
  183. package/dist/validators/nan.js.map +1 -0
  184. package/dist/validators/never.js +1 -1
  185. package/dist/validators/null.d.ts +16 -0
  186. package/dist/validators/null.d.ts.map +1 -0
  187. package/dist/validators/null.js +31 -0
  188. package/dist/validators/null.js.map +1 -0
  189. package/dist/validators/number.d.ts +22 -0
  190. package/dist/validators/number.d.ts.map +1 -1
  191. package/dist/validators/number.js +47 -8
  192. package/dist/validators/number.js.map +1 -1
  193. package/dist/validators/object.d.ts +32 -0
  194. package/dist/validators/object.d.ts.map +1 -1
  195. package/dist/validators/object.js +125 -8
  196. package/dist/validators/object.js.map +1 -1
  197. package/dist/validators/record.d.ts +15 -2
  198. package/dist/validators/record.d.ts.map +1 -1
  199. package/dist/validators/record.js +74 -4
  200. package/dist/validators/record.js.map +1 -1
  201. package/dist/validators/set.js +1 -1
  202. package/dist/validators/string-bool.d.ts +61 -0
  203. package/dist/validators/string-bool.d.ts.map +1 -0
  204. package/dist/validators/string-bool.js +127 -0
  205. package/dist/validators/string-bool.js.map +1 -0
  206. package/dist/validators/string-formats.d.ts +97 -0
  207. package/dist/validators/string-formats.d.ts.map +1 -0
  208. package/dist/validators/string-formats.js +120 -0
  209. package/dist/validators/string-formats.js.map +1 -0
  210. package/dist/validators/string.d.ts.map +1 -1
  211. package/dist/validators/string.js +2 -73
  212. package/dist/validators/string.js.map +1 -1
  213. package/dist/validators/symbol.js +1 -1
  214. package/dist/validators/template-literal.d.ts +32 -0
  215. package/dist/validators/template-literal.d.ts.map +1 -0
  216. package/dist/validators/template-literal.js +101 -0
  217. package/dist/validators/template-literal.js.map +1 -0
  218. package/dist/validators/tuple.js +1 -1
  219. package/dist/validators/uint8array.d.ts +21 -4
  220. package/dist/validators/uint8array.d.ts.map +1 -1
  221. package/dist/validators/uint8array.js +34 -23
  222. package/dist/validators/uint8array.js.map +1 -1
  223. package/dist/validators/undefined.d.ts +16 -0
  224. package/dist/validators/undefined.d.ts.map +1 -0
  225. package/dist/validators/undefined.js +31 -0
  226. package/dist/validators/undefined.js.map +1 -0
  227. package/dist/validators/union.d.ts +2 -0
  228. package/dist/validators/union.d.ts.map +1 -1
  229. package/dist/validators/union.js +15 -21
  230. package/dist/validators/union.js.map +1 -1
  231. package/dist/validators/void.js +1 -1
  232. package/dist/validators/xor.d.ts +23 -0
  233. package/dist/validators/xor.d.ts.map +1 -0
  234. package/dist/validators/xor.js +64 -0
  235. package/dist/validators/xor.js.map +1 -0
  236. package/package.json +2 -2
  237. package/dist/index-new.d.ts.map +0 -1
  238. package/dist/locales.d.ts +0 -54
  239. package/dist/locales.d.ts.map +0 -1
  240. package/dist/locales.js +0 -732
  241. package/dist/locales.js.map +0 -1
  242. package/dist/validators/object-optimized.d.ts +0 -23
  243. package/dist/validators/object-optimized.d.ts.map +0 -1
  244. package/dist/validators/object-optimized.js +0 -179
  245. package/dist/validators/object-optimized.js.map +0 -1
  246. package/dist/validators/object-ultra.d.ts +0 -34
  247. package/dist/validators/object-ultra.d.ts.map +0 -1
  248. package/dist/validators/object-ultra.js +0 -175
  249. package/dist/validators/object-ultra.js.map +0 -1
  250. package/dist/validators/string-ultra.d.ts +0 -49
  251. package/dist/validators/string-ultra.d.ts.map +0 -1
  252. package/dist/validators/string-ultra.js +0 -217
  253. package/dist/validators/string-ultra.js.map +0 -1
  254. package/dist/validators/union-optimized.d.ts +0 -15
  255. package/dist/validators/union-optimized.d.ts.map +0 -1
  256. package/dist/validators/union-optimized.js +0 -92
  257. package/dist/validators/union-optimized.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ All notable changes to VLD will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.0] - 2026-01-02
9
+
10
+ ### ๐Ÿš€ **Zod 4 Full API Parity Achieved**
11
+ - **Complete Feature Set**: 100% Zod 4 API compatibility
12
+ - **1142 Tests Passing**: Comprehensive test coverage across all features
13
+ - **Production Ready**: All validators, codecs, and utilities fully tested
14
+
15
+ ### โœจ New Features
16
+
17
+ #### **v.cidrv6() - IPv6 CIDR Block Validator**
18
+ New validator for IPv6 CIDR notation validation:
19
+ - Supports full IPv6 addresses with prefix lengths (0-128)
20
+ - Validates compressed IPv6 notation (`::`, `::1`, etc.)
21
+ - Rejects IPv4 CIDR blocks
22
+
23
+ #### **.apply() - External Function Chaining**
24
+ Apply external functions to validators for advanced composition:
25
+ - Enables functional composition patterns
26
+ - Supports custom validation pipelines
27
+ - Full TypeScript type inference
28
+
29
+ #### **.safeExtend() - Type-Safe Object Extension**
30
+ Safely extend object schemas without accidentally overriding existing fields:
31
+ - Prevents accidental field overrides in object schemas
32
+ - Clear error messages listing all conflicting keys
33
+ - Supports chaining multiple safeExtend calls
34
+
35
+ ### ๐ŸŒ Internationalization Updates
36
+ - Added i18n messages for all new features in **27+ languages**
37
+ - New messages: `stringCidrv6`, `safeExtendOverlap`
38
+ - Updated all locale files with translations
39
+
40
+ ### ๐Ÿ”ง Build System Improvements
41
+ - **Fixed ESM module resolution**: Directory imports now correctly resolve to `/index.js`
42
+ - **Updated fix-imports script**: Now handles directory-based imports properly
43
+ - **Renamed to CommonJS**: `scripts/fix-imports.cjs` for ESM package compatibility
44
+
45
+ ### ๐Ÿ“Š Performance
46
+ VLD continues to outperform Zod across all benchmarks:
47
+ - **2.52x faster** average performance
48
+ - **9/10 benchmark wins** vs Zod
49
+ - **2.41x less memory** usage overall
50
+ - **83x faster** schema creation
51
+
52
+ ### ๐Ÿงช Testing
53
+ - **49 test suites** - All passing
54
+ - **1142 tests** - Comprehensive coverage
55
+ - **TypeScript strict mode** - Full type safety verified
56
+
8
57
  ## [1.3.1] - 2025-11-12
9
58
 
10
59
  ### ๐ŸŽฏ **100% Test Success Rate Achieved**