schema-dsl 2.3.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.
Files changed (109) hide show
  1. package/.eslintignore +10 -0
  2. package/.eslintrc.json +27 -0
  3. package/.github/CODE_OF_CONDUCT.md +45 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +57 -0
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -0
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
  7. package/.github/ISSUE_TEMPLATE/question.md +31 -0
  8. package/.github/PULL_REQUEST_TEMPLATE.md +70 -0
  9. package/.github/SECURITY.md +184 -0
  10. package/.github/workflows/ci.yml +35 -0
  11. package/CHANGELOG.md +633 -0
  12. package/CONTRIBUTING.md +368 -0
  13. package/LICENSE +21 -0
  14. package/README.md +1122 -0
  15. package/STATUS.md +273 -0
  16. package/docs/FEATURE-INDEX.md +521 -0
  17. package/docs/INDEX.md +224 -0
  18. package/docs/api-reference.md +1098 -0
  19. package/docs/best-practices.md +672 -0
  20. package/docs/cache-manager.md +336 -0
  21. package/docs/design-philosophy.md +602 -0
  22. package/docs/dsl-syntax.md +654 -0
  23. package/docs/dynamic-locale.md +552 -0
  24. package/docs/error-handling.md +703 -0
  25. package/docs/export-guide.md +459 -0
  26. package/docs/faq.md +576 -0
  27. package/docs/frontend-i18n-guide.md +290 -0
  28. package/docs/i18n-user-guide.md +488 -0
  29. package/docs/label-vs-description.md +262 -0
  30. package/docs/markdown-exporter.md +398 -0
  31. package/docs/mongodb-exporter.md +279 -0
  32. package/docs/multi-type-support.md +319 -0
  33. package/docs/mysql-exporter.md +257 -0
  34. package/docs/plugin-system.md +542 -0
  35. package/docs/postgresql-exporter.md +290 -0
  36. package/docs/quick-start.md +761 -0
  37. package/docs/schema-helper.md +340 -0
  38. package/docs/schema-utils.md +492 -0
  39. package/docs/string-extensions.md +480 -0
  40. package/docs/troubleshooting.md +471 -0
  41. package/docs/type-converter.md +319 -0
  42. package/docs/type-reference.md +219 -0
  43. package/docs/validate.md +486 -0
  44. package/docs/validation-guide.md +484 -0
  45. package/examples/array-dsl-example.js +227 -0
  46. package/examples/custom-extension.js +85 -0
  47. package/examples/dsl-match-example.js +74 -0
  48. package/examples/dsl-style.js +118 -0
  49. package/examples/dynamic-locale-configuration.js +348 -0
  50. package/examples/dynamic-locale-example.js +287 -0
  51. package/examples/export-demo.js +130 -0
  52. package/examples/i18n-full-demo.js +310 -0
  53. package/examples/i18n-memory-safety.examples.js +268 -0
  54. package/examples/markdown-export.js +71 -0
  55. package/examples/middleware-usage.js +93 -0
  56. package/examples/password-reset/README.md +153 -0
  57. package/examples/password-reset/schema.js +26 -0
  58. package/examples/password-reset/test.js +101 -0
  59. package/examples/plugin-system.examples.js +205 -0
  60. package/examples/simple-example.js +122 -0
  61. package/examples/string-extensions.js +297 -0
  62. package/examples/user-registration/README.md +156 -0
  63. package/examples/user-registration/routes.js +92 -0
  64. package/examples/user-registration/schema.js +150 -0
  65. package/examples/user-registration/server.js +74 -0
  66. package/index.d.ts +1999 -0
  67. package/index.js +270 -0
  68. package/index.mjs +30 -0
  69. package/lib/adapters/DslAdapter.js +653 -0
  70. package/lib/adapters/index.js +20 -0
  71. package/lib/config/constants.js +286 -0
  72. package/lib/config/patterns/creditCard.js +9 -0
  73. package/lib/config/patterns/idCard.js +9 -0
  74. package/lib/config/patterns/index.js +8 -0
  75. package/lib/config/patterns/licensePlate.js +4 -0
  76. package/lib/config/patterns/passport.js +4 -0
  77. package/lib/config/patterns/phone.js +9 -0
  78. package/lib/config/patterns/postalCode.js +5 -0
  79. package/lib/core/CacheManager.js +376 -0
  80. package/lib/core/DslBuilder.js +740 -0
  81. package/lib/core/ErrorCodes.js +233 -0
  82. package/lib/core/ErrorFormatter.js +342 -0
  83. package/lib/core/JSONSchemaCore.js +347 -0
  84. package/lib/core/Locale.js +119 -0
  85. package/lib/core/MessageTemplate.js +89 -0
  86. package/lib/core/PluginManager.js +448 -0
  87. package/lib/core/StringExtensions.js +209 -0
  88. package/lib/core/Validator.js +316 -0
  89. package/lib/exporters/MarkdownExporter.js +420 -0
  90. package/lib/exporters/MongoDBExporter.js +162 -0
  91. package/lib/exporters/MySQLExporter.js +212 -0
  92. package/lib/exporters/PostgreSQLExporter.js +289 -0
  93. package/lib/exporters/index.js +24 -0
  94. package/lib/locales/en-US.js +65 -0
  95. package/lib/locales/es-ES.js +66 -0
  96. package/lib/locales/fr-FR.js +66 -0
  97. package/lib/locales/index.js +8 -0
  98. package/lib/locales/ja-JP.js +66 -0
  99. package/lib/locales/zh-CN.js +93 -0
  100. package/lib/utils/LRUCache.js +174 -0
  101. package/lib/utils/SchemaHelper.js +240 -0
  102. package/lib/utils/SchemaUtils.js +313 -0
  103. package/lib/utils/TypeConverter.js +245 -0
  104. package/lib/utils/index.js +13 -0
  105. package/lib/validators/CustomKeywords.js +203 -0
  106. package/lib/validators/index.js +11 -0
  107. package/package.json +70 -0
  108. package/plugins/custom-format.js +101 -0
  109. package/plugins/custom-validator.js +200 -0
