@oxog/vld 1.4.0 → 2.0.1

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 (242) hide show
  1. package/CHANGELOG.md +449 -333
  2. package/README.md +1171 -1130
  3. package/dist/chunks/bigint-ZKkWLdmi.js +1628 -0
  4. package/dist/chunks/bigint-ZKkWLdmi.js.map +1 -0
  5. package/dist/{coercion/string.js → chunks/date-7Iz2BGsL.js} +271 -5
  6. package/dist/chunks/date-7Iz2BGsL.js.map +1 -0
  7. package/dist/chunks/index-BoV-4S1F.js +894 -0
  8. package/dist/chunks/index-BoV-4S1F.js.map +1 -0
  9. package/dist/chunks/index-eWXdjyyy.js +426 -0
  10. package/dist/chunks/index-eWXdjyyy.js.map +1 -0
  11. package/dist/chunks/json-nIhyRPOU.js +1934 -0
  12. package/dist/chunks/json-nIhyRPOU.js.map +1 -0
  13. package/dist/{validators/unknown.js → chunks/unknown-CjSRcELI.js} +6 -3
  14. package/dist/chunks/unknown-CjSRcELI.js.map +1 -0
  15. package/dist/cjs/errors.cjs +387 -0
  16. package/dist/cjs/errors.cjs.map +1 -0
  17. package/dist/cjs/index.cjs +9815 -0
  18. package/dist/cjs/index.cjs.map +1 -0
  19. package/dist/cjs/locales/index.cjs +2877 -0
  20. package/dist/cjs/locales/index.cjs.map +1 -0
  21. package/dist/cjs/locales/lazy.cjs +3169 -0
  22. package/dist/cjs/locales/lazy.cjs.map +1 -0
  23. package/dist/cjs/mini.cjs +7161 -0
  24. package/dist/cjs/mini.cjs.map +1 -0
  25. package/dist/cli/bin.d.ts +8 -0
  26. package/dist/cli/bin.d.ts.map +1 -0
  27. package/dist/cli/commands/benchmark.d.ts +11 -0
  28. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  29. package/dist/cli/commands/validate.d.ts +11 -0
  30. package/dist/cli/commands/validate.d.ts.map +1 -0
  31. package/dist/cli/index.d.ts +59 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/codecs/index.d.ts.map +1 -1
  34. package/dist/codecs/index.js +4 -256
  35. package/dist/codecs/index.js.map +1 -1
  36. package/dist/coercion/boolean.d.ts.map +1 -1
  37. package/dist/coercion/index.d.ts +11 -0
  38. package/dist/coercion/index.d.ts.map +1 -0
  39. package/dist/coercion/{bigint.js → index.js} +7 -4
  40. package/dist/coercion/index.js.map +1 -0
  41. package/dist/compat/emitter.d.ts +73 -0
  42. package/dist/compat/emitter.d.ts.map +1 -0
  43. package/dist/compat/emitter.js +181 -0
  44. package/dist/compat/emitter.js.map +1 -0
  45. package/dist/compat/index.d.ts +15 -0
  46. package/dist/compat/index.d.ts.map +1 -0
  47. package/dist/compat/result.d.ts +128 -0
  48. package/dist/compat/result.d.ts.map +1 -0
  49. package/dist/compat/result.js +171 -0
  50. package/dist/compat/result.js.map +1 -0
  51. package/dist/errors.d.ts +58 -1
  52. package/dist/errors.d.ts.map +1 -1
  53. package/dist/errors.js +106 -15
  54. package/dist/errors.js.map +1 -1
  55. package/dist/events.d.ts +140 -0
  56. package/dist/events.d.ts.map +1 -0
  57. package/dist/index.d.ts +13 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +230 -103
  60. package/dist/index.js.map +1 -1
  61. package/dist/kernel.d.ts +29 -0
  62. package/dist/kernel.d.ts.map +1 -0
  63. package/dist/kernel.js +405 -0
  64. package/dist/kernel.js.map +1 -0
  65. package/dist/locales/af.js +4 -2
  66. package/dist/locales/af.js.map +1 -1
  67. package/dist/locales/ar.js +4 -2
  68. package/dist/locales/ar.js.map +1 -1
  69. package/dist/locales/bn.js +4 -2
  70. package/dist/locales/bn.js.map +1 -1
  71. package/dist/locales/da.js +4 -2
  72. package/dist/locales/da.js.map +1 -1
  73. package/dist/locales/de.js +4 -2
  74. package/dist/locales/de.js.map +1 -1
  75. package/dist/locales/en.js +4 -2
  76. package/dist/locales/en.js.map +1 -1
  77. package/dist/locales/es-MX.js +4 -2
  78. package/dist/locales/es-MX.js.map +1 -1
  79. package/dist/locales/es.js +4 -2
  80. package/dist/locales/es.js.map +1 -1
  81. package/dist/locales/fi.js +4 -2
  82. package/dist/locales/fi.js.map +1 -1
  83. package/dist/locales/fr.js +4 -2
  84. package/dist/locales/fr.js.map +1 -1
  85. package/dist/locales/hi.js +4 -2
  86. package/dist/locales/hi.js.map +1 -1
  87. package/dist/locales/id.js +4 -2
  88. package/dist/locales/id.js.map +1 -1
  89. package/dist/locales/index.js +3 -91
  90. package/dist/locales/index.js.map +1 -1
  91. package/dist/locales/it.js +4 -2
  92. package/dist/locales/it.js.map +1 -1
  93. package/dist/locales/ja.js +4 -2
  94. package/dist/locales/ja.js.map +1 -1
  95. package/dist/locales/ko.js +4 -2
  96. package/dist/locales/ko.js.map +1 -1
  97. package/dist/locales/lazy.d.ts +111 -0
  98. package/dist/locales/lazy.d.ts.map +1 -0
  99. package/dist/locales/lazy.js +220 -0
  100. package/dist/locales/lazy.js.map +1 -0
  101. package/dist/locales/nl.js +4 -2
  102. package/dist/locales/nl.js.map +1 -1
  103. package/dist/locales/no.js +4 -2
  104. package/dist/locales/no.js.map +1 -1
  105. package/dist/locales/pl.js +4 -2
  106. package/dist/locales/pl.js.map +1 -1
  107. package/dist/locales/pt-BR.js +4 -2
  108. package/dist/locales/pt-BR.js.map +1 -1
  109. package/dist/locales/pt.js +4 -2
  110. package/dist/locales/pt.js.map +1 -1
  111. package/dist/locales/ru.js +4 -2
  112. package/dist/locales/ru.js.map +1 -1
  113. package/dist/locales/sv.js +4 -2
  114. package/dist/locales/sv.js.map +1 -1
  115. package/dist/locales/sw.js +4 -2
  116. package/dist/locales/sw.js.map +1 -1
  117. package/dist/locales/th.js +4 -2
  118. package/dist/locales/th.js.map +1 -1
  119. package/dist/locales/tr.js +4 -2
  120. package/dist/locales/tr.js.map +1 -1
  121. package/dist/locales/vi.js +4 -2
  122. package/dist/locales/vi.js.map +1 -1
  123. package/dist/locales/zh.js +4 -2
  124. package/dist/locales/zh.js.map +1 -1
  125. package/dist/logger.d.ts +94 -0
  126. package/dist/logger.d.ts.map +1 -0
  127. package/dist/mini.d.ts +182 -0
  128. package/dist/mini.d.ts.map +1 -0
  129. package/dist/mini.js +132 -0
  130. package/dist/mini.js.map +1 -0
  131. package/dist/pigment.d.ts +124 -0
  132. package/dist/pigment.d.ts.map +1 -0
  133. package/dist/pigment.js +178 -0
  134. package/dist/pigment.js.map +1 -0
  135. package/dist/plugins/index.d.ts +8 -0
  136. package/dist/plugins/index.d.ts.map +1 -0
  137. package/dist/plugins/types.d.ts +186 -0
  138. package/dist/plugins/types.d.ts.map +1 -0
  139. package/dist/utils/codec-utils.d.ts.map +1 -1
  140. package/dist/utils/ip-validation.d.ts.map +1 -1
  141. package/dist/validators/base.d.ts +3 -0
  142. package/dist/validators/base.d.ts.map +1 -1
  143. package/dist/validators/index.js +5 -45
  144. package/dist/validators/index.js.map +1 -1
  145. package/dist/validators/object.d.ts.map +1 -1
  146. package/dist/validators/template-literal.d.ts.map +1 -1
  147. package/package.json +153 -79
  148. package/dist/coercion/bigint.js.map +0 -1
  149. package/dist/coercion/boolean.js +0 -67
  150. package/dist/coercion/boolean.js.map +0 -1
  151. package/dist/coercion/date.js +0 -52
  152. package/dist/coercion/date.js.map +0 -1
  153. package/dist/coercion/number.js +0 -160
  154. package/dist/coercion/number.js.map +0 -1
  155. package/dist/coercion/string.js.map +0 -1
  156. package/dist/locales/backup-en.js +0 -105
  157. package/dist/locales/backup-en.js.map +0 -1
  158. package/dist/locales/types.js +0 -2
  159. package/dist/locales/types.js.map +0 -1
  160. package/dist/utils/codec-utils.js +0 -223
  161. package/dist/utils/codec-utils.js.map +0 -1
  162. package/dist/utils/deep-merge.js +0 -76
  163. package/dist/utils/deep-merge.js.map +0 -1
  164. package/dist/utils/ip-validation.js +0 -78
  165. package/dist/utils/ip-validation.js.map +0 -1
  166. package/dist/utils/security.js +0 -61
  167. package/dist/utils/security.js.map +0 -1
  168. package/dist/validators/any.js +0 -25
  169. package/dist/validators/any.js.map +0 -1
  170. package/dist/validators/array.js +0 -190
  171. package/dist/validators/array.js.map +0 -1
  172. package/dist/validators/base.js +0 -491
  173. package/dist/validators/base.js.map +0 -1
  174. package/dist/validators/base64.js +0 -65
  175. package/dist/validators/base64.js.map +0 -1
  176. package/dist/validators/bigint.js +0 -142
  177. package/dist/validators/bigint.js.map +0 -1
  178. package/dist/validators/boolean.js +0 -114
  179. package/dist/validators/boolean.js.map +0 -1
  180. package/dist/validators/codec.js +0 -182
  181. package/dist/validators/codec.js.map +0 -1
  182. package/dist/validators/custom.js +0 -50
  183. package/dist/validators/custom.js.map +0 -1
  184. package/dist/validators/date.js +0 -227
  185. package/dist/validators/date.js.map +0 -1
  186. package/dist/validators/discriminated-union.js +0 -98
  187. package/dist/validators/discriminated-union.js.map +0 -1
  188. package/dist/validators/enum.js +0 -82
  189. package/dist/validators/enum.js.map +0 -1
  190. package/dist/validators/file.js +0 -114
  191. package/dist/validators/file.js.map +0 -1
  192. package/dist/validators/function.js +0 -45
  193. package/dist/validators/function.js.map +0 -1
  194. package/dist/validators/hex.js +0 -62
  195. package/dist/validators/hex.js.map +0 -1
  196. package/dist/validators/intersection.js +0 -64
  197. package/dist/validators/intersection.js.map +0 -1
  198. package/dist/validators/json.js +0 -64
  199. package/dist/validators/json.js.map +0 -1
  200. package/dist/validators/lazy.js +0 -42
  201. package/dist/validators/lazy.js.map +0 -1
  202. package/dist/validators/literal.js +0 -45
  203. package/dist/validators/literal.js.map +0 -1
  204. package/dist/validators/map.js +0 -54
  205. package/dist/validators/map.js.map +0 -1
  206. package/dist/validators/nan.js +0 -32
  207. package/dist/validators/nan.js.map +0 -1
  208. package/dist/validators/never.js +0 -29
  209. package/dist/validators/never.js.map +0 -1
  210. package/dist/validators/null.js +0 -31
  211. package/dist/validators/null.js.map +0 -1
  212. package/dist/validators/number.js +0 -225
  213. package/dist/validators/number.js.map +0 -1
  214. package/dist/validators/object.js +0 -458
  215. package/dist/validators/object.js.map +0 -1
  216. package/dist/validators/record.js +0 -128
  217. package/dist/validators/record.js.map +0 -1
  218. package/dist/validators/set.js +0 -51
  219. package/dist/validators/set.js.map +0 -1
  220. package/dist/validators/string-bool.js +0 -127
  221. package/dist/validators/string-bool.js.map +0 -1
  222. package/dist/validators/string-formats.js +0 -120
  223. package/dist/validators/string-formats.js.map +0 -1
  224. package/dist/validators/string.js +0 -253
  225. package/dist/validators/string.js.map +0 -1
  226. package/dist/validators/symbol.js +0 -42
  227. package/dist/validators/symbol.js.map +0 -1
  228. package/dist/validators/template-literal.js +0 -101
  229. package/dist/validators/template-literal.js.map +0 -1
  230. package/dist/validators/tuple.js +0 -55
  231. package/dist/validators/tuple.js.map +0 -1
  232. package/dist/validators/uint8array.js +0 -98
  233. package/dist/validators/uint8array.js.map +0 -1
  234. package/dist/validators/undefined.js +0 -31
  235. package/dist/validators/undefined.js.map +0 -1
  236. package/dist/validators/union.js +0 -126
  237. package/dist/validators/union.js.map +0 -1
  238. package/dist/validators/unknown.js.map +0 -1
  239. package/dist/validators/void.js +0 -35
  240. package/dist/validators/void.js.map +0 -1
  241. package/dist/validators/xor.js +0 -64
  242. package/dist/validators/xor.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * VLD CLI Entry Point
