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.
Files changed (145) hide show
  1. package/CHANGELOG.md +130 -113
  2. package/LICENSE +21 -21
  3. package/README.md +628 -628
  4. package/dist/{DslBuilder-DkLaOo9Q.d.ts → DslBuilder-BIgQOAXp.d.ts} +2 -0
  5. package/dist/{DslBuilder-DQDN0ZxZ.d.cts → DslBuilder-CjHTucNQ.d.cts} +2 -0
  6. package/dist/{Validator-hFWKGxir.d.ts → Validator-CllRdrY0.d.ts} +1 -1
  7. package/dist/{Validator-C7GsVQOH.d.cts → Validator-D6okG9tr.d.cts} +1 -1
  8. package/dist/index.cjs +75 -29
  9. package/dist/index.d.cts +10 -4
  10. package/dist/index.d.ts +10 -4
  11. package/dist/index.js +75 -29
  12. package/dist/plugins/custom-format.cjs +33 -17
  13. package/dist/plugins/custom-format.d.cts +1 -1
  14. package/dist/plugins/custom-format.d.ts +1 -1
  15. package/dist/plugins/custom-format.js +33 -17
  16. package/dist/plugins/custom-type-example.cjs +33 -17
  17. package/dist/plugins/custom-type-example.d.cts +1 -1
  18. package/dist/plugins/custom-type-example.d.ts +1 -1
  19. package/dist/plugins/custom-type-example.js +33 -17
  20. package/dist/plugins/custom-validator.cjs +0 -2
  21. package/dist/plugins/custom-validator.d.cts +1 -1
  22. package/dist/plugins/custom-validator.d.ts +1 -1
  23. package/dist/plugins/custom-validator.js +0 -2
  24. package/docs/FEATURE-INDEX.md +553 -553
  25. package/docs/add-custom-locale.md +496 -496
  26. package/docs/add-keyword.md +24 -24
  27. package/docs/api-reference.md +1047 -1047
  28. package/docs/api.md +13 -13
  29. package/docs/best-practices-project-structure.md +417 -417
  30. package/docs/best-practices.md +712 -712
  31. package/docs/cache-manager.md +344 -344
  32. package/docs/compile.md +45 -45
  33. package/docs/conditional-api.md +1307 -1307
  34. package/docs/custom-extensions-guide.md +339 -339
  35. package/docs/design-philosophy.md +606 -606
  36. package/docs/doc-index.md +324 -324
  37. package/docs/dsl-syntax.md +714 -714
  38. package/docs/dynamic-locale.md +608 -608
  39. package/docs/enum.md +482 -482
  40. package/docs/error-handling.md +1975 -1975
  41. package/docs/export-guide.md +501 -501
  42. package/docs/export-limitations.md +567 -567
  43. package/docs/faq.md +596 -596
  44. package/docs/frontend-i18n-guide.md +307 -307
  45. package/docs/i18n-user-guide.md +487 -487
  46. package/docs/i18n.md +476 -476
  47. package/docs/index.md +48 -48
  48. package/docs/json-schema-basics.md +40 -40
  49. package/docs/label-vs-description.md +271 -271
  50. package/docs/markdown-exporter.md +406 -406
  51. package/docs/mongodb-exporter.md +302 -302
  52. package/docs/multi-language.md +26 -26
  53. package/docs/multi-type-support.md +322 -322
  54. package/docs/mysql-exporter.md +280 -280
  55. package/docs/number-operators.md +449 -449
  56. package/docs/optional-marker-guide.md +326 -326
  57. package/docs/performance-guide.md +49 -49
  58. package/docs/plugin-system.md +381 -381
  59. package/docs/plugin-type-registration.md +34 -34
  60. package/docs/postgresql-exporter.md +311 -311
  61. package/docs/public/favicon.svg +4 -4
  62. package/docs/quick-start.md +435 -435
  63. package/docs/runtime-locale-support.md +532 -532
  64. package/docs/schema-helper.md +345 -345
  65. package/docs/schema-utils-advanced-issues.md +23 -23
  66. package/docs/schema-utils-best-practices.md +20 -20
  67. package/docs/schema-utils-chaining.md +150 -150
  68. package/docs/schema-utils.md +524 -524
  69. package/docs/security-checklist.md +20 -20
  70. package/docs/string-extensions.md +488 -488
  71. package/docs/troubleshooting.md +486 -486
  72. package/docs/type-converter.md +310 -310
  73. package/docs/type-reference.md +242 -242
  74. package/docs/typescript-guide.md +584 -584
  75. package/docs/union-type-guide.md +157 -157
  76. package/docs/union-types.md +284 -284
  77. package/docs/validate-async.md +491 -491
  78. package/docs/validate-batch.md +49 -49
  79. package/docs/validate-dsl-object-support.md +578 -578
  80. package/docs/validate.md +506 -506
  81. package/docs/validation-guide.md +502 -502
  82. package/docs/validator.md +39 -39
  83. package/package.json +131 -131
  84. package/plugins/custom-format.cjs +8 -8
  85. package/plugins/custom-type-example.cjs +8 -8
  86. package/plugins/custom-validator.cjs +8 -8
  87. package/src/adapters/DslAdapter.ts +111 -111
  88. package/src/adapters/index.ts +1 -1
  89. package/src/config/constants.ts +83 -83
  90. package/src/config/index.ts +2 -2
  91. package/src/config/patterns.ts +77 -77
  92. package/src/core/CacheManager.ts +169 -159
  93. package/src/core/ConditionalBuilder.ts +382 -382
  94. package/src/core/ConditionalRuntime.ts +27 -27
  95. package/src/core/ConditionalValidator.ts +254 -254
  96. package/src/core/DslBuilder.ts +687 -677
  97. package/src/core/ErrorCodes.ts +38 -38
  98. package/src/core/ErrorFormatter.ts +271 -271
  99. package/src/core/JSONSchemaCore.ts +65 -65
  100. package/src/core/Locale.ts +187 -187
  101. package/src/core/MessageTemplate.ts +42 -42
  102. package/src/core/ObjectDslBuilder.ts +64 -64
  103. package/src/core/PluginManager.ts +326 -326
  104. package/src/core/StringExtensions.ts +140 -140
  105. package/src/core/TemplateEngine.ts +44 -44
  106. package/src/core/Validator.ts +448 -448
  107. package/src/errors/I18nError.ts +159 -159
  108. package/src/errors/ValidationError.ts +105 -105
  109. package/src/exporters/BaseExporter.ts +60 -60
  110. package/src/exporters/MarkdownExporter.ts +305 -305
  111. package/src/exporters/MongoDBExporter.ts +126 -126
  112. package/src/exporters/MySQLExporter.ts +156 -155
  113. package/src/exporters/PostgreSQLExporter.ts +222 -222
  114. package/src/exporters/index.ts +18 -18
  115. package/src/index.ts +651 -633
  116. package/src/locales/en-US.ts +160 -160
  117. package/src/locales/es-ES.ts +160 -160
  118. package/src/locales/fr-FR.ts +160 -160
  119. package/src/locales/index.ts +103 -103
  120. package/src/locales/ja-JP.ts +160 -160
  121. package/src/locales/types.ts +156 -156
  122. package/src/locales/zh-CN.ts +160 -160
  123. package/src/parser/ConstraintParser.ts +101 -101
  124. package/src/parser/DslParser.ts +470 -470
  125. package/src/parser/SchemaCompiler.ts +66 -66
  126. package/src/parser/TypeRegistry.ts +250 -250
  127. package/src/parser/index.ts +6 -6
  128. package/src/plugins/custom-format.ts +124 -126
  129. package/src/plugins/custom-type-example.ts +106 -108
  130. package/src/plugins/custom-validator.ts +138 -140
  131. package/src/types/conditional.ts +28 -28
  132. package/src/types/config.ts +59 -59
  133. package/src/types/dsl.ts +131 -131
  134. package/src/types/error.ts +60 -60
  135. package/src/types/index.ts +17 -17
  136. package/src/types/infer.ts +127 -127
  137. package/src/types/plugin.ts +58 -58
  138. package/src/types/safe-regex.d.ts +9 -9
  139. package/src/types/schema.ts +66 -66
  140. package/src/types/validate.ts +71 -71
  141. package/src/utils/SchemaHelper.ts +196 -196
  142. package/src/utils/SchemaUtils.ts +365 -346
  143. package/src/utils/TypeConverter.ts +215 -215
  144. package/src/utils/index.ts +10 -10
  145. package/src/validators/CustomKeywords.ts +477 -477