package/docs/INDEX.md ADDED
@@ -0,0 +1,224 @@
1
+ # schema-dsl 文档索引
2
+
3
+ > **更新时间**: 2025-12-29
4
+ > **用途**: 所有文档的快速导航
5
+ > **文档数量**: 26个文档(总计 11,600+ 行)
6
+
7
+ ---
8
+
9
+ ## 📑 目录
10
+
11
+ ### 快速导航
12
+ - [🚀 快速开始](#-快速开始) - 入门必读
13
+ - [📖 核心文档](#-核心文档) - 主要功能文档
14
+ - [🎯 功能索引](#-功能索引) - 按功能查找
15
+ - [🗄️ 导出器](#️-导出器) - 数据库Schema导出
16
+ - [🛠️ 工具类](#️-工具类utilities) - 辅助工具
17
+ - [📖 使用指南](#-使用指南guides) - 完整教程
18
+ - [🔧 故障排查](#-故障排查troubleshooting) - 问题解决
19
+ - [📝 示例代码](#-示例代码examples) - 完整示例
20
+ - [❓ 常见问题](#-常见问题faq) - FAQ
21
+
22
+ ---
23
+
24
+ ## 🚀 快速开始
25
+
26
+ | 文档 | 阅读时间 | 说明 |
27
+ |------|----------|------|
28
+ | [README.md](../README.md) | 3分钟 | 项目介绍、安装和快速开始 ⭐ |
29
+ | [quick-start.md](quick-start.md) | 5分钟 | 5分钟快速上手教程 ⭐ |
30
+ | [design-philosophy.md](design-philosophy.md) | 15分钟 | **设计理念与性能权衡** ⭐⭐⭐ |
31
+ | [FEATURE-INDEX.md](FEATURE-INDEX.md) | 10分钟 | 完整功能索引 ⭐ |
32
+ | [best-practices.md](best-practices.md) | 15分钟 | 最佳实践指南 ⭐⭐⭐ |
33
+ | [faq.md](faq.md) | 5分钟 | 常见问题解答 |
34
+
35
+ ---
36
+
37
+ ## 📖 核心文档
38
+
39
+ ### DSL 语法(核心功能)
40
+
41
+ | 文档 | 行数 | 说明 |
42
+ |------|------|------|
43
+ | [dsl-syntax.md](dsl-syntax.md) | 2815行 | **DSL语法完整指南**(最重要)⭐⭐⭐ |
44
+ | [string-extensions.md](string-extensions.md) | 465行 | **String扩展文档** ⭐⭐ |
45
+ | [plugin-system.md](plugin-system.md) | 580行 | **插件系统指南** ⭐⭐ |
46
+ | [api-reference.md](api-reference.md) | 534行 | API完整参考 ⭐⭐ |
47
+ | [validate.md](validate.md) | 452行 | validate方法详解 ⭐ |
48
+
49
+ ---
50
+
51
+ ## 🎯 功能索引
52
+
53
+ ### 核心API
54
+
55
+ | 功能 | 文档 | 代码位置 |
56
+ |------|------|---------|
57
+ | dsl() 函数 | [api-reference.md](api-reference.md#dsl-函数) | `lib/adapters/DslAdapter.js` |
58
+ | DslBuilder 类 | [api-reference.md](api-reference.md#dslbuilder-类) | `lib/core/DslBuilder.js` |
59
+ | String 扩展 | [string-extensions.md](string-extensions.md) | `lib/core/StringExtensions.js` |
60
+ | Validator 类 | [validate.md](validate.md) | `lib/core/Validator.js` |
61
+ | validate() 函数 | [api-reference.md](api-reference.md) | `index.js` |
62
+
63
+
64
+ ---
65
+
66
+ ## 🗄️ 导出器
67
+
68
+ > 将 JSON Schema 转换为数据库 DDL 和验证规则
69
+
70
+ ### MongoDB 导出器
71
+
72
+ | 文档 | 行数 | 说明 |
73
+ |------|------|------|
74
+ | [mongodb-exporter.md](mongodb-exporter.md) | ~200行 | MongoDB 导出器完整指南 |
75
+
76
+ **主要功能**:
77
+ - `export()` - 导出 $jsonSchema 验证规则
78
+ - `generateCreateCommand()` - 生成创建集合命令(含验证)
79
+ - `generateCommand()` - 生成完整 runCommand 命令
80
+ - `MongoDBExporter.export()` - 静态快速导出方法
81
+
82
+ ### MySQL 导出器
83
+
84
+ | 文档 | 行数 | 说明 |
85
+ |------|------|------|
86
+ | [mysql-exporter.md](mysql-exporter.md) | ~220行 | MySQL 导出器完整指南 |
87
+
88
+ **主要功能**:
89
+ - `export()` - 导出 CREATE TABLE DDL
90
+ - `generateIndex()` - 生成 CREATE INDEX DDL
91
+ - 支持 ENGINE、CHARSET、COLLATE 配置
92
+
93
+ ### PostgreSQL 导出器
94
+
95
+ | 文档 | 行数 | 说明 |
96
+ |------|------|------|
97
+ | [postgresql-exporter.md](postgresql-exporter.md) | ~280行 | PostgreSQL 导出器完整指南 |
98
+
99
+ **主要功能**:
100
+ - `export()` - 导出 CREATE TABLE DDL(含 CHECK 约束)
101
+ - `generateIndex()` - 生成索引 DDL(支持 btree/gin/gist/hash)
102
+ - 支持 Schema 命名空间和 COMMENT
103
+
104
+ ---
105
+
106
+ ## 🛠️ 工具类(Utilities)
107
+
108
+ | 文档 | 行数 | 说明 |
109
+ |------|------|------|
110
+ | [type-converter.md](type-converter.md) | ~250行 | TypeConverter - 类型转换工具 |
111
+ | [schema-helper.md](schema-helper.md) | ~220行 | SchemaHelper - Schema 辅助工具 |
112
+ | [cache-manager.md](cache-manager.md) | ~250行 | CacheManager - LRU缓存管理 |
113
+
114
+ ### TypeConverter 主要功能
115
+ - `toMongoDBType()` - 转换为 MongoDB 类型
116
+ - `toMySQLType()` - 转换为 MySQL 类型
117
+ - `toPostgreSQLType()` - 转换为 PostgreSQL 类型
118
+ - `extractConstraints()` - 提取约束信息
119
+ - `mergeSchemas()` - 合并多个 Schema
120
+
121
+ ### SchemaHelper 主要功能
122
+ - `isValidSchema()` - 验证 Schema 合法性
123
+ - `cloneSchema()` - 深度克隆 Schema
124
+ - `flattenSchema()` - 扁平化嵌套 Schema
125
+ - `getFieldPaths()` - 获取所有字段路径
126
+ - `summarizeSchema()` - 生成 Schema 摘要
127
+
128
+ ### CacheManager 主要功能
129
+ - LRU 缓存策略(最近最少使用淘汰)
130
+ - TTL 过期支持
131
+ - 缓存统计(命中率、大小等)
132
+ - 线程安全设计
133
+
134
+ ---
135
+
136
+ ## 📖 使用指南(Guides)
137
+
138
+ | 文档 | 行数 | 说明 |
139
+ |------|------|------|
140
+ | [validation-guide.md](validation-guide.md) | ~400行 | 数据验证完整指南 |
141
+ | [export-guide.md](export-guide.md) | ~350行 | 数据库导出完整指南 |
142
+ | [error-handling.md](error-handling.md) | ~640行 | 错误处理最佳实践 |
143
+
144
+ ### 验证指南内容
145
+ - 基础验证流程
146
+ - 字段类型验证(字符串/数字/布尔/数组/对象)
147
+ - 常用业务验证模式
148
+ - 批量验证与性能优化
149
+ - 错误处理最佳实践
150
+
151
+ ### 导出指南内容
152
+ - 数据库导出概述
153
+ - MongoDB/MySQL/PostgreSQL 导出教程
154
+ - 多数据库同步方案
155
+ - 类型映射参考表
156
+ - 最佳实践与常见问题
157
+
158
+ ---
159
+
160
+ ## 📝 示例代码(Examples)
161
+
162
+ | 文件 | 说明 |
163
+ |------|------|
164
+ | [joi-style.js](../examples/joi-style.js) | Joi 风格完整示例 |
165
+ | [dsl-style.js](../examples/dsl-style.js) | DSL 风格完整示例 |
166
+ | [string-extensions.js](../examples/string-extensions.js) | String 扩展示例 |
167
+ | [password-reset/](../examples/password-reset/) | 密码重置表单示例 |
168
+
169
+ ---
170
+
171
+ ## ❓ 常见问题(FAQ)
172
+
173
+ | 文档 | 说明 |
174
+ |------|------|
175
+ | [faq.md](faq.md) | 常见问题与解答 |
176
+
177
+ **热门问题**:
178
+ - DSL 语法与 Joi 语法的区别?
179
+ - 如何自定义验证规则?
180
+ - 如何优化验证性能?
181
+ - 不同数据库的类型映射?
182
+ - 如何处理验证错误?
183
+
184
+ ---
185
+
186
+ ## 🔧 开发指南
187
+
188
+ | 文档 | 说明 |
189
+ |------|------|
190
+ | [CONTRIBUTING.md](../CONTRIBUTING.md) | 贡献指南 |
191
+ | [DOCUMENTATION-ISSUES.md](../DOCUMENTATION-ISSUES.md) | 文档审核报告 |
192
+
193
+ ---
194
+
195
+ ## 📊 版本信息
196
+
197
+ | 文档 | 说明 |
198
+ |------|------|
199
+ | [STATUS.md](../STATUS.md) | 项目状态(243个测试全部通过)|
200
+ | [CHANGELOG.md](../CHANGELOG.md) | 更新日志 |
201
+
202
+ ---
203
+
204
+ ## 📁 文档统计
205
+
206
+ | 分类 | 文档数 | 总行数 |
207
+ |------|--------|--------|
208
+ | 核心文档 | 4 | ~4,266 |
209
+ | 导出器文档 | 3 | ~700 |
210
+ | 工具类文档 | 3 | ~720 |
211
+ | 使用指南 | 3 | ~1,390 |
212
+ | 其他文档 | 9 | ~500 |
213
+ | **合计** | **22** | **~7,576** |
214
+
215
+ ---
216
+
217
+ **图例说明**:
218
+ - ⭐ 重点推荐文档
219
+ - ⭐⭐ 核心文档
220
+ - ⭐⭐⭐ 必读文档
221
+
222
+ **最后更新**: 2025-12-26
223
+
224
+