schema-dsl 2.0.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 +130 -113
- package/LICENSE +21 -21
- package/README.md +628 -628
- package/dist/{DslBuilder-DkLaOo9Q.d.ts → DslBuilder-BIgQOAXp.d.ts} +2 -0
- package/dist/{DslBuilder-DQDN0ZxZ.d.cts → DslBuilder-CjHTucNQ.d.cts} +2 -0
- package/dist/{Validator-hFWKGxir.d.ts → Validator-CllRdrY0.d.ts} +1 -1
- package/dist/{Validator-C7GsVQOH.d.cts → Validator-D6okG9tr.d.cts} +1 -1
- package/dist/index.cjs +75 -29
- package/dist/index.d.cts +10 -4
- package/dist/index.d.ts +10 -4
- package/dist/index.js +75 -29
- package/dist/plugins/custom-format.cjs +33 -17
- package/dist/plugins/custom-format.d.cts +1 -1
- package/dist/plugins/custom-format.d.ts +1 -1
- package/dist/plugins/custom-format.js +33 -17
- package/dist/plugins/custom-type-example.cjs +33 -17
- package/dist/plugins/custom-type-example.d.cts +1 -1
- package/dist/plugins/custom-type-example.d.ts +1 -1
- package/dist/plugins/custom-type-example.js +33 -17
- package/dist/plugins/custom-validator.cjs +0 -2
- package/dist/plugins/custom-validator.d.cts +1 -1
- package/dist/plugins/custom-validator.d.ts +1 -1
- package/dist/plugins/custom-validator.js +0 -2
- package/docs/FEATURE-INDEX.md +553 -553
- package/docs/add-custom-locale.md +496 -496
- package/docs/add-keyword.md +24 -24
- package/docs/api-reference.md +1047 -1047
- package/docs/api.md +13 -13
- package/docs/best-practices-project-structure.md +417 -417
- package/docs/best-practices.md +712 -712
- package/docs/cache-manager.md +344 -344
- package/docs/compile.md +45 -45
- package/docs/conditional-api.md +1307 -1307
- package/docs/custom-extensions-guide.md +339 -339
- package/docs/design-philosophy.md +606 -606
- package/docs/doc-index.md +324 -324
- package/docs/dsl-syntax.md +714 -714
- package/docs/dynamic-locale.md +608 -608
- package/docs/enum.md +482 -482
- package/docs/error-handling.md +1975 -1975
- package/docs/export-guide.md +501 -501
- package/docs/export-limitations.md +567 -567
- package/docs/faq.md +596 -596
- package/docs/frontend-i18n-guide.md +307 -307
- package/docs/i18n-user-guide.md +487 -487
- package/docs/i18n.md +476 -476
- package/docs/index.md +48 -48
- package/docs/json-schema-basics.md +40 -40
- package/docs/label-vs-description.md +271 -271
- package/docs/markdown-exporter.md +406 -406
- package/docs/mongodb-exporter.md +302 -302
- package/docs/multi-language.md +26 -26
- package/docs/multi-type-support.md +322 -322
- package/docs/mysql-exporter.md +280 -280
- package/docs/number-operators.md +449 -449
- package/docs/optional-marker-guide.md +326 -326
- package/docs/performance-guide.md +49 -49
- package/docs/plugin-system.md +381 -381
- package/docs/plugin-type-registration.md +34 -34
- package/docs/postgresql-exporter.md +311 -311
- package/docs/public/favicon.svg +4 -4
- package/docs/quick-start.md +435 -435
- package/docs/runtime-locale-support.md +532 -532
- package/docs/schema-helper.md +345 -345
- package/docs/schema-utils-advanced-issues.md +23 -23
- package/docs/schema-utils-best-practices.md +20 -20
- package/docs/schema-utils-chaining.md +150 -150
- package/docs/schema-utils.md +524 -524
- package/docs/security-checklist.md +20 -20
- package/docs/string-extensions.md +488 -488
- package/docs/troubleshooting.md +486 -486
- package/docs/type-converter.md +310 -310
- package/docs/type-reference.md +242 -242
- package/docs/typescript-guide.md +584 -584
- package/docs/union-type-guide.md +157 -157
- package/docs/union-types.md +284 -284
- package/docs/validate-async.md +491 -491
- package/docs/validate-batch.md +49 -49
- package/docs/validate-dsl-object-support.md +578 -578
- package/docs/validate.md +506 -506
- package/docs/validation-guide.md +502 -502
- package/docs/validator.md +39 -39
- package/package.json +131 -131
- package/plugins/custom-format.cjs +8 -8
- package/plugins/custom-type-example.cjs +8 -8
- package/plugins/custom-validator.cjs +8 -8
- package/src/adapters/DslAdapter.ts +111 -111
- package/src/adapters/index.ts +1 -1
- package/src/config/constants.ts +83 -83
- package/src/config/index.ts +2 -2
- package/src/config/patterns.ts +77 -77
- package/src/core/CacheManager.ts +169 -159
- package/src/core/ConditionalBuilder.ts +382 -382
- package/src/core/ConditionalRuntime.ts +27 -27
- package/src/core/ConditionalValidator.ts +254 -254
- package/src/core/DslBuilder.ts +687 -677
- package/src/core/ErrorCodes.ts +38 -38
- package/src/core/ErrorFormatter.ts +271 -271
- package/src/core/JSONSchemaCore.ts +65 -65
- package/src/core/Locale.ts +187 -187
- package/src/core/MessageTemplate.ts +42 -42
- package/src/core/ObjectDslBuilder.ts +64 -64
- package/src/core/PluginManager.ts +326 -326
- package/src/core/StringExtensions.ts +140 -140
- package/src/core/TemplateEngine.ts +44 -44
- package/src/core/Validator.ts +448 -448
- package/src/errors/I18nError.ts +159 -159
- package/src/errors/ValidationError.ts +105 -105
- package/src/exporters/BaseExporter.ts +60 -60
- package/src/exporters/MarkdownExporter.ts +305 -305
- package/src/exporters/MongoDBExporter.ts +126 -126
- package/src/exporters/MySQLExporter.ts +156 -155
- package/src/exporters/PostgreSQLExporter.ts +222 -222
- package/src/exporters/index.ts +18 -18
- package/src/index.ts +651 -633
- package/src/locales/en-US.ts +160 -160
- package/src/locales/es-ES.ts +160 -160
- package/src/locales/fr-FR.ts +160 -160
- package/src/locales/index.ts +103 -103
- package/src/locales/ja-JP.ts +160 -160
- package/src/locales/types.ts +156 -156
- package/src/locales/zh-CN.ts +160 -160
- package/src/parser/ConstraintParser.ts +101 -101
- package/src/parser/DslParser.ts +470 -470
- package/src/parser/SchemaCompiler.ts +66 -66
- package/src/parser/TypeRegistry.ts +250 -250
- package/src/parser/index.ts +6 -6
- package/src/plugins/custom-format.ts +124 -126
- package/src/plugins/custom-type-example.ts +106 -108
- package/src/plugins/custom-validator.ts +138 -140
- package/src/types/conditional.ts +28 -28
- package/src/types/config.ts +59 -59
- package/src/types/dsl.ts +131 -131
- package/src/types/error.ts +60 -60
- package/src/types/index.ts +17 -17
- package/src/types/infer.ts +127 -127
- package/src/types/plugin.ts +58 -58
- package/src/types/safe-regex.d.ts +9 -9
- package/src/types/schema.ts +66 -66
- package/src/types/validate.ts +71 -71
- package/src/utils/SchemaHelper.ts +196 -196
- package/src/utils/SchemaUtils.ts +365 -346
- package/src/utils/TypeConverter.ts +215 -215
- package/src/utils/index.ts +10 -10
- package/src/validators/CustomKeywords.ts +477 -477
package/src/types/dsl.ts
CHANGED
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
import type { JSONSchema } from './schema.js'
|
|
2
|
-
import type { DslConfigOptions } from './config.js'
|
|
3
|
-
import type { IConditionalBuilder } from './conditional.js'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* DslBuilder interface definition (chainable API shape).
|
|
7
|
-
* Implementation class is in src/core/DslBuilder.ts (Phase 7).
|
|
8
|
-
*/
|
|
9
|
-
export interface IDslBuilder {
|
|
10
|
-
// ── Core constraint methods ──────────────────────────────────
|
|
11
|
-
min(n: number): this
|
|
12
|
-
max(n: number): this
|
|
13
|
-
label(text: string): this
|
|
14
|
-
description(text: string): this
|
|
15
|
-
pattern(regex: RegExp | string, message?: string): this
|
|
16
|
-
enum(...values: unknown[]): this
|
|
17
|
-
optional(): this
|
|
18
|
-
required(): this
|
|
19
|
-
default(value: unknown): this
|
|
20
|
-
error(messages: Record<string, string>): this
|
|
21
|
-
messages(msgs: Record<string, string>): this
|
|
22
|
-
format(fmt: string): this
|
|
23
|
-
custom(validatorFn: (value: unknown) => unknown): this
|
|
24
|
-
|
|
25
|
-
// ── String validators ────────────────────────────────────────
|
|
26
|
-
length(n: number): this
|
|
27
|
-
alphanum(): this
|
|
28
|
-
trim(): this
|
|
29
|
-
lowercase(): this
|
|
30
|
-
uppercase(): this
|
|
31
|
-
ip(): this
|
|
32
|
-
base64(): this
|
|
33
|
-
jwt(): this
|
|
34
|
-
json(): this
|
|
35
|
-
domain(): this
|
|
36
|
-
slug(): this
|
|
37
|
-
after(date: string): this
|
|
38
|
-
before(date: string): this
|
|
39
|
-
dateGreater(date: string): this
|
|
40
|
-
dateLess(date: string): this
|
|
41
|
-
dateFormat(fmt: string): this
|
|
42
|
-
username(preset?: string | { minLength?: number; maxLength?: number; allowUnderscore?: boolean; allowNumber?: boolean }): this
|
|
43
|
-
password(preset?: string): this
|
|
44
|
-
phone(country?: string): this
|
|
45
|
-
phoneNumber(country?: string): this
|
|
46
|
-
idCard(country?: string): this
|
|
47
|
-
creditCard(type?: string): this
|
|
48
|
-
licensePlate(country?: string): this
|
|
49
|
-
postalCode(country?: string): this
|
|
50
|
-
passport(country?: string): this
|
|
51
|
-
|
|
52
|
-
// ── Number validators ────────────────────────────────────────
|
|
53
|
-
precision(n: number): this
|
|
54
|
-
multiple(n: number): this
|
|
55
|
-
port(): this
|
|
56
|
-
|
|
57
|
-
// ── Object validators ────────────────────────────────────────
|
|
58
|
-
requireAll(): this
|
|
59
|
-
strict(): this
|
|
60
|
-
|
|
61
|
-
// ── Array validators ─────────────────────────────────────────
|
|
62
|
-
noSparse(): this
|
|
63
|
-
includesRequired(items: unknown[]): this
|
|
64
|
-
|
|
65
|
-
// ── Output ───────────────────────────────────────────────────
|
|
66
|
-
toJsonSchema(): JSONSchema
|
|
67
|
-
toSchema(): JSONSchema
|
|
68
|
-
toString(): string
|
|
69
|
-
|
|
70
|
-
// ── Internal marker ──────────────────────────────────────────
|
|
71
|
-
readonly _isDslBuilder: true
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* DSL object definition (key → field mapping).
|
|
76
|
-
* ⚠️ Must be an interface rather than a type alias to support recursive DslField ↔ DslDefinition references.
|
|
77
|
-
*/
|
|
78
|
-
export interface DslDefinition {
|
|
79
|
-
[key: string]: DslField
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* v1 conditional field marker (created by dsl.if / dsl.match; compiled to allOf conditional schema during parseObject).
|
|
84
|
-
*/
|
|
85
|
-
export interface DslConditionMarker {
|
|
86
|
-
_isIf?: true
|
|
87
|
-
_isMatch?: true
|
|
88
|
-
condition?: string
|
|
89
|
-
field?: string
|
|
90
|
-
then?: unknown
|
|
91
|
-
else?: unknown
|
|
92
|
-
map?: Record<string, unknown>
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* DSL field type (recursive definition).
|
|
97
|
-
* String | DslBuilder instance | nested object.
|
|
98
|
-
*/
|
|
99
|
-
export type DslField = string | IDslBuilder | DslDefinition | DslConditionMarker
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* DslBuilder constructor input (string or nested definition).
|
|
103
|
-
*/
|
|
104
|
-
export type DslInput = string | DslDefinition
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* if/conditional function types.
|
|
108
|
-
*/
|
|
109
|
-
export type DslIfFn = (condition: (data: unknown) => boolean) => IConditionalBuilder
|
|
110
|
-
export type DslFieldIfFn = (condition: string, thenSchema: unknown, elseSchema?: unknown) => DslConditionMarker
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* dsl.error namespace.
|
|
114
|
-
*/
|
|
115
|
-
export interface DslErrorNamespace {
|
|
116
|
-
readonly [code: string]: string
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* DslFn interface (function overloads + namespace attachments).
|
|
121
|
-
* ⚠️ Uses function overloads rather than union return types to ensure TypeScript type narrowing works correctly.
|
|
122
|
-
*/
|
|
123
|
-
export interface DslFn {
|
|
124
|
-
(def: string): IDslBuilder
|
|
125
|
-
(def: DslDefinition): JSONSchema
|
|
126
|
-
config: (options?: Partial<DslConfigOptions>) => void
|
|
127
|
-
if: DslIfFn & DslFieldIfFn
|
|
128
|
-
_if: DslIfFn & DslFieldIfFn
|
|
129
|
-
match: (value: unknown, cases: Record<string, unknown>) => DslConditionMarker
|
|
130
|
-
error: DslErrorNamespace
|
|
131
|
-
}
|
|
1
|
+
import type { JSONSchema } from './schema.js'
|
|
2
|
+
import type { DslConfigOptions } from './config.js'
|
|
3
|
+
import type { IConditionalBuilder } from './conditional.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* DslBuilder interface definition (chainable API shape).
|
|
7
|
+
* Implementation class is in src/core/DslBuilder.ts (Phase 7).
|
|
8
|
+
*/
|
|
9
|
+
export interface IDslBuilder {
|
|
10
|
+
// ── Core constraint methods ──────────────────────────────────
|
|
11
|
+
min(n: number): this
|
|
12
|
+
max(n: number): this
|
|
13
|
+
label(text: string): this
|
|
14
|
+
description(text: string): this
|
|
15
|
+
pattern(regex: RegExp | string, message?: string): this
|
|
16
|
+
enum(...values: unknown[]): this
|
|
17
|
+
optional(): this
|
|
18
|
+
required(): this
|
|
19
|
+
default(value: unknown): this
|
|
20
|
+
error(messages: Record<string, string>): this
|
|
21
|
+
messages(msgs: Record<string, string>): this
|
|
22
|
+
format(fmt: string): this
|
|
23
|
+
custom(validatorFn: (value: unknown) => unknown): this
|
|
24
|
+
|
|
25
|
+
// ── String validators ────────────────────────────────────────
|
|
26
|
+
length(n: number): this
|
|
27
|
+
alphanum(): this
|
|
28
|
+
trim(): this
|
|
29
|
+
lowercase(): this
|
|
30
|
+
uppercase(): this
|
|
31
|
+
ip(): this
|
|
32
|
+
base64(): this
|
|
33
|
+
jwt(): this
|
|
34
|
+
json(): this
|
|
35
|
+
domain(): this
|
|
36
|
+
slug(): this
|
|
37
|
+
after(date: string): this
|
|
38
|
+
before(date: string): this
|
|
39
|
+
dateGreater(date: string): this
|
|
40
|
+
dateLess(date: string): this
|
|
41
|
+
dateFormat(fmt: string): this
|
|
42
|
+
username(preset?: string | { minLength?: number; maxLength?: number; allowUnderscore?: boolean; allowNumber?: boolean }): this
|
|
43
|
+
password(preset?: string): this
|
|
44
|
+
phone(country?: string): this
|
|
45
|
+
phoneNumber(country?: string): this
|
|
46
|
+
idCard(country?: string): this
|
|
47
|
+
creditCard(type?: string): this
|
|
48
|
+
licensePlate(country?: string): this
|
|
49
|
+
postalCode(country?: string): this
|
|
50
|
+
passport(country?: string): this
|
|
51
|
+
|
|
52
|
+
// ── Number validators ────────────────────────────────────────
|
|
53
|
+
precision(n: number): this
|
|
54
|
+
multiple(n: number): this
|
|
55
|
+
port(): this
|
|
56
|
+
|
|
57
|
+
// ── Object validators ────────────────────────────────────────
|
|
58
|
+
requireAll(): this
|
|
59
|
+
strict(): this
|
|
60
|
+
|
|
61
|
+
// ── Array validators ─────────────────────────────────────────
|
|
62
|
+
noSparse(): this
|
|
63
|
+
includesRequired(items: unknown[]): this
|
|
64
|
+
|
|
65
|
+
// ── Output ───────────────────────────────────────────────────
|
|
66
|
+
toJsonSchema(): JSONSchema
|
|
67
|
+
toSchema(): JSONSchema
|
|
68
|
+
toString(): string
|
|
69
|
+
|
|
70
|
+
// ── Internal marker ──────────────────────────────────────────
|
|
71
|
+
readonly _isDslBuilder: true
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* DSL object definition (key → field mapping).
|
|
76
|
+
* ⚠️ Must be an interface rather than a type alias to support recursive DslField ↔ DslDefinition references.
|
|
77
|
+
*/
|
|
78
|
+
export interface DslDefinition {
|
|
79
|
+
[key: string]: DslField
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* v1 conditional field marker (created by dsl.if / dsl.match; compiled to allOf conditional schema during parseObject).
|
|
84
|
+
*/
|
|
85
|
+
export interface DslConditionMarker {
|
|
86
|
+
_isIf?: true
|
|
87
|
+
_isMatch?: true
|
|
88
|
+
condition?: string
|
|
89
|
+
field?: string
|
|
90
|
+
then?: unknown
|
|
91
|
+
else?: unknown
|
|
92
|
+
map?: Record<string, unknown>
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* DSL field type (recursive definition).
|
|
97
|
+
* String | DslBuilder instance | nested object.
|
|
98
|
+
*/
|
|
99
|
+
export type DslField = string | IDslBuilder | DslDefinition | DslConditionMarker
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* DslBuilder constructor input (string or nested definition).
|
|
103
|
+
*/
|
|
104
|
+
export type DslInput = string | DslDefinition
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* if/conditional function types.
|
|
108
|
+
*/
|
|
109
|
+
export type DslIfFn = (condition: (data: unknown) => boolean) => IConditionalBuilder
|
|
110
|
+
export type DslFieldIfFn = (condition: string, thenSchema: unknown, elseSchema?: unknown) => DslConditionMarker
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* dsl.error namespace.
|
|
114
|
+
*/
|
|
115
|
+
export interface DslErrorNamespace {
|
|
116
|
+
readonly [code: string]: string
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* DslFn interface (function overloads + namespace attachments).
|
|
121
|
+
* ⚠️ Uses function overloads rather than union return types to ensure TypeScript type narrowing works correctly.
|
|
122
|
+
*/
|
|
123
|
+
export interface DslFn {
|
|
124
|
+
(def: string): IDslBuilder
|
|
125
|
+
(def: DslDefinition): JSONSchema
|
|
126
|
+
config: (options?: Partial<DslConfigOptions>) => void
|
|
127
|
+
if: DslIfFn & DslFieldIfFn
|
|
128
|
+
_if: DslIfFn & DslFieldIfFn
|
|
129
|
+
match: (value: unknown, cases: Record<string, unknown>) => DslConditionMarker
|
|
130
|
+
error: DslErrorNamespace
|
|
131
|
+
}
|
package/src/types/error.ts
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error message templates (custom validation error copy).
|
|
3
|
-
*/
|
|
4
|
-
export interface ErrorMessages {
|
|
5
|
-
// Length / range (v1.0.3+ recommends min/max over minLength/maximum etc.)
|
|
6
|
-
min?: string
|
|
7
|
-
max?: string
|
|
8
|
-
minLength?: string
|
|
9
|
-
maxLength?: string
|
|
10
|
-
minimum?: string
|
|
11
|
-
maximum?: string
|
|
12
|
-
minItems?: string
|
|
13
|
-
maxItems?: string
|
|
14
|
-
// Types
|
|
15
|
-
type?: string
|
|
16
|
-
string?: string
|
|
17
|
-
number?: string
|
|
18
|
-
integer?: string
|
|
19
|
-
boolean?: string
|
|
20
|
-
array?: string
|
|
21
|
-
object?: string
|
|
22
|
-
// Formats
|
|
23
|
-
email?: string
|
|
24
|
-
url?: string
|
|
25
|
-
date?: string
|
|
26
|
-
dateTime?: string
|
|
27
|
-
uuid?: string
|
|
28
|
-
ipv4?: string
|
|
29
|
-
ipv6?: string
|
|
30
|
-
// Other
|
|
31
|
-
pattern?: string
|
|
32
|
-
format?: string
|
|
33
|
-
required?: string
|
|
34
|
-
enum?: string
|
|
35
|
-
uniqueItems?: string
|
|
36
|
-
// Custom keywords
|
|
37
|
-
exactLength?: string
|
|
38
|
-
phone?: string
|
|
39
|
-
idCard?: string
|
|
40
|
-
creditCard?: string
|
|
41
|
-
// Extensible
|
|
42
|
-
[key: string]: string | undefined
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Error code constant type (shape of the ErrorCodes object).
|
|
47
|
-
*/
|
|
48
|
-
export interface ErrorCodeMap {
|
|
49
|
-
// Validation errors
|
|
50
|
-
VALIDATION_ERROR: 'VALIDATION_ERROR'
|
|
51
|
-
INVALID_SCHEMA: 'INVALID_SCHEMA'
|
|
52
|
-
// Config errors
|
|
53
|
-
INVALID_CONFIG: 'INVALID_CONFIG'
|
|
54
|
-
INVALID_LOCALE: 'INVALID_LOCALE'
|
|
55
|
-
// Plugin errors
|
|
56
|
-
PLUGIN_INSTALL_ERROR: 'PLUGIN_INSTALL_ERROR'
|
|
57
|
-
PLUGIN_NOT_FOUND: 'PLUGIN_NOT_FOUND'
|
|
58
|
-
// Extensible
|
|
59
|
-
[key: string]: string
|
|
60
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Error message templates (custom validation error copy).
|
|
3
|
+
*/
|
|
4
|
+
export interface ErrorMessages {
|
|
5
|
+
// Length / range (v1.0.3+ recommends min/max over minLength/maximum etc.)
|
|
6
|
+
min?: string
|
|
7
|
+
max?: string
|
|
8
|
+
minLength?: string
|
|
9
|
+
maxLength?: string
|
|
10
|
+
minimum?: string
|
|
11
|
+
maximum?: string
|
|
12
|
+
minItems?: string
|
|
13
|
+
maxItems?: string
|
|
14
|
+
// Types
|
|
15
|
+
type?: string
|
|
16
|
+
string?: string
|
|
17
|
+
number?: string
|
|
18
|
+
integer?: string
|
|
19
|
+
boolean?: string
|
|
20
|
+
array?: string
|
|
21
|
+
object?: string
|
|
22
|
+
// Formats
|
|
23
|
+
email?: string
|
|
24
|
+
url?: string
|
|
25
|
+
date?: string
|
|
26
|
+
dateTime?: string
|
|
27
|
+
uuid?: string
|
|
28
|
+
ipv4?: string
|
|
29
|
+
ipv6?: string
|
|
30
|
+
// Other
|
|
31
|
+
pattern?: string
|
|
32
|
+
format?: string
|
|
33
|
+
required?: string
|
|
34
|
+
enum?: string
|
|
35
|
+
uniqueItems?: string
|
|
36
|
+
// Custom keywords
|
|
37
|
+
exactLength?: string
|
|
38
|
+
phone?: string
|
|
39
|
+
idCard?: string
|
|
40
|
+
creditCard?: string
|
|
41
|
+
// Extensible
|
|
42
|
+
[key: string]: string | undefined
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Error code constant type (shape of the ErrorCodes object).
|
|
47
|
+
*/
|
|
48
|
+
export interface ErrorCodeMap {
|
|
49
|
+
// Validation errors
|
|
50
|
+
VALIDATION_ERROR: 'VALIDATION_ERROR'
|
|
51
|
+
INVALID_SCHEMA: 'INVALID_SCHEMA'
|
|
52
|
+
// Config errors
|
|
53
|
+
INVALID_CONFIG: 'INVALID_CONFIG'
|
|
54
|
+
INVALID_LOCALE: 'INVALID_LOCALE'
|
|
55
|
+
// Plugin errors
|
|
56
|
+
PLUGIN_INSTALL_ERROR: 'PLUGIN_INSTALL_ERROR'
|
|
57
|
+
PLUGIN_NOT_FOUND: 'PLUGIN_NOT_FOUND'
|
|
58
|
+
// Extensible
|
|
59
|
+
[key: string]: string
|
|
60
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// --- Core types ---
|
|
2
|
-
export type { JSONSchema, SchemaIOOptions } from './schema.js'
|
|
3
|
-
export type {
|
|
4
|
-
DslFn,
|
|
5
|
-
DslField,
|
|
6
|
-
DslDefinition,
|
|
7
|
-
DslInput,
|
|
8
|
-
IDslBuilder,
|
|
9
|
-
DslIfFn,
|
|
10
|
-
DslErrorNamespace,
|
|
11
|
-
} from './dsl.js'
|
|
12
|
-
export type { ValidateOptions, ValidationResult, ValidationErrorItem, AjvError } from './validate.js'
|
|
13
|
-
export type { DslConfigOptions, I18nConfig, CacheOptions, ValidatorOptions } from './config.js'
|
|
14
|
-
export type { ErrorMessages, ErrorCodeMap } from './error.js'
|
|
15
|
-
export type { Plugin, HookFn, HookName, HookContext, PluginManagerOptions } from './plugin.js'
|
|
16
|
-
export type { IConditionalBuilder } from './conditional.js'
|
|
17
|
-
export type { InferSchema, InferJsonSchema, InferDslDefinition, InferDslString } from './infer.js'
|
|
1
|
+
// --- Core types ---
|
|
2
|
+
export type { JSONSchema, SchemaIOOptions } from './schema.js'
|
|
3
|
+
export type {
|
|
4
|
+
DslFn,
|
|
5
|
+
DslField,
|
|
6
|
+
DslDefinition,
|
|
7
|
+
DslInput,
|
|
8
|
+
IDslBuilder,
|
|
9
|
+
DslIfFn,
|
|
10
|
+
DslErrorNamespace,
|
|
11
|
+
} from './dsl.js'
|
|
12
|
+
export type { ValidateOptions, ValidationResult, ValidationErrorItem, AjvError } from './validate.js'
|
|
13
|
+
export type { DslConfigOptions, I18nConfig, CacheOptions, ValidatorOptions } from './config.js'
|
|
14
|
+
export type { ErrorMessages, ErrorCodeMap } from './error.js'
|
|
15
|
+
export type { Plugin, HookFn, HookName, HookContext, PluginManagerOptions } from './plugin.js'
|
|
16
|
+
export type { IConditionalBuilder } from './conditional.js'
|
|
17
|
+
export type { InferSchema, InferJsonSchema, InferDslDefinition, InferDslString } from './infer.js'
|