@oxog/vld 1.5.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +558 -517
  3. package/dist/chunks/bigint-ZKkWLdmi.js +1628 -0
  4. package/dist/chunks/bigint-ZKkWLdmi.js.map +1 -0
  5. package/dist/{coercion/string.js → chunks/date-7Iz2BGsL.js} +271 -5
  6. package/dist/chunks/date-7Iz2BGsL.js.map +1 -0
  7. package/dist/chunks/index-BoV-4S1F.js +894 -0
  8. package/dist/chunks/index-BoV-4S1F.js.map +1 -0
  9. package/dist/chunks/index-eWXdjyyy.js +426 -0
  10. package/dist/chunks/index-eWXdjyyy.js.map +1 -0
  11. package/dist/chunks/json-nIhyRPOU.js +1934 -0
  12. package/dist/chunks/json-nIhyRPOU.js.map +1 -0
  13. package/dist/{validators/unknown.js → chunks/unknown-CjSRcELI.js} +6 -3
  14. package/dist/chunks/unknown-CjSRcELI.js.map +1 -0
  15. package/dist/cjs/errors.cjs +387 -0
  16. package/dist/cjs/errors.cjs.map +1 -0
  17. package/dist/cjs/index.cjs +9815 -0
  18. package/dist/cjs/index.cjs.map +1 -0
  19. package/dist/cjs/locales/index.cjs +2877 -0
  20. package/dist/cjs/locales/index.cjs.map +1 -0
  21. package/dist/cjs/locales/lazy.cjs +3169 -0
  22. package/dist/cjs/locales/lazy.cjs.map +1 -0
  23. package/dist/cjs/mini.cjs +7161 -0
  24. package/dist/cjs/mini.cjs.map +1 -0
  25. package/dist/codecs/index.js +4 -275
  26. package/dist/codecs/index.js.map +1 -1
  27. package/dist/coercion/index.d.ts +11 -0
  28. package/dist/coercion/index.d.ts.map +1 -0
  29. package/dist/coercion/{bigint.js → index.js} +7 -4
  30. package/dist/coercion/index.js.map +1 -0
  31. package/dist/compat/emitter.js +6 -4
  32. package/dist/compat/emitter.js.map +1 -1
  33. package/dist/compat/result.js +21 -19
  34. package/dist/compat/result.js.map +1 -1
  35. package/dist/errors.js +13 -10
  36. package/dist/errors.js.map +1 -1
  37. package/dist/index.js +225 -126
  38. package/dist/index.js.map +1 -1
  39. package/dist/kernel.js +10 -7
  40. package/dist/kernel.js.map +1 -1
  41. package/dist/locales/af.js +4 -2
  42. package/dist/locales/af.js.map +1 -1
  43. package/dist/locales/ar.js +4 -2
  44. package/dist/locales/ar.js.map +1 -1
  45. package/dist/locales/bn.js +4 -2
  46. package/dist/locales/bn.js.map +1 -1
  47. package/dist/locales/da.js +4 -2
  48. package/dist/locales/da.js.map +1 -1
  49. package/dist/locales/de.js +4 -2
  50. package/dist/locales/de.js.map +1 -1
  51. package/dist/locales/en.js +4 -2
  52. package/dist/locales/en.js.map +1 -1
  53. package/dist/locales/es-MX.js +4 -2
  54. package/dist/locales/es-MX.js.map +1 -1
  55. package/dist/locales/es.js +4 -2
  56. package/dist/locales/es.js.map +1 -1
  57. package/dist/locales/fi.js +4 -2
  58. package/dist/locales/fi.js.map +1 -1
  59. package/dist/locales/fr.js +4 -2
  60. package/dist/locales/fr.js.map +1 -1
  61. package/dist/locales/hi.js +4 -2
  62. package/dist/locales/hi.js.map +1 -1
  63. package/dist/locales/id.js +4 -2
  64. package/dist/locales/id.js.map +1 -1
  65. package/dist/locales/index.js +3 -91
  66. package/dist/locales/index.js.map +1 -1
  67. package/dist/locales/it.js +4 -2
  68. package/dist/locales/it.js.map +1 -1
  69. package/dist/locales/ja.js +4 -2
  70. package/dist/locales/ja.js.map +1 -1
  71. package/dist/locales/ko.js +4 -2
  72. package/dist/locales/ko.js.map +1 -1
  73. package/dist/locales/lazy.d.ts +111 -0
  74. package/dist/locales/lazy.d.ts.map +1 -0
  75. package/dist/locales/lazy.js +220 -0
  76. package/dist/locales/lazy.js.map +1 -0
  77. package/dist/locales/nl.js +4 -2
  78. package/dist/locales/nl.js.map +1 -1
  79. package/dist/locales/no.js +4 -2
  80. package/dist/locales/no.js.map +1 -1
  81. package/dist/locales/pl.js +4 -2
  82. package/dist/locales/pl.js.map +1 -1
  83. package/dist/locales/pt-BR.js +4 -2
  84. package/dist/locales/pt-BR.js.map +1 -1
  85. package/dist/locales/pt.js +4 -2
  86. package/dist/locales/pt.js.map +1 -1
  87. package/dist/locales/ru.js +4 -2
  88. package/dist/locales/ru.js.map +1 -1
  89. package/dist/locales/sv.js +4 -2
  90. package/dist/locales/sv.js.map +1 -1
  91. package/dist/locales/sw.js +4 -2
  92. package/dist/locales/sw.js.map +1 -1
  93. package/dist/locales/th.js +4 -2
  94. package/dist/locales/th.js.map +1 -1
  95. package/dist/locales/tr.js +4 -2
  96. package/dist/locales/tr.js.map +1 -1
  97. package/dist/locales/vi.js +4 -2
  98. package/dist/locales/vi.js.map +1 -1
  99. package/dist/locales/zh.js +4 -2
  100. package/dist/locales/zh.js.map +1 -1
  101. package/dist/mini.d.ts +182 -0
  102. package/dist/mini.d.ts.map +1 -0
  103. package/dist/mini.js +132 -0
  104. package/dist/mini.js.map +1 -0
  105. package/dist/pigment.js +8 -7
  106. package/dist/pigment.js.map +1 -1
  107. package/dist/validators/index.js +5 -45
  108. package/dist/validators/index.js.map +1 -1
  109. package/package.json +69 -11
  110. package/dist/cli/benchmark.d.ts +0 -15
  111. package/dist/cli/benchmark.d.ts.map +0 -1
  112. package/dist/cli/benchmark.js +0 -248
  113. package/dist/cli/benchmark.js.map +0 -1
  114. package/dist/cli/bin.js +0 -35
  115. package/dist/cli/bin.js.map +0 -1
  116. package/dist/cli/commands/benchmark.js +0 -204
  117. package/dist/cli/commands/benchmark.js.map +0 -1
  118. package/dist/cli/commands/validate.js +0 -157
  119. package/dist/cli/commands/validate.js.map +0 -1
  120. package/dist/cli/generate.d.ts +0 -14
  121. package/dist/cli/generate.d.ts.map +0 -1
  122. package/dist/cli/generate.js +0 -233
  123. package/dist/cli/generate.js.map +0 -1
  124. package/dist/cli/index.js +0 -182
  125. package/dist/cli/index.js.map +0 -1
  126. package/dist/cli/validate.d.ts +0 -15
  127. package/dist/cli/validate.d.ts.map +0 -1
  128. package/dist/cli/validate.js +0 -162
  129. package/dist/cli/validate.js.map +0 -1
  130. package/dist/coercion/bigint.js.map +0 -1
  131. package/dist/coercion/boolean.js +0 -59
  132. package/dist/coercion/boolean.js.map +0 -1
  133. package/dist/coercion/date.js +0 -52
  134. package/dist/coercion/date.js.map +0 -1
  135. package/dist/coercion/number.js +0 -160
  136. package/dist/coercion/number.js.map +0 -1
  137. package/dist/coercion/string.js.map +0 -1
  138. package/dist/compat/index.js +0 -14
  139. package/dist/compat/index.js.map +0 -1
  140. package/dist/events.js +0 -8
  141. package/dist/events.js.map +0 -1
  142. package/dist/guards.d.ts +0 -143
  143. package/dist/guards.d.ts.map +0 -1
  144. package/dist/guards.js +0 -238
  145. package/dist/guards.js.map +0 -1
  146. package/dist/index-new.d.ts.map +0 -1
  147. package/dist/locales/backup-en.js +0 -105
  148. package/dist/locales/backup-en.js.map +0 -1
  149. package/dist/locales/types.js +0 -2
  150. package/dist/locales/types.js.map +0 -1
  151. package/dist/locales.d.ts +0 -54
  152. package/dist/locales.d.ts.map +0 -1
  153. package/dist/locales.js +0 -732
  154. package/dist/locales.js.map +0 -1
  155. package/dist/logger.js +0 -184
  156. package/dist/logger.js.map +0 -1
  157. package/dist/plugins/codecs.d.ts +0 -17
  158. package/dist/plugins/codecs.d.ts.map +0 -1
  159. package/dist/plugins/codecs.js +0 -29
  160. package/dist/plugins/codecs.js.map +0 -1
  161. package/dist/plugins/coercion.d.ts +0 -13
  162. package/dist/plugins/coercion.d.ts.map +0 -1
  163. package/dist/plugins/coercion.js +0 -34
  164. package/dist/plugins/coercion.js.map +0 -1
  165. package/dist/plugins/core-validators.d.ts +0 -13
  166. package/dist/plugins/core-validators.d.ts.map +0 -1
  167. package/dist/plugins/core-validators.js +0 -96
  168. package/dist/plugins/core-validators.js.map +0 -1
  169. package/dist/plugins/index.js +0 -8
  170. package/dist/plugins/index.js.map +0 -1
  171. package/dist/plugins/kernel.d.ts +0 -29
  172. package/dist/plugins/kernel.d.ts.map +0 -1
  173. package/dist/plugins/kernel.js +0 -486
  174. package/dist/plugins/kernel.js.map +0 -1
  175. package/dist/plugins/types.js +0 -8
  176. package/dist/plugins/types.js.map +0 -1
  177. package/dist/style.d.ts +0 -123
  178. package/dist/style.d.ts.map +0 -1
  179. package/dist/style.js +0 -369
  180. package/dist/style.js.map +0 -1
  181. package/dist/utils/codec-utils.js +0 -229
  182. package/dist/utils/codec-utils.js.map +0 -1
  183. package/dist/utils/deep-merge.js +0 -76
  184. package/dist/utils/deep-merge.js.map +0 -1
  185. package/dist/utils/ip-validation.js +0 -98
  186. package/dist/utils/ip-validation.js.map +0 -1
  187. package/dist/utils/security.js +0 -61
  188. package/dist/utils/security.js.map +0 -1
  189. package/dist/validators/any.js +0 -25
  190. package/dist/validators/any.js.map +0 -1
  191. package/dist/validators/array.js +0 -190
  192. package/dist/validators/array.js.map +0 -1
  193. package/dist/validators/base.js +0 -499
  194. package/dist/validators/base.js.map +0 -1
  195. package/dist/validators/base64.js +0 -65
  196. package/dist/validators/base64.js.map +0 -1
  197. package/dist/validators/bigint.js +0 -142
  198. package/dist/validators/bigint.js.map +0 -1
  199. package/dist/validators/boolean.js +0 -114
  200. package/dist/validators/boolean.js.map +0 -1
  201. package/dist/validators/codec.js +0 -182
  202. package/dist/validators/codec.js.map +0 -1
  203. package/dist/validators/custom.js +0 -50
  204. package/dist/validators/custom.js.map +0 -1
  205. package/dist/validators/date.js +0 -227
  206. package/dist/validators/date.js.map +0 -1
  207. package/dist/validators/discriminated-union.js +0 -98
  208. package/dist/validators/discriminated-union.js.map +0 -1
  209. package/dist/validators/enum.js +0 -82
  210. package/dist/validators/enum.js.map +0 -1
  211. package/dist/validators/file.js +0 -114
  212. package/dist/validators/file.js.map +0 -1
  213. package/dist/validators/function.js +0 -45
  214. package/dist/validators/function.js.map +0 -1
  215. package/dist/validators/hex.js +0 -62
  216. package/dist/validators/hex.js.map +0 -1
  217. package/dist/validators/intersection.js +0 -64
  218. package/dist/validators/intersection.js.map +0 -1
  219. package/dist/validators/json.js +0 -64
  220. package/dist/validators/json.js.map +0 -1
  221. package/dist/validators/lazy.js +0 -42
  222. package/dist/validators/lazy.js.map +0 -1
  223. package/dist/validators/literal.js +0 -45
  224. package/dist/validators/literal.js.map +0 -1
  225. package/dist/validators/map.js +0 -54
  226. package/dist/validators/map.js.map +0 -1
  227. package/dist/validators/nan.js +0 -32
  228. package/dist/validators/nan.js.map +0 -1
  229. package/dist/validators/never.js +0 -29
  230. package/dist/validators/never.js.map +0 -1
  231. package/dist/validators/null.js +0 -31
  232. package/dist/validators/null.js.map +0 -1
  233. package/dist/validators/number.js +0 -225
  234. package/dist/validators/number.js.map +0 -1
  235. package/dist/validators/object-optimized.d.ts +0 -23
  236. package/dist/validators/object-optimized.d.ts.map +0 -1
  237. package/dist/validators/object-optimized.js +0 -179
  238. package/dist/validators/object-optimized.js.map +0 -1
  239. package/dist/validators/object-ultra.d.ts +0 -34
  240. package/dist/validators/object-ultra.d.ts.map +0 -1
  241. package/dist/validators/object-ultra.js +0 -175
  242. package/dist/validators/object-ultra.js.map +0 -1
  243. package/dist/validators/object.js +0 -458
  244. package/dist/validators/object.js.map +0 -1
  245. package/dist/validators/record.js +0 -128
  246. package/dist/validators/record.js.map +0 -1
  247. package/dist/validators/set.js +0 -51
  248. package/dist/validators/set.js.map +0 -1
  249. package/dist/validators/string-bool.js +0 -127
  250. package/dist/validators/string-bool.js.map +0 -1
  251. package/dist/validators/string-formats.js +0 -120
  252. package/dist/validators/string-formats.js.map +0 -1
  253. package/dist/validators/string-ultra.d.ts +0 -49
  254. package/dist/validators/string-ultra.d.ts.map +0 -1
  255. package/dist/validators/string-ultra.js +0 -217
  256. package/dist/validators/string-ultra.js.map +0 -1
  257. package/dist/validators/string.js +0 -253
  258. package/dist/validators/string.js.map +0 -1
  259. package/dist/validators/symbol.js +0 -42
  260. package/dist/validators/symbol.js.map +0 -1
  261. package/dist/validators/template-literal.js +0 -102
  262. package/dist/validators/template-literal.js.map +0 -1
  263. package/dist/validators/tuple.js +0 -55
  264. package/dist/validators/tuple.js.map +0 -1
  265. package/dist/validators/uint8array.js +0 -98
  266. package/dist/validators/uint8array.js.map +0 -1
  267. package/dist/validators/undefined.js +0 -31
  268. package/dist/validators/undefined.js.map +0 -1
  269. package/dist/validators/union-optimized.d.ts +0 -15
  270. package/dist/validators/union-optimized.d.ts.map +0 -1
  271. package/dist/validators/union-optimized.js +0 -92
  272. package/dist/validators/union-optimized.js.map +0 -1
  273. package/dist/validators/union.js +0 -126
  274. package/dist/validators/union.js.map +0 -1
  275. package/dist/validators/unknown.js.map +0 -1
  276. package/dist/validators/void.js +0 -35
  277. package/dist/validators/void.js.map +0 -1
  278. package/dist/validators/xor.js +0 -64
  279. package/dist/validators/xor.js.map +0 -1
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@oxog/vld",
3
- "version": "1.5.0",
3
+ "version": "2.0.1",
4
4
  "description": "Ultra-fast TypeScript-first schema validation with zero dependencies, 27+ language support, plugin system, and CLI tools",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
