monsqlize 1.0.5 → 1.0.8
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 +128 -178
- package/README.md +556 -81
- package/index.d.ts +875 -8
- package/lib/connect.js +7 -1
- package/lib/index.js +406 -1
- package/lib/infrastructure/ConnectionPoolManager.js +432 -0
- package/lib/infrastructure/HealthChecker.js +280 -0
- package/lib/infrastructure/PoolConfig.js +198 -0
- package/lib/infrastructure/PoolSelector.js +224 -0
- package/lib/infrastructure/PoolStats.js +243 -0
- package/lib/model/features/defaults.js +160 -0
- package/lib/model/features/populate.js +567 -0
- package/lib/model/features/relations.js +119 -0
- package/lib/model/features/virtuals.js +218 -0
- package/lib/model/index.js +366 -33
- package/lib/mongodb/common/aggregation-validator.js +126 -0
- package/lib/mongodb/index.js +4 -0
- package/lib/mongodb/writes/update-batch.js +72 -15
- package/lib/mongodb/writes/update-many.js +75 -19
- package/lib/mongodb/writes/update-one.js +75 -19
- package/lib/saga/SagaContext.js +66 -0
- package/lib/saga/SagaDefinition.js +31 -0
- package/lib/saga/SagaExecutor.js +200 -0
- package/lib/saga/SagaOrchestrator.js +174 -0
- package/lib/saga/index.js +10 -0
- package/lib/sync/ChangeStreamSyncManager.js +404 -0
- package/lib/sync/ResumeTokenStore.js +191 -0
- package/lib/sync/SyncConfig.js +126 -0
- package/lib/sync/SyncTarget.js +239 -0
- package/lib/sync/index.js +19 -0
- package/package.json +5 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 变更日志 (CHANGELOG)
|
|
2
2
|
|
|
3
|
-
> **说明**:
|
|
4
|
-
> **最后更新**:
|
|
3
|
+
> **说明**: 版本概览摘要,详细变更见 [changelogs/](./changelogs/) 目录
|
|
4
|
+
> **最后更新**: 2026-01-17
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,163 +9,160 @@
|
|
|
9
9
|
|
|
10
10
|
| 版本 | 日期 | 变更摘要 | 详细 |
|
|
11
11
|
|------|------|---------|------|
|
|
12
|
+
| [v1.0.8](./changelogs/v1.0.8.md) | 2026-01-17 | 🎉 重大功能:多连接池 + Update 聚合管道 + Saga 事务 + Change Stream 同步 | [查看](./changelogs/v1.0.8.md) |
|
|
13
|
+
| [v1.0.7](./changelogs/v1.0.7.md) | 2026-01-09 | 🔧 依赖更新:schema-dsl@1.1.3 修复类型错误消息 + 测试用例 Schema 语法修复 | [查看](./changelogs/v1.0.7.md) |
|
|
14
|
+
| [v1.0.6](./changelogs/v1.0.6.md) | 2026-01-08 | 文档完善:新增 ObjectId 自动转换文档 + 验证所有 v1.3.0+ 功能文档 | [查看](./changelogs/v1.0.6.md) |
|
|
15
|
+
| [v1.0.5](./changelogs/v1.0.5.md) | 2026-01-08 | Schema 验证默认启用 + Model 自动加载机制 + 类型定义完善 | [查看](./changelogs/v1.0.5.md) |
|
|
16
|
+
| [v1.0.4](./changelogs/v1.0.4.md) | 2026-01-07 | 新功能:虚拟字段、默认值 + Bug 修复:嵌套 Populate + 测试改进 | [查看](./changelogs/v1.0.4.md) |
|
|
12
17
|
| [v1.0.3](STATUS.md#v103) | 2025-12-31 | 新增 Model 层(Schema 验证、自定义方法、生命周期钩子、自动时间戳) | [查看](STATUS.md#v103) |
|
|
13
18
|
| [v1.0.2](STATUS.md#v102) | 2025-12-30 | 新增批量操作方法(deleteBatch/updateBatch) | [查看](STATUS.md#v102) |
|
|
14
19
|
| [v1.0.1](STATUS.md#v101) | 2025-12-29 | 稳定版本,生产就绪 | [查看](STATUS.md#v101) |
|
|
15
|
-
| [v1.0.0](
|
|
20
|
+
| [v1.0.0](./changelogs/v1.0.0.md) | 2025-12-03 | 正式发布,生产就绪,已发布到 npm | [查看](./changelogs/v1.0.0.md) |
|
|
16
21
|
|
|
17
22
|
---
|
|
18
23
|
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
### 新增功能 ✨
|
|
22
|
-
|
|
23
|
-
**Model 层** - ORM 式的数据模型功能
|
|
24
|
-
- ✅ **Schema 验证** - 集成 schema-dsl,自动验证数据格式
|
|
25
|
-
- ✅ **自定义方法** - instance 方法注入到文档,static 方法挂载到 Model
|
|
26
|
-
- ✅ **生命周期钩子** - before/after 钩子支持(find/insert/update/delete)
|
|
27
|
-
- ✅ **索引自动创建** - 初始化时自动创建索引
|
|
28
|
-
- ✅ **枚举配置** - 可在 schema 中引用的枚举定义
|
|
29
|
-
- ✅ **自动时间戳** - 自动管理 createdAt/updatedAt,支持自定义字段名
|
|
30
|
-
|
|
31
|
-
### 核心 API 🔧
|
|
32
|
-
|
|
33
|
-
```javascript
|
|
34
|
-
// 定义 Model
|
|
35
|
-
Model.define('users', {
|
|
36
|
-
schema: (dsl) => dsl({ username: 'string!', email: 'email!' }),
|
|
37
|
-
methods: (model) => ({
|
|
38
|
-
instance: { checkPassword(pwd) { return this.password === pwd; } },
|
|
39
|
-
static: { async findByUsername(name) { return await model.findOne({ username: name }); } }
|
|
40
|
-
}),
|
|
41
|
-
hooks: (model) => ({
|
|
42
|
-
insert: { before: async (ctx, docs) => ({ ...docs, createdAt: new Date() }) }
|
|
43
|
-
}),
|
|
44
|
-
indexes: [{ key: { username: 1 }, unique: true }]
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// 使用 Model
|
|
48
|
-
const User = msq.model('users');
|
|
49
|
-
const user = await User.findByUsername('admin');
|
|
50
|
-
if (user.checkPassword('secret')) console.log('登录成功');
|
|
51
|
-
```
|
|
24
|
+
## 变更统计
|
|
52
25
|
|
|
53
|
-
|
|
26
|
+
| 版本系列 | 版本数 | 主要改进方向 |
|
|
27
|
+
|---------|-------|------------|
|
|
28
|
+
| v1.0.x | 9 | 企业级功能、分布式支持、Model 层完善、Schema 验证、依赖更新 |
|
|
54
29
|
|
|
55
|
-
|
|
56
|
-
- Model 基础功能:16个(100%通过)
|
|
57
|
-
- ModelInstance:23个
|
|
58
|
-
- Hooks:6个
|
|
59
|
-
- 测试覆盖率:~90%
|
|
30
|
+
---
|
|
60
31
|
|
|
61
|
-
|
|
32
|
+
## 里程碑版本
|
|
62
33
|
|
|
63
|
-
|
|
64
|
-
- 新增 `docs/model-methods-design.md` - 设计文档(295行)
|
|
65
|
-
- 新增 `examples/model/basic.js` - 基础使用示例
|
|
66
|
-
- 新增 `examples/model/advanced.js` - 高级功能示例
|
|
67
|
-
- 新增 TypeScript 类型定义(+300行)
|
|
68
|
-
- 更新 `README.md`、`docs/INDEX.md`
|
|
34
|
+
### v1.0.8 - 企业级功能升级 🎉
|
|
69
35
|
|
|
70
|
-
|
|
36
|
+
**发布日期**: 2026-01-16
|
|
37
|
+
**重要性**: ⭐⭐⭐⭐⭐
|
|
71
38
|
|
|
72
|
-
|
|
73
|
-
- ✅
|
|
74
|
-
- ✅
|
|
75
|
-
- ✅
|
|
76
|
-
- ✅
|
|
39
|
+
**核心功能**:
|
|
40
|
+
- ✅ **企业级多连接池管理**: 支持 primary、secondary、analytics、custom 角色
|
|
41
|
+
- ✅ **智能选择策略**: auto、roundRobin、weighted、leastConnections、manual
|
|
42
|
+
- ✅ **健康检查机制**: 自动故障检测和恢复,支持自定义检查间隔和重试次数
|
|
43
|
+
- ✅ **Update 聚合管道**: updateOne/updateMany 支持聚合管道语法
|
|
44
|
+
- ✅ **Saga 分布式事务**: 完整的补偿机制,支持跨服务事务
|
|
45
|
+
|
|
46
|
+
**质量提升**:
|
|
47
|
+
- 🏆 **测试覆盖率**: 90.77% (从 37.8% 提升,+53%)
|
|
48
|
+
- 🏆 **测试数量**: 400+个测试用例 (增长 4000%)
|
|
49
|
+
- 🏆 **函数覆盖率**: 95.23%
|
|
50
|
+
- 🏆 **核心功能**: 100% 测试覆盖
|
|
51
|
+
- 🏆 **行业领先**: 超过 85% 的开源项目
|
|
52
|
+
|
|
53
|
+
**重大改进**:
|
|
54
|
+
1. **多连接池架构**:
|
|
55
|
+
- ConnectionPoolManager: 统一管理多个连接池
|
|
56
|
+
- HealthChecker: 实时健康监控
|
|
57
|
+
- PoolSelector: 5种智能选择策略
|
|
58
|
+
- PoolStats: 完整的统计收集
|
|
59
|
+
|
|
60
|
+
2. **Update 聚合管道**:
|
|
61
|
+
- 支持字段间计算 (`$add`、`$multiply`、`$subtract`)
|
|
62
|
+
- 条件赋值 (`$cond`、`$ifNull`)
|
|
63
|
+
- 多阶段转换 (`$concat`、`$toLower`、`$toUpper`)
|
|
64
|
+
- 完全兼容 MongoDB 4.2+ 语法
|
|
65
|
+
|
|
66
|
+
3. **Saga 分布式事务**:
|
|
67
|
+
- 自动补偿机制
|
|
68
|
+
- 事务状态跟踪
|
|
69
|
+
- 支持超时和重试
|
|
70
|
+
- 完整的错误处理
|
|
71
|
+
|
|
72
|
+
**详细信息**: [查看 changelogs/v1.0.8.md](./changelogs/v1.0.8.md)
|
|
77
73
|
|
|
78
|
-
|
|
74
|
+
---
|
|
79
75
|
|
|
80
|
-
-
|
|
81
|
-
- ✅ 需要扩展文档方法的场景
|
|
82
|
-
- ✅ 需要生命周期控制的场景
|
|
83
|
-
- ✅ 需要类 ORM 体验的场景
|
|
76
|
+
### v1.0.7 - 依赖更新与测试修复 🔧
|
|
84
77
|
|
|
85
|
-
|
|
78
|
+
**发布日期**: 2026-01-09
|
|
79
|
+
**重要性**: ⭐⭐⭐
|
|
86
80
|
|
|
87
|
-
|
|
81
|
+
**核心改进**:
|
|
82
|
+
- ✅ 升级 schema-dsl 到 v1.1.3(修复类型错误消息模板变量未替换 bug)
|
|
83
|
+
- ✅ 修复测试用例中错误的 Schema 语法(17处)
|
|
84
|
+
- ✅ 所有测试通过(38/38 测试套件,100%)
|
|
85
|
+
- ✅ 将 schema-dsl 从 devDependencies 移至 dependencies(Model 层运行时依赖)
|
|
88
86
|
|
|
89
|
-
|
|
87
|
+
**详细信息**: [查看 changelogs/v1.0.7.md](./changelogs/v1.0.7.md)
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
- ✅ **deleteBatch** - 批量删除方法
|
|
93
|
-
- 流式查询,恒定内存占用(12KB)
|
|
94
|
-
- 支持进度监控(实时百分比)
|
|
95
|
-
- 4种错误处理策略(stop/skip/collect/retry)
|
|
96
|
-
- 自动重试机制
|
|
97
|
-
- 性能:36,385 条/秒(100万条数据实测)
|
|
98
|
-
|
|
99
|
-
- ✅ **updateBatch** - 批量更新方法
|
|
100
|
-
- 流式查询,恒定内存占用(12KB)
|
|
101
|
-
- 支持进度监控(实时百分比)
|
|
102
|
-
- 支持所有 MongoDB 更新操作符
|
|
103
|
-
- 4种错误处理策略 + 自动重试
|
|
104
|
-
- 性能:35,365 条/秒(100万条数据实测)
|
|
89
|
+
---
|
|
105
90
|
|
|
106
|
-
###
|
|
91
|
+
### v1.0.6 - 文档完善 📚
|
|
107
92
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- insertBatch: 49,493 条/秒
|
|
111
|
-
- deleteBatch: 36,385 条/秒
|
|
112
|
-
- updateBatch: 35,365 条/秒
|
|
113
|
-
- 内存占用: 恒定 12KB
|
|
114
|
-
```
|
|
93
|
+
**发布日期**: 2026-01-08
|
|
94
|
+
**重要性**: ⭐⭐⭐
|
|
115
95
|
|
|
116
|
-
|
|
96
|
+
**核心成就**:
|
|
97
|
+
- ✅ 文档完整性达到 100%
|
|
98
|
+
- ✅ 新增 ObjectId 自动转换完整文档(600行)
|
|
99
|
+
- ✅ 验证所有 v1.3.0+ 功能都有文档
|
|
117
100
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
101
|
+
**详细信息**: [查看 changelogs/v1.0.6.md](./changelogs/v1.0.6.md)
|
|
102
|
+
|
|
103
|
+
---
|
|
121
104
|
|
|
122
|
-
###
|
|
105
|
+
### v1.0.5 - Model 层易用性提升 🚀
|
|
123
106
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- 新增 `examples/batch-operations.examples.js` - 8个真实业务场景
|
|
127
|
-
- 更新 `README.md` 和 `docs/INDEX.md`
|
|
107
|
+
**发布日期**: 2026-01-08
|
|
108
|
+
**重要性**: ⭐⭐⭐⭐
|
|
128
109
|
|
|
129
|
-
|
|
110
|
+
**核心特性**:
|
|
111
|
+
- ✅ Schema 验证默认启用(提升数据质量)
|
|
112
|
+
- ✅ Model 自动加载机制(减少样板代码)
|
|
113
|
+
- ✅ 类型定义完善
|
|
130
114
|
|
|
131
|
-
|
|
132
|
-
- ✅ **架构最简** - 单一流式查询实现,数据一致性有保证
|
|
133
|
-
- ✅ **内存优化** - 流式查询,无论处理多少数据,内存占用恒定 12KB
|
|
134
|
-
- ✅ **错误处理完善** - 4种策略 + 自动重试,适应不同业务场景
|
|
115
|
+
**详细信息**: [查看 changelogs/v1.0.5.md](./changelogs/v1.0.5.md)
|
|
135
116
|
|
|
136
117
|
---
|
|
137
118
|
|
|
138
|
-
|
|
119
|
+
### v1.0.4 - 虚拟字段与 Bug 修复 ✨
|
|
139
120
|
|
|
140
|
-
|
|
121
|
+
**发布日期**: 2026-01-07
|
|
122
|
+
**重要性**: ⭐⭐⭐⭐
|
|
141
123
|
|
|
142
|
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
- 慢查询日志
|
|
149
|
-
- 业务级分布式锁
|
|
150
|
-
- SSH 隧道支持
|
|
124
|
+
**核心特性**:
|
|
125
|
+
- ✅ 虚拟字段(计算属性)
|
|
126
|
+
- ✅ 默认值(插入时自动填充)
|
|
127
|
+
- ✅ 嵌套 Populate Bug 修复
|
|
128
|
+
|
|
129
|
+
**详细信息**: [查看 changelogs/v1.0.4.md](./changelogs/v1.0.4.md)
|
|
151
130
|
|
|
152
131
|
---
|
|
153
132
|
|
|
154
|
-
|
|
133
|
+
### v1.0.0 - 正式发布 🎉
|
|
155
134
|
|
|
156
|
-
|
|
135
|
+
**发布日期**: 2025-12-03
|
|
136
|
+
**重要性**: ⭐⭐⭐⭐⭐
|
|
157
137
|
|
|
158
|
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
138
|
+
**核心成就**:
|
|
139
|
+
- ✅ 已发布到 npm
|
|
140
|
+
- ✅ 生产就绪
|
|
141
|
+
- ✅ 企业级质量(96/100 A+)
|
|
142
|
+
- ✅ 1000+ 测试用例
|
|
143
|
+
- ✅ 77%+ 测试覆盖率
|
|
144
|
+
|
|
145
|
+
**详细信息**: [查看 changelogs/v1.0.0.md](./changelogs/v1.0.0.md)
|
|
161
146
|
|
|
162
147
|
---
|
|
163
148
|
|
|
164
|
-
##
|
|
149
|
+
## 详细变更文档
|
|
165
150
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
151
|
+
> **说明**: 详细变更文档位于 `changelogs/` 目录
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
changelogs/
|
|
155
|
+
├── README.md # 变更文档说明
|
|
156
|
+
├── TEMPLATE.md # 变更文档模板
|
|
157
|
+
├── v1.0.0.md # v1.0.0 详细变更
|
|
158
|
+
├── v1.0.4.md # v1.0.4 详细变更
|
|
159
|
+
└── v1.0.5.md # v1.0.5 详细变更
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**注意**:
|
|
163
|
+
- `changelogs/` 目录包含所有版本的详细变更文档
|
|
164
|
+
- 本文件(CHANGELOG.md)仅提供版本概览和里程碑摘要
|
|
165
|
+
- 需求状态追踪见 [STATUS.md](./STATUS.md)
|
|
169
166
|
|
|
170
167
|
---
|
|
171
168
|
|
|
@@ -173,25 +170,22 @@ if (user.checkPassword('secret')) console.log('登录成功');
|
|
|
173
170
|
|
|
174
171
|
### 添加新版本的步骤
|
|
175
172
|
|
|
176
|
-
1.
|
|
173
|
+
1. **创建详细变更文档**
|
|
177
174
|
```bash
|
|
178
|
-
cp
|
|
179
|
-
#
|
|
175
|
+
cp changelogs/TEMPLATE.md changelogs/vX.Y.Z.md
|
|
176
|
+
# 填充详细变更信息
|
|
180
177
|
```
|
|
181
178
|
|
|
182
|
-
2. **更新
|
|
183
|
-
- 在"发布计划"表格添加新版本行
|
|
184
|
-
- 添加版本章节(### vX.Y.Z)
|
|
185
|
-
- 在版本表格添加需求行
|
|
186
|
-
- 链接到 plans/ 文档(如有)
|
|
187
|
-
|
|
188
|
-
3. **更新 CHANGELOG.md**
|
|
179
|
+
2. **更新 CHANGELOG.md**(本文件)
|
|
189
180
|
- 在"版本概览"表格最上方添加新行
|
|
190
|
-
- 格式:`| [vX.Y.Z](
|
|
181
|
+
- 格式:`| [vX.Y.Z](./changelogs/vX.Y.Z.md) | 日期 | 摘要 | [查看](./changelogs/vX.Y.Z.md) |`
|
|
182
|
+
|
|
183
|
+
3. **更新 STATUS.md**(如需要)
|
|
184
|
+
- 添加版本章节和需求状态
|
|
191
185
|
|
|
192
186
|
4. **提交变更**
|
|
193
187
|
```bash
|
|
194
|
-
git add
|
|
188
|
+
git add CHANGELOG.md changelogs/vX.Y.Z.md STATUS.md
|
|
195
189
|
git commit -m "docs: 发布 vX.Y.Z"
|
|
196
190
|
```
|
|
197
191
|
|
|
@@ -210,58 +204,14 @@ if (user.checkPassword('secret')) console.log('登录成功');
|
|
|
210
204
|
|
|
211
205
|
---
|
|
212
206
|
|
|
213
|
-
## 快速导航
|
|
214
|
-
|
|
215
|
-
### 当前版本
|
|
216
|
-
|
|
217
|
-
- **v1.0.1**: [查看详情](STATUS.md#v101)
|
|
218
|
-
- **v1.0.0**: [查看详情](STATUS.md#v100)
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## 里程碑版本
|
|
223
|
-
|
|
224
|
-
### v1.0.0 - 正式发布 🎉
|
|
225
|
-
|
|
226
|
-
**发布日期**: 2025-12-03
|
|
227
|
-
**重要性**: ⭐⭐⭐⭐⭐
|
|
228
|
-
|
|
229
|
-
**核心成就**:
|
|
230
|
-
- ✅ 已发布到 npm
|
|
231
|
-
- ✅ 生产就绪
|
|
232
|
-
- ✅ 企业级质量(96/100 A+)
|
|
233
|
-
- ✅ 1000+ 测试用例
|
|
234
|
-
- ✅ 77%+ 测试覆盖率
|
|
235
|
-
|
|
236
|
-
**详细信息**: [查看 STATUS.md](STATUS.md#v100)
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## 详细变更文档
|
|
241
|
-
|
|
242
|
-
> **说明**: 详细变更文档位于 `changelogs/` 目录
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
changelogs/
|
|
246
|
-
├── TEMPLATE.md # 变更文档模板
|
|
247
|
-
└── v1.0.0.md # v1.0.0 详细变更
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**注意**:
|
|
251
|
-
- changelogs/ 目录包含历史详细变更文档
|
|
252
|
-
- 新版本应优先使用 plans/ 目录存储需求文档
|
|
253
|
-
- STATUS.md 是主要的需求状态追踪文档
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
207
|
## 相关文档
|
|
258
208
|
|
|
259
209
|
- [STATUS.md](./STATUS.md) - 需求状态追踪
|
|
260
|
-
- [
|
|
210
|
+
- [changelogs/](./changelogs/README.md) - 详细变更文档目录
|
|
261
211
|
- [README.md](./README.md) - 项目说明
|
|
262
|
-
- [
|
|
212
|
+
- [docs/](./docs/INDEX.md) - API 文档
|
|
263
213
|
|
|
264
214
|
---
|
|
265
215
|
|
|
266
|
-
**最后更新**:
|
|
216
|
+
**最后更新**: 2026-01-08
|
|
267
217
|
|