@eggjs/dal-plugin 4.0.0-beta.35 → 4.0.1-beta.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.
@@ -1,53 +1,58 @@
1
- import crypto from 'node:crypto';
2
- import { MysqlDataSource } from '@eggjs/dal-runtime';
3
- export class MysqlDataSourceManager {
4
- static instance = new MysqlDataSourceManager();
5
- dataSourceIndices;
6
- dataSources;
7
- constructor() {
8
- this.dataSourceIndices = new Map();
9
- this.dataSources = new Map();
10
- }
11
- get(moduleName, dataSourceName) {
12
- const dataSourceIndex = this.dataSourceIndices.get(moduleName)?.get(dataSourceName);
13
- if (dataSourceIndex) {
14
- return this.dataSources.get(dataSourceIndex);
15
- }
16
- }
17
- async createDataSource(moduleName, dataSourceName, config) {
18
- const { logger, ...dsConfig } = config || {};
19
- const dataSourceConfig = {
20
- ...dsConfig,
21
- name: dataSourceName,
22
- };
23
- const index = MysqlDataSourceManager.createDataSourceKey(dataSourceConfig);
24
- let dataSource = this.dataSources.get(index);
25
- if (!dataSource) {
26
- dataSource = new MysqlDataSource({ ...dataSourceConfig, logger });
27
- this.dataSources.set(index, dataSource);
28
- }
29
- let moduleDataSourceIndices = this.dataSourceIndices.get(moduleName);
30
- if (!moduleDataSourceIndices) {
31
- moduleDataSourceIndices = new Map();
32
- this.dataSourceIndices.set(moduleName, moduleDataSourceIndices);
33
- }
34
- moduleDataSourceIndices.set(dataSourceName, index);
35
- await dataSource.ready();
36
- }
37
- clear() {
38
- this.dataSourceIndices.clear();
39
- }
40
- static createDataSourceKey(dataSourceOptions) {
41
- const hash = crypto.createHash('md5');
42
- const keys = Object.keys(dataSourceOptions).sort();
43
- for (const key of keys) {
44
- const value = dataSourceOptions[key];
45
- if (value) {
46
- hash.update(key);
47
- hash.update(String(value));
48
- }
49
- }
50
- return hash.digest('hex');
51
- }
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxEYXRhU291cmNlTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTXlzcWxEYXRhU291cmNlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUEwQixlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxRQUFRLEdBQTJCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUV0RCxpQkFBaUIsQ0FHaEM7SUFDZSxXQUFXLENBQXFEO0lBRWpGO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxjQUFzQjtRQUM1QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxjQUFzQixFQUFFLE1BQXlCO1FBQzFGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxRQUFRO1lBQ1gsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0UsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM3Qix1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbkQsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBb0M7UUFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUE4QixDQUFDLENBQUM7WUFDaEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUMifQ==
1
+ import { MysqlDataSource } from "@eggjs/dal-runtime";
2
+ import crypto from "node:crypto";
3
+
4
+ //#region src/lib/MysqlDataSourceManager.ts
5
+ var MysqlDataSourceManager = class MysqlDataSourceManager {
6
+ static instance = new MysqlDataSourceManager();
7
+ dataSourceIndices;
8
+ dataSources;
9
+ constructor() {
10
+ this.dataSourceIndices = /* @__PURE__ */ new Map();
11
+ this.dataSources = /* @__PURE__ */ new Map();
12
+ }
13
+ get(moduleName, dataSourceName) {
14
+ const dataSourceIndex = this.dataSourceIndices.get(moduleName)?.get(dataSourceName);
15
+ if (dataSourceIndex) return this.dataSources.get(dataSourceIndex);
16
+ }
17
+ async createDataSource(moduleName, dataSourceName, config) {
18
+ const { logger, ...dsConfig } = config || {};
19
+ const dataSourceConfig = {
20
+ ...dsConfig,
21
+ name: dataSourceName
22
+ };
23
+ const index = MysqlDataSourceManager.createDataSourceKey(dataSourceConfig);
24
+ let dataSource = this.dataSources.get(index);
25
+ if (!dataSource) {
26
+ dataSource = new MysqlDataSource({
27
+ ...dataSourceConfig,
28
+ logger
29
+ });
30
+ this.dataSources.set(index, dataSource);
31
+ }
32
+ let moduleDataSourceIndices = this.dataSourceIndices.get(moduleName);
33
+ if (!moduleDataSourceIndices) {
34
+ moduleDataSourceIndices = /* @__PURE__ */ new Map();
35
+ this.dataSourceIndices.set(moduleName, moduleDataSourceIndices);
36
+ }
37
+ moduleDataSourceIndices.set(dataSourceName, index);
38
+ await dataSource.ready();
39
+ }
40
+ clear() {
41
+ this.dataSourceIndices.clear();
42
+ }
43
+ static createDataSourceKey(dataSourceOptions) {
44
+ const hash = crypto.createHash("md5");
45
+ const keys = Object.keys(dataSourceOptions).sort();
46
+ for (const key of keys) {
47
+ const value = dataSourceOptions[key];
48
+ if (value) {
49
+ hash.update(key);
50
+ hash.update(String(value));
51
+ }
52
+ }
53
+ return hash.digest("hex");
54
+ }
55
+ };
56
+
57
+ //#endregion
58
+ export { MysqlDataSourceManager };
@@ -1,9 +1,13 @@
1
- import type { TableSqlMap } from '@eggjs/dal-runtime';
2
- export declare class SqlMapManager {
3
- static instance: SqlMapManager;
4
- private sqlMaps;
5
- constructor();
6
- get(moduleName: string, clazzName: string): TableSqlMap | undefined;
7
- set(moduleName: string, sqlMap: TableSqlMap): void;
8
- clear(): void;
1
+ import { TableSqlMap } from "@eggjs/dal-runtime";
2
+
3
+ //#region src/lib/SqlMapManager.d.ts
4
+ declare class SqlMapManager {
5
+ static instance: SqlMapManager;
6
+ private sqlMaps;
7
+ constructor();
8
+ get(moduleName: string, clazzName: string): TableSqlMap | undefined;
9
+ set(moduleName: string, sqlMap: TableSqlMap): void;
10
+ clear(): void;
9
11
  }
12
+ //#endregion
13
+ export { SqlMapManager };
@@ -1,22 +1,25 @@
1
- export class SqlMapManager {
2
- static instance = new SqlMapManager();
3
- sqlMaps;
4
- constructor() {
5
- this.sqlMaps = new Map();
6
- }
7
- get(moduleName, clazzName) {
8
- return this.sqlMaps.get(moduleName)?.get(clazzName);
9
- }
10
- set(moduleName, sqlMap) {
11
- let tables = this.sqlMaps.get(moduleName);
12
- if (!tables) {
13
- tables = new Map();
14
- this.sqlMaps.set(moduleName, tables);
15
- }
16
- tables.set(sqlMap.name, sqlMap);
17
- }
18
- clear() {
19
- this.sqlMaps.clear();
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvU3FsTWFwTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsUUFBUSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO0lBRTdDLE9BQU8sQ0FBeUQ7SUFFeEU7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxNQUFtQjtRQUN6QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQyJ9
1
+ //#region src/lib/SqlMapManager.ts
2
+ var SqlMapManager = class SqlMapManager {
3
+ static instance = new SqlMapManager();
4
+ sqlMaps;
5
+ constructor() {
6
+ this.sqlMaps = /* @__PURE__ */ new Map();
7
+ }
8
+ get(moduleName, clazzName) {
9
+ return this.sqlMaps.get(moduleName)?.get(clazzName);
10
+ }
11
+ set(moduleName, sqlMap) {
12
+ let tables = this.sqlMaps.get(moduleName);
13
+ if (!tables) {
14
+ tables = /* @__PURE__ */ new Map();
15
+ this.sqlMaps.set(moduleName, tables);
16
+ }
17
+ tables.set(sqlMap.name, sqlMap);
18
+ }
19
+ clear() {
20
+ this.sqlMaps.clear();
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ export { SqlMapManager };
@@ -1,9 +1,13 @@
1
- import type { TableModel } from '@eggjs/dal-decorator';
2
- export declare class TableModelManager {
3
- static instance: TableModelManager;
4
- private tableModels;
5
- constructor();
6
- get(moduleName: string, clazzName: string): TableModel | undefined;
7
- set(moduleName: string, tableModel: TableModel): void;
8
- clear(): void;
1
+ import { TableModel } from "@eggjs/dal-decorator";
2
+
3
+ //#region src/lib/TableModelManager.d.ts
4
+ declare class TableModelManager {
5
+ static instance: TableModelManager;
6
+ private tableModels;
7
+ constructor();
8
+ get(moduleName: string, clazzName: string): TableModel | undefined;
9
+ set(moduleName: string, tableModel: TableModel): void;
10
+ clear(): void;
9
11
  }
12
+ //#endregion
13
+ export { TableModelManager };
@@ -1,22 +1,25 @@
1
- export class TableModelManager {
2
- static instance = new TableModelManager();
3
- tableModels;
4
- constructor() {
5
- this.tableModels = new Map();
6
- }
7
- get(moduleName, clazzName) {
8
- return this.tableModels.get(moduleName)?.get(clazzName);
9
- }
10
- set(moduleName, tableModel) {
11
- let tables = this.tableModels.get(moduleName);
12
- if (!tables) {
13
- tables = new Map();
14
- this.tableModels.set(moduleName, tables);
15
- }
16
- tables.set(tableModel.clazz.name, tableModel);
17
- }
18
- clear() {
19
- this.tableModels.clear();
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVNb2RlbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1RhYmxlTW9kZWxNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBRXJELFdBQVcsQ0FBd0Q7SUFFM0U7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUFzQjtRQUM1QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUMifQ==
1
+ //#region src/lib/TableModelManager.ts
2
+ var TableModelManager = class TableModelManager {
3
+ static instance = new TableModelManager();
4
+ tableModels;
5
+ constructor() {
6
+ this.tableModels = /* @__PURE__ */ new Map();
7
+ }
8
+ get(moduleName, clazzName) {
9
+ return this.tableModels.get(moduleName)?.get(clazzName);
10
+ }
11
+ set(moduleName, tableModel) {
12
+ let tables = this.tableModels.get(moduleName);
13
+ if (!tables) {
14
+ tables = /* @__PURE__ */ new Map();
15
+ this.tableModels.set(moduleName, tables);
16
+ }
17
+ tables.set(tableModel.clazz.name, tableModel);
18
+ }
19
+ clear() {
20
+ this.tableModels.clear();
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ export { TableModelManager };
@@ -1,9 +1,13 @@
1
- import type { LifecycleHook } from '@eggjs/lifecycle';
2
- import type { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/metadata';
3
- import type { ModuleConfigHolder, Logger } from '@eggjs/tegg-types';
4
- export declare class TransactionPrototypeHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
5
- private readonly moduleConfigs;
6
- private readonly logger;
7
- constructor(moduleConfigs: Record<string, ModuleConfigHolder>, logger: Logger);
8
- preCreate(ctx: EggPrototypeLifecycleContext): Promise<void>;
1
+ import { Logger, ModuleConfigHolder } from "@eggjs/tegg-types";
2
+ import { LifecycleHook } from "@eggjs/lifecycle";
3
+ import { EggPrototype, EggPrototypeLifecycleContext } from "@eggjs/metadata";
4
+
5
+ //#region src/lib/TransactionPrototypeHook.d.ts
6
+ declare class TransactionPrototypeHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
7
+ private readonly moduleConfigs;
8
+ private readonly logger;
9
+ constructor(moduleConfigs: Record<string, ModuleConfigHolder>, logger: Logger);
10
+ preCreate(ctx: EggPrototypeLifecycleContext): Promise<void>;
9
11
  }
12
+ //#endregion
13
+ export { TransactionPrototypeHook };
@@ -1,55 +1,49 @@
1
- import assert from 'node:assert';
2
- import { Pointcut } from '@eggjs/aop-decorator';
3
- import { PropagationType } from '@eggjs/tegg-types';
4
- import { TransactionMetaBuilder } from '@eggjs/transaction-decorator';
5
1
  import { MysqlDataSourceManager } from "./MysqlDataSourceManager.js";
6
2
  import { TransactionalAOP } from "./TransactionalAOP.js";
7
- export class TransactionPrototypeHook {
8
- moduleConfigs;
9
- logger;
10
- constructor(moduleConfigs, logger) {
11
- this.moduleConfigs = moduleConfigs;
12
- this.logger = logger;
13
- }
14
- async preCreate(ctx) {
15
- const builder = new TransactionMetaBuilder(ctx.clazz);
16
- const transactionMetadataList = builder.build();
17
- if (transactionMetadataList.length < 1) {
18
- return;
19
- }
20
- const moduleName = ctx.loadUnit.name;
21
- for (const transactionMetadata of transactionMetadataList) {
22
- const clazzName = `${moduleName}.${ctx.clazz.name}.${String(transactionMetadata.method)}`;
23
- const datasourceConfigs = this.moduleConfigs[moduleName]?.config?.dataSource || {};
24
- let datasourceName;
25
- if (transactionMetadata.datasourceName) {
26
- assert(datasourceConfigs[transactionMetadata.datasourceName], `method ${clazzName} specified datasource ${transactionMetadata.datasourceName} not exists`);
27
- datasourceName = transactionMetadata.datasourceName;
28
- this.logger.info(`use datasource [${transactionMetadata.datasourceName}] for class ${clazzName}`);
29
- }
30
- else {
31
- const dataSources = Object.keys(datasourceConfigs);
32
- if (dataSources.length === 1) {
33
- datasourceName = dataSources[0];
34
- }
35
- else {
36
- throw new Error(`method ${clazzName} not specified datasource, module ${moduleName} has multi datasource, should specify datasource name`);
37
- }
38
- this.logger.info(`use default datasource ${dataSources[0]} for class ${clazzName}`);
39
- }
40
- const adviceParams = {
41
- propagation: transactionMetadata.propagation,
42
- dataSourceGetter: () => {
43
- const mysqlDataSource = MysqlDataSourceManager.instance.get(moduleName, datasourceName);
44
- if (!mysqlDataSource) {
45
- throw new Error(`method ${clazzName} not found datasource ${datasourceName}`);
46
- }
47
- return mysqlDataSource;
48
- },
49
- };
50
- assert(adviceParams.propagation === PropagationType.REQUIRED, 'Transactional propagation only support required for now');
51
- Pointcut(TransactionalAOP, { adviceParams })(ctx.clazz.prototype, transactionMetadata.method);
52
- }
53
- }
54
- }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25Qcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9UcmFuc2FjdGlvblByb3RvdHlwZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUE0QixNQUFNLHVCQUF1QixDQUFDO0FBRW5GLE1BQU0sT0FBTyx3QkFBd0I7SUFDbEIsYUFBYSxDQUFxQztJQUNsRCxNQUFNLENBQVM7SUFFaEMsWUFBWSxhQUFpRCxFQUFFLE1BQWM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBaUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQyxLQUFLLE1BQU0sbUJBQW1CLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLFVBQVUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxRixNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBYyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFFNUYsSUFBSSxjQUFzQixDQUFDO1lBQzNCLElBQUksbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FDSixpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsRUFDckQsVUFBVSxTQUFTLHlCQUF5QixtQkFBbUIsQ0FBQyxjQUFjLGFBQWEsQ0FDNUYsQ0FBQztnQkFDRixjQUFjLEdBQUcsbUJBQW1CLENBQUMsY0FBYyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsbUJBQW1CLENBQUMsY0FBYyxlQUFlLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDcEcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QixjQUFjLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FDYixVQUFVLFNBQVMscUNBQXFDLFVBQVUsdURBQXVELENBQzFILENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUF3QjtnQkFDeEMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLFdBQVc7Z0JBQzVDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtvQkFDckIsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7b0JBQ3hGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLFNBQVMseUJBQXlCLGNBQWMsRUFBRSxDQUFDLENBQUM7b0JBQ2hGLENBQUM7b0JBQ0QsT0FBTyxlQUFlLENBQUM7Z0JBQ3pCLENBQUM7YUFDRixDQUFDO1lBQ0YsTUFBTSxDQUNKLFlBQVksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLFFBQVEsRUFDckQseURBQXlELENBQzFELENBQUM7WUFDRixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxLQUFhLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pHLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
3
+ import assert from "node:assert";
4
+ import { Pointcut } from "@eggjs/aop-decorator";
5
+ import { PropagationType } from "@eggjs/tegg-types";
6
+ import { TransactionMetaBuilder } from "@eggjs/transaction-decorator";
7
+
8
+ //#region src/lib/TransactionPrototypeHook.ts
9
+ var TransactionPrototypeHook = class {
10
+ moduleConfigs;
11
+ logger;
12
+ constructor(moduleConfigs, logger) {
13
+ this.moduleConfigs = moduleConfigs;
14
+ this.logger = logger;
15
+ }
16
+ async preCreate(ctx) {
17
+ const transactionMetadataList = new TransactionMetaBuilder(ctx.clazz).build();
18
+ if (transactionMetadataList.length < 1) return;
19
+ const moduleName = ctx.loadUnit.name;
20
+ for (const transactionMetadata of transactionMetadataList) {
21
+ const clazzName = `${moduleName}.${ctx.clazz.name}.${String(transactionMetadata.method)}`;
22
+ const datasourceConfigs = (this.moduleConfigs[moduleName]?.config)?.dataSource || {};
23
+ let datasourceName;
24
+ if (transactionMetadata.datasourceName) {
25
+ assert(datasourceConfigs[transactionMetadata.datasourceName], `method ${clazzName} specified datasource ${transactionMetadata.datasourceName} not exists`);
26
+ datasourceName = transactionMetadata.datasourceName;
27
+ this.logger.info(`use datasource [${transactionMetadata.datasourceName}] for class ${clazzName}`);
28
+ } else {
29
+ const dataSources = Object.keys(datasourceConfigs);
30
+ if (dataSources.length === 1) datasourceName = dataSources[0];
31
+ else throw new Error(`method ${clazzName} not specified datasource, module ${moduleName} has multi datasource, should specify datasource name`);
32
+ this.logger.info(`use default datasource ${dataSources[0]} for class ${clazzName}`);
33
+ }
34
+ const adviceParams = {
35
+ propagation: transactionMetadata.propagation,
36
+ dataSourceGetter: () => {
37
+ const mysqlDataSource = MysqlDataSourceManager.instance.get(moduleName, datasourceName);
38
+ if (!mysqlDataSource) throw new Error(`method ${clazzName} not found datasource ${datasourceName}`);
39
+ return mysqlDataSource;
40
+ }
41
+ };
42
+ assert(adviceParams.propagation === PropagationType.REQUIRED, "Transactional propagation only support required for now");
43
+ Pointcut(TransactionalAOP, { adviceParams })(ctx.clazz.prototype, transactionMetadata.method);
44
+ }
45
+ }
46
+ };
47
+
48
+ //#endregion
49
+ export { TransactionPrototypeHook };
@@ -1,11 +1,15 @@
1
- import { type AdviceContext, type IAdvice } from '@eggjs/aop-decorator';
2
- import { type EggProtoImplClass } from '@eggjs/core-decorator';
3
- import { MysqlDataSource } from '@eggjs/dal-runtime';
4
- import { PropagationType } from '@eggjs/tegg-types';
5
- export interface TransactionalParams {
6
- propagation: PropagationType;
7
- dataSourceGetter: () => MysqlDataSource;
1
+ import { MysqlDataSource } from "@eggjs/dal-runtime";
2
+ import { AdviceContext, IAdvice } from "@eggjs/aop-decorator";
3
+ import { PropagationType } from "@eggjs/tegg-types";
4
+ import { EggProtoImplClass } from "@eggjs/core-decorator";
5
+
6
+ //#region src/lib/TransactionalAOP.d.ts
7
+ interface TransactionalParams {
8
+ propagation: PropagationType;
9
+ dataSourceGetter: () => MysqlDataSource;
8
10
  }
9
- export declare class TransactionalAOP implements IAdvice<EggProtoImplClass, TransactionalParams> {
10
- around(ctx: AdviceContext<EggProtoImplClass, TransactionalParams>, next: () => Promise<any>): Promise<void>;
11
+ declare class TransactionalAOP implements IAdvice<EggProtoImplClass, TransactionalParams> {
12
+ around(ctx: AdviceContext<EggProtoImplClass, TransactionalParams>, next: () => Promise<any>): Promise<void>;
11
13
  }
14
+ //#endregion
15
+ export { TransactionalAOP, TransactionalParams };
@@ -1,28 +1,22 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js";
2
+ import { MysqlDataSource } from "@eggjs/dal-runtime";
3
+ import { Advice } from "@eggjs/aop-decorator";
4
+ import { PropagationType } from "@eggjs/tegg-types";
5
+ import { AccessLevel, ObjectInitType } from "@eggjs/core-decorator";
6
+
7
+ //#region src/lib/TransactionalAOP.ts
8
+ let TransactionalAOP = class TransactionalAOP$1 {
9
+ async around(ctx, next) {
10
+ const { propagation, dataSourceGetter } = ctx.adviceParams;
11
+ const dataSource = dataSourceGetter();
12
+ if (propagation === PropagationType.ALWAYS_NEW) return await dataSource.beginTransactionScope(next);
13
+ return await dataSource.beginTransactionScope(next);
14
+ }
6
15
  };
7
- import { Advice } from '@eggjs/aop-decorator';
8
- import { AccessLevel, ObjectInitType } from '@eggjs/core-decorator';
9
- import { MysqlDataSource } from '@eggjs/dal-runtime';
10
- import { PropagationType } from '@eggjs/tegg-types';
11
- let TransactionalAOP = class TransactionalAOP {
12
- async around(ctx, next) {
13
- const { propagation, dataSourceGetter } = ctx.adviceParams;
14
- const dataSource = dataSourceGetter();
15
- if (propagation === PropagationType.ALWAYS_NEW) {
16
- return await dataSource.beginTransactionScope(next);
17
- }
18
- return await dataSource.beginTransactionScope(next);
19
- }
20
- };
21
- TransactionalAOP = __decorate([
22
- Advice({
23
- accessLevel: AccessLevel.PUBLIC,
24
- initType: ObjectInitType.SINGLETON,
25
- })
26
- ], TransactionalAOP);
27
- export { TransactionalAOP };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25hbEFPUC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvVHJhbnNhY3Rpb25hbEFPUC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFvQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQTBCLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFXN0MsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUFDcEIsS0FBSyxDQUFDLE1BQU0sQ0FDakIsR0FBMEQsRUFDMUQsSUFBd0I7UUFFeEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEdBQUcsQ0FBQyxZQUFhLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFdBQVcsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsT0FBTyxNQUFNLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YsQ0FBQTtBQVpZLGdCQUFnQjtJQUo1QixNQUFNLENBQUM7UUFDTixXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU07UUFDL0IsUUFBUSxFQUFFLGNBQWMsQ0FBQyxTQUFTO0tBQ25DLENBQUM7R0FDVyxnQkFBZ0IsQ0FZNUIifQ==
16
+ TransactionalAOP = __decorate([Advice({
17
+ accessLevel: AccessLevel.PUBLIC,
18
+ initType: ObjectInitType.SINGLETON
19
+ })], TransactionalAOP);
20
+
21
+ //#endregion
22
+ export { TransactionalAOP };
package/dist/types.d.ts CHANGED
@@ -1 +1 @@
1
- import '@eggjs/tegg-plugin/types';
1
+ import "@eggjs/tegg-plugin/types";
package/dist/types.js CHANGED
@@ -1,2 +1,3 @@
1
- import '@eggjs/tegg-plugin/types';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQyJ9
1
+ import "@eggjs/tegg-plugin/types";
2
+
3
+ export { };