schema-dsl 1.2.5 → 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 -238
- package/LICENSE +21 -21
- package/README.md +628 -2486
- package/dist/DslBuilder-BIgQOAXp.d.ts +343 -0
- package/dist/DslBuilder-CjHTucNQ.d.cts +343 -0
- package/dist/Validator-CllRdrY0.d.ts +192 -0
- package/dist/Validator-D6okG9tr.d.cts +192 -0
- package/dist/index.cjs +6640 -0
- package/dist/index.d.cts +1151 -0
- package/dist/index.d.ts +1151 -0
- package/dist/index.js +6574 -0
- package/dist/plugin-CIKtTMtS.d.cts +246 -0
- package/dist/plugin-CIKtTMtS.d.ts +246 -0
- package/dist/plugins/custom-format.cjs +3818 -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 +3788 -0
- package/dist/plugins/custom-type-example.cjs +3811 -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 +3781 -0
- package/dist/plugins/custom-validator.cjs +144 -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 +119 -0
- package/docs/FEATURE-INDEX.md +553 -519
- package/docs/add-custom-locale.md +496 -483
- package/docs/add-keyword.md +24 -0
- package/docs/api-reference.md +1047 -805
- package/docs/api.md +13 -0
- package/docs/best-practices-project-structure.md +417 -408
- package/docs/best-practices.md +712 -672
- package/docs/cache-manager.md +344 -336
- package/docs/compile.md +45 -0
- package/docs/conditional-api.md +1307 -1278
- package/docs/custom-extensions-guide.md +339 -411
- package/docs/design-philosophy.md +606 -601
- package/docs/doc-index.md +324 -0
- package/docs/dsl-syntax.md +714 -664
- package/docs/dynamic-locale.md +608 -598
- package/docs/enum.md +482 -475
- package/docs/error-handling.md +1975 -1966
- package/docs/export-guide.md +501 -462
- package/docs/export-limitations.md +567 -551
- package/docs/faq.md +596 -577
- package/docs/frontend-i18n-guide.md +307 -293
- package/docs/i18n-user-guide.md +487 -474
- package/docs/i18n.md +476 -457
- package/docs/index.md +48 -0
- package/docs/json-schema-basics.md +40 -0
- package/docs/label-vs-description.md +271 -262
- package/docs/markdown-exporter.md +406 -397
- package/docs/mongodb-exporter.md +302 -295
- package/docs/multi-language.md +26 -0
- package/docs/multi-type-support.md +322 -329
- package/docs/mysql-exporter.md +280 -273
- package/docs/number-operators.md +449 -442
- package/docs/optional-marker-guide.md +326 -321
- package/docs/performance-guide.md +49 -0
- package/docs/plugin-system.md +381 -542
- package/docs/plugin-type-registration.md +34 -0
- package/docs/postgresql-exporter.md +311 -304
- package/docs/public/favicon.svg +5 -0
- package/docs/quick-start.md +435 -761
- package/docs/runtime-locale-support.md +532 -521
- package/docs/schema-helper.md +345 -340
- package/docs/schema-utils-advanced-issues.md +23 -0
- package/docs/schema-utils-best-practices.md +20 -0
- package/docs/schema-utils-chaining.md +150 -143
- package/docs/schema-utils.md +524 -490
- package/docs/security-checklist.md +20 -0
- package/docs/string-extensions.md +488 -480
- package/docs/troubleshooting.md +486 -471
- package/docs/type-converter.md +310 -319
- package/docs/type-reference.md +242 -219
- package/docs/typescript-guide.md +584 -573
- package/docs/union-type-guide.md +157 -147
- package/docs/union-types.md +284 -277
- package/docs/validate-async.md +491 -480
- package/docs/validate-batch.md +49 -0
- package/docs/validate-dsl-object-support.md +578 -573
- package/docs/validate.md +506 -486
- package/docs/validation-guide.md +502 -484
- package/docs/validator.md +39 -0
- package/package.json +131 -73
- 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 +169 -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 +687 -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 +156 -0
- package/src/exporters/PostgreSQLExporter.ts +222 -0
- package/src/exporters/index.ts +18 -0
- package/src/index.ts +651 -0
- package/{lib/locales/en-US.js → src/locales/en-US.ts} +160 -176
- package/{lib/locales/es-ES.js → src/locales/es-ES.ts} +160 -113
- package/{lib/locales/fr-FR.js → src/locales/fr-FR.ts} +160 -113
- package/src/locales/index.ts +103 -0
- package/{lib/locales/ja-JP.js → src/locales/ja-JP.ts} +160 -118
- package/src/locales/types.ts +156 -0
- package/{lib/locales/zh-CN.js → src/locales/zh-CN.ts} +160 -177
- 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 +124 -0
- package/src/plugins/custom-type-example.ts +106 -0
- package/src/plugins/custom-validator.ts +138 -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 +365 -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 -3658
- package/index.js +0 -475
- package/index.mjs +0 -60
- package/lib/adapters/DslAdapter.js +0 -995
- 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 -1589
- 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
package/CHANGELOG.md
CHANGED
|
@@ -1,238 +1,130 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
| [
|
|
14
|
-
| [
|
|
15
|
-
| [
|
|
16
|
-
| [v1.
|
|
17
|
-
| [v1.
|
|
18
|
-
| [v1.
|
|
19
|
-
| [v1.
|
|
20
|
-
| [v1.1.
|
|
21
|
-
| [v1.1.
|
|
22
|
-
| [v1.1.
|
|
23
|
-
| [v1.1.
|
|
24
|
-
| [v1.1.
|
|
25
|
-
| [v1.
|
|
26
|
-
| v1.
|
|
27
|
-
| v1.
|
|
28
|
-
| v1.0
|
|
29
|
-
| v1.0.
|
|
30
|
-
| v1.0.
|
|
31
|
-
| v1.0.
|
|
32
|
-
| v1.0.
|
|
33
|
-
| v1.0.
|
|
34
|
-
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
##
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
dsl.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
### v1.1.7 - 错误消息路径显示优化 🐛
|
|
133
|
-
|
|
134
|
-
**发布日期**: 2026-01-27
|
|
135
|
-
**重要性**: ⭐⭐⭐⭐
|
|
136
|
-
|
|
137
|
-
### v1.1.6 - ErrorFormatter Bug修复 🐛
|
|
138
|
-
|
|
139
|
-
**发布日期**: 2026-01-23
|
|
140
|
-
**重要性**: ⭐⭐⭐⭐
|
|
141
|
-
|
|
142
|
-
**主要改进**:
|
|
143
|
-
- 🐛 修复 enum 错误消息模板变量 `{{#valids}}` 未替换问题
|
|
144
|
-
- 🐛 修复 additionalProperties 错误消息缺少属性名问题
|
|
145
|
-
- ✅ 新增完整的错误消息插值测试(14个测试用例)
|
|
146
|
-
- ✅ 确保所有 ajv 错误参数正确映射到模板变量
|
|
147
|
-
|
|
148
|
-
### v1.1.5 - 错误配置对象格式支持 🚀
|
|
149
|
-
|
|
150
|
-
**发布日期**: 2026-01-17
|
|
151
|
-
**重要性**: ⭐⭐⭐⭐
|
|
152
|
-
|
|
153
|
-
**核心改进**:
|
|
154
|
-
- ✨ 语言包支持对象格式 `{ code, message }`,统一错误代码管理
|
|
155
|
-
- ✨ I18nError 新增 `originalKey` 字段,保留原始 key
|
|
156
|
-
- ✨ 多语言共享相同的 `code`,便于前端统一处理
|
|
157
|
-
- ✅ 完全向后兼容,字符串格式自动转换为对象
|
|
158
|
-
- ✅ `error.is()` 同时支持 code 和 originalKey 判断
|
|
159
|
-
|
|
160
|
-
**测试覆盖**: 942 个测试通过 (98.6%)
|
|
161
|
-
|
|
162
|
-
### v1.1.4 - TypeScript类型修复与文档完善 🔧
|
|
163
|
-
|
|
164
|
-
**发布日期**: 2026-01-13
|
|
165
|
-
**重要性**: ⭐⭐⭐
|
|
166
|
-
|
|
167
|
-
**核心改进**:
|
|
168
|
-
- ✅ 修复 index.d.ts 中2处重复函数签名(46个类型错误→0个错误)
|
|
169
|
-
- ✅ 修复 `dsl.error.assert` 重复签名(L1336-1343)
|
|
170
|
-
- ✅ 修复 `I18nError.assert` 重复签名(L1805-1821)
|
|
171
|
-
- ✅ 完善多语言运行时支持文档(docs/runtime-locale-support.md)
|
|
172
|
-
- ✅ README.md 添加运行时语言指定示例
|
|
173
|
-
- ✅ 验证 string? 可选语法完整支持
|
|
174
|
-
|
|
175
|
-
**详细信息**: [查看 changelogs/v1.1.4.md](./changelogs/v1.1.4.md)
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
### v1.1.3 - 类型错误消息模板修复 🐛
|
|
180
|
-
|
|
181
|
-
**发布日期**: 2026-01-09
|
|
182
|
-
**重要性**: ⭐⭐⭐
|
|
183
|
-
|
|
184
|
-
**核心改进**:
|
|
185
|
-
- ✅ 修复类型错误消息中 `{{#actual}}` 模板变量未替换问题
|
|
186
|
-
- ✅ 错误消息正确显示实际数据类型
|
|
187
|
-
- ✅ 向后兼容,无破坏性变更
|
|
188
|
-
|
|
189
|
-
**详细信息**: [查看 changelogs/v1.1.3.md](./changelogs/v1.1.3.md)
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
### v1.1.0 - 跨类型联合验证 🎉
|
|
194
|
-
|
|
195
|
-
**发布日期**: 2026-01-05
|
|
196
|
-
**重要性**: ⭐⭐⭐⭐⭐
|
|
197
|
-
|
|
198
|
-
**核心特性**:
|
|
199
|
-
- ✅ 跨类型联合验证(email|phone 可以混合不同类型)
|
|
200
|
-
- ✅ 运行时多语言支持(dsl.error.create 可指定 locale 参数)
|
|
201
|
-
- ✅ 插件系统增强
|
|
202
|
-
|
|
203
|
-
**详细信息**: [查看 changelogs/v1.1.0.md](./changelogs/v1.1.0.md)
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
### v1.0.9 - 多语言支持完善 🌍
|
|
208
|
-
|
|
209
|
-
**发布日期**: 2026-01-04
|
|
210
|
-
**重要性**: ⭐⭐⭐⭐
|
|
211
|
-
|
|
212
|
-
**核心特性**:
|
|
213
|
-
- ✅ 完整的多语言支持(5种语言)
|
|
214
|
-
- ✅ TypeScript 类型定义完整
|
|
215
|
-
- ✅ I18nError 多语言错误类
|
|
216
|
-
|
|
217
|
-
**详细信息**: [查看 changelogs/v1.0.9.md](./changelogs/v1.0.9.md)
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
### v1.0.0 - 正式发布 🎉
|
|
222
|
-
|
|
223
|
-
**发布日期**: 2025-12-29
|
|
224
|
-
**重要性**: ⭐⭐⭐⭐⭐
|
|
225
|
-
|
|
226
|
-
**核心成就**:
|
|
227
|
-
- ✅ 初始发布
|
|
228
|
-
- ✅ 简洁的DSL语法
|
|
229
|
-
- ✅ 完整的验证功能
|
|
230
|
-
|
|
231
|
-
**详细信息**: [查看 changelogs/v1.0.0.md](./changelogs/v1.0.0.md)
|
|
232
|
-
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
**完整文档**: [docs/INDEX.md](./docs/INDEX.md)
|
|
236
|
-
**GitHub**: [https://github.com/vextjs/schema-dsl](https://github.com/vextjs/schema-dsl)
|
|
237
|
-
**npm**: [https://www.npmjs.com/package/schema-dsl](https://www.npmjs.com/package/schema-dsl)
|
|
238
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
> 📂 **Detailed changes**: see [`changelogs/`](./changelogs/) for full notes on major versions.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Version History
|
|
10
|
+
|
|
11
|
+
| Version | Date | Type | Key Theme |
|
|
12
|
+
|---------|------|------|-----------|
|
|
13
|
+
| [2.0.1] | 2026-05-22 | Patch | Post-release security & correctness fixes: safe-regex bypass, XSS escaping, reset completeness, cache rebuild, SQL injection in exporters |
|
|
14
|
+
| [2.0.0] | 2026-05-09 | Major | Full release: BC-2/4/5/6/7 fixes, string:N compat, English comments, 58 enriched examples, 1095 tests [View](./changelogs/v2.0.0.md) |
|
|
15
|
+
| [2.0.0-beta.2] | 2026-04-12 | Major | Full TypeScript rewrite: ESM+CJS dual format, AJV 8, tsup build, 1052 tests passing [View](./changelogs/v2.0.0-beta.2.md) |
|
|
16
|
+
| [v1.2.5] | 2026-03-09 | Patch | Feature: `DslBuilder.toJsonSchema()` — exports clean JSON Schema, strips internal markers |
|
|
17
|
+
| [v1.2.4] | 2026-03-09 | Patch | P1 Fix: `enum:a,b,c` comma-separated format parsing completely broken |
|
|
18
|
+
| [v1.2.3] | 2026-03-03 | Patch | Feature: i18n sub-directory merging; collaborative locale maintenance with auto-merge + conflict detection [View](./changelogs/v1.2.3.md) |
|
|
19
|
+
| [v1.2.2] | 2026-02-06 | Minor | Major feature: smart type coercion — auto-converts string numbers, full Web API support [View](./changelogs/v1.2.2.md) |
|
|
20
|
+
| [v1.1.8] | 2026-01-30 | Patch | Feature: smart argument detection, simplified syntax `dsl.error.throw('key', 'locale')` [View](./changelogs/v1.1.8.md) |
|
|
21
|
+
| [v1.1.7] | 2026-01-27 | Patch | Fix: error message path display — all error types now show field name only |
|
|
22
|
+
| [v1.1.6] | 2026-01-23 | Patch | Fix: enum and additionalProperties error message template variables not substituted [View](./changelogs/v1.1.6.md) |
|
|
23
|
+
| [v1.1.5] | 2026-01-17 | Patch | Feature: error config object format; locale messages now support `{ code, message }` object format [View](./changelogs/v1.1.5.md) |
|
|
24
|
+
| [v1.1.4] | 2026-01-13 | Patch | TS fix: remove duplicate function signatures + multilingual docs improvements [View](./changelogs/v1.1.4.md) |
|
|
25
|
+
| [v1.1.3] | 2026-01-09 | Patch | Fix: type error message template variables not substituted [View](./changelogs/v1.1.3.md) |
|
|
26
|
+
| [v1.1.2] | 2026-01-06 | Patch | Feature: numeric comparison operators + bug fixes [View](./changelogs/v1.1.2.md) |
|
|
27
|
+
| [v1.1.1] | 2026-01-06 | Patch | Feature: ConditionalBuilder independent message support [View](./changelogs/v1.1.1.md) |
|
|
28
|
+
| [v1.1.0] | 2026-01-05 | Minor | Major: cross-type union validation + enhanced plugin system [View](./changelogs/v1.1.0.md) |
|
|
29
|
+
| [v1.0.9] | 2026-01-04 | Patch | Major improvement: complete i18n support + full TypeScript types [View](./changelogs/v1.0.9.md) |
|
|
30
|
+
| v1.0.8 | 2026-01-04 | Patch | Improvement: enhanced error message filtering |
|
|
31
|
+
| v1.0.7 | 2026-01-04 | Patch | Fix: dsl.match/dsl.if nesting now supports dsl() wrapper |
|
|
32
|
+
| v1.0.6 | 2026-01-04 | Patch | 🚨 Critical fix: TypeScript type pollution |
|
|
33
|
+
| v1.0.5 | 2026-01-04 | Patch | Test coverage raised to 97% |
|
|
34
|
+
| v1.0.4 | 2025-12-31 | Patch | Full TypeScript support, validateAsync, ValidationError |
|
|
35
|
+
| v1.0.3 | 2025-12-31 | Patch | ⚠️ Breaking change: single-value syntax fix |
|
|
36
|
+
| v1.0.2 | 2025-12-31 | Patch | 15 new validators, complete docs, 75 tests |
|
|
37
|
+
| v1.0.1 | 2025-12-31 | Patch | Enum support, auto type detection, unified error messages |
|
|
38
|
+
| [v1.0.0] | 2025-12-29 | Pre-release | Initial release [View](./changelogs/v1.0.0.md) |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## [2.0.1] — 2026-05-22
|
|
43
|
+
|
|
44
|
+
### Fixes
|
|
45
|
+
|
|
46
|
+
- **Security (DslBuilder)**: built-in string validators (`domain`, `ip`, `base64`, `jwt`, `phone`, `idCard`, `slugChain`, `creditCard`, `licensePlate`, `postalCode`, `passport`, `username`, `password`) now use a new private `_setPattern()` that bypasses the safe-regex check. Public `.pattern()` still enforces the check for user-supplied patterns; this prevents false-positive ReDoS rejections on pre-approved, production-tested regex patterns.
|
|
47
|
+
- **Security (SchemaUtils)**: `toHTML()` now escapes all dynamic content (`title`, field names, types, labels) through `_escapeHtml()`, preventing XSS when field names or labels contain `<`, `>`, `&`, `"`, or `'`. `toMarkdown()` escapes pipe characters and newlines through `_escapeMdCell()`, preventing broken table rendering.
|
|
48
|
+
- **Security (Exporters)**: `PostgreSQLExporter._formatDefaultValue()` and `MySQLExporter._formatDefaultValue()` now call `_escapeString()` on JSON-stringified object/array default values, preventing SQL injection when default values contain single quotes (e.g. `{ name: "O'Brien" }`). `MySQLExporter` also no longer emits `[object Object]` for object-type defaults.
|
|
49
|
+
- **Correctness (index)**: `resetRuntimeState()` now fully resets all runtime-mutable globals: `_strictMode` (TypeRegistry), custom types (DslBuilder + TypeRegistry), locale registry (Locale.reset()), and user-added pattern keys in `PATTERNS.phone / .idCard / .creditCard` via an initial-keys snapshot — preventing cross-test or cross-tenant leakage.
|
|
50
|
+
- **Correctness (CacheManager)**: the `options` setter now rebuilds the internal `MemoryCache` instance when `maxSize` changes, migrating existing entries to the new capacity. Previously, only the `_maxSize` field was updated while the cache instance retained its original capacity.
|
|
51
|
+
- **Correctness (TypeConverter)**: `toMySQLType()` and `toPostgreSQLType()` no longer map the JSON Schema `"null"` type to the SQL keyword `NULL` (which is a constraint, not a data type). Both now return `TEXT`.
|
|
52
|
+
- **DX (Plugins)**: removed `console.log` calls from `install()` and `uninstall()` in `custom-format`, `custom-validator`, and `custom-type-example` example plugins. Runtime error logging via `console.error` is preserved.
|
|
53
|
+
- **DX (SchemaUtils)**: added JSDoc to `SchemaUtils.validateBatch()` noting that it recompiles the schema on every call (no caching), with a recommendation to use `Validator.validateBatch()` for repeated validations of the same schema.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## [2.0.0] — 2026-05-09
|
|
58
|
+
|
|
59
|
+
### Breaking Changes (v1 → v2)
|
|
60
|
+
|
|
61
|
+
- **BC-2**: `DslAdapter.parseObject()` now returns `ObjectDslBuilder` (chainable: `.strict()`, `.requireAll()`, `.toSchema()`, `.toJsonSchema()`) instead of plain `JSONSchema`. Call `.toSchema()` to get the raw schema.
|
|
62
|
+
- **BC-4**: `DslAdapter.typeMap` is now a Proxy getter; `DslAdapter.registerType()` method added for direct registration.
|
|
63
|
+
- **BC-5**: `ConditionalBuilder.require(field)` method added for v1 field-requirement compatibility.
|
|
64
|
+
- **BC-6**: `Validator.validateAsync()` added; async custom validators in sync `validate()` now return `{ valid: false }` with an error message instead of silently passing.
|
|
65
|
+
- **BC-7**: `string:N` single-value DSL now expands to `{ minLength: N, maxLength: N }` (exactLength compat, consistent with v1 behavior).
|
|
66
|
+
|
|
67
|
+
### New Features
|
|
68
|
+
|
|
69
|
+
- **ObjectDslBuilder**: New class wrapping object schemas; supports `.strict()`, `.requireAll()`, `.toSchema()`, `.toJsonSchema()`, `.toString()`.
|
|
70
|
+
- **validateAsync()**: Full async validation support with typed return (`Promise<T>`); throws `ValidationError` on failure.
|
|
71
|
+
- **installStringExtensions()**: Opt-in String.prototype extension; auto-installed at module load for v1 compatibility.
|
|
72
|
+
|
|
73
|
+
### Documentation & Examples
|
|
74
|
+
|
|
75
|
+
- 58 example files in `examples/docs/` fully enriched (90–130+ lines each) with complete API coverage.
|
|
76
|
+
- All code comments translated to English (CJK locales and output strings preserved).
|
|
77
|
+
- `docs/api-reference.md`: fixed 4 doc inconsistencies (string:N behavior, validateAsync signature, LocaleMessage params, exactOptionalPropertyTypes notes).
|
|
78
|
+
|
|
79
|
+
### Quality
|
|
80
|
+
|
|
81
|
+
- 1095 tests passing (75 test files).
|
|
82
|
+
- 0 TypeScript errors in source and examples.
|
|
83
|
+
- ESM + CJS dual format build.
|
|
84
|
+
|
|
85
|
+
### Fixes
|
|
86
|
+
|
|
87
|
+
- **Security**: replace the custom regex ReDoS heuristic in `CustomKeywords` with `safe-regex`, so catastrophic patterns such as `((a)+)+$` are rejected before execution.
|
|
88
|
+
- **Validation**: stop caching `DslBuilder.toSchema()` results inside `Validator`, so chain mutations made after the first validation call are honored by both `validate()` and `validateAsync()`.
|
|
89
|
+
- **Validation**: make `ConditionalBuilder` cache `Validator` instances by constructor-level option set, so repeated calls with different `allErrors` / `useDefaults` configurations no longer reuse a stale validator.
|
|
90
|
+
- **Exporters**: fix MySQL integer sizing so `TypeConverter.toMySQLType()` checks both `minimum` and `maximum` before choosing `TINYINT` / `SMALLINT` / `INT`, avoiding undersized column types.
|
|
91
|
+
- **Exporters**: escape Markdown table cell content in `MarkdownExporter`, so field names, constraint text, and multiline descriptions containing `|` or newlines no longer break rendered tables.
|
|
92
|
+
- **Tests**: add focused regression coverage for unsafe regex rejection while preserving the existing invalid-regex error path.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## [Unreleased]
|
|
97
|
+
|
|
98
|
+
- docs: aligned 58-to-58 `docs/*.md` ↔ `examples/docs/*.ts` mapping, switched to stable example entry links
|
|
99
|
+
- docs: completed runnable coverage for advanced APIs in `api-reference`, added `ErrorFormatter` reference, corrected `FEATURE-INDEX` method descriptions
|
|
100
|
+
- chore: cleaned up legacy top-level `examples/*` entry paths, unified example entry points and `.tmp` workspace visibility
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Links
|
|
105
|
+
|
|
106
|
+
- [GitHub Repository](https://github.com/vextjs/schema-dsl)
|
|
107
|
+
- [Online Documentation](https://vextjs.github.io/schema-dsl)
|
|
108
|
+
- [Detailed Changelogs](./changelogs/)
|
|
109
|
+
- [Contributing Guide](./CONTRIBUTING.md)
|
|
110
|
+
|
|
111
|
+
[Unreleased]: https://github.com/vextjs/schema-dsl/compare/v2.0.1...HEAD
|
|
112
|
+
[2.0.1]: https://github.com/vextjs/schema-dsl/compare/v2.0.0...v2.0.1
|
|
113
|
+
[2.0.0]: https://github.com/vextjs/schema-dsl/compare/v2.0.0-beta.2...v2.0.0
|
|
114
|
+
[2.0.0-beta.2]: https://github.com/vextjs/schema-dsl/releases/tag/v2.0.0-beta.2
|
|
115
|
+
[v1.2.5]: https://github.com/vextjs/schema-dsl/compare/v1.2.4...v1.2.5
|
|
116
|
+
[v1.2.4]: https://github.com/vextjs/schema-dsl/compare/v1.2.3...v1.2.4
|
|
117
|
+
[v1.2.3]: https://github.com/vextjs/schema-dsl/compare/v1.2.2...v1.2.3
|
|
118
|
+
[v1.2.2]: https://github.com/vextjs/schema-dsl/compare/v1.1.8...v1.2.2
|
|
119
|
+
[v1.1.8]: https://github.com/vextjs/schema-dsl/compare/v1.1.7...v1.1.8
|
|
120
|
+
[v1.1.7]: https://github.com/vextjs/schema-dsl/compare/v1.1.6...v1.1.7
|
|
121
|
+
[v1.1.6]: https://github.com/vextjs/schema-dsl/compare/v1.1.5...v1.1.6
|
|
122
|
+
[v1.1.5]: https://github.com/vextjs/schema-dsl/compare/v1.1.4...v1.1.5
|
|
123
|
+
[v1.1.4]: https://github.com/vextjs/schema-dsl/compare/v1.1.3...v1.1.4
|
|
124
|
+
[v1.1.3]: https://github.com/vextjs/schema-dsl/compare/v1.1.2...v1.1.3
|
|
125
|
+
[v1.1.2]: https://github.com/vextjs/schema-dsl/compare/v1.1.1...v1.1.2
|
|
126
|
+
[v1.1.1]: https://github.com/vextjs/schema-dsl/compare/v1.1.0...v1.1.1
|
|
127
|
+
[v1.1.0]: https://github.com/vextjs/schema-dsl/compare/v1.0.9...v1.1.0
|
|
128
|
+
[v1.0.9]: https://github.com/vextjs/schema-dsl/compare/v1.0.8...v1.0.9
|
|
129
|
+
[v1.0.0]: https://github.com/vextjs/schema-dsl/releases/tag/v1.0.0
|
|
130
|
+
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 vextjs
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 vextjs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|