@oxog/vld 1.3.1 → 1.5.0

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 (334) hide show
  1. package/CHANGELOG.md +333 -284
  2. package/README.md +13 -12
  3. package/dist/cli/benchmark.d.ts +15 -0
  4. package/dist/cli/benchmark.d.ts.map +1 -0
  5. package/dist/cli/benchmark.js +248 -0
  6. package/dist/cli/benchmark.js.map +1 -0
  7. package/dist/cli/bin.d.ts +8 -0
  8. package/dist/cli/bin.d.ts.map +1 -0
  9. package/dist/cli/bin.js +35 -0
  10. package/dist/cli/bin.js.map +1 -0
  11. package/dist/cli/commands/benchmark.d.ts +11 -0
  12. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  13. package/dist/cli/commands/benchmark.js +204 -0
  14. package/dist/cli/commands/benchmark.js.map +1 -0
  15. package/dist/cli/commands/validate.d.ts +11 -0
  16. package/dist/cli/commands/validate.d.ts.map +1 -0
  17. package/dist/cli/commands/validate.js +157 -0
  18. package/dist/cli/commands/validate.js.map +1 -0
  19. package/dist/cli/generate.d.ts +14 -0
  20. package/dist/cli/generate.d.ts.map +1 -0
  21. package/dist/cli/generate.js +233 -0
  22. package/dist/cli/generate.js.map +1 -0
  23. package/dist/cli/index.d.ts +59 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +182 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/validate.d.ts +15 -0
  28. package/dist/cli/validate.d.ts.map +1 -0
  29. package/dist/cli/validate.js +162 -0
  30. package/dist/cli/validate.js.map +1 -0
  31. package/dist/codecs/index.d.ts.map +1 -1
  32. package/dist/codecs/index.js +29 -10
  33. package/dist/codecs/index.js.map +1 -1
  34. package/dist/coercion/bigint.js +1 -1
  35. package/dist/coercion/boolean.d.ts.map +1 -1
  36. package/dist/coercion/boolean.js +24 -32
  37. package/dist/coercion/boolean.js.map +1 -1
  38. package/dist/coercion/date.js +2 -2
  39. package/dist/coercion/date.js.map +1 -1
  40. package/dist/coercion/number.d.ts.map +1 -1
  41. package/dist/coercion/number.js +20 -4
  42. package/dist/coercion/number.js.map +1 -1
  43. package/dist/coercion/string.d.ts.map +1 -1
  44. package/dist/coercion/string.js +9 -73
  45. package/dist/coercion/string.js.map +1 -1
  46. package/dist/compat/emitter.d.ts +73 -0
  47. package/dist/compat/emitter.d.ts.map +1 -0
  48. package/dist/compat/emitter.js +179 -0
  49. package/dist/compat/emitter.js.map +1 -0
  50. package/dist/compat/index.d.ts +15 -0
  51. package/dist/compat/index.d.ts.map +1 -0
  52. package/dist/compat/index.js +14 -0
  53. package/dist/compat/index.js.map +1 -0
  54. package/dist/compat/result.d.ts +128 -0
  55. package/dist/compat/result.d.ts.map +1 -0
  56. package/dist/compat/result.js +169 -0
  57. package/dist/compat/result.js.map +1 -0
  58. package/dist/errors.d.ts +58 -1
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +97 -9
  61. package/dist/errors.js.map +1 -1
  62. package/dist/events.d.ts +140 -0
  63. package/dist/events.d.ts.map +1 -0
  64. package/dist/events.js +8 -0
  65. package/dist/events.js.map +1 -0
  66. package/dist/guards.d.ts +143 -0
  67. package/dist/guards.d.ts.map +1 -0
  68. package/dist/guards.js +238 -0
  69. package/dist/guards.js.map +1 -0
  70. package/dist/index.d.ts +606 -4
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +105 -6
  73. package/dist/index.js.map +1 -1
  74. package/dist/kernel.d.ts +29 -0
  75. package/dist/kernel.d.ts.map +1 -0
  76. package/dist/kernel.js +402 -0
  77. package/dist/kernel.js.map +1 -0
  78. package/dist/locales/af.d.ts.map +1 -1
  79. package/dist/locales/af.js +18 -1
  80. package/dist/locales/af.js.map +1 -1
  81. package/dist/locales/ar.d.ts.map +1 -1
  82. package/dist/locales/ar.js +18 -1
  83. package/dist/locales/ar.js.map +1 -1
  84. package/dist/locales/backup-en.d.ts +3 -0
  85. package/dist/locales/backup-en.d.ts.map +1 -0
  86. package/dist/locales/backup-en.js +105 -0
  87. package/dist/locales/backup-en.js.map +1 -0
  88. package/dist/locales/bn.d.ts.map +1 -1
  89. package/dist/locales/bn.js +18 -1
  90. package/dist/locales/bn.js.map +1 -1
  91. package/dist/locales/da.d.ts.map +1 -1
  92. package/dist/locales/da.js +18 -1
  93. package/dist/locales/da.js.map +1 -1
  94. package/dist/locales/de.d.ts.map +1 -1
  95. package/dist/locales/de.js +18 -1
  96. package/dist/locales/de.js.map +1 -1
  97. package/dist/locales/en.d.ts.map +1 -1
  98. package/dist/locales/en.js +18 -1
  99. package/dist/locales/en.js.map +1 -1
  100. package/dist/locales/es-MX.d.ts.map +1 -1
  101. package/dist/locales/es-MX.js +17 -1
  102. package/dist/locales/es-MX.js.map +1 -1
  103. package/dist/locales/es.d.ts.map +1 -1
  104. package/dist/locales/es.js +18 -1
  105. package/dist/locales/es.js.map +1 -1
  106. package/dist/locales/fi.d.ts.map +1 -1
  107. package/dist/locales/fi.js +18 -1
  108. package/dist/locales/fi.js.map +1 -1
  109. package/dist/locales/fr.d.ts.map +1 -1
  110. package/dist/locales/fr.js +18 -1
  111. package/dist/locales/fr.js.map +1 -1
  112. package/dist/locales/hi.d.ts.map +1 -1
  113. package/dist/locales/hi.js +18 -1
  114. package/dist/locales/hi.js.map +1 -1
  115. package/dist/locales/id.d.ts.map +1 -1
  116. package/dist/locales/id.js +18 -1
  117. package/dist/locales/id.js.map +1 -1
  118. package/dist/locales/it.d.ts.map +1 -1
  119. package/dist/locales/it.js +18 -1
  120. package/dist/locales/it.js.map +1 -1
  121. package/dist/locales/ja.d.ts.map +1 -1
  122. package/dist/locales/ja.js +18 -1
  123. package/dist/locales/ja.js.map +1 -1
  124. package/dist/locales/ko.d.ts.map +1 -1
  125. package/dist/locales/ko.js +18 -1
  126. package/dist/locales/ko.js.map +1 -1
  127. package/dist/locales/nl.d.ts.map +1 -1
  128. package/dist/locales/nl.js +18 -1
  129. package/dist/locales/nl.js.map +1 -1
  130. package/dist/locales/no.d.ts.map +1 -1
  131. package/dist/locales/no.js +18 -1
  132. package/dist/locales/no.js.map +1 -1
  133. package/dist/locales/pl.d.ts.map +1 -1
  134. package/dist/locales/pl.js +18 -1
  135. package/dist/locales/pl.js.map +1 -1
  136. package/dist/locales/pt-BR.d.ts.map +1 -1
  137. package/dist/locales/pt-BR.js +18 -1
  138. package/dist/locales/pt-BR.js.map +1 -1
  139. package/dist/locales/pt.d.ts.map +1 -1
  140. package/dist/locales/pt.js +18 -1
  141. package/dist/locales/pt.js.map +1 -1
  142. package/dist/locales/ru.d.ts.map +1 -1
  143. package/dist/locales/ru.js +18 -1
  144. package/dist/locales/ru.js.map +1 -1
  145. package/dist/locales/sv.d.ts.map +1 -1
  146. package/dist/locales/sv.js +18 -1
  147. package/dist/locales/sv.js.map +1 -1
  148. package/dist/locales/sw.d.ts.map +1 -1
  149. package/dist/locales/sw.js +18 -1
  150. package/dist/locales/sw.js.map +1 -1
  151. package/dist/locales/th.d.ts.map +1 -1
  152. package/dist/locales/th.js +18 -1
  153. package/dist/locales/th.js.map +1 -1
  154. package/dist/locales/tr.d.ts.map +1 -1
  155. package/dist/locales/tr.js +18 -1
  156. package/dist/locales/tr.js.map +1 -1
  157. package/dist/locales/types.d.ts +13 -0
  158. package/dist/locales/types.d.ts.map +1 -1
  159. package/dist/locales/types.js.map +1 -1
  160. package/dist/locales/vi.d.ts.map +1 -1
  161. package/dist/locales/vi.js +18 -1
  162. package/dist/locales/vi.js.map +1 -1
  163. package/dist/locales/zh.d.ts.map +1 -1
  164. package/dist/locales/zh.js +18 -1
  165. package/dist/locales/zh.js.map +1 -1
  166. package/dist/logger.d.ts +94 -0
  167. package/dist/logger.d.ts.map +1 -0
  168. package/dist/logger.js +184 -0
  169. package/dist/logger.js.map +1 -0
  170. package/dist/pigment.d.ts +124 -0
  171. package/dist/pigment.d.ts.map +1 -0
  172. package/dist/pigment.js +177 -0
  173. package/dist/pigment.js.map +1 -0
  174. package/dist/plugins/codecs.d.ts +17 -0
  175. package/dist/plugins/codecs.d.ts.map +1 -0
  176. package/dist/plugins/codecs.js +29 -0
  177. package/dist/plugins/codecs.js.map +1 -0
  178. package/dist/plugins/coercion.d.ts +13 -0
  179. package/dist/plugins/coercion.d.ts.map +1 -0
  180. package/dist/plugins/coercion.js +34 -0
  181. package/dist/plugins/coercion.js.map +1 -0
  182. package/dist/plugins/core-validators.d.ts +13 -0
  183. package/dist/plugins/core-validators.d.ts.map +1 -0
  184. package/dist/plugins/core-validators.js +96 -0
  185. package/dist/plugins/core-validators.js.map +1 -0
  186. package/dist/plugins/index.d.ts +8 -0
  187. package/dist/plugins/index.d.ts.map +1 -0
  188. package/dist/plugins/index.js +8 -0
  189. package/dist/plugins/index.js.map +1 -0
  190. package/dist/plugins/kernel.d.ts +29 -0
  191. package/dist/plugins/kernel.d.ts.map +1 -0
  192. package/dist/plugins/kernel.js +486 -0
  193. package/dist/plugins/kernel.js.map +1 -0
  194. package/dist/plugins/types.d.ts +186 -0
  195. package/dist/plugins/types.d.ts.map +1 -0
  196. package/dist/plugins/types.js +8 -0
  197. package/dist/plugins/types.js.map +1 -0
  198. package/dist/style.d.ts +123 -0
  199. package/dist/style.d.ts.map +1 -0
  200. package/dist/style.js +369 -0
  201. package/dist/style.js.map +1 -0
  202. package/dist/utils/codec-utils.d.ts +2 -0
  203. package/dist/utils/codec-utils.d.ts.map +1 -1
  204. package/dist/utils/codec-utils.js +28 -4
  205. package/dist/utils/codec-utils.js.map +1 -1
  206. package/dist/utils/deep-merge.d.ts +2 -0
  207. package/dist/utils/deep-merge.d.ts.map +1 -1
  208. package/dist/utils/deep-merge.js +22 -39
  209. package/dist/utils/deep-merge.js.map +1 -1
  210. package/dist/utils/ip-validation.d.ts +11 -0
  211. package/dist/utils/ip-validation.d.ts.map +1 -0
  212. package/dist/utils/ip-validation.js +98 -0
  213. package/dist/utils/ip-validation.js.map +1 -0
  214. package/dist/utils/security.d.ts +12 -0
  215. package/dist/utils/security.d.ts.map +1 -0
  216. package/dist/utils/security.js +61 -0
  217. package/dist/utils/security.js.map +1 -0
  218. package/dist/validators/array.d.ts +3 -1
  219. package/dist/validators/array.d.ts.map +1 -1
  220. package/dist/validators/array.js +41 -15
  221. package/dist/validators/array.js.map +1 -1
  222. package/dist/validators/base.d.ts +134 -0
  223. package/dist/validators/base.d.ts.map +1 -1
  224. package/dist/validators/base.js +255 -1
  225. package/dist/validators/base.js.map +1 -1
  226. package/dist/validators/base64.js +1 -1
  227. package/dist/validators/bigint.d.ts +20 -0
  228. package/dist/validators/bigint.d.ts.map +1 -1
  229. package/dist/validators/bigint.js +39 -1
  230. package/dist/validators/bigint.js.map +1 -1
  231. package/dist/validators/boolean.js +29 -1
  232. package/dist/validators/boolean.js.map +1 -1
  233. package/dist/validators/codec.js +1 -1
  234. package/dist/validators/custom.d.ts +47 -0
  235. package/dist/validators/custom.d.ts.map +1 -0
  236. package/dist/validators/custom.js +50 -0
  237. package/dist/validators/custom.js.map +1 -0
  238. package/dist/validators/date.d.ts +16 -0
  239. package/dist/validators/date.d.ts.map +1 -1
  240. package/dist/validators/date.js +62 -7
  241. package/dist/validators/date.js.map +1 -1
  242. package/dist/validators/discriminated-union.d.ts +29 -0
  243. package/dist/validators/discriminated-union.d.ts.map +1 -0
  244. package/dist/validators/discriminated-union.js +98 -0
  245. package/dist/validators/discriminated-union.js.map +1 -0
  246. package/dist/validators/enum.d.ts +10 -0
  247. package/dist/validators/enum.d.ts.map +1 -1
  248. package/dist/validators/enum.js +38 -1
  249. package/dist/validators/enum.js.map +1 -1
  250. package/dist/validators/file.d.ts +57 -0
  251. package/dist/validators/file.d.ts.map +1 -0
  252. package/dist/validators/file.js +114 -0
  253. package/dist/validators/file.js.map +1 -0
  254. package/dist/validators/function.d.ts +26 -0
  255. package/dist/validators/function.d.ts.map +1 -0
  256. package/dist/validators/function.js +45 -0
  257. package/dist/validators/function.js.map +1 -0
  258. package/dist/validators/hex.d.ts.map +1 -1
  259. package/dist/validators/hex.js +3 -2
  260. package/dist/validators/hex.js.map +1 -1
  261. package/dist/validators/index.d.ts +18 -1
  262. package/dist/validators/index.d.ts.map +1 -1
  263. package/dist/validators/index.js +16 -1
  264. package/dist/validators/index.js.map +1 -1
  265. package/dist/validators/intersection.d.ts.map +1 -1
  266. package/dist/validators/intersection.js +15 -8
  267. package/dist/validators/intersection.js.map +1 -1
  268. package/dist/validators/json.d.ts +26 -0
  269. package/dist/validators/json.d.ts.map +1 -0
  270. package/dist/validators/json.js +64 -0
  271. package/dist/validators/json.js.map +1 -0
  272. package/dist/validators/lazy.d.ts +28 -0
  273. package/dist/validators/lazy.d.ts.map +1 -0
  274. package/dist/validators/lazy.js +42 -0
  275. package/dist/validators/lazy.js.map +1 -0
  276. package/dist/validators/literal.js +1 -1
  277. package/dist/validators/map.js +1 -1
  278. package/dist/validators/nan.d.ts +17 -0
  279. package/dist/validators/nan.d.ts.map +1 -0
  280. package/dist/validators/nan.js +32 -0
  281. package/dist/validators/nan.js.map +1 -0
  282. package/dist/validators/never.js +1 -1
  283. package/dist/validators/null.d.ts +16 -0
  284. package/dist/validators/null.d.ts.map +1 -0
  285. package/dist/validators/null.js +31 -0
  286. package/dist/validators/null.js.map +1 -0
  287. package/dist/validators/number.d.ts +22 -0
  288. package/dist/validators/number.d.ts.map +1 -1
  289. package/dist/validators/number.js +47 -8
  290. package/dist/validators/number.js.map +1 -1
  291. package/dist/validators/object.d.ts +32 -0
  292. package/dist/validators/object.d.ts.map +1 -1
  293. package/dist/validators/object.js +125 -8
  294. package/dist/validators/object.js.map +1 -1
  295. package/dist/validators/record.d.ts +15 -2
  296. package/dist/validators/record.d.ts.map +1 -1
  297. package/dist/validators/record.js +74 -4
  298. package/dist/validators/record.js.map +1 -1
  299. package/dist/validators/set.js +1 -1
  300. package/dist/validators/string-bool.d.ts +61 -0
  301. package/dist/validators/string-bool.d.ts.map +1 -0
  302. package/dist/validators/string-bool.js +127 -0
  303. package/dist/validators/string-bool.js.map +1 -0
  304. package/dist/validators/string-formats.d.ts +97 -0
  305. package/dist/validators/string-formats.d.ts.map +1 -0
  306. package/dist/validators/string-formats.js +120 -0
  307. package/dist/validators/string-formats.js.map +1 -0
  308. package/dist/validators/string.d.ts.map +1 -1
  309. package/dist/validators/string.js +2 -73
  310. package/dist/validators/string.js.map +1 -1
  311. package/dist/validators/symbol.js +1 -1
  312. package/dist/validators/template-literal.d.ts +32 -0
  313. package/dist/validators/template-literal.d.ts.map +1 -0
  314. package/dist/validators/template-literal.js +102 -0
  315. package/dist/validators/template-literal.js.map +1 -0
  316. package/dist/validators/tuple.js +1 -1
  317. package/dist/validators/uint8array.d.ts +21 -4
  318. package/dist/validators/uint8array.d.ts.map +1 -1
  319. package/dist/validators/uint8array.js +34 -23
  320. package/dist/validators/uint8array.js.map +1 -1
  321. package/dist/validators/undefined.d.ts +16 -0
  322. package/dist/validators/undefined.d.ts.map +1 -0
  323. package/dist/validators/undefined.js +31 -0
  324. package/dist/validators/undefined.js.map +1 -0
  325. package/dist/validators/union.d.ts +2 -0
  326. package/dist/validators/union.d.ts.map +1 -1
  327. package/dist/validators/union.js +15 -21
  328. package/dist/validators/union.js.map +1 -1
  329. package/dist/validators/void.js +1 -1
  330. package/dist/validators/xor.d.ts +23 -0
  331. package/dist/validators/xor.d.ts.map +1 -0
  332. package/dist/validators/xor.js +64 -0
  333. package/dist/validators/xor.js.map +1 -0
  334. package/package.json +95 -79