6
+ "main": "./dist/cjs/index.cjs",
7
7
  "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "bin": {
@@ -11,22 +11,81 @@
11
11
  },
12
12
  "exports": {
13
13
  ".": {
14
- "require": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
15
  "import": "./dist/index.js",
16
- "types": "./dist/index.d.ts"
16
+ "require": "./dist/cjs/index.cjs"
17
+ },
18
+ "./mini": {
19
+ "types": "./dist/mini.d.ts",
20
+ "import": "./dist/mini.js",
21
+ "require": "./dist/cjs/mini.cjs"
22
+ },
23
+ "./errors": {
24
+ "types": "./dist/errors.d.ts",
25
+ "import": "./dist/errors.js",
26
+ "require": "./dist/cjs/errors.cjs"
27
+ },
28
+ "./validators": {
29
+ "types": "./dist/validators/index.d.ts",
30
+ "import": "./dist/validators/index.js"
31
+ },
32
+ "./validators/*": {
33
+ "types": "./dist/validators/*.d.ts",
34
+ "import": "./dist/validators/*.js"
35
+ },
36
+ "./coercion": {
37
+ "types": "./dist/coercion/index.d.ts",
38
+ "import": "./dist/coercion/index.js"
39
+ },
40
+ "./codecs": {
41
+ "types": "./dist/codecs/index.d.ts",
42
+ "import": "./dist/codecs/index.js"
43
+ },
44
+ "./locales": {
45
+ "types": "./dist/locales/index.d.ts",
46
+ "import": "./dist/locales/index.js",
47
+ "require": "./dist/cjs/locales/index.cjs"
48
+ },
49
+ "./locales/lazy": {
50
+ "types": "./dist/locales/lazy.d.ts",
51
+ "import": "./dist/locales/lazy.js",
52
+ "require": "./dist/cjs/locales/lazy.cjs"
53
+ },
54
+ "./locales/*": {
55
+ "types": "./dist/locales/*.d.ts",
56
+ "import": "./dist/locales/*.js"
57
+ },
58
+ "./result": {
59
+ "types": "./dist/compat/result.d.ts",
60
+ "import": "./dist/compat/result.js"
61
+ },
62
+ "./kernel": {
63
+ "types": "./dist/kernel.d.ts",
64
+ "import": "./dist/kernel.js"
65
+ },
66
+ "./pigment": {
67
+ "types": "./dist/pigment.d.ts",
68
+ "import": "./dist/pigment.js"
17
69
  },
18
70
  "./cli": {
19
- "import": "./dist/cli/index.js",
20
- "types": "./dist/cli/index.d.ts"
71
+ "types": "./dist/cli/index.d.ts",
72
+ "import": "./dist/cli/index.js"
21
73
  },
22
74
  "./plugins": {
23
- "import": "./dist/plugins/index.js",
24
- "types": "./dist/plugins/index.d.ts"
25
- }
75
+ "types": "./dist/plugins/index.d.ts",
76
+ "import": "./dist/plugins/index.js"
77
+ },
78
+ "./package.json": "./package.json"
26
79
  },
