@nest-omni/core 4.1.3-15 → 4.1.3-18

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 (55) hide show
  1. package/audit/audit.module.js +7 -0
  2. package/audit/services/entity-audit.service.js +2 -1
  3. package/audit/services/manual-audit-log.service.js +2 -2
  4. package/audit/services/multi-database.service.d.ts +0 -5
  5. package/audit/services/multi-database.service.js +0 -24
  6. package/audit/services/transaction-audit.service.js +3 -2
  7. package/cache/dependencies/db.dependency.d.ts +2 -7
  8. package/cache/dependencies/db.dependency.js +4 -11
  9. package/http-client/examples/proxy-from-environment.example.d.ts +1 -1
  10. package/http-client/examples/proxy-from-environment.example.js +18 -19
  11. package/http-client/services/logging.service.js +2 -3
  12. package/index.d.ts +1 -1
  13. package/index.js +1 -1
  14. package/package.json +3 -2
  15. package/setup/bootstrap.setup.d.ts +1 -1
  16. package/shared/service-registry.module.js +2 -15
  17. package/shared/services/api-config.service.js +1 -0
  18. package/validators/is-exists.validator.d.ts +2 -7
  19. package/validators/is-exists.validator.js +2 -24
  20. package/validators/is-unique.validator.d.ts +2 -7
  21. package/validators/is-unique.validator.js +2 -24
  22. package/transaction/__tests__/mocks.d.ts +0 -9
  23. package/transaction/__tests__/mocks.js +0 -33
  24. package/transaction/base-service-transaction.d.ts +0 -106
  25. package/transaction/base-service-transaction.js +0 -317
  26. package/transaction/cls-compatibility.service.d.ts +0 -55
  27. package/transaction/cls-compatibility.service.js +0 -127
  28. package/transaction/data-source-registry.d.ts +0 -91
  29. package/transaction/data-source-registry.js +0 -349
  30. package/transaction/data-source.util.d.ts +0 -142
  31. package/transaction/data-source.util.js +0 -330
  32. package/transaction/database-adapter.d.ts +0 -44
  33. package/transaction/database-adapter.js +0 -240
  34. package/transaction/decorators/entity-datasource.decorator.d.ts +0 -62
  35. package/transaction/decorators/entity-datasource.decorator.js +0 -105
  36. package/transaction/index.d.ts +0 -16
  37. package/transaction/index.js +0 -71
  38. package/transaction/logging-transactional.interceptor.d.ts +0 -18
  39. package/transaction/logging-transactional.interceptor.js +0 -163
  40. package/transaction/transaction-context.service.d.ts +0 -137
  41. package/transaction/transaction-context.service.js +0 -411
  42. package/transaction/transaction-manager.d.ts +0 -230
  43. package/transaction/transaction-manager.holder.d.ts +0 -31
  44. package/transaction/transaction-manager.holder.js +0 -42
  45. package/transaction/transaction-manager.js +0 -1001
  46. package/transaction/transaction-synchronization.d.ts +0 -171
  47. package/transaction/transaction-synchronization.js +0 -380
  48. package/transaction/transaction.errors.d.ts +0 -91
  49. package/transaction/transaction.errors.js +0 -206
  50. package/transaction/transaction.module.d.ts +0 -30
  51. package/transaction/transaction.module.js +0 -126
  52. package/transaction/transactional.decorator.d.ts +0 -82
  53. package/transaction/transactional.decorator.js +0 -320
  54. package/transaction/typeorm-module-wrapper.d.ts +0 -96
  55. package/transaction/typeorm-module-wrapper.js +0 -197