4
+ *
5
+ * This is the main entry point for the `vld` command-line tool.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * VLD CLI - Benchmark Command
3
+ *
4
+ * Run performance benchmarks for VLD validation.
5
+ */
6
+ import type { CliCommand } from '../index';
7
+ /**
8
+ * Benchmark command
9
+ */
10
+ export declare const benchmarkCommand: CliCommand;
11
+ //# sourceMappingURL=benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/benchmark.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA8D3C;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,UAmM9B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * VLD CLI - Validate Command
3
+ *
4
+ * Validate JSON data against a VLD schema file.
5
+ */
6
+ import type { CliCommand } from '../index';
7
+ /**
8
+ * Validate command
9
+ */
10
+ export declare const validateCommand: CliCommand;
11
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,UAmJ7B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * VLD CLI Tool
3
+ *
4
+ * Command-line interface for VLD validation library.
5
+ * Provides commands for validation, schema generation, and benchmarking.
6
+ */
7
+ /**
8
+ * CLI command definition
9
+ */
10
+ export interface CliCommand {
11
+ name: string;
12
+ description: string;
13
+ aliases?: string[];
14
+ arguments?: CliArgument[];
15
+ options?: CliOption[];
16
+ action: (args: Record<string, unknown>, options: Record<string, unknown>) => void | Promise<void>;
17
+ }
18
+ /**
19
+ * CLI argument definition
20
+ */
21
+ export interface CliArgument {
22
+ name: string;
23
+ description: string;
24
+ required?: boolean;
25
+ default?: unknown;
26
+ }
27
+ /**
28
+ * CLI option definition
29
+ */
30
+ export interface CliOption {
31
+ name: string;
32
+ short?: string;
33
+ description: string;
34
+ type?: 'string' | 'number' | 'boolean';
35
+ default?: unknown;
36
+ required?: boolean;
37
+ }
38
+ /**
39
+ * CLI instance
40
+ */
41
+ export interface Cli {
42
+ name: string;
43
+ version: string;
44
+ description: string;
45
+ commands: Map<string, CliCommand>;
46
+ command(cmd: CliCommand): Cli;
47
+ help(): string;
48
+ run(args: string[]): Promise<void>;
49
+ }
50
+ /**
51
+ * Create a CLI instance
52
+ */
53
+ export declare function createCli(name: string, version: string, description: string): Cli;
54
+ /**
55
+ * VLD CLI instance
56
+ */
57
+ export declare const vldCli: Cli;
58
+ export { createCli as cli };
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnG;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAGlC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC;IAC9B,IAAI,IAAI,MAAM,CAAC;IACf,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAmED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG,CAsHjF;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,KAAkE,CAAC;AAGtF,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAoB/C;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,cAAc,0BAW1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,0BAWvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,0BAa1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,0BAO1B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wBAW7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAO9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wBAO7B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,GAAG,GAAG,EAAE,SAAS,GAAG,wBAiB9C,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,WAAW,qCAavB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,qCAiB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,0BAaxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,2BAY3B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,aAAa,+CAOzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,+CAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,+CAOtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,+CAO3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+CAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+CAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,+CAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,GAAG,EAAE,SAAS,GAAG,wBAiB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,GAAG,0BAuBtC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAoB/C;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,cAAc,0BAW1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,0BAWvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,0BAa1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,0BAO1B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wBAW7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAO9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wBAO7B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,GAAG,GAAG,EAAE,SAAS,GAAG,wBAiB9C,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,WAAW,qCAavB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,qCAiB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,0BAaxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,2BAY3B,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,aAAa,+CAOzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,+CAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,+CAOtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,+CAO3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+CAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+CAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,+CAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,GAAG,EAAE,SAAS,GAAG,wBAsB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,GAAG,0BAqCtC,CAAC"}
@@ -1,256 +1,4 @@
1
- import { VldCodec } from '../validators/codec.js';
2
- import { VldBase64 } from '../validators/base64.js';
3
- import { VldHex } from '../validators/hex.js';
4
- import { VldUint8Array } from '../validators/uint8array.js';
5
- import { VldString } from '../validators/string.js';
6
- import { VldNumber } from '../validators/number.js';
7
- import { VldBigInt } from '../validators/bigint.js';
8
- import { VldBoolean } from '../validators/boolean.js';
9
- import { VldDate } from '../validators/date.js';
10
- import { VldUnknown } from '../validators/unknown.js';
11
- import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToBase64Url, hexToUint8Array, uint8ArrayToHex, stringToUint8Array, uint8ArrayToString } from '../utils/codec-utils.js';
12
- /**
13
- * Predefined codecs for common transformations (Zod-compatible)
14
- */
15
- // ===== STRING TO NUMBER CODECS =====
16
- /**
17
- * String to number codec
18
- */
19
- export const stringToNumber = VldCodec.create(VldString.create(), VldNumber.create(), {
20
- decode: (str) => {
21
- const num = Number(str);
22
- if (isNaN(num))
23
- throw new Error('Invalid number');
24
- return num;
25
- },
26
- encode: (num) => num.toString()
27
- });
28
- /**
29
- * String to integer codec
30
- */
31
- export const stringToInt = VldCodec.create(VldString.create(), VldNumber.create().int(), {
32
- decode: (str) => {
33
- const num = parseInt(str, 10);
34
- if (isNaN(num))
35
- throw new Error('Invalid integer');
36
- return num;
37
- },
38
- encode: (num) => Math.floor(num).toString()
39
- });
40
- /**
41
- * String to BigInt codec
42
- */
43
- export const stringToBigInt = VldCodec.create(VldString.create(), VldBigInt.create(), {
44
- decode: (str) => {
45
- try {
46
- return BigInt(str);
47
- }
48
- catch {
49
- throw new Error('Invalid BigInt');
50
- }
51
- },
52
- encode: (bigint) => bigint.toString()
53
- });
54
- /**
55
- * Number to BigInt codec
56
- */
57
- export const numberToBigInt = VldCodec.create(VldNumber.create().int(), VldBigInt.create(), {
58
- decode: (num) => BigInt(Math.floor(num)),
59
- encode: (bigint) => Number(bigint)
60
- });
61
- // ===== DATE CODECS =====
62
- /**
63
- * ISO datetime string to Date codec
64
- */
65
- export const isoDatetimeToDate = VldCodec.create(VldString.create().regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/, 'Invalid ISO datetime format'), VldDate.create(), {
66
- decode: (isoString) => {
67
- const date = new Date(isoString);
68
- if (isNaN(date.getTime()))
69
- throw new Error('Invalid date');
70
- return date;
71
- },
72
- encode: (date) => date.toISOString()
73
- });
74
- /**
75
- * Epoch seconds to Date codec
76
- */
77
- export const epochSecondsToDate = VldCodec.create(VldNumber.create(), VldDate.create(), {
78
- decode: (seconds) => new Date(seconds * 1000),
79
- encode: (date) => Math.floor(date.getTime() / 1000)
80
- });
81
- /**
82
- * Epoch milliseconds to Date codec
83
- */
84
- export const epochMillisToDate = VldCodec.create(VldNumber.create(), VldDate.create(), {
85
- decode: (millis) => new Date(millis),
86
- encode: (date) => date.getTime()
87
- });
88
- // ===== JSON CODEC =====
89
- /**
90
- * JSON string codec for any type
91
- */
92
- export const jsonCodec = (schema) => {
93
- const outputSchema = schema || VldUnknown.create();
94
- return VldCodec.create(VldString.create(), outputSchema, {
95
- decode: (jsonString) => {
96
- try {
97
- return JSON.parse(jsonString);
98
- }
99
- catch {
100
- throw new Error('Invalid JSON');
101
- }
102
- },
103
- encode: (data) => JSON.stringify(data)
104
- });
105
- };
106
- // ===== URL CODECS =====
107
- /**
108
- * String to URL codec
109
- */
110
- export const stringToURL = VldCodec.create(VldString.create().url(), VldUnknown.create(), // URL object
111
- {
112
- decode: (urlString) => {
113
- try {
114
- return new URL(urlString);
115
- }
116
- catch {
117
- throw new Error('Invalid URL');
118
- }
119
- },
120
- encode: (url) => url.toString()
121
- });
122
- /**
123
- * String to HTTP/HTTPS URL codec
124
- */
125
- export const stringToHttpURL = VldCodec.create(VldString.create().regex(/^https?:\/\//, 'Must be HTTP or HTTPS URL'), VldUnknown.create(), // URL object
126
- {
127
- decode: (urlString) => {
128
- try {
129
- const url = new URL(urlString);
130
- if (!['http:', 'https:'].includes(url.protocol)) {
131
- throw new Error('Must be HTTP or HTTPS');
132
- }
133
- return url;
134
- }
135
- catch {
136
- throw new Error('Invalid HTTP URL');
137
- }
138
- },
139
- encode: (url) => url.toString()
140
- });
141
- /**
142
- * URI component encode/decode codec
143
- */
144
- export const uriComponent = VldCodec.create(VldString.create(), VldString.create(), {
145
- decode: (encoded) => {
146
- try {
147
- return decodeURIComponent(encoded);
148
- }
149
- catch {
150
- throw new Error('Invalid URI component');
151
- }
152
- },
153
- encode: (decoded) => encodeURIComponent(decoded)
154
- });
155
- /**
156
- * String to boolean codec
157
- */
158
- export const stringToBoolean = VldCodec.create(VldString.create(), VldBoolean.create(), {
159
- decode: (str) => {
160
- const lower = str.toLowerCase();
161
- if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on')
162
- return true;
163
- if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off')
164
- return false;
165
- throw new Error('Invalid boolean string');
166
- },
167
- encode: (bool) => bool.toString()
168
- });
169
- // ===== EXISTING BYTE CODECS (updated) =====
170
- /**
171
- * Base64 to Uint8Array codec
172
- */
173
- export const base64ToBytes = VldCodec.create(VldBase64.create(), VldUint8Array.create(), {
174
- decode: base64ToUint8Array,
175
- encode: uint8ArrayToBase64
176
- });
177
- /**
178
- * URL-safe Base64 to Uint8Array codec
179
- */
180
- export const base64UrlToBytes = VldCodec.create(VldBase64.create().urlSafeMode(), VldUint8Array.create(), {
181
- decode: base64ToUint8Array,
182
- encode: uint8ArrayToBase64Url
183
- });
184
- /**
185
- * Hexadecimal to Uint8Array codec
186
- */
187
- export const hexToBytes = VldCodec.create(VldHex.create(), VldUint8Array.create(), {
188
- decode: hexToUint8Array,
189
- encode: uint8ArrayToHex
190
- });
191
- /**
192
- * Lowercase hexadecimal to Uint8Array codec
193
- */
194
- export const hexLowerToBytes = VldCodec.create(VldHex.create().lowercaseMode(), VldUint8Array.create(), {
195
- decode: hexToUint8Array,
196
- encode: (bytes) => uint8ArrayToHex(bytes).toLowerCase()
197
- });
198
- /**
199
- * UTF-8 string to Uint8Array codec
200
- */
201
- export const utf8ToBytes = VldCodec.create(VldString.create(), VldUint8Array.create(), {
202
- decode: stringToUint8Array,
203
- encode: uint8ArrayToString
204
- });
205
- /**
206
- * Uint8Array to UTF-8 string codec (reverse of utf8ToBytes)
207
- */
208
- export const bytesToUtf8 = VldCodec.create(VldUint8Array.create(), VldString.create(), {
209
- decode: uint8ArrayToString,
210
- encode: stringToUint8Array
211
- });
212
- /**
213
- * Base64URL to Uint8Array codec (updated)
214
- */
215
- export const base64urlToBytes = VldCodec.create(VldBase64.create().urlSafeMode(), VldUint8Array.create(), {
216
- decode: base64ToUint8Array,
217
- encode: uint8ArrayToBase64Url
218
- });
219
- /**
220
- * Base64 encoded JSON codec (updated)
221
- */
222
- export const base64Json = (schema) => {
223
- const outputSchema = schema || VldUnknown.create();
224
- return VldCodec.create(VldBase64.create(), outputSchema, {
225
- decode: (base64) => {
226
- const jsonString = uint8ArrayToString(base64ToUint8Array(base64));
227
- return JSON.parse(jsonString);
228
- },
229
- encode: (data) => {
230
- const jsonString = JSON.stringify(data);
231
- return uint8ArrayToBase64(stringToUint8Array(jsonString));
232
- }
233
- });
234
- };
235
- /**
236
- * JWT payload decoder (base64url encoded JSON) - updated
237
- */
238
- export const jwtPayload = (schema) => {
239
- const outputSchema = schema || VldUnknown.create();
240
- return VldCodec.create(VldString.create().refine(s => s.split('.').length === 3, 'Invalid JWT format'), outputSchema, {
241
- decode: (jwt) => {
242
- const [, payloadBase64] = jwt.split('.');
243
- // Convert base64url to base64
244
- const base64 = payloadBase64
245
- .replace(/-/g, '+')
246
- .replace(/_/g, '/')
247
- .padEnd(payloadBase64.length + (4 - payloadBase64.length % 4) % 4, '=');
248
- const jsonString = uint8ArrayToString(base64ToUint8Array(base64));
249
- return JSON.parse(jsonString);
250
- },
251
- encode: () => {
252
- throw new Error('JWT encoding not supported - use a proper JWT library');
253
- }
254
- });
255
- };
256
- //# sourceMappingURL=index.js.map
1
+ export { D as base64Json, w as base64ToBytes, x as base64UrlToBytes, y as base64urlToBytes, C as bytesToUtf8, p as epochMillisToDate, o as epochSecondsToDate, A as hexLowerToBytes, z as hexToBytes, m as isoDatetimeToDate, q as jsonCodec, E as jwtPayload, n as numberToBigInt, k as stringToBigInt, l as stringToBoolean, t as stringToHttpURL, j as stringToInt, i as stringToNumber, r as stringToURL, v as uriComponent, B as utf8ToBytes } from '../chunks/index-BoV-4S1F.js';
2
+ import '../chunks/bigint-ZKkWLdmi.js';
3
+ import '../chunks/unknown-CjSRcELI.js';
4
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { VldCodec } from '../validators/codec';\nimport { VldBase64 } from '../validators/base64';\nimport { VldHex } from '../validators/hex';\nimport { VldUint8Array } from '../validators/uint8array';\nimport { VldString } from '../validators/string';\nimport { VldNumber } from '../validators/number';\nimport { VldBigInt } from '../validators/bigint';\nimport { VldBoolean } from '../validators/boolean';\nimport { VldDate } from '../validators/date';\nimport { VldUnknown } from '../validators/unknown';\nimport {\n base64ToUint8Array,\n uint8ArrayToBase64,\n uint8ArrayToBase64Url,\n hexToUint8Array,\n uint8ArrayToHex,\n stringToUint8Array,\n uint8ArrayToString\n} from '../utils/codec-utils';\n\n/**\n * Predefined codecs for common transformations (Zod-compatible)\n */\n\n// ===== STRING TO NUMBER CODECS =====\n\n/**\n * String to number codec\n */\nexport const stringToNumber = VldCodec.create(\n VldString.create(),\n VldNumber.create(),\n {\n decode: (str: string) => {\n const num = Number(str);\n if (isNaN(num)) throw new Error('Invalid number');\n return num;\n },\n encode: (num: number) => num.toString()\n }\n);\n\n/**\n * String to integer codec\n */\nexport const stringToInt = VldCodec.create(\n VldString.create(),\n VldNumber.create().int(),\n {\n decode: (str: string) => {\n const num = parseInt(str, 10);\n if (isNaN(num)) throw new Error('Invalid integer');\n return num;\n },\n encode: (num: number) => Math.floor(num).toString()\n }\n);\n\n/**\n * String to BigInt codec\n */\nexport const stringToBigInt = VldCodec.create(\n VldString.create(),\n VldBigInt.create(),\n {\n decode: (str: string) => {\n try {\n return BigInt(str);\n } catch {\n throw new Error('Invalid BigInt');\n }\n },\n encode: (bigint: bigint) => bigint.toString()\n }\n);\n\n/**\n * Number to BigInt codec\n */\nexport const numberToBigInt = VldCodec.create(\n VldNumber.create().int(),\n VldBigInt.create(),\n {\n decode: (num: number) => BigInt(Math.floor(num)),\n encode: (bigint: bigint) => Number(bigint)\n }\n);\n\n// ===== DATE CODECS =====\n\n/**\n * ISO datetime string to Date codec\n */\nexport const isoDatetimeToDate = VldCodec.create(\n VldString.create().regex(/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?$/, 'Invalid ISO datetime format'),\n VldDate.create(),\n {\n decode: (isoString: string) => {\n const date = new Date(isoString);\n if (isNaN(date.getTime())) throw new Error('Invalid date');\n return date;\n },\n encode: (date: Date) => date.toISOString()\n }\n);\n\n/**\n * Epoch seconds to Date codec\n */\nexport const epochSecondsToDate = VldCodec.create(\n VldNumber.create(),\n VldDate.create(),\n {\n decode: (seconds: number) => new Date(seconds * 1000),\n encode: (date: Date) => Math.floor(date.getTime() / 1000)\n }\n);\n\n/**\n * Epoch milliseconds to Date codec\n */\nexport const epochMillisToDate = VldCodec.create(\n VldNumber.create(),\n VldDate.create(),\n {\n decode: (millis: number) => new Date(millis),\n encode: (date: Date) => date.getTime()\n }\n);\n\n// ===== JSON CODEC =====\n\n/**\n * JSON string codec for any type\n */\nexport const jsonCodec = <T = any>(schema?: any) => {\n const outputSchema = schema || VldUnknown.create();\n \n return VldCodec.create(\n VldString.create(),\n outputSchema,\n {\n decode: (jsonString: string) => {\n try {\n return JSON.parse(jsonString);\n } catch {\n throw new Error('Invalid JSON');\n }\n },\n encode: (data: T) => JSON.stringify(data)\n }\n );\n};\n\n// ===== URL CODECS =====\n\n/**\n * String to URL codec\n */\nexport const stringToURL = VldCodec.create(\n VldString.create().url(),\n VldUnknown.create() as any, // URL object\n {\n decode: (urlString: string) => {\n try {\n return new URL(urlString);\n } catch {\n throw new Error('Invalid URL');\n }\n },\n encode: (url: URL) => url.toString()\n }\n);\n\n/**\n * String to HTTP/HTTPS URL codec\n */\nexport const stringToHttpURL = VldCodec.create(\n VldString.create().regex(/^https?:\\/\\//, 'Must be HTTP or HTTPS URL'),\n VldUnknown.create() as any, // URL object\n {\n decode: (urlString: string) => {\n try {\n const url = new URL(urlString);\n if (!['http:', 'https:'].includes(url.protocol)) {\n throw new Error('Must be HTTP or HTTPS');\n }\n return url;\n } catch {\n throw new Error('Invalid HTTP URL');\n }\n },\n encode: (url: URL) => url.toString()\n }\n);\n\n/**\n * URI component encode/decode codec\n */\nexport const uriComponent = VldCodec.create(\n VldString.create(),\n VldString.create(),\n {\n decode: (encoded: string) => {\n try {\n return decodeURIComponent(encoded);\n } catch {\n throw new Error('Invalid URI component');\n }\n },\n encode: (decoded: string) => encodeURIComponent(decoded)\n }\n);\n\n/**\n * String to boolean codec\n */\nexport const stringToBoolean = VldCodec.create(\n VldString.create(),\n VldBoolean.create(),\n {\n decode: (str: string) => {\n const lower = str.toLowerCase();\n if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') return true;\n if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') return false;\n throw new Error('Invalid boolean string');\n },\n encode: (bool: boolean) => bool.toString()\n }\n);\n\n// ===== EXISTING BYTE CODECS (updated) =====\n\n/**\n * Base64 to Uint8Array codec\n */\nexport const base64ToBytes = VldCodec.create(\n VldBase64.create(),\n VldUint8Array.create(),\n {\n decode: base64ToUint8Array,\n encode: uint8ArrayToBase64\n }\n);\n\n/**\n * URL-safe Base64 to Uint8Array codec\n */\nexport const base64UrlToBytes = VldCodec.create(\n VldBase64.create().urlSafeMode(),\n VldUint8Array.create(),\n {\n decode: base64ToUint8Array,\n encode: uint8ArrayToBase64Url\n }\n);\n\n/**\n * Hexadecimal to Uint8Array codec\n */\nexport const hexToBytes = VldCodec.create(\n VldHex.create(),\n VldUint8Array.create(),\n {\n decode: hexToUint8Array,\n encode: uint8ArrayToHex\n }\n);\n\n/**\n * Lowercase hexadecimal to Uint8Array codec\n */\nexport const hexLowerToBytes = VldCodec.create(\n VldHex.create().lowercaseMode(),\n VldUint8Array.create(),\n {\n decode: hexToUint8Array,\n encode: (bytes) => uint8ArrayToHex(bytes).toLowerCase()\n }\n);\n\n/**\n * UTF-8 string to Uint8Array codec\n */\nexport const utf8ToBytes = VldCodec.create(\n VldString.create(),\n VldUint8Array.create(),\n {\n decode: stringToUint8Array,\n encode: uint8ArrayToString\n }\n);\n\n/**\n * Uint8Array to UTF-8 string codec (reverse of utf8ToBytes)\n */\nexport const bytesToUtf8 = VldCodec.create(\n VldUint8Array.create(),\n VldString.create(),\n {\n decode: uint8ArrayToString,\n encode: stringToUint8Array\n }\n);\n\n/**\n * Base64URL to Uint8Array codec (updated)\n */\nexport const base64urlToBytes = VldCodec.create(\n VldBase64.create().urlSafeMode(),\n VldUint8Array.create(),\n {\n decode: base64ToUint8Array,\n encode: uint8ArrayToBase64Url\n }\n);\n\n/**\n * Base64 encoded JSON codec (updated)\n */\nexport const base64Json = <T = any>(schema?: any) => {\n const outputSchema = schema || VldUnknown.create();\n \n return VldCodec.create(\n VldBase64.create(),\n outputSchema,\n {\n decode: (base64: string) => {\n const jsonString = uint8ArrayToString(base64ToUint8Array(base64));\n return JSON.parse(jsonString);\n },\n encode: (data: T) => {\n const jsonString = JSON.stringify(data);\n return uint8ArrayToBase64(stringToUint8Array(jsonString));\n }\n }\n );\n};\n\n/**\n * JWT payload decoder (base64url encoded JSON) - updated\n */\nexport const jwtPayload = (schema?: any) => {\n const outputSchema = schema || VldUnknown.create();\n \n return VldCodec.create(\n VldString.create().refine(s => s.split('.').length === 3, 'Invalid JWT format'),\n outputSchema,\n {\n decode: (jwt: string) => {\n const [, payloadBase64] = jwt.split('.');\n // Convert base64url to base64\n const base64 = payloadBase64\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(payloadBase64.length + (4 - payloadBase64.length % 4) % 4, '=');\n \n const jsonString = uint8ArrayToString(base64ToUint8Array(base64));\n return JSON.parse(jsonString);\n },\n encode: () => {\n throw new Error('JWT encoding not supported - use a proper JWT library');\n }\n }\n );\n};"]}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/coercion/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAIjC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAyC9B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;CAOhD"}
1
+ {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/coercion/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAIjC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAkC9B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;CAOhD"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * VLD Coercion Validators
3
+ *
4
+ * Validators that coerce values to the target type before validation.
5
+ */
6
+ export { VldCoerceString } from './string';
7
+ export { VldCoerceNumber } from './number';
8
+ export { VldCoerceBoolean } from './boolean';
9
+ export { VldCoerceDate } from './date';
10
+ export { VldCoerceBigInt } from './bigint';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coercion/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -1,9 +1,10 @@
1
- import { VldBigInt } from '../validators/bigint.js';
2
- import { getMessages } from '../locales/index.js';
1
+ export { a as VldCoerceBoolean, V as VldCoerceDate, b as VldCoerceNumber, c as VldCoerceString } from '../chunks/date-7Iz2BGsL.js';
2
+ import { d as VldBigInt, t as getMessages } from '../chunks/bigint-ZKkWLdmi.js';
3
+
3
4
  /**
4
5
  * BigInt coercion validator that attempts to convert values to bigint
5
6
  */
6
- export class VldCoerceBigInt extends VldBigInt {
7
+ class VldCoerceBigInt extends VldBigInt {
7
8
  constructor(config) {
8
9
  super(config);
9
10
  }
@@ -105,4 +106,6 @@ export class VldCoerceBigInt extends VldBigInt {
105
106
  }
106
107
  }
107
108
  }
108
- //# sourceMappingURL=bigint.js.map
109
+
110
+ export { VldCoerceBigInt };
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/coercion/bigint.ts"],"sourcesContent":["import { VldBigInt } from '../validators/bigint';\nimport { ParseResult } from '../validators/base';\nimport { getMessages } from '../locales';\n\n/**\n * BigInt coercion validator that attempts to convert values to bigint\n */\nexport class VldCoerceBigInt extends VldBigInt {\n protected constructor(config?: any) {\n super(config);\n }\n \n /**\n * Create a new coerce bigint validator\n */\n static create(): VldCoerceBigInt {\n return new VldCoerceBigInt();\n }\n \n // Override all chain methods to return VldCoerceBigInt instances\n min(value: bigint, message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v >= value],\n errorMessage: message || `BigInt must be at least ${value}`\n });\n }\n \n max(value: bigint, message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v <= value],\n errorMessage: message || `BigInt must be at most ${value}`\n });\n }\n \n positive(message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v > 0n],\n errorMessage: message || 'BigInt must be positive'\n });\n }\n \n negative(message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v < 0n],\n errorMessage: message || 'BigInt must be negative'\n });\n }\n \n nonnegative(message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v >= 0n],\n errorMessage: message || 'BigInt must be non-negative'\n });\n }\n \n nonpositive(message?: string): VldCoerceBigInt {\n return new VldCoerceBigInt({\n checks: [...this.config.checks, (v: bigint) => v <= 0n],\n errorMessage: message || 'BigInt must be non-positive'\n });\n }\n \n /**\n * Parse and coerce a value to bigint\n */\n parse(value: unknown): bigint {\n // If it's already a bigint, use parent validation directly\n if (typeof value === 'bigint') {\n return super.parse(value);\n }\n \n // Handle string values\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n try {\n const coerced = BigInt(trimmed);\n return super.parse(coerced);\n } catch {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n }\n \n // Handle number values (must be integer)\n if (typeof value === 'number') {\n if (!Number.isInteger(value)) {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n const coerced = BigInt(value);\n return super.parse(coerced);\n }\n \n // Handle null and undefined\n if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n \n // Try to coerce other values\n try {\n const coerced = BigInt(value as any);\n return super.parse(coerced);\n } catch {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n }\n \n /**\n * Safely parse and coerce a value to bigint\n */\n safeParse(value: unknown): ParseResult<bigint> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Event Emitter Implementation
3
+ *
4
+ * This module provides a type-safe event emitter,
5
+ * compatible with @oxog/emitter when available.
6
+ */
7
+ /**
8
+ * Event map type - maps event names to their payload types
9
+ */
10
+ export type EventMap = Record<string, unknown>;
11
+ /**
12
+ * Event handler function type
13
+ */
14
+ export type EventHandler<T = unknown> = (payload: T) => void | Promise<void>;
15
+ /**
16
+ * Listener options
17
+ */
18
+ export interface ListenerOptions {
19
+ /** Remove listener after first call */
20
+ once?: boolean;
21
+ /** Listener priority (higher = called first) */
22
+ priority?: number;
23
+ }
24
+ /**
25
+ * Emitter interface
26
+ */
27
+ export interface Emitter<TEvents extends EventMap = EventMap> {
28
+ /** Subscribe to an event */
29
+ on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>, options?: ListenerOptions): () => void;
30
+ /** Subscribe to an event once */
31
+ once<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void;
32
+ /** Unsubscribe from an event */
33
+ off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void;
34
+ /** Emit an event */
35
+ emit<K extends keyof TEvents>(event: K, payload: TEvents[K]): void;
36
+ /** Emit an event and wait for all handlers */
37
+ emitAsync<K extends keyof TEvents>(event: K, payload: TEvents[K]): Promise<void>;
38
+ /** Remove all listeners for an event or all events */
39
+ removeAllListeners<K extends keyof TEvents>(event?: K): void;
40
+ /** Get listener count for an event */
41
+ listenerCount<K extends keyof TEvents>(event: K): number;
42
+ /** Get all event names with listeners */
43
+ eventNames(): (keyof TEvents)[];
44
+ }
45
+ /**
46
+ * Create a type-safe event emitter
47
+ */
48
+ export declare function createEmitter<TEvents extends EventMap = EventMap>(): Emitter<TEvents>;
49
+ /**
50
+ * Mixin to add event emitter capabilities to a class
51
+ */
52
+ export declare function withEmitter<TEvents extends EventMap>(): <TBase extends new (...args: any[]) => object>(Base: TBase) => {
53
+ new (...args: any[]): {
54
+ /** @internal */
55
+ _emitter: Emitter<TEvents>;
56
+ on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>, options?: ListenerOptions): () => void;
57
+ once<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void;
58
+ off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void;
59
+ emit<K extends keyof TEvents>(event: K, payload: TEvents[K]): void;
60
+ emitAsync<K extends keyof TEvents>(event: K, payload: TEvents[K]): Promise<void>;
61
+ };
62
+ } & TBase;
63
+ /**
64
+ * Create an event bus for global event handling
65
+ */
66
+ export declare function createEventBus<TEvents extends EventMap>(): Emitter<TEvents> & {
67
+ /** Create a scoped emitter that auto-cleans up */
68
+ createScope(): Emitter<TEvents> & {
69
+ dispose(): void;
70
+ };
71
+ };
72
+ export type { EventHandler as VldEventHandler };
73
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/compat/emitter.ts"],"names":[],"mappings":"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"}