@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
@@ -1 +1 @@
1
- {"version":3,"file":"th.js","sourceRoot":"","sources":["../../src/locales/th.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const th: LocaleMessages = {\n // String validation messages\n invalidString: 'ข้อความไม่ถูกต้อง',\n stringMin: (min: number) => `ข้อความต้องมีความยาวอย่างน้อย ${min} ตัวอักษร`,\n stringMax: (max: number) => `ข้อความต้องมีความยาวไม่เกิน ${max} ตัวอักษร`,\n stringLength: (length: number) => `ข้อความต้องมีความยาวเท่ากับ ${length} ตัวอักษร`,\n stringEmail: 'อีเมลไม่ถูกต้อง',\n stringUrl: 'URL ไม่ถูกต้อง',\n stringUuid: 'UUID ไม่ถูกต้อง',\n stringRegex: 'รูปแบบไม่ถูกต้อง',\n stringStartsWith: (prefix: string) => `ข้อความต้องเริ่มต้นด้วย \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `ข้อความต้องลงท้ายด้วย \"${suffix}\"`,\n stringIncludes: (substring: string) => `ข้อความต้องมี \"${substring}\"`,\n stringIp: 'IP address ไม่ถูกต้อง',\n stringIpv4: 'IPv4 address ไม่ถูกต้อง',\n stringIpv6: 'IPv6 address ไม่ถูกต้อง',\n stringEmpty: 'ข้อความไม่สามารถเป็นค่าว่างได้',\n\n // Number validation messages\n invalidNumber: 'ตัวเลขไม่ถูกต้อง',\n numberMin: (min: number) => `ตัวเลขต้องมีค่าอย่างน้อย ${min}`,\n numberMax: (max: number) => `ตัวเลขต้องมีค่าไม่เกิน ${max}`,\n numberInt: 'ตัวเลขต้องเป็นจำนวนเต็ม',\n numberPositive: 'ตัวเลขต้องเป็นค่าบวก',\n numberNegative: 'ตัวเลขต้องเป็นค่าลบ',\n numberNonnegative: 'ตัวเลขไม่สามารถเป็นค่าลบได้',\n numberNonpositive: 'ตัวเลขไม่สามารถเป็นค่าบวกได้',\n numberFinite: 'ตัวเลขต้องเป็นค่าจำกัด',\n numberSafe: 'ตัวเลขต้องเป็นจำนวนเต็มที่ปลอดภัย',\n numberMultipleOf: (value: number) => `ตัวเลขต้องเป็นหลายเท่าของ ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'ค่า Boolean ไม่ถูกต้อง',\n\n // Date validation messages\n invalidDate: 'วันที่ไม่ถูกต้อง',\n dateMin: (date: Date) => `วันที่ต้องหลังจาก ${date.toISOString()}`,\n dateMax: (date: Date) => `วันที่ต้องก่อน ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Object ไม่ถูกต้อง',\n unexpectedKeys: (keys: string[]) => `Key ที่ไม่คาดหวัง: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Array ไม่ถูกต้อง',\n arrayMin: (min: number) => `Array ต้องมีสมาชิกอย่างน้อย ${min} ตัว`,\n arrayMax: (max: number) => `Array ต้องมีสมาชิกไม่เกิน ${max} ตัว`,\n arrayLength: (length: number) => `Array ต้องมีสมาชิกเท่ากับ ${length} ตัว`,\n arrayEmpty: 'Array ไม่สามารถเป็นค่าว่างได้',\n arrayItem: (index: number, error: string) => `สมาชิกที่ตำแหน่ง ${index} ไม่ถูกต้อง: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `ฟิลด์ \"${field}\" ไม่ถูกต้อง: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `ไม่มี union member ที่ตรงกัน: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `การตรวจสอบ intersection ล้มเหลว: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `คาดหวัง ${expected}, ได้รับ ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `คาดหวังค่าใดค่าหนึ่งจาก [${values.join(', ')}], ได้รับ ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'คาดหวัง undefined',\n neverType: 'ไม่สามารถ parse ประเภท never ได้',\n\n // New advanced type validation messages\n invalidBigint: 'bigint ไม่ถูกต้อง',\n invalidSymbol: 'symbol ไม่ถูกต้อง',\n invalidTuple: 'tuple ไม่ถูกต้อง',\n tupleLength: (expected: number, received: number) => `tuple ต้องมีสมาชิกเท่ากับ ${expected} ตัว, ได้รับ ${received} ตัว`,\n invalidRecord: 'record ไม่ถูกต้อง',\n invalidSet: 'Set ไม่ถูกต้อง',\n invalidMap: 'Map ไม่ถูกต้อง',\n \n // Transformation and refinement messages\n transformError: (error: string) => `การแปลงล้มเหลว: ${error}`,\n refinementError: (error: string) => `การปรับแต่งล้มเหลว: ${error}`,\n customValidationError: (error: string) => `การตรวจสอบแบบกำหนดเองล้มเหลว: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `ไม่สามารถแปลง ${JSON.stringify(value)} เป็น ${type} ได้`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
1
+ {"version":3,"file":"th.js","sourceRoot":"","sources":["../../src/locales/th.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAmB;IAChC,6BAA6B;IAC7B,aAAa,EAAE,mBAAmB;IAClC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iCAAiC,GAAG,WAAW;IAC3E,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,+BAA+B,GAAG,WAAW;IACzE,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,+BAA+B,MAAM,WAAW;IAClF,WAAW,EAAE,iBAAiB;IAC9B,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,WAAW,EAAE,kBAAkB;IAC/B,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,4BAA4B,MAAM,GAAG;IAC3E,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,0BAA0B,MAAM,GAAG;IACvE,cAAc,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,kBAAkB,SAAS,GAAG;IACrE,QAAQ,EAAE,uBAAuB;IACjC,UAAU,EAAE,yBAAyB;IACrC,UAAU,EAAE,yBAAyB;IACrC,WAAW,EAAE,gCAAgC;IAE7C,6BAA6B;IAC7B,aAAa,EAAE,kBAAkB;IACjC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,4BAA4B,GAAG,EAAE;IAC7D,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,EAAE;IAC3D,SAAS,EAAE,yBAAyB;IACpC,cAAc,EAAE,sBAAsB;IACtC,cAAc,EAAE,qBAAqB;IACrC,iBAAiB,EAAE,6BAA6B;IAChD,iBAAiB,EAAE,8BAA8B;IACjD,YAAY,EAAE,wBAAwB;IACtC,UAAU,EAAE,mCAAmC;IAC/C,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,6BAA6B,KAAK,EAAE;IAEzE,8BAA8B;IAC9B,cAAc,EAAE,wBAAwB;IAExC,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE,EAAE;IAClE,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE,EAAE;IAE/D,6BAA6B;IAC7B,aAAa,EAAE,mBAAmB;IAClC,cAAc,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAE3E,4BAA4B;IAC5B,YAAY,EAAE,kBAAkB;IAChC,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,+BAA+B,GAAG,MAAM;IACnE,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,MAAM;IACjE,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,6BAA6B,MAAM,MAAM;IAC1E,UAAU,EAAE,+BAA+B;IAC3C,SAAS,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,oBAAoB,KAAK,gBAAgB,KAAK,EAAE;IAE7F,0BAA0B;IAC1B,WAAW,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,UAAU,KAAK,iBAAiB,KAAK,EAAE;IAEtF,4BAA4B;IAC5B,YAAY,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,iCAAiC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAExF,mCAAmC;IACnC,iBAAiB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,oCAAoC,KAAK,EAAE;IAEjF,8BAA8B;IAC9B,eAAe,EAAE,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE,CAAC,WAAW,QAAQ,YAAY,QAAQ,EAAE;IAElG,2BAA2B;IAC3B,YAAY,EAAE,CAAC,MAAa,EAAE,QAAgB,EAAE,EAAE,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE;IAEvH,mCAAmC;IACnC,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,kCAAkC;IAE7C,wCAAwC;IACxC,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE,CAAC,6BAA6B,QAAQ,gBAAgB,QAAQ,MAAM;IACxH,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;IAE5B,yCAAyC;IACzC,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,mBAAmB,KAAK,EAAE;IAC7D,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,uBAAuB,KAAK,EAAE;IAClE,qBAAqB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,iCAAiC,KAAK,EAAE;IAElF,oBAAoB;IACpB,cAAc,EAAE,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM;IAE3G,iBAAiB;IACjB,iBAAiB,EAAE,wBAAwB;IAC3C,iBAAiB,EAAE,wBAAwB;IAC3C,sBAAsB,EAAE,qEAAqE;IAE7F,sBAAsB;IACtB,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,4BAA4B;IAExC,sBAAsB;IACtB,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iCAAiC,GAAG,QAAQ;IAClF,mBAAmB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAgC,GAAG,QAAQ;IACjF,qBAAqB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,gCAAgC,MAAM,QAAQ;IAEzF,8BAA8B;IAC9B,cAAc,EAAE,iBAAiB;IACjC,cAAc,EAAE,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE,CAAC,WAAW,QAAQ,YAAY,QAAQ,EAAE;IACjG,kBAAkB,EAAE,CAAC,WAAmB,EAAE,QAAgB,EAAE,EAAE,CAAC,iDAAiD,WAAW,cAAc,QAAQ,GAAG;IACpJ,WAAW,EAAE,iBAAiB;IAC9B,oBAAoB,EAAE,+BAA+B;IAErD,2BAA2B;IAC3B,WAAW,EAAE,wBAAwB;IACrC,gBAAgB,EAAE,4CAA4C;IAC9D,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,8BAA8B,GAAG,QAAQ;IACvE,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,6BAA6B,GAAG,QAAQ;IACtE,YAAY,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,gCAAgC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACzF,+BAA+B;IAC/B,eAAe,EAAE,iBAAiB;IAElC,2BAA2B;IAC3B,YAAY,EAAE,4BAA4B;IAC1C,YAAY,EAAE,4BAA4B;IAE1C,kCAAkC;IAClC,iBAAiB,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;CACxH,CAAC","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const th: LocaleMessages = {\n // String validation messages\n invalidString: 'ข้อความไม่ถูกต้อง',\n stringMin: (min: number) => `ข้อความต้องมีความยาวอย่างน้อย ${min} ตัวอักษร`,\n stringMax: (max: number) => `ข้อความต้องมีความยาวไม่เกิน ${max} ตัวอักษร`,\n stringLength: (length: number) => `ข้อความต้องมีความยาวเท่ากับ ${length} ตัวอักษร`,\n stringEmail: 'อีเมลไม่ถูกต้อง',\n stringUrl: 'URL ไม่ถูกต้อง',\n stringUuid: 'UUID ไม่ถูกต้อง',\n stringRegex: 'รูปแบบไม่ถูกต้อง',\n stringStartsWith: (prefix: string) => `ข้อความต้องเริ่มต้นด้วย \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `ข้อความต้องลงท้ายด้วย \"${suffix}\"`,\n stringIncludes: (substring: string) => `ข้อความต้องมี \"${substring}\"`,\n stringIp: 'IP address ไม่ถูกต้อง',\n stringIpv4: 'IPv4 address ไม่ถูกต้อง',\n stringIpv6: 'IPv6 address ไม่ถูกต้อง',\n stringEmpty: 'ข้อความไม่สามารถเป็นค่าว่างได้',\n\n // Number validation messages\n invalidNumber: 'ตัวเลขไม่ถูกต้อง',\n numberMin: (min: number) => `ตัวเลขต้องมีค่าอย่างน้อย ${min}`,\n numberMax: (max: number) => `ตัวเลขต้องมีค่าไม่เกิน ${max}`,\n numberInt: 'ตัวเลขต้องเป็นจำนวนเต็ม',\n numberPositive: 'ตัวเลขต้องเป็นค่าบวก',\n numberNegative: 'ตัวเลขต้องเป็นค่าลบ',\n numberNonnegative: 'ตัวเลขไม่สามารถเป็นค่าลบได้',\n numberNonpositive: 'ตัวเลขไม่สามารถเป็นค่าบวกได้',\n numberFinite: 'ตัวเลขต้องเป็นค่าจำกัด',\n numberSafe: 'ตัวเลขต้องเป็นจำนวนเต็มที่ปลอดภัย',\n numberMultipleOf: (value: number) => `ตัวเลขต้องเป็นหลายเท่าของ ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'ค่า Boolean ไม่ถูกต้อง',\n\n // Date validation messages\n invalidDate: 'วันที่ไม่ถูกต้อง',\n dateMin: (date: Date) => `วันที่ต้องหลังจาก ${date.toISOString()}`,\n dateMax: (date: Date) => `วันที่ต้องก่อน ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Object ไม่ถูกต้อง',\n unexpectedKeys: (keys: string[]) => `Key ที่ไม่คาดหวัง: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Array ไม่ถูกต้อง',\n arrayMin: (min: number) => `Array ต้องมีสมาชิกอย่างน้อย ${min} ตัว`,\n arrayMax: (max: number) => `Array ต้องมีสมาชิกไม่เกิน ${max} ตัว`,\n arrayLength: (length: number) => `Array ต้องมีสมาชิกเท่ากับ ${length} ตัว`,\n arrayEmpty: 'Array ไม่สามารถเป็นค่าว่างได้',\n arrayItem: (index: number, error: string) => `สมาชิกที่ตำแหน่ง ${index} ไม่ถูกต้อง: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `ฟิลด์ \"${field}\" ไม่ถูกต้อง: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `ไม่มี union member ที่ตรงกัน: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `การตรวจสอบ intersection ล้มเหลว: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `คาดหวัง ${expected}, ได้รับ ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `คาดหวังค่าใดค่าหนึ่งจาก [${values.join(', ')}], ได้รับ ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'คาดหวัง undefined',\n neverType: 'ไม่สามารถ parse ประเภท never ได้',\n\n // New advanced type validation messages\n invalidBigint: 'bigint ไม่ถูกต้อง',\n invalidSymbol: 'symbol ไม่ถูกต้อง',\n invalidTuple: 'tuple ไม่ถูกต้อง',\n tupleLength: (expected: number, received: number) => `tuple ต้องมีสมาชิกเท่ากับ ${expected} ตัว, ได้รับ ${received} ตัว`,\n invalidRecord: 'record ไม่ถูกต้อง',\n invalidSet: 'Set ไม่ถูกต้อง',\n invalidMap: 'Map ไม่ถูกต้อง',\n \n // Transformation and refinement messages\n transformError: (error: string) => `การแปลงล้มเหลว: ${error}`,\n refinementError: (error: string) => `การปรับแต่งล้มเหลว: ${error}`,\n customValidationError: (error: string) => `การตรวจสอบแบบกำหนดเองล้มเหลว: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `ไม่สามารถแปลง ${JSON.stringify(value)} เป็น ${type} ได้`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string',\n stringExpected: (received: string, expected: string) => `คาดหวัง ${expected}, ได้รับ ${received}`,\n stringBoolExpected: (validValues: string, received: string) => `สตริงบูลีนไม่ถูกต้อง คาดว่าจะเป็นหนึ่งในนั้น: ${validValues}, ได้รับ: \"${received}\"`,\n invalidJson: 'JSON ไม่ถูกต้อง',\n stringPatternInvalid: 'สตริงไม่ตรงกับรูปแบบที่จำเป็น',\n\n // File validation messages\n invalidFile: 'Expected a File object',\n fileNotSupported: 'File API not supported in this environment',\n fileMinSize: (min: number) => `File size must be at least ${min} bytes`,\n fileMaxSize: (max: number) => `File size must not exceed ${max} bytes`,\n fileMimeType: (allowed: string[]) => `Invalid file type. Expected: ${allowed.join(\", \")}`,\n // Function validation messages\n invalidFunction: 'คาดหวังฟังก์ชัน',\n\n // CIDR validation messages\n stringCidrv4: 'บล็อก CIDR IPv4 ไม่ถูกต้อง',\n stringCidrv6: 'บล็อก CIDR IPv6 ไม่ถูกต้อง',\n\n // Safe extend validation messages\n safeExtendOverlap: (keys: string[]) => `ไม่สามารถเขียนทับคีย์ที่มีอยู่: ${keys.join(', ')}. ใช้ extend() เพื่อเขียนทับ`\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cAwGhB,CAAC"}
1
+ {"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cA6HhB,CAAC"}
@@ -83,6 +83,23 @@ export const tr = {
83
83
  uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
84
84
  uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
85
85
  // Generic type error messages
86
- expectedString: 'Expected string'
86
+ expectedString: 'Expected string',
87
+ stringExpected: (received, expected) => `Beklenen: ${expected}, alınan: ${received}`,
88
+ stringBoolExpected: (validValues, received) => `Geçersiz boolean string. Şunlardan biri olmalı: ${validValues}, alınan: "${received}"`,
89
+ invalidJson: 'Geçersiz JSON',
90
+ stringPatternInvalid: 'Dize gerekli kalıpla eşleşmiyor',
91
+ // File validation messages
92
+ invalidFile: 'Expected a File object',
93
+ fileNotSupported: 'File API not supported in this environment',
94
+ fileMinSize: (min) => `File size must be at least ${min} bytes`,
95
+ fileMaxSize: (max) => `File size must not exceed ${max} bytes`,
96
+ fileMimeType: (allowed) => `Invalid file type. Expected: ${allowed.join(", ")}`,
97
+ // Function validation messages
98
+ invalidFunction: 'Bir fonksiyon bekleniyor',
99
+ // CIDR validation messages
100
+ stringCidrv4: 'Geçersiz IPv4 CIDR bloğu',
101
+ stringCidrv6: 'Geçersiz IPv6 CIDR bloğu',
102
+ // Safe extend validation messages
103
+ safeExtendOverlap: (keys) => `Mevcut anahtarlar üzerine yazılamaz: ${keys.join(', ')}. Üzerine yazmak istiyorsanız extend() kullanın.`
87
104
  };
88
105
  //# sourceMappingURL=tr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tr.js","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const tr: LocaleMessages = {\n // String validation messages\n invalidString: 'Geçersiz metin',\n stringMin: (min: number) => `Metin en az ${min} karakter olmalı`,\n stringMax: (max: number) => `Metin en fazla ${max} karakter olmalı`,\n stringLength: (length: number) => `Metin tam olarak ${length} karakter olmalı`,\n stringEmail: 'Geçersiz e-posta adresi',\n stringUrl: 'Geçersiz URL',\n stringUuid: 'Geçersiz UUID',\n stringRegex: 'Geçersiz format',\n stringStartsWith: (prefix: string) => `Metin \"${prefix}\" ile başlamalı`,\n stringEndsWith: (suffix: string) => `Metin \"${suffix}\" ile bitmeli`,\n stringIncludes: (substring: string) => `Metin \"${substring}\" içermeli`,\n stringIp: 'Geçersiz IP adresi',\n stringIpv4: 'Geçersiz IPv4 adresi',\n stringIpv6: 'Geçersiz IPv6 adresi',\n stringEmpty: 'Metin boş olmamalı',\n\n // Number validation messages\n invalidNumber: 'Geçersiz sayı',\n numberMin: (min: number) => `Sayı en az ${min} olmalı`,\n numberMax: (max: number) => `Sayı en fazla ${max} olmalı`,\n numberInt: 'Sayı tam sayı olmalı',\n numberPositive: 'Sayı pozitif olmalı',\n numberNegative: 'Sayı negatif olmalı',\n numberNonnegative: 'Sayı negatif olmamalı',\n numberNonpositive: 'Sayı pozitif olmamalı',\n numberFinite: 'Sayı sonlu olmalı',\n numberSafe: 'Sayı güvenli tam sayı olmalı',\n numberMultipleOf: (value: number) => `Sayı ${value}'nin katı olmalı`,\n\n // Boolean validation messages\n invalidBoolean: 'Geçersiz boolean',\n\n // Date validation messages\n invalidDate: 'Geçersiz tarih',\n dateMin: (date: Date) => `Tarih ${date.toISOString()} sonrasında olmalı`,\n dateMax: (date: Date) => `Tarih ${date.toISOString()} öncesinde olmalı`,\n\n // Object validation messages\n invalidObject: 'Geçersiz nesne',\n unexpectedKeys: (keys: string[]) => `Beklenmeyen anahtarlar: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Geçersiz dizi',\n arrayMin: (min: number) => `Dizi en az ${min} eleman içermeli`,\n arrayMax: (max: number) => `Dizi en fazla ${max} eleman içermeli`,\n arrayLength: (length: number) => `Dizi tam olarak ${length} eleman içermeli`,\n arrayEmpty: 'Dizi boş olmamalı',\n arrayItem: (index: number, error: string) => `${index} indeksindeki eleman geçersiz: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `\"${field}\" alanı geçersiz: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Hiçbir union üyesi eşleşmedi: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Intersection doğrulaması başarısız: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `${expected} beklendi, ${received} alındı`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `[${values.join(', ')}] değerlerinden biri beklendi, ${received} alındı`,\n\n // Special type validation messages\n expectedUndefined: 'Undefined beklendi',\n neverType: 'Never tipi parse edilemez',\n\n // New advanced type validation messages\n invalidBigint: 'Geçersiz bigint',\n invalidSymbol: 'Geçersiz symbol',\n invalidTuple: 'Geçersiz tuple',\n tupleLength: (expected: number, received: number) => `Tuple tam olarak ${expected} elemana sahip olmalı, ${received} aldı`,\n invalidRecord: 'Geçersiz record',\n invalidSet: 'Geçersiz set',\n invalidMap: 'Geçersiz map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Dönüştürme başarısız: ${error}`,\n refinementError: (error: string) => `Doğrulama başarısız: ${error}`,\n customValidationError: (error: string) => `Özel doğrulama başarısız: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `${JSON.stringify(value)} değeri ${type} tipine dönüştürülemez`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
1
+ {"version":3,"file":"tr.js","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const tr: LocaleMessages = {\n // String validation messages\n invalidString: 'Geçersiz metin',\n stringMin: (min: number) => `Metin en az ${min} karakter olmalı`,\n stringMax: (max: number) => `Metin en fazla ${max} karakter olmalı`,\n stringLength: (length: number) => `Metin tam olarak ${length} karakter olmalı`,\n stringEmail: 'Geçersiz e-posta adresi',\n stringUrl: 'Geçersiz URL',\n stringUuid: 'Geçersiz UUID',\n stringRegex: 'Geçersiz format',\n stringStartsWith: (prefix: string) => `Metin \"${prefix}\" ile başlamalı`,\n stringEndsWith: (suffix: string) => `Metin \"${suffix}\" ile bitmeli`,\n stringIncludes: (substring: string) => `Metin \"${substring}\" içermeli`,\n stringIp: 'Geçersiz IP adresi',\n stringIpv4: 'Geçersiz IPv4 adresi',\n stringIpv6: 'Geçersiz IPv6 adresi',\n stringEmpty: 'Metin boş olmamalı',\n\n // Number validation messages\n invalidNumber: 'Geçersiz sayı',\n numberMin: (min: number) => `Sayı en az ${min} olmalı`,\n numberMax: (max: number) => `Sayı en fazla ${max} olmalı`,\n numberInt: 'Sayı tam sayı olmalı',\n numberPositive: 'Sayı pozitif olmalı',\n numberNegative: 'Sayı negatif olmalı',\n numberNonnegative: 'Sayı negatif olmamalı',\n numberNonpositive: 'Sayı pozitif olmamalı',\n numberFinite: 'Sayı sonlu olmalı',\n numberSafe: 'Sayı güvenli tam sayı olmalı',\n numberMultipleOf: (value: number) => `Sayı ${value}'nin katı olmalı`,\n\n // Boolean validation messages\n invalidBoolean: 'Geçersiz boolean',\n\n // Date validation messages\n invalidDate: 'Geçersiz tarih',\n dateMin: (date: Date) => `Tarih ${date.toISOString()} sonrasında olmalı`,\n dateMax: (date: Date) => `Tarih ${date.toISOString()} öncesinde olmalı`,\n\n // Object validation messages\n invalidObject: 'Geçersiz nesne',\n unexpectedKeys: (keys: string[]) => `Beklenmeyen anahtarlar: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Geçersiz dizi',\n arrayMin: (min: number) => `Dizi en az ${min} eleman içermeli`,\n arrayMax: (max: number) => `Dizi en fazla ${max} eleman içermeli`,\n arrayLength: (length: number) => `Dizi tam olarak ${length} eleman içermeli`,\n arrayEmpty: 'Dizi boş olmamalı',\n arrayItem: (index: number, error: string) => `${index} indeksindeki eleman geçersiz: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `\"${field}\" alanı geçersiz: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Hiçbir union üyesi eşleşmedi: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Intersection doğrulaması başarısız: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `${expected} beklendi, ${received} alındı`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `[${values.join(', ')}] değerlerinden biri beklendi, ${received} alındı`,\n\n // Special type validation messages\n expectedUndefined: 'Undefined beklendi',\n neverType: 'Never tipi parse edilemez',\n\n // New advanced type validation messages\n invalidBigint: 'Geçersiz bigint',\n invalidSymbol: 'Geçersiz symbol',\n invalidTuple: 'Geçersiz tuple',\n tupleLength: (expected: number, received: number) => `Tuple tam olarak ${expected} elemana sahip olmalı, ${received} aldı`,\n invalidRecord: 'Geçersiz record',\n invalidSet: 'Geçersiz set',\n invalidMap: 'Geçersiz map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Dönüştürme başarısız: ${error}`,\n refinementError: (error: string) => `Doğrulama başarısız: ${error}`,\n customValidationError: (error: string) => `Özel doğrulama başarısız: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `${JSON.stringify(value)} değeri ${type} tipine dönüştürülemez`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string',\n stringExpected: (received: string, expected: string) => `Beklenen: ${expected}, alınan: ${received}`,\n stringBoolExpected: (validValues: string, received: string) => `Geçersiz boolean string. Şunlardan biri olmalı: ${validValues}, alınan: \"${received}\"`,\n invalidJson: 'Geçersiz JSON',\n stringPatternInvalid: 'Dize gerekli kalıpla eşleşmiyor',\n\n // File validation messages\n invalidFile: 'Expected a File object',\n fileNotSupported: 'File API not supported in this environment',\n fileMinSize: (min: number) => `File size must be at least ${min} bytes`,\n fileMaxSize: (max: number) => `File size must not exceed ${max} bytes`,\n fileMimeType: (allowed: string[]) => `Invalid file type. Expected: ${allowed.join(\", \")}`,\n\n // Function validation messages\n invalidFunction: 'Bir fonksiyon bekleniyor',\n\n // CIDR validation messages\n stringCidrv4: 'Geçersiz IPv4 CIDR bloğu',\n stringCidrv6: 'Geçersiz IPv6 CIDR bloğu',\n\n // Safe extend validation messages\n safeExtendOverlap: (keys: string[]) => `Mevcut anahtarlar üzerine yazılamaz: ${keys.join(', ')}. Üzerine yazmak istiyorsanız extend() kullanın.`\n};\n"]}
@@ -66,5 +66,18 @@ export interface LocaleMessages {
66
66
  uint8ArrayMaxLength: (max: number) => string;
67
67
  uint8ArrayExactLength: (length: number) => string;
68
68
  expectedString: string;
69
+ stringExpected: (received: string, expected: string) => string;
70
+ stringBoolExpected: (validValues: string, received: string) => string;
71
+ invalidJson: string;
72
+ stringPatternInvalid: string;
73
+ invalidFile: string;
74
+ fileNotSupported: string;
75
+ fileMinSize: (min: number) => string;
76
+ fileMaxSize: (max: number) => string;
77
+ fileMimeType: (allowed: string[]) => string;
78
+ invalidFunction: string;
79
+ stringCidrv4: string;
80
+ stringCidrv6: string;
81
+ safeExtendOverlap: (keys: string[]) => string;
69
82
  }
70
83
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"","sourcesContent":["export type Locale = \n | 'en' | 'tr' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ru' | 'ja' | 'ko' | 'zh' | 'ar' | 'hi' | 'nl' | 'pl'\n // Major European Languages \n | 'da' | 'sv' | 'no' | 'fi' | 'is' | 'cs' | 'sk' | 'hu' | 'ro' | 'bg' | 'hr' | 'sl' | 'lv' | 'lt' | 'et'\n | 'el' | 'mk' | 'sq' | 'sr' | 'bs' | 'me' | 'mt' | 'ga' | 'cy' | 'eu' | 'ca'\n // Major Asian Languages\n | 'th' | 'vi' | 'id' | 'ms' | 'tl' | 'bn' | 'ur' | 'fa' | 'he' | 'ka' | 'am' | 'hy' | 'az' | 'kk' | 'ky'\n | 'uz' | 'tg' | 'mn' | 'my' | 'km' | 'lo' | 'si' | 'ta' | 'te' | 'ml' | 'kn' | 'gu' | 'pa' | 'or' | 'as'\n | 'ne' | 'mr' | 'sd' | 'dv'\n // African Languages\n | 'sw' | 'am' | 'ha' | 'yo' | 'ig' | 'zu' | 'xh' | 'af' | 'st' | 'tn' | 'ts' | 've' | 'nr' | 'ss'\n // American Languages \n | 'pt-BR' | 'es-MX' | 'es-AR' | 'fr-CA' | 'qu' | 'gn' | 'ay';\n\nexport interface LocaleMessages {\n // String validation messages\n invalidString: string;\n stringMin: (min: number) => string;\n stringMax: (max: number) => string;\n stringLength: (length: number) => string;\n stringEmail: string;\n stringUrl: string;\n stringUuid: string;\n stringRegex: string;\n stringStartsWith: (prefix: string) => string;\n stringEndsWith: (suffix: string) => string;\n stringIncludes: (substring: string) => string;\n stringIp: string;\n stringIpv4: string;\n stringIpv6: string;\n stringEmpty: string;\n\n // Number validation messages \n invalidNumber: string;\n numberMin: (min: number) => string;\n numberMax: (max: number) => string;\n numberInt: string;\n numberPositive: string;\n numberNegative: string;\n numberNonnegative: string;\n numberNonpositive: string;\n numberFinite: string;\n numberSafe: string;\n numberMultipleOf: (value: number) => string;\n\n // Boolean validation messages\n invalidBoolean: string;\n\n // Date validation messages\n invalidDate: string;\n dateMin: (date: Date) => string;\n dateMax: (date: Date) => string;\n\n // Object validation messages\n invalidObject: string;\n unexpectedKeys: (keys: string[]) => string;\n\n // Array validation messages\n invalidArray: string;\n arrayMin: (min: number) => string;\n arrayMax: (max: number) => string;\n arrayLength: (length: number) => string;\n arrayEmpty: string;\n arrayItem: (index: number, error: string) => string;\n\n // Object field validation\n objectField: (field: string, error: string) => string;\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => string;\n\n // Intersection validation messages\n intersectionError: (error: string) => string;\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => string;\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => string;\n\n // Special type validation messages\n expectedUndefined: string;\n neverType: string;\n\n // New advanced type validation messages\n invalidBigint: string;\n invalidSymbol: string;\n invalidTuple: string;\n tupleLength: (expected: number, received: number) => string;\n invalidRecord: string;\n invalidSet: string;\n invalidMap: string;\n \n // Transformation and refinement messages\n transformError: (error: string) => string;\n refinementError: (error: string) => string;\n customValidationError: (error: string) => string;\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => string;\n \n // Codec messages\n codecDecodeFailed: string;\n codecEncodeFailed: string;\n codecAsyncNotSupported: string;\n \n // Base64/Hex messages\n invalidBase64: string;\n invalidHex: string;\n \n // Uint8Array messages\n expectedUint8Array: string;\n uint8ArrayMinLength: (min: number) => string;\n uint8ArrayMaxLength: (max: number) => string;\n uint8ArrayExactLength: (length: number) => string;\n \n // Generic type error messages\n expectedString: string;\n}"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"","sourcesContent":["export type Locale = \n | 'en' | 'tr' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ru' | 'ja' | 'ko' | 'zh' | 'ar' | 'hi' | 'nl' | 'pl'\n // Major European Languages \n | 'da' | 'sv' | 'no' | 'fi' | 'is' | 'cs' | 'sk' | 'hu' | 'ro' | 'bg' | 'hr' | 'sl' | 'lv' | 'lt' | 'et'\n | 'el' | 'mk' | 'sq' | 'sr' | 'bs' | 'me' | 'mt' | 'ga' | 'cy' | 'eu' | 'ca'\n // Major Asian Languages\n | 'th' | 'vi' | 'id' | 'ms' | 'tl' | 'bn' | 'ur' | 'fa' | 'he' | 'ka' | 'am' | 'hy' | 'az' | 'kk' | 'ky'\n | 'uz' | 'tg' | 'mn' | 'my' | 'km' | 'lo' | 'si' | 'ta' | 'te' | 'ml' | 'kn' | 'gu' | 'pa' | 'or' | 'as'\n | 'ne' | 'mr' | 'sd' | 'dv'\n // African Languages\n | 'sw' | 'am' | 'ha' | 'yo' | 'ig' | 'zu' | 'xh' | 'af' | 'st' | 'tn' | 'ts' | 've' | 'nr' | 'ss'\n // American Languages \n | 'pt-BR' | 'es-MX' | 'es-AR' | 'fr-CA' | 'qu' | 'gn' | 'ay';\n\nexport interface LocaleMessages {\n // String validation messages\n invalidString: string;\n stringMin: (min: number) => string;\n stringMax: (max: number) => string;\n stringLength: (length: number) => string;\n stringEmail: string;\n stringUrl: string;\n stringUuid: string;\n stringRegex: string;\n stringStartsWith: (prefix: string) => string;\n stringEndsWith: (suffix: string) => string;\n stringIncludes: (substring: string) => string;\n stringIp: string;\n stringIpv4: string;\n stringIpv6: string;\n stringEmpty: string;\n\n // Number validation messages \n invalidNumber: string;\n numberMin: (min: number) => string;\n numberMax: (max: number) => string;\n numberInt: string;\n numberPositive: string;\n numberNegative: string;\n numberNonnegative: string;\n numberNonpositive: string;\n numberFinite: string;\n numberSafe: string;\n numberMultipleOf: (value: number) => string;\n\n // Boolean validation messages\n invalidBoolean: string;\n\n // Date validation messages\n invalidDate: string;\n dateMin: (date: Date) => string;\n dateMax: (date: Date) => string;\n\n // Object validation messages\n invalidObject: string;\n unexpectedKeys: (keys: string[]) => string;\n\n // Array validation messages\n invalidArray: string;\n arrayMin: (min: number) => string;\n arrayMax: (max: number) => string;\n arrayLength: (length: number) => string;\n arrayEmpty: string;\n arrayItem: (index: number, error: string) => string;\n\n // Object field validation\n objectField: (field: string, error: string) => string;\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => string;\n\n // Intersection validation messages\n intersectionError: (error: string) => string;\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => string;\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => string;\n\n // Special type validation messages\n expectedUndefined: string;\n neverType: string;\n\n // New advanced type validation messages\n invalidBigint: string;\n invalidSymbol: string;\n invalidTuple: string;\n tupleLength: (expected: number, received: number) => string;\n invalidRecord: string;\n invalidSet: string;\n invalidMap: string;\n \n // Transformation and refinement messages\n transformError: (error: string) => string;\n refinementError: (error: string) => string;\n customValidationError: (error: string) => string;\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => string;\n \n // Codec messages\n codecDecodeFailed: string;\n codecEncodeFailed: string;\n codecAsyncNotSupported: string;\n \n // Base64/Hex messages\n invalidBase64: string;\n invalidHex: string;\n \n // Uint8Array messages\n expectedUint8Array: string;\n uint8ArrayMinLength: (min: number) => string;\n uint8ArrayMaxLength: (max: number) => string;\n uint8ArrayExactLength: (length: number) => string;\n\n // Generic type error messages\n expectedString: string;\n stringExpected: (received: string, expected: string) => string;\n stringBoolExpected: (validValues: string, received: string) => string;\n invalidJson: string;\n stringPatternInvalid: string;\n\n // File validation messages\n invalidFile: string;\n fileNotSupported: string;\n fileMinSize: (min: number) => string;\n fileMaxSize: (max: number) => string;\n fileMimeType: (allowed: string[]) => string;\n\n // Function validation messages\n invalidFunction: string;\n\n // CIDR validation messages\n stringCidrv4: string;\n stringCidrv6: string;\n\n // Safe extend validation messages\n safeExtendOverlap: (keys: string[]) => string;\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vi.d.ts","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cAwGhB,CAAC"}
1
+ {"version":3,"file":"vi.d.ts","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cA4HhB,CAAC"}
@@ -83,6 +83,23 @@ export const vi = {
83
83
  uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
84
84
  uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
85
85
  // Generic type error messages
86
- expectedString: 'Expected string'
86
+ expectedString: 'Expected string',
87
+ stringExpected: (received, expected) => `Mong đợi ${expected}, nhận được ${received}`,
88
+ stringBoolExpected: (validValues, received) => `Chuỗi boolean không hợp lệ. Mong đợi một trong các: ${validValues}, nhận được: "${received}"`,
89
+ invalidJson: 'JSON không hợp lệ',
90
+ stringPatternInvalid: 'Chuỗi không khớp với mẫu bắt buộc',
91
+ // File validation messages
92
+ invalidFile: 'Expected a File object',
93
+ fileNotSupported: 'File API not supported in this environment',
94
+ fileMinSize: (min) => `File size must be at least ${min} bytes`,
95
+ fileMaxSize: (max) => `File size must not exceed ${max} bytes`,
96
+ fileMimeType: (allowed) => `Invalid file type. Expected: ${allowed.join(", ")}`,
97
+ // Function validation messages
98
+ invalidFunction: 'Mong đợi một hàm',
99
+ // CIDR validation messages
100
+ stringCidrv4: 'Khối CIDR IPv4 không hợp lệ',
101
+ stringCidrv6: 'Khối CIDR IPv6 không hợp lệ',
102
+ // Safe extend validation messages
103
+ safeExtendOverlap: (keys) => `Không thể ghi đè các khóa hiện có: ${keys.join(', ')}. Sử dụng extend() để ghi đè.`
87
104
  };
88
105
  //# sourceMappingURL=vi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vi.js","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const vi: LocaleMessages = {\n // String validation messages\n invalidString: 'Chuỗi không hợp lệ',\n stringMin: (min: number) => `Chuỗi phải có ít nhất ${min} ký tự`,\n stringMax: (max: number) => `Chuỗi không được quá ${max} ký tự`,\n stringLength: (length: number) => `Chuỗi phải có chính xác ${length} ký tự`,\n stringEmail: 'Địa chỉ email không hợp lệ',\n stringUrl: 'URL không hợp lệ',\n stringUuid: 'UUID không hợp lệ',\n stringRegex: 'Định dạng không hợp lệ',\n stringStartsWith: (prefix: string) => `Chuỗi phải bắt đầu bằng \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `Chuỗi phải kết thúc bằng \"${suffix}\"`,\n stringIncludes: (substring: string) => `Chuỗi phải chứa \"${substring}\"`,\n stringIp: 'Địa chỉ IP không hợp lệ',\n stringIpv4: 'Địa chỉ IPv4 không hợp lệ',\n stringIpv6: 'Địa chỉ IPv6 không hợp lệ',\n stringEmpty: 'Chuỗi không được để trống',\n\n // Number validation messages\n invalidNumber: 'Số không hợp lệ',\n numberMin: (min: number) => `Số phải ít nhất là ${min}`,\n numberMax: (max: number) => `Số không được vượt quá ${max}`,\n numberInt: 'Số phải là số nguyên',\n numberPositive: 'Số phải là số dương',\n numberNegative: 'Số phải là số âm',\n numberNonnegative: 'Số không được là số âm',\n numberNonpositive: 'Số không được là số dương',\n numberFinite: 'Số phải là số hữu hạn',\n numberSafe: 'Số phải là số nguyên an toàn',\n numberMultipleOf: (value: number) => `Số phải là bội số của ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'Giá trị boolean không hợp lệ',\n\n // Date validation messages\n invalidDate: 'Ngày không hợp lệ',\n dateMin: (date: Date) => `Ngày phải sau ${date.toISOString()}`,\n dateMax: (date: Date) => `Ngày phải trước ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Đối tượng không hợp lệ',\n unexpectedKeys: (keys: string[]) => `Khóa không mong muốn: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Mảng không hợp lệ',\n arrayMin: (min: number) => `Mảng phải có ít nhất ${min} phần tử`,\n arrayMax: (max: number) => `Mảng không được quá ${max} phần tử`,\n arrayLength: (length: number) => `Mảng phải có chính xác ${length} phần tử`,\n arrayEmpty: 'Mảng không được để trống',\n arrayItem: (index: number, error: string) => `Phần tử không hợp lệ tại vị trí ${index}: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `Trường \"${field}\" không hợp lệ: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Không có thành viên union nào khớp: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Xác thực intersection thất bại: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `Mong đợi ${expected}, nhận được ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `Mong đợi một trong [${values.join(', ')}], nhận được ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'Mong đợi undefined',\n neverType: 'Không thể phân tích kiểu never',\n\n // New advanced type validation messages\n invalidBigint: 'Bigint không hợp lệ',\n invalidSymbol: 'Ký hiệu không hợp lệ',\n invalidTuple: 'Tuple không hợp lệ',\n tupleLength: (expected: number, received: number) => `Tuple phải có chính xác ${expected} phần tử, nhận được ${received}`,\n invalidRecord: 'Record không hợp lệ',\n invalidSet: 'Set không hợp lệ',\n invalidMap: 'Map không hợp lệ',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Biến đổi thất bại: ${error}`,\n refinementError: (error: string) => `Tinh chế thất bại: ${error}`,\n customValidationError: (error: string) => `Xác thực tùy chỉnh thất bại: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `Không thể ép kiểu ${JSON.stringify(value)} thành ${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
1
+ {"version":3,"file":"vi.js","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const vi: LocaleMessages = {\n // String validation messages\n invalidString: 'Chuỗi không hợp lệ',\n stringMin: (min: number) => `Chuỗi phải có ít nhất ${min} ký tự`,\n stringMax: (max: number) => `Chuỗi không được quá ${max} ký tự`,\n stringLength: (length: number) => `Chuỗi phải có chính xác ${length} ký tự`,\n stringEmail: 'Địa chỉ email không hợp lệ',\n stringUrl: 'URL không hợp lệ',\n stringUuid: 'UUID không hợp lệ',\n stringRegex: 'Định dạng không hợp lệ',\n stringStartsWith: (prefix: string) => `Chuỗi phải bắt đầu bằng \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `Chuỗi phải kết thúc bằng \"${suffix}\"`,\n stringIncludes: (substring: string) => `Chuỗi phải chứa \"${substring}\"`,\n stringIp: 'Địa chỉ IP không hợp lệ',\n stringIpv4: 'Địa chỉ IPv4 không hợp lệ',\n stringIpv6: 'Địa chỉ IPv6 không hợp lệ',\n stringEmpty: 'Chuỗi không được để trống',\n\n // Number validation messages\n invalidNumber: 'Số không hợp lệ',\n numberMin: (min: number) => `Số phải ít nhất là ${min}`,\n numberMax: (max: number) => `Số không được vượt quá ${max}`,\n numberInt: 'Số phải là số nguyên',\n numberPositive: 'Số phải là số dương',\n numberNegative: 'Số phải là số âm',\n numberNonnegative: 'Số không được là số âm',\n numberNonpositive: 'Số không được là số dương',\n numberFinite: 'Số phải là số hữu hạn',\n numberSafe: 'Số phải là số nguyên an toàn',\n numberMultipleOf: (value: number) => `Số phải là bội số của ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'Giá trị boolean không hợp lệ',\n\n // Date validation messages\n invalidDate: 'Ngày không hợp lệ',\n dateMin: (date: Date) => `Ngày phải sau ${date.toISOString()}`,\n dateMax: (date: Date) => `Ngày phải trước ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Đối tượng không hợp lệ',\n unexpectedKeys: (keys: string[]) => `Khóa không mong muốn: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Mảng không hợp lệ',\n arrayMin: (min: number) => `Mảng phải có ít nhất ${min} phần tử`,\n arrayMax: (max: number) => `Mảng không được quá ${max} phần tử`,\n arrayLength: (length: number) => `Mảng phải có chính xác ${length} phần tử`,\n arrayEmpty: 'Mảng không được để trống',\n arrayItem: (index: number, error: string) => `Phần tử không hợp lệ tại vị trí ${index}: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `Trường \"${field}\" không hợp lệ: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Không có thành viên union nào khớp: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Xác thực intersection thất bại: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `Mong đợi ${expected}, nhận được ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `Mong đợi một trong [${values.join(', ')}], nhận được ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'Mong đợi undefined',\n neverType: 'Không thể phân tích kiểu never',\n\n // New advanced type validation messages\n invalidBigint: 'Bigint không hợp lệ',\n invalidSymbol: 'Ký hiệu không hợp lệ',\n invalidTuple: 'Tuple không hợp lệ',\n tupleLength: (expected: number, received: number) => `Tuple phải có chính xác ${expected} phần tử, nhận được ${received}`,\n invalidRecord: 'Record không hợp lệ',\n invalidSet: 'Set không hợp lệ',\n invalidMap: 'Map không hợp lệ',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Biến đổi thất bại: ${error}`,\n refinementError: (error: string) => `Tinh chế thất bại: ${error}`,\n customValidationError: (error: string) => `Xác thực tùy chỉnh thất bại: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `Không thể ép kiểu ${JSON.stringify(value)} thành ${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string',\n stringExpected: (received: string, expected: string) => `Mong đợi ${expected}, nhận được ${received}`,\n stringBoolExpected: (validValues: string, received: string) => `Chuỗi boolean không hợp lệ. Mong đợi một trong các: ${validValues}, nhận được: \"${received}\"`,\n invalidJson: 'JSON không hợp lệ',\n stringPatternInvalid: 'Chuỗi không khớp với mẫu bắt buộc',\n\n // File validation messages\n invalidFile: 'Expected a File object',\n fileNotSupported: 'File API not supported in this environment',\n fileMinSize: (min: number) => `File size must be at least ${min} bytes`,\n fileMaxSize: (max: number) => `File size must not exceed ${max} bytes`,\n fileMimeType: (allowed: string[]) => `Invalid file type. Expected: ${allowed.join(\", \")}`,\n // Function validation messages\n invalidFunction: 'Mong đợi một hàm',\n\n // CIDR validation messages\n stringCidrv4: 'Khối CIDR IPv4 không hợp lệ',\n stringCidrv6: 'Khối CIDR IPv6 không hợp lệ',\n\n // Safe extend validation messages\n safeExtendOverlap: (keys: string[]) => `Không thể ghi đè các khóa hiện có: ${keys.join(', ')}. Sử dụng extend() để ghi đè.`\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cAwGhB,CAAC"}
1
+ {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,EAAE,EAAE,cA4HhB,CAAC"}
@@ -83,6 +83,23 @@ export const zh = {
83
83
  uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
84
84
  uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
85
85
  // Generic type error messages
86
- expectedString: 'Expected string'
86
+ expectedString: 'Expected string',
87
+ stringExpected: (received, expected) => `期望${expected},得到${received}`,
88
+ stringBoolExpected: (validValues, received) => `无效的布尔字符串。期望以下之一: ${validValues},得到: "${received}"`,
89
+ invalidJson: '无效的JSON',
90
+ stringPatternInvalid: '字符串与所需模式不匹配',
91
+ // File validation messages
92
+ invalidFile: 'Expected a File object',
93
+ fileNotSupported: 'File API not supported in this environment',
94
+ fileMinSize: (min) => `File size must be at least ${min} bytes`,
95
+ fileMaxSize: (max) => `File size must not exceed ${max} bytes`,
96
+ fileMimeType: (allowed) => `Invalid file type. Expected: ${allowed.join(", ")}`,
97
+ // Function validation messages
98
+ invalidFunction: '期望一个函数',
99
+ // CIDR validation messages
100
+ stringCidrv4: '无效的IPv4 CIDR块',
101
+ stringCidrv6: '无效的IPv6 CIDR块',
102
+ // Safe extend validation messages
103
+ safeExtendOverlap: (keys) => `无法覆盖现有键: ${keys.join(', ')}。如果要覆盖请使用extend()。`
87
104
  };
88
105
  //# sourceMappingURL=zh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const zh: LocaleMessages = {\n // String validation messages\n invalidString: '无效字符串',\n stringMin: (min: number) => `字符串必须至少${min}个字符`,\n stringMax: (max: number) => `字符串不能超过${max}个字符`,\n stringLength: (length: number) => `字符串必须正好${length}个字符`,\n stringEmail: '无效邮箱地址',\n stringUrl: '无效URL',\n stringUuid: '无效UUID',\n stringRegex: '无效格式',\n stringStartsWith: (prefix: string) => `字符串必须以\"${prefix}\"开头`,\n stringEndsWith: (suffix: string) => `字符串必须以\"${suffix}\"结尾`,\n stringIncludes: (substring: string) => `字符串必须包含\"${substring}\"`,\n stringIp: '无效IP地址',\n stringIpv4: '无效IPv4地址',\n stringIpv6: '无效IPv6地址',\n stringEmpty: '字符串不能为空',\n\n // Number validation messages\n invalidNumber: '无效数字',\n numberMin: (min: number) => `数字必须至少为${min}`,\n numberMax: (max: number) => `数字不能大于${max}`,\n numberInt: '数字必须是整数',\n numberPositive: '数字必须是正数',\n numberNegative: '数字必须是负数',\n numberNonnegative: '数字不能是负数',\n numberNonpositive: '数字不能是正数',\n numberFinite: '数字必须是有限的',\n numberSafe: '数字必须是安全整数',\n numberMultipleOf: (value: number) => `数字必须是${value}的倍数`,\n\n // Boolean validation messages\n invalidBoolean: '无效布尔值',\n\n // Date validation messages\n invalidDate: '无效日期',\n dateMin: (date: Date) => `日期必须在${date.toISOString()}之后`,\n dateMax: (date: Date) => `日期必须在${date.toISOString()}之前`,\n\n // Object validation messages\n invalidObject: '无效对象',\n unexpectedKeys: (keys: string[]) => `意外的键: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: '无效数组',\n arrayMin: (min: number) => `数组必须至少有${min}个元素`,\n arrayMax: (max: number) => `数组不能超过${max}个元素`,\n arrayLength: (length: number) => `数组必须正好有${length}个元素`,\n arrayEmpty: '数组不能为空',\n arrayItem: (index: number, error: string) => `索引${index}处的无效元素: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `无效字段\"${field}\": ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `没有匹配的联合成员: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `交集验证失败: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `期望${expected},得到${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `期望[${values.join(', ')}]中的一个,得到${received}`,\n\n // Special type validation messages\n expectedUndefined: '期望undefined',\n neverType: 'never类型无法解析',\n\n // New advanced type validation messages\n invalidBigint: '无效bigint',\n invalidSymbol: '无效符号',\n invalidTuple: '无效元组',\n tupleLength: (expected: number, received: number) => `元组必须正好有${expected}个元素,得到${received}个`,\n invalidRecord: '无效记录',\n invalidSet: '无效Set',\n invalidMap: '无效Map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `转换失败: ${error}`,\n refinementError: (error: string) => `细化失败: ${error}`,\n customValidationError: (error: string) => `自定义验证失败: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `无法将${JSON.stringify(value)}强制转换为${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
1
+ {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const zh: LocaleMessages = {\n // String validation messages\n invalidString: '无效字符串',\n stringMin: (min: number) => `字符串必须至少${min}个字符`,\n stringMax: (max: number) => `字符串不能超过${max}个字符`,\n stringLength: (length: number) => `字符串必须正好${length}个字符`,\n stringEmail: '无效邮箱地址',\n stringUrl: '无效URL',\n stringUuid: '无效UUID',\n stringRegex: '无效格式',\n stringStartsWith: (prefix: string) => `字符串必须以\"${prefix}\"开头`,\n stringEndsWith: (suffix: string) => `字符串必须以\"${suffix}\"结尾`,\n stringIncludes: (substring: string) => `字符串必须包含\"${substring}\"`,\n stringIp: '无效IP地址',\n stringIpv4: '无效IPv4地址',\n stringIpv6: '无效IPv6地址',\n stringEmpty: '字符串不能为空',\n\n // Number validation messages\n invalidNumber: '无效数字',\n numberMin: (min: number) => `数字必须至少为${min}`,\n numberMax: (max: number) => `数字不能大于${max}`,\n numberInt: '数字必须是整数',\n numberPositive: '数字必须是正数',\n numberNegative: '数字必须是负数',\n numberNonnegative: '数字不能是负数',\n numberNonpositive: '数字不能是正数',\n numberFinite: '数字必须是有限的',\n numberSafe: '数字必须是安全整数',\n numberMultipleOf: (value: number) => `数字必须是${value}的倍数`,\n\n // Boolean validation messages\n invalidBoolean: '无效布尔值',\n\n // Date validation messages\n invalidDate: '无效日期',\n dateMin: (date: Date) => `日期必须在${date.toISOString()}之后`,\n dateMax: (date: Date) => `日期必须在${date.toISOString()}之前`,\n\n // Object validation messages\n invalidObject: '无效对象',\n unexpectedKeys: (keys: string[]) => `意外的键: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: '无效数组',\n arrayMin: (min: number) => `数组必须至少有${min}个元素`,\n arrayMax: (max: number) => `数组不能超过${max}个元素`,\n arrayLength: (length: number) => `数组必须正好有${length}个元素`,\n arrayEmpty: '数组不能为空',\n arrayItem: (index: number, error: string) => `索引${index}处的无效元素: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `无效字段\"${field}\": ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `没有匹配的联合成员: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `交集验证失败: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `期望${expected},得到${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `期望[${values.join(', ')}]中的一个,得到${received}`,\n\n // Special type validation messages\n expectedUndefined: '期望undefined',\n neverType: 'never类型无法解析',\n\n // New advanced type validation messages\n invalidBigint: '无效bigint',\n invalidSymbol: '无效符号',\n invalidTuple: '无效元组',\n tupleLength: (expected: number, received: number) => `元组必须正好有${expected}个元素,得到${received}个`,\n invalidRecord: '无效记录',\n invalidSet: '无效Set',\n invalidMap: '无效Map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `转换失败: ${error}`,\n refinementError: (error: string) => `细化失败: ${error}`,\n customValidationError: (error: string) => `自定义验证失败: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `无法将${JSON.stringify(value)}强制转换为${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string',\n stringExpected: (received: string, expected: string) => `期望${expected},得到${received}`,\n stringBoolExpected: (validValues: string, received: string) => `无效的布尔字符串。期望以下之一: ${validValues},得到: \"${received}\"`,\n invalidJson: '无效的JSON',\n stringPatternInvalid: '字符串与所需模式不匹配',\n\n // File validation messages\n invalidFile: 'Expected a File object',\n fileNotSupported: 'File API not supported in this environment',\n fileMinSize: (min: number) => `File size must be at least ${min} bytes`,\n fileMaxSize: (max: number) => `File size must not exceed ${max} bytes`,\n fileMimeType: (allowed: string[]) => `Invalid file type. Expected: ${allowed.join(\", \")}`,\n // Function validation messages\n invalidFunction: '期望一个函数',\n\n // CIDR validation messages\n stringCidrv4: '无效的IPv4 CIDR块',\n stringCidrv6: '无效的IPv6 CIDR块',\n\n // Safe extend validation messages\n safeExtendOverlap: (keys: string[]) => `无法覆盖现有键: ${keys.join(', ')}。如果要覆盖请使用extend()。`\n};\n"]}
@@ -23,10 +23,12 @@ export declare function hexToUint8Array(hex: string): Uint8Array;
23
23
  export declare function uint8ArrayToHex(bytes: Uint8Array): string;
24
24
  /**
25
25
  * Convert string to Uint8Array using UTF-8 encoding
26
+ * BUG-NEW-011 FIX: Add DoS protection with 10MB limit
26
27
  */
27
28
  export declare function stringToUint8Array(str: string): Uint8Array;
28
29
  /**
29
30
  * Convert Uint8Array to string using UTF-8 decoding
31
+ * BUG-NEW-012 FIX: Add DoS protection with 10MB limit
30
32
  */
31
33
  export declare function uint8ArrayToString(bytes: Uint8Array): string;
32
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"codec-utils.d.ts","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAiB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAavD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAG1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AA2ED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiChD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW5C"}
1
+ {"version":3,"file":"codec-utils.d.ts","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAiB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAmBvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU1D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AA4ED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiChD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW5C"}
@@ -45,6 +45,11 @@ export function uint8ArrayToBase64Url(bytes) {
45
45
  * Convert hex string to Uint8Array
46
46
  */
47
47
  export function hexToUint8Array(hex) {
48
+ // BUG-010 FIX: Add length validation to prevent memory exhaustion
49
+ // 20 million characters = 10MB of data (consistent with base64 limits)
50
+ if (hex.length > 20000000) {
51
+ throw new Error('Hex string is too large (max 10MB)');
52
+ }
48
53
  // Remove any 0x prefix if present
49
54
  const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;
50
55
  // Ensure even length
@@ -68,15 +73,27 @@ export function uint8ArrayToHex(bytes) {
68
73
  }
69
74
  /**
70
75
  * Convert string to Uint8Array using UTF-8 encoding
76
+ * BUG-NEW-011 FIX: Add DoS protection with 10MB limit
71
77
  */
72
78
  export function stringToUint8Array(str) {
79
+ // Add DoS protection - limit to 10MB (consistent with base64 limit)
80
+ const MAX_STRING_LENGTH = 10000000; // 10 million characters (~10MB)
81
+ if (str.length > MAX_STRING_LENGTH) {
82
+ throw new Error(`String is too large for UTF-8 encoding (max ${MAX_STRING_LENGTH} characters)`);
83
+ }
73
84
  const encoder = new TextEncoder();
74
85
  return encoder.encode(str);
75
86
  }
76
87
  /**
77
88
  * Convert Uint8Array to string using UTF-8 decoding
89
+ * BUG-NEW-012 FIX: Add DoS protection with 10MB limit
78
90
  */
79
91
  export function uint8ArrayToString(bytes) {
92
+ // Add DoS protection - limit to 10MB
93
+ const MAX_BYTES_LENGTH = 10000000; // 10 million bytes
94
+ if (bytes.length > MAX_BYTES_LENGTH) {
95
+ throw new Error(`Byte array is too large for UTF-8 decoding (max ${MAX_BYTES_LENGTH} bytes)`);
96
+ }
80
97
  const decoder = new TextDecoder();
81
98
  return decoder.decode(bytes);
82
99
  }
@@ -110,16 +127,17 @@ function validateBase64Input(encoded) {
110
127
  if (!base64Regex.test(encoded)) {
111
128
  throw new Error('Invalid base64 format');
112
129
  }
113
- // Check for padding issues
130
+ // BUG-NEW-004 FIX: Correct base64 padding validation per RFC 4648
131
+ // Base64 only uses '=' or '==' as padding, never '==='
114
132
  const paddingIndex = encoded.indexOf('=');
115
133
  if (paddingIndex !== -1) {
116
134
  const padding = encoded.substring(paddingIndex);
117
- // Only allow '=', '==', or '===' as padding
118
- if (!/^={1,2}$/.test(padding) && padding !== '===') {
135
+ // Only allow '=' or '==' as valid padding (RFC 4648 compliant)
136
+ if (!/^={1,2}$/.test(padding)) {
119
137
  throw new Error('Invalid base64 padding');
120
138
  }
121
139
  // Padding should only be at the end
122
- if (paddingIndex < encoded.length - 3) {
140
+ if (paddingIndex < encoded.length - 2) {
123
141
  throw new Error('Base64 padding must be at the end');
124
142
  }
125
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codec-utils.js","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Utility functions for codec transformations\r\n */\r\n\r\n/**\r\n * Convert a base64 string to Uint8Array\r\n */\r\nexport function base64ToUint8Array(base64: string): Uint8Array {\r\n // Handle URL-safe base64\r\n const base64Clean = base64.replace(/-/g, '+').replace(/_/g, '/');\r\n \r\n // Add padding if necessary\r\n const padded = base64Clean.padEnd(base64Clean.length + (4 - base64Clean.length % 4) % 4, '=');\r\n \r\n // Decode base64 to binary string\r\n const binaryString = safeAtob(padded);\r\n \r\n // Convert binary string to Uint8Array\r\n const bytes = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to base64 string\r\n */\r\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\r\n // Convert Uint8Array to binary string\r\n let binaryString = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n binaryString += String.fromCharCode(bytes[i]);\r\n }\r\n \r\n // Encode to base64\r\n return safeBtoa(binaryString);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to URL-safe base64 string\r\n */\r\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\r\n const base64 = uint8ArrayToBase64(bytes);\r\n // Make URL-safe and remove padding\r\n return base64\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\n/**\r\n * Convert hex string to Uint8Array\r\n */\r\nexport function hexToUint8Array(hex: string): Uint8Array {\r\n // Remove any 0x prefix if present\r\n const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;\r\n \r\n // Ensure even length\r\n const paddedHex = cleanHex.length % 2 === 0 ? cleanHex : '0' + cleanHex;\r\n \r\n const bytes = new Uint8Array(paddedHex.length / 2);\r\n for (let i = 0; i < paddedHex.length; i += 2) {\r\n bytes[i / 2] = parseInt(paddedHex.substring(i, i + 2), 16);\r\n }\r\n \r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to hex string\r\n */\r\nexport function uint8ArrayToHex(bytes: Uint8Array): string {\r\n let hex = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n const byte = bytes[i].toString(16);\r\n hex += byte.length === 1 ? '0' + byte : byte;\r\n }\r\n return hex;\r\n}\r\n\r\n/**\r\n * Convert string to Uint8Array using UTF-8 encoding\r\n */\r\nexport function stringToUint8Array(str: string): Uint8Array {\r\n const encoder = new TextEncoder();\r\n return encoder.encode(str);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to string using UTF-8 decoding\r\n */\r\nexport function uint8ArrayToString(bytes: Uint8Array): string {\r\n const decoder = new TextDecoder();\r\n return decoder.decode(bytes);\r\n}\r\n\r\n/**\r\n * Check if running in Node.js environment\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return typeof globalThis !== 'undefined' && \r\n typeof globalThis.process !== 'undefined' &&\r\n globalThis.process.versions != null &&\r\n globalThis.process.versions.node != null;\r\n}\r\n\r\n/**\r\n * Validate and sanitize base64 input to prevent prototype pollution\r\n */\r\nfunction validateBase64Input(encoded: string): void {\r\n // Check for null/undefined\r\n if (encoded == null) {\r\n throw new Error('Base64 input cannot be null or undefined');\r\n }\r\n\r\n // Ensure it's a string\r\n if (typeof encoded !== 'string') {\r\n throw new Error('Base64 input must be a string');\r\n }\r\n\r\n // Length validation - base64 strings should be reasonable length\r\n if (encoded.length > 10000000) { // 10MB limit\r\n throw new Error('Base64 input is too large');\r\n }\r\n\r\n // Base64 character validation - only allow valid base64 characters\r\n const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;\r\n if (!base64Regex.test(encoded)) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n\r\n // Check for padding issues\r\n const paddingIndex = encoded.indexOf('=');\r\n if (paddingIndex !== -1) {\r\n const padding = encoded.substring(paddingIndex);\r\n // Only allow '=', '==', or '===' as padding\r\n if (!/^={1,2}$/.test(padding) && padding !== '===') {\r\n throw new Error('Invalid base64 padding');\r\n }\r\n // Padding should only be at the end\r\n if (paddingIndex < encoded.length - 3) {\r\n throw new Error('Base64 padding must be at the end');\r\n }\r\n }\r\n\r\n // Additional security check: prevent potential encoded JavaScript\r\n // by looking for suspicious patterns that might indicate malicious content\r\n const suspiciousPatterns = [\r\n /eval/i,\r\n /function/i,\r\n /javascript:/i,\r\n /<script/i,\r\n /on\\w+\\s*=/i,\r\n /__proto__/i,\r\n /constructor/i,\r\n /prototype/i\r\n ];\r\n\r\n // Decode a small portion to check for suspicious content\r\n try {\r\n const sampleSize = Math.min(100, encoded.length);\r\n const sample = encoded.substring(0, sampleSize);\r\n const sampleDecoded = typeof atob !== 'undefined'\r\n ? atob(sample)\r\n : Buffer.from(sample, 'base64').toString('utf8', 0, 50); // Only decode first 50 chars\r\n\r\n for (const pattern of suspiciousPatterns) {\r\n if (pattern.test(sampleDecoded)) {\r\n throw new Error('Suspicious content detected in base64 input');\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Suspicious content')) {\r\n throw error;\r\n }\r\n // If decoding fails, continue - it might be invalid base64 which will be caught later\r\n }\r\n}\r\n\r\n/**\r\n * Polyfill for atob in Node.js with proper input validation\r\n */\r\nexport function safeAtob(encoded: string): string {\r\n // Input validation and sanitization\r\n validateBase64Input(encoded);\r\n\r\n if (typeof atob !== 'undefined') {\r\n try {\r\n return atob(encoded);\r\n } catch (error) {\r\n throw new Error('Failed to decode base64 data');\r\n }\r\n }\r\n\r\n // Node.js fallback with additional validation\r\n if (isNodeEnvironment()) {\r\n try {\r\n // Use Buffer with explicit error handling\r\n const buffer = Buffer.from(encoded, 'base64');\r\n\r\n // Additional validation: ensure the decoded data is reasonable size\r\n if (buffer.length > 5000000) { // 5MB limit for decoded data\r\n throw new Error('Decoded base64 data is too large');\r\n }\r\n\r\n return buffer.toString('binary');\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Invalid base64')) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n throw new Error('Failed to decode base64 data in Node.js environment');\r\n }\r\n }\r\n\r\n throw new Error('Base64 decoding not supported in this environment');\r\n}\r\n\r\n/**\r\n * Polyfill for btoa in Node.js\r\n */\r\nexport function safeBtoa(str: string): string {\r\n if (typeof btoa !== 'undefined') {\r\n return btoa(str);\r\n }\r\n \r\n // Node.js fallback\r\n if (isNodeEnvironment()) {\r\n return Buffer.from(str, 'binary').toString('base64');\r\n }\r\n \r\n throw new Error('Base64 encoding not supported in this environment');\r\n}"]}
1
+ {"version":3,"file":"codec-utils.js","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Utility functions for codec transformations\r\n */\r\n\r\n/**\r\n * Convert a base64 string to Uint8Array\r\n */\r\nexport function base64ToUint8Array(base64: string): Uint8Array {\r\n // Handle URL-safe base64\r\n const base64Clean = base64.replace(/-/g, '+').replace(/_/g, '/');\r\n \r\n // Add padding if necessary\r\n const padded = base64Clean.padEnd(base64Clean.length + (4 - base64Clean.length % 4) % 4, '=');\r\n \r\n // Decode base64 to binary string\r\n const binaryString = safeAtob(padded);\r\n \r\n // Convert binary string to Uint8Array\r\n const bytes = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to base64 string\r\n */\r\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\r\n // Convert Uint8Array to binary string\r\n let binaryString = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n binaryString += String.fromCharCode(bytes[i]);\r\n }\r\n \r\n // Encode to base64\r\n return safeBtoa(binaryString);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to URL-safe base64 string\r\n */\r\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\r\n const base64 = uint8ArrayToBase64(bytes);\r\n // Make URL-safe and remove padding\r\n return base64\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\n/**\r\n * Convert hex string to Uint8Array\r\n */\r\nexport function hexToUint8Array(hex: string): Uint8Array {\r\n // BUG-010 FIX: Add length validation to prevent memory exhaustion\r\n // 20 million characters = 10MB of data (consistent with base64 limits)\r\n if (hex.length > 20000000) {\r\n throw new Error('Hex string is too large (max 10MB)');\r\n }\r\n\r\n // Remove any 0x prefix if present\r\n const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;\r\n\r\n // Ensure even length\r\n const paddedHex = cleanHex.length % 2 === 0 ? cleanHex : '0' + cleanHex;\r\n\r\n const bytes = new Uint8Array(paddedHex.length / 2);\r\n for (let i = 0; i < paddedHex.length; i += 2) {\r\n bytes[i / 2] = parseInt(paddedHex.substring(i, i + 2), 16);\r\n }\r\n\r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to hex string\r\n */\r\nexport function uint8ArrayToHex(bytes: Uint8Array): string {\r\n let hex = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n const byte = bytes[i].toString(16);\r\n hex += byte.length === 1 ? '0' + byte : byte;\r\n }\r\n return hex;\r\n}\r\n\r\n/**\r\n * Convert string to Uint8Array using UTF-8 encoding\r\n * BUG-NEW-011 FIX: Add DoS protection with 10MB limit\r\n */\r\nexport function stringToUint8Array(str: string): Uint8Array {\r\n // Add DoS protection - limit to 10MB (consistent with base64 limit)\r\n const MAX_STRING_LENGTH = 10000000; // 10 million characters (~10MB)\r\n\r\n if (str.length > MAX_STRING_LENGTH) {\r\n throw new Error(`String is too large for UTF-8 encoding (max ${MAX_STRING_LENGTH} characters)`);\r\n }\r\n\r\n const encoder = new TextEncoder();\r\n return encoder.encode(str);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to string using UTF-8 decoding\r\n * BUG-NEW-012 FIX: Add DoS protection with 10MB limit\r\n */\r\nexport function uint8ArrayToString(bytes: Uint8Array): string {\r\n // Add DoS protection - limit to 10MB\r\n const MAX_BYTES_LENGTH = 10000000; // 10 million bytes\r\n\r\n if (bytes.length > MAX_BYTES_LENGTH) {\r\n throw new Error(`Byte array is too large for UTF-8 decoding (max ${MAX_BYTES_LENGTH} bytes)`);\r\n }\r\n\r\n const decoder = new TextDecoder();\r\n return decoder.decode(bytes);\r\n}\r\n\r\n/**\r\n * Check if running in Node.js environment\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return typeof globalThis !== 'undefined' && \r\n typeof globalThis.process !== 'undefined' &&\r\n globalThis.process.versions != null &&\r\n globalThis.process.versions.node != null;\r\n}\r\n\r\n/**\r\n * Validate and sanitize base64 input to prevent prototype pollution\r\n */\r\nfunction validateBase64Input(encoded: string): void {\r\n // Check for null/undefined\r\n if (encoded == null) {\r\n throw new Error('Base64 input cannot be null or undefined');\r\n }\r\n\r\n // Ensure it's a string\r\n if (typeof encoded !== 'string') {\r\n throw new Error('Base64 input must be a string');\r\n }\r\n\r\n // Length validation - base64 strings should be reasonable length\r\n if (encoded.length > 10000000) { // 10MB limit\r\n throw new Error('Base64 input is too large');\r\n }\r\n\r\n // Base64 character validation - only allow valid base64 characters\r\n const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;\r\n if (!base64Regex.test(encoded)) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n\r\n // BUG-NEW-004 FIX: Correct base64 padding validation per RFC 4648\r\n // Base64 only uses '=' or '==' as padding, never '==='\r\n const paddingIndex = encoded.indexOf('=');\r\n if (paddingIndex !== -1) {\r\n const padding = encoded.substring(paddingIndex);\r\n // Only allow '=' or '==' as valid padding (RFC 4648 compliant)\r\n if (!/^={1,2}$/.test(padding)) {\r\n throw new Error('Invalid base64 padding');\r\n }\r\n // Padding should only be at the end\r\n if (paddingIndex < encoded.length - 2) {\r\n throw new Error('Base64 padding must be at the end');\r\n }\r\n }\r\n\r\n // Additional security check: prevent potential encoded JavaScript\r\n // by looking for suspicious patterns that might indicate malicious content\r\n const suspiciousPatterns = [\r\n /eval/i,\r\n /function/i,\r\n /javascript:/i,\r\n /<script/i,\r\n /on\\w+\\s*=/i,\r\n /__proto__/i,\r\n /constructor/i,\r\n /prototype/i\r\n ];\r\n\r\n // Decode a small portion to check for suspicious content\r\n try {\r\n const sampleSize = Math.min(100, encoded.length);\r\n const sample = encoded.substring(0, sampleSize);\r\n const sampleDecoded = typeof atob !== 'undefined'\r\n ? atob(sample)\r\n : Buffer.from(sample, 'base64').toString('utf8', 0, 50); // Only decode first 50 chars\r\n\r\n for (const pattern of suspiciousPatterns) {\r\n if (pattern.test(sampleDecoded)) {\r\n throw new Error('Suspicious content detected in base64 input');\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Suspicious content')) {\r\n throw error;\r\n }\r\n // If decoding fails, continue - it might be invalid base64 which will be caught later\r\n }\r\n}\r\n\r\n/**\r\n * Polyfill for atob in Node.js with proper input validation\r\n */\r\nexport function safeAtob(encoded: string): string {\r\n // Input validation and sanitization\r\n validateBase64Input(encoded);\r\n\r\n if (typeof atob !== 'undefined') {\r\n try {\r\n return atob(encoded);\r\n } catch (error) {\r\n throw new Error('Failed to decode base64 data');\r\n }\r\n }\r\n\r\n // Node.js fallback with additional validation\r\n if (isNodeEnvironment()) {\r\n try {\r\n // Use Buffer with explicit error handling\r\n const buffer = Buffer.from(encoded, 'base64');\r\n\r\n // Additional validation: ensure the decoded data is reasonable size\r\n if (buffer.length > 5000000) { // 5MB limit for decoded data\r\n throw new Error('Decoded base64 data is too large');\r\n }\r\n\r\n return buffer.toString('binary');\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Invalid base64')) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n throw new Error('Failed to decode base64 data in Node.js environment');\r\n }\r\n }\r\n\r\n throw new Error('Base64 decoding not supported in this environment');\r\n}\r\n\r\n/**\r\n * Polyfill for btoa in Node.js\r\n */\r\nexport function safeBtoa(str: string): string {\r\n if (typeof btoa !== 'undefined') {\r\n return btoa(str);\r\n }\r\n \r\n // Node.js fallback\r\n if (isNodeEnvironment()) {\r\n return Buffer.from(str, 'binary').toString('base64');\r\n }\r\n \r\n throw new Error('Base64 encoding not supported in this environment');\r\n}"]}
@@ -5,6 +5,7 @@ export declare function isPlainObject(obj: any): obj is Record<string, any>;
5
5
  /**
6
6
  * Safely deep merge two objects without prototype pollution vulnerability
7
7
  * Optimized for performance with minimal object allocations
8
+ * BUG-NEW-020 FIX: Use comprehensive dangerous key protection from shared utility
8
9
  * @param target The target object
9
10
  * @param source The source object to merge from
10
11
  * @returns A new merged object
@@ -12,6 +13,7 @@ export declare function isPlainObject(obj: any): obj is Record<string, any>;
12
13
  export declare function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T;
13
14
  /**
14
15
  * Freeze an object deeply to prevent any mutations
16
+ * BUG-NEW-014 FIX: Add circular reference protection using WeakSet
15
17
  * @param obj Object to freeze
16
18
  * @returns The frozen object
17
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOlE;AA6BD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAiCH;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAuBjD"}
1
+ {"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOlE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAiCH;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA4BjD"}