@@ -0,0 +1,94 @@
1
+ /**
2
+ * VLD Logger
3
+ *
4
+ * This module provides a debug logging system for VLD,
5
+ * compatible with @oxog/log when available.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
11
+ /**
12
+ * Logger options
13
+ */
14
+ export interface LoggerOptions {
15
+ /** Logger name (appears in log output) */
16
+ name?: string;
17
+ /** Minimum log level to output */
18
+ level?: LogLevel;
19
+ /** Enable colored output (for terminals) */
20
+ colored?: boolean;
21
+ /** Enable timestamps in output */
22
+ timestamps?: boolean;
23
+ /** Custom log handler */
24
+ handler?: LogHandler;
25
+ }
26
+ /**
27
+ * Log entry
28
+ */
29
+ export interface LogEntry {
30
+ level: LogLevel;
31
+ message: string;
32
+ data?: unknown;
33
+ timestamp: Date;
34
+ name: string;
35
+ }
36
+ /**
37
+ * Log handler function
38
+ */
39
+ export type LogHandler = (entry: LogEntry) => void;
40
+ /**
41
+ * Logger interface
42
+ */
43
+ export interface Logger {
44
+ /** Log at debug level */
45
+ debug(message: string, data?: unknown): void;
46
+ /** Log at info level */
47
+ info(message: string, data?: unknown): void;
48
+ /** Log at warn level */
49
+ warn(message: string, data?: unknown): void;
50
+ /** Log at error level */
51
+ error(message: string, data?: unknown): void;
52
+ /** Check if level is enabled */
53
+ isLevelEnabled(level: LogLevel): boolean;
54
+ /** Set log level */
55
+ setLevel(level: LogLevel): void;
56
+ /** Get current level */
57
+ getLevel(): LogLevel;
58
+ /** Create a child logger with a new name */
59
+ child(name: string): Logger;
60
+ }
61
+ /**
62
+ * Create a logger instance
63
+ */
64
+ export declare function createLogger(options?: LoggerOptions): Logger;
65
+ /**
66
+ * Initialize the global VLD logger
67
+ */
68
+ export declare function initLogger(options?: LoggerOptions): Logger;
69
+ /**
70
+ * Get the global VLD logger
71
+ * Returns null if not initialized
72
+ */
73
+ export declare function getLogger(): Logger | null;
74
+ /**
75
+ * Set log level for the global logger
76
+ */
77
+ export declare function setLogLevel(level: LogLevel): void;
78
+ /**
79
+ * Enable debug mode for VLD
80
+ */
81
+ export declare function enableDebug(): void;
82
+ /**
83
+ * Disable all VLD logging
84
+ */
85
+ export declare function disableLogging(): void;
86
+ /**
87
+ * Create a no-op logger for testing
88
+ */
89
+ export declare function createNoOpLogger(): Logger;
90
+ /**
91
+ * Reset the global logger (for testing)
92
+ */
93
+ export declare function resetLogger(): void;
94
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAatE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,yBAAyB;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,wBAAwB;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,wBAAwB;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,yBAAyB;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,gCAAgC;IAChC,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,wBAAwB;IACxB,QAAQ,IAAI,QAAQ,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAmFD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA4ChE;AAQD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAM1D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAIjD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/dist/logger.js ADDED
@@ -0,0 +1,184 @@
1
+ /**
2
+ * VLD Logger
3
+ *
4
+ * This module provides a debug logging system for VLD,
5
+ * compatible with @oxog/log when available.
6
+ */
7
+ /**
8
+ * Log level priorities (lower = more verbose)
9
+ */
10
+ const LOG_LEVEL_PRIORITY = {
11
+ debug: 0,
12
+ info: 1,
13
+ warn: 2,
14
+ error: 3,
15
+ silent: 4
16
+ };
17
+ /**
18
+ * ANSI color codes for terminal output
19
+ */
20
+ const COLORS = {
21
+ reset: '\x1b[0m',
22
+ dim: '\x1b[2m',
23
+ red: '\x1b[31m',
24
+ yellow: '\x1b[33m',
25
+ blue: '\x1b[34m',
26
+ cyan: '\x1b[36m',
27
+ gray: '\x1b[90m'
28
+ };
29
+ /**
30
+ * Level colors
31
+ */
32
+ const LEVEL_COLORS = {
33
+ debug: COLORS.gray,
34
+ info: COLORS.blue,
35
+ warn: COLORS.yellow,
36
+ error: COLORS.red
37
+ };
38
+ /**
39
+ * Level labels
40
+ */
41
+ const LEVEL_LABELS = {
42
+ debug: 'DEBUG',
43
+ info: 'INFO ',
44
+ warn: 'WARN ',
45
+ error: 'ERROR'
46
+ };
47
+ /**
48
+ * Default log handler
49
+ */
50
+ function createDefaultHandler(options) {
51
+ const colored = options.colored ?? true;
52
+ const timestamps = options.timestamps ?? true;
53
+ return (entry) => {
54
+ const parts = [];
55
+ // Timestamp
56
+ if (timestamps) {
57
+ const time = entry.timestamp.toISOString().slice(11, 23);
58
+ parts.push(colored ? `${COLORS.dim}${time}${COLORS.reset}` : time);
59
+ }
60
+ // Level
61
+ const levelLabel = LEVEL_LABELS[entry.level];
62
+ const levelColor = LEVEL_COLORS[entry.level];
63
+ parts.push(colored ? `${levelColor}${levelLabel}${COLORS.reset}` : levelLabel);
64
+ // Name
65
+ parts.push(colored ? `${COLORS.cyan}[${entry.name}]${COLORS.reset}` : `[${entry.name}]`);
66
+ // Message
67
+ parts.push(entry.message);
68
+ // Output
69
+ const output = parts.join(' ');
70
+ // Use appropriate console method
71
+ switch (entry.level) {
72
+ case 'debug':
73
+ console.debug(output, entry.data !== undefined ? entry.data : '');
74
+ break;
75
+ case 'info':
76
+ console.info(output, entry.data !== undefined ? entry.data : '');
77
+ break;
78
+ case 'warn':
79
+ console.warn(output, entry.data !== undefined ? entry.data : '');
80
+ break;
81
+ case 'error':
82
+ console.error(output, entry.data !== undefined ? entry.data : '');
83
+ break;
84
+ }
85
+ };
86
+ }
87
+ /**
88
+ * Create a logger instance
89
+ */
90
+ export function createLogger(options = {}) {
91
+ const name = options.name ?? 'vld';
92
+ let level = options.level ?? 'warn';
93
+ const handler = options.handler ?? createDefaultHandler(options);
94
+ const log = (logLevel, message, data) => {
95
+ if (LOG_LEVEL_PRIORITY[logLevel] < LOG_LEVEL_PRIORITY[level]) {
96
+ return;
97
+ }
98
+ const entry = {
99
+ level: logLevel,
100
+ message,
101
+ data,
102
+ timestamp: new Date(),
103
+ name
104
+ };
105
+ handler(entry);
106
+ };
107
+ const logger = {
108
+ debug: (message, data) => log('debug', message, data),
109
+ info: (message, data) => log('info', message, data),
110
+ warn: (message, data) => log('warn', message, data),
111
+ error: (message, data) => log('error', message, data),
112
+ isLevelEnabled: (checkLevel) => LOG_LEVEL_PRIORITY[checkLevel] >= LOG_LEVEL_PRIORITY[level],
113
+ setLevel: (newLevel) => {
114
+ level = newLevel;
115
+ },
116
+ getLevel: () => level,
117
+ child: (childName) => createLogger({
118
+ ...options,
119
+ name: `${name}:${childName}`
120
+ })
121
+ };
122
+ return logger;
123
+ }
124
+ // ============================================
125
+ // Global Logger Management
126
+ // ============================================
127
+ let globalLogger = null;
128
+ /**
129
+ * Initialize the global VLD logger
130
+ */
131
+ export function initLogger(options) {
132
+ globalLogger = createLogger({
133
+ name: 'vld',
134
+ ...options
135
+ });
136
+ return globalLogger;
137
+ }
138
+ /**
139
+ * Get the global VLD logger
140
+ * Returns null if not initialized
141
+ */
142
+ export function getLogger() {
143
+ return globalLogger;
144
+ }
145
+ /**
146
+ * Set log level for the global logger
147
+ */
148
+ export function setLogLevel(level) {
149
+ if (globalLogger) {
150
+ globalLogger.setLevel(level);
151
+ }
152
+ }
153
+ /**
154
+ * Enable debug mode for VLD
155
+ */
156
+ export function enableDebug() {
157
+ if (!globalLogger) {
158
+ initLogger({ level: 'debug' });
159
+ }
160
+ else {
161
+ globalLogger.setLevel('debug');
162
+ }
163
+ }
164
+ /**
165
+ * Disable all VLD logging
166
+ */
167
+ export function disableLogging() {
168
+ if (globalLogger) {
169
+ globalLogger.setLevel('silent');
170
+ }
171
+ }
172
+ /**
173
+ * Create a no-op logger for testing
174
+ */
175
+ export function createNoOpLogger() {
176
+ return createLogger({ level: 'silent' });
177
+ }
178
+ /**
179
+ * Reset the global logger (for testing)
180
+ */
181
+ export function resetLogger() {
182
+ globalLogger = null;
183
+ }
184
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * VLD Logger\r\n *\r\n * This module provides a debug logging system for VLD,\r\n * compatible with @oxog/log when available.\r\n */\r\n\r\n/**\r\n * Log levels\r\n */\r\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';\r\n\r\n/**\r\n * Log level priorities (lower = more verbose)\r\n */\r\nconst LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n silent: 4\r\n};\r\n\r\n/**\r\n * Logger options\r\n */\r\nexport interface LoggerOptions {\r\n /** Logger name (appears in log output) */\r\n name?: string;\r\n /** Minimum log level to output */\r\n level?: LogLevel;\r\n /** Enable colored output (for terminals) */\r\n colored?: boolean;\r\n /** Enable timestamps in output */\r\n timestamps?: boolean;\r\n /** Custom log handler */\r\n handler?: LogHandler;\r\n}\r\n\r\n/**\r\n * Log entry\r\n */\r\nexport interface LogEntry {\r\n level: LogLevel;\r\n message: string;\r\n data?: unknown;\r\n timestamp: Date;\r\n name: string;\r\n}\r\n\r\n/**\r\n * Log handler function\r\n */\r\nexport type LogHandler = (entry: LogEntry) => void;\r\n\r\n/**\r\n * Logger interface\r\n */\r\nexport interface Logger {\r\n /** Log at debug level */\r\n debug(message: string, data?: unknown): void;\r\n /** Log at info level */\r\n info(message: string, data?: unknown): void;\r\n /** Log at warn level */\r\n warn(message: string, data?: unknown): void;\r\n /** Log at error level */\r\n error(message: string, data?: unknown): void;\r\n /** Check if level is enabled */\r\n isLevelEnabled(level: LogLevel): boolean;\r\n /** Set log level */\r\n setLevel(level: LogLevel): void;\r\n /** Get current level */\r\n getLevel(): LogLevel;\r\n /** Create a child logger with a new name */\r\n child(name: string): Logger;\r\n}\r\n\r\n/**\r\n * ANSI color codes for terminal output\r\n */\r\nconst COLORS = {\r\n reset: '\\x1b[0m',\r\n dim: '\\x1b[2m',\r\n red: '\\x1b[31m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n cyan: '\\x1b[36m',\r\n gray: '\\x1b[90m'\r\n};\r\n\r\n/**\r\n * Level colors\r\n */\r\nconst LEVEL_COLORS: Record<Exclude<LogLevel, 'silent'>, string> = {\r\n debug: COLORS.gray,\r\n info: COLORS.blue,\r\n warn: COLORS.yellow,\r\n error: COLORS.red\r\n};\r\n\r\n/**\r\n * Level labels\r\n */\r\nconst LEVEL_LABELS: Record<Exclude<LogLevel, 'silent'>, string> = {\r\n debug: 'DEBUG',\r\n info: 'INFO ',\r\n warn: 'WARN ',\r\n error: 'ERROR'\r\n};\r\n\r\n/**\r\n * Default log handler\r\n */\r\nfunction createDefaultHandler(options: LoggerOptions): LogHandler {\r\n const colored = options.colored ?? true;\r\n const timestamps = options.timestamps ?? true;\r\n\r\n return (entry: LogEntry) => {\r\n const parts: string[] = [];\r\n\r\n // Timestamp\r\n if (timestamps) {\r\n const time = entry.timestamp.toISOString().slice(11, 23);\r\n parts.push(colored ? `${COLORS.dim}${time}${COLORS.reset}` : time);\r\n }\r\n\r\n // Level\r\n const levelLabel = LEVEL_LABELS[entry.level as Exclude<LogLevel, 'silent'>];\r\n const levelColor = LEVEL_COLORS[entry.level as Exclude<LogLevel, 'silent'>];\r\n parts.push(colored ? `${levelColor}${levelLabel}${COLORS.reset}` : levelLabel);\r\n\r\n // Name\r\n parts.push(colored ? `${COLORS.cyan}[${entry.name}]${COLORS.reset}` : `[${entry.name}]`);\r\n\r\n // Message\r\n parts.push(entry.message);\r\n\r\n // Output\r\n const output = parts.join(' ');\r\n\r\n // Use appropriate console method\r\n switch (entry.level) {\r\n case 'debug':\r\n console.debug(output, entry.data !== undefined ? entry.data : '');\r\n break;\r\n case 'info':\r\n console.info(output, entry.data !== undefined ? entry.data : '');\r\n break;\r\n case 'warn':\r\n console.warn(output, entry.data !== undefined ? entry.data : '');\r\n break;\r\n case 'error':\r\n console.error(output, entry.data !== undefined ? entry.data : '');\r\n break;\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Create a logger instance\r\n */\r\nexport function createLogger(options: LoggerOptions = {}): Logger {\r\n const name = options.name ?? 'vld';\r\n let level = options.level ?? 'warn';\r\n const handler = options.handler ?? createDefaultHandler(options);\r\n\r\n const log = (logLevel: Exclude<LogLevel, 'silent'>, message: string, data?: unknown): void => {\r\n if (LOG_LEVEL_PRIORITY[logLevel] < LOG_LEVEL_PRIORITY[level]) {\r\n return;\r\n }\r\n\r\n const entry: LogEntry = {\r\n level: logLevel,\r\n message,\r\n data,\r\n timestamp: new Date(),\r\n name\r\n };\r\n\r\n handler(entry);\r\n };\r\n\r\n const logger: Logger = {\r\n debug: (message, data) => log('debug', message, data),\r\n info: (message, data) => log('info', message, data),\r\n warn: (message, data) => log('warn', message, data),\r\n error: (message, data) => log('error', message, data),\r\n\r\n isLevelEnabled: (checkLevel) =>\r\n LOG_LEVEL_PRIORITY[checkLevel] >= LOG_LEVEL_PRIORITY[level],\r\n\r\n setLevel: (newLevel) => {\r\n level = newLevel;\r\n },\r\n\r\n getLevel: () => level,\r\n\r\n child: (childName) =>\r\n createLogger({\r\n ...options,\r\n name: `${name}:${childName}`\r\n })\r\n };\r\n\r\n return logger;\r\n}\r\n\r\n// ============================================\r\n// Global Logger Management\r\n// ============================================\r\n\r\nlet globalLogger: Logger | null = null;\r\n\r\n/**\r\n * Initialize the global VLD logger\r\n */\r\nexport function initLogger(options?: LoggerOptions): Logger {\r\n globalLogger = createLogger({\r\n name: 'vld',\r\n ...options\r\n });\r\n return globalLogger;\r\n}\r\n\r\n/**\r\n * Get the global VLD logger\r\n * Returns null if not initialized\r\n */\r\nexport function getLogger(): Logger | null {\r\n return globalLogger;\r\n}\r\n\r\n/**\r\n * Set log level for the global logger\r\n */\r\nexport function setLogLevel(level: LogLevel): void {\r\n if (globalLogger) {\r\n globalLogger.setLevel(level);\r\n }\r\n}\r\n\r\n/**\r\n * Enable debug mode for VLD\r\n */\r\nexport function enableDebug(): void {\r\n if (!globalLogger) {\r\n initLogger({ level: 'debug' });\r\n } else {\r\n globalLogger.setLevel('debug');\r\n }\r\n}\r\n\r\n/**\r\n * Disable all VLD logging\r\n */\r\nexport function disableLogging(): void {\r\n if (globalLogger) {\r\n globalLogger.setLevel('silent');\r\n }\r\n}\r\n\r\n/**\r\n * Create a no-op logger for testing\r\n */\r\nexport function createNoOpLogger(): Logger {\r\n return createLogger({ level: 'silent' });\r\n}\r\n\r\n/**\r\n * Reset the global logger (for testing)\r\n */\r\nexport function resetLogger(): void {\r\n globalLogger = null;\r\n}\r\n"]}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * VLD Pigment - Colored Console Output
3
+ *
4
+ * This module provides ANSI color utilities for terminal output,
5
+ * compatible with @oxog/pigment when available.
6
+ */
7
+ /**
8
+ * Check if colors are supported in the current environment
9
+ */
10
+ export declare function supportsColor(): boolean;
11
+ /**
12
+ * Pigment - Color utilities for terminal output
13
+ */
14
+ export declare const pigment: {
15
+ supportsColor: typeof supportsColor;
16
+ reset: (text: string) => string;
17
+ bold: (text: string) => string;
18
+ dim: (text: string) => string;
19
+ italic: (text: string) => string;
20
+ underline: (text: string) => string;
21
+ inverse: (text: string) => string;
22
+ hidden: (text: string) => string;
23
+ strikethrough: (text: string) => string;
24
+ black: (text: string) => string;
25
+ red: (text: string) => string;
26
+ green: (text: string) => string;
27
+ yellow: (text: string) => string;
28
+ blue: (text: string) => string;
29
+ magenta: (text: string) => string;
30
+ cyan: (text: string) => string;
31
+ white: (text: string) => string;
32
+ gray: (text: string) => string;
33
+ grey: (text: string) => string;
34
+ brightRed: (text: string) => string;
35
+ brightGreen: (text: string) => string;
36
+ brightYellow: (text: string) => string;
37
+ brightBlue: (text: string) => string;
38
+ brightMagenta: (text: string) => string;
39
+ brightCyan: (text: string) => string;
40
+ brightWhite: (text: string) => string;
41
+ bgBlack: (text: string) => string;
42
+ bgRed: (text: string) => string;
43
+ bgGreen: (text: string) => string;
44
+ bgYellow: (text: string) => string;
45
+ bgBlue: (text: string) => string;
46
+ bgMagenta: (text: string) => string;
47
+ bgCyan: (text: string) => string;
48
+ bgWhite: (text: string) => string;
49
+ success: (text: string) => string;
50
+ error: (text: string) => string;
51
+ warning: (text: string) => string;
52
+ info: (text: string) => string;
53
+ muted: (text: string) => string;
54
+ combine: (...codes: string[]) => (text: string) => string;
55
+ strip: (text: string) => string;
56
+ codes: {
57
+ readonly reset: "\u001B[0m";
58
+ readonly bold: "\u001B[1m";
59
+ readonly dim: "\u001B[2m";
60
+ readonly italic: "\u001B[3m";
61
+ readonly underline: "\u001B[4m";
62
+ readonly blink: "\u001B[5m";
63
+ readonly inverse: "\u001B[7m";
64
+ readonly hidden: "\u001B[8m";
65
+ readonly strikethrough: "\u001B[9m";
66
+ readonly black: "\u001B[30m";
67
+ readonly red: "\u001B[31m";
68
+ readonly green: "\u001B[32m";
69
+ readonly yellow: "\u001B[33m";
70
+ readonly blue: "\u001B[34m";
71
+ readonly magenta: "\u001B[35m";
72
+ readonly cyan: "\u001B[36m";
73
+ readonly white: "\u001B[37m";
74
+ readonly gray: "\u001B[90m";
75
+ readonly grey: "\u001B[90m";
76
+ readonly brightRed: "\u001B[91m";
77
+ readonly brightGreen: "\u001B[92m";
78
+ readonly brightYellow: "\u001B[93m";
79
+ readonly brightBlue: "\u001B[94m";
80
+ readonly brightMagenta: "\u001B[95m";
81
+ readonly brightCyan: "\u001B[96m";
82
+ readonly brightWhite: "\u001B[97m";
83
+ readonly bgBlack: "\u001B[40m";
84
+ readonly bgRed: "\u001B[41m";
85
+ readonly bgGreen: "\u001B[42m";
86
+ readonly bgYellow: "\u001B[43m";
87
+ readonly bgBlue: "\u001B[44m";
88
+ readonly bgMagenta: "\u001B[45m";
89
+ readonly bgCyan: "\u001B[46m";
90
+ readonly bgWhite: "\u001B[47m";
91
+ readonly bgBrightRed: "\u001B[101m";
92
+ readonly bgBrightGreen: "\u001B[102m";
93
+ readonly bgBrightYellow: "\u001B[103m";
94
+ readonly bgBrightBlue: "\u001B[104m";
95
+ readonly bgBrightMagenta: "\u001B[105m";
96
+ readonly bgBrightCyan: "\u001B[106m";
97
+ readonly bgBrightWhite: "\u001B[107m";
98
+ };
99
+ };
100
+ export declare const bold: (text: string) => string, dim: (text: string) => string, italic: (text: string) => string, underline: (text: string) => string, red: (text: string) => string, green: (text: string) => string, yellow: (text: string) => string, blue: (text: string) => string, magenta: (text: string) => string, cyan: (text: string) => string, white: (text: string) => string, gray: (text: string) => string, grey: (text: string) => string, success: (text: string) => string, error: (text: string) => string, warning: (text: string) => string, info: (text: string) => string, muted: (text: string) => string, strip: (text: string) => string;
101
+ /**
102
+ * Create a custom theme
103
+ */
104
+ export interface Theme {
105
+ error: (text: string) => string;
106
+ success: (text: string) => string;
107
+ warning: (text: string) => string;
108
+ info: (text: string) => string;
109
+ muted: (text: string) => string;
110
+ path: (text: string) => string;
111
+ value: (text: string) => string;
112
+ key: (text: string) => string;
113
+ symbol: (text: string) => string;
114
+ }
115
+ /**
116
+ * Default VLD theme for error formatting
117
+ */
118
+ export declare const vldTheme: Theme;
119
+ /**
120
+ * Create a custom theme
121
+ */
122
+ export declare function createTheme(overrides?: Partial<Theme>): Theme;
123
+ export default pigment;
124
+ //# sourceMappingURL=pigment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pigment.d.ts","sourceRoot":"","sources":["../src/pigment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAsBvC;AAuED;;GAEG;AACH,eAAO,MAAM,OAAO;;kBAKJ,MAAM,KAAG,MAAM;iBAhBc,MAAM,KAAK,MAAM;gBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;sBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;0BAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;gBAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;sBAAjB,MAAM,KAAK,MAAM;wBAAjB,MAAM,KAAK,MAAM;yBAAjB,MAAM,KAAK,MAAM;uBAAjB,MAAM,KAAK,MAAM;0BAAjB,MAAM,KAAK,MAAM;uBAAjB,MAAM,KAAK,MAAM;wBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;qBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;sBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;oBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;kBAAjB,MAAM,KAAK,MAAM;wBAkExC,MAAM,EAAE,MACzB,MAAM,MAAM,KAAG,MAAM;kBAMV,MAAM,KAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ9B,CAAC;AAGF,eAAO,MACL,IAAI,SArFuC,MAAM,KAAK,MAAM,EAsF5D,GAAG,SAtFwC,MAAM,KAAK,MAAM,EAuF5D,MAAM,SAvFqC,MAAM,KAAK,MAAM,EAwF5D,SAAS,SAxFkC,MAAM,KAAK,MAAM,EAyF5D,GAAG,SAzFwC,MAAM,KAAK,MAAM,EA0F5D,KAAK,SA1FsC,MAAM,KAAK,MAAM,EA2F5D,MAAM,SA3FqC,MAAM,KAAK,MAAM,EA4F5D,IAAI,SA5FuC,MAAM,KAAK,MAAM,EA6F5D,OAAO,SA7FoC,MAAM,KAAK,MAAM,EA8F5D,IAAI,SA9FuC,MAAM,KAAK,MAAM,EA+F5D,KAAK,SA/FsC,MAAM,KAAK,MAAM,EAgG5D,IAAI,SAhGuC,MAAM,KAAK,MAAM,EAiG5D,IAAI,SAjGuC,MAAM,KAAK,MAAM,EAkG5D,OAAO,SAlGoC,MAAM,KAAK,MAAM,EAmG5D,KAAK,SAnGsC,MAAM,KAAK,MAAM,EAoG5D,OAAO,SApGoC,MAAM,KAAK,MAAM,EAqG5D,IAAI,SArGuC,MAAM,KAAK,MAAM,EAsG5D,KAAK,SAtGsC,MAAM,KAAK,MAAM,EAuG5D,KAAK,SA9BS,MAAM,KAAG,MA+Bd,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAEjE;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * VLD Pigment - Colored Console Output
3
+ *
4
+ * This module provides ANSI color utilities for terminal output,
5
+ * compatible with @oxog/pigment when available.
6
+ */
7
+ /* eslint-enable @typescript-eslint/no-explicit-any */
8
+ /**
9
+ * Check if colors are supported in the current environment
10
+ */
11
+ export function supportsColor() {
12
+ // Check for NO_COLOR environment variable
13
+ if (typeof process !== 'undefined' && process.env?.NO_COLOR) {
14
+ return false;
15
+ }
16
+ // Check for FORCE_COLOR environment variable
17
+ if (typeof process !== 'undefined' && process.env?.FORCE_COLOR) {
18
+ return true;
19
+ }
20
+ // Check for TTY
21
+ if (typeof process !== 'undefined' && process.stdout?.isTTY) {
22
+ return true;
23
+ }
24
+ // Browser environment - no ANSI colors
25
+ if (typeof window !== 'undefined') {
26
+ return false;
27
+ }
28
+ return false;
29
+ }
30
+ /**
31
+ * ANSI escape codes
32
+ */
33
+ const ANSI = {
34
+ // Reset
35
+ reset: '\x1b[0m',
36
+ // Styles
37
+ bold: '\x1b[1m',
38
+ dim: '\x1b[2m',
39
+ italic: '\x1b[3m',
40
+ underline: '\x1b[4m',
41
+ blink: '\x1b[5m',
42
+ inverse: '\x1b[7m',
43
+ hidden: '\x1b[8m',
44
+ strikethrough: '\x1b[9m',
45
+ // Foreground colors
46
+ black: '\x1b[30m',
47
+ red: '\x1b[31m',
48
+ green: '\x1b[32m',
49
+ yellow: '\x1b[33m',
50
+ blue: '\x1b[34m',
51
+ magenta: '\x1b[35m',
52
+ cyan: '\x1b[36m',
53
+ white: '\x1b[37m',
54
+ gray: '\x1b[90m',
55
+ grey: '\x1b[90m',
56
+ // Bright foreground colors
57
+ brightRed: '\x1b[91m',
58
+ brightGreen: '\x1b[92m',
59
+ brightYellow: '\x1b[93m',
60
+ brightBlue: '\x1b[94m',
61
+ brightMagenta: '\x1b[95m',
62
+ brightCyan: '\x1b[96m',
63
+ brightWhite: '\x1b[97m',
64
+ // Background colors
65
+ bgBlack: '\x1b[40m',
66
+ bgRed: '\x1b[41m',
67
+ bgGreen: '\x1b[42m',
68
+ bgYellow: '\x1b[43m',
69
+ bgBlue: '\x1b[44m',
70
+ bgMagenta: '\x1b[45m',
71
+ bgCyan: '\x1b[46m',
72
+ bgWhite: '\x1b[47m',
73
+ // Bright background colors
74
+ bgBrightRed: '\x1b[101m',
75
+ bgBrightGreen: '\x1b[102m',
76
+ bgBrightYellow: '\x1b[103m',
77
+ bgBrightBlue: '\x1b[104m',
78
+ bgBrightMagenta: '\x1b[105m',
79
+ bgBrightCyan: '\x1b[106m',
80
+ bgBrightWhite: '\x1b[107m'
81
+ };
82
+ /**
83
+ * Create a color function
84
+ */
85
+ function createColorFn(code) {
86
+ const enabled = supportsColor();
87
+ return (text) => {
88
+ if (!enabled || text === '')
89
+ return text;
90
+ return `${code}${text}${ANSI.reset}`;
91
+ };
92
+ }
93
+ /**
94
+ * Pigment - Color utilities for terminal output
95
+ */
96
+ export const pigment = {
97
+ // Check support
98
+ supportsColor,
99
+ // Reset
100
+ reset: (text) => text,
101
+ // Styles
102
+ bold: createColorFn(ANSI.bold),
103
+ dim: createColorFn(ANSI.dim),
104
+ italic: createColorFn(ANSI.italic),
105
+ underline: createColorFn(ANSI.underline),
106
+ inverse: createColorFn(ANSI.inverse),
107
+ hidden: createColorFn(ANSI.hidden),
108
+ strikethrough: createColorFn(ANSI.strikethrough),
109
+ // Foreground colors
110
+ black: createColorFn(ANSI.black),
111
+ red: createColorFn(ANSI.red),
112
+ green: createColorFn(ANSI.green),
113
+ yellow: createColorFn(ANSI.yellow),
114
+ blue: createColorFn(ANSI.blue),
115
+ magenta: createColorFn(ANSI.magenta),
116
+ cyan: createColorFn(ANSI.cyan),
117
+ white: createColorFn(ANSI.white),
118
+ gray: createColorFn(ANSI.gray),
119
+ grey: createColorFn(ANSI.grey),
120
+ // Bright colors
121
+ brightRed: createColorFn(ANSI.brightRed),
122
+ brightGreen: createColorFn(ANSI.brightGreen),
123
+ brightYellow: createColorFn(ANSI.brightYellow),
124
+ brightBlue: createColorFn(ANSI.brightBlue),
125
+ brightMagenta: createColorFn(ANSI.brightMagenta),
126
+ brightCyan: createColorFn(ANSI.brightCyan),
127
+ brightWhite: createColorFn(ANSI.brightWhite),
128
+ // Background colors
129
+ bgBlack: createColorFn(ANSI.bgBlack),
130
+ bgRed: createColorFn(ANSI.bgRed),
131
+ bgGreen: createColorFn(ANSI.bgGreen),
132
+ bgYellow: createColorFn(ANSI.bgYellow),
133
+ bgBlue: createColorFn(ANSI.bgBlue),
134
+ bgMagenta: createColorFn(ANSI.bgMagenta),
135
+ bgCyan: createColorFn(ANSI.bgCyan),
136
+ bgWhite: createColorFn(ANSI.bgWhite),
137
+ // Semantic colors
138
+ success: createColorFn(ANSI.green),
139
+ error: createColorFn(ANSI.red),
140
+ warning: createColorFn(ANSI.yellow),
141
+ info: createColorFn(ANSI.blue),
142
+ muted: createColorFn(ANSI.gray),
143
+ // Combine multiple styles
144
+ combine: (...codes) => (text) => {
145
+ if (!supportsColor())
146
+ return text;
147
+ return `${codes.join('')}${text}${ANSI.reset}`;
148
+ },
149
+ // Strip ANSI codes from string
150
+ strip: (text) => text.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''),
151
+ // Get raw ANSI codes
152
+ codes: ANSI
153
+ };
154
+ // Aliases for convenience
155
+ export const { bold, dim, italic, underline, red, green, yellow, blue, magenta, cyan, white, gray, grey, success, error, warning, info, muted, strip } = pigment;
156
+ /**
157
+ * Default VLD theme for error formatting
158
+ */
159
+ export const vldTheme = {
160
+ error: red,
161
+ success: green,
162
+ warning: yellow,
163
+ info: blue,
164
+ muted: dim,
165
+ path: cyan,
166
+ value: yellow,
167
+ key: bold,
168
+ symbol: red
169
+ };
170
+ /**
171
+ * Create a custom theme
172
+ */
173
+ export function createTheme(overrides = {}) {
174
+ return { ...vldTheme, ...overrides };
175
+ }
176
+ export default pigment;
177
+ //# sourceMappingURL=pigment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pigment.js","sourceRoot":"","sources":["../src/pigment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,sDAAsD;AAEtD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,0CAA0C;IAC1C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,IAAI,GAAG;IACX,QAAQ;IACR,KAAK,EAAE,SAAS;IAEhB,SAAS;IACT,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IAExB,oBAAoB;IACpB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAEhB,2BAA2B;IAC3B,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IAEvB,oBAAoB;IACpB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;IAEnB,2BAA2B;IAC3B,WAAW,EAAE,WAAW;IACxB,aAAa,EAAE,WAAW;IAC1B,cAAc,EAAE,WAAW;IAC3B,YAAY,EAAE,WAAW;IACzB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,WAAW;IACzB,aAAa,EAAE,WAAW;CAClB,CAAC;AAEX;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,IAAY,EAAU,EAAE;QAC9B,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,gBAAgB;IAChB,aAAa;IAEb,QAAQ;IACR,KAAK,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI;IAErC,SAAS;IACT,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;IAEhD,oBAAoB;IACpB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAE9B,gBAAgB;IAChB,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5C,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;IAC9C,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;IAChD,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;IAE5C,oBAAoB;IACpB,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IAEpC,kBAAkB;IAClB,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAE/B,0BAA0B;IAC1B,OAAO,EAAE,CAAC,GAAG,KAAe,EAAE,EAAE,CAC9B,CAAC,IAAY,EAAU,EAAE;QACvB,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAEH,+BAA+B;IAC/B,KAAK,EAAE,CAAC,IAAY,EAAU,EAAE,CAC9B,IAAI,CAAC,OAAO,CACV,6EAA6E,EAC7E,EAAE,CACH;IAEH,qBAAqB;IACrB,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,EACX,IAAI,EACJ,GAAG,EACH,MAAM,EACN,SAAS,EACT,GAAG,EACH,KAAK,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,EACL,KAAK,EACN,GAAG,OAAO,CAAC;AAiBZ;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,YAA4B,EAAE;IACxD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAED,eAAe,OAAO,CAAC","sourcesContent":["/**\r\n * VLD Pigment - Colored Console Output\r\n *\r\n * This module provides ANSI color utilities for terminal output,\r\n * compatible with @oxog/pigment when available.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\ndeclare const window: any;\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\r\n\r\n/**\r\n * Check if colors are supported in the current environment\r\n */\r\nexport function supportsColor(): boolean {\r\n // Check for NO_COLOR environment variable\r\n if (typeof process !== 'undefined' && process.env?.NO_COLOR) {\r\n return false;\r\n }\r\n\r\n // Check for FORCE_COLOR environment variable\r\n if (typeof process !== 'undefined' && process.env?.FORCE_COLOR) {\r\n return true;\r\n }\r\n\r\n // Check for TTY\r\n if (typeof process !== 'undefined' && process.stdout?.isTTY) {\r\n return true;\r\n }\r\n\r\n // Browser environment - no ANSI colors\r\n if (typeof window !== 'undefined') {\r\n return false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * ANSI escape codes\r\n */\r\nconst ANSI = {\r\n // Reset\r\n reset: '\\x1b[0m',\r\n\r\n // Styles\r\n bold: '\\x1b[1m',\r\n dim: '\\x1b[2m',\r\n italic: '\\x1b[3m',\r\n underline: '\\x1b[4m',\r\n blink: '\\x1b[5m',\r\n inverse: '\\x1b[7m',\r\n hidden: '\\x1b[8m',\r\n strikethrough: '\\x1b[9m',\r\n\r\n // Foreground colors\r\n black: '\\x1b[30m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n magenta: '\\x1b[35m',\r\n cyan: '\\x1b[36m',\r\n white: '\\x1b[37m',\r\n gray: '\\x1b[90m',\r\n grey: '\\x1b[90m',\r\n\r\n // Bright foreground colors\r\n brightRed: '\\x1b[91m',\r\n brightGreen: '\\x1b[92m',\r\n brightYellow: '\\x1b[93m',\r\n brightBlue: '\\x1b[94m',\r\n brightMagenta: '\\x1b[95m',\r\n brightCyan: '\\x1b[96m',\r\n brightWhite: '\\x1b[97m',\r\n\r\n // Background colors\r\n bgBlack: '\\x1b[40m',\r\n bgRed: '\\x1b[41m',\r\n bgGreen: '\\x1b[42m',\r\n bgYellow: '\\x1b[43m',\r\n bgBlue: '\\x1b[44m',\r\n bgMagenta: '\\x1b[45m',\r\n bgCyan: '\\x1b[46m',\r\n bgWhite: '\\x1b[47m',\r\n\r\n // Bright background colors\r\n bgBrightRed: '\\x1b[101m',\r\n bgBrightGreen: '\\x1b[102m',\r\n bgBrightYellow: '\\x1b[103m',\r\n bgBrightBlue: '\\x1b[104m',\r\n bgBrightMagenta: '\\x1b[105m',\r\n bgBrightCyan: '\\x1b[106m',\r\n bgBrightWhite: '\\x1b[107m'\r\n} as const;\r\n\r\n/**\r\n * Create a color function\r\n */\r\nfunction createColorFn(code: string): (text: string) => string {\r\n const enabled = supportsColor();\r\n return (text: string): string => {\r\n if (!enabled || text === '') return text;\r\n return `${code}${text}${ANSI.reset}`;\r\n };\r\n}\r\n\r\n/**\r\n * Pigment - Color utilities for terminal output\r\n */\r\nexport const pigment = {\r\n // Check support\r\n supportsColor,\r\n\r\n // Reset\r\n reset: (text: string): string => text,\r\n\r\n // Styles\r\n bold: createColorFn(ANSI.bold),\r\n dim: createColorFn(ANSI.dim),\r\n italic: createColorFn(ANSI.italic),\r\n underline: createColorFn(ANSI.underline),\r\n inverse: createColorFn(ANSI.inverse),\r\n hidden: createColorFn(ANSI.hidden),\r\n strikethrough: createColorFn(ANSI.strikethrough),\r\n\r\n // Foreground colors\r\n black: createColorFn(ANSI.black),\r\n red: createColorFn(ANSI.red),\r\n green: createColorFn(ANSI.green),\r\n yellow: createColorFn(ANSI.yellow),\r\n blue: createColorFn(ANSI.blue),\r\n magenta: createColorFn(ANSI.magenta),\r\n cyan: createColorFn(ANSI.cyan),\r\n white: createColorFn(ANSI.white),\r\n gray: createColorFn(ANSI.gray),\r\n grey: createColorFn(ANSI.grey),\r\n\r\n // Bright colors\r\n brightRed: createColorFn(ANSI.brightRed),\r\n brightGreen: createColorFn(ANSI.brightGreen),\r\n brightYellow: createColorFn(ANSI.brightYellow),\r\n brightBlue: createColorFn(ANSI.brightBlue),\r\n brightMagenta: createColorFn(ANSI.brightMagenta),\r\n brightCyan: createColorFn(ANSI.brightCyan),\r\n brightWhite: createColorFn(ANSI.brightWhite),\r\n\r\n // Background colors\r\n bgBlack: createColorFn(ANSI.bgBlack),\r\n bgRed: createColorFn(ANSI.bgRed),\r\n bgGreen: createColorFn(ANSI.bgGreen),\r\n bgYellow: createColorFn(ANSI.bgYellow),\r\n bgBlue: createColorFn(ANSI.bgBlue),\r\n bgMagenta: createColorFn(ANSI.bgMagenta),\r\n bgCyan: createColorFn(ANSI.bgCyan),\r\n bgWhite: createColorFn(ANSI.bgWhite),\r\n\r\n // Semantic colors\r\n success: createColorFn(ANSI.green),\r\n error: createColorFn(ANSI.red),\r\n warning: createColorFn(ANSI.yellow),\r\n info: createColorFn(ANSI.blue),\r\n muted: createColorFn(ANSI.gray),\r\n\r\n // Combine multiple styles\r\n combine: (...codes: string[]) =>\r\n (text: string): string => {\r\n if (!supportsColor()) return text;\r\n return `${codes.join('')}${text}${ANSI.reset}`;\r\n },\r\n\r\n // Strip ANSI codes from string\r\n strip: (text: string): string =>\r\n text.replace(\r\n /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\r\n ''\r\n ),\r\n\r\n // Get raw ANSI codes\r\n codes: ANSI\r\n};\r\n\r\n// Aliases for convenience\r\nexport const {\r\n bold,\r\n dim,\r\n italic,\r\n underline,\r\n red,\r\n green,\r\n yellow,\r\n blue,\r\n magenta,\r\n cyan,\r\n white,\r\n gray,\r\n grey,\r\n success,\r\n error,\r\n warning,\r\n info,\r\n muted,\r\n strip\r\n} = pigment;\r\n\r\n/**\r\n * Create a custom theme\r\n */\r\nexport interface Theme {\r\n error: (text: string) => string;\r\n success: (text: string) => string;\r\n warning: (text: string) => string;\r\n info: (text: string) => string;\r\n muted: (text: string) => string;\r\n path: (text: string) => string;\r\n value: (text: string) => string;\r\n key: (text: string) => string;\r\n symbol: (text: string) => string;\r\n}\r\n\r\n/**\r\n * Default VLD theme for error formatting\r\n */\r\nexport const vldTheme: Theme = {\r\n error: red,\r\n success: green,\r\n warning: yellow,\r\n info: blue,\r\n muted: dim,\r\n path: cyan,\r\n value: yellow,\r\n key: bold,\r\n symbol: red\r\n};\r\n\r\n/**\r\n * Create a custom theme\r\n */\r\nexport function createTheme(overrides: Partial<Theme> = {}): Theme {\r\n return { ...vldTheme, ...overrides };\r\n}\r\n\r\nexport default pigment;\r\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Codecs Plugin
3
+ *
4
+ * Bu plugin tüm built-in codec'leri içerir.
5
+ * Bidirectional data transformation için kullanılır.
6
+ */
7
+ import type { ValidatorPlugin } from './types.js';
8
+ /**
9
+ * Codecs Plugin
10
+ *
11
+ * Bu plugin codec'leri kernel'a kaydeder.
12
+ * Codec'ler doğrudan VldCodec olarak export edildiği için,
13
+ * bu plugin sadece metadata ve lifecycle yönetimi sağlar.
14
+ */
15
+ export declare const codecsPlugin: ValidatorPlugin;
16
+ export default codecsPlugin;
17
+ //# sourceMappingURL=codecs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../src/plugins/codecs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,eAe1B,CAAC;AAEF,eAAe,YAAY,CAAC"}