@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.
- package/CHANGELOG.md +333 -284
- package/README.md +13 -12
- package/dist/cli/benchmark.d.ts +15 -0
- package/dist/cli/benchmark.d.ts.map +1 -0
- package/dist/cli/benchmark.js +248 -0
- package/dist/cli/benchmark.js.map +1 -0
- package/dist/cli/bin.d.ts +8 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +35 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/benchmark.d.ts +11 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +204 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +11 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +157 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/generate.d.ts +14 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +233 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +59 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +182 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/validate.d.ts +15 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +162 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/codecs/index.d.ts.map +1 -1
- package/dist/codecs/index.js +29 -10
- package/dist/codecs/index.js.map +1 -1
- package/dist/coercion/bigint.js +1 -1
- package/dist/coercion/boolean.d.ts.map +1 -1
- package/dist/coercion/boolean.js +24 -32
- package/dist/coercion/boolean.js.map +1 -1
- package/dist/coercion/date.js +2 -2
- package/dist/coercion/date.js.map +1 -1
- package/dist/coercion/number.d.ts.map +1 -1
- package/dist/coercion/number.js +20 -4
- package/dist/coercion/number.js.map +1 -1
- package/dist/coercion/string.d.ts.map +1 -1
- package/dist/coercion/string.js +9 -73
- package/dist/coercion/string.js.map +1 -1
- package/dist/compat/emitter.d.ts +73 -0
- package/dist/compat/emitter.d.ts.map +1 -0
- package/dist/compat/emitter.js +179 -0
- package/dist/compat/emitter.js.map +1 -0
- package/dist/compat/index.d.ts +15 -0
- package/dist/compat/index.d.ts.map +1 -0
- package/dist/compat/index.js +14 -0
- package/dist/compat/index.js.map +1 -0
- package/dist/compat/result.d.ts +128 -0
- package/dist/compat/result.d.ts.map +1 -0
- package/dist/compat/result.js +169 -0
- package/dist/compat/result.js.map +1 -0
- package/dist/errors.d.ts +58 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +97 -9
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +140 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +8 -0
- package/dist/events.js.map +1 -0
- package/dist/guards.d.ts +143 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +238 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +606 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +105 -6
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +29 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +402 -0
- package/dist/kernel.js.map +1 -0
- package/dist/locales/af.d.ts.map +1 -1
- package/dist/locales/af.js +18 -1
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.d.ts.map +1 -1
- package/dist/locales/ar.js +18 -1
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/backup-en.d.ts +3 -0
- package/dist/locales/backup-en.d.ts.map +1 -0
- package/dist/locales/backup-en.js +105 -0
- package/dist/locales/backup-en.js.map +1 -0
- package/dist/locales/bn.d.ts.map +1 -1
- package/dist/locales/bn.js +18 -1
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.d.ts.map +1 -1
- package/dist/locales/da.js +18 -1
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.d.ts.map +1 -1
- package/dist/locales/de.js +18 -1
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/en.js +18 -1
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.d.ts.map +1 -1
- package/dist/locales/es-MX.js +17 -1
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.d.ts.map +1 -1
- package/dist/locales/es.js +18 -1
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.d.ts.map +1 -1
- package/dist/locales/fi.js +18 -1
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.d.ts.map +1 -1
- package/dist/locales/fr.js +18 -1
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.d.ts.map +1 -1
- package/dist/locales/hi.js +18 -1
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.d.ts.map +1 -1
- package/dist/locales/id.js +18 -1
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/it.d.ts.map +1 -1
- package/dist/locales/it.js +18 -1
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.d.ts.map +1 -1
- package/dist/locales/ja.js +18 -1
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.d.ts.map +1 -1
- package/dist/locales/ko.js +18 -1
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/nl.d.ts.map +1 -1
- package/dist/locales/nl.js +18 -1
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.d.ts.map +1 -1
- package/dist/locales/no.js +18 -1
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.d.ts.map +1 -1
- package/dist/locales/pl.js +18 -1
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.d.ts.map +1 -1
- package/dist/locales/pt-BR.js +18 -1
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.d.ts.map +1 -1
- package/dist/locales/pt.js +18 -1
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.d.ts.map +1 -1
- package/dist/locales/ru.js +18 -1
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.d.ts.map +1 -1
- package/dist/locales/sv.js +18 -1
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.d.ts.map +1 -1
- package/dist/locales/sw.js +18 -1
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.d.ts.map +1 -1
- package/dist/locales/th.js +18 -1
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.d.ts.map +1 -1
- package/dist/locales/tr.js +18 -1
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/types.d.ts +13 -0
- package/dist/locales/types.d.ts.map +1 -1
- package/dist/locales/types.js.map +1 -1
- package/dist/locales/vi.d.ts.map +1 -1
- package/dist/locales/vi.js +18 -1
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.d.ts.map +1 -1
- package/dist/locales/zh.js +18 -1
- package/dist/locales/zh.js.map +1 -1
- package/dist/logger.d.ts +94 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +184 -0
- package/dist/logger.js.map +1 -0
- package/dist/pigment.d.ts +124 -0
- package/dist/pigment.d.ts.map +1 -0
- package/dist/pigment.js +177 -0
- package/dist/pigment.js.map +1 -0
- package/dist/plugins/codecs.d.ts +17 -0
- package/dist/plugins/codecs.d.ts.map +1 -0
- package/dist/plugins/codecs.js +29 -0
- package/dist/plugins/codecs.js.map +1 -0
- package/dist/plugins/coercion.d.ts +13 -0
- package/dist/plugins/coercion.d.ts.map +1 -0
- package/dist/plugins/coercion.js +34 -0
- package/dist/plugins/coercion.js.map +1 -0
- package/dist/plugins/core-validators.d.ts +13 -0
- package/dist/plugins/core-validators.d.ts.map +1 -0
- package/dist/plugins/core-validators.js +96 -0
- package/dist/plugins/core-validators.js.map +1 -0
- package/dist/plugins/index.d.ts +8 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +8 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/kernel.d.ts +29 -0
- package/dist/plugins/kernel.d.ts.map +1 -0
- package/dist/plugins/kernel.js +486 -0
- package/dist/plugins/kernel.js.map +1 -0
- package/dist/plugins/types.d.ts +186 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +8 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/style.d.ts +123 -0
- package/dist/style.d.ts.map +1 -0
- package/dist/style.js +369 -0
- package/dist/style.js.map +1 -0
- package/dist/utils/codec-utils.d.ts +2 -0
- package/dist/utils/codec-utils.d.ts.map +1 -1
- package/dist/utils/codec-utils.js +28 -4
- package/dist/utils/codec-utils.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +2 -0
- package/dist/utils/deep-merge.d.ts.map +1 -1
- package/dist/utils/deep-merge.js +22 -39
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/utils/ip-validation.d.ts +11 -0
- package/dist/utils/ip-validation.d.ts.map +1 -0
- package/dist/utils/ip-validation.js +98 -0
- package/dist/utils/ip-validation.js.map +1 -0
- package/dist/utils/security.d.ts +12 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +61 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/validators/array.d.ts +3 -1
- package/dist/validators/array.d.ts.map +1 -1
- package/dist/validators/array.js +41 -15
- package/dist/validators/array.js.map +1 -1
- package/dist/validators/base.d.ts +134 -0
- package/dist/validators/base.d.ts.map +1 -1
- package/dist/validators/base.js +255 -1
- package/dist/validators/base.js.map +1 -1
- package/dist/validators/base64.js +1 -1
- package/dist/validators/bigint.d.ts +20 -0
- package/dist/validators/bigint.d.ts.map +1 -1
- package/dist/validators/bigint.js +39 -1
- package/dist/validators/bigint.js.map +1 -1
- package/dist/validators/boolean.js +29 -1
- package/dist/validators/boolean.js.map +1 -1
- package/dist/validators/codec.js +1 -1
- package/dist/validators/custom.d.ts +47 -0
- package/dist/validators/custom.d.ts.map +1 -0
- package/dist/validators/custom.js +50 -0
- package/dist/validators/custom.js.map +1 -0
- package/dist/validators/date.d.ts +16 -0
- package/dist/validators/date.d.ts.map +1 -1
- package/dist/validators/date.js +62 -7
- package/dist/validators/date.js.map +1 -1
- package/dist/validators/discriminated-union.d.ts +29 -0
- package/dist/validators/discriminated-union.d.ts.map +1 -0
- package/dist/validators/discriminated-union.js +98 -0
- package/dist/validators/discriminated-union.js.map +1 -0
- package/dist/validators/enum.d.ts +10 -0
- package/dist/validators/enum.d.ts.map +1 -1
- package/dist/validators/enum.js +38 -1
- package/dist/validators/enum.js.map +1 -1
- package/dist/validators/file.d.ts +57 -0
- package/dist/validators/file.d.ts.map +1 -0
- package/dist/validators/file.js +114 -0
- package/dist/validators/file.js.map +1 -0
- package/dist/validators/function.d.ts +26 -0
- package/dist/validators/function.d.ts.map +1 -0
- package/dist/validators/function.js +45 -0
- package/dist/validators/function.js.map +1 -0
- package/dist/validators/hex.d.ts.map +1 -1
- package/dist/validators/hex.js +3 -2
- package/dist/validators/hex.js.map +1 -1
- package/dist/validators/index.d.ts +18 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +16 -1
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/intersection.d.ts.map +1 -1
- package/dist/validators/intersection.js +15 -8
- package/dist/validators/intersection.js.map +1 -1
- package/dist/validators/json.d.ts +26 -0
- package/dist/validators/json.d.ts.map +1 -0
- package/dist/validators/json.js +64 -0
- package/dist/validators/json.js.map +1 -0
- package/dist/validators/lazy.d.ts +28 -0
- package/dist/validators/lazy.d.ts.map +1 -0
- package/dist/validators/lazy.js +42 -0
- package/dist/validators/lazy.js.map +1 -0
- package/dist/validators/literal.js +1 -1
- package/dist/validators/map.js +1 -1
- package/dist/validators/nan.d.ts +17 -0
- package/dist/validators/nan.d.ts.map +1 -0
- package/dist/validators/nan.js +32 -0
- package/dist/validators/nan.js.map +1 -0
- package/dist/validators/never.js +1 -1
- package/dist/validators/null.d.ts +16 -0
- package/dist/validators/null.d.ts.map +1 -0
- package/dist/validators/null.js +31 -0
- package/dist/validators/null.js.map +1 -0
- package/dist/validators/number.d.ts +22 -0
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/number.js +47 -8
- package/dist/validators/number.js.map +1 -1
- package/dist/validators/object.d.ts +32 -0
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/object.js +125 -8
- package/dist/validators/object.js.map +1 -1
- package/dist/validators/record.d.ts +15 -2
- package/dist/validators/record.d.ts.map +1 -1
- package/dist/validators/record.js +74 -4
- package/dist/validators/record.js.map +1 -1
- package/dist/validators/set.js +1 -1
- package/dist/validators/string-bool.d.ts +61 -0
- package/dist/validators/string-bool.d.ts.map +1 -0
- package/dist/validators/string-bool.js +127 -0
- package/dist/validators/string-bool.js.map +1 -0
- package/dist/validators/string-formats.d.ts +97 -0
- package/dist/validators/string-formats.d.ts.map +1 -0
- package/dist/validators/string-formats.js +120 -0
- package/dist/validators/string-formats.js.map +1 -0
- package/dist/validators/string.d.ts.map +1 -1
- package/dist/validators/string.js +2 -73
- package/dist/validators/string.js.map +1 -1
- package/dist/validators/symbol.js +1 -1
- package/dist/validators/template-literal.d.ts +32 -0
- package/dist/validators/template-literal.d.ts.map +1 -0
- package/dist/validators/template-literal.js +102 -0
- package/dist/validators/template-literal.js.map +1 -0
- package/dist/validators/tuple.js +1 -1
- package/dist/validators/uint8array.d.ts +21 -4
- package/dist/validators/uint8array.d.ts.map +1 -1
- package/dist/validators/uint8array.js +34 -23
- package/dist/validators/uint8array.js.map +1 -1
- package/dist/validators/undefined.d.ts +16 -0
- package/dist/validators/undefined.d.ts.map +1 -0
- package/dist/validators/undefined.js +31 -0
- package/dist/validators/undefined.js.map +1 -0
- package/dist/validators/union.d.ts +2 -0
- package/dist/validators/union.d.ts.map +1 -1
- package/dist/validators/union.js +15 -21
- package/dist/validators/union.js.map +1 -1
- package/dist/validators/void.js +1 -1
- package/dist/validators/xor.d.ts +23 -0
- package/dist/validators/xor.d.ts.map +1 -0
- package/dist/validators/xor.js +64 -0
- package/dist/validators/xor.js.map +1 -0
- package/package.json +95 -79
package/dist/logger.d.ts
ADDED
|
@@ -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":"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"}
|
package/dist/pigment.js
ADDED
|
@@ -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":"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","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"}
|