27
80
  "sideEffects": false,
28
81
  "scripts": {
29
- "build": "tsc && node scripts/fix-imports.cjs",
82
+ "build": "npm run build:clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:fix",
83
+ "build:clean": "node -e \"require('fs').rmSync('./dist', { recursive: true, force: true })\"",
84
+ "build:esm": "rollup -c rollup.config.mjs",
85
+ "build:cjs": "echo 'CJS built by rollup'",
86
+ "build:types": "tsc -p tsconfig.build.json",
87
+ "build:fix": "node scripts/fix-imports.cjs",
88
+ "build:legacy": "tsc && node scripts/fix-imports.cjs",
30
89
  "test": "jest --coverage",
31
90
  "test:types": "tsc --noEmit",
32
91
  "benchmark": "node benchmarks/quick-bench.cjs",
@@ -87,7 +146,6 @@
87
146
  "jest-junit": "^16.0.0",
88
147
  "prettier": "^3.1.1",
89
148
  "rollup": "^4.46.2",
90
- "rollup-plugin-typescript2": "^0.36.0",
91
149
  "ts-jest": "^29.4.1",
92
150
  "typescript": "^5.3.3",
93
151
  "zod": "^4.0.17"
@@ -1,15 +0,0 @@
1
- /**
2
- * VLD CLI - Benchmark Command
3
- *
4
- * VLD performans testlerini çalıştırır.
5
- *
6
- * Kullanım:
7
- * vld benchmark
8
- * vld benchmark --iterations 10000
9
- */
10
- import type { Command } from './index.js';
11
- /**
12
- * Benchmark command
13
- */
14
- export declare const benchmarkCommand: Command;
15
- //# sourceMappingURL=benchmark.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/cli/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAoD9B,CAAC"}
@@ -1,248 +0,0 @@
1
- /**
2
- * VLD CLI - Benchmark Command
3
- *
4
- * VLD performans testlerini çalıştırır.
5
- *
6
- * Kullanım:
7
- * vld benchmark
8
- * vld benchmark --iterations 10000
9
- */
10
- import { style, formatTable } from '../style.js';
11
- import { v } from '../index.js';
12
- /**
13
- * Benchmark command
14
- */
15
- export const benchmarkCommand = {
16
- name: 'benchmark',
17
- description: 'Run VLD performance benchmarks',
18
- aliases: ['bench', 'b'],
19
- arguments: [],
20
- options: [
21
- {
22
- name: 'iterations',
23
- short: 'i',
24
- description: 'Number of iterations',
25
- type: 'string',
26
- default: '10000'
27
- },
28
- {
29
- name: 'warmup',
30
- short: 'w',
31
- description: 'Warmup iterations',
32
- type: 'string',
33
- default: '1000'
34
- },
35
- {
36
- name: 'format',
37
- short: 'f',
38
- description: 'Output format (pretty, json)',
39
- type: 'string',
40
- default: 'pretty'
41
- }
42
- ],
43
- async action(_args, opts) {
44
- const iterations = parseInt(opts.iterations, 10);
45
- const warmup = parseInt(opts.warmup, 10);
46
- const format = opts.format;
47
- console.log(style.cyan('VLD Performance Benchmark'));
48
- console.log('');
49
- console.log(`${style.dim('Iterations:')} ${iterations.toLocaleString()}`);
50
- console.log(`${style.dim('Warmup:')} ${warmup.toLocaleString()}`);
51
- console.log('');
52
- // Run benchmarks
53
- const results = await runBenchmarks(iterations, warmup);
54
- // Output results
55
- if (format === 'json') {
56
- console.log(JSON.stringify(results, null, 2));
57
- }
58
- else {
59
- printResults(results);
60
- }
61
- }
62
- };
63
- /**
64
- * Benchmark suite'leri
65
- */
66
- function getBenchmarkSuites() {
67
- // Test data
68
- const simpleStringData = 'hello world';
69
- const simpleNumberData = 42;
70
- const simpleObjectData = { name: 'John', age: 30, email: 'john@example.com' };
71
- const complexObjectData = {
72
- user: {
73
- id: 1,
74
- name: 'John Doe',
75
- email: 'john@example.com',
76
- roles: ['admin', 'user'],
77
- profile: {
78
- bio: 'A software developer',
79
- avatar: 'https://example.com/avatar.jpg',
80
- settings: {
81
- theme: 'dark',
82
- notifications: true
83
- }
84
- }
85
- },
86
- posts: [
87
- { id: 1, title: 'Hello', content: 'World' },
88
- { id: 2, title: 'Foo', content: 'Bar' }
89
- ]
90
- };
91
- const arrayData = Array.from({ length: 100 }, (_, i) => ({
92
- id: i,
93
- name: `Item ${i}`,
94
- value: i * 10
95
- }));
96
- // Schemas
97
- const stringSchema = v.string();
98
- const numberSchema = v.number();
99
- const simpleObjectSchema = v.object({
100
- name: v.string(),
101
- age: v.number(),
102
- email: v.string().email()
103
- });
104
- const complexObjectSchema = v.object({
105
- user: v.object({
106
- id: v.number(),
107
- name: v.string(),
108
- email: v.string().email(),
109
- roles: v.array(v.string()),
110
- profile: v.object({
111
- bio: v.string(),
112
- avatar: v.string().url(),
113
- settings: v.object({
114
- theme: v.string(),
115
- notifications: v.boolean()
116
- })
117
- })
118
- }),
119
- posts: v.array(v.object({
120
- id: v.number(),
121
- title: v.string(),
122
- content: v.string()
123
- }))
124
- });
125
- const arraySchema = v.array(v.object({
126
- id: v.number(),
127
- name: v.string(),
128
- value: v.number()
129
- }));
130
- return [
131
- {
132
- name: 'String validation',
133
- run: (n) => {
134
- for (let i = 0; i < n; i++) {
135
- stringSchema.parse(simpleStringData);
136
- }
137
- }
138
- },
139
- {
140
- name: 'Number validation',
141
- run: (n) => {
142
- for (let i = 0; i < n; i++) {
143
- numberSchema.parse(simpleNumberData);
144
- }
145
- }
146
- },
147
- {
148
- name: 'Simple object',
149
- run: (n) => {
150
- for (let i = 0; i < n; i++) {
151
- simpleObjectSchema.parse(simpleObjectData);
152
- }
153
- }
154
- },
155
- {
156
- name: 'Complex object',
157
- run: (n) => {
158
- for (let i = 0; i < n; i++) {
159
- complexObjectSchema.parse(complexObjectData);
160
- }
161
- }
162
- },
163
- {
164
- name: 'Array (100 items)',
165
- run: (n) => {
166
- for (let i = 0; i < n; i++) {
167
- arraySchema.parse(arrayData);
168
- }
169
- }
170
- },
171
- {
172
- name: 'safeParse (success)',
173
- run: (n) => {
174
- for (let i = 0; i < n; i++) {
175
- simpleObjectSchema.safeParse(simpleObjectData);
176
- }
177
- }
178
- },
179
- {
180
- name: 'safeParse (failure)',
181
- run: (n) => {
182
- const invalidData = { name: 123, age: 'invalid', email: 'invalid' };
183
- for (let i = 0; i < n; i++) {
184
- simpleObjectSchema.safeParse(invalidData);
185
- }
186
- }
187
- }
188
- ];
189
- }
190
- // ============================================================================
191
- // Benchmark Runner
192
- // ============================================================================
193
- /**
194
- * Benchmark'ları çalıştırır
195
- */
196
- async function runBenchmarks(iterations, warmup) {
197
- const suites = getBenchmarkSuites();
198
- const results = [];
199
- for (const suite of suites) {
200
- // Warmup
201
- process.stdout.write(`${style.dim('Warming up:')} ${suite.name}...`);
202
- suite.run(warmup);
203
- process.stdout.write('\r' + ' '.repeat(60) + '\r');
204
- // Benchmark
205
- process.stdout.write(`${style.dim('Running:')} ${suite.name}...`);
206
- const start = performance.now();
207
- suite.run(iterations);
208
- const end = performance.now();
209
- process.stdout.write('\r' + ' '.repeat(60) + '\r');
210
- const ms = end - start;
211
- const opsPerSec = Math.round((iterations / ms) * 1000);
212
- results.push({
213
- name: suite.name,
214
- ops: iterations,
215
- ms: Math.round(ms * 100) / 100,
216
- opsPerSec
217
- });
218
- console.log(`${style.green('✔')} ${suite.name}: ${style.bold(opsPerSec.toLocaleString())} ops/sec`);
219
- }
220
- return results;
221
- }
222
- /**
223
- * Sonuçları yazdırır
224
- */
225
- function printResults(results) {
226
- console.log('');
227
- console.log(style.bold('Results:'));
228
- console.log('');
229
- const table = formatTable(results.map((r) => [
230
- r.name,
231
- r.opsPerSec.toLocaleString(),
232
- `${r.ms.toFixed(2)}ms`
233
- ]), {
234
- columns: [
235
- { header: 'Benchmark', align: 'left' },
236
- { header: 'ops/sec', align: 'right' },
237
- { header: 'Time', align: 'right' }
238
- ],
239
- headerColor: style.bold
240
- });
241
- console.log(table);
242
- console.log('');
243
- // Summary
244
- const totalOps = results.reduce((sum, r) => sum + r.opsPerSec, 0);
245
- const avgOps = Math.round(totalOps / results.length);
246
- console.log(style.dim('Average:') + ` ${avgOps.toLocaleString()} ops/sec`);
247
- }
248
- //# sourceMappingURL=benchmark.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/cli/benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VLD CLI - Benchmark Command\n *\n * VLD performans testlerini çalıştırır.\n *\n * Kullanım:\n * vld benchmark\n * vld benchmark --iterations 10000\n */\n\nimport type { Command } from './index.js';\nimport { style, formatTable } from '../style.js';\nimport { v } from '../index.js';\n\n/**\n * Benchmark command\n */\nexport const benchmarkCommand: Command = {\n name: 'benchmark',\n description: 'Run VLD performance benchmarks',\n aliases: ['bench', 'b'],\n\n arguments: [],\n\n options: [\n {\n name: 'iterations',\n short: 'i',\n description: 'Number of iterations',\n type: 'string',\n default: '10000'\n },\n {\n name: 'warmup',\n short: 'w',\n description: 'Warmup iterations',\n type: 'string',\n default: '1000'\n },\n {\n name: 'format',\n short: 'f',\n description: 'Output format (pretty, json)',\n type: 'string',\n default: 'pretty'\n }\n ],\n\n async action(_args, opts) {\n const iterations = parseInt(opts.iterations as string, 10);\n const warmup = parseInt(opts.warmup as string, 10);\n const format = opts.format as string;\n\n console.log(style.cyan('VLD Performance Benchmark'));\n console.log('');\n console.log(`${style.dim('Iterations:')} ${iterations.toLocaleString()}`);\n console.log(`${style.dim('Warmup:')} ${warmup.toLocaleString()}`);\n console.log('');\n\n // Run benchmarks\n const results = await runBenchmarks(iterations, warmup);\n\n // Output results\n if (format === 'json') {\n console.log(JSON.stringify(results, null, 2));\n } else {\n printResults(results);\n }\n }\n};\n\n// ============================================================================\n// Benchmark Definitions\n// ============================================================================\n\ninterface BenchmarkResult {\n name: string;\n ops: number;\n ms: number;\n opsPerSec: number;\n}\n\ninterface BenchmarkSuite {\n name: string;\n run: (iterations: number) => void;\n}\n\n/**\n * Benchmark suite'leri\n */\nfunction getBenchmarkSuites(): BenchmarkSuite[] {\n // Test data\n const simpleStringData = 'hello world';\n const simpleNumberData = 42;\n const simpleObjectData = { name: 'John', age: 30, email: 'john@example.com' };\n const complexObjectData = {\n user: {\n id: 1,\n name: 'John Doe',\n email: 'john@example.com',\n roles: ['admin', 'user'],\n profile: {\n bio: 'A software developer',\n avatar: 'https://example.com/avatar.jpg',\n settings: {\n theme: 'dark',\n notifications: true\n }\n }\n },\n posts: [\n { id: 1, title: 'Hello', content: 'World' },\n { id: 2, title: 'Foo', content: 'Bar' }\n ]\n };\n const arrayData = Array.from({ length: 100 }, (_, i) => ({\n id: i,\n name: `Item ${i}`,\n value: i * 10\n }));\n\n // Schemas\n const stringSchema = v.string();\n const numberSchema = v.number();\n const simpleObjectSchema = v.object({\n name: v.string(),\n age: v.number(),\n email: v.string().email()\n });\n const complexObjectSchema = v.object({\n user: v.object({\n id: v.number(),\n name: v.string(),\n email: v.string().email(),\n roles: v.array(v.string()),\n profile: v.object({\n bio: v.string(),\n avatar: v.string().url(),\n settings: v.object({\n theme: v.string(),\n notifications: v.boolean()\n })\n })\n }),\n posts: v.array(v.object({\n id: v.number(),\n title: v.string(),\n content: v.string()\n }))\n });\n const arraySchema = v.array(v.object({\n id: v.number(),\n name: v.string(),\n value: v.number()\n }));\n\n return [\n {\n name: 'String validation',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n stringSchema.parse(simpleStringData);\n }\n }\n },\n {\n name: 'Number validation',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n numberSchema.parse(simpleNumberData);\n }\n }\n },\n {\n name: 'Simple object',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n simpleObjectSchema.parse(simpleObjectData);\n }\n }\n },\n {\n name: 'Complex object',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n complexObjectSchema.parse(complexObjectData);\n }\n }\n },\n {\n name: 'Array (100 items)',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n arraySchema.parse(arrayData);\n }\n }\n },\n {\n name: 'safeParse (success)',\n run: (n) => {\n for (let i = 0; i < n; i++) {\n simpleObjectSchema.safeParse(simpleObjectData);\n }\n }\n },\n {\n name: 'safeParse (failure)',\n run: (n) => {\n const invalidData = { name: 123, age: 'invalid', email: 'invalid' };\n for (let i = 0; i < n; i++) {\n simpleObjectSchema.safeParse(invalidData);\n }\n }\n }\n ];\n}\n\n// ============================================================================\n// Benchmark Runner\n// ============================================================================\n\n/**\n * Benchmark'ları çalıştırır\n */\nasync function runBenchmarks(iterations: number, warmup: number): Promise<BenchmarkResult[]> {\n const suites = getBenchmarkSuites();\n const results: BenchmarkResult[] = [];\n\n for (const suite of suites) {\n // Warmup\n process.stdout.write(`${style.dim('Warming up:')} ${suite.name}...`);\n suite.run(warmup);\n process.stdout.write('\\r' + ' '.repeat(60) + '\\r');\n\n // Benchmark\n process.stdout.write(`${style.dim('Running:')} ${suite.name}...`);\n\n const start = performance.now();\n suite.run(iterations);\n const end = performance.now();\n\n process.stdout.write('\\r' + ' '.repeat(60) + '\\r');\n\n const ms = end - start;\n const opsPerSec = Math.round((iterations / ms) * 1000);\n\n results.push({\n name: suite.name,\n ops: iterations,\n ms: Math.round(ms * 100) / 100,\n opsPerSec\n });\n\n console.log(`${style.green('✔')} ${suite.name}: ${style.bold(opsPerSec.toLocaleString())} ops/sec`);\n }\n\n return results;\n}\n\n/**\n * Sonuçları yazdırır\n */\nfunction printResults(results: BenchmarkResult[]): void {\n console.log('');\n console.log(style.bold('Results:'));\n console.log('');\n\n const table = formatTable(\n results.map((r) => [\n r.name,\n r.opsPerSec.toLocaleString(),\n `${r.ms.toFixed(2)}ms`\n ]),\n {\n columns: [\n { header: 'Benchmark', align: 'left' },\n { header: 'ops/sec', align: 'right' },\n { header: 'Time', align: 'right' }\n ],\n headerColor: style.bold\n }\n );\n\n console.log(table);\n console.log('');\n\n // Summary\n const totalOps = results.reduce((sum, r) => sum + r.opsPerSec, 0);\n const avgOps = Math.round(totalOps / results.length);\n\n console.log(style.dim('Average:') + ` ${avgOps.toLocaleString()} ops/sec`);\n}\n"]}
package/dist/cli/bin.js DELETED
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * VLD CLI Entry Point
4
- *
5
- * This is the main entry point for the `vld` command-line tool.
6
- */
7
- import { vldCli } from './index.js';
8
- import { validateCommand } from './commands/validate.js';
9
- import { benchmarkCommand } from './commands/benchmark.js';
10
- // Register commands
11
- vldCli.command(validateCommand);
12
- vldCli.command(benchmarkCommand);
13
- // Help command
14
- vldCli.command({
15
- name: 'help',
16
- description: 'Show help information',
17
- aliases: ['h'],
18
- action: () => {
19
- console.log(vldCli.help());
20
- }
21
- });
22
- // Version command
23
- vldCli.command({
24
- name: 'version',
25
- description: 'Show version information',
26
- action: () => {
27
- console.log('vld v1.5.0');
28
- }
29
- });
30
- // Run CLI
31
- vldCli.run(process.argv.slice(2)).catch((error) => {
32
- console.error('Fatal error:', error);
33
- process.exitCode = 1;
34
- });
35
- //# sourceMappingURL=bin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,oBAAoB;AACpB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAChC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEjC,eAAe;AACf,MAAM,CAAC,OAAO,CAAC;IACb,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uBAAuB;IACpC,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,MAAM,EAAE,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,CAAC,OAAO,CAAC;IACb,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,0BAA0B;IACvC,MAAM,EAAE,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC,CAAC;AAEH,UAAU;AACV,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChD,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\r\n/**\r\n * VLD CLI Entry Point\r\n *\r\n * This is the main entry point for the `vld` command-line tool.\r\n */\r\n\r\nimport { vldCli } from './index';\r\nimport { validateCommand } from './commands/validate';\r\nimport { benchmarkCommand } from './commands/benchmark';\r\n\r\n// Register commands\r\nvldCli.command(validateCommand);\r\nvldCli.command(benchmarkCommand);\r\n\r\n// Help command\r\nvldCli.command({\r\n name: 'help',\r\n description: 'Show help information',\r\n aliases: ['h'],\r\n action: () => {\r\n console.log(vldCli.help());\r\n }\r\n});\r\n\r\n// Version command\r\nvldCli.command({\r\n name: 'version',\r\n description: 'Show version information',\r\n action: () => {\r\n console.log('vld v1.5.0');\r\n }\r\n});\r\n\r\n// Run CLI\r\nvldCli.run(process.argv.slice(2)).catch((error) => {\r\n console.error('Fatal error:', error);\r\n process.exitCode = 1;\r\n});\r\n"]}
@@ -1,204 +0,0 @@
1
- /**
2
- * VLD CLI - Benchmark Command
3
- *
4
- * Run performance benchmarks for VLD validation.
5
- */
6
- import { pigment } from '../../pigment.js';
7
- import { v } from '../../index.js';
8
- /**
9
- * Run a single benchmark
10
- */
11
- function runBenchmark(name, fn, iterations) {
12
- // Warm up
13
- for (let i = 0; i < Math.min(100, iterations / 10); i++) {
14
- fn();
15
- }
16
- // Run benchmark
17
- const start = performance.now();
18
- for (let i = 0; i < iterations; i++) {
19
- fn();
20
- }
21
- const end = performance.now();
22
- const totalMs = end - start;
23
- const avgMs = totalMs / iterations;
24
- const opsPerSec = 1000 / avgMs;
25
- return { name, iterations, totalMs, avgMs, opsPerSec };
26
- }
27
- /**
28
- * Format number with comma separators
29
- */
30
- function formatNumber(n) {
31
- return n.toLocaleString('en-US', { maximumFractionDigits: 2 });
32
- }
33
- /**
34
- * Format benchmark result
35
- */
36
- function formatResult(result, colored) {
37
- const name = colored ? pigment.cyan(result.name.padEnd(30)) : result.name.padEnd(30);
38
- const ops = colored
39
- ? pigment.green(formatNumber(result.opsPerSec).padStart(12))
40
- : formatNumber(result.opsPerSec).padStart(12);
41
- const avg = colored
42
- ? pigment.yellow(result.avgMs.toFixed(6).padStart(12))
43
- : result.avgMs.toFixed(6).padStart(12);
44
- return `${name} ${ops} ops/sec ${avg} ms/op`;
45
- }
46
- /**
47
- * Benchmark command
48
- */
49
- export const benchmarkCommand = {
50
- name: 'benchmark',
51
- description: 'Run performance benchmarks',
52
- aliases: ['bench', 'b'],
53
- options: [
54
- {
55
- name: 'iterations',
56
- short: 'n',
57
- description: 'Number of iterations',
58
- type: 'number',
59
- default: 10000
60
- },
61
- {
62
- name: 'suite',
63
- short: 's',
64
- description: 'Benchmark suite to run (all, primitives, objects, arrays)',
65
- type: 'string',
66
- default: 'all'
67
- },
68
- {
69
- name: 'json',
70
- short: 'j',
71
- description: 'Output as JSON',
72
- type: 'boolean',
73
- default: false
74
- },
75
- {
76
- name: 'no-color',
77
- description: 'Disable colored output',
78
- type: 'boolean',
79
- default: false
80
- }
81
- ],
82
- action: async (_args, options) => {
83
- const iterations = options.iterations;
84
- const suite = options.suite;
85
- const json = options.json;
86
- const noColor = options['no-color'];
87
- const colored = !noColor;
88
- const results = [];
89
- // Primitive validators
90
- const stringSchema = v.string();
91
- const numberSchema = v.number();
92
- const booleanSchema = v.boolean();
93
- const dateSchema = v.date();
94
- // Object validator
95
- const userSchema = v.object({
96
- name: v.string(),
97
- email: v.string(),
98
- age: v.number(),
99
- active: v.boolean()
100
- });
101
- // Array validator
102
- const numbersSchema = v.array(v.number());
103
- // Nested object validator
104
- const nestedSchema = v.object({
105
- user: v.object({
106
- name: v.string(),
107
- email: v.string()
108
- }),
109
- items: v.array(v.object({
110
- id: v.number(),
111
- name: v.string(),
112
- price: v.number()
113
- }))
114
- });
115
- // Test data
116
- const testString = 'hello world';
117
- const testNumber = 42;
118
- const testBoolean = true;
119
- const testDate = new Date();
120
- const testUser = { name: 'John', email: 'john@example.com', age: 30, active: true };
121
- const testNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
122
- const testNested = {
123
- user: { name: 'John', email: 'john@example.com' },
124
- items: [
125
- { id: 1, name: 'Item 1', price: 10.99 },
126
- { id: 2, name: 'Item 2', price: 20.99 },
127
- { id: 3, name: 'Item 3', price: 30.99 }
128
- ]
129
- };
130
- if (!json) {
131
- console.log(pigment.bold('VLD Performance Benchmark'));
132
- console.log(pigment.dim(`Running ${formatNumber(iterations)} iterations per test`));
133
- console.log('');
134
- }
135
- // Primitive benchmarks
136
- if (suite === 'all' || suite === 'primitives') {
137
- if (!json) {
138
- console.log(pigment.bold('Primitives:'));
139
- }
140
- results.push(runBenchmark('string.parse()', () => stringSchema.parse(testString), iterations));
141
- results.push(runBenchmark('number.parse()', () => numberSchema.parse(testNumber), iterations));
142
- results.push(runBenchmark('boolean.parse()', () => booleanSchema.parse(testBoolean), iterations));
143
- results.push(runBenchmark('date.parse()', () => dateSchema.parse(testDate), iterations));
144
- results.push(runBenchmark('string.safeParse()', () => stringSchema.safeParse(testString), iterations));
145
- if (!json) {
146
- for (const result of results.slice(-5)) {
147
- console.log(' ' + formatResult(result, colored));
148
- }
149
- console.log('');
150
- }
151
- }
152
- // Object benchmarks
153
- if (suite === 'all' || suite === 'objects') {
154
- if (!json) {
155
- console.log(pigment.bold('Objects:'));
156
- }
157
- results.push(runBenchmark('object.parse()', () => userSchema.parse(testUser), iterations));
158
- results.push(runBenchmark('object.safeParse()', () => userSchema.safeParse(testUser), iterations));
159
- results.push(runBenchmark('nested.parse()', () => nestedSchema.parse(testNested), iterations));
160
- if (!json) {
161
- for (const result of results.slice(-3)) {
162
- console.log(' ' + formatResult(result, colored));
163
- }
164
- console.log('');
165
- }
166
- }
167
- // Array benchmarks
168
- if (suite === 'all' || suite === 'arrays') {
169
- if (!json) {
170
- console.log(pigment.bold('Arrays:'));
171
- }
172
- results.push(runBenchmark('array.parse()', () => numbersSchema.parse(testNumbers), iterations));
173
- results.push(runBenchmark('array.safeParse()', () => numbersSchema.safeParse(testNumbers), iterations));
174
- if (!json) {
175
- for (const result of results.slice(-2)) {
176
- console.log(' ' + formatResult(result, colored));
177
- }
178
- console.log('');
179
- }
180
- }
181
- // Summary
182
- if (!json) {
183
- const totalOps = results.reduce((sum, r) => sum + r.opsPerSec, 0);
184
- const avgOps = totalOps / results.length;
185
- console.log(pigment.bold('Summary:'));
186
- console.log(` Total benchmarks: ${results.length}`);
187
- console.log(` Average ops/sec: ${formatNumber(avgOps)}`);
188
- }
189
- else {
190
- console.log(JSON.stringify({
191
- iterations,
192
- suite,
193
- results: results.map((r) => ({
194
- name: r.name,
195
- iterations: r.iterations,
196
- totalMs: r.totalMs,
197
- avgMs: r.avgMs,
198
- opsPerSec: r.opsPerSec
199
- }))
200
- }));
201
- }
202
- }
203
- };
204
- //# sourceMappingURL=benchmark.js.map