@esengine/transaction 2.1.0 → 2.1.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 (41) hide show
  1. package/dist/core/TransactionContext.d.ts +79 -0
  2. package/dist/core/TransactionContext.d.ts.map +1 -0
  3. package/dist/core/TransactionManager.d.ts +104 -0
  4. package/dist/core/TransactionManager.d.ts.map +1 -0
  5. package/dist/core/index.d.ts +8 -0
  6. package/dist/core/index.d.ts.map +1 -0
  7. package/dist/core/types.d.ts +393 -0
  8. package/dist/core/types.d.ts.map +1 -0
  9. package/dist/distributed/SagaOrchestrator.d.ts +173 -0
  10. package/dist/distributed/SagaOrchestrator.d.ts.map +1 -0
  11. package/dist/distributed/index.d.ts +6 -0
  12. package/dist/distributed/index.d.ts.map +1 -0
  13. package/dist/index.d.ts +56 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +1621 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/integration/RoomTransactionMixin.d.ts +108 -0
  18. package/dist/integration/RoomTransactionMixin.d.ts.map +1 -0
  19. package/dist/integration/index.d.ts +6 -0
  20. package/dist/integration/index.d.ts.map +1 -0
  21. package/dist/operations/BaseOperation.d.ts +43 -0
  22. package/dist/operations/BaseOperation.d.ts.map +1 -0
  23. package/dist/operations/CurrencyOperation.d.ts +122 -0
  24. package/dist/operations/CurrencyOperation.d.ts.map +1 -0
  25. package/dist/operations/InventoryOperation.d.ts +152 -0
  26. package/dist/operations/InventoryOperation.d.ts.map +1 -0
  27. package/dist/operations/TradeOperation.d.ts +155 -0
  28. package/dist/operations/TradeOperation.d.ts.map +1 -0
  29. package/dist/operations/index.d.ts +9 -0
  30. package/dist/operations/index.d.ts.map +1 -0
  31. package/dist/storage/MemoryStorage.d.ts +63 -0
  32. package/dist/storage/MemoryStorage.d.ts.map +1 -0
  33. package/dist/storage/MongoStorage.d.ts +118 -0
  34. package/dist/storage/MongoStorage.d.ts.map +1 -0
  35. package/dist/storage/RedisStorage.d.ts +125 -0
  36. package/dist/storage/RedisStorage.d.ts.map +1 -0
  37. package/dist/storage/index.d.ts +8 -0
  38. package/dist/storage/index.d.ts.map +1 -0
  39. package/dist/tokens.d.ts +17 -0
  40. package/dist/tokens.d.ts.map +1 -0
  41. package/package.json +2 -2
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @zh 事务上下文实现
3
+ * @en Transaction context implementation
4
+ */
5
+ import type { ITransactionContext, ITransactionOperation, ITransactionStorage, TransactionState, TransactionResult, TransactionOptions } from './types.js';
6
+ /**
7
+ * @zh 事务上下文
8
+ * @en Transaction context
9
+ *
10
+ * @zh 封装事务的状态、操作和执行逻辑
11
+ * @en Encapsulates transaction state, operations, and execution logic
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const ctx = new TransactionContext({ timeout: 5000 })
16
+ * ctx.addOperation(new DeductCurrency({ playerId: '1', amount: 100 }))
17
+ * ctx.addOperation(new AddItem({ playerId: '1', itemId: 'sword' }))
18
+ * const result = await ctx.execute()
19
+ * ```
20
+ */
21
+ export declare class TransactionContext implements ITransactionContext {
22
+ private _id;
23
+ private _state;
24
+ private _timeout;
25
+ private _operations;
26
+ private _storage;
27
+ private _metadata;
28
+ private _contextData;
29
+ private _startTime;
30
+ private _distributed;
31
+ constructor(options?: TransactionOptions & {
32
+ storage?: ITransactionStorage;
33
+ });
34
+ get id(): string;
35
+ get state(): TransactionState;
36
+ get timeout(): number;
37
+ get operations(): ReadonlyArray<ITransactionOperation>;
38
+ get storage(): ITransactionStorage | null;
39
+ get metadata(): Record<string, unknown>;
40
+ /**
41
+ * @zh 添加操作
42
+ * @en Add operation
43
+ */
44
+ addOperation<T extends ITransactionOperation>(operation: T): this;
45
+ /**
46
+ * @zh 执行事务
47
+ * @en Execute transaction
48
+ */
49
+ execute<T = unknown>(): Promise<TransactionResult<T>>;
50
+ /**
51
+ * @zh 手动回滚事务
52
+ * @en Manually rollback transaction
53
+ */
54
+ rollback(): Promise<void>;
55
+ /**
56
+ * @zh 获取上下文数据
57
+ * @en Get context data
58
+ */
59
+ get<T>(key: string): T | undefined;
60
+ /**
61
+ * @zh 设置上下文数据
62
+ * @en Set context data
63
+ */
64
+ set<T>(key: string, value: T): void;
65
+ private _isTimedOut;
66
+ private _compensate;
67
+ private _saveLog;
68
+ private _updateTransactionState;
69
+ private _updateOperationLog;
70
+ private _collectResultData;
71
+ }
72
+ /**
73
+ * @zh 创建事务上下文
74
+ * @en Create transaction context
75
+ */
76
+ export declare function createTransactionContext(options?: TransactionOptions & {
77
+ storage?: ITransactionStorage;
78
+ }): ITransactionContext;
79
+ //# sourceMappingURL=TransactionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionContext.d.ts","sourceRoot":"","sources":["../../src/core/TransactionContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAIrB,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,GAAE,kBAAkB,GAAG;QAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAO;IAYhF,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,UAAU,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAErD;IAED,IAAI,OAAO,IAAI,mBAAmB,GAAG,IAAI,CAExC;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtC;IAMD;;;OAGG;IACH,YAAY,CAAC,CAAC,SAAS,qBAAqB,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI;IAQjE;;;OAGG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAoE3D;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQnC,OAAO,CAAC,WAAW;YAIL,WAAW;YAiBX,QAAQ;YAqBR,uBAAuB;YAOvB,mBAAmB;IAUjC,OAAO,CAAC,kBAAkB;CAS7B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,GAAE,kBAAkB,GAAG;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAO,GACrE,mBAAmB,CAErB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * @zh 事务管理器
3
+ * @en Transaction manager
4
+ */
5
+ import type { ITransactionContext, ITransactionStorage, TransactionManagerConfig, TransactionOptions, TransactionResult } from './types.js';
6
+ /**
7
+ * @zh 事务管理器
8
+ * @en Transaction manager
9
+ *
10
+ * @zh 管理事务的创建、执行和恢复
11
+ * @en Manages transaction creation, execution, and recovery
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const manager = new TransactionManager({
16
+ * storage: new RedisStorage({ url: 'redis://localhost:6379' }),
17
+ * defaultTimeout: 10000,
18
+ * })
19
+ *
20
+ * const tx = manager.begin({ timeout: 5000 })
21
+ * tx.addOperation(new DeductCurrency({ ... }))
22
+ * tx.addOperation(new AddItem({ ... }))
23
+ *
24
+ * const result = await tx.execute()
25
+ * ```
26
+ */
27
+ export declare class TransactionManager {
28
+ private _storage;
29
+ private _defaultTimeout;
30
+ private _serverId;
31
+ private _autoRecover;
32
+ private _activeTransactions;
33
+ constructor(config?: TransactionManagerConfig);
34
+ /**
35
+ * @zh 服务器 ID
36
+ * @en Server ID
37
+ */
38
+ get serverId(): string;
39
+ /**
40
+ * @zh 存储实例
41
+ * @en Storage instance
42
+ */
43
+ get storage(): ITransactionStorage | null;
44
+ /**
45
+ * @zh 活跃事务数量
46
+ * @en Active transaction count
47
+ */
48
+ get activeCount(): number;
49
+ /**
50
+ * @zh 开始新事务
51
+ * @en Begin new transaction
52
+ *
53
+ * @param options - @zh 事务选项 @en Transaction options
54
+ * @returns @zh 事务上下文 @en Transaction context
55
+ */
56
+ begin(options?: TransactionOptions): ITransactionContext;
57
+ /**
58
+ * @zh 执行事务(便捷方法)
59
+ * @en Execute transaction (convenience method)
60
+ *
61
+ * @param builder - @zh 事务构建函数 @en Transaction builder function
62
+ * @param options - @zh 事务选项 @en Transaction options
63
+ * @returns @zh 事务结果 @en Transaction result
64
+ */
65
+ run<T = unknown>(builder: (ctx: ITransactionContext) => void | Promise<void>, options?: TransactionOptions): Promise<TransactionResult<T>>;
66
+ /**
67
+ * @zh 获取活跃事务
68
+ * @en Get active transaction
69
+ */
70
+ getTransaction(id: string): ITransactionContext | undefined;
71
+ /**
72
+ * @zh 恢复未完成的事务
73
+ * @en Recover pending transactions
74
+ */
75
+ recover(): Promise<number>;
76
+ /**
77
+ * @zh 获取分布式锁
78
+ * @en Acquire distributed lock
79
+ */
80
+ acquireLock(key: string, ttl?: number): Promise<string | null>;
81
+ /**
82
+ * @zh 释放分布式锁
83
+ * @en Release distributed lock
84
+ */
85
+ releaseLock(key: string, token: string): Promise<boolean>;
86
+ /**
87
+ * @zh 使用分布式锁执行
88
+ * @en Execute with distributed lock
89
+ */
90
+ withLock<T>(key: string, fn: () => Promise<T>, ttl?: number): Promise<T>;
91
+ /**
92
+ * @zh 清理已完成的事务日志
93
+ * @en Clean up completed transaction logs
94
+ */
95
+ cleanup(beforeTimestamp?: number): Promise<number>;
96
+ private _generateServerId;
97
+ private _recoverTransaction;
98
+ }
99
+ /**
100
+ * @zh 创建事务管理器
101
+ * @en Create transaction manager
102
+ */
103
+ export declare function createTransactionManager(config?: TransactionManagerConfig): TransactionManager;
104
+ //# sourceMappingURL=TransactionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionManager.d.ts","sourceRoot":"","sources":["../../src/core/TransactionManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAElB,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAA+C;gBAE9D,MAAM,GAAE,wBAA6B;IAWjD;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,mBAAmB,GAAG,IAAI,CAExC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAMD;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,GAAE,kBAAuB,GAAG,mBAAmB;IAgB5D;;;;;;;OAOG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EACjB,OAAO,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC3D,OAAO,GAAE,kBAAuB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAYhC;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAI3D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBhC;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3E;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;;OAGG;IACG,QAAQ,CAAC,CAAC,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,GAAG,GAAE,MAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAab;;;OAGG;IACG,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBxD,OAAO,CAAC,iBAAiB;YAIX,mBAAmB;CAcpC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,GAAE,wBAA6B,GACtC,kBAAkB,CAEpB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zh 核心模块导出
3
+ * @en Core module exports
4
+ */
5
+ export type { TransactionState, OperationResult, TransactionResult, OperationLog, TransactionLog, TransactionOptions, TransactionManagerConfig, ITransactionStorage, ITransactionOperation, ITransactionContext } from './types.js';
6
+ export { TransactionContext, createTransactionContext } from './TransactionContext.js';
7
+ export { TransactionManager, createTransactionManager } from './TransactionManager.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACR,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,393 @@
1
+ /**
2
+ * @zh 事务系统核心类型定义
3
+ * @en Transaction system core type definitions
4
+ */
5
+ /**
6
+ * @zh 事务状态
7
+ * @en Transaction state
8
+ */
9
+ export type TransactionState = 'pending' | 'executing' | 'committed' | 'rolledback' | 'failed';
10
+ /**
11
+ * @zh 操作结果
12
+ * @en Operation result
13
+ */
14
+ export interface OperationResult<T = unknown> {
15
+ /**
16
+ * @zh 是否成功
17
+ * @en Whether succeeded
18
+ */
19
+ success: boolean;
20
+ /**
21
+ * @zh 返回数据
22
+ * @en Return data
23
+ */
24
+ data?: T;
25
+ /**
26
+ * @zh 错误信息
27
+ * @en Error message
28
+ */
29
+ error?: string;
30
+ /**
31
+ * @zh 错误代码
32
+ * @en Error code
33
+ */
34
+ errorCode?: string;
35
+ }
36
+ /**
37
+ * @zh 事务结果
38
+ * @en Transaction result
39
+ */
40
+ export interface TransactionResult<T = unknown> {
41
+ /**
42
+ * @zh 是否成功
43
+ * @en Whether succeeded
44
+ */
45
+ success: boolean;
46
+ /**
47
+ * @zh 事务 ID
48
+ * @en Transaction ID
49
+ */
50
+ transactionId: string;
51
+ /**
52
+ * @zh 操作结果列表
53
+ * @en Operation results
54
+ */
55
+ results: OperationResult[];
56
+ /**
57
+ * @zh 最终数据
58
+ * @en Final data
59
+ */
60
+ data?: T;
61
+ /**
62
+ * @zh 错误信息
63
+ * @en Error message
64
+ */
65
+ error?: string;
66
+ /**
67
+ * @zh 执行时间(毫秒)
68
+ * @en Execution time in milliseconds
69
+ */
70
+ duration: number;
71
+ }
72
+ /**
73
+ * @zh 操作日志
74
+ * @en Operation log
75
+ */
76
+ export interface OperationLog {
77
+ /**
78
+ * @zh 操作名称
79
+ * @en Operation name
80
+ */
81
+ name: string;
82
+ /**
83
+ * @zh 操作数据
84
+ * @en Operation data
85
+ */
86
+ data: unknown;
87
+ /**
88
+ * @zh 操作状态
89
+ * @en Operation state
90
+ */
91
+ state: 'pending' | 'executed' | 'compensated' | 'failed';
92
+ /**
93
+ * @zh 执行时间
94
+ * @en Execution timestamp
95
+ */
96
+ executedAt?: number;
97
+ /**
98
+ * @zh 补偿时间
99
+ * @en Compensation timestamp
100
+ */
101
+ compensatedAt?: number;
102
+ /**
103
+ * @zh 错误信息
104
+ * @en Error message
105
+ */
106
+ error?: string;
107
+ }
108
+ /**
109
+ * @zh 事务日志
110
+ * @en Transaction log
111
+ */
112
+ export interface TransactionLog {
113
+ /**
114
+ * @zh 事务 ID
115
+ * @en Transaction ID
116
+ */
117
+ id: string;
118
+ /**
119
+ * @zh 事务状态
120
+ * @en Transaction state
121
+ */
122
+ state: TransactionState;
123
+ /**
124
+ * @zh 创建时间
125
+ * @en Creation timestamp
126
+ */
127
+ createdAt: number;
128
+ /**
129
+ * @zh 更新时间
130
+ * @en Update timestamp
131
+ */
132
+ updatedAt: number;
133
+ /**
134
+ * @zh 超时时间(毫秒)
135
+ * @en Timeout in milliseconds
136
+ */
137
+ timeout: number;
138
+ /**
139
+ * @zh 操作日志列表
140
+ * @en Operation logs
141
+ */
142
+ operations: OperationLog[];
143
+ /**
144
+ * @zh 元数据
145
+ * @en Metadata
146
+ */
147
+ metadata?: Record<string, unknown>;
148
+ /**
149
+ * @zh 是否分布式事务
150
+ * @en Whether distributed transaction
151
+ */
152
+ distributed?: boolean;
153
+ /**
154
+ * @zh 参与的服务器列表
155
+ * @en Participating servers
156
+ */
157
+ participants?: string[];
158
+ }
159
+ /**
160
+ * @zh 事务选项
161
+ * @en Transaction options
162
+ */
163
+ export interface TransactionOptions {
164
+ /**
165
+ * @zh 超时时间(毫秒),默认 30000
166
+ * @en Timeout in milliseconds, default 30000
167
+ */
168
+ timeout?: number;
169
+ /**
170
+ * @zh 是否分布式事务
171
+ * @en Whether distributed transaction
172
+ */
173
+ distributed?: boolean;
174
+ /**
175
+ * @zh 元数据
176
+ * @en Metadata
177
+ */
178
+ metadata?: Record<string, unknown>;
179
+ /**
180
+ * @zh 重试次数,默认 0
181
+ * @en Retry count, default 0
182
+ */
183
+ retryCount?: number;
184
+ /**
185
+ * @zh 重试间隔(毫秒),默认 1000
186
+ * @en Retry interval in milliseconds, default 1000
187
+ */
188
+ retryInterval?: number;
189
+ }
190
+ /**
191
+ * @zh 事务管理器配置
192
+ * @en Transaction manager configuration
193
+ */
194
+ export interface TransactionManagerConfig {
195
+ /**
196
+ * @zh 存储实例
197
+ * @en Storage instance
198
+ */
199
+ storage?: ITransactionStorage;
200
+ /**
201
+ * @zh 默认超时时间(毫秒)
202
+ * @en Default timeout in milliseconds
203
+ */
204
+ defaultTimeout?: number;
205
+ /**
206
+ * @zh 服务器 ID(分布式用)
207
+ * @en Server ID for distributed transactions
208
+ */
209
+ serverId?: string;
210
+ /**
211
+ * @zh 是否自动恢复未完成事务
212
+ * @en Whether to auto-recover pending transactions
213
+ */
214
+ autoRecover?: boolean;
215
+ }
216
+ /**
217
+ * @zh 事务存储接口
218
+ * @en Transaction storage interface
219
+ */
220
+ export interface ITransactionStorage {
221
+ /**
222
+ * @zh 关闭存储连接
223
+ * @en Close storage connection
224
+ *
225
+ * @zh 释放所有资源,关闭数据库连接
226
+ * @en Release all resources, close database connections
227
+ */
228
+ close?(): Promise<void>;
229
+ /**
230
+ * @zh 获取分布式锁
231
+ * @en Acquire distributed lock
232
+ *
233
+ * @param key - @zh 锁的键 @en Lock key
234
+ * @param ttl - @zh 锁的生存时间(毫秒) @en Lock TTL in milliseconds
235
+ * @returns @zh 锁令牌,获取失败返回 null @en Lock token, null if failed
236
+ */
237
+ acquireLock(key: string, ttl: number): Promise<string | null>;
238
+ /**
239
+ * @zh 释放分布式锁
240
+ * @en Release distributed lock
241
+ *
242
+ * @param key - @zh 锁的键 @en Lock key
243
+ * @param token - @zh 锁令牌 @en Lock token
244
+ * @returns @zh 是否成功释放 @en Whether released successfully
245
+ */
246
+ releaseLock(key: string, token: string): Promise<boolean>;
247
+ /**
248
+ * @zh 保存事务日志
249
+ * @en Save transaction log
250
+ */
251
+ saveTransaction(tx: TransactionLog): Promise<void>;
252
+ /**
253
+ * @zh 获取事务日志
254
+ * @en Get transaction log
255
+ */
256
+ getTransaction(id: string): Promise<TransactionLog | null>;
257
+ /**
258
+ * @zh 更新事务状态
259
+ * @en Update transaction state
260
+ */
261
+ updateTransactionState(id: string, state: TransactionState): Promise<void>;
262
+ /**
263
+ * @zh 更新操作状态
264
+ * @en Update operation state
265
+ */
266
+ updateOperationState(transactionId: string, operationIndex: number, state: OperationLog['state'], error?: string): Promise<void>;
267
+ /**
268
+ * @zh 获取待恢复的事务列表
269
+ * @en Get pending transactions for recovery
270
+ */
271
+ getPendingTransactions(serverId?: string): Promise<TransactionLog[]>;
272
+ /**
273
+ * @zh 删除事务日志
274
+ * @en Delete transaction log
275
+ */
276
+ deleteTransaction(id: string): Promise<void>;
277
+ /**
278
+ * @zh 获取数据
279
+ * @en Get data
280
+ */
281
+ get<T>(key: string): Promise<T | null>;
282
+ /**
283
+ * @zh 设置数据
284
+ * @en Set data
285
+ */
286
+ set<T>(key: string, value: T, ttl?: number): Promise<void>;
287
+ /**
288
+ * @zh 删除数据
289
+ * @en Delete data
290
+ */
291
+ delete(key: string): Promise<boolean>;
292
+ }
293
+ /**
294
+ * @zh 事务操作接口
295
+ * @en Transaction operation interface
296
+ */
297
+ export interface ITransactionOperation<TData = unknown, TResult = unknown> {
298
+ /**
299
+ * @zh 操作名称
300
+ * @en Operation name
301
+ */
302
+ readonly name: string;
303
+ /**
304
+ * @zh 操作数据
305
+ * @en Operation data
306
+ */
307
+ readonly data: TData;
308
+ /**
309
+ * @zh 验证前置条件
310
+ * @en Validate preconditions
311
+ *
312
+ * @param ctx - @zh 事务上下文 @en Transaction context
313
+ * @returns @zh 是否验证通过 @en Whether validation passed
314
+ */
315
+ validate(ctx: ITransactionContext): Promise<boolean>;
316
+ /**
317
+ * @zh 执行操作
318
+ * @en Execute operation
319
+ *
320
+ * @param ctx - @zh 事务上下文 @en Transaction context
321
+ * @returns @zh 操作结果 @en Operation result
322
+ */
323
+ execute(ctx: ITransactionContext): Promise<OperationResult<TResult>>;
324
+ /**
325
+ * @zh 补偿操作(回滚)
326
+ * @en Compensate operation (rollback)
327
+ *
328
+ * @param ctx - @zh 事务上下文 @en Transaction context
329
+ */
330
+ compensate(ctx: ITransactionContext): Promise<void>;
331
+ }
332
+ /**
333
+ * @zh 事务上下文接口
334
+ * @en Transaction context interface
335
+ */
336
+ export interface ITransactionContext {
337
+ /**
338
+ * @zh 事务 ID
339
+ * @en Transaction ID
340
+ */
341
+ readonly id: string;
342
+ /**
343
+ * @zh 事务状态
344
+ * @en Transaction state
345
+ */
346
+ readonly state: TransactionState;
347
+ /**
348
+ * @zh 超时时间(毫秒)
349
+ * @en Timeout in milliseconds
350
+ */
351
+ readonly timeout: number;
352
+ /**
353
+ * @zh 操作列表
354
+ * @en Operations
355
+ */
356
+ readonly operations: ReadonlyArray<ITransactionOperation>;
357
+ /**
358
+ * @zh 存储实例
359
+ * @en Storage instance
360
+ */
361
+ readonly storage: ITransactionStorage | null;
362
+ /**
363
+ * @zh 元数据
364
+ * @en Metadata
365
+ */
366
+ readonly metadata: Record<string, unknown>;
367
+ /**
368
+ * @zh 添加操作
369
+ * @en Add operation
370
+ */
371
+ addOperation<T extends ITransactionOperation>(operation: T): this;
372
+ /**
373
+ * @zh 执行事务
374
+ * @en Execute transaction
375
+ */
376
+ execute<T = unknown>(): Promise<TransactionResult<T>>;
377
+ /**
378
+ * @zh 回滚事务
379
+ * @en Rollback transaction
380
+ */
381
+ rollback(): Promise<void>;
382
+ /**
383
+ * @zh 获取上下文数据
384
+ * @en Get context data
385
+ */
386
+ get<T>(key: string): T | undefined;
387
+ /**
388
+ * @zh 设置上下文数据
389
+ * @en Set context data
390
+ */
391
+ set<T>(key: string, value: T): void;
392
+ }
393
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}