schema-dsl 1.2.4 → 2.0.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 +87 -210
- package/README.md +391 -2249
- package/dist/DslBuilder-DQDN0ZxZ.d.cts +341 -0
- package/dist/DslBuilder-DkLaOo9Q.d.ts +341 -0
- package/dist/Validator-C7GsVQOH.d.cts +192 -0
- package/dist/Validator-hFWKGxir.d.ts +192 -0
- package/dist/index.cjs +6594 -0
- package/dist/index.d.cts +1145 -0
- package/dist/index.d.ts +1145 -0
- package/dist/index.js +6528 -0
- package/dist/plugin-CIKtTMtS.d.cts +246 -0
- package/dist/plugin-CIKtTMtS.d.ts +246 -0
- package/dist/plugins/custom-format.cjs +3802 -0
- package/dist/plugins/custom-format.d.cts +12 -0
- package/dist/plugins/custom-format.d.ts +12 -0
- package/dist/plugins/custom-format.js +3772 -0
- package/dist/plugins/custom-type-example.cjs +3795 -0
- package/dist/plugins/custom-type-example.d.cts +8 -0
- package/dist/plugins/custom-type-example.d.ts +8 -0
- package/dist/plugins/custom-type-example.js +3765 -0
- package/dist/plugins/custom-validator.cjs +146 -0
- package/dist/plugins/custom-validator.d.cts +10 -0
- package/dist/plugins/custom-validator.d.ts +10 -0
- package/dist/plugins/custom-validator.js +121 -0
- package/docs/FEATURE-INDEX.md +102 -68
- package/docs/add-custom-locale.md +48 -35
- package/docs/add-keyword.md +24 -0
- package/docs/api-reference.md +396 -154
- package/docs/api.md +13 -0
- package/docs/best-practices-project-structure.md +19 -10
- package/docs/best-practices.md +93 -53
- package/docs/cache-manager.md +23 -15
- package/docs/compile.md +45 -0
- package/docs/conditional-api.md +40 -11
- package/docs/custom-extensions-guide.md +80 -152
- package/docs/design-philosophy.md +76 -71
- package/docs/doc-index.md +324 -0
- package/docs/dsl-syntax.md +69 -19
- package/docs/dynamic-locale.md +24 -14
- package/docs/enum.md +12 -5
- package/docs/error-handling.md +53 -44
- package/docs/export-guide.md +47 -8
- package/docs/export-limitations.md +27 -11
- package/docs/faq.md +86 -67
- package/docs/frontend-i18n-guide.md +26 -12
- package/docs/i18n-user-guide.md +60 -47
- package/docs/i18n.md +51 -32
- package/docs/index.md +48 -0
- package/docs/json-schema-basics.md +40 -0
- package/docs/label-vs-description.md +12 -3
- package/docs/markdown-exporter.md +15 -6
- package/docs/mongodb-exporter.md +11 -4
- package/docs/multi-language.md +26 -0
- package/docs/multi-type-support.md +26 -33
- package/docs/mysql-exporter.md +9 -2
- package/docs/number-operators.md +12 -5
- package/docs/optional-marker-guide.md +28 -23
- package/docs/performance-guide.md +49 -0
- package/docs/plugin-system.md +205 -366
- package/docs/plugin-type-registration.md +34 -0
- package/docs/postgresql-exporter.md +9 -2
- package/docs/public/favicon.svg +5 -0
- package/docs/quick-start.md +37 -363
- package/docs/runtime-locale-support.md +20 -9
- package/docs/schema-helper.md +10 -5
- package/docs/schema-utils-advanced-issues.md +23 -0
- package/docs/schema-utils-best-practices.md +20 -0
- package/docs/schema-utils-chaining.md +7 -0
- package/docs/schema-utils.md +76 -42
- package/docs/security-checklist.md +20 -0
- package/docs/string-extensions.md +17 -9
- package/docs/troubleshooting.md +36 -21
- package/docs/type-converter.md +41 -50
- package/docs/type-reference.md +38 -15
- package/docs/typescript-guide.md +53 -42
- package/docs/union-type-guide.md +11 -1
- package/docs/union-types.md +10 -3
- package/docs/validate-async.md +36 -25
- package/docs/validate-batch.md +49 -0
- package/docs/validate-dsl-object-support.md +33 -28
- package/docs/validate.md +36 -16
- package/docs/validation-guide.md +25 -7
- package/docs/validator.md +39 -0
- package/package.json +85 -27
- package/plugins/custom-format.cjs +8 -0
- package/plugins/custom-type-example.cjs +8 -0
- package/plugins/custom-validator.cjs +8 -0
- package/src/adapters/DslAdapter.ts +111 -0
- package/src/adapters/index.ts +1 -0
- package/src/config/constants.ts +83 -0
- package/src/config/index.ts +2 -0
- package/src/config/patterns.ts +77 -0
- package/src/core/CacheManager.ts +159 -0
- package/src/core/ConditionalBuilder.ts +382 -0
- package/src/core/ConditionalRuntime.ts +28 -0
- package/src/core/ConditionalValidator.ts +255 -0
- package/src/core/DslBuilder.ts +677 -0
- package/src/core/ErrorCodes.ts +38 -0
- package/src/core/ErrorFormatter.ts +271 -0
- package/src/core/JSONSchemaCore.ts +65 -0
- package/src/core/Locale.ts +187 -0
- package/src/core/MessageTemplate.ts +42 -0
- package/src/core/ObjectDslBuilder.ts +64 -0
- package/src/core/PluginManager.ts +326 -0
- package/src/core/StringExtensions.ts +140 -0
- package/src/core/TemplateEngine.ts +44 -0
- package/src/core/Validator.ts +448 -0
- package/src/errors/I18nError.ts +159 -0
- package/src/errors/ValidationError.ts +105 -0
- package/src/exporters/BaseExporter.ts +60 -0
- package/src/exporters/MarkdownExporter.ts +305 -0
- package/src/exporters/MongoDBExporter.ts +126 -0
- package/src/exporters/MySQLExporter.ts +155 -0
- package/src/exporters/PostgreSQLExporter.ts +222 -0
- package/src/exporters/index.ts +18 -0
- package/src/index.ts +633 -0
- package/{lib/locales/en-US.js → src/locales/en-US.ts} +21 -37
- package/{lib/locales/es-ES.js → src/locales/es-ES.ts} +63 -16
- package/{lib/locales/fr-FR.js → src/locales/fr-FR.ts} +74 -27
- package/src/locales/index.ts +103 -0
- package/{lib/locales/ja-JP.js → src/locales/ja-JP.ts} +59 -17
- package/src/locales/types.ts +156 -0
- package/{lib/locales/zh-CN.js → src/locales/zh-CN.ts} +21 -38
- package/src/parser/ConstraintParser.ts +101 -0
- package/src/parser/DslParser.ts +470 -0
- package/src/parser/SchemaCompiler.ts +66 -0
- package/src/parser/TypeRegistry.ts +250 -0
- package/src/parser/index.ts +6 -0
- package/src/plugins/custom-format.ts +126 -0
- package/src/plugins/custom-type-example.ts +108 -0
- package/src/plugins/custom-validator.ts +140 -0
- package/src/types/conditional.ts +28 -0
- package/src/types/config.ts +59 -0
- package/src/types/dsl.ts +131 -0
- package/src/types/error.ts +60 -0
- package/src/types/index.ts +17 -0
- package/src/types/infer.ts +128 -0
- package/src/types/plugin.ts +58 -0
- package/src/types/safe-regex.d.ts +9 -0
- package/src/types/schema.ts +66 -0
- package/src/types/validate.ts +71 -0
- package/src/utils/SchemaHelper.ts +196 -0
- package/src/utils/SchemaUtils.ts +346 -0
- package/src/utils/TypeConverter.ts +215 -0
- package/src/utils/index.ts +10 -0
- package/src/validators/CustomKeywords.ts +477 -0
- package/.eslintignore +0 -11
- package/.eslintrc.json +0 -27
- package/CONTRIBUTING.md +0 -368
- package/STATUS.md +0 -491
- package/changelogs/v1.0.0.md +0 -328
- package/changelogs/v1.0.9.md +0 -367
- package/changelogs/v1.1.0.md +0 -389
- package/changelogs/v1.1.1.md +0 -308
- package/changelogs/v1.1.2.md +0 -183
- package/changelogs/v1.1.3.md +0 -161
- package/changelogs/v1.1.4.md +0 -432
- package/changelogs/v1.1.5.md +0 -493
- package/changelogs/v1.1.6.md +0 -211
- package/changelogs/v1.1.8.md +0 -376
- package/changelogs/v1.2.3.md +0 -124
- package/docs/INDEX.md +0 -252
- package/docs/issues-resolved-summary.md +0 -196
- package/docs/performance-benchmark-report.md +0 -179
- package/docs/performance-quick-reference.md +0 -123
- package/docs/user-questions-answered.md +0 -353
- package/docs/validation-rules-v1.0.2.md +0 -1608
- package/examples/README.md +0 -81
- package/examples/array-dsl-example.js +0 -227
- package/examples/conditional-example.js +0 -288
- package/examples/conditional-non-object.js +0 -129
- package/examples/conditional-validate-example.js +0 -321
- package/examples/custom-extension.js +0 -85
- package/examples/dsl-match-example.js +0 -74
- package/examples/dsl-style.js +0 -118
- package/examples/dynamic-locale-configuration.js +0 -348
- package/examples/dynamic-locale-example.js +0 -287
- package/examples/enum.examples.js +0 -324
- package/examples/export-demo.js +0 -130
- package/examples/express-integration.js +0 -376
- package/examples/i18n-error-handling-complete.js +0 -381
- package/examples/i18n-error-handling-quickstart.md +0 -0
- package/examples/i18n-error.examples.js +0 -181
- package/examples/i18n-full-demo.js +0 -301
- package/examples/i18n-memory-safety.examples.js +0 -268
- package/examples/markdown-export.js +0 -71
- package/examples/middleware-usage.js +0 -93
- package/examples/new-features-comparison.js +0 -315
- package/examples/password-reset/README.md +0 -153
- package/examples/password-reset/schema.js +0 -26
- package/examples/password-reset/test.js +0 -101
- package/examples/plugin-system.examples.js +0 -205
- package/examples/schema-utils-chaining.examples.js +0 -250
- package/examples/simple-example.js +0 -122
- package/examples/slug.examples.js +0 -179
- package/examples/string-extensions.js +0 -297
- package/examples/union-type-example.js +0 -127
- package/examples/union-types-example.js +0 -77
- package/examples/user-registration/README.md +0 -156
- package/examples/user-registration/routes.js +0 -92
- package/examples/user-registration/schema.js +0 -150
- package/examples/user-registration/server.js +0 -74
- package/index.d.ts +0 -3540
- package/index.js +0 -457
- package/index.mjs +0 -60
- package/lib/adapters/DslAdapter.js +0 -871
- package/lib/adapters/index.js +0 -20
- package/lib/config/constants.js +0 -286
- package/lib/config/patterns/common.js +0 -47
- package/lib/config/patterns/creditCard.js +0 -9
- package/lib/config/patterns/idCard.js +0 -9
- package/lib/config/patterns/index.js +0 -9
- package/lib/config/patterns/licensePlate.js +0 -4
- package/lib/config/patterns/passport.js +0 -4
- package/lib/config/patterns/phone.js +0 -9
- package/lib/config/patterns/postalCode.js +0 -5
- package/lib/core/CacheManager.js +0 -376
- package/lib/core/ConditionalBuilder.js +0 -503
- package/lib/core/DslBuilder.js +0 -1400
- package/lib/core/ErrorCodes.js +0 -233
- package/lib/core/ErrorFormatter.js +0 -445
- package/lib/core/JSONSchemaCore.js +0 -347
- package/lib/core/Locale.js +0 -130
- package/lib/core/MessageTemplate.js +0 -98
- package/lib/core/PluginManager.js +0 -448
- package/lib/core/StringExtensions.js +0 -240
- package/lib/core/Validator.js +0 -654
- package/lib/errors/I18nError.js +0 -328
- package/lib/errors/ValidationError.js +0 -191
- package/lib/exporters/MarkdownExporter.js +0 -420
- package/lib/exporters/MongoDBExporter.js +0 -162
- package/lib/exporters/MySQLExporter.js +0 -212
- package/lib/exporters/PostgreSQLExporter.js +0 -289
- package/lib/exporters/index.js +0 -24
- package/lib/locales/index.js +0 -8
- package/lib/utils/LRUCache.js +0 -174
- package/lib/utils/SchemaHelper.js +0 -240
- package/lib/utils/SchemaUtils.js +0 -445
- package/lib/utils/TypeConverter.js +0 -245
- package/lib/utils/index.js +0 -13
- package/lib/validators/CustomKeywords.js +0 -616
- package/lib/validators/index.js +0 -11
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { J as JSONSchema, V as ValidationResult, D as DslConfigOptions } from './plugin-CIKtTMtS.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* IConditionalBuilder interface (shape definition).
|
|
5
|
+
* Implementation class is in src/core/ConditionalBuilder.ts (Phase 8).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
interface IConditionalBuilder {
|
|
9
|
+
and(condition: (data: unknown) => boolean): this;
|
|
10
|
+
or(condition: (data: unknown) => boolean): this;
|
|
11
|
+
/** then/else accept string DSL, JSONSchema, or null (no-op). */
|
|
12
|
+
then(schema: string | JSONSchema | null): this;
|
|
13
|
+
else(schema: string | JSONSchema | null): this;
|
|
14
|
+
elseIf(condition: (data: unknown) => boolean): this;
|
|
15
|
+
message(msg: string): this;
|
|
16
|
+
/** Serialise to a JSON Schema object (internal conditional marker). */
|
|
17
|
+
toSchema(): JSONSchema;
|
|
18
|
+
/** Alias for toSchema(). */
|
|
19
|
+
build(): JSONSchema;
|
|
20
|
+
/** Synchronous assertion; throws ValidationError on failure. */
|
|
21
|
+
assert(data: unknown, options?: Record<string, unknown>): unknown;
|
|
22
|
+
/** Synchronous validation; returns ValidationResult. */
|
|
23
|
+
validate(data: unknown, options?: Record<string, unknown>): ValidationResult<unknown>;
|
|
24
|
+
/** Async validation; returns Promise<ValidationResult>. */
|
|
25
|
+
validateAsync(data: unknown, options?: Record<string, unknown>): Promise<ValidationResult<unknown>>;
|
|
26
|
+
/** Quick boolean check (no error details). */
|
|
27
|
+
check(data: unknown): boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* DslBuilder interface definition (chainable API shape).
|
|
32
|
+
* Implementation class is in src/core/DslBuilder.ts (Phase 7).
|
|
33
|
+
*/
|
|
34
|
+
interface IDslBuilder {
|
|
35
|
+
min(n: number): this;
|
|
36
|
+
max(n: number): this;
|
|
37
|
+
label(text: string): this;
|
|
38
|
+
description(text: string): this;
|
|
39
|
+
pattern(regex: RegExp | string, message?: string): this;
|
|
40
|
+
enum(...values: unknown[]): this;
|
|
41
|
+
optional(): this;
|
|
42
|
+
required(): this;
|
|
43
|
+
default(value: unknown): this;
|
|
44
|
+
error(messages: Record<string, string>): this;
|
|
45
|
+
messages(msgs: Record<string, string>): this;
|
|
46
|
+
format(fmt: string): this;
|
|
47
|
+
custom(validatorFn: (value: unknown) => unknown): this;
|
|
48
|
+
length(n: number): this;
|
|
49
|
+
alphanum(): this;
|
|
50
|
+
trim(): this;
|
|
51
|
+
lowercase(): this;
|
|
52
|
+
uppercase(): this;
|
|
53
|
+
ip(): this;
|
|
54
|
+
base64(): this;
|
|
55
|
+
jwt(): this;
|
|
56
|
+
json(): this;
|
|
57
|
+
domain(): this;
|
|
58
|
+
slug(): this;
|
|
59
|
+
after(date: string): this;
|
|
60
|
+
before(date: string): this;
|
|
61
|
+
dateGreater(date: string): this;
|
|
62
|
+
dateLess(date: string): this;
|
|
63
|
+
dateFormat(fmt: string): this;
|
|
64
|
+
username(preset?: string | {
|
|
65
|
+
minLength?: number;
|
|
66
|
+
maxLength?: number;
|
|
67
|
+
allowUnderscore?: boolean;
|
|
68
|
+
allowNumber?: boolean;
|
|
69
|
+
}): this;
|
|
70
|
+
password(preset?: string): this;
|
|
71
|
+
phone(country?: string): this;
|
|
72
|
+
phoneNumber(country?: string): this;
|
|
73
|
+
idCard(country?: string): this;
|
|
74
|
+
creditCard(type?: string): this;
|
|
75
|
+
licensePlate(country?: string): this;
|
|
76
|
+
postalCode(country?: string): this;
|
|
77
|
+
passport(country?: string): this;
|
|
78
|
+
precision(n: number): this;
|
|
79
|
+
multiple(n: number): this;
|
|
80
|
+
port(): this;
|
|
81
|
+
requireAll(): this;
|
|
82
|
+
strict(): this;
|
|
83
|
+
noSparse(): this;
|
|
84
|
+
includesRequired(items: unknown[]): this;
|
|
85
|
+
toJsonSchema(): JSONSchema;
|
|
86
|
+
toSchema(): JSONSchema;
|
|
87
|
+
toString(): string;
|
|
88
|
+
readonly _isDslBuilder: true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* DSL object definition (key → field mapping).
|
|
92
|
+
* ⚠️ Must be an interface rather than a type alias to support recursive DslField ↔ DslDefinition references.
|
|
93
|
+
*/
|
|
94
|
+
interface DslDefinition {
|
|
95
|
+
[key: string]: DslField;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* v1 conditional field marker (created by dsl.if / dsl.match; compiled to allOf conditional schema during parseObject).
|
|
99
|
+
*/
|
|
100
|
+
interface DslConditionMarker {
|
|
101
|
+
_isIf?: true;
|
|
102
|
+
_isMatch?: true;
|
|
103
|
+
condition?: string;
|
|
104
|
+
field?: string;
|
|
105
|
+
then?: unknown;
|
|
106
|
+
else?: unknown;
|
|
107
|
+
map?: Record<string, unknown>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* DSL field type (recursive definition).
|
|
111
|
+
* String | DslBuilder instance | nested object.
|
|
112
|
+
*/
|
|
113
|
+
type DslField = string | IDslBuilder | DslDefinition | DslConditionMarker;
|
|
114
|
+
/**
|
|
115
|
+
* DslBuilder constructor input (string or nested definition).
|
|
116
|
+
*/
|
|
117
|
+
type DslInput = string | DslDefinition;
|
|
118
|
+
/**
|
|
119
|
+
* if/conditional function types.
|
|
120
|
+
*/
|
|
121
|
+
type DslIfFn = (condition: (data: unknown) => boolean) => IConditionalBuilder;
|
|
122
|
+
type DslFieldIfFn = (condition: string, thenSchema: unknown, elseSchema?: unknown) => DslConditionMarker;
|
|
123
|
+
/**
|
|
124
|
+
* dsl.error namespace.
|
|
125
|
+
*/
|
|
126
|
+
interface DslErrorNamespace {
|
|
127
|
+
readonly [code: string]: string;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* DslFn interface (function overloads + namespace attachments).
|
|
131
|
+
* ⚠️ Uses function overloads rather than union return types to ensure TypeScript type narrowing works correctly.
|
|
132
|
+
*/
|
|
133
|
+
interface DslFn {
|
|
134
|
+
(def: string): IDslBuilder;
|
|
135
|
+
(def: DslDefinition): JSONSchema;
|
|
136
|
+
config: (options?: Partial<DslConfigOptions>) => void;
|
|
137
|
+
if: DslIfFn & DslFieldIfFn;
|
|
138
|
+
_if: DslIfFn & DslFieldIfFn;
|
|
139
|
+
match: (value: unknown, cases: Record<string, unknown>) => DslConditionMarker;
|
|
140
|
+
error: DslErrorNamespace;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* DslBuilder — chainable DSL builder.
|
|
145
|
+
*
|
|
146
|
+
* v2 changes:
|
|
147
|
+
* - Constructor delegates to DslParser.parseString() (fixes DA-01/DA-02/DA-03)
|
|
148
|
+
* - Custom type registration delegates to TypeRegistry (fixes DB-01/DB-02: unifies three type lists)
|
|
149
|
+
* - _customMessages merges instead of overwriting (fixes v1 overwrite bug)
|
|
150
|
+
* - Implements IDslBuilder interface (error/optional/required/enum chain methods)
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
type CustomValidatorFn = (value: unknown) => unknown;
|
|
154
|
+
declare class DslBuilder implements IDslBuilder {
|
|
155
|
+
readonly _isDslBuilder: true;
|
|
156
|
+
/** schema-dsl custom validation keyword set (stripped during toJsonSchema). */
|
|
157
|
+
static readonly _internalKeys: ReadonlySet<string>;
|
|
158
|
+
/** Custom type cache (BC with v1 DslBuilder._customTypes). */
|
|
159
|
+
private static readonly _customTypes;
|
|
160
|
+
private _baseSchema;
|
|
161
|
+
private _required;
|
|
162
|
+
private _optional;
|
|
163
|
+
private _customMessages;
|
|
164
|
+
private _label;
|
|
165
|
+
private _description;
|
|
166
|
+
private _customValidators;
|
|
167
|
+
private _whenConditions;
|
|
168
|
+
constructor(dslString: string);
|
|
169
|
+
/**
|
|
170
|
+
* Parse DSL body (without ! or ?).
|
|
171
|
+
* Delegates to the unified parser so string and builder DSL parsing stay in lockstep.
|
|
172
|
+
*/
|
|
173
|
+
private static _parseBody;
|
|
174
|
+
/**
|
|
175
|
+
* Register a custom type (delegates to TypeRegistry).
|
|
176
|
+
*/
|
|
177
|
+
static registerType(name: string, schema: JSONSchema | (() => JSONSchema)): void;
|
|
178
|
+
/** Check whether a type is registered (built-in or custom). */
|
|
179
|
+
static hasType(type: string): boolean;
|
|
180
|
+
/** Get all registered custom type names. */
|
|
181
|
+
static getCustomTypes(): string[];
|
|
182
|
+
/** Clear all custom types (primarily for testing). */
|
|
183
|
+
static clearCustomTypes(): void;
|
|
184
|
+
/**
|
|
185
|
+
* Validate schema nesting depth.
|
|
186
|
+
* @param schema - JSON Schema to validate
|
|
187
|
+
* @param maxDepth - maximum allowed depth (default 3)
|
|
188
|
+
*/
|
|
189
|
+
static validateNestingDepth(schema: JSONSchema, maxDepth?: number): {
|
|
190
|
+
valid: boolean;
|
|
191
|
+
depth: number;
|
|
192
|
+
path: string;
|
|
193
|
+
message: string;
|
|
194
|
+
};
|
|
195
|
+
private _assertType;
|
|
196
|
+
private _assertStringType;
|
|
197
|
+
private _assertNumberType;
|
|
198
|
+
private _assertObjectType;
|
|
199
|
+
private _assertArrayType;
|
|
200
|
+
/**
|
|
201
|
+
* Set format.
|
|
202
|
+
*/
|
|
203
|
+
format(fmt: string): this;
|
|
204
|
+
/**
|
|
205
|
+
* Add regex validation.
|
|
206
|
+
*/
|
|
207
|
+
pattern(regex: RegExp | string, message?: string): this;
|
|
208
|
+
/**
|
|
209
|
+
* Custom error messages (IDslBuilder: error; BC alias: messages).
|
|
210
|
+
*/
|
|
211
|
+
messages(msgs: Record<string, string>): this;
|
|
212
|
+
/** IDslBuilder.error — alias for messages() */
|
|
213
|
+
error(msgs: Record<string, string>): this;
|
|
214
|
+
/**
|
|
215
|
+
* Set field label (used in error messages).
|
|
216
|
+
*/
|
|
217
|
+
label(text: string): this;
|
|
218
|
+
/**
|
|
219
|
+
* Set description.
|
|
220
|
+
*/
|
|
221
|
+
description(text: string): this;
|
|
222
|
+
/**
|
|
223
|
+
* Set default value.
|
|
224
|
+
*/
|
|
225
|
+
default(value: unknown): this;
|
|
226
|
+
/**
|
|
227
|
+
* Set allowed enum values (IDslBuilder).
|
|
228
|
+
*/
|
|
229
|
+
enum(...values: unknown[]): this;
|
|
230
|
+
/**
|
|
231
|
+
* Mark field as optional.
|
|
232
|
+
*/
|
|
233
|
+
optional(): this;
|
|
234
|
+
/**
|
|
235
|
+
* Mark field as required.
|
|
236
|
+
*/
|
|
237
|
+
required(): this;
|
|
238
|
+
/**
|
|
239
|
+
* Add a custom validator function.
|
|
240
|
+
*/
|
|
241
|
+
custom(validatorFn: CustomValidatorFn): this;
|
|
242
|
+
/** String minimum length. */
|
|
243
|
+
min(n: number): this;
|
|
244
|
+
/** String maximum length. */
|
|
245
|
+
max(n: number): this;
|
|
246
|
+
/** String exact length (→ exactLength custom keyword). */
|
|
247
|
+
length(n: number): this;
|
|
248
|
+
/** String: only alphanumeric characters allowed. */
|
|
249
|
+
alphanum(): this;
|
|
250
|
+
/** String: no leading/trailing whitespace. */
|
|
251
|
+
trim(): this;
|
|
252
|
+
/** String: must be lowercase. */
|
|
253
|
+
lowercase(): this;
|
|
254
|
+
/** String: must be uppercase. */
|
|
255
|
+
uppercase(): this;
|
|
256
|
+
/** String: must be a valid JSON string. */
|
|
257
|
+
json(): this;
|
|
258
|
+
/** String date format validation. */
|
|
259
|
+
dateFormat(fmt: string): this;
|
|
260
|
+
/** String: must be after the given date. */
|
|
261
|
+
after(date: string): this;
|
|
262
|
+
/** String: must be before the given date. */
|
|
263
|
+
before(date: string): this;
|
|
264
|
+
/** v1.0.2 alias: dateGreater. */
|
|
265
|
+
dateGreater(date: string): this;
|
|
266
|
+
/** v1.0.2 alias: dateLess. */
|
|
267
|
+
dateLess(date: string): this;
|
|
268
|
+
/** String slug format validation. */
|
|
269
|
+
slug(): this;
|
|
270
|
+
/** String domain validation. */
|
|
271
|
+
domain(): this;
|
|
272
|
+
/** String IP address validation (IPv4 or IPv6). */
|
|
273
|
+
ip(): this;
|
|
274
|
+
/** String Base64 encoding validation. */
|
|
275
|
+
base64(): this;
|
|
276
|
+
/** String JWT token validation. */
|
|
277
|
+
jwt(): this;
|
|
278
|
+
/** Phone number validation (auto-corrects number → string). */
|
|
279
|
+
phone(country?: string): this;
|
|
280
|
+
/** phone() alias (BC). */
|
|
281
|
+
phoneNumber(country?: string): this;
|
|
282
|
+
/** National ID (idCard) validation. */
|
|
283
|
+
idCard(country?: string): this;
|
|
284
|
+
/** URL slug validation. */
|
|
285
|
+
slugChain(): this;
|
|
286
|
+
/** Credit card number validation. */
|
|
287
|
+
creditCard(type?: string): this;
|
|
288
|
+
/** Vehicle license plate validation. */
|
|
289
|
+
licensePlate(country?: string): this;
|
|
290
|
+
/** Postal code validation. */
|
|
291
|
+
postalCode(country?: string): this;
|
|
292
|
+
/** Passport number validation. */
|
|
293
|
+
passport(country?: string): this;
|
|
294
|
+
/**
|
|
295
|
+
* Username validation.
|
|
296
|
+
* @param preset - 'short'(3-16) | 'medium'(3-32) | 'long'(3-64) | 'N-M' | object
|
|
297
|
+
*/
|
|
298
|
+
username(preset?: string | {
|
|
299
|
+
minLength?: number;
|
|
300
|
+
maxLength?: number;
|
|
301
|
+
allowUnderscore?: boolean;
|
|
302
|
+
allowNumber?: boolean;
|
|
303
|
+
}): this;
|
|
304
|
+
/**
|
|
305
|
+
* Password strength validation.
|
|
306
|
+
* @param strength - 'weak' | 'medium' | 'strong' | 'veryStrong'
|
|
307
|
+
*/
|
|
308
|
+
password(strength?: string): this;
|
|
309
|
+
/** Number decimal places limit. */
|
|
310
|
+
precision(n: number): this;
|
|
311
|
+
/** Number multiple-of validation (standard JSON Schema multipleOf). */
|
|
312
|
+
multiple(n: number): this;
|
|
313
|
+
/** Number port validation (1–65535). */
|
|
314
|
+
port(): this;
|
|
315
|
+
/** Object: all defined properties are required. */
|
|
316
|
+
requireAll(): this;
|
|
317
|
+
/** Object strict mode: no additional properties allowed. */
|
|
318
|
+
strict(): this;
|
|
319
|
+
/** Array: sparse arrays are not allowed. */
|
|
320
|
+
noSparse(): this;
|
|
321
|
+
/** Array: must contain the specified element. */
|
|
322
|
+
includesRequired(items: unknown[]): this;
|
|
323
|
+
/**
|
|
324
|
+
* Convert to a schema with schema-dsl internal fields (for use by Validator).
|
|
325
|
+
*/
|
|
326
|
+
toSchema(): JSONSchema;
|
|
327
|
+
/**
|
|
328
|
+
* Output a clean JSON Schema (strips all schema-dsl internal fields and custom keywords).
|
|
329
|
+
* Can be embedded directly in OpenAPI / standard JSON Schema documents.
|
|
330
|
+
*/
|
|
331
|
+
toJsonSchema(): JSONSchema;
|
|
332
|
+
toString(): string;
|
|
333
|
+
/**
|
|
334
|
+
* Validate data (BC with v1).
|
|
335
|
+
* @param data - data to validate
|
|
336
|
+
*/
|
|
337
|
+
private _validator;
|
|
338
|
+
validate(data: unknown): Promise<ValidationResult<unknown>>;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export { DslBuilder as D, type IConditionalBuilder as I, type IDslBuilder as a, type DslDefinition as b, type DslConditionMarker as c, type DslErrorNamespace as d, type DslField as e, type DslFn as f, type DslIfFn as g, type DslInput as h };
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { J as JSONSchema, V as ValidationResult, D as DslConfigOptions } from './plugin-CIKtTMtS.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* IConditionalBuilder interface (shape definition).
|
|
5
|
+
* Implementation class is in src/core/ConditionalBuilder.ts (Phase 8).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
interface IConditionalBuilder {
|
|
9
|
+
and(condition: (data: unknown) => boolean): this;
|
|
10
|
+
or(condition: (data: unknown) => boolean): this;
|
|
11
|
+
/** then/else accept string DSL, JSONSchema, or null (no-op). */
|
|
12
|
+
then(schema: string | JSONSchema | null): this;
|
|
13
|
+
else(schema: string | JSONSchema | null): this;
|
|
14
|
+
elseIf(condition: (data: unknown) => boolean): this;
|
|
15
|
+
message(msg: string): this;
|
|
16
|
+
/** Serialise to a JSON Schema object (internal conditional marker). */
|
|
17
|
+
toSchema(): JSONSchema;
|
|
18
|
+
/** Alias for toSchema(). */
|
|
19
|
+
build(): JSONSchema;
|
|
20
|
+
/** Synchronous assertion; throws ValidationError on failure. */
|
|
21
|
+
assert(data: unknown, options?: Record<string, unknown>): unknown;
|
|
22
|
+
/** Synchronous validation; returns ValidationResult. */
|
|
23
|
+
validate(data: unknown, options?: Record<string, unknown>): ValidationResult<unknown>;
|
|
24
|
+
/** Async validation; returns Promise<ValidationResult>. */
|
|
25
|
+
validateAsync(data: unknown, options?: Record<string, unknown>): Promise<ValidationResult<unknown>>;
|
|
26
|
+
/** Quick boolean check (no error details). */
|
|
27
|
+
check(data: unknown): boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* DslBuilder interface definition (chainable API shape).
|
|
32
|
+
* Implementation class is in src/core/DslBuilder.ts (Phase 7).
|
|
33
|
+
*/
|
|
34
|
+
interface IDslBuilder {
|
|
35
|
+
min(n: number): this;
|
|
36
|
+
max(n: number): this;
|
|
37
|
+
label(text: string): this;
|
|
38
|
+
description(text: string): this;
|
|
39
|
+
pattern(regex: RegExp | string, message?: string): this;
|
|
40
|
+
enum(...values: unknown[]): this;
|
|
41
|
+
optional(): this;
|
|
42
|
+
required(): this;
|
|
43
|
+
default(value: unknown): this;
|
|
44
|
+
error(messages: Record<string, string>): this;
|
|
45
|
+
messages(msgs: Record<string, string>): this;
|
|
46
|
+
format(fmt: string): this;
|
|
47
|
+
custom(validatorFn: (value: unknown) => unknown): this;
|
|
48
|
+
length(n: number): this;
|
|
49
|
+
alphanum(): this;
|
|
50
|
+
trim(): this;
|
|
51
|
+
lowercase(): this;
|
|
52
|
+
uppercase(): this;
|
|
53
|
+
ip(): this;
|
|
54
|
+
base64(): this;
|
|
55
|
+
jwt(): this;
|
|
56
|
+
json(): this;
|
|
57
|
+
domain(): this;
|
|
58
|
+
slug(): this;
|
|
59
|
+
after(date: string): this;
|
|
60
|
+
before(date: string): this;
|
|
61
|
+
dateGreater(date: string): this;
|
|
62
|
+
dateLess(date: string): this;
|
|
63
|
+
dateFormat(fmt: string): this;
|
|
64
|
+
username(preset?: string | {
|
|
65
|
+
minLength?: number;
|
|
66
|
+
maxLength?: number;
|
|
67
|
+
allowUnderscore?: boolean;
|
|
68
|
+
allowNumber?: boolean;
|
|
69
|
+
}): this;
|
|
70
|
+
password(preset?: string): this;
|
|
71
|
+
phone(country?: string): this;
|
|
72
|
+
phoneNumber(country?: string): this;
|
|
73
|
+
idCard(country?: string): this;
|
|
74
|
+
creditCard(type?: string): this;
|
|
75
|
+
licensePlate(country?: string): this;
|
|
76
|
+
postalCode(country?: string): this;
|
|
77
|
+
passport(country?: string): this;
|
|
78
|
+
precision(n: number): this;
|
|
79
|
+
multiple(n: number): this;
|
|
80
|
+
port(): this;
|
|
81
|
+
requireAll(): this;
|
|
82
|
+
strict(): this;
|
|
83
|
+
noSparse(): this;
|
|
84
|
+
includesRequired(items: unknown[]): this;
|
|
85
|
+
toJsonSchema(): JSONSchema;
|
|
86
|
+
toSchema(): JSONSchema;
|
|
87
|
+
toString(): string;
|
|
88
|
+
readonly _isDslBuilder: true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* DSL object definition (key → field mapping).
|
|
92
|
+
* ⚠️ Must be an interface rather than a type alias to support recursive DslField ↔ DslDefinition references.
|
|
93
|
+
*/
|
|
94
|
+
interface DslDefinition {
|
|
95
|
+
[key: string]: DslField;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* v1 conditional field marker (created by dsl.if / dsl.match; compiled to allOf conditional schema during parseObject).
|
|
99
|
+
*/
|
|
100
|
+
interface DslConditionMarker {
|
|
101
|
+
_isIf?: true;
|
|
102
|
+
_isMatch?: true;
|
|
103
|
+
condition?: string;
|
|
104
|
+
field?: string;
|
|
105
|
+
then?: unknown;
|
|
106
|
+
else?: unknown;
|
|
107
|
+
map?: Record<string, unknown>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* DSL field type (recursive definition).
|
|
111
|
+
* String | DslBuilder instance | nested object.
|
|
112
|
+
*/
|
|
113
|
+
type DslField = string | IDslBuilder | DslDefinition | DslConditionMarker;
|
|
114
|
+
/**
|
|
115
|
+
* DslBuilder constructor input (string or nested definition).
|
|
116
|
+
*/
|
|
117
|
+
type DslInput = string | DslDefinition;
|
|
118
|
+
/**
|
|
119
|
+
* if/conditional function types.
|
|
120
|
+
*/
|
|
121
|
+
type DslIfFn = (condition: (data: unknown) => boolean) => IConditionalBuilder;
|
|
122
|
+
type DslFieldIfFn = (condition: string, thenSchema: unknown, elseSchema?: unknown) => DslConditionMarker;
|
|
123
|
+
/**
|
|
124
|
+
* dsl.error namespace.
|
|
125
|
+
*/
|
|
126
|
+
interface DslErrorNamespace {
|
|
127
|
+
readonly [code: string]: string;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* DslFn interface (function overloads + namespace attachments).
|
|
131
|
+
* ⚠️ Uses function overloads rather than union return types to ensure TypeScript type narrowing works correctly.
|
|
132
|
+
*/
|
|
133
|
+
interface DslFn {
|
|
134
|
+
(def: string): IDslBuilder;
|
|
135
|
+
(def: DslDefinition): JSONSchema;
|
|
136
|
+
config: (options?: Partial<DslConfigOptions>) => void;
|
|
137
|
+
if: DslIfFn & DslFieldIfFn;
|
|
138
|
+
_if: DslIfFn & DslFieldIfFn;
|
|
139
|
+
match: (value: unknown, cases: Record<string, unknown>) => DslConditionMarker;
|
|
140
|
+
error: DslErrorNamespace;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* DslBuilder — chainable DSL builder.
|
|
145
|
+
*
|
|
146
|
+
* v2 changes:
|
|
147
|
+
* - Constructor delegates to DslParser.parseString() (fixes DA-01/DA-02/DA-03)
|
|
148
|
+
* - Custom type registration delegates to TypeRegistry (fixes DB-01/DB-02: unifies three type lists)
|
|
149
|
+
* - _customMessages merges instead of overwriting (fixes v1 overwrite bug)
|
|
150
|
+
* - Implements IDslBuilder interface (error/optional/required/enum chain methods)
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
type CustomValidatorFn = (value: unknown) => unknown;
|
|
154
|
+
declare class DslBuilder implements IDslBuilder {
|
|
155
|
+
readonly _isDslBuilder: true;
|
|
156
|
+
/** schema-dsl custom validation keyword set (stripped during toJsonSchema). */
|
|
157
|
+
static readonly _internalKeys: ReadonlySet<string>;
|
|
158
|
+
/** Custom type cache (BC with v1 DslBuilder._customTypes). */
|
|
159
|
+
private static readonly _customTypes;
|
|
160
|
+
private _baseSchema;
|
|
161
|
+
private _required;
|
|
162
|
+
private _optional;
|
|
163
|
+
private _customMessages;
|
|
164
|
+
private _label;
|
|
165
|
+
private _description;
|
|
166
|
+
private _customValidators;
|
|
167
|
+
private _whenConditions;
|
|
168
|
+
constructor(dslString: string);
|
|
169
|
+
/**
|
|
170
|
+
* Parse DSL body (without ! or ?).
|
|
171
|
+
* Delegates to the unified parser so string and builder DSL parsing stay in lockstep.
|
|
172
|
+
*/
|
|
173
|
+
private static _parseBody;
|
|
174
|
+
/**
|
|
175
|
+
* Register a custom type (delegates to TypeRegistry).
|
|
176
|
+
*/
|
|
177
|
+
static registerType(name: string, schema: JSONSchema | (() => JSONSchema)): void;
|
|
178
|
+
/** Check whether a type is registered (built-in or custom). */
|
|
179
|
+
static hasType(type: string): boolean;
|
|
180
|
+
/** Get all registered custom type names. */
|
|
181
|
+
static getCustomTypes(): string[];
|
|
182
|
+
/** Clear all custom types (primarily for testing). */
|
|
183
|
+
static clearCustomTypes(): void;
|
|
184
|
+
/**
|
|
185
|
+
* Validate schema nesting depth.
|
|
186
|
+
* @param schema - JSON Schema to validate
|
|
187
|
+
* @param maxDepth - maximum allowed depth (default 3)
|
|
188
|
+
*/
|
|
189
|
+
static validateNestingDepth(schema: JSONSchema, maxDepth?: number): {
|
|
190
|
+
valid: boolean;
|
|
191
|
+
depth: number;
|
|
192
|
+
path: string;
|
|
193
|
+
message: string;
|
|
194
|
+
};
|
|
195
|
+
private _assertType;
|
|
196
|
+
private _assertStringType;
|
|
197
|
+
private _assertNumberType;
|
|
198
|
+
private _assertObjectType;
|
|
199
|
+
private _assertArrayType;
|
|
200
|
+
/**
|
|
201
|
+
* Set format.
|
|
202
|
+
*/
|
|
203
|
+
format(fmt: string): this;
|
|
204
|
+
/**
|
|
205
|
+
* Add regex validation.
|
|
206
|
+
*/
|
|
207
|
+
pattern(regex: RegExp | string, message?: string): this;
|
|
208
|
+
/**
|
|
209
|
+
* Custom error messages (IDslBuilder: error; BC alias: messages).
|
|
210
|
+
*/
|
|
211
|
+
messages(msgs: Record<string, string>): this;
|
|
212
|
+
/** IDslBuilder.error — alias for messages() */
|
|
213
|
+
error(msgs: Record<string, string>): this;
|
|
214
|
+
/**
|
|
215
|
+
* Set field label (used in error messages).
|
|
216
|
+
*/
|
|
217
|
+
label(text: string): this;
|
|
218
|
+
/**
|
|
219
|
+
* Set description.
|
|
220
|
+
*/
|
|
221
|
+
description(text: string): this;
|
|
222
|
+
/**
|
|
223
|
+
* Set default value.
|
|
224
|
+
*/
|
|
225
|
+
default(value: unknown): this;
|
|
226
|
+
/**
|
|
227
|
+
* Set allowed enum values (IDslBuilder).
|
|
228
|
+
*/
|
|
229
|
+
enum(...values: unknown[]): this;
|
|
230
|
+
/**
|
|
231
|
+
* Mark field as optional.
|
|
232
|
+
*/
|
|
233
|
+
optional(): this;
|
|
234
|
+
/**
|
|
235
|
+
* Mark field as required.
|
|
236
|
+
*/
|
|
237
|
+
required(): this;
|
|
238
|
+
/**
|
|
239
|
+
* Add a custom validator function.
|
|
240
|
+
*/
|
|
241
|
+
custom(validatorFn: CustomValidatorFn): this;
|
|
242
|
+
/** String minimum length. */
|
|
243
|
+
min(n: number): this;
|
|
244
|
+
/** String maximum length. */
|
|
245
|
+
max(n: number): this;
|
|
246
|
+
/** String exact length (→ exactLength custom keyword). */
|
|
247
|
+
length(n: number): this;
|
|
248
|
+
/** String: only alphanumeric characters allowed. */
|
|
249
|
+
alphanum(): this;
|
|
250
|
+
/** String: no leading/trailing whitespace. */
|
|
251
|
+
trim(): this;
|
|
252
|
+
/** String: must be lowercase. */
|
|
253
|
+
lowercase(): this;
|
|
254
|
+
/** String: must be uppercase. */
|
|
255
|
+
uppercase(): this;
|
|
256
|
+
/** String: must be a valid JSON string. */
|
|
257
|
+
json(): this;
|
|
258
|
+
/** String date format validation. */
|
|
259
|
+
dateFormat(fmt: string): this;
|
|
260
|
+
/** String: must be after the given date. */
|
|
261
|
+
after(date: string): this;
|
|
262
|
+
/** String: must be before the given date. */
|
|
263
|
+
before(date: string): this;
|
|
264
|
+
/** v1.0.2 alias: dateGreater. */
|
|
265
|
+
dateGreater(date: string): this;
|
|
266
|
+
/** v1.0.2 alias: dateLess. */
|
|
267
|
+
dateLess(date: string): this;
|
|
268
|
+
/** String slug format validation. */
|
|
269
|
+
slug(): this;
|
|
270
|
+
/** String domain validation. */
|
|
271
|
+
domain(): this;
|
|
272
|
+
/** String IP address validation (IPv4 or IPv6). */
|
|
273
|
+
ip(): this;
|
|
274
|
+
/** String Base64 encoding validation. */
|
|
275
|
+
base64(): this;
|
|
276
|
+
/** String JWT token validation. */
|
|
277
|
+
jwt(): this;
|
|
278
|
+
/** Phone number validation (auto-corrects number → string). */
|
|
279
|
+
phone(country?: string): this;
|
|
280
|
+
/** phone() alias (BC). */
|
|
281
|
+
phoneNumber(country?: string): this;
|
|
282
|
+
/** National ID (idCard) validation. */
|
|
283
|
+
idCard(country?: string): this;
|
|
284
|
+
/** URL slug validation. */
|
|
285
|
+
slugChain(): this;
|
|
286
|
+
/** Credit card number validation. */
|
|
287
|
+
creditCard(type?: string): this;
|
|
288
|
+
/** Vehicle license plate validation. */
|
|
289
|
+
licensePlate(country?: string): this;
|
|
290
|
+
/** Postal code validation. */
|
|
291
|
+
postalCode(country?: string): this;
|
|
292
|
+
/** Passport number validation. */
|
|
293
|
+
passport(country?: string): this;
|
|
294
|
+
/**
|
|
295
|
+
* Username validation.
|
|
296
|
+
* @param preset - 'short'(3-16) | 'medium'(3-32) | 'long'(3-64) | 'N-M' | object
|
|
297
|
+
*/
|
|
298
|
+
username(preset?: string | {
|
|
299
|
+
minLength?: number;
|
|
300
|
+
maxLength?: number;
|
|
301
|
+
allowUnderscore?: boolean;
|
|
302
|
+
allowNumber?: boolean;
|
|
303
|
+
}): this;
|
|
304
|
+
/**
|
|
305
|
+
* Password strength validation.
|
|
306
|
+
* @param strength - 'weak' | 'medium' | 'strong' | 'veryStrong'
|
|
307
|
+
*/
|
|
308
|
+
password(strength?: string): this;
|
|
309
|
+
/** Number decimal places limit. */
|
|
310
|
+
precision(n: number): this;
|
|
311
|
+
/** Number multiple-of validation (standard JSON Schema multipleOf). */
|
|
312
|
+
multiple(n: number): this;
|
|
313
|
+
/** Number port validation (1–65535). */
|
|
314
|
+
port(): this;
|
|
315
|
+
/** Object: all defined properties are required. */
|
|
316
|
+
requireAll(): this;
|
|
317
|
+
/** Object strict mode: no additional properties allowed. */
|
|
318
|
+
strict(): this;
|
|
319
|
+
/** Array: sparse arrays are not allowed. */
|
|
320
|
+
noSparse(): this;
|
|
321
|
+
/** Array: must contain the specified element. */
|
|
322
|
+
includesRequired(items: unknown[]): this;
|
|
323
|
+
/**
|
|
324
|
+
* Convert to a schema with schema-dsl internal fields (for use by Validator).
|
|
325
|
+
*/
|
|
326
|
+
toSchema(): JSONSchema;
|
|
327
|
+
/**
|
|
328
|
+
* Output a clean JSON Schema (strips all schema-dsl internal fields and custom keywords).
|
|
329
|
+
* Can be embedded directly in OpenAPI / standard JSON Schema documents.
|
|
330
|
+
*/
|
|
331
|
+
toJsonSchema(): JSONSchema;
|
|
332
|
+
toString(): string;
|
|
333
|
+
/**
|
|
334
|
+
* Validate data (BC with v1).
|
|
335
|
+
* @param data - data to validate
|
|
336
|
+
*/
|
|
337
|
+
private _validator;
|
|
338
|
+
validate(data: unknown): Promise<ValidationResult<unknown>>;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export { DslBuilder as D, type IConditionalBuilder as I, type IDslBuilder as a, type DslDefinition as b, type DslConditionMarker as c, type DslErrorNamespace as d, type DslField as e, type DslFn as f, type DslIfFn as g, type DslInput as h };
|