package/docs/doc-index.md CHANGED
@@ -1,324 +1,324 @@
1
- # schema-dsl 文档索引
2
-
3
- > **更新时间**: 2026-05-06
4
- > **用途**: 所有文档的快速导航
5
- > **在线文档**: https://schema-dsl.github.io
6
- > **文档数量**: `README.md + docs/*.md` 共 58 份
7
-
8
- ---
9
-
10
- ## 📑 目录
11
-
12
- ### 快速导航
13
- - [快速开始](#doc-index-quick-start) - 入门必读
14
- - [核心文档](#doc-index-core-docs) - 主要功能文档
15
- - [功能索引](#doc-index-feature-map) - 按功能查找
16
- - [导出器](#doc-index-exporters) - 数据库 Schema 导出
17
- - [工具类](#doc-index-utilities) - 辅助工具
18
- - [使用指南](#doc-index-guides) - 完整教程
19
- - [补充文档](#doc-index-supplemental) - 其余未在专题区展开的文档
20
- - [故障排查](#doc-index-troubleshooting) - 问题解决
21
- - [示例代码](#doc-index-examples) - 完整示例
22
- - [常见问题](#doc-index-faq) - FAQ
23
-
24
- ---
25
-
26
- <a id="doc-index-quick-start"></a>
27
-
28
- ## 🚀 快速开始
29
-
30
- | 文档 | 阅读时间 | 说明 |
31
- |------|----------|------|
32
- | [README.md](https://github.com/vextjs/schema-dsl/blob/main/README.md) | 3分钟 | 项目介绍、安装和快速开始 ⭐ |
33
- | [quick-start.md](quick-start.md) | 5分钟 | 5分钟快速上手教程 ⭐ |
34
- | [design-philosophy.md](design-philosophy.md) | 15分钟 | **设计理念与性能权衡** ⭐⭐⭐ |
35
- | [FEATURE-INDEX.md](FEATURE-INDEX.md) | 10分钟 | 完整功能索引 ⭐ |
36
- | [best-practices.md](best-practices.md) | 15分钟 | 最佳实践指南 ⭐⭐⭐ |
37
- | [faq.md](faq.md) | 5分钟 | 常见问题解答 |
38
-
39
- ---
40
-
41
- <a id="doc-index-core-docs"></a>
42
-
43
- ## 📖 核心文档
44
-
45
- ### DSL 语法(核心功能)
46
-
47
- | 文档 | 说明 |
48
- |------|------|
49
- | [dsl-syntax.md](dsl-syntax.md) | **DSL语法完整指南**(最重要)⭐⭐⭐ |
50
- | [string-extensions.md](string-extensions.md) | **String扩展文档** ⭐⭐ |
51
- | [plugin-system.md](plugin-system.md) | **插件系统指南** ⭐⭐ |
52
- | [api-reference.md](api-reference.md) | API完整参考 ⭐⭐ |
53
- | [validate.md](validate.md) | validate方法详解 ⭐ |
54
- | [**validate-async.md**](validate-async.md) | **异步验证方法详解** ⭐⭐⭐ |
55
- | [**schema-utils-chaining.md**](schema-utils-chaining.md) | **Schema链式复用方法** ⭐⭐⭐ |
56
- | [**schema-utils-best-practices.md**](schema-utils-best-practices.md) | **SchemaUtils最佳实践与常见陷阱** ⭐⭐⭐ |
57
- | [**schema-utils-advanced-issues.md**](schema-utils-advanced-issues.md) | **SchemaUtils深入问题分析** ⭐⭐ |
58
-
59
- ---
60
-
61
- <a id="doc-index-feature-map"></a>
62
-
63
- ## 🎯 功能索引
64
-
65
- ### 核心API
66
-
67
- | 功能 | 文档 | 代码位置 |
68
- |------|------|---------|
69
- | dsl() 函数 | [api-reference.md](api-reference.md#dsl-函数) | `src/index.ts` / `src/adapters/DslAdapter.ts` |
70
- | DslBuilder 类 | [api-reference.md](api-reference.md#dslbuilder-类) | `src/core/DslBuilder.ts` |
71
- | String 扩展 | [string-extensions.md](string-extensions.md) | `src/core/StringExtensions.ts` |
72
- | Validator 类 | [validate.md](validate.md) | `src/core/Validator.ts` |
73
- | validate() 函数 | [api-reference.md](api-reference.md) | `src/index.ts` |
74
- | validateAsync() 函数 | [validate-async.md](validate-async.md) | `src/index.ts` |
75
- | ValidationError 类 | [validate-async.md](validate-async.md#validationerror) | `src/errors/ValidationError.ts` |
76
- | SchemaUtils 链式调用 | [schema-utils-chaining.md](schema-utils-chaining.md) | `src/utils/SchemaUtils.ts` |
77
-
78
-
79
- ---
80
-
81
- <a id="doc-index-exporters"></a>
82
-
83
- ## 🗄️ 导出器
84
-
85
- > 将 JSON Schema 转换为数据库 DDL 和验证规则
86
-
87
- > ⚠️ **重要提示**: 请先阅读 [**导出限制说明**](export-limitations.md),了解哪些特性无法导出到数据库 Schema。
88
-
89
- ### 导出限制说明 ⚠️
90
-
91
- | 文档 | 说明 |
92
- |------|------|
93
- | [**export-limitations.md**](export-limitations.md) | **导出限制完整说明**(必读)⭐⭐⭐ |
94
-
95
- **主要内容**:
96
- - ❌ 不支持导出的特性(条件验证、自定义验证器等)
97
- - ⚠️ 部分支持的特性(正则、范围、枚举等)
98
- - ✅ 完全支持的特性(基础类型、必填约束等)
99
- - 数据库特定限制对比(MongoDB/MySQL/PostgreSQL)
100
- - 最佳实践建议(分层验证、文档化约束等)
101
-
102
- ### MongoDB 导出器
103
-
104
- | 文档 | 说明 |
105
- |------|------|
106
- | [mongodb-exporter.md](mongodb-exporter.md) | MongoDB 导出器完整指南 |
107
-
108
- **主要功能**:
109
- - `export()` - 导出 $jsonSchema 验证规则
110
- - `generateCreateCommand()` - 生成创建集合命令(含验证)
111
- - `generateCommand()` - 生成完整 runCommand 命令
112
- - `MongoDBExporter.export()` - 静态快速导出方法
113
-
114
- ### MySQL 导出器
115
-
116
- | 文档 | 说明 |
117
- |------|------|
118
- | [mysql-exporter.md](mysql-exporter.md) | MySQL 导出器完整指南 |
119
-
120
- **主要功能**:
121
- - `export()` - 导出 CREATE TABLE DDL
122
- - `generateIndex()` - 生成 CREATE INDEX DDL
123
- - 支持 ENGINE、CHARSET、COLLATE 配置
124
-
125
- ### PostgreSQL 导出器
126
-
127
- | 文档 | 说明 |
128
- |------|------|
129
- | [postgresql-exporter.md](postgresql-exporter.md) | PostgreSQL 导出器完整指南 |
130
-
131
- **主要功能**:
132
- - `export()` - 导出 CREATE TABLE DDL(含 CHECK 约束)
133
- - `generateIndex()` - 生成索引 DDL(支持 btree/gin/gist/hash)
134
- - 支持 Schema 命名空间和 COMMENT
135
-
136
- ---
137
-
138
- <a id="doc-index-utilities"></a>
139
-
140
- ## 🛠️ 工具类(Utilities)
141
-
142
- | 文档 | 说明 |
143
- |------|------|
144
- | [type-converter.md](type-converter.md) | TypeConverter - 类型转换工具 |
145
- | [schema-helper.md](schema-helper.md) | SchemaHelper - Schema 辅助工具 |
146
- | [cache-manager.md](cache-manager.md) | CacheManager - LRU缓存管理 |
147
-
148
- ### TypeConverter 主要功能
149
- - `toMongoDBType()` - 转换为 MongoDB 类型
150
- - `toMySQLType()` - 转换为 MySQL 类型
151
- - `toPostgreSQLType()` - 转换为 PostgreSQL 类型
152
- - `extractConstraints()` - 提取约束信息
153
- - `mergeSchemas()` - 合并多个 Schema
154
-
155
- ### SchemaHelper 主要功能
156
- - `isValidSchema()` - 验证 Schema 合法性
157
- - `cloneSchema()` - 深度克隆 Schema
158
- - `flattenSchema()` - 扁平化嵌套 Schema
159
- - `getFieldPaths()` - 获取所有字段路径
160
- - `summarizeSchema()` - 生成 Schema 摘要
161
-
162
- ### CacheManager 主要功能
163
- - LRU 缓存策略(最近最少使用淘汰)
164
- - TTL 过期支持
165
- - 缓存统计(命中率、大小等)
166
- - 线程安全设计
167
-
168
- ---
169
-
170
- <a id="doc-index-guides"></a>
171
-
172
- ## 📖 使用指南(Guides)
173
-
174
- | 文档 | 说明 |
175
- |------|------|
176
- | [validation-guide.md](validation-guide.md) | 数据验证完整指南 |
177
- | [export-guide.md](export-guide.md) | 数据库导出完整指南 |
178
- | [error-handling.md](error-handling.md) | 错误处理最佳实践 |
179
-
180
- ### 验证指南内容
181
- - 基础验证流程
182
- - 字段类型验证(字符串/数字/布尔/数组/对象)
183
- - 常用业务验证模式
184
- - 批量验证与性能优化
185
- - 错误处理最佳实践
186
-
187
- ### 导出指南内容
188
- - MongoDB/MySQL/PostgreSQL 导出对比
189
- - 配置与自定义选项
190
- - 自动化迁移脚本
191
- - 版本管理与最佳实践
192
- - **⚠️ [导出限制说明](export-limitations.md) - 哪些特性无法导出** ⭐⭐⭐
193
-
194
-
195
- - 数据库导出概述
196
- - MongoDB/MySQL/PostgreSQL 导出教程
197
- - 多数据库同步方案
198
- - 类型映射参考表
199
- - 最佳实践与常见问题
200
-
201
- ---
202
-
203
- <a id="doc-index-supplemental"></a>
204
-
205
- ## 🧩 补充文档
206
-
207
- > 上方专题区主要按学习路径和主题组织;以下补充索引列出当前尚未在专题区单独展开的其余文档,确保导航覆盖 `docs/*.md` 全量文档。
208
-
209
- | 文档 | 标题 / 说明 |
210
- |------|-------------|
211
- | [add-custom-locale.md](add-custom-locale.md) | 添加自定义语言包指南 |
212
- | [add-keyword.md](add-keyword.md) | addKeyword 方法 |
213
- | [api.md](api.md) | API 参考入口 |
214
- | [best-practices-project-structure.md](best-practices-project-structure.md) | Schema-DSL 项目最佳实践示例 |
215
- | [compile.md](compile.md) | compile 方法 |
216
- | [conditional-api.md](conditional-api.md) | 链式条件 API - ConditionalBuilder |
217
- | [custom-extensions-guide.md](custom-extensions-guide.md) | 自定义扩展指南 |
218
- | [dynamic-locale.md](dynamic-locale.md) | 动态多语言配置指南 |
219
- | [enum.md](enum.md) | 枚举功能文档 |
220
- | [frontend-i18n-guide.md](frontend-i18n-guide.md) | 前端动态切换语言 - 最佳实践指南 |
221
- | [i18n-user-guide.md](i18n-user-guide.md) | 多语言支持用户指南 |
222
- | [i18n.md](i18n.md) | 多语言配置指南 |
223
- | [index.md](index.md) | 站点首页文案(文件内未单独声明 H1) |
224
- | [json-schema-basics.md](json-schema-basics.md) | JSON Schema 基础 |
225
- | [label-vs-description.md](label-vs-description.md) | label vs description 使用指南 |
226
- | [markdown-exporter.md](markdown-exporter.md) | Markdown 导出器 |
227
- | [multi-language.md](multi-language.md) | 多语言支持 |
228
- | [multi-type-support.md](multi-type-support.md) | 多类型支持设计说明 |
229
- | [number-operators.md](number-operators.md) | 数字比较运算符 (v1.1.2+) |
230
- | [optional-marker-guide.md](optional-marker-guide.md) | schema-dsl 可选标记 ? 支持 |
231
- | [performance-guide.md](performance-guide.md) | 性能优化指南 |
232
- | [plugin-type-registration.md](plugin-type-registration.md) | 自定义类型注册 |
233
- | [runtime-locale-support.md](runtime-locale-support.md) | 运行时多语言支持 - schema-dsl |
234
- | [schema-utils.md](schema-utils.md) | Schema 工具函数文档 |
235
- | [security-checklist.md](security-checklist.md) | 安全检查清单 |
236
- | [troubleshooting.md](troubleshooting.md) | 常见问题排查指南 |
237
- | [type-reference.md](type-reference.md) | schema-dsl 类型参考 |
238
- | [typescript-guide.md](typescript-guide.md) | TypeScript 使用指南 |
239
- | [union-type-guide.md](union-type-guide.md) | 一个字段支持多种类型 |
240
- | [union-types.md](union-types.md) | 跨类型联合验证 - types: 语法 |
241
- | [validate-batch.md](validate-batch.md) | validateBatch 方法 |
242
- | [validate-dsl-object-support.md](validate-dsl-object-support.md) | validate() 函数支持 DSL 对象说明 |
243
- | [validator.md](validator.md) | Validator 类概述 |
244
-
245
- ---
246
-
247
- <a id="doc-index-examples"></a>
248
-
249
- ## 📝 示例代码(Examples)
250
-
251
- | 文件 | 说明 |
252
- |------|------|
253
- | [quick-start.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/quick-start.ts) | 快速开始示例 |
254
- | [dsl-syntax.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/dsl-syntax.ts) | DSL 风格完整示例 |
255
- | [string-extensions.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/string-extensions.ts) | String 扩展示例 |
256
- | [troubleshooting.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/troubleshooting.ts) | 排障与错误定位示例 |
257
-
258
- ---
259
-
260
- <a id="doc-index-faq"></a>
261
-
262
- ## ❓ 常见问题(FAQ)
263
-
264
- | 文档 | 说明 |
265
- |------|------|
266
- | [faq.md](faq.md) | 常见问题与解答 |
267
-
268
- **热门问题**:
269
- - DSL 语法与 Joi 语法的区别?
270
- - 如何自定义验证规则?
271
- - 如何优化验证性能?
272
- - 不同数据库的类型映射?
273
- - 如何处理验证错误?
274
-
275
- ---
276
-
277
- <a id="doc-index-troubleshooting"></a>
278
-
279
- ## 🔧 开发指南
280
-
281
- | 文档 | 说明 |
282
- |------|------|
283
- | [CONTRIBUTING.md](https://github.com/vextjs/schema-dsl/blob/main/CONTRIBUTING.md) | 贡献指南 |
284
-
285
- ---
286
-
287
- ## 📊 版本信息
288
-
289
- | 文档 | 说明 |
290
- |------|------|
291
- | [STATUS.md](https://github.com/vextjs/schema-dsl/blob/main/STATUS.md) | 项目状态(当前测试与发布状态)|
292
- | [CHANGELOG.md](https://github.com/vextjs/schema-dsl/blob/main/CHANGELOG.md) | 更新日志 |
293
-
294
- ---
295
-
296
- ## 📁 文档统计
297
-
298
- | 指标 | 当前值 |
299
- |------|--------|
300
- | `docs/*.md` 文档数 | **58** |
301
- | `README.md + docs/*.md` 文档数 | **59** |
302
- | 文档总行数 | **持续演进(以仓库实时内容为准)** |
303
- | 测试文件数 | **67** |
304
- | 最近一次全量验证 | **67 files / 1052 tests passed** |
305
-
306
- ---
307
-
308
- **图例说明**:
309
- - ⭐ 重点推荐文档
310
- - ⭐⭐ 核心文档
311
- - ⭐⭐⭐ 必读文档
312
-
313
- ---
314
-
315
- ## 对应示例文件
316
-
317
- **示例入口**: [doc-index.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/doc-index.ts)
318
- **说明**: 用一个最小入口脚本串起快速开始、编译校验和文档导出,帮助读者从索引页直接落到可运行示例。
319
-
320
- ---
321
-
322
- **最后更新**: 2026-05-08
323
-
324
-
1
+ # schema-dsl 文档索引
2
+
3
+ > **更新时间**: 2026-05-06
4
+ > **用途**: 所有文档的快速导航
5
+ > **在线文档**: https://schema-dsl.github.io
6
+ > **文档数量**: `README.md + docs/*.md` 共 58 份
7
+
8
+ ---
9
+
10
+ ## 📑 目录
11
+
12
+ ### 快速导航
13
+ - [快速开始](#doc-index-quick-start) - 入门必读
14
+ - [核心文档](#doc-index-core-docs) - 主要功能文档
15
+ - [功能索引](#doc-index-feature-map) - 按功能查找
16
+ - [导出器](#doc-index-exporters) - 数据库 Schema 导出
17
+ - [工具类](#doc-index-utilities) - 辅助工具
18
+ - [使用指南](#doc-index-guides) - 完整教程
19
+ - [补充文档](#doc-index-supplemental) - 其余未在专题区展开的文档
20
+ - [故障排查](#doc-index-troubleshooting) - 问题解决
21
+ - [示例代码](#doc-index-examples) - 完整示例
22
+ - [常见问题](#doc-index-faq) - FAQ
23
+
24
+ ---
25
+
26
+ <a id="doc-index-quick-start"></a>
27
+
28
+ ## 🚀 快速开始
29
+
30
+ | 文档 | 阅读时间 | 说明 |
31
+ |------|----------|------|
32
+ | [README.md](https://github.com/vextjs/schema-dsl/blob/main/README.md) | 3分钟 | 项目介绍、安装和快速开始 ⭐ |
33
+ | [quick-start.md](quick-start.md) | 5分钟 | 5分钟快速上手教程 ⭐ |
34
+ | [design-philosophy.md](design-philosophy.md) | 15分钟 | **设计理念与性能权衡** ⭐⭐⭐ |
35
+ | [FEATURE-INDEX.md](FEATURE-INDEX.md) | 10分钟 | 完整功能索引 ⭐ |
36
+ | [best-practices.md](best-practices.md) | 15分钟 | 最佳实践指南 ⭐⭐⭐ |
37
+ | [faq.md](faq.md) | 5分钟 | 常见问题解答 |
38
+
39
+ ---
40
+
41
+ <a id="doc-index-core-docs"></a>
42
+
43
+ ## 📖 核心文档
44
+
45
+ ### DSL 语法(核心功能)
46
+
47
+ | 文档 | 说明 |
48
+ |------|------|
49
+ | [dsl-syntax.md](dsl-syntax.md) | **DSL语法完整指南**(最重要)⭐⭐⭐ |
50
+ | [string-extensions.md](string-extensions.md) | **String扩展文档** ⭐⭐ |
51
+ | [plugin-system.md](plugin-system.md) | **插件系统指南** ⭐⭐ |
52
+ | [api-reference.md](api-reference.md) | API完整参考 ⭐⭐ |
53
+ | [validate.md](validate.md) | validate方法详解 ⭐ |
54
+ | [**validate-async.md**](validate-async.md) | **异步验证方法详解** ⭐⭐⭐ |
55
+ | [**schema-utils-chaining.md**](schema-utils-chaining.md) | **Schema链式复用方法** ⭐⭐⭐ |
56
+ | [**schema-utils-best-practices.md**](schema-utils-best-practices.md) | **SchemaUtils最佳实践与常见陷阱** ⭐⭐⭐ |
57
+ | [**schema-utils-advanced-issues.md**](schema-utils-advanced-issues.md) | **SchemaUtils深入问题分析** ⭐⭐ |
58
+
59
+ ---
60
+
61
+ <a id="doc-index-feature-map"></a>
62
+
63
+ ## 🎯 功能索引
64
+
65
+ ### 核心API
66
+
67
+ | 功能 | 文档 | 代码位置 |
68
+ |------|------|---------|
69
+ | dsl() 函数 | [api-reference.md](api-reference.md#dsl-函数) | `src/index.ts` / `src/adapters/DslAdapter.ts` |
70
+ | DslBuilder 类 | [api-reference.md](api-reference.md#dslbuilder-类) | `src/core/DslBuilder.ts` |
71
+ | String 扩展 | [string-extensions.md](string-extensions.md) | `src/core/StringExtensions.ts` |
72
+ | Validator 类 | [validate.md](validate.md) | `src/core/Validator.ts` |
73
+ | validate() 函数 | [api-reference.md](api-reference.md) | `src/index.ts` |
74
+ | validateAsync() 函数 | [validate-async.md](validate-async.md) | `src/index.ts` |
75
+ | ValidationError 类 | [validate-async.md](validate-async.md#validationerror) | `src/errors/ValidationError.ts` |
76
+ | SchemaUtils 链式调用 | [schema-utils-chaining.md](schema-utils-chaining.md) | `src/utils/SchemaUtils.ts` |
77
+
78
+
79
+ ---
80
+
81
+ <a id="doc-index-exporters"></a>
82
+
83
+ ## 🗄️ 导出器
84
+
85
+ > 将 JSON Schema 转换为数据库 DDL 和验证规则
86
+
87
+ > ⚠️ **重要提示**: 请先阅读 [**导出限制说明**](export-limitations.md),了解哪些特性无法导出到数据库 Schema。
88
+
89
+ ### 导出限制说明 ⚠️
90
+
91
+ | 文档 | 说明 |
92
+ |------|------|
93
+ | [**export-limitations.md**](export-limitations.md) | **导出限制完整说明**(必读)⭐⭐⭐ |
94
+
95
+ **主要内容**:
96
+ - ❌ 不支持导出的特性(条件验证、自定义验证器等)
97
+ - ⚠️ 部分支持的特性(正则、范围、枚举等)
98
+ - ✅ 完全支持的特性(基础类型、必填约束等)
99
+ - 数据库特定限制对比(MongoDB/MySQL/PostgreSQL)
100
+ - 最佳实践建议(分层验证、文档化约束等)
101
+
102
+ ### MongoDB 导出器
103
+
104
+ | 文档 | 说明 |
105
+ |------|------|
106
+ | [mongodb-exporter.md](mongodb-exporter.md) | MongoDB 导出器完整指南 |
107
+
108
+ **主要功能**:
109
+ - `export()` - 导出 $jsonSchema 验证规则
110
+ - `generateCreateCommand()` - 生成创建集合命令(含验证)
111
+ - `generateCommand()` - 生成完整 runCommand 命令
112
+ - `MongoDBExporter.export()` - 静态快速导出方法
113
+
114
+ ### MySQL 导出器
115
+
116
+ | 文档 | 说明 |
117
+ |------|------|
118
+ | [mysql-exporter.md](mysql-exporter.md) | MySQL 导出器完整指南 |
119
+
120
+ **主要功能**:
121
+ - `export()` - 导出 CREATE TABLE DDL
122
+ - `generateIndex()` - 生成 CREATE INDEX DDL
123
+ - 支持 ENGINE、CHARSET、COLLATE 配置
124
+
125
+ ### PostgreSQL 导出器
126
+
127
+ | 文档 | 说明 |
128
+ |------|------|
129
+ | [postgresql-exporter.md](postgresql-exporter.md) | PostgreSQL 导出器完整指南 |
130
+
131
+ **主要功能**:
132
+ - `export()` - 导出 CREATE TABLE DDL(含 CHECK 约束)
133
+ - `generateIndex()` - 生成索引 DDL(支持 btree/gin/gist/hash)
134
+ - 支持 Schema 命名空间和 COMMENT
135
+
136
+ ---
137
+
138
+ <a id="doc-index-utilities"></a>
139
+
140
+ ## 🛠️ 工具类(Utilities)
141
+
142
+ | 文档 | 说明 |
143
+ |------|------|
144
+ | [type-converter.md](type-converter.md) | TypeConverter - 类型转换工具 |
145
+ | [schema-helper.md](schema-helper.md) | SchemaHelper - Schema 辅助工具 |
146
+ | [cache-manager.md](cache-manager.md) | CacheManager - LRU缓存管理 |
147
+
148
+ ### TypeConverter 主要功能
149
+ - `toMongoDBType()` - 转换为 MongoDB 类型
150
+ - `toMySQLType()` - 转换为 MySQL 类型
151
+ - `toPostgreSQLType()` - 转换为 PostgreSQL 类型
152
+ - `extractConstraints()` - 提取约束信息
153
+ - `mergeSchemas()` - 合并多个 Schema
154
+
155
+ ### SchemaHelper 主要功能
156
+ - `isValidSchema()` - 验证 Schema 合法性
157
+ - `cloneSchema()` - 深度克隆 Schema
158
+ - `flattenSchema()` - 扁平化嵌套 Schema
159
+ - `getFieldPaths()` - 获取所有字段路径
160
+ - `summarizeSchema()` - 生成 Schema 摘要
161
+
162
+ ### CacheManager 主要功能
163
+ - LRU 缓存策略(最近最少使用淘汰)
164
+ - TTL 过期支持
165
+ - 缓存统计(命中率、大小等)
166
+ - 线程安全设计
167
+
168
+ ---
169
+
170
+ <a id="doc-index-guides"></a>
171
+
172
+ ## 📖 使用指南(Guides)
173
+
174
+ | 文档 | 说明 |
175
+ |------|------|
176
+ | [validation-guide.md](validation-guide.md) | 数据验证完整指南 |
177
+ | [export-guide.md](export-guide.md) | 数据库导出完整指南 |
178
+ | [error-handling.md](error-handling.md) | 错误处理最佳实践 |
179
+
180
+ ### 验证指南内容
181
+ - 基础验证流程
182
+ - 字段类型验证(字符串/数字/布尔/数组/对象)
183
+ - 常用业务验证模式
184
+ - 批量验证与性能优化
185
+ - 错误处理最佳实践
186
+
187
+ ### 导出指南内容
188
+ - MongoDB/MySQL/PostgreSQL 导出对比
189
+ - 配置与自定义选项
190
+ - 自动化迁移脚本
191
+ - 版本管理与最佳实践
192
+ - **⚠️ [导出限制说明](export-limitations.md) - 哪些特性无法导出** ⭐⭐⭐
193
+
194
+
195
+ - 数据库导出概述
196
+ - MongoDB/MySQL/PostgreSQL 导出教程
197
+ - 多数据库同步方案
198
+ - 类型映射参考表
199
+ - 最佳实践与常见问题
200
+
201
+ ---
202
+
203
+ <a id="doc-index-supplemental"></a>
204
+
205
+ ## 🧩 补充文档
206
+
207
+ > 上方专题区主要按学习路径和主题组织;以下补充索引列出当前尚未在专题区单独展开的其余文档,确保导航覆盖 `docs/*.md` 全量文档。
208
+
209
+ | 文档 | 标题 / 说明 |
210
+ |------|-------------|
211
+ | [add-custom-locale.md](add-custom-locale.md) | 添加自定义语言包指南 |
212
+ | [add-keyword.md](add-keyword.md) | addKeyword 方法 |
213
+ | [api.md](api.md) | API 参考入口 |
214
+ | [best-practices-project-structure.md](best-practices-project-structure.md) | Schema-DSL 项目最佳实践示例 |
215
+ | [compile.md](compile.md) | compile 方法 |
216
+ | [conditional-api.md](conditional-api.md) | 链式条件 API - ConditionalBuilder |
217
+ | [custom-extensions-guide.md](custom-extensions-guide.md) | 自定义扩展指南 |
218
+ | [dynamic-locale.md](dynamic-locale.md) | 动态多语言配置指南 |
219
+ | [enum.md](enum.md) | 枚举功能文档 |
220
+ | [frontend-i18n-guide.md](frontend-i18n-guide.md) | 前端动态切换语言 - 最佳实践指南 |
221
+ | [i18n-user-guide.md](i18n-user-guide.md) | 多语言支持用户指南 |
222
+ | [i18n.md](i18n.md) | 多语言配置指南 |
223
+ | [index.md](index.md) | 站点首页文案(文件内未单独声明 H1) |
224
+ | [json-schema-basics.md](json-schema-basics.md) | JSON Schema 基础 |
225
+ | [label-vs-description.md](label-vs-description.md) | label vs description 使用指南 |
226
+ | [markdown-exporter.md](markdown-exporter.md) | Markdown 导出器 |
227
+ | [multi-language.md](multi-language.md) | 多语言支持 |
228
+ | [multi-type-support.md](multi-type-support.md) | 多类型支持设计说明 |
229
+ | [number-operators.md](number-operators.md) | 数字比较运算符 (v1.1.2+) |
230
+ | [optional-marker-guide.md](optional-marker-guide.md) | schema-dsl 可选标记 ? 支持 |
231
+ | [performance-guide.md](performance-guide.md) | 性能优化指南 |
232
+ | [plugin-type-registration.md](plugin-type-registration.md) | 自定义类型注册 |
233
+ | [runtime-locale-support.md](runtime-locale-support.md) | 运行时多语言支持 - schema-dsl |
234
+ | [schema-utils.md](schema-utils.md) | Schema 工具函数文档 |
235
+ | [security-checklist.md](security-checklist.md) | 安全检查清单 |
236
+ | [troubleshooting.md](troubleshooting.md) | 常见问题排查指南 |
237
+ | [type-reference.md](type-reference.md) | schema-dsl 类型参考 |
238
+ | [typescript-guide.md](typescript-guide.md) | TypeScript 使用指南 |
239
+ | [union-type-guide.md](union-type-guide.md) | 一个字段支持多种类型 |
240
+ | [union-types.md](union-types.md) | 跨类型联合验证 - types: 语法 |
241
+ | [validate-batch.md](validate-batch.md) | validateBatch 方法 |
242
+ | [validate-dsl-object-support.md](validate-dsl-object-support.md) | validate() 函数支持 DSL 对象说明 |
243
+ | [validator.md](validator.md) | Validator 类概述 |
244
+
245
+ ---
246
+
247
+ <a id="doc-index-examples"></a>
248
+
249
+ ## 📝 示例代码(Examples)
250
+
251
+ | 文件 | 说明 |
252
+ |------|------|
253
+ | [quick-start.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/quick-start.ts) | 快速开始示例 |
254
+ | [dsl-syntax.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/dsl-syntax.ts) | DSL 风格完整示例 |
255
+ | [string-extensions.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/string-extensions.ts) | String 扩展示例 |
256
+ | [troubleshooting.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/troubleshooting.ts) | 排障与错误定位示例 |
257
+
258
+ ---
259
+
260
+ <a id="doc-index-faq"></a>
261
+
262
+ ## ❓ 常见问题(FAQ)
263
+
264
+ | 文档 | 说明 |
265
+ |------|------|
266
+ | [faq.md](faq.md) | 常见问题与解答 |
267
+
268
+ **热门问题**:
269
+ - DSL 语法与 Joi 语法的区别?
270
+ - 如何自定义验证规则?
271
+ - 如何优化验证性能?
272
+ - 不同数据库的类型映射?
273
+ - 如何处理验证错误?
274
+
275
+ ---
276
+
277
+ <a id="doc-index-troubleshooting"></a>
278
+
279
+ ## 🔧 开发指南
280
+
281
+ | 文档 | 说明 |
282
+ |------|------|
283
+ | [CONTRIBUTING.md](https://github.com/vextjs/schema-dsl/blob/main/CONTRIBUTING.md) | 贡献指南 |
284
+
285
+ ---
286
+
287
+ ## 📊 版本信息
288
+
289
+ | 文档 | 说明 |
290
+ |------|------|
291
+ | [STATUS.md](https://github.com/vextjs/schema-dsl/blob/main/STATUS.md) | 项目状态(当前测试与发布状态)|
292
+ | [CHANGELOG.md](https://github.com/vextjs/schema-dsl/blob/main/CHANGELOG.md) | 更新日志 |
293
+
294
+ ---
295
+
296
+ ## 📁 文档统计
297
+
298
+ | 指标 | 当前值 |
299
+ |------|--------|
300
+ | `docs/*.md` 文档数 | **58** |
301
+ | `README.md + docs/*.md` 文档数 | **59** |
302
+ | 文档总行数 | **持续演进(以仓库实时内容为准)** |
303
+ | 测试文件数 | **67** |
304
+ | 最近一次全量验证 | **67 files / 1052 tests passed** |
305
+
306
+ ---
307
+
308
+ **图例说明**:
309
+ - ⭐ 重点推荐文档
310
+ - ⭐⭐ 核心文档
311
+ - ⭐⭐⭐ 必读文档
312
+
313
+ ---
314
+
315
+ ## 对应示例文件
316
+
317
+ **示例入口**: [doc-index.ts](https://github.com/vextjs/schema-dsl/blob/main/examples/docs/doc-index.ts)
318
+ **说明**: 用一个最小入口脚本串起快速开始、编译校验和文档导出,帮助读者从索引页直接落到可运行示例。
319
+
320
+ ---
321
+
322
+ **最后更新**: 2026-05-08
323
+
324
+