@@ -1,142 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- /**
3
- * 数据源工具类
4
- * 提供静态方法在任意位置获取数据源
5
- */
6
- export declare class DataSourceUtil {
7
- /**
8
- * 获取数据源
9
- * 按优先级从以下位置查找:
10
- * 1. 当前请求上下文 (TransactionContextService)
11
- * 2. 全局数据源存储 (GlobalDataSourceStorage)
12
- *
13
- * @param name 数据源名称,默认为 'default'
14
- * @returns DataSource 实例
15
- * @throws Error 如果数据源不存在
16
- */
17
- static getDataSource(name?: string): DataSource;
18
- /**
19
- * 安全获取数据源,不存在时返回 null
20
- *
21
- * @param name 数据源名称
22
- * @returns DataSource 实例或 null
23
- */
24
- static getDataSourceSafe(name?: string): DataSource | null;
25
- /**
26
- * 获取默认数据源
27
- */
28
- static getDefaultDataSource(): DataSource;
29
- /**
30
- * 安全获取默认数据源
31
- */
32
- static getDefaultDataSourceSafe(): DataSource | null;
33
- /**
34
- * 检查数据源是否可用
35
- *
36
- * @param name 数据源名称
37
- * @returns 是否可用
38
- */
39
- static isAvailable(name?: string): boolean;
40
- /**
41
- * 获取所有可用数据源名称
42
- */
43
- static getAvailableDataSourceNames(): string[];
44
- /**
45
- * 批量获取数据源
46
- *
47
- * @param names 数据源名称数组
48
- * @returns 数据源 Map
49
- */
50
- static getDataSources(names: string[]): Map<string, DataSource>;
51
- /**
52
- * 获取所有已注册的数据源
53
- */
54
- static getAllDataSources(): Map<string, DataSource>;
55
- /**
56
- * 手动注册数据源(用于非模块场景)
57
- *
58
- * @param name 数据源名称
59
- * @param dataSource DataSource 实例
60
- * @param isDefault 是否设为默认数据源
61
- */
62
- static registerDataSource(name: string, dataSource: DataSource, isDefault?: boolean): void;
63
- /**
64
- * 批量注册数据源
65
- *
66
- * @param dataSources 数据源 Map
67
- * @param defaultName 默认数据源名称
68
- */
69
- static registerDataSources(dataSources: Map<string, DataSource>, defaultName?: string): void;
70
- /**
71
- * 使用数据源执行操作
72
- *
73
- * @param name 数据源名称
74
- * @param operation 要执行的操作
75
- * @returns 操作结果
76
- */
77
- static withDataSource<T>(name: string, operation: (dataSource: DataSource) => Promise<T> | T): Promise<T>;
78
- /**
79
- * 使用默认数据源执行操作
80
- *
81
- * @param operation 要执行的操作
82
- * @returns 操作结果
83
- */
84
- static withDefaultDataSource<T>(operation: (dataSource: DataSource) => Promise<T> | T): Promise<T>;
85
- /**
86
- * 在事务中执行操作
87
- *
88
- * @param name 数据源名称
89
- * @param operation 要执行的操作
90
- * @returns 操作结果
91
- */
92
- static withTransaction<T>(name: string, operation: (dataSource: DataSource) => Promise<T>): Promise<T>;
93
- /**
94
- * 在默认数据源的事务中执行操作
95
- */
96
- static withDefaultTransaction<T>(operation: (dataSource: DataSource) => Promise<T>): Promise<T>;
97
- /**
98
- * 测试数据源连接
99
- *
100
- * @param name 数据源名称
101
- * @returns 连接是否正常
102
- */
103
- static testConnection(name?: string): Promise<boolean>;
104
- }
105
- /**
106
- * 便捷的别名
107
- */
108
- export declare const getDataSource: any;
109
- export declare const getDataSourceSafe: any;
110
- export declare const getDefaultDataSource: any;
111
- export declare const isDataSourceAvailable: any;
112
- export declare const withDataSource: any;
113
- export declare const withTransaction: any;
114
- /**
115
- * 添加数据源到全局注册表
116
- * 用于在 TypeOrmModule.forRootAsync 的 useFactory 中手动注册数据源
117
- *
118
- * @param name 数据源名称
119
- * @param dataSource DataSource 实例
120
- * @param isDefault 是否设为默认数据源
121
- *
122
- * @example
123
- * ```typescript
124
- * TypeOrmModule.forRootAsync({
125
- * inject: [ApiConfigService],
126
- * useFactory: (config: ApiConfigService) => {
127
- * const dsConfig = config.typeormConfig;
128
- * // 在这里注册,确保数据源初始化后立即可用
129
- * addDataSource('default', dataSource, true);
130
- * return dsConfig;
131
- * },
132
- * }),
133
- * ```
134
- */
135
- export declare const addDataSource: any;
136
- /**
137
- * 批量添加数据源
138
- *
139
- * @param dataSources 数据源 Map
140
- * @param defaultName 默认数据源名称
141
- */
142
- export declare const addDataSources: any;
@@ -1,330 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.addDataSources = exports.addDataSource = exports.withTransaction = exports.withDataSource = exports.isDataSourceAvailable = exports.getDefaultDataSource = exports.getDataSourceSafe = exports.getDataSource = exports.DataSourceUtil = void 0;
13
- const transaction_context_service_1 = require("./transaction-context.service");
14
- /**
15
- * 全局数据源存储
16
- * 用于在非请求上下文中存储和获取数据源
17
- */
18
- class GlobalDataSourceStorage {
19
- /**
20
- * 注册数据源
21
- */
22
- static register(name, dataSource) {
23
- this.dataSources.set(name, dataSource);
24
- }
25
- /**
26
- * 批量注册数据源
27
- */
28
- static registerAll(dataSources) {
29
- for (const [name, dataSource] of dataSources.entries()) {
30
- this.register(name, dataSource);
31
- }
32
- }
33
- /**
34
- * 获取数据源
35
- */
36
- static get(name) {
37
- return this.dataSources.get(name);
38
- }
39
- /**
40
- * 获取默认数据源
41
- */
42
- static getDefault() {
43
- return this.dataSources.get(this.defaultDataSourceName);
44
- }
45
- /**
46
- * 设置默认数据源名称
47
- */
48
- static setDefaultName(name) {
49
- this.defaultDataSourceName = name;
50
- }
51
- /**
52
- * 检查数据源是否存在
53
- */
54
- static has(name) {
55
- return this.dataSources.has(name);
56
- }
57
- /**
58
- * 获取所有已注册的数据源名称
59
- */
60
- static getAllNames() {
61
- return Array.from(this.dataSources.keys());
62
- }
63
- /**
64
- * 移除数据源
65
- */
66
- static remove(name) {
67
- this.dataSources.delete(name);
68
- }
69
- /**
70
- * 清空所有数据源
71
- */
72
- static clear() {
73
- this.dataSources.clear();
74
- }
75
- }
76
- GlobalDataSourceStorage.dataSources = new Map();
77
- GlobalDataSourceStorage.defaultDataSourceName = 'default';
78
- /**
79
- * 数据源工具类
80
- * 提供静态方法在任意位置获取数据源
81
- */
82
- class DataSourceUtil {
83
- /**
84
- * 获取数据源
85
- * 按优先级从以下位置查找:
86
- * 1. 当前请求上下文 (TransactionContextService)
87
- * 2. 全局数据源存储 (GlobalDataSourceStorage)
88
- *
89
- * @param name 数据源名称,默认为 'default'
90
- * @returns DataSource 实例
91
- * @throws Error 如果数据源不存在
92
- */
93
- static getDataSource(name = 'default') {
94
- // 1. 尝试从请求上下文获取
95
- try {
96
- return transaction_context_service_1.TransactionContextService.getDataSource(name);
97
- }
98
- catch (_a) {
99
- // 忽略错误,继续尝试其他方式
100
- }
101
- // 2. 从全局存储获取
102
- const dataSource = GlobalDataSourceStorage.get(name);
103
- if (dataSource) {
104
- return dataSource;
105
- }
106
- throw new Error(`DataSource '${name}' not found. ` +
107
- `Please ensure it is registered via TransactionModule.registerDataSource() or TypeOrmModule.`);
108
- }
109
- /**
110
- * 安全获取数据源,不存在时返回 null
111
- *
112
- * @param name 数据源名称
113
- * @returns DataSource 实例或 null
114
- */
115
- static getDataSourceSafe(name = 'default') {
116
- try {
117
- return this.getDataSource(name);
118
- }
119
- catch (_a) {
120
- return null;
121
- }
122
- }
123
- /**
124
- * 获取默认数据源
125
- */
126
- static getDefaultDataSource() {
127
- return this.getDataSource('default');
128
- }
129
- /**
130
- * 安全获取默认数据源
131
- */
132
- static getDefaultDataSourceSafe() {
133
- return this.getDataSourceSafe('default');
134
- }
135
- /**
136
- * 检查数据源是否可用
137
- *
138
- * @param name 数据源名称
139
- * @returns 是否可用
140
- */
141
- static isAvailable(name = 'default') {
142
- var _a;
143
- try {
144
- const ds = this.getDataSource(name);
145
- return (_a = ds === null || ds === void 0 ? void 0 : ds.isInitialized) !== null && _a !== void 0 ? _a : false;
146
- }
147
- catch (_b) {
148
- return false;
149
- }
150
- }
151
- /**
152
- * 获取所有可用数据源名称
153
- */
154
- static getAvailableDataSourceNames() {
155
- const names = new Set();
156
- // 从请求上下文获取
157
- try {
158
- const contextNames = transaction_context_service_1.TransactionContextService.getRegisteredDataSources();
159
- contextNames.forEach((name) => names.add(name));
160
- }
161
- catch (_a) {
162
- // 忽略错误
163
- }
164
- // 从全局存储获取
165
- GlobalDataSourceStorage.getAllNames().forEach((name) => names.add(name));
166
- return Array.from(names);
167
- }
168
- /**
169
- * 批量获取数据源
170
- *
171
- * @param names 数据源名称数组
172
- * @returns 数据源 Map
173
- */
174
- static getDataSources(names) {
175
- const result = new Map();
176
- for (const name of names) {
177
- try {
178
- const ds = this.getDataSource(name);
179
- if (ds) {
180
- result.set(name, ds);
181
- }
182
- }
183
- catch (_a) {
184
- // 跳过不存在的数据源
185
- }
186
- }
187
- return result;
188
- }
189
- /**
190
- * 获取所有已注册的数据源
191
- */
192
- static getAllDataSources() {
193
- const names = this.getAvailableDataSourceNames();
194
- return this.getDataSources(names);
195
- }
196
- /**
197
- * 手动注册数据源(用于非模块场景)
198
- *
199
- * @param name 数据源名称
200
- * @param dataSource DataSource 实例
201
- * @param isDefault 是否设为默认数据源
202
- */
203
- static registerDataSource(name, dataSource, isDefault = false) {
204
- GlobalDataSourceStorage.register(name, dataSource);
205
- if (isDefault) {
206
- GlobalDataSourceStorage.setDefaultName(name);
207
- }
208
- }
209
- /**
210
- * 批量注册数据源
211
- *
212
- * @param dataSources 数据源 Map
213
- * @param defaultName 默认数据源名称
214
- */
215
- static registerDataSources(dataSources, defaultName) {
216
- GlobalDataSourceStorage.registerAll(dataSources);
217
- if (defaultName) {
218
- GlobalDataSourceStorage.setDefaultName(defaultName);
219
- }
220
- }
221
- /**
222
- * 使用数据源执行操作
223
- *
224
- * @param name 数据源名称
225
- * @param operation 要执行的操作
226
- * @returns 操作结果
227
- */
228
- static withDataSource(name, operation) {
229
- return __awaiter(this, void 0, void 0, function* () {
230
- const dataSource = this.getDataSource(name);
231
- return operation(dataSource);
232
- });
233
- }
234
- /**
235
- * 使用默认数据源执行操作
236
- *
237
- * @param operation 要执行的操作
238
- * @returns 操作结果
239
- */
240
- static withDefaultDataSource(operation) {
241
- return __awaiter(this, void 0, void 0, function* () {
242
- return this.withDataSource('default', operation);
243
- });
244
- }
245
- /**
246
- * 在事务中执行操作
247
- *
248
- * @param name 数据源名称
249
- * @param operation 要执行的操作
250
- * @returns 操作结果
251
- */
252
- static withTransaction(name, operation) {
253
- return __awaiter(this, void 0, void 0, function* () {
254
- const dataSource = this.getDataSource(name);
255
- return dataSource.transaction((entityManager) => __awaiter(this, void 0, void 0, function* () {
256
- // 通过 EntityManager 获取 DataSource
257
- const ds = entityManager.connection;
258
- return operation(ds);
259
- }));
260
- });
261
- }
262
- /**
263
- * 在默认数据源的事务中执行操作
264
- */
265
- static withDefaultTransaction(operation) {
266
- return __awaiter(this, void 0, void 0, function* () {
267
- return this.withTransaction('default', operation);
268
- });
269
- }
270
- /**
271
- * 测试数据源连接
272
- *
273
- * @param name 数据源名称
274
- * @returns 连接是否正常
275
- */
276
- static testConnection() {
277
- return __awaiter(this, arguments, void 0, function* (name = 'default') {
278
- try {
279
- const dataSource = this.getDataSource(name);
280
- if (dataSource.isInitialized) {
281
- yield dataSource.query('SELECT 1');
282
- return true;
283
- }
284
- return false;
285
- }
286
- catch (_a) {
287
- return false;
288
- }
289
- });
290
- }
291
- }
292
- exports.DataSourceUtil = DataSourceUtil;
293
- /**
294
- * 便捷的别名
295
- */
296
- exports.getDataSource = DataSourceUtil.getDataSource.bind(DataSourceUtil);
297
- exports.getDataSourceSafe = DataSourceUtil.getDataSourceSafe.bind(DataSourceUtil);
298
- exports.getDefaultDataSource = DataSourceUtil.getDefaultDataSource.bind(DataSourceUtil);
299
- exports.isDataSourceAvailable = DataSourceUtil.isAvailable.bind(DataSourceUtil);
300
- exports.withDataSource = DataSourceUtil.withDataSource.bind(DataSourceUtil);
301
- exports.withTransaction = DataSourceUtil.withTransaction.bind(DataSourceUtil);
302
- /**
303
- * 添加数据源到全局注册表
304
- * 用于在 TypeOrmModule.forRootAsync 的 useFactory 中手动注册数据源
305
- *
306
- * @param name 数据源名称
307
- * @param dataSource DataSource 实例
308
- * @param isDefault 是否设为默认数据源
309
- *
310
- * @example
311
- * ```typescript
312
- * TypeOrmModule.forRootAsync({
313
- * inject: [ApiConfigService],
314
- * useFactory: (config: ApiConfigService) => {
315
- * const dsConfig = config.typeormConfig;
316
- * // 在这里注册,确保数据源初始化后立即可用
317
- * addDataSource('default', dataSource, true);
318
- * return dsConfig;
319
- * },
320
- * }),
321
- * ```
322
- */
323
- exports.addDataSource = DataSourceUtil.registerDataSource.bind(DataSourceUtil);
324
- /**
325
- * 批量添加数据源
326
- *
327
- * @param dataSources 数据源 Map
328
- * @param defaultName 默认数据源名称
329
- */
330
- exports.addDataSources = DataSourceUtil.registerDataSources.bind(DataSourceUtil);
@@ -1,44 +0,0 @@
1
- import { DataSource, QueryRunner } from 'typeorm';
2
- /**
3
- * 数据库类型
4
- */
5
- export type DatabaseType = 'mysql' | 'mariadb' | 'postgres' | 'cockroachdb' | 'sqlite' | 'better-sqlite3' | 'mssql' | 'oracle' | 'mongodb' | 'cordova' | 'react-native' | 'nativescript' | 'sqljs' | 'expo' | 'capacitor';
6
- /**
7
- * 数据库适配器
8
- * 处理不同数据库的 SQL 语法差异
9
- */
10
- export declare class DatabaseAdapter {
11
- /**
12
- * 获取数据库类型
13
- */
14
- static getDatabaseType(dataSource: DataSource): DatabaseType;
15
- /**
16
- * 检查数据库是否支持 SAVEPOINT
17
- */
18
- static supportsSavepoint(dataSource: DataSource): boolean;
19
- /**
20
- * 创建保存点
21
- */
22
- static createSavepoint(queryRunner: QueryRunner, savepointName: string): Promise<void>;
23
- /**
24
- * 回滚到保存点
25
- */
26
- static rollbackToSavepoint(queryRunner: QueryRunner, savepointName: string): Promise<void>;
27
- /**
28
- * 释放保存点
29
- */
30
- static releaseSavepoint(queryRunner: QueryRunner, savepointName: string): Promise<void>;
31
- /**
32
- * 执行健康检查查询
33
- */
34
- static healthCheck(dataSource: DataSource): Promise<boolean>;
35
- /**
36
- * 获取数据库特定的信息
37
- */
38
- static getDatabaseInfo(dataSource: DataSource): {
39
- type: DatabaseType;
40
- supportsSavepoint: boolean;
41
- supportsNestedTransactions: boolean;
42
- requiresReleaseSavepoint: boolean;
43
- };
44
- }