@oxog/vld 1.5.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +116 -0
- package/README.md +558 -517
- package/dist/chunks/bigint-ZKkWLdmi.js +1628 -0
- package/dist/chunks/bigint-ZKkWLdmi.js.map +1 -0
- package/dist/{coercion/string.js → chunks/date-7Iz2BGsL.js} +271 -5
- package/dist/chunks/date-7Iz2BGsL.js.map +1 -0
- package/dist/chunks/index-BoV-4S1F.js +894 -0
- package/dist/chunks/index-BoV-4S1F.js.map +1 -0
- package/dist/chunks/index-eWXdjyyy.js +426 -0
- package/dist/chunks/index-eWXdjyyy.js.map +1 -0
- package/dist/chunks/json-nIhyRPOU.js +1934 -0
- package/dist/chunks/json-nIhyRPOU.js.map +1 -0
- package/dist/{validators/unknown.js → chunks/unknown-CjSRcELI.js} +6 -3
- package/dist/chunks/unknown-CjSRcELI.js.map +1 -0
- package/dist/cjs/errors.cjs +387 -0
- package/dist/cjs/errors.cjs.map +1 -0
- package/dist/cjs/index.cjs +9815 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/locales/index.cjs +2877 -0
- package/dist/cjs/locales/index.cjs.map +1 -0
- package/dist/cjs/locales/lazy.cjs +3169 -0
- package/dist/cjs/locales/lazy.cjs.map +1 -0
- package/dist/cjs/mini.cjs +7161 -0
- package/dist/cjs/mini.cjs.map +1 -0
- package/dist/codecs/index.js +4 -275
- package/dist/codecs/index.js.map +1 -1
- package/dist/coercion/index.d.ts +11 -0
- package/dist/coercion/index.d.ts.map +1 -0
- package/dist/coercion/{bigint.js → index.js} +7 -4
- package/dist/coercion/index.js.map +1 -0
- package/dist/compat/emitter.js +6 -4
- package/dist/compat/emitter.js.map +1 -1
- package/dist/compat/result.js +21 -19
- package/dist/compat/result.js.map +1 -1
- package/dist/errors.js +13 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.js +225 -126
- package/dist/index.js.map +1 -1
- package/dist/kernel.js +10 -7
- package/dist/kernel.js.map +1 -1
- package/dist/locales/af.js +4 -2
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.js +4 -2
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/bn.js +4 -2
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.js +4 -2
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.js +4 -2
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.js +4 -2
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.js +4 -2
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.js +4 -2
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.js +4 -2
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.js +4 -2
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.js +4 -2
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.js +4 -2
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/index.js +3 -91
- package/dist/locales/index.js.map +1 -1
- package/dist/locales/it.js +4 -2
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.js +4 -2
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +4 -2
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/lazy.d.ts +111 -0
- package/dist/locales/lazy.d.ts.map +1 -0
- package/dist/locales/lazy.js +220 -0
- package/dist/locales/lazy.js.map +1 -0
- package/dist/locales/nl.js +4 -2
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.js +4 -2
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.js +4 -2
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.js +4 -2
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.js +4 -2
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.js +4 -2
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.js +4 -2
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.js +4 -2
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.js +4 -2
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.js +4 -2
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/vi.js +4 -2
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.js +4 -2
- package/dist/locales/zh.js.map +1 -1
- package/dist/mini.d.ts +182 -0
- package/dist/mini.d.ts.map +1 -0
- package/dist/mini.js +132 -0
- package/dist/mini.js.map +1 -0
- package/dist/pigment.js +8 -7
- package/dist/pigment.js.map +1 -1
- package/dist/validators/index.js +5 -45
- package/dist/validators/index.js.map +1 -1
- package/package.json +69 -11
- package/dist/cli/benchmark.d.ts +0 -15
- package/dist/cli/benchmark.d.ts.map +0 -1
- package/dist/cli/benchmark.js +0 -248
- package/dist/cli/benchmark.js.map +0 -1
- package/dist/cli/bin.js +0 -35
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/commands/benchmark.js +0 -204
- package/dist/cli/commands/benchmark.js.map +0 -1
- package/dist/cli/commands/validate.js +0 -157
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -14
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -233
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/index.js +0 -182
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/validate.d.ts +0 -15
- package/dist/cli/validate.d.ts.map +0 -1
- package/dist/cli/validate.js +0 -162
- package/dist/cli/validate.js.map +0 -1
- package/dist/coercion/bigint.js.map +0 -1
- package/dist/coercion/boolean.js +0 -59
- package/dist/coercion/boolean.js.map +0 -1
- package/dist/coercion/date.js +0 -52
- package/dist/coercion/date.js.map +0 -1
- package/dist/coercion/number.js +0 -160
- package/dist/coercion/number.js.map +0 -1
- package/dist/coercion/string.js.map +0 -1
- package/dist/compat/index.js +0 -14
- package/dist/compat/index.js.map +0 -1
- package/dist/events.js +0 -8
- package/dist/events.js.map +0 -1
- package/dist/guards.d.ts +0 -143
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -238
- package/dist/guards.js.map +0 -1
- package/dist/index-new.d.ts.map +0 -1
- package/dist/locales/backup-en.js +0 -105
- package/dist/locales/backup-en.js.map +0 -1
- package/dist/locales/types.js +0 -2
- package/dist/locales/types.js.map +0 -1
- package/dist/locales.d.ts +0 -54
- package/dist/locales.d.ts.map +0 -1
- package/dist/locales.js +0 -732
- package/dist/locales.js.map +0 -1
- package/dist/logger.js +0 -184
- package/dist/logger.js.map +0 -1
- package/dist/plugins/codecs.d.ts +0 -17
- package/dist/plugins/codecs.d.ts.map +0 -1
- package/dist/plugins/codecs.js +0 -29
- package/dist/plugins/codecs.js.map +0 -1
- package/dist/plugins/coercion.d.ts +0 -13
- package/dist/plugins/coercion.d.ts.map +0 -1
- package/dist/plugins/coercion.js +0 -34
- package/dist/plugins/coercion.js.map +0 -1
- package/dist/plugins/core-validators.d.ts +0 -13
- package/dist/plugins/core-validators.d.ts.map +0 -1
- package/dist/plugins/core-validators.js +0 -96
- package/dist/plugins/core-validators.js.map +0 -1
- package/dist/plugins/index.js +0 -8
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/kernel.d.ts +0 -29
- package/dist/plugins/kernel.d.ts.map +0 -1
- package/dist/plugins/kernel.js +0 -486
- package/dist/plugins/kernel.js.map +0 -1
- package/dist/plugins/types.js +0 -8
- package/dist/plugins/types.js.map +0 -1
- package/dist/style.d.ts +0 -123
- package/dist/style.d.ts.map +0 -1
- package/dist/style.js +0 -369
- package/dist/style.js.map +0 -1
- package/dist/utils/codec-utils.js +0 -229
- package/dist/utils/codec-utils.js.map +0 -1
- package/dist/utils/deep-merge.js +0 -76
- package/dist/utils/deep-merge.js.map +0 -1
- package/dist/utils/ip-validation.js +0 -98
- package/dist/utils/ip-validation.js.map +0 -1
- package/dist/utils/security.js +0 -61
- package/dist/utils/security.js.map +0 -1
- package/dist/validators/any.js +0 -25
- package/dist/validators/any.js.map +0 -1
- package/dist/validators/array.js +0 -190
- package/dist/validators/array.js.map +0 -1
- package/dist/validators/base.js +0 -499
- package/dist/validators/base.js.map +0 -1
- package/dist/validators/base64.js +0 -65
- package/dist/validators/base64.js.map +0 -1
- package/dist/validators/bigint.js +0 -142
- package/dist/validators/bigint.js.map +0 -1
- package/dist/validators/boolean.js +0 -114
- package/dist/validators/boolean.js.map +0 -1
- package/dist/validators/codec.js +0 -182
- package/dist/validators/codec.js.map +0 -1
- package/dist/validators/custom.js +0 -50
- package/dist/validators/custom.js.map +0 -1
- package/dist/validators/date.js +0 -227
- package/dist/validators/date.js.map +0 -1
- package/dist/validators/discriminated-union.js +0 -98
- package/dist/validators/discriminated-union.js.map +0 -1
- package/dist/validators/enum.js +0 -82
- package/dist/validators/enum.js.map +0 -1
- package/dist/validators/file.js +0 -114
- package/dist/validators/file.js.map +0 -1
- package/dist/validators/function.js +0 -45
- package/dist/validators/function.js.map +0 -1
- package/dist/validators/hex.js +0 -62
- package/dist/validators/hex.js.map +0 -1
- package/dist/validators/intersection.js +0 -64
- package/dist/validators/intersection.js.map +0 -1
- package/dist/validators/json.js +0 -64
- package/dist/validators/json.js.map +0 -1
- package/dist/validators/lazy.js +0 -42
- package/dist/validators/lazy.js.map +0 -1
- package/dist/validators/literal.js +0 -45
- package/dist/validators/literal.js.map +0 -1
- package/dist/validators/map.js +0 -54
- package/dist/validators/map.js.map +0 -1
- package/dist/validators/nan.js +0 -32
- package/dist/validators/nan.js.map +0 -1
- package/dist/validators/never.js +0 -29
- package/dist/validators/never.js.map +0 -1
- package/dist/validators/null.js +0 -31
- package/dist/validators/null.js.map +0 -1
- package/dist/validators/number.js +0 -225
- package/dist/validators/number.js.map +0 -1
- package/dist/validators/object-optimized.d.ts +0 -23
- package/dist/validators/object-optimized.d.ts.map +0 -1
- package/dist/validators/object-optimized.js +0 -179
- package/dist/validators/object-optimized.js.map +0 -1
- package/dist/validators/object-ultra.d.ts +0 -34
- package/dist/validators/object-ultra.d.ts.map +0 -1
- package/dist/validators/object-ultra.js +0 -175
- package/dist/validators/object-ultra.js.map +0 -1
- package/dist/validators/object.js +0 -458
- package/dist/validators/object.js.map +0 -1
- package/dist/validators/record.js +0 -128
- package/dist/validators/record.js.map +0 -1
- package/dist/validators/set.js +0 -51
- package/dist/validators/set.js.map +0 -1
- package/dist/validators/string-bool.js +0 -127
- package/dist/validators/string-bool.js.map +0 -1
- package/dist/validators/string-formats.js +0 -120
- package/dist/validators/string-formats.js.map +0 -1
- package/dist/validators/string-ultra.d.ts +0 -49
- package/dist/validators/string-ultra.d.ts.map +0 -1
- package/dist/validators/string-ultra.js +0 -217
- package/dist/validators/string-ultra.js.map +0 -1
- package/dist/validators/string.js +0 -253
- package/dist/validators/string.js.map +0 -1
- package/dist/validators/symbol.js +0 -42
- package/dist/validators/symbol.js.map +0 -1
- package/dist/validators/template-literal.js +0 -102
- package/dist/validators/template-literal.js.map +0 -1
- package/dist/validators/tuple.js +0 -55
- package/dist/validators/tuple.js.map +0 -1
- package/dist/validators/uint8array.js +0 -98
- package/dist/validators/uint8array.js.map +0 -1
- package/dist/validators/undefined.js +0 -31
- package/dist/validators/undefined.js.map +0 -1
- package/dist/validators/union-optimized.d.ts +0 -15
- package/dist/validators/union-optimized.d.ts.map +0 -1
- package/dist/validators/union-optimized.js +0 -92
- package/dist/validators/union-optimized.js.map +0 -1
- package/dist/validators/union.js +0 -126
- package/dist/validators/union.js.map +0 -1
- package/dist/validators/unknown.js.map +0 -1
- package/dist/validators/void.js +0 -35
- package/dist/validators/void.js.map +0 -1
- package/dist/validators/xor.js +0 -64
- package/dist/validators/xor.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","
|
|
1
|
+
{"version":3,"file":"result.js","sources":["../../src/compat/result.ts"],"sourcesContent":["/**\r\n * Result Pattern Implementation\r\n *\r\n * This module provides a Result type for functional error handling,\r\n * compatible with @oxog/types when available.\r\n */\r\n\r\nimport type { VldError } from '../errors';\r\n\r\n/**\r\n * Success result type\r\n */\r\nexport interface Ok<T> {\r\n readonly success: true;\r\n readonly data: T;\r\n readonly value: T; // Alias for @oxog/types compatibility\r\n readonly error?: never;\r\n}\r\n\r\n/**\r\n * Error result type\r\n */\r\nexport interface Err<E = Error> {\r\n readonly success: false;\r\n readonly error: E;\r\n readonly data?: never;\r\n readonly value?: never;\r\n}\r\n\r\n/**\r\n * Result type - Either success with data or failure with error\r\n */\r\nexport type Result<T, E = Error> = Ok<T> | Err<E>;\r\n\r\n/**\r\n * VLD-specific Result type with VldError\r\n */\r\nexport type VldResult<T> = Result<T, VldError>;\r\n\r\n/**\r\n * Create a success result\r\n */\r\nexport function Ok<T>(data: T): Ok<T> {\r\n return { success: true, data, value: data };\r\n}\r\n\r\n/**\r\n * Create an error result\r\n */\r\nexport function Err<E = Error>(error: E): Err<E> {\r\n return { success: false, error };\r\n}\r\n\r\n/**\r\n * Create a success result (alias)\r\n */\r\nexport const success = Ok;\r\n\r\n/**\r\n * Create a failure result (alias)\r\n */\r\nexport const failure = Err;\r\n\r\n/**\r\n * Check if result is Ok\r\n */\r\nexport function isOk<T, E>(result: Result<T, E>): result is Ok<T> {\r\n return result.success === true;\r\n}\r\n\r\n/**\r\n * Check if result is Err\r\n */\r\nexport function isErr<T, E>(result: Result<T, E>): result is Err<E> {\r\n return result.success === false;\r\n}\r\n\r\n/**\r\n * Check if value is a Result\r\n */\r\nexport function isResult<T, E>(value: unknown): value is Result<T, E> {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n 'success' in value &&\r\n typeof (value as Result<T, E>).success === 'boolean'\r\n );\r\n}\r\n\r\n/**\r\n * Unwrap a result, throwing the error if it's an Err\r\n */\r\nexport function unwrap<T, E extends Error>(result: Result<T, E>): T {\r\n if (isOk(result)) {\r\n return result.data;\r\n }\r\n throw result.error;\r\n}\r\n\r\n/**\r\n * Unwrap a result with a default value\r\n */\r\nexport function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T {\r\n if (isOk(result)) {\r\n return result.data;\r\n }\r\n return defaultValue;\r\n}\r\n\r\n/**\r\n * Map over a successful result\r\n */\r\nexport function map<T, U, E>(result: Result<T, E>, fn: (value: T) => U): Result<U, E> {\r\n if (isOk(result)) {\r\n return Ok(fn(result.data));\r\n }\r\n return result as Err<E>;\r\n}\r\n\r\n/**\r\n * Map over an error result\r\n */\r\nexport function mapErr<T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F> {\r\n if (isErr(result)) {\r\n return Err(fn(result.error));\r\n }\r\n return result as Ok<T>;\r\n}\r\n\r\n/**\r\n * Chain results (flatMap)\r\n */\r\nexport function flatMap<T, U, E>(\r\n result: Result<T, E>,\r\n fn: (value: T) => Result<U, E>\r\n): Result<U, E> {\r\n if (isOk(result)) {\r\n return fn(result.data);\r\n }\r\n return result as Err<E>;\r\n}\r\n\r\n/**\r\n * Pattern match on a result\r\n */\r\nexport function match<T, E, U>(\r\n result: Result<T, E>,\r\n handlers: {\r\n ok: (value: T) => U;\r\n err: (error: E) => U;\r\n }\r\n): U {\r\n if (isOk(result)) {\r\n return handlers.ok(result.data);\r\n }\r\n return handlers.err(result.error);\r\n}\r\n\r\n/**\r\n * Try to execute a function and wrap the result\r\n */\r\nexport function tryCatch<T>(fn: () => T): Result<T, Error> {\r\n try {\r\n return Ok(fn());\r\n } catch (error) {\r\n return Err(error instanceof Error ? error : new Error(String(error)));\r\n }\r\n}\r\n\r\n/**\r\n * Try to execute an async function and wrap the result\r\n */\r\nexport async function tryCatchAsync<T>(fn: () => Promise<T>): Promise<Result<T, Error>> {\r\n try {\r\n return Ok(await fn());\r\n } catch (error) {\r\n return Err(error instanceof Error ? error : new Error(String(error)));\r\n }\r\n}\r\n\r\n/**\r\n * Combine multiple results into a single result\r\n * Returns Ok with array of values if all succeed, Err with first error otherwise\r\n */\r\nexport function all<T, E>(results: Result<T, E>[]): Result<T[], E> {\r\n const values: T[] = [];\r\n\r\n for (const result of results) {\r\n if (isErr(result)) {\r\n return result;\r\n }\r\n values.push(result.data);\r\n }\r\n\r\n return Ok(values);\r\n}\r\n\r\n/**\r\n * Convert a nullable value to a Result\r\n */\r\nexport function fromNullable<T>(\r\n value: T | null | undefined,\r\n error: Error = new Error('Value is null or undefined')\r\n): Result<T, Error> {\r\n if (value === null || value === undefined) {\r\n return Err(error);\r\n }\r\n return Ok(value);\r\n}\r\n\r\n/**\r\n * Result utilities namespace\r\n */\r\nexport const ResultUtils = {\r\n Ok,\r\n Err,\r\n success,\r\n failure,\r\n isOk,\r\n isErr,\r\n isResult,\r\n unwrap,\r\n unwrapOr,\r\n map,\r\n mapErr,\r\n flatMap,\r\n match,\r\n tryCatch,\r\n tryCatchAsync,\r\n all,\r\n fromNullable\r\n};\r\n"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// VLD Error System - Advanced error formatting and utilities
|
|
2
1
|
import { vldTheme } from './pigment.js';
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
// VLD Error System - Advanced error formatting and utilities
|
|
4
|
+
class VldError extends Error {
|
|
4
5
|
constructor(issues) {
|
|
5
6
|
const message = issues.length === 1 ? issues[0].message : `${issues.length} validation errors`;
|
|
6
7
|
super(message);
|
|
@@ -68,7 +69,7 @@ export class VldError extends Error {
|
|
|
68
69
|
/**
|
|
69
70
|
* Convert VldError to a nested tree structure
|
|
70
71
|
*/
|
|
71
|
-
|
|
72
|
+
function treeifyError(error) {
|
|
72
73
|
const tree = { errors: [] };
|
|
73
74
|
for (const issue of error.issues) {
|
|
74
75
|
let currentNode = tree;
|
|
@@ -121,7 +122,7 @@ export function treeifyError(error) {
|
|
|
121
122
|
/**
|
|
122
123
|
* Convert VldError to human-readable string
|
|
123
124
|
*/
|
|
124
|
-
|
|
125
|
+
function prettifyError(error, options = {}) {
|
|
125
126
|
const { colored = true, theme = vldTheme, includeCode = false, includeDetails = false } = options;
|
|
126
127
|
const lines = [];
|
|
127
128
|
for (const issue of error.issues) {
|
|
@@ -174,20 +175,20 @@ export function prettifyError(error, options = {}) {
|
|
|
174
175
|
* Convert VldError to human-readable string with full colors
|
|
175
176
|
* Shorthand for prettifyError with colored: true
|
|
176
177
|
*/
|
|
177
|
-
|
|
178
|
+
function prettifyErrorColored(error, options = {}) {
|
|
178
179
|
return prettifyError(error, { ...options, colored: true });
|
|
179
180
|
}
|
|
180
181
|
/**
|
|
181
182
|
* Convert VldError to plain text string (no colors)
|
|
182
183
|
* Shorthand for prettifyError with colored: false
|
|
183
184
|
*/
|
|
184
|
-
|
|
185
|
+
function prettifyErrorPlain(error, options = {}) {
|
|
185
186
|
return prettifyError(error, { ...options, colored: false });
|
|
186
187
|
}
|
|
187
188
|
/**
|
|
188
189
|
* Flatten VldError for simple form validation
|
|
189
190
|
*/
|
|
190
|
-
|
|
191
|
+
function flattenError(error) {
|
|
191
192
|
const formErrors = [];
|
|
192
193
|
const fieldErrors = {};
|
|
193
194
|
for (const issue of error.issues) {
|
|
@@ -207,7 +208,7 @@ export function flattenError(error) {
|
|
|
207
208
|
/**
|
|
208
209
|
* Create a validation issue
|
|
209
210
|
*/
|
|
210
|
-
|
|
211
|
+
function createIssue(code, path, message, extra) {
|
|
211
212
|
return {
|
|
212
213
|
code,
|
|
213
214
|
path: [...path],
|
|
@@ -218,7 +219,7 @@ export function createIssue(code, path, message, extra) {
|
|
|
218
219
|
/**
|
|
219
220
|
* Helper to determine the type of a value for error messages
|
|
220
221
|
*/
|
|
221
|
-
|
|
222
|
+
function getValueType(value) {
|
|
222
223
|
if (value === null)
|
|
223
224
|
return 'null';
|
|
224
225
|
if (value === undefined)
|
|
@@ -229,4 +230,6 @@ export function getValueType(value) {
|
|
|
229
230
|
return 'date';
|
|
230
231
|
return typeof value;
|
|
231
232
|
}
|
|
232
|
-
|
|
233
|
+
|
|
234
|
+
export { VldError, createIssue, flattenError, getValueType, prettifyError, prettifyErrorColored, prettifyErrorPlain, treeifyError };
|
|
235
|
+
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["// VLD Error System - Advanced error formatting and utilities\r\n\r\nimport { type Theme, vldTheme } from './pigment';\r\n\r\nexport type VldErrorCode =\r\n | 'invalid_type'\r\n | 'invalid_string'\r\n | 'string_too_small'\r\n | 'string_too_big'\r\n | 'invalid_email'\r\n | 'invalid_url'\r\n | 'invalid_uuid'\r\n | 'invalid_regex'\r\n | 'invalid_number'\r\n | 'too_small'\r\n | 'too_big'\r\n | 'not_integer'\r\n | 'not_finite'\r\n | 'not_safe'\r\n | 'invalid_boolean'\r\n | 'invalid_date'\r\n | 'invalid_array'\r\n | 'invalid_object'\r\n | 'unrecognized_keys'\r\n | 'invalid_union'\r\n | 'invalid_literal'\r\n | 'invalid_enum'\r\n | 'custom';\r\n\r\nexport interface VldIssue {\r\n code: VldErrorCode;\r\n path: (string | number)[];\r\n message: string;\r\n expected?: string;\r\n received?: string;\r\n keys?: string[];\r\n minimum?: number;\r\n maximum?: number;\r\n exact?: number;\r\n inclusive?: boolean;\r\n}\r\n\r\nexport class VldError extends Error {\r\n public readonly issues: VldIssue[];\r\n\r\n constructor(issues: VldIssue[]) {\r\n const message =\r\n issues.length === 1 ? issues[0].message : `${issues.length} validation errors`;\r\n\r\n super(message);\r\n this.name = 'VldError';\r\n this.issues = issues;\r\n\r\n // Maintain proper stack trace\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, VldError);\r\n }\r\n }\r\n\r\n get firstError(): VldIssue | undefined {\r\n return this.issues[0];\r\n }\r\n\r\n get formattedErrors(): string[] {\r\n return this.issues.map((issue) => issue.message);\r\n }\r\n\r\n /**\r\n * Convert error to JSON representation\r\n * Compatible with @oxog/types OxogError\r\n */\r\n toJSON(): VldErrorJSON {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n code: 'VLD_VALIDATION_ERROR',\r\n issues: this.issues.map((issue) => ({\r\n code: issue.code,\r\n path: issue.path,\r\n message: issue.message,\r\n expected: issue.expected,\r\n received: issue.received,\r\n keys: issue.keys,\r\n minimum: issue.minimum,\r\n maximum: issue.maximum,\r\n exact: issue.exact,\r\n inclusive: issue.inclusive\r\n }))\r\n };\r\n }\r\n\r\n /**\r\n * Create VldError from JSON representation\r\n */\r\n static fromJSON(json: VldErrorJSON): VldError {\r\n const issues: VldIssue[] = json.issues.map((issue) => ({\r\n code: issue.code as VldErrorCode,\r\n path: issue.path,\r\n message: issue.message,\r\n expected: issue.expected,\r\n received: issue.received,\r\n keys: issue.keys,\r\n minimum: issue.minimum,\r\n maximum: issue.maximum,\r\n exact: issue.exact,\r\n inclusive: issue.inclusive\r\n }));\r\n return new VldError(issues);\r\n }\r\n\r\n /**\r\n * Check if a value is a VldError\r\n */\r\n static isVldError(value: unknown): value is VldError {\r\n return value instanceof VldError;\r\n }\r\n}\r\n\r\n/**\r\n * JSON representation of VldError\r\n */\r\nexport interface VldErrorJSON {\r\n name: string;\r\n message: string;\r\n code: string;\r\n issues: Array<{\r\n code: string;\r\n path: (string | number)[];\r\n message: string;\r\n expected?: string;\r\n received?: string;\r\n keys?: string[];\r\n minimum?: number;\r\n maximum?: number;\r\n exact?: number;\r\n inclusive?: boolean;\r\n }>;\r\n}\r\n\r\n// Error tree structure for nested validation\r\nexport interface VldErrorTree {\r\n errors: string[];\r\n properties?: Record<string, VldErrorTree>;\r\n items?: (VldErrorTree | undefined)[];\r\n}\r\n\r\n// Flattened error structure for simple forms\r\nexport interface VldFlattenedError {\r\n formErrors: string[];\r\n fieldErrors: Record<string, string[]>;\r\n}\r\n\r\n/**\r\n * Convert VldError to a nested tree structure\r\n */\r\nexport function treeifyError(error: VldError): VldErrorTree {\r\n const tree: VldErrorTree = { errors: [] };\r\n\r\n for (const issue of error.issues) {\r\n let currentNode = tree;\r\n const path = issue.path;\r\n\r\n // Navigate to the correct position in the tree\r\n for (let i = 0; i < path.length; i++) {\r\n const segment = path[i];\r\n const isLast = i === path.length - 1;\r\n\r\n if (typeof segment === 'string') {\r\n // Object property\r\n if (!currentNode.properties) {\r\n currentNode.properties = {};\r\n }\r\n \r\n if (!currentNode.properties[segment]) {\r\n currentNode.properties[segment] = { errors: [] };\r\n }\r\n \r\n if (isLast) {\r\n currentNode.properties[segment].errors.push(issue.message);\r\n } else {\r\n currentNode = currentNode.properties[segment];\r\n }\r\n } else if (typeof segment === 'number') {\r\n // Array index\r\n if (!currentNode.items) {\r\n currentNode.items = [];\r\n }\r\n \r\n while (currentNode.items.length <= segment) {\r\n currentNode.items.push(undefined);\r\n }\r\n \r\n if (!currentNode.items[segment]) {\r\n currentNode.items[segment] = { errors: [] };\r\n }\r\n \r\n if (isLast) {\r\n currentNode.items[segment]!.errors.push(issue.message);\r\n } else {\r\n currentNode = currentNode.items[segment]!;\r\n }\r\n }\r\n }\r\n\r\n // If path is empty, add to root errors\r\n if (path.length === 0) {\r\n tree.errors.push(issue.message);\r\n }\r\n }\r\n\r\n return tree;\r\n}\r\n\r\n/**\r\n * Prettify error options\r\n */\r\nexport interface PrettifyOptions {\r\n /** Enable colored output */\r\n colored?: boolean;\r\n /** Custom theme for colors */\r\n theme?: Theme;\r\n /** Include error code in output */\r\n includeCode?: boolean;\r\n /** Include expected/received values */\r\n includeDetails?: boolean;\r\n}\r\n\r\n/**\r\n * Convert VldError to human-readable string\r\n */\r\nexport function prettifyError(error: VldError, options: PrettifyOptions = {}): string {\r\n const { colored = true, theme = vldTheme, includeCode = false, includeDetails = false } =\r\n options;\r\n\r\n const lines: string[] = [];\r\n\r\n for (const issue of error.issues) {\r\n // Symbol and message\r\n const symbol = colored ? theme.symbol('✖') : '✖';\r\n const message = colored ? theme.error(issue.message) : issue.message;\r\n let line = `${symbol} ${message}`;\r\n\r\n // Error code\r\n if (includeCode) {\r\n const code = colored ? theme.muted(`[${issue.code}]`) : `[${issue.code}]`;\r\n line += ` ${code}`;\r\n }\r\n\r\n // Path\r\n if (issue.path.length > 0) {\r\n const pathStr = issue.path\r\n .map((segment, index) => {\r\n if (typeof segment === 'string') {\r\n const str = index === 0 ? segment : `.${segment}`;\r\n return colored ? theme.path(str) : str;\r\n } else {\r\n const str = `[${segment}]`;\r\n return colored ? theme.path(str) : str;\r\n }\r\n })\r\n .join('');\r\n\r\n const arrow = colored ? theme.muted('→ at ') : '→ at ';\r\n line += `\\n ${arrow}${pathStr}`;\r\n }\r\n\r\n // Details\r\n if (includeDetails) {\r\n if (issue.expected) {\r\n const expected = colored\r\n ? theme.muted('expected: ') + theme.success(issue.expected)\r\n : `expected: ${issue.expected}`;\r\n line += `\\n ${expected}`;\r\n }\r\n if (issue.received) {\r\n const received = colored\r\n ? theme.muted('received: ') + theme.warning(issue.received)\r\n : `received: ${issue.received}`;\r\n line += `\\n ${received}`;\r\n }\r\n }\r\n\r\n lines.push(line);\r\n }\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Convert VldError to human-readable string with full colors\r\n * Shorthand for prettifyError with colored: true\r\n */\r\nexport function prettifyErrorColored(error: VldError, options: Omit<PrettifyOptions, 'colored'> = {}): string {\r\n return prettifyError(error, { ...options, colored: true });\r\n}\r\n\r\n/**\r\n * Convert VldError to plain text string (no colors)\r\n * Shorthand for prettifyError with colored: false\r\n */\r\nexport function prettifyErrorPlain(error: VldError, options: Omit<PrettifyOptions, 'colored'> = {}): string {\r\n return prettifyError(error, { ...options, colored: false });\r\n}\r\n\r\n/**\r\n * Flatten VldError for simple form validation\r\n */\r\nexport function flattenError(error: VldError): VldFlattenedError {\r\n const formErrors: string[] = [];\r\n const fieldErrors: Record<string, string[]> = {};\r\n\r\n for (const issue of error.issues) {\r\n if (issue.path.length === 0) {\r\n formErrors.push(issue.message);\r\n } else {\r\n const fieldName = issue.path[0].toString();\r\n if (!fieldErrors[fieldName]) {\r\n fieldErrors[fieldName] = [];\r\n }\r\n fieldErrors[fieldName].push(issue.message);\r\n }\r\n }\r\n\r\n return { formErrors, fieldErrors };\r\n}\r\n\r\n/**\r\n * Create a validation issue\r\n */\r\nexport function createIssue(\r\n code: VldErrorCode,\r\n path: (string | number)[],\r\n message: string,\r\n extra?: Partial<VldIssue>\r\n): VldIssue {\r\n return {\r\n code,\r\n path: [...path],\r\n message,\r\n ...extra\r\n };\r\n}\r\n\r\n/**\r\n * Helper to determine the type of a value for error messages\r\n */\r\nexport function getValueType(value: unknown): string {\r\n if (value === null) return 'null';\r\n if (value === undefined) return 'undefined';\r\n if (Array.isArray(value)) return 'array';\r\n if (value instanceof Date) return 'date';\r\n return typeof value;\r\n}"]}
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../src/errors.ts"],"sourcesContent":["// VLD Error System - Advanced error formatting and utilities\r\n\r\nimport { type Theme, vldTheme } from './pigment';\r\n\r\nexport type VldErrorCode =\r\n | 'invalid_type'\r\n | 'invalid_string'\r\n | 'string_too_small'\r\n | 'string_too_big'\r\n | 'invalid_email'\r\n | 'invalid_url'\r\n | 'invalid_uuid'\r\n | 'invalid_regex'\r\n | 'invalid_number'\r\n | 'too_small'\r\n | 'too_big'\r\n | 'not_integer'\r\n | 'not_finite'\r\n | 'not_safe'\r\n | 'invalid_boolean'\r\n | 'invalid_date'\r\n | 'invalid_array'\r\n | 'invalid_object'\r\n | 'unrecognized_keys'\r\n | 'invalid_union'\r\n | 'invalid_literal'\r\n | 'invalid_enum'\r\n | 'custom';\r\n\r\nexport interface VldIssue {\r\n code: VldErrorCode;\r\n path: (string | number)[];\r\n message: string;\r\n expected?: string;\r\n received?: string;\r\n keys?: string[];\r\n minimum?: number;\r\n maximum?: number;\r\n exact?: number;\r\n inclusive?: boolean;\r\n}\r\n\r\nexport class VldError extends Error {\r\n public readonly issues: VldIssue[];\r\n\r\n constructor(issues: VldIssue[]) {\r\n const message =\r\n issues.length === 1 ? issues[0].message : `${issues.length} validation errors`;\r\n\r\n super(message);\r\n this.name = 'VldError';\r\n this.issues = issues;\r\n\r\n // Maintain proper stack trace\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, VldError);\r\n }\r\n }\r\n\r\n get firstError(): VldIssue | undefined {\r\n return this.issues[0];\r\n }\r\n\r\n get formattedErrors(): string[] {\r\n return this.issues.map((issue) => issue.message);\r\n }\r\n\r\n /**\r\n * Convert error to JSON representation\r\n * Compatible with @oxog/types OxogError\r\n */\r\n toJSON(): VldErrorJSON {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n code: 'VLD_VALIDATION_ERROR',\r\n issues: this.issues.map((issue) => ({\r\n code: issue.code,\r\n path: issue.path,\r\n message: issue.message,\r\n expected: issue.expected,\r\n received: issue.received,\r\n keys: issue.keys,\r\n minimum: issue.minimum,\r\n maximum: issue.maximum,\r\n exact: issue.exact,\r\n inclusive: issue.inclusive\r\n }))\r\n };\r\n }\r\n\r\n /**\r\n * Create VldError from JSON representation\r\n */\r\n static fromJSON(json: VldErrorJSON): VldError {\r\n const issues: VldIssue[] = json.issues.map((issue) => ({\r\n code: issue.code as VldErrorCode,\r\n path: issue.path,\r\n message: issue.message,\r\n expected: issue.expected,\r\n received: issue.received,\r\n keys: issue.keys,\r\n minimum: issue.minimum,\r\n maximum: issue.maximum,\r\n exact: issue.exact,\r\n inclusive: issue.inclusive\r\n }));\r\n return new VldError(issues);\r\n }\r\n\r\n /**\r\n * Check if a value is a VldError\r\n */\r\n static isVldError(value: unknown): value is VldError {\r\n return value instanceof VldError;\r\n }\r\n}\r\n\r\n/**\r\n * JSON representation of VldError\r\n */\r\nexport interface VldErrorJSON {\r\n name: string;\r\n message: string;\r\n code: string;\r\n issues: Array<{\r\n code: string;\r\n path: (string | number)[];\r\n message: string;\r\n expected?: string;\r\n received?: string;\r\n keys?: string[];\r\n minimum?: number;\r\n maximum?: number;\r\n exact?: number;\r\n inclusive?: boolean;\r\n }>;\r\n}\r\n\r\n// Error tree structure for nested validation\r\nexport interface VldErrorTree {\r\n errors: string[];\r\n properties?: Record<string, VldErrorTree>;\r\n items?: (VldErrorTree | undefined)[];\r\n}\r\n\r\n// Flattened error structure for simple forms\r\nexport interface VldFlattenedError {\r\n formErrors: string[];\r\n fieldErrors: Record<string, string[]>;\r\n}\r\n\r\n/**\r\n * Convert VldError to a nested tree structure\r\n */\r\nexport function treeifyError(error: VldError): VldErrorTree {\r\n const tree: VldErrorTree = { errors: [] };\r\n\r\n for (const issue of error.issues) {\r\n let currentNode = tree;\r\n const path = issue.path;\r\n\r\n // Navigate to the correct position in the tree\r\n for (let i = 0; i < path.length; i++) {\r\n const segment = path[i];\r\n const isLast = i === path.length - 1;\r\n\r\n if (typeof segment === 'string') {\r\n // Object property\r\n if (!currentNode.properties) {\r\n currentNode.properties = {};\r\n }\r\n \r\n if (!currentNode.properties[segment]) {\r\n currentNode.properties[segment] = { errors: [] };\r\n }\r\n \r\n if (isLast) {\r\n currentNode.properties[segment].errors.push(issue.message);\r\n } else {\r\n currentNode = currentNode.properties[segment];\r\n }\r\n } else if (typeof segment === 'number') {\r\n // Array index\r\n if (!currentNode.items) {\r\n currentNode.items = [];\r\n }\r\n \r\n while (currentNode.items.length <= segment) {\r\n currentNode.items.push(undefined);\r\n }\r\n \r\n if (!currentNode.items[segment]) {\r\n currentNode.items[segment] = { errors: [] };\r\n }\r\n \r\n if (isLast) {\r\n currentNode.items[segment]!.errors.push(issue.message);\r\n } else {\r\n currentNode = currentNode.items[segment]!;\r\n }\r\n }\r\n }\r\n\r\n // If path is empty, add to root errors\r\n if (path.length === 0) {\r\n tree.errors.push(issue.message);\r\n }\r\n }\r\n\r\n return tree;\r\n}\r\n\r\n/**\r\n * Prettify error options\r\n */\r\nexport interface PrettifyOptions {\r\n /** Enable colored output */\r\n colored?: boolean;\r\n /** Custom theme for colors */\r\n theme?: Theme;\r\n /** Include error code in output */\r\n includeCode?: boolean;\r\n /** Include expected/received values */\r\n includeDetails?: boolean;\r\n}\r\n\r\n/**\r\n * Convert VldError to human-readable string\r\n */\r\nexport function prettifyError(error: VldError, options: PrettifyOptions = {}): string {\r\n const { colored = true, theme = vldTheme, includeCode = false, includeDetails = false } =\r\n options;\r\n\r\n const lines: string[] = [];\r\n\r\n for (const issue of error.issues) {\r\n // Symbol and message\r\n const symbol = colored ? theme.symbol('✖') : '✖';\r\n const message = colored ? theme.error(issue.message) : issue.message;\r\n let line = `${symbol} ${message}`;\r\n\r\n // Error code\r\n if (includeCode) {\r\n const code = colored ? theme.muted(`[${issue.code}]`) : `[${issue.code}]`;\r\n line += ` ${code}`;\r\n }\r\n\r\n // Path\r\n if (issue.path.length > 0) {\r\n const pathStr = issue.path\r\n .map((segment, index) => {\r\n if (typeof segment === 'string') {\r\n const str = index === 0 ? segment : `.${segment}`;\r\n return colored ? theme.path(str) : str;\r\n } else {\r\n const str = `[${segment}]`;\r\n return colored ? theme.path(str) : str;\r\n }\r\n })\r\n .join('');\r\n\r\n const arrow = colored ? theme.muted('→ at ') : '→ at ';\r\n line += `\\n ${arrow}${pathStr}`;\r\n }\r\n\r\n // Details\r\n if (includeDetails) {\r\n if (issue.expected) {\r\n const expected = colored\r\n ? theme.muted('expected: ') + theme.success(issue.expected)\r\n : `expected: ${issue.expected}`;\r\n line += `\\n ${expected}`;\r\n }\r\n if (issue.received) {\r\n const received = colored\r\n ? theme.muted('received: ') + theme.warning(issue.received)\r\n : `received: ${issue.received}`;\r\n line += `\\n ${received}`;\r\n }\r\n }\r\n\r\n lines.push(line);\r\n }\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Convert VldError to human-readable string with full colors\r\n * Shorthand for prettifyError with colored: true\r\n */\r\nexport function prettifyErrorColored(error: VldError, options: Omit<PrettifyOptions, 'colored'> = {}): string {\r\n return prettifyError(error, { ...options, colored: true });\r\n}\r\n\r\n/**\r\n * Convert VldError to plain text string (no colors)\r\n * Shorthand for prettifyError with colored: false\r\n */\r\nexport function prettifyErrorPlain(error: VldError, options: Omit<PrettifyOptions, 'colored'> = {}): string {\r\n return prettifyError(error, { ...options, colored: false });\r\n}\r\n\r\n/**\r\n * Flatten VldError for simple form validation\r\n */\r\nexport function flattenError(error: VldError): VldFlattenedError {\r\n const formErrors: string[] = [];\r\n const fieldErrors: Record<string, string[]> = {};\r\n\r\n for (const issue of error.issues) {\r\n if (issue.path.length === 0) {\r\n formErrors.push(issue.message);\r\n } else {\r\n const fieldName = issue.path[0].toString();\r\n if (!fieldErrors[fieldName]) {\r\n fieldErrors[fieldName] = [];\r\n }\r\n fieldErrors[fieldName].push(issue.message);\r\n }\r\n }\r\n\r\n return { formErrors, fieldErrors };\r\n}\r\n\r\n/**\r\n * Create a validation issue\r\n */\r\nexport function createIssue(\r\n code: VldErrorCode,\r\n path: (string | number)[],\r\n message: string,\r\n extra?: Partial<VldIssue>\r\n): VldIssue {\r\n return {\r\n code,\r\n path: [...path],\r\n message,\r\n ...extra\r\n };\r\n}\r\n\r\n/**\r\n * Helper to determine the type of a value for error messages\r\n */\r\nexport function getValueType(value: unknown): string {\r\n if (value === null) return 'null';\r\n if (value === undefined) return 'undefined';\r\n if (Array.isArray(value)) return 'array';\r\n if (value instanceof Date) return 'date';\r\n return typeof value;\r\n}"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,196 @@
|
|
|
1
|
+
import { h as VldPreprocess, g as VldNullish, f as VldNullable, e as VldOptional, d as VldBigInt, c as VldDate, b as VldBoolean, a as VldNumber, V as VldString } from './chunks/bigint-ZKkWLdmi.js';
|
|
2
|
+
export { i as VldBase, r as getLocale, t as getMessages, s as setLocale } from './chunks/bigint-ZKkWLdmi.js';
|
|
3
|
+
import { u as VldJson, t as VldLazy, p as VldNever, s as VldNan, r as VldUndefined, q as VldNull, o as VldVoid, n as VldAny, m as VldEnum, l as VldLiteral, k as VldXor, j as VldDiscriminatedUnion, i as VldIntersection, h as VldUnion, g as VldMap, f as VldSet, e as VldRecord, d as VldTuple, c as VldObject, b as VldArray, a as VldStringBool, V as VldSymbol } from './chunks/json-nIhyRPOU.js';
|
|
4
|
+
import { V as VldUnknown } from './chunks/unknown-CjSRcELI.js';
|
|
5
|
+
import { t as templateLiteral, s as stringFormat, i as iso, h as hash, e as e164, c as cidrv6, a as cidrv4, m as mac, b as ipv6, d as ipv4, u as ulid, f as cuid2, g as cuid, n as nanoid, j as jwt, k as hex, l as base64url, o as base64, p as emoji, q as hostname, r as uuidv4, v as uuid, w as email, x as functionValidator, y as file, z as custom } from './chunks/index-eWXdjyyy.js';
|
|
6
|
+
import { V as VldCodec, a as VldUint8Array, b as VldHex, c as VldBase64 } from './chunks/index-BoV-4S1F.js';
|
|
7
|
+
export { D as base64Json, w as base64ToBytes, d as base64ToUint8Array, x as base64UrlToBytes, y as base64urlToBytes, C as bytesToUtf8, p as epochMillisToDate, o as epochSecondsToDate, A as hexLowerToBytes, z as hexToBytes, h as hexToUint8Array, m as isoDatetimeToDate, q as jsonCodec, E as jwtPayload, n as numberToBigInt, k as stringToBigInt, l as stringToBoolean, t as stringToHttpURL, j as stringToInt, i as stringToNumber, r as stringToURL, s as stringToUint8Array, u as uint8ArrayToBase64, e as uint8ArrayToBase64Url, f as uint8ArrayToHex, g as uint8ArrayToString, v as uriComponent, B as utf8ToBytes } from './chunks/index-BoV-4S1F.js';
|
|
8
|
+
import { V as VldCoerceDate, a as VldCoerceBoolean, b as VldCoerceNumber, c as VldCoerceString } from './chunks/date-7Iz2BGsL.js';
|
|
9
|
+
import { VldCoerceBigInt } from './coercion/index.js';
|
|
10
|
+
export { VldError, flattenError, prettifyError, prettifyErrorColored, prettifyErrorPlain, treeifyError } from './errors.js';
|
|
11
|
+
export { Err, Ok, ResultUtils, all, failure, flatMap, fromNullable, isErr, isOk, isResult, map, mapErr, match, success, tryCatch, tryCatchAsync, unwrap, unwrapOr } from './compat/result.js';
|
|
12
|
+
export { createEmitter, createEventBus, withEmitter } from './compat/emitter.js';
|
|
13
|
+
export { createVldKernel, definePlugin, getVldKernel, resetVldKernel, usePlugin } from './kernel.js';
|
|
14
|
+
export { blue, bold, createTheme, cyan, dim, gray, green, grey, italic, magenta, pigment, red, strip, supportsColor, underline, vldTheme, white, yellow } from './pigment.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* VLD Logger
|
|
18
|
+
*
|
|
19
|
+
* This module provides a debug logging system for VLD,
|
|
20
|
+
* compatible with @oxog/log when available.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Log level priorities (lower = more verbose)
|
|
24
|
+
*/
|
|
25
|
+
const LOG_LEVEL_PRIORITY = {
|
|
26
|
+
debug: 0,
|
|
27
|
+
info: 1,
|
|
28
|
+
warn: 2,
|
|
29
|
+
error: 3,
|
|
30
|
+
silent: 4
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* ANSI color codes for terminal output
|
|
34
|
+
*/
|
|
35
|
+
const COLORS = {
|
|
36
|
+
reset: '\x1b[0m',
|
|
37
|
+
dim: '\x1b[2m',
|
|
38
|
+
red: '\x1b[31m',
|
|
39
|
+
yellow: '\x1b[33m',
|
|
40
|
+
blue: '\x1b[34m',
|
|
41
|
+
cyan: '\x1b[36m',
|
|
42
|
+
gray: '\x1b[90m'
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Level colors
|
|
46
|
+
*/
|
|
47
|
+
const LEVEL_COLORS = {
|
|
48
|
+
debug: COLORS.gray,
|
|
49
|
+
info: COLORS.blue,
|
|
50
|
+
warn: COLORS.yellow,
|
|
51
|
+
error: COLORS.red
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Level labels
|
|
55
|
+
*/
|
|
56
|
+
const LEVEL_LABELS = {
|
|
57
|
+
debug: 'DEBUG',
|
|
58
|
+
info: 'INFO ',
|
|
59
|
+
warn: 'WARN ',
|
|
60
|
+
error: 'ERROR'
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Default log handler
|
|
64
|
+
*/
|
|
65
|
+
function createDefaultHandler(options) {
|
|
66
|
+
const colored = options.colored ?? true;
|
|
67
|
+
const timestamps = options.timestamps ?? true;
|
|
68
|
+
return (entry) => {
|
|
69
|
+
const parts = [];
|
|
70
|
+
// Timestamp
|
|
71
|
+
if (timestamps) {
|
|
72
|
+
const time = entry.timestamp.toISOString().slice(11, 23);
|
|
73
|
+
parts.push(colored ? `${COLORS.dim}${time}${COLORS.reset}` : time);
|
|
74
|
+
}
|
|
75
|
+
// Level
|
|
76
|
+
const levelLabel = LEVEL_LABELS[entry.level];
|
|
77
|
+
const levelColor = LEVEL_COLORS[entry.level];
|
|
78
|
+
parts.push(colored ? `${levelColor}${levelLabel}${COLORS.reset}` : levelLabel);
|
|
79
|
+
// Name
|
|
80
|
+
parts.push(colored ? `${COLORS.cyan}[${entry.name}]${COLORS.reset}` : `[${entry.name}]`);
|
|
81
|
+
// Message
|
|
82
|
+
parts.push(entry.message);
|
|
83
|
+
// Output
|
|
84
|
+
const output = parts.join(' ');
|
|
85
|
+
// Use appropriate console method
|
|
86
|
+
switch (entry.level) {
|
|
87
|
+
case 'debug':
|
|
88
|
+
console.debug(output, entry.data !== undefined ? entry.data : '');
|
|
89
|
+
break;
|
|
90
|
+
case 'info':
|
|
91
|
+
console.info(output, entry.data !== undefined ? entry.data : '');
|
|
92
|
+
break;
|
|
93
|
+
case 'warn':
|
|
94
|
+
console.warn(output, entry.data !== undefined ? entry.data : '');
|
|
95
|
+
break;
|
|
96
|
+
case 'error':
|
|
97
|
+
console.error(output, entry.data !== undefined ? entry.data : '');
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a logger instance
|
|
104
|
+
*/
|
|
105
|
+
function createLogger(options = {}) {
|
|
106
|
+
const name = options.name ?? 'vld';
|
|
107
|
+
let level = options.level ?? 'warn';
|
|
108
|
+
const handler = options.handler ?? createDefaultHandler(options);
|
|
109
|
+
const log = (logLevel, message, data) => {
|
|
110
|
+
if (LOG_LEVEL_PRIORITY[logLevel] < LOG_LEVEL_PRIORITY[level]) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const entry = {
|
|
114
|
+
level: logLevel,
|
|
115
|
+
message,
|
|
116
|
+
data,
|
|
117
|
+
timestamp: new Date(),
|
|
118
|
+
name
|
|
119
|
+
};
|
|
120
|
+
handler(entry);
|
|
121
|
+
};
|
|
122
|
+
const logger = {
|
|
123
|
+
debug: (message, data) => log('debug', message, data),
|
|
124
|
+
info: (message, data) => log('info', message, data),
|
|
125
|
+
warn: (message, data) => log('warn', message, data),
|
|
126
|
+
error: (message, data) => log('error', message, data),
|
|
127
|
+
isLevelEnabled: (checkLevel) => LOG_LEVEL_PRIORITY[checkLevel] >= LOG_LEVEL_PRIORITY[level],
|
|
128
|
+
setLevel: (newLevel) => {
|
|
129
|
+
level = newLevel;
|
|
130
|
+
},
|
|
131
|
+
getLevel: () => level,
|
|
132
|
+
child: (childName) => createLogger({
|
|
133
|
+
...options,
|
|
134
|
+
name: `${name}:${childName}`
|
|
135
|
+
})
|
|
136
|
+
};
|
|
137
|
+
return logger;
|
|
138
|
+
}
|
|
139
|
+
// ============================================
|
|
140
|
+
// Global Logger Management
|
|
141
|
+
// ============================================
|
|
142
|
+
let globalLogger = null;
|
|
143
|
+
/**
|
|
144
|
+
* Initialize the global VLD logger
|
|
145
|
+
*/
|
|
146
|
+
function initLogger(options) {
|
|
147
|
+
globalLogger = createLogger({
|
|
148
|
+
name: 'vld',
|
|
149
|
+
...options
|
|
150
|
+
});
|
|
151
|
+
return globalLogger;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the global VLD logger
|
|
155
|
+
* Returns null if not initialized
|
|
156
|
+
*/
|
|
157
|
+
function getLogger() {
|
|
158
|
+
return globalLogger;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Set log level for the global logger
|
|
162
|
+
*/
|
|
163
|
+
function setLogLevel(level) {
|
|
164
|
+
if (globalLogger) {
|
|
165
|
+
globalLogger.setLevel(level);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Enable debug mode for VLD
|
|
170
|
+
*/
|
|
171
|
+
function enableDebug() {
|
|
172
|
+
if (!globalLogger) {
|
|
173
|
+
initLogger({ level: 'debug' });
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
globalLogger.setLevel('debug');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Disable all VLD logging
|
|
181
|
+
*/
|
|
182
|
+
function disableLogging() {
|
|
183
|
+
if (globalLogger) {
|
|
184
|
+
globalLogger.setLevel('silent');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create a no-op logger for testing
|
|
189
|
+
*/
|
|
190
|
+
function createNoOpLogger() {
|
|
191
|
+
return createLogger({ level: 'silent' });
|
|
192
|
+
}
|
|
193
|
+
|
|
1
194
|
/**
|
|
2
195
|
* VLD - Fast, Type-Safe Validation Library
|
|
3
196
|
* Zero dependencies, blazing fast performance
|
|
@@ -14,81 +207,10 @@
|
|
|
14
207
|
* - Debug logging system
|
|
15
208
|
*/
|
|
16
209
|
// Import validators
|
|
17
|
-
import { VldString } from './validators/string.js';
|
|
18
|
-
import { VldNumber } from './validators/number.js';
|
|
19
|
-
import { VldBoolean } from './validators/boolean.js';
|
|
20
|
-
import { VldDate } from './validators/date.js';
|
|
21
|
-
import { VldStringBool } from './validators/string-bool.js';
|
|
22
|
-
import { VldArray } from './validators/array.js';
|
|
23
|
-
import { VldObject } from './validators/object.js';
|
|
24
|
-
import { VldUnion } from './validators/union.js';
|
|
25
|
-
import { VldLiteral } from './validators/literal.js';
|
|
26
|
-
import { VldBigInt } from './validators/bigint.js';
|
|
27
|
-
import { VldSymbol } from './validators/symbol.js';
|
|
28
|
-
import { VldTuple } from './validators/tuple.js';
|
|
29
|
-
import { VldRecord } from './validators/record.js';
|
|
30
|
-
import { VldSet } from './validators/set.js';
|
|
31
|
-
import { VldMap } from './validators/map.js';
|
|
32
|
-
import { VldEnum } from './validators/enum.js';
|
|
33
|
-
import { VldIntersection } from './validators/intersection.js';
|
|
34
|
-
import { VldAny } from './validators/any.js';
|
|
35
|
-
import { VldUnknown } from './validators/unknown.js';
|
|
36
|
-
import { VldVoid } from './validators/void.js';
|
|
37
|
-
import { VldNever } from './validators/never.js';
|
|
38
|
-
import { VldNull } from './validators/null.js';
|
|
39
|
-
import { VldUndefined } from './validators/undefined.js';
|
|
40
|
-
import { VldNan } from './validators/nan.js';
|
|
41
|
-
import { VldLazy } from './validators/lazy.js';
|
|
42
|
-
import { VldDiscriminatedUnion } from './validators/discriminated-union.js';
|
|
43
|
-
import { VldXor } from './validators/xor.js';
|
|
44
|
-
import { VldJson } from './validators/json.js';
|
|
45
|
-
import { templateLiteral } from './validators/template-literal.js';
|
|
46
|
-
import { custom as customFn } from './validators/custom.js';
|
|
47
|
-
import { file as fileFn } from './validators/file.js';
|
|
48
|
-
import { functionValidator as functionFn } from './validators/function.js';
|
|
49
|
-
import { VldPreprocess } from './validators/base.js';
|
|
50
|
-
import { VldOptional } from './validators/base.js';
|
|
51
|
-
import { VldNullable } from './validators/base.js';
|
|
52
|
-
import { VldNullish } from './validators/base.js';
|
|
53
|
-
import { VldCodec } from './validators/codec.js';
|
|
54
|
-
import { VldBase64 } from './validators/base64.js';
|
|
55
|
-
import { VldHex } from './validators/hex.js';
|
|
56
|
-
import { VldUint8Array } from './validators/uint8array.js';
|
|
57
|
-
// Import coercion validators
|
|
58
|
-
import { VldCoerceString } from './coercion/string.js';
|
|
59
|
-
import { VldCoerceNumber } from './coercion/number.js';
|
|
60
|
-
import { VldCoerceBoolean } from './coercion/boolean.js';
|
|
61
|
-
import { VldCoerceDate } from './coercion/date.js';
|
|
62
|
-
import { VldCoerceBigInt } from './coercion/bigint.js';
|
|
63
|
-
// Import string format validators
|
|
64
|
-
import * as stringFormats from './validators/string-formats.js';
|
|
65
|
-
// Re-export base classes for extension
|
|
66
|
-
export { VldBase } from './validators/base.js';
|
|
67
|
-
export { VldIntersection } from './validators/intersection.js';
|
|
68
|
-
// Re-export locale functionality
|
|
69
|
-
export { setLocale, getLocale, getMessages } from './locales/index.js';
|
|
70
|
-
// Re-export error formatting utilities
|
|
71
|
-
export { VldError, treeifyError, prettifyError, prettifyErrorColored, prettifyErrorPlain, flattenError } from './errors.js';
|
|
72
|
-
// Re-export codec utilities
|
|
73
|
-
export { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToBase64Url, hexToUint8Array, uint8ArrayToHex, stringToUint8Array, uint8ArrayToString } from './utils/codec-utils.js';
|
|
74
|
-
// Re-export predefined codecs
|
|
75
|
-
export {
|
|
76
|
-
// String conversion codecs
|
|
77
|
-
stringToNumber, stringToInt, stringToBigInt, numberToBigInt, stringToBoolean,
|
|
78
|
-
// Date conversion codecs
|
|
79
|
-
isoDatetimeToDate, epochSecondsToDate, epochMillisToDate,
|
|
80
|
-
// JSON codec
|
|
81
|
-
jsonCodec,
|
|
82
|
-
// URL codecs
|
|
83
|
-
stringToURL, stringToHttpURL, uriComponent,
|
|
84
|
-
// Byte conversion codecs
|
|
85
|
-
base64ToBytes, base64UrlToBytes, base64urlToBytes, hexToBytes, hexLowerToBytes, utf8ToBytes, bytesToUtf8,
|
|
86
|
-
// Complex codecs
|
|
87
|
-
base64Json, jwtPayload } from './codecs/index.js';
|
|
88
210
|
/**
|
|
89
211
|
* Main API object with factory methods for all validators
|
|
90
212
|
*/
|
|
91
|
-
|
|
213
|
+
const v = {
|
|
92
214
|
// Primitive validators
|
|
93
215
|
string: () => VldString.create(),
|
|
94
216
|
number: () => VldNumber.create(),
|
|
@@ -137,11 +259,11 @@ export const v = {
|
|
|
137
259
|
// JSON validator
|
|
138
260
|
json: (schema) => VldJson.create(schema),
|
|
139
261
|
// Custom validator for type-safe user-defined schemas
|
|
140
|
-
custom: (options) =>
|
|
262
|
+
custom: (options) => custom(options),
|
|
141
263
|
// File validator for file uploads
|
|
142
|
-
file: () =>
|
|
264
|
+
file: () => file(),
|
|
143
265
|
// Function validator for function validation
|
|
144
|
-
function: () =>
|
|
266
|
+
function: () => functionValidator(),
|
|
145
267
|
// Preprocessing
|
|
146
268
|
preprocess: (preprocessor, schema) => VldPreprocess.create(preprocessor, schema),
|
|
147
269
|
// Coercion API
|
|
@@ -153,33 +275,33 @@ export const v = {
|
|
|
153
275
|
bigint: () => VldCoerceBigInt.create(),
|
|
154
276
|
},
|
|
155
277
|
// String format validators (Zod 4 parity)
|
|
156
|
-
email: (options) =>
|
|
157
|
-
uuid: (options) =>
|
|
158
|
-
uuidv4: () =>
|
|
159
|
-
hostname: () =>
|
|
160
|
-
emoji: () =>
|
|
161
|
-
base64: () =>
|
|
162
|
-
base64url: () =>
|
|
163
|
-
hex: () =>
|
|
164
|
-
jwt: () =>
|
|
165
|
-
nanoid: () =>
|
|
166
|
-
cuid: () =>
|
|
167
|
-
cuid2: () =>
|
|
168
|
-
ulid: () =>
|
|
169
|
-
ipv4: () =>
|
|
170
|
-
ipv6: () =>
|
|
171
|
-
mac: () =>
|
|
172
|
-
cidrv4: () =>
|
|
173
|
-
cidrv6: () =>
|
|
174
|
-
e164: () =>
|
|
175
|
-
hash: (algorithm) =>
|
|
278
|
+
email: (options) => email(options),
|
|
279
|
+
uuid: (options) => uuid(options),
|
|
280
|
+
uuidv4: () => uuidv4(),
|
|
281
|
+
hostname: () => hostname(),
|
|
282
|
+
emoji: () => emoji(),
|
|
283
|
+
base64: () => base64(),
|
|
284
|
+
base64url: () => base64url(),
|
|
285
|
+
hex: () => hex(),
|
|
286
|
+
jwt: () => jwt(),
|
|
287
|
+
nanoid: () => nanoid(),
|
|
288
|
+
cuid: () => cuid(),
|
|
289
|
+
cuid2: () => cuid2(),
|
|
290
|
+
ulid: () => ulid(),
|
|
291
|
+
ipv4: () => ipv4(),
|
|
292
|
+
ipv6: () => ipv6(),
|
|
293
|
+
mac: () => mac(),
|
|
294
|
+
cidrv4: () => cidrv4(),
|
|
295
|
+
cidrv6: () => cidrv6(),
|
|
296
|
+
e164: () => e164(),
|
|
297
|
+
hash: (algorithm) => hash(algorithm),
|
|
176
298
|
iso: {
|
|
177
|
-
date: () =>
|
|
178
|
-
time: () =>
|
|
179
|
-
dateTime: () =>
|
|
180
|
-
duration: () =>
|
|
299
|
+
date: () => iso.date(),
|
|
300
|
+
time: () => iso.time(),
|
|
301
|
+
dateTime: () => iso.dateTime(),
|
|
302
|
+
duration: () => iso.duration(),
|
|
181
303
|
},
|
|
182
|
-
stringFormat: (name, validator) =>
|
|
304
|
+
stringFormat: (name, validator) => stringFormat(name, validator),
|
|
183
305
|
// Template literal validator
|
|
184
306
|
templateLiteral: (...components) => templateLiteral(...components),
|
|
185
307
|
// Codec validators (binary data validators)
|
|
@@ -189,29 +311,6 @@ export const v = {
|
|
|
189
311
|
// Codec factory
|
|
190
312
|
codec: (inputValidator, outputValidator, transform) => VldCodec.create(inputValidator, outputValidator, transform)
|
|
191
313
|
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// ============================================
|
|
196
|
-
export {
|
|
197
|
-
// Factory functions
|
|
198
|
-
createEmitter, createEventBus, withEmitter } from './compat/emitter.js';
|
|
199
|
-
// ============================================
|
|
200
|
-
// Plugin System (v1.5+ features)
|
|
201
|
-
// ============================================
|
|
202
|
-
export {
|
|
203
|
-
// Kernel
|
|
204
|
-
createVldKernel, getVldKernel, resetVldKernel, usePlugin, definePlugin } from './kernel.js';
|
|
205
|
-
// ============================================
|
|
206
|
-
// Logger (v1.5+ features)
|
|
207
|
-
// ============================================
|
|
208
|
-
export {
|
|
209
|
-
// Logger
|
|
210
|
-
createLogger, initLogger, getLogger, setLogLevel, enableDebug, disableLogging, createNoOpLogger } from './logger.js';
|
|
211
|
-
// ============================================
|
|
212
|
-
// Pigment - Colored Output (v1.5+ features)
|
|
213
|
-
// ============================================
|
|
214
|
-
export { pigment, supportsColor, bold, dim, italic, underline, red, green, yellow, blue, magenta, cyan, white, gray, grey, strip, vldTheme, createTheme } from './pigment.js';
|
|
215
|
-
// For backward compatibility during migration
|
|
216
|
-
export default v;
|
|
217
|
-
//# sourceMappingURL=index.js.map
|
|
314
|
+
|
|
315
|
+
export { VldIntersection, createLogger, createNoOpLogger, v as default, disableLogging, enableDebug, getLogger, initLogger, setLogLevel, v };
|
|
316
|
+
//# sourceMappingURL=index.js.map
|