@oxog/vld 1.5.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 (279) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +558 -517
  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/codecs/index.js +4 -275
  26. package/dist/codecs/index.js.map +1 -1
  27. package/dist/coercion/index.d.ts +11 -0
  28. package/dist/coercion/index.d.ts.map +1 -0
  29. package/dist/coercion/{bigint.js → index.js} +7 -4
  30. package/dist/coercion/index.js.map +1 -0
  31. package/dist/compat/emitter.js +6 -4
  32. package/dist/compat/emitter.js.map +1 -1
  33. package/dist/compat/result.js +21 -19
  34. package/dist/compat/result.js.map +1 -1
  35. package/dist/errors.js +13 -10
  36. package/dist/errors.js.map +1 -1
  37. package/dist/index.js +225 -126
  38. package/dist/index.js.map +1 -1
  39. package/dist/kernel.js +10 -7
  40. package/dist/kernel.js.map +1 -1
  41. package/dist/locales/af.js +4 -2
  42. package/dist/locales/af.js.map +1 -1
  43. package/dist/locales/ar.js +4 -2
  44. package/dist/locales/ar.js.map +1 -1
  45. package/dist/locales/bn.js +4 -2
  46. package/dist/locales/bn.js.map +1 -1
  47. package/dist/locales/da.js +4 -2
  48. package/dist/locales/da.js.map +1 -1
  49. package/dist/locales/de.js +4 -2
  50. package/dist/locales/de.js.map +1 -1
  51. package/dist/locales/en.js +4 -2
  52. package/dist/locales/en.js.map +1 -1
  53. package/dist/locales/es-MX.js +4 -2
  54. package/dist/locales/es-MX.js.map +1 -1
  55. package/dist/locales/es.js +4 -2
  56. package/dist/locales/es.js.map +1 -1
  57. package/dist/locales/fi.js +4 -2
  58. package/dist/locales/fi.js.map +1 -1
  59. package/dist/locales/fr.js +4 -2
  60. package/dist/locales/fr.js.map +1 -1
  61. package/dist/locales/hi.js +4 -2
  62. package/dist/locales/hi.js.map +1 -1
  63. package/dist/locales/id.js +4 -2
  64. package/dist/locales/id.js.map +1 -1
  65. package/dist/locales/index.js +3 -91
  66. package/dist/locales/index.js.map +1 -1
  67. package/dist/locales/it.js +4 -2
  68. package/dist/locales/it.js.map +1 -1
  69. package/dist/locales/ja.js +4 -2
  70. package/dist/locales/ja.js.map +1 -1
  71. package/dist/locales/ko.js +4 -2
  72. package/dist/locales/ko.js.map +1 -1
  73. package/dist/locales/lazy.d.ts +111 -0
  74. package/dist/locales/lazy.d.ts.map +1 -0
  75. package/dist/locales/lazy.js +220 -0
  76. package/dist/locales/lazy.js.map +1 -0
  77. package/dist/locales/nl.js +4 -2
  78. package/dist/locales/nl.js.map +1 -1
  79. package/dist/locales/no.js +4 -2
  80. package/dist/locales/no.js.map +1 -1
  81. package/dist/locales/pl.js +4 -2
  82. package/dist/locales/pl.js.map +1 -1
  83. package/dist/locales/pt-BR.js +4 -2
  84. package/dist/locales/pt-BR.js.map +1 -1
  85. package/dist/locales/pt.js +4 -2
  86. package/dist/locales/pt.js.map +1 -1
  87. package/dist/locales/ru.js +4 -2
  88. package/dist/locales/ru.js.map +1 -1
  89. package/dist/locales/sv.js +4 -2
  90. package/dist/locales/sv.js.map +1 -1
  91. package/dist/locales/sw.js +4 -2
  92. package/dist/locales/sw.js.map +1 -1
  93. package/dist/locales/th.js +4 -2
  94. package/dist/locales/th.js.map +1 -1
  95. package/dist/locales/tr.js +4 -2
  96. package/dist/locales/tr.js.map +1 -1
  97. package/dist/locales/vi.js +4 -2
  98. package/dist/locales/vi.js.map +1 -1
  99. package/dist/locales/zh.js +4 -2
  100. package/dist/locales/zh.js.map +1 -1
  101. package/dist/mini.d.ts +182 -0
  102. package/dist/mini.d.ts.map +1 -0
  103. package/dist/mini.js +132 -0
  104. package/dist/mini.js.map +1 -0
  105. package/dist/pigment.js +8 -7
  106. package/dist/pigment.js.map +1 -1
  107. package/dist/validators/index.js +5 -45
  108. package/dist/validators/index.js.map +1 -1
  109. package/package.json +69 -11
  110. package/dist/cli/benchmark.d.ts +0 -15
  111. package/dist/cli/benchmark.d.ts.map +0 -1
  112. package/dist/cli/benchmark.js +0 -248
  113. package/dist/cli/benchmark.js.map +0 -1
  114. package/dist/cli/bin.js +0 -35
  115. package/dist/cli/bin.js.map +0 -1
  116. package/dist/cli/commands/benchmark.js +0 -204
  117. package/dist/cli/commands/benchmark.js.map +0 -1
  118. package/dist/cli/commands/validate.js +0 -157
  119. package/dist/cli/commands/validate.js.map +0 -1
  120. package/dist/cli/generate.d.ts +0 -14
  121. package/dist/cli/generate.d.ts.map +0 -1
  122. package/dist/cli/generate.js +0 -233
  123. package/dist/cli/generate.js.map +0 -1
  124. package/dist/cli/index.js +0 -182
  125. package/dist/cli/index.js.map +0 -1
  126. package/dist/cli/validate.d.ts +0 -15
  127. package/dist/cli/validate.d.ts.map +0 -1
  128. package/dist/cli/validate.js +0 -162
  129. package/dist/cli/validate.js.map +0 -1
  130. package/dist/coercion/bigint.js.map +0 -1
  131. package/dist/coercion/boolean.js +0 -59
  132. package/dist/coercion/boolean.js.map +0 -1
  133. package/dist/coercion/date.js +0 -52
  134. package/dist/coercion/date.js.map +0 -1
  135. package/dist/coercion/number.js +0 -160
  136. package/dist/coercion/number.js.map +0 -1
  137. package/dist/coercion/string.js.map +0 -1
  138. package/dist/compat/index.js +0 -14
  139. package/dist/compat/index.js.map +0 -1
  140. package/dist/events.js +0 -8
  141. package/dist/events.js.map +0 -1
  142. package/dist/guards.d.ts +0 -143
  143. package/dist/guards.d.ts.map +0 -1
  144. package/dist/guards.js +0 -238
  145. package/dist/guards.js.map +0 -1
  146. package/dist/index-new.d.ts.map +0 -1
  147. package/dist/locales/backup-en.js +0 -105
  148. package/dist/locales/backup-en.js.map +0 -1
  149. package/dist/locales/types.js +0 -2
  150. package/dist/locales/types.js.map +0 -1
  151. package/dist/locales.d.ts +0 -54
  152. package/dist/locales.d.ts.map +0 -1
  153. package/dist/locales.js +0 -732
  154. package/dist/locales.js.map +0 -1
  155. package/dist/logger.js +0 -184
  156. package/dist/logger.js.map +0 -1
  157. package/dist/plugins/codecs.d.ts +0 -17
  158. package/dist/plugins/codecs.d.ts.map +0 -1
  159. package/dist/plugins/codecs.js +0 -29
  160. package/dist/plugins/codecs.js.map +0 -1
  161. package/dist/plugins/coercion.d.ts +0 -13
  162. package/dist/plugins/coercion.d.ts.map +0 -1
  163. package/dist/plugins/coercion.js +0 -34
  164. package/dist/plugins/coercion.js.map +0 -1
  165. package/dist/plugins/core-validators.d.ts +0 -13
  166. package/dist/plugins/core-validators.d.ts.map +0 -1
  167. package/dist/plugins/core-validators.js +0 -96
  168. package/dist/plugins/core-validators.js.map +0 -1
  169. package/dist/plugins/index.js +0 -8
  170. package/dist/plugins/index.js.map +0 -1
  171. package/dist/plugins/kernel.d.ts +0 -29
  172. package/dist/plugins/kernel.d.ts.map +0 -1
  173. package/dist/plugins/kernel.js +0 -486
  174. package/dist/plugins/kernel.js.map +0 -1
  175. package/dist/plugins/types.js +0 -8
  176. package/dist/plugins/types.js.map +0 -1
  177. package/dist/style.d.ts +0 -123
  178. package/dist/style.d.ts.map +0 -1
  179. package/dist/style.js +0 -369
  180. package/dist/style.js.map +0 -1
  181. package/dist/utils/codec-utils.js +0 -229
  182. package/dist/utils/codec-utils.js.map +0 -1
  183. package/dist/utils/deep-merge.js +0 -76
  184. package/dist/utils/deep-merge.js.map +0 -1
  185. package/dist/utils/ip-validation.js +0 -98
  186. package/dist/utils/ip-validation.js.map +0 -1
  187. package/dist/utils/security.js +0 -61
  188. package/dist/utils/security.js.map +0 -1
  189. package/dist/validators/any.js +0 -25
  190. package/dist/validators/any.js.map +0 -1
  191. package/dist/validators/array.js +0 -190
  192. package/dist/validators/array.js.map +0 -1
  193. package/dist/validators/base.js +0 -499
  194. package/dist/validators/base.js.map +0 -1
  195. package/dist/validators/base64.js +0 -65
  196. package/dist/validators/base64.js.map +0 -1
  197. package/dist/validators/bigint.js +0 -142
  198. package/dist/validators/bigint.js.map +0 -1
  199. package/dist/validators/boolean.js +0 -114
  200. package/dist/validators/boolean.js.map +0 -1
  201. package/dist/validators/codec.js +0 -182
  202. package/dist/validators/codec.js.map +0 -1
  203. package/dist/validators/custom.js +0 -50
  204. package/dist/validators/custom.js.map +0 -1
  205. package/dist/validators/date.js +0 -227
  206. package/dist/validators/date.js.map +0 -1
  207. package/dist/validators/discriminated-union.js +0 -98
  208. package/dist/validators/discriminated-union.js.map +0 -1
  209. package/dist/validators/enum.js +0 -82
  210. package/dist/validators/enum.js.map +0 -1
  211. package/dist/validators/file.js +0 -114
  212. package/dist/validators/file.js.map +0 -1
  213. package/dist/validators/function.js +0 -45
  214. package/dist/validators/function.js.map +0 -1
  215. package/dist/validators/hex.js +0 -62
  216. package/dist/validators/hex.js.map +0 -1
  217. package/dist/validators/intersection.js +0 -64
  218. package/dist/validators/intersection.js.map +0 -1
  219. package/dist/validators/json.js +0 -64
  220. package/dist/validators/json.js.map +0 -1
  221. package/dist/validators/lazy.js +0 -42
  222. package/dist/validators/lazy.js.map +0 -1
  223. package/dist/validators/literal.js +0 -45
  224. package/dist/validators/literal.js.map +0 -1
  225. package/dist/validators/map.js +0 -54
  226. package/dist/validators/map.js.map +0 -1
  227. package/dist/validators/nan.js +0 -32
  228. package/dist/validators/nan.js.map +0 -1
  229. package/dist/validators/never.js +0 -29
  230. package/dist/validators/never.js.map +0 -1
  231. package/dist/validators/null.js +0 -31
  232. package/dist/validators/null.js.map +0 -1
  233. package/dist/validators/number.js +0 -225
  234. package/dist/validators/number.js.map +0 -1
  235. package/dist/validators/object-optimized.d.ts +0 -23
  236. package/dist/validators/object-optimized.d.ts.map +0 -1
  237. package/dist/validators/object-optimized.js +0 -179
  238. package/dist/validators/object-optimized.js.map +0 -1
  239. package/dist/validators/object-ultra.d.ts +0 -34
  240. package/dist/validators/object-ultra.d.ts.map +0 -1
  241. package/dist/validators/object-ultra.js +0 -175
  242. package/dist/validators/object-ultra.js.map +0 -1
  243. package/dist/validators/object.js +0 -458
  244. package/dist/validators/object.js.map +0 -1
  245. package/dist/validators/record.js +0 -128
  246. package/dist/validators/record.js.map +0 -1
  247. package/dist/validators/set.js +0 -51
  248. package/dist/validators/set.js.map +0 -1
  249. package/dist/validators/string-bool.js +0 -127
  250. package/dist/validators/string-bool.js.map +0 -1
  251. package/dist/validators/string-formats.js +0 -120
  252. package/dist/validators/string-formats.js.map +0 -1
  253. package/dist/validators/string-ultra.d.ts +0 -49
  254. package/dist/validators/string-ultra.d.ts.map +0 -1
  255. package/dist/validators/string-ultra.js +0 -217
  256. package/dist/validators/string-ultra.js.map +0 -1
  257. package/dist/validators/string.js +0 -253
  258. package/dist/validators/string.js.map +0 -1
  259. package/dist/validators/symbol.js +0 -42
  260. package/dist/validators/symbol.js.map +0 -1
  261. package/dist/validators/template-literal.js +0 -102
  262. package/dist/validators/template-literal.js.map +0 -1
  263. package/dist/validators/tuple.js +0 -55
  264. package/dist/validators/tuple.js.map +0 -1
  265. package/dist/validators/uint8array.js +0 -98
  266. package/dist/validators/uint8array.js.map +0 -1
  267. package/dist/validators/undefined.js +0 -31
  268. package/dist/validators/undefined.js.map +0 -1
  269. package/dist/validators/union-optimized.d.ts +0 -15
  270. package/dist/validators/union-optimized.d.ts.map +0 -1
  271. package/dist/validators/union-optimized.js +0 -92
  272. package/dist/validators/union-optimized.js.map +0 -1
  273. package/dist/validators/union.js +0 -126
  274. package/dist/validators/union.js.map +0 -1
  275. package/dist/validators/unknown.js.map +0 -1
  276. package/dist/validators/void.js +0 -35
  277. package/dist/validators/void.js.map +0 -1
  278. package/dist/validators/xor.js +0 -64
  279. package/dist/validators/xor.js.map +0 -1
