Files
esengine/packages/framework/transaction/CHANGELOG.md

116 lines
4.6 KiB
Markdown
Raw Normal View History

# @esengine/transaction
## 2.0.3
### Patch Changes
- Updated dependencies [[`1f297ac`](https://github.com/esengine/esengine/commit/1f297ac769e37700f72fb4425639af7090898256)]:
- @esengine/server@2.0.0
## 2.0.2
### Patch Changes
- Updated dependencies [[`afdeb00`](https://github.com/esengine/esengine/commit/afdeb00b4df9427e7f03b91558bf95804a837b70)]:
- @esengine/server@1.3.0
## 2.0.1
### Patch Changes
- Updated dependencies [[`61a13ba`](https://github.com/esengine/esengine/commit/61a13baca2e1e8fba14e23d439521ec0e6b7ca6e)]:
- @esengine/server@1.2.0
## 2.0.0
### Major Changes
- [#384](https://github.com/esengine/esengine/pull/384) [`3b97838`](https://github.com/esengine/esengine/commit/3b978384c7d4570f9af9d139e3bfea04c6875543) Thanks [@esengine](https://github.com/esengine)! - ## Breaking Changes
### Storage API Simplification
RedisStorage and MongoStorage now use **factory pattern only** for connection management. The direct client injection option has been removed.
**Before (removed):**
```typescript
// Direct client injection - NO LONGER SUPPORTED
const storage = new RedisStorage({ client: redisClient });
const storage = new MongoStorage({ client: mongoClient, database: 'game' });
```
**After (factory pattern only):**
```typescript
// RedisStorage
const storage = new RedisStorage({
factory: () => new Redis('redis://localhost:6379'),
prefix: 'tx:',
transactionTTL: 86400
});
// MongoStorage
const storage = new MongoStorage({
factory: async () => {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
return client;
},
database: 'game'
});
```
### New Features
- **Lazy Connection**: Connection is established on first operation, not at construction time
- **Automatic Cleanup**: Support `await using` syntax (TypeScript 5.2+) for automatic resource cleanup
- **Explicit Close**: Call `storage.close()` when done, or use `await using` for automatic disposal
### Migration Guide
1. Replace `client` option with `factory` function
2. Add `storage.close()` call when done, or use `await using`
3. For MongoStorage, ensure factory returns a connected client
## 1.1.0
### Minor Changes
- [#381](https://github.com/esengine/esengine/pull/381) [`d4cef82`](https://github.com/esengine/esengine/commit/d4cef828e1dc1475e8483d40eb1d800c607cf3b6) Thanks [@esengine](https://github.com/esengine)! - feat(transaction): 添加游戏事务系统 | add game transaction system
**@esengine/transaction** - 游戏事务系统 | Game transaction system
### 核心功能 | Core Features
- **TransactionManager** - 事务生命周期管理 | Transaction lifecycle management
- begin()/run() 创建事务 | Create transactions
- 分布式锁支持 | Distributed lock support
- 自动恢复未完成事务 | Auto-recover pending transactions
- **TransactionContext** - 事务上下文 | Transaction context
- 操作链式添加 | Chain operation additions
- 上下文数据共享 | Context data sharing
- 超时控制 | Timeout control
- **Saga 模式** - 补偿式事务 | Compensating transactions
- execute/compensate 成对操作 | Paired execute/compensate
- 自动回滚失败事务 | Auto-rollback on failure
### 存储实现 | Storage Implementations
- **MemoryStorage** - 内存存储,用于开发测试 | In-memory for dev/testing
- **RedisStorage** - Redis 分布式锁和缓存 | Redis distributed lock & cache
- **MongoStorage** - MongoDB 持久化事务日志 | MongoDB persistent transaction logs
### 内置操作 | Built-in Operations
- **CurrencyOperation** - 货币增减操作 | Currency add/deduct
- **InventoryOperation** - 背包物品操作 | Inventory item operations
- **TradeOperation** - 玩家交易操作 | Player trade operations
### 分布式事务 | Distributed Transactions
- **SagaOrchestrator** - 跨服务器 Saga 编排 | Cross-server Saga orchestration
- 完整的 Saga 日志记录 | Complete Saga logging
- 未完成 Saga 恢复 | Incomplete Saga recovery
### Room 集成 | Room Integration
- **withTransactions()** - Room mixin 扩展 | Room mixin extension
- **TransactionRoom** - 预配置的事务 Room 基类 | Pre-configured transaction Room base
### 文档 | Documentation
- 完整的中英文文档 | Complete bilingual documentation
- 核心概念、存储层、操作、分布式事务 | Core concepts, storage, operations, distributed