@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.
- package/CHANGELOG.md +168 -0
- package/LICENSE +20 -20
- package/README.md +558 -517
- package/dist/chunks/bigint-DgsCr2dC.js +1709 -0
- package/dist/chunks/bigint-DgsCr2dC.js.map +1 -0
- package/dist/{coercion/string.js → chunks/date-ODue_rtq.js} +271 -5
- package/dist/chunks/date-ODue_rtq.js.map +1 -0
- package/dist/chunks/index-BZqWZvVe.js +426 -0
- package/dist/chunks/index-BZqWZvVe.js.map +1 -0
- package/dist/chunks/index-CETyGkrv.js +894 -0
- package/dist/chunks/index-CETyGkrv.js.map +1 -0
- package/dist/chunks/json-o20GFhTh.js +2021 -0
- package/dist/chunks/json-o20GFhTh.js.map +1 -0
- package/dist/{validators/unknown.js → chunks/unknown-SLIH1VCf.js} +6 -3
- package/dist/chunks/unknown-SLIH1VCf.js.map +1 -0
- package/dist/cjs/errors.cjs +387 -0
- package/dist/cjs/errors.cjs.map +1 -0
- package/dist/cjs/index.cjs +9983 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/locales/index.cjs +2877 -0
- package/dist/cjs/locales/index.cjs.map +1 -0
- package/dist/cjs/locales/lazy.cjs +3169 -0
- package/dist/cjs/locales/lazy.cjs.map +1 -0
- package/dist/cjs/mini.cjs +7329 -0
- package/dist/cjs/mini.cjs.map +1 -0
- package/dist/codecs/index.js +4 -275
- package/dist/codecs/index.js.map +1 -1
- package/dist/coercion/index.d.ts +11 -0
- package/dist/coercion/index.d.ts.map +1 -0
- package/dist/coercion/{bigint.js → index.js} +7 -4
- package/dist/coercion/index.js.map +1 -0
- package/dist/compat/emitter.js +6 -4
- package/dist/compat/emitter.js.map +1 -1
- package/dist/compat/result.js +21 -19
- package/dist/compat/result.js.map +1 -1
- package/dist/errors.js +13 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.js +225 -126
- package/dist/index.js.map +1 -1
- package/dist/kernel.js +10 -7
- package/dist/kernel.js.map +1 -1
- package/dist/locales/af.js +4 -2
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.js +4 -2
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/bn.js +4 -2
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.js +4 -2
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.js +4 -2
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.js +4 -2
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.js +4 -2
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.js +4 -2
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.js +4 -2
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.js +4 -2
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.js +4 -2
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.js +4 -2
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/index.js +3 -91
- package/dist/locales/index.js.map +1 -1
- package/dist/locales/it.js +4 -2
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.js +4 -2
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +4 -2
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/lazy.d.ts +111 -0
- package/dist/locales/lazy.d.ts.map +1 -0
- package/dist/locales/lazy.js +220 -0
- package/dist/locales/lazy.js.map +1 -0
- package/dist/locales/nl.js +4 -2
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.js +4 -2
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.js +4 -2
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.js +4 -2
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.js +4 -2
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.js +4 -2
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.js +4 -2
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.js +4 -2
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.js +4 -2
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.js +4 -2
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/vi.js +4 -2
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.js +4 -2
- package/dist/locales/zh.js.map +1 -1
- package/dist/mini.d.ts +182 -0
- package/dist/mini.d.ts.map +1 -0
- package/dist/mini.js +132 -0
- package/dist/mini.js.map +1 -0
- package/dist/pigment.js +8 -7
- package/dist/pigment.js.map +1 -1
- package/dist/validators/array.d.ts +5 -0
- package/dist/validators/array.d.ts.map +1 -1
- package/dist/validators/discriminated-union.d.ts.map +1 -1
- package/dist/validators/enum.d.ts +5 -1
- package/dist/validators/enum.d.ts.map +1 -1
- package/dist/validators/index.js +5 -45
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/lazy.d.ts +8 -1
- package/dist/validators/lazy.d.ts.map +1 -1
- package/dist/validators/literal.d.ts +5 -1
- package/dist/validators/literal.d.ts.map +1 -1
- package/dist/validators/object.d.ts +30 -3
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/string.d.ts +12 -1
- package/dist/validators/string.d.ts.map +1 -1
- package/package.json +69 -11
- package/dist/cli/benchmark.d.ts +0 -15
- package/dist/cli/benchmark.d.ts.map +0 -1
- package/dist/cli/benchmark.js +0 -248
- package/dist/cli/benchmark.js.map +0 -1
- package/dist/cli/bin.js +0 -35
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/commands/benchmark.js +0 -204
- package/dist/cli/commands/benchmark.js.map +0 -1
- package/dist/cli/commands/validate.js +0 -157
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -14
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -233
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/index.js +0 -182
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/validate.d.ts +0 -15
- package/dist/cli/validate.d.ts.map +0 -1
- package/dist/cli/validate.js +0 -162
- package/dist/cli/validate.js.map +0 -1
- package/dist/coercion/bigint.js.map +0 -1
- package/dist/coercion/boolean.js +0 -59
- package/dist/coercion/boolean.js.map +0 -1
- package/dist/coercion/date.js +0 -52
- package/dist/coercion/date.js.map +0 -1
- package/dist/coercion/number.js +0 -160
- package/dist/coercion/number.js.map +0 -1
- package/dist/coercion/string.js.map +0 -1
- package/dist/compat/index.js +0 -14
- package/dist/compat/index.js.map +0 -1
- package/dist/events.js +0 -8
- package/dist/events.js.map +0 -1
- package/dist/guards.d.ts +0 -143
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -238
- package/dist/guards.js.map +0 -1
- package/dist/index-new.d.ts.map +0 -1
- package/dist/locales/backup-en.js +0 -105
- package/dist/locales/backup-en.js.map +0 -1
- package/dist/locales/types.js +0 -2
- package/dist/locales/types.js.map +0 -1
- package/dist/locales.d.ts +0 -54
- package/dist/locales.d.ts.map +0 -1
- package/dist/locales.js +0 -732
- package/dist/locales.js.map +0 -1
- package/dist/logger.js +0 -184
- package/dist/logger.js.map +0 -1
- package/dist/plugins/codecs.d.ts +0 -17
- package/dist/plugins/codecs.d.ts.map +0 -1
- package/dist/plugins/codecs.js +0 -29
- package/dist/plugins/codecs.js.map +0 -1
- package/dist/plugins/coercion.d.ts +0 -13
- package/dist/plugins/coercion.d.ts.map +0 -1
- package/dist/plugins/coercion.js +0 -34
- package/dist/plugins/coercion.js.map +0 -1
- package/dist/plugins/core-validators.d.ts +0 -13
- package/dist/plugins/core-validators.d.ts.map +0 -1
- package/dist/plugins/core-validators.js +0 -96
- package/dist/plugins/core-validators.js.map +0 -1
- package/dist/plugins/index.js +0 -8
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/kernel.d.ts +0 -29
- package/dist/plugins/kernel.d.ts.map +0 -1
- package/dist/plugins/kernel.js +0 -486
- package/dist/plugins/kernel.js.map +0 -1
- package/dist/plugins/types.js +0 -8
- package/dist/plugins/types.js.map +0 -1
- package/dist/style.d.ts +0 -123
- package/dist/style.d.ts.map +0 -1
- package/dist/style.js +0 -369
- package/dist/style.js.map +0 -1
- package/dist/utils/codec-utils.js +0 -229
- package/dist/utils/codec-utils.js.map +0 -1
- package/dist/utils/deep-merge.js +0 -76
- package/dist/utils/deep-merge.js.map +0 -1
- package/dist/utils/ip-validation.js +0 -98
- package/dist/utils/ip-validation.js.map +0 -1
- package/dist/utils/security.js +0 -61
- package/dist/utils/security.js.map +0 -1
- package/dist/validators/any.js +0 -25
- package/dist/validators/any.js.map +0 -1
- package/dist/validators/array.js +0 -190
- package/dist/validators/array.js.map +0 -1
- package/dist/validators/base.js +0 -499
- package/dist/validators/base.js.map +0 -1
- package/dist/validators/base64.js +0 -65
- package/dist/validators/base64.js.map +0 -1
- package/dist/validators/bigint.js +0 -142
- package/dist/validators/bigint.js.map +0 -1
- package/dist/validators/boolean.js +0 -114
- package/dist/validators/boolean.js.map +0 -1
- package/dist/validators/codec.js +0 -182
- package/dist/validators/codec.js.map +0 -1
- package/dist/validators/custom.js +0 -50
- package/dist/validators/custom.js.map +0 -1
- package/dist/validators/date.js +0 -227
- package/dist/validators/date.js.map +0 -1
- package/dist/validators/discriminated-union.js +0 -98
- package/dist/validators/discriminated-union.js.map +0 -1
- package/dist/validators/enum.js +0 -82
- package/dist/validators/enum.js.map +0 -1
- package/dist/validators/file.js +0 -114
- package/dist/validators/file.js.map +0 -1
- package/dist/validators/function.js +0 -45
- package/dist/validators/function.js.map +0 -1
- package/dist/validators/hex.js +0 -62
- package/dist/validators/hex.js.map +0 -1
- package/dist/validators/intersection.js +0 -64
- package/dist/validators/intersection.js.map +0 -1
- package/dist/validators/json.js +0 -64
- package/dist/validators/json.js.map +0 -1
- package/dist/validators/lazy.js +0 -42
- package/dist/validators/lazy.js.map +0 -1
- package/dist/validators/literal.js +0 -45
- package/dist/validators/literal.js.map +0 -1
- package/dist/validators/map.js +0 -54
- package/dist/validators/map.js.map +0 -1
- package/dist/validators/nan.js +0 -32
- package/dist/validators/nan.js.map +0 -1
- package/dist/validators/never.js +0 -29
- package/dist/validators/never.js.map +0 -1
- package/dist/validators/null.js +0 -31
- package/dist/validators/null.js.map +0 -1
- package/dist/validators/number.js +0 -225
- package/dist/validators/number.js.map +0 -1
- package/dist/validators/object-optimized.d.ts +0 -23
- package/dist/validators/object-optimized.d.ts.map +0 -1
- package/dist/validators/object-optimized.js +0 -179
- package/dist/validators/object-optimized.js.map +0 -1
- package/dist/validators/object-ultra.d.ts +0 -34
- package/dist/validators/object-ultra.d.ts.map +0 -1
- package/dist/validators/object-ultra.js +0 -175
- package/dist/validators/object-ultra.js.map +0 -1
- package/dist/validators/object.js +0 -458
- package/dist/validators/object.js.map +0 -1
- package/dist/validators/record.js +0 -128
- package/dist/validators/record.js.map +0 -1
- package/dist/validators/set.js +0 -51
- package/dist/validators/set.js.map +0 -1
- package/dist/validators/string-bool.js +0 -127
- package/dist/validators/string-bool.js.map +0 -1
- package/dist/validators/string-formats.js +0 -120
- package/dist/validators/string-formats.js.map +0 -1
- package/dist/validators/string-ultra.d.ts +0 -49
- package/dist/validators/string-ultra.d.ts.map +0 -1
- package/dist/validators/string-ultra.js +0 -217
- package/dist/validators/string-ultra.js.map +0 -1
- package/dist/validators/string.js +0 -253
- package/dist/validators/string.js.map +0 -1
- package/dist/validators/symbol.js +0 -42
- package/dist/validators/symbol.js.map +0 -1
- package/dist/validators/template-literal.js +0 -102
- package/dist/validators/template-literal.js.map +0 -1
- package/dist/validators/tuple.js +0 -55
- package/dist/validators/tuple.js.map +0 -1
- package/dist/validators/uint8array.js +0 -98
- package/dist/validators/uint8array.js.map +0 -1
- package/dist/validators/undefined.js +0 -31
- package/dist/validators/undefined.js.map +0 -1
- package/dist/validators/union-optimized.d.ts +0 -15
- package/dist/validators/union-optimized.d.ts.map +0 -1
- package/dist/validators/union-optimized.js +0 -92
- package/dist/validators/union-optimized.js.map +0 -1
- package/dist/validators/union.js +0 -126
- package/dist/validators/union.js.map +0 -1
- package/dist/validators/unknown.js.map +0 -1
- package/dist/validators/void.js +0 -35
- package/dist/validators/void.js.map +0 -1
- package/dist/validators/xor.js +0 -64
- package/dist/validators/xor.js.map +0 -1
package/dist/cli/generate.js.map
DELETED
|
@@ -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
|
package/dist/cli/index.js.map
DELETED
|
@@ -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"]}
|
package/dist/cli/validate.d.ts
DELETED
|
@@ -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"}
|
package/dist/cli/validate.js
DELETED
|
@@ -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
|
package/dist/cli/validate.js.map
DELETED
|
@@ -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}"]}
|
package/dist/coercion/boolean.js
DELETED
|
@@ -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}"]}
|
package/dist/coercion/date.js
DELETED
|
@@ -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}"]}
|