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
package/STATUS.md
DELETED
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
# schema-dsl 项目状态
|
|
2
|
-
|
|
3
|
-
> **最后更新**: 2026-03-03
|
|
4
|
-
> **当前版本**: v1.2.3
|
|
5
|
-
> **项目状态**: ✅ 全部完成,测试100%通过(1003个测试)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 📋 目录
|
|
10
|
-
|
|
11
|
-
- [v1.2.3](#v123) - 2026-03-03 ✅ 已完成
|
|
12
|
-
- [v1.1.5](#v115) - 2026-01-17 ✅ 已完成
|
|
13
|
-
- [v1.1.4](#v114) - 2026-01-13 ✅ 已完成
|
|
14
|
-
- [v1.1.3](#v113) - 2026-01-09 ✅ 已完成
|
|
15
|
-
- [v1.1.1](#v111) - 2026-01-06 ✅ 已完成
|
|
16
|
-
- [v1.1.0](#v110) - 2026-01-05 ✅ 已完成
|
|
17
|
-
- [v1.0.9](#v109) - 2026-01-04 ✅ 已完成
|
|
18
|
-
- [v1.0.8](#v108) - 2026-01-04 ✅ 已完成
|
|
19
|
-
- [v1.0.7](#v107) - 2026-01-04 ✅ 已完成
|
|
20
|
-
- [v1.0.6](#v106) - 2026-01-04 ✅ 已完成
|
|
21
|
-
- [v1.0.5](#v105) - 2026-01-04 ✅ 已完成
|
|
22
|
-
- [v1.0.4](#v104) - 2025-12-31 ✅ 已完成
|
|
23
|
-
- [v1.0.3](#v103) - 2025-12-31 ⚠️ 破坏性变更
|
|
24
|
-
- [v1.0.2](#v102) - 2025-12-31 ✅ 已完成
|
|
25
|
-
- [v1.0.1](#v101) - 2025-12-31 ✅ 已完成
|
|
26
|
-
- [v1.0.0](#v100) - 2025-12-29 ✅ 已完成
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 版本发布计划
|
|
31
|
-
|
|
32
|
-
### v1.2.3
|
|
33
|
-
|
|
34
|
-
**发布日期**: 2026-03-03
|
|
35
|
-
**状态**: ✅ 已完成
|
|
36
|
-
**类型**: 🚀 功能增强 + 🐛 Bug修复
|
|
37
|
-
**进度**: 100%完成 | 测试: 1003个通过 (100%)
|
|
38
|
-
|
|
39
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
40
|
-
|---------|------|--------|------|
|
|
41
|
-
| i18n 子目录递归扫描 | ✅ 完成 | P0 | index.js `loadLocalesFromDir` |
|
|
42
|
-
| 同名 key 冲突检测(WARN + strict 模式)| ✅ 完成 | P1 | index.js |
|
|
43
|
-
| 语言文件名格式校验 | ✅ 完成 | P1 | index.js |
|
|
44
|
-
| localesPath 对象用法修复 | ✅ 完成 | P1 | index.js |
|
|
45
|
-
| TypeScript 类型扩展(I18nConfig + strict)| ✅ 完成 | P0 | index.d.ts |
|
|
46
|
-
| 新增单元测试(20个) | ✅ 完成 | P0 | test/unit/i18n-subdir.test.js |
|
|
47
|
-
| 修复跨文件测试状态污染(3个 failing → 0)| ✅ 完成 | P0 | test/unit/i18n-subdir.test.js |
|
|
48
|
-
| 更新文档 | ✅ 完成 | P1 | docs/add-custom-locale.md |
|
|
49
|
-
| 更新 CHANGELOG | ✅ 完成 | P0 | changelogs/v1.2.3.md |
|
|
50
|
-
| 更新 STATUS | ✅ 完成 | P0 | STATUS.md |
|
|
51
|
-
|
|
52
|
-
**向后兼容性**: ✅ 100% 向后兼容
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
### v1.1.5
|
|
57
|
-
|
|
58
|
-
**发布日期**: 2026-01-17
|
|
59
|
-
**状态**: ✅ 已完成
|
|
60
|
-
**类型**: 🚀 功能增强 - 错误配置对象格式支持
|
|
61
|
-
**进度**: 100%完成 | 测试: 955个通过 (100%)
|
|
62
|
-
|
|
63
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
64
|
-
|---------|------|--------|------|
|
|
65
|
-
| 实现 Locale.getMessage 对象格式支持 | ✅ 完成 | P0 | lib/core/Locale.js |
|
|
66
|
-
| 修改 I18nError 构造函数支持对象格式 | ✅ 完成 | P0 | lib/errors/I18nError.js |
|
|
67
|
-
| 新增 originalKey 字段 | ✅ 完成 | P0 | I18nError 类 |
|
|
68
|
-
| 更新 TypeScript 类型定义 | ✅ 完成 | P0 | index.d.ts |
|
|
69
|
-
| 更新语言包示例(对象格式) | ✅ 完成 | P1 | lib/locales/*.js |
|
|
70
|
-
| 新增测试用例(6个) | ✅ 完成 | P0 | test/unit/i18n-error.test.js |
|
|
71
|
-
| 更新现有测试适配对象格式 | ✅ 完成 | P0 | test/unit/*.test.js |
|
|
72
|
-
| 更新 CHANGELOG | ✅ 完成 | P0 | v1.1.5 变更记录 |
|
|
73
|
-
| 更新 STATUS | ✅ 完成 | P0 | 版本号和状态 |
|
|
74
|
-
|
|
75
|
-
**实现状态统计**:
|
|
76
|
-
- ✅ 完成: 9个
|
|
77
|
-
- 🔄 进行中: 0个
|
|
78
|
-
- ⏳ 待完成: 0个
|
|
79
|
-
|
|
80
|
-
**核心变更**:
|
|
81
|
-
- ✨ 语言包支持对象格式 `{ code, message }`
|
|
82
|
-
- ✨ I18nError 新增 `originalKey` 字段
|
|
83
|
-
- ✨ 多语言共享相同的 `code`
|
|
84
|
-
- ✅ 完全向后兼容,字符串格式自动转换
|
|
85
|
-
- ✅ `error.is()` 同时支持 code 和 originalKey 判断
|
|
86
|
-
|
|
87
|
-
**向后兼容性**: ✅ 100% 向后兼容
|
|
88
|
-
|
|
89
|
-
### v1.1.4
|
|
90
|
-
|
|
91
|
-
**发布日期**: 2026-01-13
|
|
92
|
-
**状态**: ✅ 已完成
|
|
93
|
-
**类型**: 🔧 TypeScript类型修复 + 📚 文档完善
|
|
94
|
-
**进度**: 100%完成 | 测试: 921个通过
|
|
95
|
-
|
|
96
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
97
|
-
|---------|------|--------|------|
|
|
98
|
-
| 修复 dsl.error.assert 重复签名 | ✅ 完成 | P0 | index.d.ts L1336-1343 |
|
|
99
|
-
| 修复 I18nError.assert 重复签名 | ✅ 完成 | P0 | index.d.ts L1805-1821 |
|
|
100
|
-
| 完善运行时多语言文档 | ✅ 完成 | P1 | docs/runtime-locale-support.md |
|
|
101
|
-
| 更新 README.md | ✅ 完成 | P1 | 添加运行时语言支持示例 |
|
|
102
|
-
| 生成深度分析报告 | ✅ 完成 | P2 | reports/schema-dsl/analysis/ |
|
|
103
|
-
| 更新 CHANGELOG | ✅ 完成 | P0 | v1.1.4 变更记录 |
|
|
104
|
-
| 更新 STATUS | ✅ 完成 | P0 | 版本号和状态 |
|
|
105
|
-
|
|
106
|
-
**实现状态统计**:
|
|
107
|
-
- ✅ 完成: 7个
|
|
108
|
-
- 🔄 进行中: 0个
|
|
109
|
-
- ⏳ 待完成: 0个
|
|
110
|
-
|
|
111
|
-
**核心变更**:
|
|
112
|
-
- ✅ **修复**: index.d.ts 中2处重复函数签名(46个类型错误→0个错误)
|
|
113
|
-
- ✅ **文档**: 完善运行时多语言支持文档
|
|
114
|
-
- ✅ **文档**: README.md 添加运行时语言指定示例
|
|
115
|
-
- ✅ **验证**: string? 可选语法完整支持
|
|
116
|
-
- ✅ **验证**: 多语言加载机制验证
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
### v1.1.3
|
|
121
|
-
|
|
122
|
-
**发布日期**: 2026-01-09
|
|
123
|
-
**状态**: ✅ 已完成
|
|
124
|
-
**类型**: 🐛 Bug修复 - 类型错误消息模板变量未替换
|
|
125
|
-
**进度**: 100%完成 | 测试: 921个通过
|
|
126
|
-
|
|
127
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
128
|
-
|---------|------|--------|------|
|
|
129
|
-
| 修复类型错误消息模板 | ✅ 完成 | P0 | `{{#actual}}` 变量未替换 |
|
|
130
|
-
| 添加 actual 参数计算 | ✅ 完成 | P0 | 正确显示实际数据类型 |
|
|
131
|
-
| 更新 CHANGELOG | ✅ 完成 | P0 | v1.1.3 变更记录 |
|
|
132
|
-
| 更新 STATUS | ✅ 完成 | P0 | 版本号和状态 |
|
|
133
|
-
|
|
134
|
-
**实现状态统计**:
|
|
135
|
-
- ✅ 完成: 4个
|
|
136
|
-
- 🔄 进行中: 0个
|
|
137
|
-
- ⏳ 待完成: 0个
|
|
138
|
-
|
|
139
|
-
**核心变更**:
|
|
140
|
-
- ✅ **修复**: ErrorFormatter.formatDetailed() 添加 `actual` 参数
|
|
141
|
-
- ✅ **修复**: 类型错误消息正确显示实际数据类型
|
|
142
|
-
- ✅ **支持**: `number`, `string`, `boolean`, `object`, `array`, `null`, `undefined`
|
|
143
|
-
|
|
144
|
-
**Bug 详情**:
|
|
145
|
-
- **问题**: `{{#actual}}` 模板变量未被替换
|
|
146
|
-
- **原因**: `interpolateData` 缺少 `actual` 参数
|
|
147
|
-
- **修复**: 添加类型计算逻辑(第 280-284 行)
|
|
148
|
-
- **影响**: 仅影响错误消息显示,不影响验证逻辑
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
### v1.1.1
|
|
153
|
-
|
|
154
|
-
**发布日期**: 2026-01-06
|
|
155
|
-
**状态**: ✅ 已完成
|
|
156
|
-
**类型**: 🎉 新功能 - ConditionalBuilder 独立消息 + I18nError 多语言错误
|
|
157
|
-
**进度**: 100%完成 | 测试: 921个通过 | 新增: 52个测试
|
|
158
|
-
|
|
159
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
160
|
-
|---------|------|--------|------|
|
|
161
|
-
| ConditionalBuilder 独立消息 | ✅ 完成 | P1 | `.and()/.or()` 后可调用 `.message()` |
|
|
162
|
-
| I18nError 多语言错误 | ✅ 完成 | P1 | 统一的多语言错误抛出机制 |
|
|
163
|
-
| dsl.error 快捷方法 | ✅ 完成 | P1 | create/throw/assert 三个方法 |
|
|
164
|
-
| TypeScript 类型定义 | ✅ 完成 | P0 | I18nError + dsl.error 类型 |
|
|
165
|
-
| 测试用例 | ✅ 完成 | P0 | 52个新测试(24+28) |
|
|
166
|
-
| 文档更新 | ✅ 完成 | P0 | README + CHANGELOG + examples |
|
|
167
|
-
| 语言包扩充 | ✅ 完成 | P1 | 中英文 20+ 错误消息 |
|
|
168
|
-
|
|
169
|
-
**实现状态统计**:
|
|
170
|
-
- ✅ 完成: 7个
|
|
171
|
-
- 🔄 进行中: 0个
|
|
172
|
-
- ⏳ 待完成: 0个
|
|
173
|
-
|
|
174
|
-
**核心变更**:
|
|
175
|
-
- ✅ **新增**: ConditionalBuilder 支持 `.and()/.or()` 独立消息
|
|
176
|
-
- ✅ **新增**: I18nError 类 (lib/errors/I18nError.js)
|
|
177
|
-
- ✅ **新增**: dsl.error 快捷方法 (create/throw/assert)
|
|
178
|
-
- ✅ **新增**: 20+ 内置错误代码(通用/账户/用户/订单)
|
|
179
|
-
- ✅ **新增**: examples/i18n-error.examples.js 示例文件
|
|
180
|
-
- ✅ **更新**: README FAQ Q7/Q8
|
|
181
|
-
- ✅ **更新**: CHANGELOG v1.1.1 完整记录
|
|
182
|
-
- ✅ **更新**: index.d.ts TypeScript 类型定义
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
### v1.1.0
|
|
187
|
-
|
|
188
|
-
**发布日期**: 2026-01-05
|
|
189
|
-
**状态**: ✅ 已完成
|
|
190
|
-
**类型**: 🎉 重大功能 - 跨类型联合验证 + 插件系统增强
|
|
191
|
-
**进度**: 100%完成
|
|
192
|
-
|
|
193
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
194
|
-
|---------|------|--------|------|
|
|
195
|
-
| 跨类型联合验证 | ✅ 完成 | P1 | `types:string|number` 语法 |
|
|
196
|
-
| 插件 DSL 类型注册 | ✅ 完成 | P1 | 插件可注册自定义 DSL 类型 |
|
|
197
|
-
| DslBuilder.registerType | ✅ 完成 | P0 | 静态方法供插件使用 |
|
|
198
|
-
| 文档更新 | ✅ 完成 | P0 | README + CHANGELOG |
|
|
199
|
-
|
|
200
|
-
**实现状态统计**:
|
|
201
|
-
- ✅ 完成: 4个
|
|
202
|
-
- 🔄 进行中: 0个
|
|
203
|
-
- ⏳ 待完成: 0个
|
|
204
|
-
|
|
205
|
-
**核心变更**:
|
|
206
|
-
- ✅ **新增**: `types:` 语法支持跨类型联合验证
|
|
207
|
-
- ✅ **增强**: 插件系统支持 DSL 类型注册
|
|
208
|
-
- ✅ **新增**: DslBuilder.registerType() 静态方法
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
### v1.0.9
|
|
213
|
-
|
|
214
|
-
**发布日期**: 2026-01-04
|
|
215
|
-
**状态**: ✅ 已完成
|
|
216
|
-
**类型**: 📝 文档完善 + 性能验证
|
|
217
|
-
**进度**: 100%完成 | 优化: 多语言文档 | 性能: 2,879,606 ops/s
|
|
218
|
-
|
|
219
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
220
|
-
|---------|------|--------|------|
|
|
221
|
-
| 多语言文档统一 | ✅ 完成 | P0 | "首次加载,运行时切换" |
|
|
222
|
-
| 添加文档导航 | ✅ 完成 | P1 | i18n.md 导航指引 |
|
|
223
|
-
| 性能数据更新 | ✅ 完成 | P0 | 更新到 2,879,606 ops/s |
|
|
224
|
-
| README 更新 | ✅ 完成 | P0 | 性能+多语言章节 |
|
|
225
|
-
| CHANGELOG 更新 | ✅ 完成 | P0 | 添加 v1.0.9 记录 |
|
|
226
|
-
| 配置示例修复 | ✅ 完成 | P0 | i18n-user-guide.md |
|
|
227
|
-
|
|
228
|
-
**实现状态统计**:
|
|
229
|
-
- ✅ 完成: 6个
|
|
230
|
-
- 🔄 进行中: 0个
|
|
231
|
-
- ⏳ 待完成: 0个
|
|
232
|
-
|
|
233
|
-
**核心变更**:
|
|
234
|
-
- ✅ **优化**: 统一多语言文档描述(5个文档)
|
|
235
|
-
- ✅ **新增**: 文档导航(i18n.md)
|
|
236
|
-
- ✅ **更新**: 性能对比数据(提升3.19倍)
|
|
237
|
-
- ✅ **修复**: i18n-user-guide.md 配置错误
|
|
238
|
-
- ✅ **更新**: README.md 和 CHANGELOG.md
|
|
239
|
-
|
|
240
|
-
**用户价值**:
|
|
241
|
-
- 🎯 文档更清晰,用户快速找到所需信息
|
|
242
|
-
- 🎯 性能数据更新,证明库的卓越性能
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
### v1.0.8
|
|
247
|
-
|
|
248
|
-
**发布日期**: 2026-01-04
|
|
249
|
-
**状态**: ✅ 已完成
|
|
250
|
-
**类型**: 🔧 错误消息过滤增强
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
### v1.0.7
|
|
255
|
-
|
|
256
|
-
**发布日期**: 2026-01-04
|
|
257
|
-
**状态**: ✅ 已完成
|
|
258
|
-
**类型**: 🐛 嵌套支持修复
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
### v1.0.6
|
|
263
|
-
|
|
264
|
-
**发布日期**: 2026-01-04
|
|
265
|
-
**状态**: ✅ 已完成
|
|
266
|
-
**类型**: 🚨 TypeScript 类型污染修复
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
### v1.0.5
|
|
271
|
-
|
|
272
|
-
**发布日期**: 2026-01-04
|
|
273
|
-
**状态**: ✅ 已完成
|
|
274
|
-
**类型**: ✅ 测试覆盖率提升
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
### v1.0.4
|
|
279
|
-
|
|
280
|
-
**发布日期**: 2025-12-31
|
|
281
|
-
**状态**: ✅ 已完成
|
|
282
|
-
**类型**: ✨ 功能增强(TypeScript 完整支持)
|
|
283
|
-
**进度**: 100%完成 | 新增: TypeScript 类型定义、使用指南 | 文档: 1500+ 行
|
|
284
|
-
|
|
285
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
286
|
-
|---------|------|--------|------|
|
|
287
|
-
| 完善 index.d.ts | ✅ 完成 | P0 | validateAsync、ValidationError 类型 |
|
|
288
|
-
| String 扩展 TS 说明 | ✅ 完成 | P0 | 添加详细使用说明和对比 |
|
|
289
|
-
| TypeScript 使用指南 | ✅ 完成 | P0 | 1000+ 行完整文档 |
|
|
290
|
-
| README 更新 | ✅ 完成 | P0 | 添加 TypeScript 章节 |
|
|
291
|
-
| 类型错误修复 | ✅ 完成 | P0 | 修复 dsl.config i18n 类型 |
|
|
292
|
-
| 发版文档更新 | ✅ 完成 | P0 | CHANGELOG、STATUS、package.json |
|
|
293
|
-
|
|
294
|
-
**实现状态统计**:
|
|
295
|
-
- ✅ 完成: 6个
|
|
296
|
-
- 🔄 进行中: 0个
|
|
297
|
-
- ⏳ 待完成: 0个
|
|
298
|
-
|
|
299
|
-
**核心变更**:
|
|
300
|
-
- ✅ **新增**: validateAsync 函数完整类型定义
|
|
301
|
-
- ✅ **新增**: ValidationError 类完整类型(含所有方法)
|
|
302
|
-
- ✅ **优化**: String 扩展添加 TypeScript 使用说明
|
|
303
|
-
- ✅ **新增**: TypeScript 使用指南文档(1000+ 行)
|
|
304
|
-
- ✅ **修复**: dsl.config 的 i18n 参数类型错误
|
|
305
|
-
- ✅ **文档**: README 添加 TypeScript 快速开始章节
|
|
306
|
-
|
|
307
|
-
**用户价值**:
|
|
308
|
-
- 🎯 TypeScript 用户获得完整的类型安全和 IDE 提示
|
|
309
|
-
- 🎯 详细的文档指导如何在 TypeScript 中正确使用
|
|
310
|
-
- 🎯 JavaScript 用户体验不变,100% 向后兼容
|
|
311
|
-
- 🎯 降低学习成本,提高开发效率
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
### v1.0.3
|
|
316
|
-
|
|
317
|
-
**发布日期**: 2025-12-31
|
|
318
|
-
**状态**: ✅ 已完成
|
|
319
|
-
**类型**: ⚠️ 破坏性变更
|
|
320
|
-
**进度**: 100%完成 | 修复: String单值语法 | 测试: 3个新增测试
|
|
321
|
-
|
|
322
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
323
|
-
|---------|------|--------|------|
|
|
324
|
-
| String单值语法修复 | ✅ 完成 | P0 | 'string:N' 改为精确长度 |
|
|
325
|
-
| 核心代码修改 | ✅ 完成 | P0 | DslBuilder.js |
|
|
326
|
-
| 测试用例更新 | ✅ 完成 | P0 | 2个修改 + 1个新增 |
|
|
327
|
-
| 文档更新 | ✅ 完成 | P0 | README + CHANGELOG |
|
|
328
|
-
| 迁移指南 | ✅ 完成 | P0 | CHANGELOG 破坏性变更说明 |
|
|
329
|
-
| 新增链式方法 | ✅ 完成 | P1 | dateGreater, dateLess |
|
|
330
|
-
|
|
331
|
-
**实现状态统计**:
|
|
332
|
-
- ✅ 完成: 6个
|
|
333
|
-
- 🔄 进行中: 0个
|
|
334
|
-
- ⏳ 待完成: 0个
|
|
335
|
-
|
|
336
|
-
**核心变更**:
|
|
337
|
-
- ⚠️ **破坏性**: `'string:N'` → exactLength: N(之前是 maxLength: N)
|
|
338
|
-
- ✅ **新增**: `'string:-N'` → maxLength: N(明确语法)
|
|
339
|
-
- ✅ **保持**: Number 单值仍为 maximum(无变更)
|
|
340
|
-
- ✅ **新增**: dateGreater() 和 dateLess() 链式方法
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
### v1.0.2
|
|
345
|
-
|
|
346
|
-
**发布日期**: 2025-12-31
|
|
347
|
-
**状态**: ✅ 已完成
|
|
348
|
-
**进度**: 100%完成 | 新增: 15个验证器 | 测试: 75个新增测试
|
|
349
|
-
|
|
350
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
351
|
-
|---------|------|--------|------|
|
|
352
|
-
| String验证器扩展 | ✅ 完成 | P1 | 6个新增验证器 |
|
|
353
|
-
| Number验证器扩展 | ✅ 完成 | P1 | 2个新增验证器 |
|
|
354
|
-
| Object验证器扩展 | ✅ 完成 | P1 | 2个新增验证器 |
|
|
355
|
-
| Array验证器扩展 | ✅ 完成 | P1 | 2个新增验证器 |
|
|
356
|
-
| Date验证器扩展 | ✅ 完成 | P1 | 3个新增验证器 |
|
|
357
|
-
| 多语言支持 | ✅ 完成 | P0 | 中英文19个消息 |
|
|
358
|
-
| 文档补充 | ✅ 完成 | P0 | 15个验证器文档 |
|
|
359
|
-
| 示例代码 | ⏳ 待完成 | P1 | 演示新增功能 |
|
|
360
|
-
| 单元测试 | ✅ 完成 | P0 | 75个测试用例 |
|
|
361
|
-
|
|
362
|
-
**实现状态统计**:
|
|
363
|
-
- ✅ 完成: 8个
|
|
364
|
-
- 🔄 进行中: 0个
|
|
365
|
-
- ⏳ 待完成: 1个
|
|
366
|
-
|
|
367
|
-
**核心功能**:
|
|
368
|
-
- ✨ **String验证器**: exactLength, alphanum, trim, lowercase, uppercase, jsonString
|
|
369
|
-
- 🔢 **Number验证器**: precision, port
|
|
370
|
-
- 📦 **Object验证器**: requiredAll, strictSchema
|
|
371
|
-
- 📋 **Array验证器**: noSparse, includesRequired
|
|
372
|
-
- 📅 **Date验证器**: dateFormat, dateGreater, dateLess
|
|
373
|
-
- 🌍 **多语言支持**: 中英文各19个新增消息
|
|
374
|
-
- 📝 **完整文档**: validation-rules-v1.0.2.md(1200行)
|
|
375
|
-
- 🧪 **测试覆盖**: 75个测试用例,100%通过
|
|
376
|
-
|
|
377
|
-
### v1.0.1
|
|
378
|
-
|
|
379
|
-
**发布日期**: 2025-12-31
|
|
380
|
-
**状态**: ✅ 已完成
|
|
381
|
-
**进度**: 100%完成 | 新增: 枚举功能 | 测试: 30个新增测试
|
|
382
|
-
|
|
383
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
384
|
-
|---------|------|--------|------|
|
|
385
|
-
| 枚举语法支持 | ✅ 完成 | P0 | value1\|value2 简写语法 |
|
|
386
|
-
| 枚举类型自动识别 | ✅ 完成 | P0 | 字符串/布尔值/数字自动识别 |
|
|
387
|
-
| 枚举显式类型 | ✅ 完成 | P1 | enum:type:values 语法 |
|
|
388
|
-
| 布尔值枚举 | ✅ 完成 | P0 | true\|false 自动识别 |
|
|
389
|
-
| 数字枚举 | ✅ 完成 | P0 | 1\|2\|3 自动识别 |
|
|
390
|
-
| 整数枚举 | ✅ 完成 | P1 | enum:integer:values |
|
|
391
|
-
| 枚举必填标记 | ✅ 完成 | P0 | value1\|value2! |
|
|
392
|
-
| 枚举错误消息 | ✅ 完成 | P0 | 统一使用 'enum' 键 |
|
|
393
|
-
| 枚举文档 | ✅ 完成 | P0 | docs/enum.md 完整文档 |
|
|
394
|
-
| 枚举示例 | ✅ 完成 | P1 | examples/enum.examples.js |
|
|
395
|
-
| 枚举测试 | ✅ 完成 | P0 | 30个测试用例 |
|
|
396
|
-
|
|
397
|
-
**实现状态统计**:
|
|
398
|
-
- ✅ 完成: 11个
|
|
399
|
-
- 🔄 进行中: 0个
|
|
400
|
-
- ⏳ 待完成: 0个
|
|
401
|
-
|
|
402
|
-
**核心功能**:
|
|
403
|
-
- ✨ **枚举支持**: 'active|inactive', '1|2|3', 'true|false' 自动识别类型
|
|
404
|
-
- 🎯 **简洁语法**: 统一使用 'enum' 键定义错误消息
|
|
405
|
-
- 🔧 **灵活配置**: 支持显式指定类型 enum:type:values
|
|
406
|
-
|
|
407
|
-
### v1.0.0
|
|
408
|
-
|
|
409
|
-
**发布日期**: 2025-12-29
|
|
410
|
-
**状态**: ✅ 已完成
|
|
411
|
-
**进度**: 100%完成 | 测试: 447/447 passing (100%) | 覆盖率: >90%
|
|
412
|
-
|
|
413
|
-
| 需求标题 | 状态 | 优先级 | 详细 |
|
|
414
|
-
|---------|------|--------|------|
|
|
415
|
-
| JSON Schema核心类实现 | ✅ 完成 | P0 | JSONSchemaCore.js |
|
|
416
|
-
| ajv验证器集成 | ✅ 完成 | P0 | Validator.js |
|
|
417
|
-
| DSL风格适配器 | ✅ 完成 | P0 | DslAdapter.js |
|
|
418
|
-
| MongoDB导出器 | ✅ 完成 | P0 | MongoDBExporter.js |
|
|
419
|
-
| MySQL导出器 | ✅ 完成 | P1 | MySQLExporter.js |
|
|
420
|
-
| PostgreSQL导出器 | ✅ 完成 | P1 | PostgreSQLExporter.js |
|
|
421
|
-
| 自定义验证扩展 | ✅ 完成 | P1 | CustomKeywords.js |
|
|
422
|
-
| 类型转换工具 | ✅ 完成 | P1 | TypeConverter.js |
|
|
423
|
-
| Schema辅助函数 | ✅ 完成 | P2 | SchemaHelper.js |
|
|
424
|
-
| SchemaUtils工具 | ✅ 完成 | P1 | 4个核心方法: omit/pick/partial/extend |
|
|
425
|
-
| String扩展 | ✅ 完成 | P1 | 字符串链式调用 |
|
|
426
|
-
| validateAsync | ✅ 完成 | P1 | 异步验证方法 |
|
|
427
|
-
| 多语言支持 | ✅ 完成 | P1 | i18n配置和语言包 |
|
|
428
|
-
| 缓存优化 | ✅ 完成 | P1 | Schema和正则缓存 |
|
|
429
|
-
| 完整文档 | ✅ 完成 | P0 | 纯使用指南 |
|
|
430
|
-
| 示例代码 | ✅ 完成 | P1 | Express集成等 |
|
|
431
|
-
| 单元测试 | ✅ 完成 | P0 | 447个测试 |
|
|
432
|
-
|
|
433
|
-
**实现状态统计**:
|
|
434
|
-
- ✅ 完成: 17个
|
|
435
|
-
- 🔄 进行中: 0个
|
|
436
|
-
- ⏳ 待完成: 0个
|
|
437
|
-
|
|
438
|
-
**核心功能**:
|
|
439
|
-
- ✨ **DSL语法**: 简洁的字符串DSL,如 `'string:1-50!'`, `'email!'`
|
|
440
|
-
- 🔗 **String扩展**: 字符串直接链式调用,如 `'string!'.pattern(/.../).label('名称')`
|
|
441
|
-
- 🛠️ **SchemaUtils**: 4个核心方法复用Schema(omit/pick/partial/extend)
|
|
442
|
-
- ⚡ **validateAsync**: 异步验证,失败自动抛出错误
|
|
443
|
-
- 🌍 **多语言**: i18n配置,支持自定义语言包
|
|
444
|
-
- 📤 **多数据库导出**: MongoDB, MySQL, PostgreSQL
|
|
445
|
-
|
|
446
|
-
**重大改进**:
|
|
447
|
-
- 🎉 **简化设计**: SchemaUtils 只保留4个核心方法,覆盖95%场景
|
|
448
|
-
- 📚 **用户友好**: 所有文档纯使用指南,无过度分析
|
|
449
|
-
- ✅ **质量保证**: 447个测试100%通过,三轮验证全部通过
|
|
450
|
-
- 🚀 **性能优化**: Schema缓存和正则缓存,大型项目性能提升3-10倍
|
|
451
|
-
|
|
452
|
-
**测试数据**:
|
|
453
|
-
- 单元测试: 447个全部通过 ✅
|
|
454
|
-
- 测试时间: 8秒
|
|
455
|
-
- 覆盖率: >90%
|
|
456
|
-
- 文档示例: 45个全部可执行 ✅
|
|
457
|
-
|
|
458
|
-
---
|
|
459
|
-
|
|
460
|
-
## 需求状态说明
|
|
461
|
-
|
|
462
|
-
- ✅ **完成**: 功能已实现并验证
|
|
463
|
-
- ⏳ **待完成**: 计划中,待实施
|
|
464
|
-
- 🔄 **进行中**: 正在开发
|
|
465
|
-
- ❌ **未开始**: 尚未开始
|
|
466
|
-
- 🔴 **阻塞**: 存在阻塞问题
|
|
467
|
-
|
|
468
|
-
---
|
|
469
|
-
|
|
470
|
-
## 进度对比
|
|
471
|
-
|
|
472
|
-
| 版本 | 开始日期 | 完成日期 | 计划需求 | 完成需求 | 完成率 |
|
|
473
|
-
|------|---------|---------|---------|---------|--------|
|
|
474
|
-
| v1.0.0 | 2025-12-24 | 2025-12-24 | 15 | 13 | 87% |
|
|
475
|
-
|
|
476
|
-
---
|
|
477
|
-
|
|
478
|
-
## 关键里程碑
|
|
479
|
-
|
|
480
|
-
- [x] 2025-12-24: 架构设计完成(适配器模式)
|
|
481
|
-
- [x] 2025-12-24: 核心层实现完成
|
|
482
|
-
- [x] 2025-12-24: 适配器层实现完成
|
|
483
|
-
- [x] 2025-12-24: 导出器层实现完成
|
|
484
|
-
- [x] 2025-12-24: DSL语法验证通过
|
|
485
|
-
- [x] 2025-12-24: README文档完成
|
|
486
|
-
- [ ] 待定: 测试套件完成(目标覆盖率80%+)
|
|
487
|
-
- [ ] 待定: v1.0.0正式版发布
|
|
488
|
-
|
|
489
|
-
---
|
|
490
|
-
|
|
491
|
-
**项目总体状态**: ✅ 核心功能已完成,具备发布条件
|