schema-dsl 1.0.8 → 1.1.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 (49) hide show
  1. package/CHANGELOG.md +338 -3
  2. package/README.md +296 -17
  3. package/STATUS.md +74 -3
  4. package/docs/FEATURE-INDEX.md +1 -1
  5. package/docs/add-custom-locale.md +395 -0
  6. package/docs/best-practices.md +3 -3
  7. package/docs/cache-manager.md +1 -1
  8. package/docs/conditional-api.md +1032 -0
  9. package/docs/dsl-syntax.md +1 -1
  10. package/docs/dynamic-locale.md +76 -30
  11. package/docs/error-handling.md +2 -2
  12. package/docs/export-guide.md +2 -2
  13. package/docs/export-limitations.md +3 -3
  14. package/docs/faq.md +6 -6
  15. package/docs/frontend-i18n-guide.md +19 -16
  16. package/docs/i18n-user-guide.md +7 -9
  17. package/docs/i18n.md +65 -2
  18. package/docs/mongodb-exporter.md +3 -3
  19. package/docs/multi-type-support.md +12 -2
  20. package/docs/mysql-exporter.md +1 -1
  21. package/docs/plugin-system.md +4 -4
  22. package/docs/postgresql-exporter.md +1 -1
  23. package/docs/quick-start.md +4 -4
  24. package/docs/troubleshooting.md +2 -2
  25. package/docs/type-reference.md +5 -5
  26. package/docs/typescript-guide.md +5 -6
  27. package/docs/union-type-guide.md +147 -0
  28. package/docs/union-types.md +277 -0
  29. package/docs/validate-async.md +1 -1
  30. package/examples/array-dsl-example.js +1 -1
  31. package/examples/conditional-example.js +288 -0
  32. package/examples/conditional-non-object.js +129 -0
  33. package/examples/conditional-validate-example.js +321 -0
  34. package/examples/union-type-example.js +127 -0
  35. package/examples/union-types-example.js +77 -0
  36. package/index.d.ts +395 -12
  37. package/index.js +31 -4
  38. package/lib/adapters/DslAdapter.js +14 -5
  39. package/lib/core/ConditionalBuilder.js +401 -0
  40. package/lib/core/DslBuilder.js +113 -0
  41. package/lib/core/ErrorFormatter.js +81 -33
  42. package/lib/core/Locale.js +13 -8
  43. package/lib/core/Validator.js +252 -16
  44. package/lib/locales/en-US.js +14 -0
  45. package/lib/locales/es-ES.js +4 -0
  46. package/lib/locales/fr-FR.js +4 -0
  47. package/lib/locales/ja-JP.js +9 -0
  48. package/lib/locales/zh-CN.js +14 -0
  49. package/package.json +5 -2
@@ -649,5 +649,5 @@ dsl.match('vipLevel', { gold: 'number:0-50', silver: 'number:0-20' })
649
649
  ---
650
650
 
651
651
  **最后更新**: 2025-12-29
652
- **作者**: SchemaIO Team
652
+ **作者**: SchemaI-DSL Team
653
653
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  ## 基本原理
20
20
 
21
- SchemaIO 的 `Validator` 支持在验证时动态指定语言,无需全局切换。
21
+ SchemaI-DSL 的 `Validator` 支持在验证时动态指定语言,无需全局切换。
22
22
 
23
23
  ### 核心方法
24
24
 
