@oxog/vld 1.5.0 → 2.0.2

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 (293) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/LICENSE +20 -20
  3. package/README.md +558 -517
  4. package/dist/chunks/bigint-DgsCr2dC.js +1709 -0
  5. package/dist/chunks/bigint-DgsCr2dC.js.map +1 -0
  6. package/dist/{coercion/string.js → chunks/date-ODue_rtq.js} +271 -5
  7. package/dist/chunks/date-ODue_rtq.js.map +1 -0
  8. package/dist/chunks/index-BZqWZvVe.js +426 -0
  9. package/dist/chunks/index-BZqWZvVe.js.map +1 -0
  10. package/dist/chunks/index-CETyGkrv.js +894 -0
  11. package/dist/chunks/index-CETyGkrv.js.map +1 -0
  12. package/dist/chunks/json-o20GFhTh.js +2021 -0
  13. package/dist/chunks/json-o20GFhTh.js.map +1 -0
  14. package/dist/{validators/unknown.js → chunks/unknown-SLIH1VCf.js} +6 -3
  15. package/dist/chunks/unknown-SLIH1VCf.js.map +1 -0
  16. package/dist/cjs/errors.cjs +387 -0
  17. package/dist/cjs/errors.cjs.map +1 -0
  18. package/dist/cjs/index.cjs +9983 -0
  19. package/dist/cjs/index.cjs.map +1 -0
  20. package/dist/cjs/locales/index.cjs +2877 -0
  21. package/dist/cjs/locales/index.cjs.map +1 -0
  22. package/dist/cjs/locales/lazy.cjs +3169 -0
  23. package/dist/cjs/locales/lazy.cjs.map +1 -0
  24. package/dist/cjs/mini.cjs +7329 -0
  25. package/dist/cjs/mini.cjs.map +1 -0
  26. package/dist/codecs/index.js +4 -275
  27. package/dist/codecs/index.js.map +1 -1
  28. package/dist/coercion/index.d.ts +11 -0
  29. package/dist/coercion/index.d.ts.map +1 -0
  30. package/dist/coercion/{bigint.js → index.js} +7 -4
  31. package/dist/coercion/index.js.map +1 -0
  32. package/dist/compat/emitter.js +6 -4
  33. package/dist/compat/emitter.js.map +1 -1
  34. package/dist/compat/result.js +21 -19
  35. package/dist/compat/result.js.map +1 -1
  36. package/dist/errors.js +13 -10
  37. package/dist/errors.js.map +1 -1
  38. package/dist/index.js +225 -126
  39. package/dist/index.js.map +1 -1
  40. package/dist/kernel.js +10 -7
  41. package/dist/kernel.js.map +1 -1
  42. package/dist/locales/af.js +4 -2
  43. package/dist/locales/af.js.map +1 -1
  44. package/dist/locales/ar.js +4 -2
  45. package/dist/locales/ar.js.map +1 -1
  46. package/dist/locales/bn.js +4 -2
  47. package/dist/locales/bn.js.map +1 -1
  48. package/dist/locales/da.js +4 -2
  49. package/dist/locales/da.js.map +1 -1
  50. package/dist/locales/de.js +4 -2
  51. package/dist/locales/de.js.map +1 -1
  52. package/dist/locales/en.js +4 -2
  53. package/dist/locales/en.js.map +1 -1
  54. package/dist/locales/es-MX.js +4 -2
  55. package/dist/locales/es-MX.js.map +1 -1
  56. package/dist/locales/es.js +4 -2
  57. package/dist/locales/es.js.map +1 -1
  58. package/dist/locales/fi.js +4 -2
  59. package/dist/locales/fi.js.map +1 -1
  60. package/dist/locales/fr.js +4 -2
  61. package/dist/locales/fr.js.map +1 -1
  62. package/dist/locales/hi.js +4 -2
  63. package/dist/locales/hi.js.map +1 -1
  64. package/dist/locales/id.js +4 -2
  65. package/dist/locales/id.js.map +1 -1
  66. package/dist/locales/index.js +3 -91
  67. package/dist/locales/index.js.map +1 -1
  68. package/dist/locales/it.js +4 -2
  69. package/dist/locales/it.js.map +1 -1
  70. package/dist/locales/ja.js +4 -2
  71. package/dist/locales/ja.js.map +1 -1
  72. package/dist/locales/ko.js +4 -2
  73. package/dist/locales/ko.js.map +1 -1
  74. package/dist/locales/lazy.d.ts +111 -0
  75. package/dist/locales/lazy.d.ts.map +1 -0
  76. package/dist/locales/lazy.js +220 -0
  77. package/dist/locales/lazy.js.map +1 -0
  78. package/dist/locales/nl.js +4 -2
  79. package/dist/locales/nl.js.map +1 -1
  80. package/dist/locales/no.js +4 -2
  81. package/dist/locales/no.js.map +1 -1
  82. package/dist/locales/pl.js +4 -2
  83. package/dist/locales/pl.js.map +1 -1
  84. package/dist/locales/pt-BR.js +4 -2
  85. package/dist/locales/pt-BR.js.map +1 -1
  86. package/dist/locales/pt.js +4 -2
  87. package/dist/locales/pt.js.map +1 -1
  88. package/dist/locales/ru.js +4 -2
  89. package/dist/locales/ru.js.map +1 -1
  90. package/dist/locales/sv.js +4 -2
  91. package/dist/locales/sv.js.map +1 -1
  92. package/dist/locales/sw.js +4 -2
  93. package/dist/locales/sw.js.map +1 -1
  94. package/dist/locales/th.js +4 -2
  95. package/dist/locales/th.js.map +1 -1
  96. package/dist/locales/tr.js +4 -2
  97. package/dist/locales/tr.js.map +1 -1
  98. package/dist/locales/vi.js +4 -2
  99. package/dist/locales/vi.js.map +1 -1
  100. package/dist/locales/zh.js +4 -2
  101. package/dist/locales/zh.js.map +1 -1
  102. package/dist/mini.d.ts +182 -0
  103. package/dist/mini.d.ts.map +1 -0
  104. package/dist/mini.js +132 -0
  105. package/dist/mini.js.map +1 -0
  106. package/dist/pigment.js +8 -7
  107. package/dist/pigment.js.map +1 -1
  108. package/dist/validators/array.d.ts +5 -0
  109. package/dist/validators/array.d.ts.map +1 -1
  110. package/dist/validators/discriminated-union.d.ts.map +1 -1
  111. package/dist/validators/enum.d.ts +5 -1
  112. package/dist/validators/enum.d.ts.map +1 -1
  113. package/dist/validators/index.js +5 -45
  114. package/dist/validators/index.js.map +1 -1
  115. package/dist/validators/lazy.d.ts +8 -1
  116. package/dist/validators/lazy.d.ts.map +1 -1
  117. package/dist/validators/literal.d.ts +5 -1
  118. package/dist/validators/literal.d.ts.map +1 -1
  119. package/dist/validators/object.d.ts +30 -3
  120. package/dist/validators/object.d.ts.map +1 -1
  121. package/dist/validators/string.d.ts +12 -1
  122. package/dist/validators/string.d.ts.map +1 -1
  123. package/package.json +69 -11
  124. package/dist/cli/benchmark.d.ts +0 -15
  125. package/dist/cli/benchmark.d.ts.map +0 -1
  126. package/dist/cli/benchmark.js +0 -248
  127. package/dist/cli/benchmark.js.map +0 -1
  128. package/dist/cli/bin.js +0 -35
  129. package/dist/cli/bin.js.map +0 -1
  130. package/dist/cli/commands/benchmark.js +0 -204
  131. package/dist/cli/commands/benchmark.js.map +0 -1
  132. package/dist/cli/commands/validate.js +0 -157
  133. package/dist/cli/commands/validate.js.map +0 -1
  134. package/dist/cli/generate.d.ts +0 -14
  135. package/dist/cli/generate.d.ts.map +0 -1
  136. package/dist/cli/generate.js +0 -233
  137. package/dist/cli/generate.js.map +0 -1
  138. package/dist/cli/index.js +0 -182
  139. package/dist/cli/index.js.map +0 -1
  140. package/dist/cli/validate.d.ts +0 -15
  141. package/dist/cli/validate.d.ts.map +0 -1
  142. package/dist/cli/validate.js +0 -162
  143. package/dist/cli/validate.js.map +0 -1
  144. package/dist/coercion/bigint.js.map +0 -1
  145. package/dist/coercion/boolean.js +0 -59
  146. package/dist/coercion/boolean.js.map +0 -1
  147. package/dist/coercion/date.js +0 -52
  148. package/dist/coercion/date.js.map +0 -1
  149. package/dist/coercion/number.js +0 -160
  150. package/dist/coercion/number.js.map +0 -1
  151. package/dist/coercion/string.js.map +0 -1
  152. package/dist/compat/index.js +0 -14
  153. package/dist/compat/index.js.map +0 -1
  154. package/dist/events.js +0 -8
  155. package/dist/events.js.map +0 -1
  156. package/dist/guards.d.ts +0 -143
  157. package/dist/guards.d.ts.map +0 -1
  158. package/dist/guards.js +0 -238
  159. package/dist/guards.js.map +0 -1
  160. package/dist/index-new.d.ts.map +0 -1
  161. package/dist/locales/backup-en.js +0 -105
  162. package/dist/locales/backup-en.js.map +0 -1
  163. package/dist/locales/types.js +0 -2
  164. package/dist/locales/types.js.map +0 -1
  165. package/dist/locales.d.ts +0 -54
  166. package/dist/locales.d.ts.map +0 -1
  167. package/dist/locales.js +0 -732
  168. package/dist/locales.js.map +0 -1
  169. package/dist/logger.js +0 -184
  170. package/dist/logger.js.map +0 -1
  171. package/dist/plugins/codecs.d.ts +0 -17
  172. package/dist/plugins/codecs.d.ts.map +0 -1
  173. package/dist/plugins/codecs.js +0 -29
  174. package/dist/plugins/codecs.js.map +0 -1
  175. package/dist/plugins/coercion.d.ts +0 -13
  176. package/dist/plugins/coercion.d.ts.map +0 -1
  177. package/dist/plugins/coercion.js +0 -34
  178. package/dist/plugins/coercion.js.map +0 -1
  179. package/dist/plugins/core-validators.d.ts +0 -13
  180. package/dist/plugins/core-validators.d.ts.map +0 -1
  181. package/dist/plugins/core-validators.js +0 -96
  182. package/dist/plugins/core-validators.js.map +0 -1
  183. package/dist/plugins/index.js +0 -8
  184. package/dist/plugins/index.js.map +0 -1
  185. package/dist/plugins/kernel.d.ts +0 -29
  186. package/dist/plugins/kernel.d.ts.map +0 -1
  187. package/dist/plugins/kernel.js +0 -486
  188. package/dist/plugins/kernel.js.map +0 -1
  189. package/dist/plugins/types.js +0 -8
  190. package/dist/plugins/types.js.map +0 -1
  191. package/dist/style.d.ts +0 -123
  192. package/dist/style.d.ts.map +0 -1
  193. package/dist/style.js +0 -369
  194. package/dist/style.js.map +0 -1
  195. package/dist/utils/codec-utils.js +0 -229
  196. package/dist/utils/codec-utils.js.map +0 -1
  197. package/dist/utils/deep-merge.js +0 -76
  198. package/dist/utils/deep-merge.js.map +0 -1
  199. package/dist/utils/ip-validation.js +0 -98
  200. package/dist/utils/ip-validation.js.map +0 -1
  201. package/dist/utils/security.js +0 -61
  202. package/dist/utils/security.js.map +0 -1
  203. package/dist/validators/any.js +0 -25
  204. package/dist/validators/any.js.map +0 -1
  205. package/dist/validators/array.js +0 -190
  206. package/dist/validators/array.js.map +0 -1
  207. package/dist/validators/base.js +0 -499
  208. package/dist/validators/base.js.map +0 -1
  209. package/dist/validators/base64.js +0 -65
  210. package/dist/validators/base64.js.map +0 -1
  211. package/dist/validators/bigint.js +0 -142
  212. package/dist/validators/bigint.js.map +0 -1
  213. package/dist/validators/boolean.js +0 -114
  214. package/dist/validators/boolean.js.map +0 -1
  215. package/dist/validators/codec.js +0 -182
  216. package/dist/validators/codec.js.map +0 -1
  217. package/dist/validators/custom.js +0 -50
  218. package/dist/validators/custom.js.map +0 -1
  219. package/dist/validators/date.js +0 -227
  220. package/dist/validators/date.js.map +0 -1
  221. package/dist/validators/discriminated-union.js +0 -98
  222. package/dist/validators/discriminated-union.js.map +0 -1
  223. package/dist/validators/enum.js +0 -82
  224. package/dist/validators/enum.js.map +0 -1
  225. package/dist/validators/file.js +0 -114
  226. package/dist/validators/file.js.map +0 -1
  227. package/dist/validators/function.js +0 -45
  228. package/dist/validators/function.js.map +0 -1
  229. package/dist/validators/hex.js +0 -62
  230. package/dist/validators/hex.js.map +0 -1
  231. package/dist/validators/intersection.js +0 -64
  232. package/dist/validators/intersection.js.map +0 -1
  233. package/dist/validators/json.js +0 -64
  234. package/dist/validators/json.js.map +0 -1
  235. package/dist/validators/lazy.js +0 -42
  236. package/dist/validators/lazy.js.map +0 -1
  237. package/dist/validators/literal.js +0 -45
  238. package/dist/validators/literal.js.map +0 -1
  239. package/dist/validators/map.js +0 -54
  240. package/dist/validators/map.js.map +0 -1
  241. package/dist/validators/nan.js +0 -32
  242. package/dist/validators/nan.js.map +0 -1
  243. package/dist/validators/never.js +0 -29
  244. package/dist/validators/never.js.map +0 -1
  245. package/dist/validators/null.js +0 -31
  246. package/dist/validators/null.js.map +0 -1
  247. package/dist/validators/number.js +0 -225
  248. package/dist/validators/number.js.map +0 -1
  249. package/dist/validators/object-optimized.d.ts +0 -23
  250. package/dist/validators/object-optimized.d.ts.map +0 -1
  251. package/dist/validators/object-optimized.js +0 -179
  252. package/dist/validators/object-optimized.js.map +0 -1
  253. package/dist/validators/object-ultra.d.ts +0 -34
  254. package/dist/validators/object-ultra.d.ts.map +0 -1
  255. package/dist/validators/object-ultra.js +0 -175
  256. package/dist/validators/object-ultra.js.map +0 -1
  257. package/dist/validators/object.js +0 -458
  258. package/dist/validators/object.js.map +0 -1
  259. package/dist/validators/record.js +0 -128
  260. package/dist/validators/record.js.map +0 -1
  261. package/dist/validators/set.js +0 -51
  262. package/dist/validators/set.js.map +0 -1
  263. package/dist/validators/string-bool.js +0 -127
  264. package/dist/validators/string-bool.js.map +0 -1
  265. package/dist/validators/string-formats.js +0 -120
  266. package/dist/validators/string-formats.js.map +0 -1
  267. package/dist/validators/string-ultra.d.ts +0 -49
  268. package/dist/validators/string-ultra.d.ts.map +0 -1
  269. package/dist/validators/string-ultra.js +0 -217
  270. package/dist/validators/string-ultra.js.map +0 -1
  271. package/dist/validators/string.js +0 -253
  272. package/dist/validators/string.js.map +0 -1
  273. package/dist/validators/symbol.js +0 -42
  274. package/dist/validators/symbol.js.map +0 -1
  275. package/dist/validators/template-literal.js +0 -102
  276. package/dist/validators/template-literal.js.map +0 -1
  277. package/dist/validators/tuple.js +0 -55
  278. package/dist/validators/tuple.js.map +0 -1
  279. package/dist/validators/uint8array.js +0 -98
  280. package/dist/validators/uint8array.js.map +0 -1
  281. package/dist/validators/undefined.js +0 -31
  282. package/dist/validators/undefined.js.map +0 -1
  283. package/dist/validators/union-optimized.d.ts +0 -15
  284. package/dist/validators/union-optimized.d.ts.map +0 -1
  285. package/dist/validators/union-optimized.js +0 -92
  286. package/dist/validators/union-optimized.js.map +0 -1
  287. package/dist/validators/union.js +0 -126
  288. package/dist/validators/union.js.map +0 -1
  289. package/dist/validators/unknown.js.map +0 -1
  290. package/dist/validators/void.js +0 -35
  291. package/dist/validators/void.js.map +0 -1
  292. package/dist/validators/xor.js +0 -64
  293. package/dist/validators/xor.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VLD CLI - Generate Command\n *\n * TypeScript interface'lerinden VLD schema üretir.\n *\n * Kullanım:\n * vld generate <input.ts> -o <output.ts>\n */\n\nimport type { Command } from './index.js';\nimport { style } from '../style.js';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * Generate command\n */\nexport const generateCommand: Command = {\n name: 'generate',\n description: 'Generate VLD schema from TypeScript interface',\n aliases: ['gen', 'g'],\n\n arguments: [\n {\n name: 'input',\n description: 'Input TypeScript file',\n required: true\n }\n ],\n\n options: [\n {\n name: 'output',\n short: 'o',\n description: 'Output file path',\n type: 'string'\n },\n {\n name: 'export-name',\n short: 'e',\n description: 'Export name for the schema',\n type: 'string',\n default: 'schema'\n },\n {\n name: 'strict',\n short: 's',\n description: 'Enable strict mode',\n type: 'boolean',\n default: false\n },\n {\n name: 'dry-run',\n description: 'Print output without writing file',\n type: 'boolean',\n default: false\n }\n ],\n\n async action(args, opts) {\n const inputPath = path.resolve(args.input);\n const outputPath = opts.output\n ? path.resolve(opts.output as string)\n : inputPath.replace(/\\.ts$/, '.schema.ts');\n\n console.log(style.cyan('VLD Schema Generator'));\n console.log('');\n\n // Check input file exists\n if (!fs.existsSync(inputPath)) {\n throw new Error(`Input file not found: ${inputPath}`);\n }\n\n console.log(`${style.dim('Input:')} ${inputPath}`);\n console.log(`${style.dim('Output:')} ${outputPath}`);\n console.log('');\n\n // Read input file\n const content = fs.readFileSync(inputPath, 'utf-8');\n\n // Parse TypeScript interfaces\n const interfaces = parseInterfaces(content);\n\n if (interfaces.length === 0) {\n console.log(style.yellow('No interfaces found in input file.'));\n return;\n }\n\n console.log(`Found ${style.bold(String(interfaces.length))} interface(s):`);\n for (const iface of interfaces) {\n console.log(` - ${style.cyan(iface.name)}`);\n }\n console.log('');\n\n // Generate schema\n const schema = generateSchema(interfaces, {\n exportName: opts['export-name'] as string,\n strict: opts.strict as boolean\n });\n\n // Output\n if (opts['dry-run']) {\n console.log(style.bold('Generated Schema:'));\n console.log('');\n console.log(schema);\n } else {\n fs.writeFileSync(outputPath, schema, 'utf-8');\n console.log(style.green('✔') + ` Schema written to ${outputPath}`);\n }\n }\n};\n\n// ============================================================================\n// TypeScript Parser (Simple)\n// ============================================================================\n\ninterface ParsedInterface {\n name: string;\n properties: ParsedProperty[];\n extends?: string[];\n}\n\ninterface ParsedProperty {\n name: string;\n type: string;\n optional: boolean;\n readonly: boolean;\n}\n\n/**\n * Basit TypeScript interface parser\n */\nfunction parseInterfaces(content: string): ParsedInterface[] {\n const interfaces: ParsedInterface[] = [];\n\n // Interface regex (basit versiyon)\n const interfaceRegex = /(?:export\\s+)?interface\\s+(\\w+)(?:\\s+extends\\s+([\\w,\\s]+))?\\s*\\{([^}]+)\\}/g;\n const propertyRegex = /(?:readonly\\s+)?(\\w+)(\\?)?:\\s*([^;]+);/g;\n\n let match: RegExpExecArray | null;\n\n while ((match = interfaceRegex.exec(content)) !== null) {\n const name = match[1];\n const extendsStr = match[2];\n const bodyStr = match[3];\n\n const extendsArr = extendsStr\n ? extendsStr.split(',').map((s) => s.trim())\n : undefined;\n\n const properties: ParsedProperty[] = [];\n let propMatch: RegExpExecArray | null;\n\n while ((propMatch = propertyRegex.exec(bodyStr)) !== null) {\n const isReadonly = propMatch[0].startsWith('readonly');\n properties.push({\n name: propMatch[1],\n optional: !!propMatch[2],\n type: propMatch[3].trim(),\n readonly: isReadonly\n });\n }\n\n interfaces.push({ name, properties, extends: extendsArr });\n }\n\n return interfaces;\n}\n\n// ============================================================================\n// Schema Generator\n// ============================================================================\n\ninterface GenerateOptions {\n exportName: string;\n strict: boolean;\n}\n\n/**\n * VLD schema üretir\n */\nfunction generateSchema(interfaces: ParsedInterface[], options: GenerateOptions): string {\n const lines: string[] = [];\n\n // Import statement\n lines.push(\"import { v } from '@oxog/vld';\");\n lines.push('');\n\n // Generate schema for each interface\n for (const iface of interfaces) {\n lines.push(`/**`);\n lines.push(` * Schema for ${iface.name}`);\n lines.push(` */`);\n lines.push(`export const ${camelCase(iface.name)}Schema = v.object({`);\n\n for (const prop of iface.properties) {\n const schemaType = typeToSchema(prop.type);\n const optionalSuffix = prop.optional ? '.optional()' : '';\n lines.push(` ${prop.name}: ${schemaType}${optionalSuffix},`);\n }\n\n lines.push(`})${options.strict ? '.strict()' : ''};`);\n lines.push('');\n\n // Infer type\n lines.push(`export type ${iface.name} = typeof ${camelCase(iface.name)}Schema._type;`);\n lines.push('');\n }\n\n // Combined schema if requested\n if (interfaces.length > 1 && options.exportName !== 'schema') {\n lines.push(`/**`);\n lines.push(` * Combined schemas`);\n lines.push(` */`);\n lines.push(`export const ${options.exportName} = {`);\n for (const iface of interfaces) {\n lines.push(` ${camelCase(iface.name)}: ${camelCase(iface.name)}Schema,`);\n }\n lines.push(`};`);\n }\n\n return lines.join('\\n');\n}\n\n/**\n * TypeScript tipini VLD schema'ya çevirir\n */\nfunction typeToSchema(type: string): string {\n // Array type\n if (type.endsWith('[]')) {\n const itemType = type.slice(0, -2);\n return `v.array(${typeToSchema(itemType)})`;\n }\n\n // Generic array\n if (type.startsWith('Array<') && type.endsWith('>')) {\n const itemType = type.slice(6, -1);\n return `v.array(${typeToSchema(itemType)})`;\n }\n\n // Union type\n if (type.includes(' | ')) {\n const types = type.split(' | ').map((t) => t.trim());\n return `v.union(${types.map(typeToSchema).join(', ')})`;\n }\n\n // Literal types\n if (type.startsWith(\"'\") || type.startsWith('\"')) {\n return `v.literal(${type})`;\n }\n\n if (type === 'true' || type === 'false') {\n return `v.literal(${type})`;\n }\n\n if (/^\\d+$/.test(type)) {\n return `v.literal(${type})`;\n }\n\n // Primitive types\n switch (type) {\n case 'string':\n return 'v.string()';\n case 'number':\n return 'v.number()';\n case 'boolean':\n return 'v.boolean()';\n case 'Date':\n return 'v.date()';\n case 'bigint':\n return 'v.bigint()';\n case 'symbol':\n return 'v.symbol()';\n case 'null':\n return 'v.null()';\n case 'undefined':\n return 'v.undefined()';\n case 'any':\n return 'v.any()';\n case 'unknown':\n return 'v.unknown()';\n case 'never':\n return 'v.never()';\n case 'void':\n return 'v.void()';\n default:\n // Reference to another schema\n return `${camelCase(type)}Schema`;\n }\n}\n\n/**\n * PascalCase'i camelCase'e çevirir\n */\nfunction camelCase(str: string): string {\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n"]}
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAsB,MAAY;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,GAAG,CAAC,KAAa,EAAE,OAAgB;QACjC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;YAC1D,YAAY,EAAE,OAAO,IAAI,2BAA2B,KAAK,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,OAAgB;QACjC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;YAC1D,YAAY,EAAE,OAAO,IAAI,0BAA0B,KAAK,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACtD,YAAY,EAAE,OAAO,IAAI,yBAAyB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACtD,YAAY,EAAE,OAAO,IAAI,yBAAyB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,OAAgB;QAC1B,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,YAAY,EAAE,OAAO,IAAI,6BAA6B;SACvD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,OAAgB;QAC1B,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,YAAY,EAAE,OAAO,IAAI,6BAA6B;SACvD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,2DAA2D;QAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAY,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,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 { 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}"]}