package/dist/cli/index.js DELETED
@@ -1,182 +0,0 @@
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
- import { pigment } from '../pigment.js';
8
- /**
9
- * Parse command line arguments
10
- */
11
- function parseArgs(args, options = []) {
12
- const result = {
13
- positional: [],
14
- options: {}
15
- };
16
- // Set defaults
17
- for (const opt of options) {
18
- if (opt.default !== undefined) {
19
- result.options[opt.name] = opt.default;
20
- }
21
- }
22
- let i = 0;
23
- while (i < args.length) {
24
- const arg = args[i];
25
- if (arg.startsWith('--')) {
26
- // Long option
27
- const [name, value] = arg.slice(2).split('=');
28
- const option = options.find((o) => o.name === name);
29
- if (option) {
30
- if (option.type === 'boolean') {
31
- result.options[name] = value !== 'false';
32
- }
33
- else if (value !== undefined) {
34
- result.options[name] = option.type === 'number' ? Number(value) : value;
35
- }
36
- else if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
37
- i++;
38
- result.options[name] = option.type === 'number' ? Number(args[i]) : args[i];
39
- }
40
- else {
41
- result.options[name] = true;
42
- }
43
- }
44
- }
45
- else if (arg.startsWith('-')) {
46
- // Short option
47
- const short = arg.slice(1);
48
- const option = options.find((o) => o.short === short);
49
- if (option) {
50
- if (option.type === 'boolean') {
51
- result.options[option.name] = true;
52
- }
53
- else if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
54
- i++;
55
- result.options[option.name] =
56
- option.type === 'number' ? Number(args[i]) : args[i];
57
- }
58
- }
59
- }
60
- else {
61
- // Positional argument
62
- result.positional.push(arg);
63
- }
64
- i++;
65
- }
66
- return result;
67
- }
68
- /**
69
- * Create a CLI instance
70
- */
71
- export function createCli(name, version, description) {
72
- const commands = new Map();
73
- const cli = {
74
- name,
75
- version,
76
- description,
77
- commands,
78
- command(cmd) {
79
- commands.set(cmd.name, cmd);
80
- if (cmd.aliases) {
81
- for (const alias of cmd.aliases) {
82
- commands.set(alias, cmd);
83
- }
84
- }
85
- return this;
86
- },
87
- help() {
88
- const lines = [];
89
- lines.push(pigment.bold(`${name} v${version}`));
90
- lines.push(pigment.dim(description));
91
- lines.push('');
92
- lines.push(pigment.bold('Usage:'));
93
- lines.push(` ${name} <command> [options]`);
94
- lines.push('');
95
- lines.push(pigment.bold('Commands:'));
96
- const uniqueCommands = new Map();
97
- for (const [_cmdName, cmd] of commands) {
98
- if (!uniqueCommands.has(cmd.name)) {
99
- uniqueCommands.set(cmd.name, cmd);
100
- }
101
- }
102
- for (const [cmdName, cmd] of uniqueCommands) {
103
- const aliases = cmd.aliases?.length ? pigment.dim(` (${cmd.aliases.join(', ')})`) : '';
104
- lines.push(` ${pigment.cyan(cmdName)}${aliases}`);
105
- lines.push(` ${cmd.description}`);
106
- }
107
- lines.push('');
108
- lines.push(pigment.bold('Options:'));
109
- lines.push(` ${pigment.cyan('-h, --help')} Show help`);
110
- lines.push(` ${pigment.cyan('-v, --version')} Show version`);
111
- return lines.join('\n');
112
- },
113
- async run(args) {
114
- // Handle help
115
- if (args.includes('--help') || args.includes('-h') || args.length === 0) {
116
- console.log(this.help());
117
- return;
118
- }
119
- // Handle version
120
- if (args.includes('--version') || args.includes('-v')) {
121
- console.log(`${name} v${version}`);
122
- return;
123
- }
124
- // Get command
125
- const cmdName = args[0];
126
- const cmd = commands.get(cmdName);
127
- if (!cmd) {
128
- console.error(pigment.red(`Unknown command: ${cmdName}`));
129
- console.log('');
130
- console.log(this.help());
131
- process.exitCode = 1;
132
- return;
133
- }
134
- // Parse arguments
135
- const parsed = parseArgs(args.slice(1), cmd.options);
136
- // Map positional arguments
137
- const positionalArgs = {};
138
- if (cmd.arguments) {
139
- for (let i = 0; i < cmd.arguments.length; i++) {
140
- const arg = cmd.arguments[i];
141
- if (i < parsed.positional.length) {
142
- positionalArgs[arg.name] = parsed.positional[i];
143
- }
144
- else if (arg.default !== undefined) {
145
- positionalArgs[arg.name] = arg.default;
146
- }
147
- else if (arg.required) {
148
- console.error(pigment.red(`Missing required argument: ${arg.name}`));
149
- process.exitCode = 1;
150
- return;
151
- }
152
- }
153
- }
154
- // Check required options
155
- if (cmd.options) {
156
- for (const opt of cmd.options) {
157
- if (opt.required && parsed.options[opt.name] === undefined) {
158
- console.error(pigment.red(`Missing required option: --${opt.name}`));
159
- process.exitCode = 1;
160
- return;
161
- }
162
- }
163
- }
164
- // Execute command
165
- try {
166
- await cmd.action(positionalArgs, parsed.options);
167
- }
168
- catch (error) {
169
- console.error(pigment.red('Error:'), error.message);
170
- process.exitCode = 1;
171
- }
172
- }
173
- };
174
- return cli;
175
- }
176
- /**
177
- * VLD CLI instance
178
- */
179
- export const vldCli = createCli('vld', '1.5.0', 'Fast TypeScript Validation Library');
180
- // Export CLI components
181
- export { createCli as cli };
182
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * VLD CLI Tool\r\n *\r\n * Command-line interface for VLD validation library.\r\n * Provides commands for validation, schema generation, and benchmarking.\r\n */\r\n\r\nimport { pigment } from '../pigment';\r\n\r\n/**\r\n * CLI command definition\r\n */\r\nexport interface CliCommand {\r\n name: string;\r\n description: string;\r\n aliases?: string[];\r\n arguments?: CliArgument[];\r\n options?: CliOption[];\r\n action: (args: Record<string, unknown>, options: Record<string, unknown>) => void | Promise<void>;\r\n}\r\n\r\n/**\r\n * CLI argument definition\r\n */\r\nexport interface CliArgument {\r\n name: string;\r\n description: string;\r\n required?: boolean;\r\n default?: unknown;\r\n}\r\n\r\n/**\r\n * CLI option definition\r\n */\r\nexport interface CliOption {\r\n name: string;\r\n short?: string;\r\n description: string;\r\n type?: 'string' | 'number' | 'boolean';\r\n default?: unknown;\r\n required?: boolean;\r\n}\r\n\r\n/**\r\n * CLI instance\r\n */\r\nexport interface Cli {\r\n name: string;\r\n version: string;\r\n description: string;\r\n commands: Map<string, CliCommand>;\r\n\r\n // Builder methods\r\n command(cmd: CliCommand): Cli;\r\n help(): string;\r\n run(args: string[]): Promise<void>;\r\n}\r\n\r\n/**\r\n * Parse command line arguments\r\n */\r\nfunction parseArgs(args: string[], options: CliOption[] = []): {\r\n positional: string[];\r\n options: Record<string, unknown>;\r\n} {\r\n const result = {\r\n positional: [] as string[],\r\n options: {} as Record<string, unknown>\r\n };\r\n\r\n // Set defaults\r\n for (const opt of options) {\r\n if (opt.default !== undefined) {\r\n result.options[opt.name] = opt.default;\r\n }\r\n }\r\n\r\n let i = 0;\r\n while (i < args.length) {\r\n const arg = args[i];\r\n\r\n if (arg.startsWith('--')) {\r\n // Long option\r\n const [name, value] = arg.slice(2).split('=');\r\n const option = options.find((o) => o.name === name);\r\n\r\n if (option) {\r\n if (option.type === 'boolean') {\r\n result.options[name] = value !== 'false';\r\n } else if (value !== undefined) {\r\n result.options[name] = option.type === 'number' ? Number(value) : value;\r\n } else if (i + 1 < args.length && !args[i + 1].startsWith('-')) {\r\n i++;\r\n result.options[name] = option.type === 'number' ? Number(args[i]) : args[i];\r\n } else {\r\n result.options[name] = true;\r\n }\r\n }\r\n } else if (arg.startsWith('-')) {\r\n // Short option\r\n const short = arg.slice(1);\r\n const option = options.find((o) => o.short === short);\r\n\r\n if (option) {\r\n if (option.type === 'boolean') {\r\n result.options[option.name] = true;\r\n } else if (i + 1 < args.length && !args[i + 1].startsWith('-')) {\r\n i++;\r\n result.options[option.name] =\r\n option.type === 'number' ? Number(args[i]) : args[i];\r\n }\r\n }\r\n } else {\r\n // Positional argument\r\n result.positional.push(arg);\r\n }\r\n\r\n i++;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Create a CLI instance\r\n */\r\nexport function createCli(name: string, version: string, description: string): Cli {\r\n const commands = new Map<string, CliCommand>();\r\n\r\n const cli: Cli = {\r\n name,\r\n version,\r\n description,\r\n commands,\r\n\r\n command(cmd: CliCommand): Cli {\r\n commands.set(cmd.name, cmd);\r\n if (cmd.aliases) {\r\n for (const alias of cmd.aliases) {\r\n commands.set(alias, cmd);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n help(): string {\r\n const lines: string[] = [];\r\n\r\n lines.push(pigment.bold(`${name} v${version}`));\r\n lines.push(pigment.dim(description));\r\n lines.push('');\r\n lines.push(pigment.bold('Usage:'));\r\n lines.push(` ${name} <command> [options]`);\r\n lines.push('');\r\n lines.push(pigment.bold('Commands:'));\r\n\r\n const uniqueCommands = new Map<string, CliCommand>();\r\n for (const [_cmdName, cmd] of commands) {\r\n if (!uniqueCommands.has(cmd.name)) {\r\n uniqueCommands.set(cmd.name, cmd);\r\n }\r\n }\r\n\r\n for (const [cmdName, cmd] of uniqueCommands) {\r\n const aliases = cmd.aliases?.length ? pigment.dim(` (${cmd.aliases.join(', ')})`) : '';\r\n lines.push(` ${pigment.cyan(cmdName)}${aliases}`);\r\n lines.push(` ${cmd.description}`);\r\n }\r\n\r\n lines.push('');\r\n lines.push(pigment.bold('Options:'));\r\n lines.push(` ${pigment.cyan('-h, --help')} Show help`);\r\n lines.push(` ${pigment.cyan('-v, --version')} Show version`);\r\n\r\n return lines.join('\\n');\r\n },\r\n\r\n async run(args: string[]): Promise<void> {\r\n // Handle help\r\n if (args.includes('--help') || args.includes('-h') || args.length === 0) {\r\n console.log(this.help());\r\n return;\r\n }\r\n\r\n // Handle version\r\n if (args.includes('--version') || args.includes('-v')) {\r\n console.log(`${name} v${version}`);\r\n return;\r\n }\r\n\r\n // Get command\r\n const cmdName = args[0];\r\n const cmd = commands.get(cmdName);\r\n\r\n if (!cmd) {\r\n console.error(pigment.red(`Unknown command: ${cmdName}`));\r\n console.log('');\r\n console.log(this.help());\r\n process.exitCode = 1;\r\n return;\r\n }\r\n\r\n // Parse arguments\r\n const parsed = parseArgs(args.slice(1), cmd.options);\r\n\r\n // Map positional arguments\r\n const positionalArgs: Record<string, unknown> = {};\r\n if (cmd.arguments) {\r\n for (let i = 0; i < cmd.arguments.length; i++) {\r\n const arg = cmd.arguments[i];\r\n if (i < parsed.positional.length) {\r\n positionalArgs[arg.name] = parsed.positional[i];\r\n } else if (arg.default !== undefined) {\r\n positionalArgs[arg.name] = arg.default;\r\n } else if (arg.required) {\r\n console.error(pigment.red(`Missing required argument: ${arg.name}`));\r\n process.exitCode = 1;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Check required options\r\n if (cmd.options) {\r\n for (const opt of cmd.options) {\r\n if (opt.required && parsed.options[opt.name] === undefined) {\r\n console.error(pigment.red(`Missing required option: --${opt.name}`));\r\n process.exitCode = 1;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Execute command\r\n try {\r\n await cmd.action(positionalArgs, parsed.options);\r\n } catch (error) {\r\n console.error(pigment.red('Error:'), (error as Error).message);\r\n process.exitCode = 1;\r\n }\r\n }\r\n };\r\n\r\n return cli;\r\n}\r\n\r\n/**\r\n * VLD CLI instance\r\n */\r\nexport const vldCli = createCli('vld', '1.5.0', 'Fast TypeScript Validation Library');\r\n\r\n// Export CLI components\r\nexport { createCli as cli };\r\n"]}
@@ -1,15 +0,0 @@
1
- /**
2
- * VLD CLI - Validate Command
3
- *
4
- * JSON verisini VLD schema'sına karşı doğrular.
5
- *
6
- * Kullanım:
7
- * vld validate <schema.ts> <data.json>
8
- * echo '{"name":"John"}' | vld validate <schema.ts>
9
- */
10
- import type { Command } from './index.js';
11
- /**
12
- * Validate command
13
- */
14
- export declare const validateCommand: Command;
15
- //# sourceMappingURL=validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OA+H7B,CAAC"}
@@ -1,162 +0,0 @@
1
- /**
2
- * VLD CLI - Validate Command
3
- *
4
- * JSON verisini VLD schema'sına karşı doğrular.
5
- *
6
- * Kullanım:
7
- * vld validate <schema.ts> <data.json>
8
- * echo '{"name":"John"}' | vld validate <schema.ts>
9
- */
10
- import { style, prettifyErrorColored } from '../style.js';
11
- import { VldError, flattenError } from '../errors.js';
12
- import * as fs from 'fs';
13
- import * as path from 'path';
14
- /**
15
- * Validate command
16
- */
17
- export const validateCommand = {
18
- name: 'validate',
19
- description: 'Validate JSON data against a VLD schema',
20
- aliases: ['val', 'v'],
21
- arguments: [
22
- {
23
- name: 'schema',
24
- description: 'Schema file (TypeScript)',
25
- required: true
26
- },
27
- {
28
- name: 'data',
29
- description: 'JSON data file (or stdin)',
30
- required: false
31
- }
32
- ],
33
- options: [
34
- {
35
- name: 'strict',
36
- short: 's',
37
- description: 'Enable strict mode',
38
- type: 'boolean',
39
- default: false
40
- },
41
- {
42
- name: 'format',
43
- short: 'f',
44
- description: 'Output format (pretty, json, silent)',
45
- type: 'string',
46
- default: 'pretty'
47
- },
48
- {
49
- name: 'export',
50
- short: 'e',
51
- description: 'Export name to use from schema file',
52
- type: 'string',
53
- default: 'schema'
54
- }
55
- ],
56
- async action(args, opts) {
57
- const schemaPath = path.resolve(args.schema);
58
- const dataPath = args.data ? path.resolve(args.data) : null;
59
- const format = opts.format;
60
- // Check schema file exists
61
- if (!fs.existsSync(schemaPath)) {
62
- throw new Error(`Schema file not found: ${schemaPath}`);
63
- }
64
- // Read data
65
- let dataStr;
66
- if (dataPath) {
67
- if (!fs.existsSync(dataPath)) {
68
- throw new Error(`Data file not found: ${dataPath}`);
69
- }
70
- dataStr = fs.readFileSync(dataPath, 'utf-8');
71
- }
72
- else {
73
- // Read from stdin
74
- dataStr = await readStdin();
75
- if (!dataStr) {
76
- throw new Error('No data provided. Specify a data file or pipe JSON via stdin.');
77
- }
78
- }
79
- // Parse JSON
80
- let data;
81
- try {
82
- data = JSON.parse(dataStr);
83
- }
84
- catch {
85
- throw new Error('Invalid JSON data');
86
- }
87
- // Import schema
88
- let schema;
89
- try {
90
- const schemaModule = await import(schemaPath);
91
- const exportName = opts.export;
92
- schema = schemaModule[exportName] || schemaModule.default;
93
- if (!schema) {
94
- throw new Error(`Export "${exportName}" not found in schema file`);
95
- }
96
- }
97
- catch (error) {
98
- throw new Error(`Failed to load schema: ${error.message}`);
99
- }
100
- // Validate
101
- const result = schema.safeParse(data);
102
- // Output result
103
- if (result.success) {
104
- if (format === 'json') {
105
- console.log(JSON.stringify({ success: true, data: result.data }, null, 2));
106
- }
107
- else if (format !== 'silent') {
108
- console.log(style.green('✔') + ' Validation successful');
109
- if (format === 'pretty') {
110
- console.log('');
111
- console.log(style.dim('Validated data:'));
112
- console.log(JSON.stringify(result.data, null, 2));
113
- }
114
- }
115
- process.exit(0);
116
- }
117
- else {
118
- const error = result.error instanceof VldError
119
- ? result.error
120
- : VldError.from(result.error);
121
- if (format === 'json') {
122
- console.log(JSON.stringify({
123
- success: false,
124
- errors: flattenError(error)
125
- }, null, 2));
126
- }
127
- else if (format !== 'silent') {
128
- console.log(style.red('✖') + ' Validation failed');
129
- console.log('');
130
- console.log(prettifyErrorColored(error));
131
- }
132
- process.exit(1);
133
- }
134
- }
135
- };
136
- /**
137
- * stdin'den okur
138
- */
139
- async function readStdin() {
140
- return new Promise((resolve) => {
141
- // stdin açık değilse boş döner
142
- if (process.stdin.isTTY) {
143
- resolve('');
144
- return;
145
- }
146
- let data = '';
147
- process.stdin.setEncoding('utf-8');
148
- process.stdin.on('data', (chunk) => {
149
- data += chunk;
150
- });
151
- process.stdin.on('end', () => {
152
- resolve(data.trim());
153
- });
154
- // 100ms timeout (stdin yoksa)
155
- setTimeout(() => {
156
- if (!data) {
157
- resolve('');
158
- }
159
- }, 100);
160
- });
161
- }
162
- //# sourceMappingURL=validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VLD CLI - Validate Command\n *\n * JSON verisini VLD schema'sına karşı doğrular.\n *\n * Kullanım:\n * vld validate <schema.ts> <data.json>\n * echo '{\"name\":\"John\"}' | vld validate <schema.ts>\n */\n\nimport type { Command } from './index.js';\nimport { style, prettifyErrorColored } from '../style.js';\nimport { VldError, flattenError } from '../errors.js';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * Validate command\n */\nexport const validateCommand: Command = {\n name: 'validate',\n description: 'Validate JSON data against a VLD schema',\n aliases: ['val', 'v'],\n\n arguments: [\n {\n name: 'schema',\n description: 'Schema file (TypeScript)',\n required: true\n },\n {\n name: 'data',\n description: 'JSON data file (or stdin)',\n required: false\n }\n ],\n\n options: [\n {\n name: 'strict',\n short: 's',\n description: 'Enable strict mode',\n type: 'boolean',\n default: false\n },\n {\n name: 'format',\n short: 'f',\n description: 'Output format (pretty, json, silent)',\n type: 'string',\n default: 'pretty'\n },\n {\n name: 'export',\n short: 'e',\n description: 'Export name to use from schema file',\n type: 'string',\n default: 'schema'\n }\n ],\n\n async action(args, opts) {\n const schemaPath = path.resolve(args.schema);\n const dataPath = args.data ? path.resolve(args.data) : null;\n const format = opts.format as string;\n\n // Check schema file exists\n if (!fs.existsSync(schemaPath)) {\n throw new Error(`Schema file not found: ${schemaPath}`);\n }\n\n // Read data\n let dataStr: string;\n\n if (dataPath) {\n if (!fs.existsSync(dataPath)) {\n throw new Error(`Data file not found: ${dataPath}`);\n }\n dataStr = fs.readFileSync(dataPath, 'utf-8');\n } else {\n // Read from stdin\n dataStr = await readStdin();\n\n if (!dataStr) {\n throw new Error('No data provided. Specify a data file or pipe JSON via stdin.');\n }\n }\n\n // Parse JSON\n let data: unknown;\n try {\n data = JSON.parse(dataStr);\n } catch {\n throw new Error('Invalid JSON data');\n }\n\n // Import schema\n let schema: any;\n try {\n const schemaModule = await import(schemaPath);\n const exportName = opts.export as string;\n schema = schemaModule[exportName] || schemaModule.default;\n\n if (!schema) {\n throw new Error(`Export \"${exportName}\" not found in schema file`);\n }\n } catch (error) {\n throw new Error(`Failed to load schema: ${(error as Error).message}`);\n }\n\n // Validate\n const result = schema.safeParse(data);\n\n // Output result\n if (result.success) {\n if (format === 'json') {\n console.log(JSON.stringify({ success: true, data: result.data }, null, 2));\n } else if (format !== 'silent') {\n console.log(style.green('✔') + ' Validation successful');\n\n if (format === 'pretty') {\n console.log('');\n console.log(style.dim('Validated data:'));\n console.log(JSON.stringify(result.data, null, 2));\n }\n }\n process.exit(0);\n } else {\n const error = result.error instanceof VldError\n ? result.error\n : VldError.from(result.error);\n\n if (format === 'json') {\n console.log(JSON.stringify({\n success: false,\n errors: flattenError(error)\n }, null, 2));\n } else if (format !== 'silent') {\n console.log(style.red('✖') + ' Validation failed');\n console.log('');\n console.log(prettifyErrorColored(error));\n }\n\n process.exit(1);\n }\n }\n};\n\n/**\n * stdin'den okur\n */\nasync function readStdin(): Promise<string> {\n return new Promise((resolve) => {\n // stdin açık değilse boş döner\n if (process.stdin.isTTY) {\n resolve('');\n return;\n }\n\n let data = '';\n\n process.stdin.setEncoding('utf-8');\n\n process.stdin.on('data', (chunk) => {\n data += chunk;\n });\n\n process.stdin.on('end', () => {\n resolve(data.trim());\n });\n\n // 100ms timeout (stdin yoksa)\n setTimeout(() => {\n if (!data) {\n resolve('');\n }\n }, 100);\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/coercion/bigint.ts"],"names":[],"mappings":"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","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}"]}
@@ -1,59 +0,0 @@
1
- import { VldBoolean } from '../validators/boolean.js';
2
- import { getMessages } from '../locales/index.js';
3
- /**
4
- * Boolean coercion validator that attempts to convert values to booleans
5
- */
6
- export class VldCoerceBoolean extends VldBoolean {
7
- /**
8
- * Create a new coerce boolean validator
9
- */
10
- static create() {
11
- return new VldCoerceBoolean();
12
- }
13
- /**
14
- * Parse and coerce a value to boolean
15
- */
16
- parse(value) {
17
- // Handle string values
18
- if (typeof value === 'string') {
19
- const lower = value.toLowerCase().trim();
20
- if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') {
21
- return true;
22
- }
23
- if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') {
24
- return false;
25
- }
26
- throw new Error(getMessages().coercionFailed('boolean', value));
27
- }
28
- // Handle number values
29
- if (typeof value === 'number') {
30
- if (value === 1)
31
- return true;
32
- if (value === 0)
33
- return false;
34
- throw new Error(getMessages().coercionFailed('boolean', value));
35
- }
36
- // Handle null and undefined
37
- if (value === null || value === undefined) {
38
- throw new Error(getMessages().coercionFailed('boolean', value));
39
- }
40
- // Handle actual boolean values
41
- if (typeof value === 'boolean') {
42
- return value;
43
- }
44
- // Reject all other unsupported types (objects, arrays, etc.)
45
- throw new Error(getMessages().coercionFailed('boolean', value));
46
- }
47
- /**
48
- * Safely parse and coerce a value to boolean
49
- */
50
- safeParse(value) {
51
- try {
52
- return { success: true, data: this.parse(value) };
53
- }
54
- catch (error) {
55
- return { success: false, error: error };
56
- }
57
- }
58
- }
59
- //# sourceMappingURL=boolean.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/coercion/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,uBAAuB;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC5E,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7B,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6DAA6D;QAC7D,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;CACF","sourcesContent":["import { VldBoolean } from '../validators/boolean';\r\nimport { ParseResult } from '../validators/base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Boolean coercion validator that attempts to convert values to booleans\r\n */\r\nexport class VldCoerceBoolean extends VldBoolean {\r\n /**\r\n * Create a new coerce boolean validator\r\n */\r\n static create(): VldCoerceBoolean {\r\n return new VldCoerceBoolean();\r\n }\r\n \r\n /**\r\n * Parse and coerce a value to boolean\r\n */\r\n parse(value: unknown): boolean {\r\n // Handle string values\r\n if (typeof value === 'string') {\r\n const lower = value.toLowerCase().trim();\r\n if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') {\r\n return true;\r\n }\r\n if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') {\r\n return false;\r\n }\r\n throw new Error(getMessages().coercionFailed('boolean', value));\r\n }\r\n\r\n // Handle number values\r\n if (typeof value === 'number') {\r\n if (value === 1) return true;\r\n if (value === 0) return false;\r\n throw new Error(getMessages().coercionFailed('boolean', value));\r\n }\r\n\r\n // Handle null and undefined\r\n if (value === null || value === undefined) {\r\n throw new Error(getMessages().coercionFailed('boolean', value));\r\n }\r\n\r\n // Handle actual boolean values\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n // Reject all other unsupported types (objects, arrays, etc.)\r\n throw new Error(getMessages().coercionFailed('boolean', value));\r\n }\r\n \r\n /**\r\n * Safely parse and coerce a value to boolean\r\n */\r\n safeParse(value: unknown): ParseResult<boolean> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}"]}
@@ -1,52 +0,0 @@
1
- import { VldDate } from '../validators/date.js';
2
- import { getMessages } from '../locales/index.js';
3
- /**
4
- * Date coercion validator that attempts to convert values to dates
5
- */
6
- export class VldCoerceDate extends VldDate {
7
- /**
8
- * Create a new coerce date validator
9
- */
10
- static create() {
11
- return new VldCoerceDate();
12
- }
13
- /**
14
- * Parse and coerce a value to date
15
- */
16
- parse(value) {
17
- try {
18
- // Handle string and number values
19
- if (typeof value === 'string' || typeof value === 'number') {
20
- const date = new Date(value);
21
- if (isNaN(date.getTime())) {
22
- throw new Error(getMessages().coercionFailed('date', value));
23
- }
24
- return super.parse(date);
25
- }
26
- // Handle null and undefined
27
- if (value === null || value === undefined) {
28
- throw new Error(getMessages().coercionFailed('date', value));
29
- }
30
- // Use parent validation for actual dates
31
- return super.parse(value);
32
- }
33
- catch (error) {
34
- if (error.message.includes('Cannot coerce')) {
35
- throw error;
36
- }
37
- throw new Error(getMessages().coercionFailed('date', value));
38
- }
39
- }
40
- /**
41
- * Safely parse and coerce a value to date
42
- */
43
- safeParse(value) {
44
- try {
45
- return { success: true, data: this.parse(value) };
46
- }
47
- catch (error) {
48
- return { success: false, error: error };
49
- }
50
- }
51
- }
52
- //# sourceMappingURL=date.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/coercion/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,CAAC;YACH,kCAAkC;YAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAED,4BAA4B;YAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,yCAAyC;YACzC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;CACF","sourcesContent":["import { VldDate } from '../validators/date';\nimport { ParseResult } from '../validators/base';\nimport { getMessages } from '../locales';\n\n/**\n * Date coercion validator that attempts to convert values to dates\n */\nexport class VldCoerceDate extends VldDate {\n /**\n * Create a new coerce date validator\n */\n static create(): VldCoerceDate {\n return new VldCoerceDate();\n }\n \n /**\n * Parse and coerce a value to date\n */\n parse(value: unknown): Date {\n try {\n // Handle string and number values\n if (typeof value === 'string' || typeof value === 'number') {\n const date = new Date(value);\n if (isNaN(date.getTime())) {\n throw new Error(getMessages().coercionFailed('date', value));\n }\n return super.parse(date);\n }\n \n // Handle null and undefined\n if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('date', value));\n }\n \n // Use parent validation for actual dates\n return super.parse(value);\n } catch (error) {\n if ((error as Error).message.includes('Cannot coerce')) {\n throw error;\n }\n throw new Error(getMessages().coercionFailed('date', value));\n }\n }\n \n /**\n * Safely parse and coerce a value to date\n */\n safeParse(value: unknown): ParseResult<Date> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}"]}