@nestplatform/transactional 1.0.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.
Files changed (72) hide show
  1. package/README.md +94 -0
  2. package/dist/decorators/index.d.ts +1 -0
  3. package/dist/decorators/index.js +18 -0
  4. package/dist/decorators/index.js.map +1 -0
  5. package/dist/decorators/transactional.decorator.d.ts +3 -0
  6. package/dist/decorators/transactional.decorator.js +23 -0
  7. package/dist/decorators/transactional.decorator.js.map +1 -0
  8. package/dist/index.d.ts +6 -0
  9. package/dist/index.js +23 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/interfaces/index.d.ts +1 -0
  12. package/dist/interfaces/index.js +18 -0
  13. package/dist/interfaces/index.js.map +1 -0
  14. package/dist/interfaces/transaction-adapter.interface.d.ts +6 -0
  15. package/dist/interfaces/transaction-adapter.interface.js +3 -0
  16. package/dist/interfaces/transaction-adapter.interface.js.map +1 -0
  17. package/dist/providers/index.d.ts +2 -0
  18. package/dist/providers/index.js +19 -0
  19. package/dist/providers/index.js.map +1 -0
  20. package/dist/providers/transaction-adapter-async.provider.d.ts +3 -0
  21. package/dist/providers/transaction-adapter-async.provider.js +16 -0
  22. package/dist/providers/transaction-adapter-async.provider.js.map +1 -0
  23. package/dist/providers/transaction-adapter.provider.d.ts +3 -0
  24. package/dist/providers/transaction-adapter.provider.js +15 -0
  25. package/dist/providers/transaction-adapter.provider.js.map +1 -0
  26. package/dist/transaction-context.d.ts +10 -0
  27. package/dist/transaction-context.js +18 -0
  28. package/dist/transaction-context.js.map +1 -0
  29. package/dist/transactional-feature.decoration.d.ts +7 -0
  30. package/dist/transactional-feature.decoration.js +67 -0
  31. package/dist/transactional-feature.decoration.js.map +1 -0
  32. package/dist/transactional-metadata.accessor.d.ts +9 -0
  33. package/dist/transactional-metadata.accessor.js +34 -0
  34. package/dist/transactional-metadata.accessor.js.map +1 -0
  35. package/dist/transactional-metadata.explorer.d.ts +11 -0
  36. package/dist/transactional-metadata.explorer.js +50 -0
  37. package/dist/transactional-metadata.explorer.js.map +1 -0
  38. package/dist/transactional.constant.d.ts +4 -0
  39. package/dist/transactional.constant.js +8 -0
  40. package/dist/transactional.constant.js.map +1 -0
  41. package/dist/transactional.module.d.ts +7 -0
  42. package/dist/transactional.module.js +44 -0
  43. package/dist/transactional.module.js.map +1 -0
  44. package/dist/types/index.d.ts +2 -0
  45. package/dist/types/index.js +19 -0
  46. package/dist/types/index.js.map +1 -0
  47. package/dist/types/transactional-module.type.d.ts +7 -0
  48. package/dist/types/transactional-module.type.js +3 -0
  49. package/dist/types/transactional-module.type.js.map +1 -0
  50. package/dist/types/transactional.type.d.ts +23 -0
  51. package/dist/types/transactional.type.js +17 -0
  52. package/dist/types/transactional.type.js.map +1 -0
  53. package/package.json +23 -0
  54. package/src/decorators/index.ts +1 -0
  55. package/src/decorators/transactional.decorator.ts +54 -0
  56. package/src/index.ts +6 -0
  57. package/src/interfaces/index.ts +1 -0
  58. package/src/interfaces/transaction-adapter.interface.ts +41 -0
  59. package/src/providers/index.ts +2 -0
  60. package/src/providers/transaction-adapter-async.provider.ts +17 -0
  61. package/src/providers/transaction-adapter.provider.ts +16 -0
  62. package/src/transaction-context.ts +47 -0
  63. package/src/transactional-feature.decoration.ts +64 -0
  64. package/src/transactional-metadata.accessor.ts +30 -0
  65. package/src/transactional-metadata.explorer.ts +62 -0
  66. package/src/transactional.constant.ts +8 -0
  67. package/src/transactional.module.ts +35 -0
  68. package/src/types/index.ts +2 -0
  69. package/src/types/transactional-module.type.ts +10 -0
  70. package/src/types/transactional.type.ts +33 -0
  71. package/tsconfig.json +9 -0
  72. package/tsconfig.tsbuildinfo +1 -0
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # @nestplatform/transactional
2
+
3
+ A powerful, ORM-agnostic transaction management module for NestJS, inspired by Spring Framework's `@Transactional` annotation.
4
+
5
+ ## Features
6
+
7
+ - 🚀 **Declarative Transactions**: Use `@Transactional()` decorator on classes or methods.
8
+ - 🔗 **ORM Agnostic**: Support for any ORM via a plugin-based architecture (TypeORM, etc.).
9
+ - 🌊 **Propagation Support**: Manage transaction boundaries with `REQUIRED`, `REQUIRES_NEW`, and `NESTED`.
10
+ - 🛡️ **Opt-out Support**: Easily exclude methods from class-level transactions with `@NoTransactional()`.
11
+ - 📝 **Transaction Context**: Access the active transaction/store anywhere in the call chain.
12
+ - 📜 **Logging**: Built-in logging for transaction lifecycles.
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @nestplatform/transactional
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### 1. Register the module
23
+
24
+ You need to provide a transaction adapter for your chosen ORM (e.g., `@nestplatform/transactional-typeorm`).
25
+
26
+ ```typescript
27
+ import { TransactionalModule } from '@nestplatform/transactional';
28
+ import { TypeOrmTransactionAdapter } from '@nestplatform/transactional-typeorm';
29
+
30
+ @Module({
31
+ imports: [
32
+ TransactionalModule.registerAsync({
33
+ inject: [DataSource],
34
+ useFactory: (dataSource: DataSource) => ({
35
+ adapters: new TypeOrmTransactionAdapter(dataSource),
36
+ logging: true,
37
+ }),
38
+ }),
39
+ ],
40
+ })
41
+ export class AppModule {}
42
+ ```
43
+
44
+ ### 2. Apply the decorator
45
+
46
+ Apply `@Transactional()` to your service classes or individual methods.
47
+
48
+ ```typescript
49
+ import { Injectable } from '@nestjs/common';
50
+ import { Transactional, TransactionPropagation, NoTransactional } from '@nestplatform/transactional';
51
+
52
+ @Injectable()
53
+ @Transactional() // Class-level: all methods will run in a transaction
54
+ export class OrderService {
55
+ constructor(private readonly orderRepo: Repository<Order>) {}
56
+
57
+ // Defaults to REQUIRED propagation
58
+ async createOrder(data: any) {
59
+ return this.orderRepo.save(data);
60
+ }
61
+
62
+ @Transactional({ propagation: TransactionPropagation.REQUIRES_NEW })
63
+ async createAuditLog(log: any) {
64
+ // This runs in a SEPARATE transaction
65
+ return this.auditRepo.save(log);
66
+ }
67
+
68
+ @NoTransactional() // Opt-out from class-level transaction
69
+ async findById(id: string) {
70
+ return this.orderRepo.findOne(id);
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Propagation Levels
76
+
77
+ - **REQUIRED** (Default): Support a current transaction, create a new one if none exists.
78
+ - **REQUIRES_NEW**: Create a new transaction, suspending the current transaction if one exists.
79
+ - **NESTED**: Execute within a nested transaction if a current transaction exists (via Savepoints).
80
+
81
+ ## Accessing Transaction Context
82
+
83
+ You can access the current transaction store (e.g., TypeORM QueryRunner) anywhere using `TransactionContext`.
84
+
85
+ ```typescript
86
+ import { TransactionContext } from '@nestplatform/transactional';
87
+
88
+ const store = TransactionContext.getStore();
89
+ const queryRunner = store?.transaction;
90
+ ```
91
+
92
+ ## License
93
+
94
+ MIT
@@ -0,0 +1 @@
1
+ export * from "./transactional.decorator";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transactional.decorator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
@@ -0,0 +1,3 @@
1
+ import { TransactionalOptions } from "../types";
2
+ export declare const Transactional: (options?: TransactionalOptions) => ClassDecorator & MethodDecorator;
3
+ export declare const NoTransactional: () => MethodDecorator;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoTransactional = exports.Transactional = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const transactional_constant_1 = require("../transactional.constant");
6
+ const types_1 = require("../types");
7
+ const TRANSACTIONAL_DEFAULTS = {
8
+ propagation: types_1.TransactionPropagation.REQUIRED,
9
+ logging: false,
10
+ };
11
+ const Transactional = (options) => {
12
+ const mergedOptions = {
13
+ ...TRANSACTIONAL_DEFAULTS,
14
+ ...options,
15
+ };
16
+ return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(transactional_constant_1.TRANSACTIONAL_METADATA, mergedOptions));
17
+ };
18
+ exports.Transactional = Transactional;
19
+ const NoTransactional = () => {
20
+ return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(transactional_constant_1.NO_TRANSACTIONAL_METADATA, true));
21
+ };
22
+ exports.NoTransactional = NoTransactional;
23
+ //# sourceMappingURL=transactional.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.decorator.js","sourceRoot":"","sources":["../../src/decorators/transactional.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAE9D,sEAA8F;AAC9F,oCAAwE;AAExE,MAAM,sBAAsB,GAAkE;IAC5F,WAAW,EAAE,8BAAsB,CAAC,QAAQ;IAC5C,OAAO,EAAE,KAAK;CACf,CAAC;AAuBK,MAAM,aAAa,GAAG,CAAC,OAA8B,EAAoC,EAAE;IAChG,MAAM,aAAa,GAAyB;QAC1C,GAAG,sBAAsB;QACzB,GAAG,OAAO;KACX,CAAC;IAEF,OAAO,IAAA,wBAAe,EAAC,IAAA,oBAAW,EAAC,+CAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB;AAaK,MAAM,eAAe,GAAG,GAAoB,EAAE;IACnD,OAAO,IAAA,wBAAe,EAAC,IAAA,oBAAW,EAAC,kDAAyB,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B"}
@@ -0,0 +1,6 @@
1
+ export * from "./interfaces";
2
+ export * from "./decorators";
3
+ export * from "./transactional.module";
4
+ export * from "./transactional.constant";
5
+ export * from "./transaction-context";
6
+ export * from "./types";
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./interfaces"), exports);
18
+ __exportStar(require("./decorators"), exports);
19
+ __exportStar(require("./transactional.module"), exports);
20
+ __exportStar(require("./transactional.constant"), exports);
21
+ __exportStar(require("./transaction-context"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,yDAAuC;AACvC,2DAAyC;AACzC,wDAAsC;AACtC,0CAAwB"}
@@ -0,0 +1 @@
1
+ export * from "./transaction-adapter.interface";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transaction-adapter.interface"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD"}
@@ -0,0 +1,6 @@
1
+ import { TransactionExecuteOptions } from "../types";
2
+ export interface ITransactionAdapter {
3
+ proxyInstance?<T extends object>(instance: T): T;
4
+ execute<T>(callback: () => Promise<T>, options: TransactionExecuteOptions): Promise<T>;
5
+ getActiveTransaction(): any | undefined;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=transaction-adapter.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-adapter.interface.js","sourceRoot":"","sources":["../../src/interfaces/transaction-adapter.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./transaction-adapter.provider";
2
+ export * from "./transaction-adapter-async.provider";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transaction-adapter.provider"), exports);
18
+ __exportStar(require("./transaction-adapter-async.provider"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,uEAAqD"}
@@ -0,0 +1,3 @@
1
+ import { FactoryProvider } from "@nestjs/common";
2
+ import { TransactionalModuleConfigAsync } from "../types";
3
+ export declare const TransactionAdapterAsyncProvider: (config: TransactionalModuleConfigAsync) => FactoryProvider;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionAdapterAsyncProvider = void 0;
4
+ const transactional_constant_1 = require("../transactional.constant");
5
+ const TransactionAdapterAsyncProvider = (config) => {
6
+ return {
7
+ provide: transactional_constant_1.TRANSACTION_ADAPTERS,
8
+ inject: config.inject,
9
+ useFactory: async (...args) => {
10
+ const { adapters } = await config.useFactory(...args);
11
+ return !!adapters["execute"] ? { [transactional_constant_1.DEFAULT_TRANSACTION_ADAPTER]: adapters } : adapters;
12
+ },
13
+ };
14
+ };
15
+ exports.TransactionAdapterAsyncProvider = TransactionAdapterAsyncProvider;
16
+ //# sourceMappingURL=transaction-adapter-async.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-adapter-async.provider.js","sourceRoot":"","sources":["../../src/providers/transaction-adapter-async.provider.ts"],"names":[],"mappings":";;;AAEA,sEAA8F;AAGvF,MAAM,+BAA+B,GAAG,CAAC,MAAsC,EAAmB,EAAE;IACzG,OAAO;QACL,OAAO,EAAE,6CAAoB;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YAGtD,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oDAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxF,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,+BAA+B,mCAW1C"}
@@ -0,0 +1,3 @@
1
+ import { FactoryProvider } from "@nestjs/common";
2
+ import { TransactionalModuleConfigSync } from "../types";
3
+ export declare const TransactionAdapterProvider: (config: TransactionalModuleConfigSync) => FactoryProvider;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionAdapterProvider = void 0;
4
+ const transactional_constant_1 = require("../transactional.constant");
5
+ const TransactionAdapterProvider = (config) => {
6
+ return {
7
+ provide: transactional_constant_1.TRANSACTION_ADAPTERS,
8
+ useFactory: async () => {
9
+ const adapters = config.adapters;
10
+ return !!adapters["execute"] ? { [transactional_constant_1.DEFAULT_TRANSACTION_ADAPTER]: adapters } : adapters;
11
+ },
12
+ };
13
+ };
14
+ exports.TransactionAdapterProvider = TransactionAdapterProvider;
15
+ //# sourceMappingURL=transaction-adapter.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-adapter.provider.js","sourceRoot":"","sources":["../../src/providers/transaction-adapter.provider.ts"],"names":[],"mappings":";;;AAEA,sEAA8F;AAGvF,MAAM,0BAA0B,GAAG,CAAC,MAAqC,EAAmB,EAAE;IACnG,OAAO;QACL,OAAO,EAAE,6CAAoB;QAC7B,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAGjC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oDAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxF,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,0BAA0B,8BAUrC"}
@@ -0,0 +1,10 @@
1
+ export type TransactionStore = {
2
+ transaction: any;
3
+ adapterKey: string;
4
+ };
5
+ export declare class TransactionContext {
6
+ private static readonly storage;
7
+ static run<T>(store: TransactionStore, fn: () => Promise<T>): Promise<T>;
8
+ static getStore(): TransactionStore | undefined;
9
+ static getTransaction<T = any>(): T | undefined;
10
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionContext = void 0;
4
+ const node_async_hooks_1 = require("node:async_hooks");
5
+ class TransactionContext {
6
+ static run(store, fn) {
7
+ return this.storage.run(store, fn);
8
+ }
9
+ static getStore() {
10
+ return this.storage.getStore();
11
+ }
12
+ static getTransaction() {
13
+ return this.storage.getStore()?.transaction;
14
+ }
15
+ }
16
+ exports.TransactionContext = TransactionContext;
17
+ TransactionContext.storage = new node_async_hooks_1.AsyncLocalStorage();
18
+ //# sourceMappingURL=transaction-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-context.js","sourceRoot":"","sources":["../src/transaction-context.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAoBrD,MAAa,kBAAkB;IAO7B,MAAM,CAAC,GAAG,CAAI,KAAuB,EAAE,EAAoB;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAMD,MAAM,CAAC,QAAQ;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAMD,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC;IAC9C,CAAC;;AAzBH,gDA0BC;AAzByB,0BAAO,GAAG,IAAI,oCAAiB,EAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { FeatureDecoration } from "@nestplatform/common";
2
+ import { TransactionalOptions, TransactionAdapters } from "./types";
3
+ export declare class TransactionalFeatureDecoration extends FeatureDecoration {
4
+ private readonly adapters;
5
+ constructor(adapters: TransactionAdapters);
6
+ wrapMethodWithTransaction(instance: any, methodName: string, originalMethod: Function, options: TransactionalOptions): void;
7
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TransactionalFeatureDecoration = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const common_2 = require("@nestplatform/common");
18
+ const transactional_constant_1 = require("./transactional.constant");
19
+ const types_1 = require("./types");
20
+ const LOGGING_CONTEXT = "TransactionalModule";
21
+ let TransactionalFeatureDecoration = class TransactionalFeatureDecoration extends common_2.FeatureDecoration {
22
+ constructor(adapters) {
23
+ super();
24
+ this.adapters = adapters;
25
+ }
26
+ wrapMethodWithTransaction(instance, methodName, originalMethod, options) {
27
+ const adapterKey = options.adapter || transactional_constant_1.DEFAULT_TRANSACTION_ADAPTER;
28
+ const fallbackAdapter = Object.values(this.adapters)[0];
29
+ const adapter = this.adapters[adapterKey] || fallbackAdapter;
30
+ if (!adapter) {
31
+ if (options.logging) {
32
+ common_1.Logger.warn(`Transaction adapter "${adapterKey}" not found. Skip wrapping for method ${methodName}.`, LOGGING_CONTEXT);
33
+ }
34
+ return;
35
+ }
36
+ instance[methodName] = async (...args) => {
37
+ const methodString = (0, common_2.stringifyMethod)(methodName, ...args);
38
+ if (options.logging) {
39
+ common_1.Logger.log(`Starting transaction for \`${methodString}\` [${options.propagation || types_1.TransactionPropagation.REQUIRED}]`, LOGGING_CONTEXT);
40
+ }
41
+ try {
42
+ const proxiedInstance = adapter.proxyInstance?.(instance);
43
+ const result = await adapter.execute(() => originalMethod.apply(proxiedInstance || instance, args), {
44
+ propagation: options.propagation || types_1.TransactionPropagation.REQUIRED,
45
+ isolation: options.isolation,
46
+ });
47
+ if (options.logging) {
48
+ common_1.Logger.log(`Transaction committed for \`${methodString}\``, LOGGING_CONTEXT);
49
+ }
50
+ return result;
51
+ }
52
+ catch (error) {
53
+ if (options.logging) {
54
+ common_1.Logger.error(`Transaction rolled back for \`${methodString}\`: ${error}`, LOGGING_CONTEXT);
55
+ }
56
+ throw error;
57
+ }
58
+ };
59
+ }
60
+ };
61
+ exports.TransactionalFeatureDecoration = TransactionalFeatureDecoration;
62
+ exports.TransactionalFeatureDecoration = TransactionalFeatureDecoration = __decorate([
63
+ (0, common_1.Injectable)(),
64
+ __param(0, (0, common_1.Inject)(transactional_constant_1.TRANSACTION_ADAPTERS)),
65
+ __metadata("design:paramtypes", [Object])
66
+ ], TransactionalFeatureDecoration);
67
+ //# sourceMappingURL=transactional-feature.decoration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-feature.decoration.js","sourceRoot":"","sources":["../src/transactional-feature.decoration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAE5D,iDAA0E;AAE1E,qEAA6F;AAE7F,mCAA4F;AAE5F,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAGvC,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,0BAAiB;IACnE,YAA2D,QAA6B;QACtF,KAAK,EAAE,CAAC;QADiD,aAAQ,GAAR,QAAQ,CAAqB;IAExF,CAAC;IAOM,yBAAyB,CAAC,QAAa,EAAE,UAAkB,EAAE,cAAwB,EAAE,OAA6B;QACzH,MAAM,UAAU,GAAW,OAAO,CAAC,OAAO,IAAI,oDAA2B,CAAC;QAC1E,MAAM,eAAe,GAAoC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,MAAM,OAAO,GAAoC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;QAE9F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,eAAM,CAAC,IAAI,CAAC,wBAAwB,UAAU,yCAAyC,UAAU,GAAG,EAAE,eAAe,CAAC,CAAC;YACzH,CAAC;YAED,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,GAAG,IAAW,EAAgB,EAAE;YAC5D,MAAM,YAAY,GAAW,IAAA,wBAAe,EAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;YAElE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,eAAM,CAAC,GAAG,CAAC,8BAA8B,YAAY,OAAO,OAAO,CAAC,WAAW,IAAI,8BAAsB,CAAC,QAAQ,GAAG,EAAE,eAAe,CAAC,CAAC;YAC1I,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,IAAI,QAAQ,EAAE,IAAI,CAAC,EAAE;oBAClG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,8BAAsB,CAAC,QAAQ;oBACnE,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,eAAM,CAAC,GAAG,CAAC,+BAA+B,YAAY,IAAI,EAAE,eAAe,CAAC,CAAC;gBAC/E,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,eAAM,CAAC,KAAK,CAAC,iCAAiC,YAAY,OAAO,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;gBAC7F,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AApDY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;;GAD9B,8BAA8B,CAoD1C"}
@@ -0,0 +1,9 @@
1
+ import { Reflector } from "@nestjs/core";
2
+ import { MetadataAccessor } from "@nestplatform/common";
3
+ import { TransactionalOptions } from "./types";
4
+ export declare class TransactionalMetadataAccessor extends MetadataAccessor {
5
+ protected readonly reflector: Reflector;
6
+ constructor(reflector: Reflector);
7
+ getTransactionalMetadata(target: Function): TransactionalOptions | undefined;
8
+ getNoTransactionalMetadata(target: Function): boolean | undefined;
9
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TransactionalMetadataAccessor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const common_2 = require("@nestplatform/common");
16
+ const transactional_constant_1 = require("./transactional.constant");
17
+ let TransactionalMetadataAccessor = class TransactionalMetadataAccessor extends common_2.MetadataAccessor {
18
+ constructor(reflector) {
19
+ super();
20
+ this.reflector = reflector;
21
+ }
22
+ getTransactionalMetadata(target) {
23
+ return this.getMetadata(transactional_constant_1.TRANSACTIONAL_METADATA, target);
24
+ }
25
+ getNoTransactionalMetadata(target) {
26
+ return this.getMetadata(transactional_constant_1.NO_TRANSACTIONAL_METADATA, target);
27
+ }
28
+ };
29
+ exports.TransactionalMetadataAccessor = TransactionalMetadataAccessor;
30
+ exports.TransactionalMetadataAccessor = TransactionalMetadataAccessor = __decorate([
31
+ (0, common_1.Injectable)(),
32
+ __metadata("design:paramtypes", [core_1.Reflector])
33
+ ], TransactionalMetadataAccessor);
34
+ //# sourceMappingURL=transactional-metadata.accessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-metadata.accessor.js","sourceRoot":"","sources":["../src/transactional-metadata.accessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;AAEzC,iDAAwD;AAExD,qEAA6F;AAItF,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,yBAAgB;IACjE,YAA+B,SAAoB;QACjD,KAAK,EAAE,CAAC;QADqB,cAAS,GAAT,SAAS,CAAW;IAEnD,CAAC;IAMM,wBAAwB,CAAC,MAAgB;QAC9C,OAAO,IAAI,CAAC,WAAW,CAAuB,+CAAsB,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAMM,0BAA0B,CAAC,MAAgB;QAChD,OAAO,IAAI,CAAC,WAAW,CAAU,kDAAyB,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AApBY,sEAA6B;wCAA7B,6BAA6B;IADzC,IAAA,mBAAU,GAAE;qCAE+B,gBAAS;GADxC,6BAA6B,CAoBzC"}
@@ -0,0 +1,11 @@
1
+ import { IFeatureExplorer, MethodContext, ProviderContext } from "@nestplatform/common";
2
+ import { TransactionalFeatureDecoration } from "./transactional-feature.decoration";
3
+ import { TransactionalMetadataAccessor } from "./transactional-metadata.accessor";
4
+ export declare class TransactionalMetadataExplorer implements IFeatureExplorer {
5
+ private readonly metadataAccessor;
6
+ private readonly featureDecoration;
7
+ private readonly classLevelOptions;
8
+ constructor(metadataAccessor: TransactionalMetadataAccessor, featureDecoration: TransactionalFeatureDecoration);
9
+ onProvider(ctx: ProviderContext): void;
10
+ onMethod(ctx: MethodContext): void;
11
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TransactionalMetadataExplorer = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const common_2 = require("@nestplatform/common");
15
+ const transactional_feature_decoration_1 = require("./transactional-feature.decoration");
16
+ const transactional_metadata_accessor_1 = require("./transactional-metadata.accessor");
17
+ let TransactionalMetadataExplorer = class TransactionalMetadataExplorer {
18
+ constructor(metadataAccessor, featureDecoration) {
19
+ this.metadataAccessor = metadataAccessor;
20
+ this.featureDecoration = featureDecoration;
21
+ this.classLevelOptions = new Map();
22
+ }
23
+ onProvider(ctx) {
24
+ const { metatype } = ctx;
25
+ const classOptions = this.metadataAccessor.getTransactionalMetadata(metatype);
26
+ if (classOptions) {
27
+ this.classLevelOptions.set(metatype, classOptions);
28
+ }
29
+ }
30
+ onMethod(ctx) {
31
+ const { instance, methodName, methodRef, metatype } = ctx;
32
+ const isExcluded = this.metadataAccessor.getNoTransactionalMetadata(methodRef);
33
+ if (isExcluded)
34
+ return;
35
+ const methodOptions = this.metadataAccessor.getTransactionalMetadata(methodRef);
36
+ const classOptions = this.classLevelOptions.get(metatype);
37
+ const resolvedOptions = methodOptions ? { ...classOptions, ...methodOptions } : classOptions;
38
+ if (!resolvedOptions)
39
+ return;
40
+ this.featureDecoration.wrapMethodWithTransaction(instance, methodName, methodRef, resolvedOptions);
41
+ }
42
+ };
43
+ exports.TransactionalMetadataExplorer = TransactionalMetadataExplorer;
44
+ exports.TransactionalMetadataExplorer = TransactionalMetadataExplorer = __decorate([
45
+ (0, common_1.Injectable)(),
46
+ (0, common_2.FeatureExplorer)(),
47
+ __metadata("design:paramtypes", [transactional_metadata_accessor_1.TransactionalMetadataAccessor,
48
+ transactional_feature_decoration_1.TransactionalFeatureDecoration])
49
+ ], TransactionalMetadataExplorer);
50
+ //# sourceMappingURL=transactional-metadata.explorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-metadata.explorer.js","sourceRoot":"","sources":["../src/transactional-metadata.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,iDAAyG;AAEzG,yFAAoF;AACpF,uFAAkF;AAK3E,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAQxC,YACmB,gBAA+C,EAC/C,iBAAiD;QADjD,qBAAgB,GAAhB,gBAAgB,CAA+B;QAC/C,sBAAiB,GAAjB,iBAAiB,CAAgC;QAJnD,sBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;IAK5E,CAAC;IAKJ,UAAU,CAAC,GAAoB;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;QAEzB,MAAM,YAAY,GAAqC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAEhH,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAMD,QAAQ,CAAC,GAAkB;QACzB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;QAG1D,MAAM,UAAU,GAAwB,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAEpG,IAAI,UAAU;YAAE,OAAO;QAGvB,MAAM,aAAa,GAAqC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAGlH,MAAM,YAAY,GAAqC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAG5F,MAAM,eAAe,GAAqC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAE/H,IAAI,CAAC,eAAe;YAAE,OAAO;QAE7B,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACrG,CAAC;CACF,CAAA;AAnDY,sEAA6B;wCAA7B,6BAA6B;IAFzC,IAAA,mBAAU,GAAE;IACZ,IAAA,wBAAe,GAAE;qCAUqB,+DAA6B;QAC5B,iEAA8B;GAVzD,6BAA6B,CAmDzC"}
@@ -0,0 +1,4 @@
1
+ export declare const TRANSACTIONAL_METADATA: unique symbol;
2
+ export declare const NO_TRANSACTIONAL_METADATA: unique symbol;
3
+ export declare const TRANSACTION_ADAPTERS: unique symbol;
4
+ export declare const DEFAULT_TRANSACTION_ADAPTER = "default";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TRANSACTION_ADAPTER = exports.TRANSACTION_ADAPTERS = exports.NO_TRANSACTIONAL_METADATA = exports.TRANSACTIONAL_METADATA = void 0;
4
+ exports.TRANSACTIONAL_METADATA = Symbol.for("metadata:transactional");
5
+ exports.NO_TRANSACTIONAL_METADATA = Symbol.for("metadata:no_transactional");
6
+ exports.TRANSACTION_ADAPTERS = Symbol.for("token:TRANSACTION_ADAPTERS");
7
+ exports.DEFAULT_TRANSACTION_ADAPTER = "default";
8
+ //# sourceMappingURL=transactional.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.constant.js","sourceRoot":"","sources":["../src/transactional.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC9D,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEpE,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAIhE,QAAA,2BAA2B,GAAG,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ import { ConfigurableModule } from "@nestplatform/common";
3
+ import { TransactionalModuleConfigAsync, TransactionalModuleConfigSync } from "./types";
4
+ export declare class TransactionalModule extends ConfigurableModule {
5
+ static register(config: TransactionalModuleConfigSync): DynamicModule;
6
+ static registerAsync(config: TransactionalModuleConfigAsync): DynamicModule;
7
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var TransactionalModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TransactionalModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const common_2 = require("@nestplatform/common");
13
+ const providers_1 = require("./providers");
14
+ const transactional_metadata_explorer_1 = require("./transactional-metadata.explorer");
15
+ const transactional_feature_decoration_1 = require("./transactional-feature.decoration");
16
+ const transactional_metadata_accessor_1 = require("./transactional-metadata.accessor");
17
+ let TransactionalModule = TransactionalModule_1 = class TransactionalModule extends common_2.ConfigurableModule {
18
+ static register(config) {
19
+ return super.config(config, {
20
+ global: true,
21
+ module: TransactionalModule_1,
22
+ imports: [common_2.FeatureExplorerModule],
23
+ providers: [(0, providers_1.TransactionAdapterProvider)(config), transactional_metadata_explorer_1.TransactionalMetadataExplorer, transactional_metadata_accessor_1.TransactionalMetadataAccessor, transactional_feature_decoration_1.TransactionalFeatureDecoration],
24
+ });
25
+ }
26
+ static registerAsync(config) {
27
+ return super.config(config, {
28
+ global: true,
29
+ module: TransactionalModule_1,
30
+ imports: [common_2.FeatureExplorerModule],
31
+ providers: [
32
+ (0, providers_1.TransactionAdapterAsyncProvider)(config),
33
+ transactional_metadata_explorer_1.TransactionalMetadataExplorer,
34
+ transactional_metadata_accessor_1.TransactionalMetadataAccessor,
35
+ transactional_feature_decoration_1.TransactionalFeatureDecoration,
36
+ ],
37
+ });
38
+ }
39
+ };
40
+ exports.TransactionalModule = TransactionalModule;
41
+ exports.TransactionalModule = TransactionalModule = TransactionalModule_1 = __decorate([
42
+ (0, common_1.Module)({})
43
+ ], TransactionalModule);
44
+ //# sourceMappingURL=transactional.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.module.js","sourceRoot":"","sources":["../src/transactional.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAEvD,iDAAiF;AAEjF,2CAA0F;AAE1F,uFAAkF;AAClF,yFAAoF;AACpF,uFAAkF;AAG3E,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,2BAAkB;IACzD,MAAM,CAAC,QAAQ,CAAC,MAAqC;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,8BAAqB,CAAC;YAChC,SAAS,EAAE,CAAC,IAAA,sCAA0B,EAAC,MAAM,CAAC,EAAE,+DAA6B,EAAE,+DAA6B,EAAE,iEAA8B,CAAC;SAC9I,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,MAAsC;QACzD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,8BAAqB,CAAC;YAChC,SAAS,EAAE;gBACT,IAAA,2CAA+B,EAAC,MAAM,CAAC;gBACvC,+DAA6B;gBAC7B,+DAA6B;gBAC7B,iEAA8B;aAC/B;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CAuB/B"}