@@ -34,67 +34,113 @@ validator.validate(schema, data, {
34
34
 
35
35
  这是**最推荐**的方案,无需修改全局状态,支持并发请求。
36
36
 
37
- ### 1.1 全局配置
37
+ ### 1.1 应用启动时配置(一次性加载所有语言)
38
38
 
39
- 使用 `dsl.config` 可以方便地加载自定义语言包。
39
+ 使用 `dsl.config` 在应用启动时一次性加载所有自定义语言包。
40
40
 
41
41
  ```javascript
42
- const { dsl, Validator } = require('schema-dsl');
42
+ const { dsl, validate } = require('schema-dsl');
43
+ const path = require('path');
43
44
 
44
- // 方式一:直接传入对象
45
+ // ========== 应用启动时配置(只执行一次)==========
46
+
47
+ // 方式一:传入目录路径(推荐)⭐
48
+ // 自动扫描目录下的所有 .js 和 .json 文件
49
+ dsl.config({
50
+ i18n: path.join(__dirname, 'locales')
51
+ });
52
+
53
+ // 方式二:直接传入对象
45
54
  dsl.config({
46
- locales: {
55
+ i18n: {
47
56
  'fr-FR': {
48
57
  'required': '{{#label}} est requis',
49
- 'pattern.phone.cn': 'Numéro de téléphone invalide'
58
+ 'string.minLength': '{{#label}} doit contenir au moins {{#limit}} caractères'
59
+ },
60
+ 'de-DE': {
61
+ 'required': '{{#label}} ist erforderlich',
62
+ 'string.minLength': '{{#label}} muss mindestens {{#limit}} Zeichen lang sein'
50
63
  }
51
64
  }
52
65
  });
53
66
 
54
- // 方式二:传入目录路径
55
- // 目录下应包含 zh-CN.js, en-US.js 等文件
56
- dsl.config({
57
- locales: './locales'
58
- });
67
+ // 说明:
68
+ // - 只在应用启动时执行一次
69
+ // - 自动与系统内置语言包合并(用户自定义的优先)
70
+ // - 运行时无需重新加载,直接切换
59
71
  ```
60
72
 
61
- ### 1.2 基础用法
73
+ ### 1.2 运行时直接切换语言(无需重新加载)
62
74
 
63
75
  ```javascript
64
- // 定义Schema
76
+ const { dsl, validate } = require('schema-dsl');
77
+
78
+ // 定义 Schema
65
79
  const schema = dsl({
66
- username: 'string:3-32!'.label('用户名'),
67
- email: 'email!'.label('邮箱地址')
80
+ username: 'string:3-32!',
81
+ email: 'email!'
68
82
  });
69
83
 
70
- // 创建验证器
71
- const validator = new Validator();
84
+ // 测试数据
85
+ const data = { username: 'ab', email: 'invalid' };
86
+
87
+ // ========== 运行时直接切换语言 ==========
88
+
89
+ // 使用中文
90
+ const result1 = validate(schema, data, { locale: 'zh-CN' });
91
+ // 错误: "username长度不能少于3个字符"
92
+
93
+ // 使用法语
94
+ const result2 = validate(schema, data, { locale: 'fr-FR' });
95
+ // 错误: "username doit contenir au moins 3 caractères"
72
96
 
73
- // 验证时动态指定语言
74
- const result1 = validator.validate(schema, data, { locale: 'zh-CN' });
75
- const result2 = validator.validate(schema, data, { locale: 'fr-FR' });
97
+ // 使用德语
98
+ const result3 = validate(schema, data, { locale: 'de-DE' });
99
+ // 错误: "username muss mindestens 3 Zeichen lang sein"
100
+
101
+ // 说明:
102
+ // - 无需重新加载语言包
103
+ // - 每次验证可以使用不同语言
104
+ // - 支持高并发(无全局状态修改)
76
105
  ```
77
106
 
78
- ### 1.3 从请求头获取语言
107
+ ### 1.3 从请求头获取语言(实际应用场景)
79
108
 
80
109
  ```javascript
81
- // Express 示例
110
+ const express = require('express');
111
+ const { dsl, validate } = require('schema-dsl');
112
+ const path = require('path');
113
+
114
+ const app = express();
115
+
116
+ // ========== 应用启动时配置(只执行一次)==========
117
+ dsl.config({
118
+ i18n: path.join(__dirname, 'locales')
119
+ });
120
+
121
+ // 定义 Schema
122
+ const userSchema = dsl({
123
+ username: 'string:3-32!',
124
+ email: 'email!',
125
+ password: 'string:8-32!'
126
+ });
127
+
128
+ // ========== Express 路由 ==========
82
129
  app.post('/api/user/register', (req, res) => {
83
- // 从请求头获取语言
130
+ // 从请求头获取语言偏好
84
131
  const locale = req.headers['accept-language'] || 'en-US';
85
132
 
86
- // 验证数据
87
- const result = validator.validate(schema, req.body, {
88
- locale: locale
89
- });
133
+ // 验证数据(直接切换语言,无需重新加载)
134
+ const result = validate(userSchema, req.body, { locale });
90
135
 
91
136
  if (!result.valid) {
92
137
  return res.status(400).json({
93
- errors: result.errors // 自动使用对应语言的错误消息
138
+ errors: result.errors // 自动使用用户偏好的语言
94
139
  });
95
140
  }
96
141
 
97
142
  // 处理成功...
143
+ res.json({ message: 'User registered successfully' });
98
144
  });
99
145
  ```
100
146
 
@@ -547,6 +593,6 @@ const schema = dsl({
547
593
  ---
548
594
 
549
595
  **最后更新**: 2025-12-25
550
- **作者**: SchemaIO Team
596
+ **作者**: SchemaI-DSL Team
551
597
 
552
598
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  ### 基础结构
25
25
 
26
- SchemaIO 验证返回的错误对象结构:
26
+ SchemaI-DSL 验证返回的错误对象结构:
27
27
 
28
28
  ```javascript
29
29
  const { dsl, validate } = require('schema-dsl');
@@ -165,7 +165,7 @@ Locale.setMessages({
165
165
 
166
166
  ### 内置错误码(简化版)
167
167
 
168
- SchemaIO 对 ajv 的错误关键字进行了简化映射,使其更易用:
168
+ SchemaI-DSL 对 ajv 的错误关键字进行了简化映射,使其更易用:
169
169
 
170
170
  #### 字符串错误码
171
171
 
@@ -3,7 +3,7 @@
3
3
  > **用途**: Schema 到数据库 DDL 的完整导出指南
4
4
  > **阅读时间**: 10分钟
5
5
 
6
- > ⚠️ **重要提示**: 并非所有 SchemaIO 特性都能导出到数据库。请先阅读 [导出限制说明](export-limitations.md) 了解哪些特性不支持导出。
6
+ > ⚠️ **重要提示**: 并非所有 SchemaI-DSL 特性都能导出到数据库。请先阅读 [导出限制说明](export-limitations.md) 了解哪些特性不支持导出。
7
7
 
8
8
  ---
9
9
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ## 概述
23
23
 
24
- SchemaIO 支持将 JSON Schema 导出为多种数据库的 DDL 语句,实现"一次定义,多处使用"。
24
+ SchemaI-DSL 支持将 JSON Schema 导出为多种数据库的 DDL 语句,实现"一次定义,多处使用"。
25
25
 
26
26
  ### 支持的数据库
27
27
 
@@ -49,7 +49,7 @@ const schema = dsl({
49
49
 
50
50
  **替代方案**:
51
51
  - 导出为最宽松的类型(`VARCHAR(255)`)
52
- - 验证逻辑保留在应用层(使用 SchemaIO 验证器)
52
+ - 验证逻辑保留在应用层(使用 SchemaI-DSL 验证器)
53
53
 
54
54
  ---
55
55
 
@@ -331,7 +331,7 @@ const schema = dsl('string!')
331
331
 
332
332
  ```
333
333
  ┌─────────────────────────────────────────┐
334
- │ 应用层(SchemaIO 完整验证) │
334
+ │ 应用层(SchemaI-DSL 完整验证) │
335
335
  │ - 条件逻辑(match/if) │
336
336
  │ - 自定义验证器 │
337
337
  │ - 复杂约束(正则、范围等) │
@@ -449,7 +449,7 @@ module.exports = {
449
449
  ```markdown
450
450
  ## 数据验证说明
451
451
 
452
- ### 应用层验证(SchemaIO
452
+ ### 应用层验证(SchemaI-DSL
453
453
  - ✅ `contact` 字段根据 `contactType` 动态验证
454
454
  - ✅ 用户名正则验证(`^[a-zA-Z0-9_]+$`)
455
455
  - ✅ 自定义业务规则验证
package/docs/faq.md CHANGED
@@ -20,12 +20,12 @@
20
20
 
21
21
  ## 基础问题
22
22
 
23
- ### Q: SchemaIO 和 Joi、Yup 有什么区别?
23
+ ### Q: SchemaI-DSL 和 Joi、Yup 有什么区别?
24
24
 
25
- **A**: SchemaIO 采用 DSL 语法,更简洁:
25
+ **A**: SchemaI-DSL 采用 DSL 语法,更简洁:
26
26
 
27
27
  ```javascript
28
- // SchemaIO - 简洁
28
+ // SchemaI-DSL - 简洁
29
29
  const schema = dsl({
30
30
  username: 'string:3-32!',
31
31
  email: 'email!'
@@ -46,7 +46,7 @@ const schema = Joi.object({
46
46
 
47
47
  ---
48
48
 
49
- ### Q: 如何安装 SchemaIO
49
+ ### Q: 如何安装 SchemaI-DSL
50
50
 
51
51
  ```bash
52
52
  npm install schema-dsl
@@ -299,7 +299,7 @@ app.post('/api/users', (req, res) => {
299
299
 
300
300
  ### Q: 缓存如何工作?
301
301
 
302
- **A**: SchemaIO 内置 LRU 缓存:
302
+ **A**: SchemaI-DSL 内置 LRU 缓存:
303
303
 
304
304
  ```javascript
305
305
  const validator = new Validator({
@@ -523,7 +523,7 @@ MySQL 会生成 `COMMENT`,PostgreSQL 会生成 `COMMENT ON COLUMN`。
523
523
 
524
524
  ## TypeScript 支持
525
525
 
526
- ### Q: SchemaIO 支持 TypeScript 吗?
526
+ ### Q: SchemaI-DSL 支持 TypeScript 吗?
527
527
 
528
528
  **A**: 支持,类型定义在 `index.d.ts`:
529
529
 
@@ -21,23 +21,16 @@
21
21
  // server.js
22
22
  const express = require('express');
23
23
  const cors = require('cors');
24
- const { Validator, dsl } = require('schema-dsl');
24
+ const { dsl, validate } = require('schema-dsl');
25
+ const path = require('path');
25
26
 
26
27
  const app = express();
27
28
  app.use(cors());
28
29
  app.use(express.json());
29
30
 
30
- // 语言中间件
31
- app.use((req, res, next) => {
32
- const acceptLanguage = req.headers['accept-language'] || 'en-US';
33
- const locale = acceptLanguage.split(',')[0].trim();
34
-
35
- req.validator = new Validator({
36
- locale,
37
- allErrors: true // 返回所有错误
38
- });
39
-
40
- next();
31
+ // ========== 应用启动时配置(只执行一次)==========
32
+ dsl.config({
33
+ i18n: path.join(__dirname, 'locales') // 一次性加载所有语言包
41
34
  });
42
35
 
43
36
  // Schema 定义
@@ -66,18 +59,27 @@ app.post('/api/validate/:type', (req, res) => {
66
59
  return res.status(404).json({ error: 'Schema not found' });
67
60
  }
68
61
 
69
- const result = req.validator.validate(schema, req.body);
62
+ // 从请求头获取语言偏好
63
+ const locale = req.headers['accept-language'] || 'en-US';
64
+
65
+ // 验证(直接切换语言,无需重新加载)
66
+ const result = validate(schema, req.body, { locale });
67
+
70
68
  res.json(result);
71
69
  });
72
70
 
73
71
  // 用户注册(带验证)
74
72
  app.post('/api/register', (req, res) => {
75
- const result = req.validator.validate(schemas.user, req.body);
73
+ // 从请求头获取语言偏好
74
+ const locale = req.headers['accept-language'] || 'en-US';
75
+
76
+ // 验证数据
77
+ const result = validate(schemas.user, req.body, { locale });
76
78
 
77
79
  if (!result.valid) {
78
80
  return res.status(400).json({
79
81
  success: false,
80
- errors: result.errors
82
+ errors: result.errors // 自动使用用户偏好的语言
81
83
  });
82
84
  }
83
85
 
@@ -87,6 +89,7 @@ app.post('/api/register', (req, res) => {
87
89
 
88
90
  app.listen(3000, () => {
89
91
  console.log('Server running on http://localhost:3000');
92
+ console.log('语言包已加载,支持动态切换');
90
93
  });
91
94
  ```
92
95
 
@@ -247,7 +250,7 @@ Locale.addLocale('de-DE', {
247
250
  **A**: 后端返回错误消息已经是本地化的,前端无需处理。如果需要前端验证:
248
251
 
249
252
  ```javascript
250
- // 前端可以使用相同的 SchemaIO(浏览器版)
253
+ // 前端可以使用相同的 SchemaI-DSL(浏览器版)
251
254
  import { dsl, validate } from 'schema-dsl/browser';
252
255
 
253
256
  const schema = dsl({ /* ... */ });
@@ -25,15 +25,13 @@ const { dsl, validate } = require('schema-dsl');
25
25
  // 1. 配置用户语言包
26
26
  dsl.config({
27
27
  i18n: {
28
- locales: {
29
- 'zh-CN': {
30
- 'username': '用户名',
31
- 'email': '邮箱地址'
32
- },
33
- 'en-US': {
34
- 'username': 'Username',
35
- 'email': 'Email Address'
36
- }
28
+ 'zh-CN': {
29
+ 'username': '用户名',
30
+ 'email': '邮箱地址'
31
+ },
32
+ 'en-US': {
33
+ 'username': 'Username',
34
+ 'email': 'Email Address'
37
35
  }
38
36
  }
39
37
  });
package/docs/i18n.md CHANGED
@@ -1,7 +1,19 @@
1
1
  # 多语言配置指南
2
2
 
3
- **版本**: v1.0.1
4
- **最后更新**: 2025-12-31
3
+ **版本**: v1.0.9
4
+ **最后更新**: 2026-01-04
5
+
6
+ ---
7
+
8
+ ## 📚 多语言文档导航
9
+
10
+ 根据你的需求选择合适的文档:
11
+
12
+ - 🚀 **新手快速上手**: [i18n.md](./i18n.md)(当前文档)- 5分钟学会基础用法
13
+ - 📖 **完整使用指南**: [i18n-user-guide.md](./i18n-user-guide.md) - 详细的用户指南和最佳实践
14
+ - 🎯 **添加新语言**: [add-custom-locale.md](./add-custom-locale.md) - 添加自定义语言包教程
15
+ - 🔄 **动态切换语言**: [dynamic-locale.md](./dynamic-locale.md) - API开发中的动态语言切换
16
+ - 🌐 **前端集成**: [frontend-i18n-guide.md](./frontend-i18n-guide.md) - 前后端分离项目集成指南
5
17
 
6
18
  ---
7
19
 
@@ -9,10 +21,61 @@
9
21
 
10
22
  schema-dsl 支持完整的多语言功能,允许你自定义字段标签和错误消息的翻译。
11
23
 
24
+ **v1.0.9 新增**:
25
+ - ✅ 支持参数化语言切换(无需修改全局状态)
26
+ - ✅ 支持自定义错误消息(三种格式)
27
+ - ✅ TypeScript 类型定义完整
28
+
12
29
  ---
13
30
 
14
31
  ## 🚀 快速开始
15
32
 
33
+ ### 方式1:验证时动态指定语言(推荐)⭐
34
+
35
+ ```javascript
36
+ const { dsl, validate } = require('schema-dsl');
37
+
38
+ const schema = dsl({ username: 'string:3-32!' });
39
+
40
+ // 使用中文错误消息
41
+ const result = validate(schema, { username: 'ab' }, { locale: 'zh-CN' });
42
+ // message: "username长度不能少于3个字符"
43
+
44
+ // 使用英文错误消息
45
+ const result2 = validate(schema, { username: 'ab' }, { locale: 'en-US' });
46
+ // message: "username length must be at least 3"
47
+ ```
48
+
49
+ ### 方式2:使用全局配置(向后兼容)
50
+
51
+ ```javascript
52
+ const { Locale } = require('schema-dsl');
53
+
54
+ // 设置默认语言
55
+ Locale.setLocale('zh-CN');
56
+
57
+ // 后续验证会使用中文错误消息
58
+ const result = validate(schema, data);
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 📝 内置语言支持
64
+
65
+ schema-dsl 内置了以下语言包:
66
+
67
+ | 语言代码 | 语言名称 | 支持状态 |
68
+ |---------|---------|---------|
69
+ | `zh-CN` | 简体中文 | ✅ 完整支持 |
70
+ | `en-US` | 英语(美国)| ✅ 完整支持 |
71
+ | `ja-JP` | 日语 | ✅ 完整支持 |
72
+ | `es-ES` | 西班牙语 | ✅ 完整支持 |
73
+ | `fr-FR` | 法语 | ✅ 完整支持 |
74
+
75
+ ---
76
+
77
+ ## 🎯 高级用法
78
+
16
79
  ### 基础配置
17
80
 
18
81
  ```javascript
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 概述
21
21
 
22
- `MongoDBExporter` 将 SchemaIO 生成的 JSON Schema 转换为 MongoDB 的 `$jsonSchema` 验证格式,可直接用于创建集合时的文档验证。
22
+ `MongoDBExporter` 将 SchemaI-DSL 生成的 JSON Schema 转换为 MongoDB 的 `$jsonSchema` 验证格式,可直接用于创建集合时的文档验证。
23
23
 
24
24
  ### 核心功能
25
25
 
@@ -104,7 +104,7 @@ const mongoSchema = exporter.export(jsonSchema);
104
104
  ```
105
105
 
106
106
  **参数**:
107
- - `jsonSchema` (Object): SchemaIO 生成的 JSON Schema 对象
107
+ - `jsonSchema` (Object): SchemaI-DSL 生成的 JSON Schema 对象
108
108
 
109
109
  **返回值**:
110
110
  - `Object`: 包含 `$jsonSchema` 的 MongoDB 验证对象
@@ -272,7 +272,7 @@ async function createValidatedCollection() {
272
272
 
273
273
  ## 导出限制
274
274
 
275
- ⚠️ **重要提示**: 并非所有 SchemaIO 特性都能导出到数据库 Schema。
275
+ ⚠️ **重要提示**: 并非所有 SchemaI-DSL 特性都能导出到数据库 Schema。
276
276
 
277
277
  **不支持导出的特性**:
278
278
  - ❌ 条件验证逻辑(`dsl.match()`, `dsl.if()`)
@@ -1,8 +1,17 @@
1
1
  # 多类型支持设计说明
2
2
 
3
+ ---
4
+
5
+ ## 📖 快速导航
6
+
7
+ - **单一类型验证**(本文档)
8
+ - **[联合类型验证](./union-type-guide.md)** - 一个字段支持多种类型(使用 `.pattern()` 正则匹配)
9
+
10
+ ---
11
+
3
12
  ## 🎯 设计原理
4
13
 
5
- SchemaIO通过**类型无关的Builder模式**实现多类型支持。
14
+ schema-dsl通过**类型无关的Builder模式**实现多类型支持。
6
15
 
7
16
  ### 核心设计
8
17
 
@@ -21,6 +30,7 @@ class DslBuilder {
21
30
 
22
31
  ---
23
32
 
33
+
24
34
  ## 📊 类型支持矩阵
25
35
 
26
36
  | DSL字符串 | 解析类型 | 支持的方法 |
@@ -307,7 +317,7 @@ amount: 'number:0-10000'
307
317
 
308
318
  ## 💡 总结
309
319
 
310
- SchemaIO的多类型支持采用**类型无关Builder + 方法智能适配**设计:
320
+ SchemaI-DSL的多类型支持采用**类型无关Builder + 方法智能适配**设计:
311
321
 
312
322
  1. **统一入口**: 所有类型都通过DslBuilder
313
323
  2. **类型感知**: 方法内部检查类型兼容性
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 概述
21
21
 
22
- `MySQLExporter` 将 SchemaIO 生成的 JSON Schema 转换为 MySQL 的 DDL 语句,包括 `CREATE TABLE` 和索引创建语句。
22
+ `MySQLExporter` 将 SchemaI-DSL 生成的 JSON Schema 转换为 MySQL 的 DDL 语句,包括 `CREATE TABLE` 和索引创建语句。
23
23
 
24
24
  ### 核心功能
25
25
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  ## 概述
22
22
 
23
- SchemaIO 插件系统允许你扩展核心功能,添加自定义验证器、格式化器、导出器等。
23
+ SchemaI-DSL 插件系统允许你扩展核心功能,添加自定义验证器、格式化器、导出器等。
24
24
 
25
25
  ### 特性
26
26
 
@@ -342,7 +342,7 @@ pluginManager.register({
342
342
  安装插件。
343
343
 
344
344
  **参数**:
345
- - `schema-dsl` (Object) - SchemaIO 实例
345
+ - `schema-dsl` (Object) - SchemaI-DSL 实例
346
346
  - `pluginName` (String, optional) - 插件名称
347
347
  - `options` (Object, optional) - 安装选项
348
348
 
@@ -354,7 +354,7 @@ pluginManager.register({
354
354
 
355
355
  **参数**:
356
356
  - `pluginName` (String) - 插件名称
357
- - `schema-dsl` (Object) - SchemaIO 实例
357
+ - `schema-dsl` (Object) - SchemaI-DSL 实例
358
358
 
359
359
  **返回**: `this`
360
360
 
@@ -398,7 +398,7 @@ pluginManager.register({
398
398
  清空所有插件。
399
399
 
400
400
  **参数**:
401
- - `schema-dsl` (Object) - SchemaIO 实例
401
+ - `schema-dsl` (Object) - SchemaI-DSL 实例
402
402
 
403
403
  **返回**: `this`
404
404
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  ## 概述
22
22
 
23
- `PostgreSQLExporter` 将 SchemaIO 生成的 JSON Schema 转换为 PostgreSQL 的 DDL 语句,支持丰富的 PostgreSQL 特性。
23
+ `PostgreSQLExporter` 将 SchemaI-DSL 生成的 JSON Schema 转换为 PostgreSQL 的 DDL 语句,支持丰富的 PostgreSQL 特性。
24
24
 
25
25
  ### 核心功能
26
26
 
@@ -413,13 +413,13 @@ uninstallStringExtensions();
413
413
 
414
414
  ### Q: 支持TypeScript吗?
415
415
 
416
- **A**: 支持!SchemaIO提供完整的TypeScript类型定义。
416
+ **A**: 支持!SchemaI-DSL提供完整的TypeScript类型定义。
417
417
 
418
418
  ---
419
419
 
420
420
  ## 🎉 恭喜!
421
421
 
422
- 你已经掌握了SchemaIO的核心用法!
422
+ 你已经掌握了SchemaI-DSL的核心用法!
423
423
 
424
424
  **核心要点**:
425
425
  1. ✅ DSL语法简洁直观
@@ -737,13 +737,13 @@ uninstallStringExtensions();
737
737
 
738
738
  ### Q: 支持TypeScript吗?
739
739
 
740
- **A**: 支持!SchemaIO提供完整的TypeScript类型定义。
740
+ **A**: 支持!SchemaI-DSL提供完整的TypeScript类型定义。
741
741
 
742
742
  ---
743
743
 
744
744
  ## 🎉 恭喜!
745
745
 
746
- 你已经掌握了SchemaIO的核心用法!
746
+ 你已经掌握了SchemaI-DSL的核心用法!
747
747
 
748
748
  **核心要点**:
749
749
  1. ✅ DSL语法简洁直观
@@ -1,6 +1,6 @@
1
1
  # 常见问题排查指南
2
2
 
3
- > **用途**: 快速解决 SchemaIO 使用中的常见问题
3
+ > **用途**: 快速解决 SchemaI-DSL 使用中的常见问题
4
4
  > **更新**: 2025-12-26
5
5
 
6
6
  ---
@@ -378,7 +378,7 @@ db.createCollection('users', {
378
378
 
379
379
  **解决方案**:
380
380
  ```javascript
381
- // SchemaIO 默认会自动安装 String 扩展
381
+ // SchemaI-DSL 默认会自动安装 String 扩展
382
382
  // 如果未生效,手动安装:
383
383
  const { installStringExtensions } = require('schema-dsl');
384
384
  installStringExtensions();
@@ -8,7 +8,7 @@
8
8
 
9
9
  ### 基本类型
10
10
 
11
- | 类型 | SchemaIO | JSON Schema | 说明 |
11
+ | 类型 | SchemaI-DSL | JSON Schema | 说明 |
12
12
  |------|----------|-------------|------|
13
13
  | 字符串 | `string` | `{ type: 'string' }` | 文本类型 |
14
14
  | 数字 | `number` | `{ type: 'number' }` | 浮点数 |
@@ -23,7 +23,7 @@
23
23
 
24
24
  ### 格式类型(基于 string)
25
25
 
26
- | 类型 | SchemaIO | JSON Schema format | 说明 |
26
+ | 类型 | SchemaI-DSL | JSON Schema format | 说明 |
27
27
  |------|----------|-------------------|------|
28
28
  | 邮箱 | `email` | `email` | 邮箱地址 |
29
29
  | URL | `url` | `uri` | 网址 |
@@ -38,7 +38,7 @@
38
38
 
39
39
  ### 特殊类型
40
40
 
41
- | 类型 | SchemaIO | JSON Schema | 说明 |
41
+ | 类型 | SchemaI-DSL | JSON Schema | 说明 |
42
42
  |------|----------|-------------|------|
43
43
  | 二进制 | `binary` | `contentEncoding: base64` | Base64编码 |
44
44
  | ObjectId | `objectId` | `pattern: ^[0-9a-fA-F]{24}$` | MongoDB ObjectId |
@@ -156,7 +156,7 @@ const schema = dsl({
156
156
 
157
157
  ### 完整对照表
158
158
 
159
- | joi | SchemaIO DSL | 说明 |
159
+ | joi | SchemaI-DSL | 说明 |
160
160
  |-----|--------------|------|
161
161
  | `Joi.string()` | `'string'` | 字符串 |
162
162
  | `Joi.string().email()` | `'email'` | 邮箱 |
@@ -206,7 +206,7 @@ const schema = dsl({
206
206
 
207
207
  ### Q2: 为什么 `integer` 不是 `number().integer()`?
208
208
 
209
- A: SchemaIO 使用 JSON Schema 标准,`integer` 是独立类型。
209
+ A: SchemaI-DSL 使用 JSON Schema 标准,`integer` 是独立类型。
210
210
 
211
211
  ### Q3: 不支持简写吗?
212
212