@zudojs/transactions 0.0.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 (108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/adapter/adapter.core.d.ts +15 -0
  5. package/dist/adapter/adapter.core.d.ts.map +1 -0
  6. package/dist/adapter/adapter.core.js +47 -0
  7. package/dist/adapter/adapter.core.js.map +1 -0
  8. package/dist/adapter/index.d.ts +7 -0
  9. package/dist/adapter/index.d.ts.map +1 -0
  10. package/dist/adapter/index.js +7 -0
  11. package/dist/adapter/index.js.map +1 -0
  12. package/dist/context/context.core.d.ts +19 -0
  13. package/dist/context/context.core.d.ts.map +1 -0
  14. package/dist/context/context.core.js +38 -0
  15. package/dist/context/context.core.js.map +1 -0
  16. package/dist/context/index.d.ts +7 -0
  17. package/dist/context/index.d.ts.map +1 -0
  18. package/dist/context/index.js +7 -0
  19. package/dist/context/index.js.map +1 -0
  20. package/dist/hooks/hooks.core.d.ts +11 -0
  21. package/dist/hooks/hooks.core.d.ts.map +1 -0
  22. package/dist/hooks/hooks.core.js +78 -0
  23. package/dist/hooks/hooks.core.js.map +1 -0
  24. package/dist/hooks/index.d.ts +7 -0
  25. package/dist/hooks/index.d.ts.map +1 -0
  26. package/dist/hooks/index.js +7 -0
  27. package/dist/hooks/index.js.map +1 -0
  28. package/dist/index.d.ts +20 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +20 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/manager/index.d.ts +7 -0
  33. package/dist/manager/index.d.ts.map +1 -0
  34. package/dist/manager/index.js +7 -0
  35. package/dist/manager/index.js.map +1 -0
  36. package/dist/manager/manager.commit.d.ts +17 -0
  37. package/dist/manager/manager.commit.d.ts.map +1 -0
  38. package/dist/manager/manager.commit.js +66 -0
  39. package/dist/manager/manager.commit.js.map +1 -0
  40. package/dist/manager/manager.core.d.ts +26 -0
  41. package/dist/manager/manager.core.d.ts.map +1 -0
  42. package/dist/manager/manager.core.js +92 -0
  43. package/dist/manager/manager.core.js.map +1 -0
  44. package/dist/manager/manager.propagation.d.ts +15 -0
  45. package/dist/manager/manager.propagation.d.ts.map +1 -0
  46. package/dist/manager/manager.propagation.js +56 -0
  47. package/dist/manager/manager.propagation.js.map +1 -0
  48. package/dist/registry/index.d.ts +7 -0
  49. package/dist/registry/index.d.ts.map +1 -0
  50. package/dist/registry/index.js +7 -0
  51. package/dist/registry/index.js.map +1 -0
  52. package/dist/registry/registry.core.d.ts +11 -0
  53. package/dist/registry/registry.core.d.ts.map +1 -0
  54. package/dist/registry/registry.core.js +26 -0
  55. package/dist/registry/registry.core.js.map +1 -0
  56. package/dist/transaction/index.d.ts +7 -0
  57. package/dist/transaction/index.d.ts.map +1 -0
  58. package/dist/transaction/index.js +7 -0
  59. package/dist/transaction/index.js.map +1 -0
  60. package/dist/transaction/transaction.core.d.ts +9 -0
  61. package/dist/transaction/transaction.core.d.ts.map +1 -0
  62. package/dist/transaction/transaction.core.js +139 -0
  63. package/dist/transaction/transaction.core.js.map +1 -0
  64. package/dist/transaction/transactionStateMachine.d.ts +9 -0
  65. package/dist/transaction/transactionStateMachine.d.ts.map +1 -0
  66. package/dist/transaction/transactionStateMachine.js +27 -0
  67. package/dist/transaction/transactionStateMachine.js.map +1 -0
  68. package/dist/transactionErrors/index.d.ts +6 -0
  69. package/dist/transactionErrors/index.d.ts.map +1 -0
  70. package/dist/transactionErrors/index.js +6 -0
  71. package/dist/transactionErrors/index.js.map +1 -0
  72. package/dist/transactionErrors/transactionError.base.d.ts +15 -0
  73. package/dist/transactionErrors/transactionError.base.d.ts.map +1 -0
  74. package/dist/transactionErrors/transactionError.base.js +19 -0
  75. package/dist/transactionErrors/transactionError.base.js.map +1 -0
  76. package/dist/transactionErrors/transactionError.types.d.ts +74 -0
  77. package/dist/transactionErrors/transactionError.types.d.ts.map +1 -0
  78. package/dist/transactionErrors/transactionError.types.js +129 -0
  79. package/dist/transactionErrors/transactionError.types.js.map +1 -0
  80. package/dist/transactionTypes/index.d.ts +10 -0
  81. package/dist/transactionTypes/index.d.ts.map +1 -0
  82. package/dist/transactionTypes/index.js +10 -0
  83. package/dist/transactionTypes/index.js.map +1 -0
  84. package/dist/transactionTypes/transaction.interface.d.ts +62 -0
  85. package/dist/transactionTypes/transaction.interface.d.ts.map +1 -0
  86. package/dist/transactionTypes/transaction.interface.js +7 -0
  87. package/dist/transactionTypes/transaction.interface.js.map +1 -0
  88. package/dist/transactionTypes/transactionAdapter.d.ts +56 -0
  89. package/dist/transactionTypes/transactionAdapter.d.ts.map +1 -0
  90. package/dist/transactionTypes/transactionAdapter.js +7 -0
  91. package/dist/transactionTypes/transactionAdapter.js.map +1 -0
  92. package/dist/transactionTypes/transactionHooks.d.ts +63 -0
  93. package/dist/transactionTypes/transactionHooks.d.ts.map +1 -0
  94. package/dist/transactionTypes/transactionHooks.js +17 -0
  95. package/dist/transactionTypes/transactionHooks.js.map +1 -0
  96. package/dist/transactionTypes/transactionState.d.ts +12 -0
  97. package/dist/transactionTypes/transactionState.d.ts.map +1 -0
  98. package/dist/transactionTypes/transactionState.js +7 -0
  99. package/dist/transactionTypes/transactionState.js.map +1 -0
  100. package/dist/utils/index.d.ts +7 -0
  101. package/dist/utils/index.d.ts.map +1 -0
  102. package/dist/utils/index.js +7 -0
  103. package/dist/utils/index.js.map +1 -0
  104. package/dist/utils/utils.helper.d.ts +20 -0
  105. package/dist/utils/utils.helper.d.ts.map +1 -0
  106. package/dist/utils/utils.helper.js +33 -0
  107. package/dist/utils/utils.helper.js.map +1 -0
  108. package/package.json +51 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * AsyncLocalStorage-based transaction context for automatic propagation.
3
+ *
4
+ * @module context/context
5
+ */
6
+ import { AsyncLocalStorage } from "node:async_hooks";
7
+ /**
8
+ * Create a transaction context backed by AsyncLocalStorage.
9
+ */
10
+ export function createTransactionContext() {
11
+ const storage = new AsyncLocalStorage();
12
+ return {
13
+ get() {
14
+ return storage.getStore();
15
+ },
16
+ async run(transaction, callback) {
17
+ return storage.run(transaction, callback);
18
+ },
19
+ };
20
+ }
21
+ /** Default context instance. */
22
+ let defaultContext;
23
+ /**
24
+ * Get or create the default transaction context.
25
+ */
26
+ export function getDefaultContext() {
27
+ if (!defaultContext) {
28
+ defaultContext = createTransactionContext();
29
+ }
30
+ return defaultContext;
31
+ }
32
+ /**
33
+ * Reset the default context (useful for testing).
34
+ */
35
+ export function resetDefaultContext() {
36
+ defaultContext = undefined;
37
+ }
38
+ //# sourceMappingURL=context.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.core.js","sourceRoot":"","sources":["../../src/context/context.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAe,CAAC;IAErD,OAAO;QACL,GAAG;YACD,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,GAAG,CACP,WAAwB,EACxB,QAA0B;YAE1B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gCAAgC;AAChC,IAAI,cAA8C,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * AsyncLocalStorage-based transaction context.
3
+ *
4
+ * @module context
5
+ */
6
+ export { createTransactionContext, getDefaultContext, resetDefaultContext, } from "./context.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * AsyncLocalStorage-based transaction context.
3
+ *
4
+ * @module context
5
+ */
6
+ export { createTransactionContext, getDefaultContext, resetDefaultContext, } from "./context.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Hook composition — merge multiple hook sets.
3
+ *
4
+ * @module hooks/hooks
5
+ */
6
+ import type { TransactionHooks } from "../transactionTypes/transactionHooks.js";
7
+ /**
8
+ * Merge multiple hook sets into one. Later hooks run after earlier ones.
9
+ */
10
+ export declare function mergeHooks(...hookSets: readonly TransactionHooks[]): TransactionHooks;
11
+ //# sourceMappingURL=hooks.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.core.d.ts","sourceRoot":"","sources":["../../src/hooks/hooks.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,yCAAyC,CAAC;AAEjD;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACvC,gBAAgB,CAsElB"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Hook composition — merge multiple hook sets.
3
+ *
4
+ * @module hooks/hooks
5
+ */
6
+ /**
7
+ * Merge multiple hook sets into one. Later hooks run after earlier ones.
8
+ */
9
+ export function mergeHooks(...hookSets) {
10
+ const merged = {};
11
+ for (const hooks of hookSets) {
12
+ if (hooks.beforeBegin) {
13
+ const existing = merged.beforeBegin;
14
+ merged.beforeBegin = existing
15
+ ? async (ctx) => {
16
+ await existing(ctx);
17
+ await hooks.beforeBegin(ctx);
18
+ }
19
+ : hooks.beforeBegin;
20
+ }
21
+ if (hooks.afterBegin) {
22
+ const existing = merged.afterBegin;
23
+ merged.afterBegin = existing
24
+ ? async (ctx) => {
25
+ await existing(ctx);
26
+ await hooks.afterBegin(ctx);
27
+ }
28
+ : hooks.afterBegin;
29
+ }
30
+ if (hooks.beforeCommit) {
31
+ const existing = merged.beforeCommit;
32
+ merged.beforeCommit = existing
33
+ ? async (ctx) => {
34
+ await existing(ctx);
35
+ await hooks.beforeCommit(ctx);
36
+ }
37
+ : hooks.beforeCommit;
38
+ }
39
+ if (hooks.afterCommit) {
40
+ const existing = merged.afterCommit;
41
+ merged.afterCommit = existing
42
+ ? async (ctx) => {
43
+ await existing(ctx);
44
+ await hooks.afterCommit(ctx);
45
+ }
46
+ : hooks.afterCommit;
47
+ }
48
+ if (hooks.beforeRollback) {
49
+ const existing = merged.beforeRollback;
50
+ merged.beforeRollback = existing
51
+ ? async (ctx) => {
52
+ await existing(ctx);
53
+ await hooks.beforeRollback(ctx);
54
+ }
55
+ : hooks.beforeRollback;
56
+ }
57
+ if (hooks.afterRollback) {
58
+ const existing = merged.afterRollback;
59
+ merged.afterRollback = existing
60
+ ? async (ctx) => {
61
+ await existing(ctx);
62
+ await hooks.afterRollback(ctx);
63
+ }
64
+ : hooks.afterRollback;
65
+ }
66
+ if (hooks.onError) {
67
+ const existing = merged.onError;
68
+ merged.onError = existing
69
+ ? async (ctx) => {
70
+ await existing(ctx);
71
+ await hooks.onError(ctx);
72
+ }
73
+ : hooks.onError;
74
+ }
75
+ }
76
+ return merged;
77
+ }
78
+ //# sourceMappingURL=hooks.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.core.js","sourceRoot":"","sources":["../../src/hooks/hooks.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook composition for transaction lifecycle events.
3
+ *
4
+ * @module hooks
5
+ */
6
+ export { mergeHooks } from "./hooks.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook composition for transaction lifecycle events.
3
+ *
4
+ * @module hooks
5
+ */
6
+ export { mergeHooks } from "./hooks.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @zudojs/transactions
3
+ *
4
+ * Generic transaction abstraction for the Zudojs framework.
5
+ *
6
+ * Provides transaction lifecycle management, async context propagation,
7
+ * adapter contracts, savepoints, hooks, and rollback-only semantics.
8
+ *
9
+ * @module @zudojs/transactions
10
+ */
11
+ export * from "./transactionTypes/index.js";
12
+ export * from "./transactionErrors/index.js";
13
+ export * from "./transaction/index.js";
14
+ export * from "./context/index.js";
15
+ export * from "./adapter/index.js";
16
+ export * from "./hooks/index.js";
17
+ export * from "./registry/index.js";
18
+ export * from "./utils/index.js";
19
+ export { createTransactionManager, type TransactionManagerOptions, } from "./manager/index.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @zudojs/transactions
3
+ *
4
+ * Generic transaction abstraction for the Zudojs framework.
5
+ *
6
+ * Provides transaction lifecycle management, async context propagation,
7
+ * adapter contracts, savepoints, hooks, and rollback-only semantics.
8
+ *
9
+ * @module @zudojs/transactions
10
+ */
11
+ export * from "./transactionTypes/index.js";
12
+ export * from "./transactionErrors/index.js";
13
+ export * from "./transaction/index.js";
14
+ export * from "./context/index.js";
15
+ export * from "./adapter/index.js";
16
+ export * from "./hooks/index.js";
17
+ export * from "./registry/index.js";
18
+ export * from "./utils/index.js";
19
+ export { createTransactionManager, } from "./manager/index.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACL,wBAAwB,GAEzB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transaction manager — coordinates begin, commit, rollback, and context.
3
+ *
4
+ * @module manager
5
+ */
6
+ export { createTransactionManager, type TransactionManagerOptions, } from "./manager.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transaction manager — coordinates begin, commit, rollback, and context.
3
+ *
4
+ * @module manager
5
+ */
6
+ export { createTransactionManager, } from "./manager.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,wBAAwB,GAEzB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Transaction commit and rollback orchestration.
3
+ *
4
+ * @module manager/manager.commit
5
+ */
6
+ import type { Transaction } from "../transactionTypes/transaction.interface.js";
7
+ import type { TransactionAdapter } from "../transactionTypes/transactionAdapter.js";
8
+ import type { TransactionHooks } from "../transactionTypes/transactionHooks.js";
9
+ /**
10
+ * Commit a transaction with hooks and adapter coordination.
11
+ */
12
+ export declare function commitTransaction(transaction: Transaction, adapter: TransactionAdapter, hooks?: TransactionHooks): Promise<void>;
13
+ /**
14
+ * Rollback a transaction with hooks and adapter coordination.
15
+ */
16
+ export declare function rollbackTransaction(transaction: Transaction, adapter: TransactionAdapter, reason?: unknown, hooks?: TransactionHooks): Promise<void>;
17
+ //# sourceMappingURL=manager.commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.commit.d.ts","sourceRoot":"","sources":["../../src/manager/manager.commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAMhF;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,kBAAkB,EAC3B,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,CAAC,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Transaction commit and rollback orchestration.
3
+ *
4
+ * @module manager/manager.commit
5
+ */
6
+ import { TransactionCommitError, TransactionRollbackError, } from "../transactionErrors/transactionError.types.js";
7
+ /**
8
+ * Commit a transaction with hooks and adapter coordination.
9
+ */
10
+ export async function commitTransaction(transaction, adapter, hooks) {
11
+ if (transaction.state !== "active")
12
+ return;
13
+ if (hooks?.beforeCommit) {
14
+ await hooks.beforeCommit({ transaction });
15
+ }
16
+ const handle = transaction._getHandle();
17
+ try {
18
+ await adapter.commit(handle);
19
+ await transaction.commit();
20
+ }
21
+ catch (error) {
22
+ if (transaction.state === "committing") {
23
+ transaction._transition("failed");
24
+ }
25
+ if (hooks?.onError) {
26
+ await hooks.onError({ transaction, error });
27
+ }
28
+ throw new TransactionCommitError(transaction.id, error);
29
+ }
30
+ if (hooks?.afterCommit) {
31
+ await hooks.afterCommit({ transaction });
32
+ }
33
+ }
34
+ /**
35
+ * Rollback a transaction with hooks and adapter coordination.
36
+ */
37
+ export async function rollbackTransaction(transaction, adapter, reason, hooks) {
38
+ if (transaction.state === "committed" ||
39
+ transaction.state === "rolled_back" ||
40
+ transaction.state === "failed") {
41
+ return;
42
+ }
43
+ if (hooks?.beforeRollback) {
44
+ await hooks.beforeRollback({ transaction });
45
+ }
46
+ const handle = transaction._getHandle();
47
+ try {
48
+ if (handle !== undefined) {
49
+ await adapter.rollback(handle, reason);
50
+ }
51
+ await transaction.rollback(reason);
52
+ }
53
+ catch (error) {
54
+ if (hooks?.onError) {
55
+ await hooks.onError({ transaction, error });
56
+ }
57
+ throw new TransactionRollbackError(transaction.id, {
58
+ cause: error,
59
+ originalError: reason,
60
+ });
61
+ }
62
+ if (hooks?.afterRollback) {
63
+ await hooks.afterRollback({ transaction });
64
+ }
65
+ }
66
+ //# sourceMappingURL=manager.commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.commit.js","sourceRoot":"","sources":["../../src/manager/manager.commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,gDAAgD,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAwB,EACxB,OAA2B,EAC3B,KAAwB;IAExB,IAAI,WAAW,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO;IAE3C,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GACV,WACD,CAAC,UAAU,EAAE,CAAC;IACf,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,WAAW,CAAC,KAAgB,KAAK,YAAY,EAAE,CAAC;YAEjD,WACD,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAwB,EACxB,OAA2B,EAC3B,MAAgB,EAChB,KAAwB;IAExB,IACE,WAAW,CAAC,KAAK,KAAK,WAAW;QACjC,WAAW,CAAC,KAAK,KAAK,aAAa;QACnC,WAAW,CAAC,KAAK,KAAK,QAAQ,EAC9B,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,EAAE,cAAc,EAAE,CAAC;QAC1B,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GACV,WACD,CAAC,UAAU,EAAE,CAAC;IACf,IAAI,CAAC;QACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,wBAAwB,CAAC,WAAW,CAAC,EAAE,EAAE;YACjD,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,EAAE,aAAa,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Transaction manager — coordinates begin, commit, rollback, and context.
3
+ *
4
+ * @module manager/manager
5
+ */
6
+ import type { Transaction, TransactionOptions } from "../transactionTypes/transaction.interface.js";
7
+ import type { TransactionAdapter } from "../transactionTypes/transactionAdapter.js";
8
+ import type { TransactionContext } from "../transactionTypes/transactionAdapter.js";
9
+ import type { TransactionHooks } from "../transactionTypes/transactionHooks.js";
10
+ /** Options for creating a transaction manager. */
11
+ export interface TransactionManagerOptions {
12
+ readonly adapter: TransactionAdapter;
13
+ readonly context?: TransactionContext;
14
+ readonly hooks?: TransactionHooks;
15
+ }
16
+ /**
17
+ * Create a transaction manager.
18
+ */
19
+ export declare function createTransactionManager(options: TransactionManagerOptions): {
20
+ begin(opts?: TransactionOptions): Promise<Transaction>;
21
+ run<T>(callback: (transaction: Transaction) => Promise<T>, opts?: TransactionOptions): Promise<T>;
22
+ commit(transaction: Transaction): Promise<void>;
23
+ rollback(transaction: Transaction, reason?: unknown): Promise<void>;
24
+ getCurrent(): Transaction | undefined;
25
+ };
26
+ //# sourceMappingURL=manager.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.core.d.ts","sourceRoot":"","sources":["../../src/manager/manager.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAShF,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB;IAWjE,KAAK,QAAQ,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmDtD,GAAG,CAAC,CAAC,YACC,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,SAC3C,kBAAkB,GACxB,OAAO,CAAC,CAAC,CAAC;IA8BP,MAAM,cAAc,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,QAAQ,cAAc,WAAW,WAAW,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,UAAU,IAAI,WAAW,GAAG,SAAS;EAIxC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Transaction manager — coordinates begin, commit, rollback, and context.
3
+ *
4
+ * @module manager/manager
5
+ */
6
+ import { createTransaction } from "../transaction/transaction.core.js";
7
+ import { TransactionAdapterError, TransactionRollbackError, } from "../transactionErrors/transactionError.types.js";
8
+ import { handlePropagation } from "./manager.propagation.js";
9
+ import { commitTransaction, rollbackTransaction } from "./manager.commit.js";
10
+ /**
11
+ * Create a transaction manager.
12
+ */
13
+ export function createTransactionManager(options) {
14
+ const { adapter, hooks } = options;
15
+ const resolveContext = () => {
16
+ if (options.context)
17
+ return options.context;
18
+ const mod = require("../context/context.core.js");
19
+ return mod.getDefaultContext();
20
+ };
21
+ return {
22
+ async begin(opts) {
23
+ const context = resolveContext();
24
+ const current = context.get();
25
+ if (current) {
26
+ return handlePropagation(current, opts?.propagation ?? "required", opts, adapter, context, hooks);
27
+ }
28
+ const transaction = createTransaction(opts);
29
+ if (hooks?.beforeBegin)
30
+ await hooks.beforeBegin({ transaction });
31
+ try {
32
+ const handle = await adapter.begin(opts);
33
+ transaction._setHandle(handle);
34
+ transaction._transition("active");
35
+ }
36
+ catch (error) {
37
+ transaction._transition("failed");
38
+ throw new TransactionAdapterError("Failed to begin transaction", error);
39
+ }
40
+ if (hooks?.afterBegin)
41
+ await hooks.afterBegin({ transaction });
42
+ if (opts?.timeout && opts.timeout > 0) {
43
+ const timer = setTimeout(() => {
44
+ transaction._markTimedOut();
45
+ transaction.markRollbackOnly("timeout");
46
+ }, opts.timeout);
47
+ const clearTimer = () => clearTimeout(timer);
48
+ transaction.afterCommit(async () => clearTimer());
49
+ transaction.afterRollback(async () => clearTimer());
50
+ }
51
+ return transaction;
52
+ },
53
+ async run(callback, opts) {
54
+ const context = resolveContext();
55
+ const transaction = await this.begin(opts);
56
+ return context.run(transaction, async () => {
57
+ try {
58
+ const result = await callback(transaction);
59
+ if (transaction.state === "active") {
60
+ await this.commit(transaction);
61
+ }
62
+ return result;
63
+ }
64
+ catch (error) {
65
+ if (transaction.state === "active" ||
66
+ transaction.state === "committing") {
67
+ try {
68
+ await this.rollback(transaction, error);
69
+ }
70
+ catch (rollbackError) {
71
+ throw new TransactionRollbackError(transaction.id, {
72
+ cause: rollbackError,
73
+ originalError: error,
74
+ });
75
+ }
76
+ }
77
+ throw error;
78
+ }
79
+ });
80
+ },
81
+ async commit(transaction) {
82
+ return commitTransaction(transaction, adapter, hooks);
83
+ },
84
+ async rollback(transaction, reason) {
85
+ return rollbackTransaction(transaction, adapter, reason, hooks);
86
+ },
87
+ getCurrent() {
88
+ return resolveContext().get();
89
+ },
90
+ };
91
+ }
92
+ //# sourceMappingURL=manager.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.core.js","sourceRoot":"","sources":["../../src/manager/manager.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Transaction propagation strategies.
3
+ *
4
+ * @module manager/manager.propagation
5
+ */
6
+ import type { Transaction } from "../transactionTypes/transaction.interface.js";
7
+ import type { TransactionOptions } from "../transactionTypes/transaction.interface.js";
8
+ import type { TransactionAdapter } from "../transactionTypes/transactionAdapter.js";
9
+ import type { TransactionContext } from "../transactionTypes/transactionAdapter.js";
10
+ import type { TransactionHooks } from "../transactionTypes/transactionHooks.js";
11
+ /**
12
+ * Handle transaction propagation when a transaction already exists.
13
+ */
14
+ export declare function handlePropagation(current: Transaction, propagation: string, opts: TransactionOptions | undefined, adapter: TransactionAdapter, context: TransactionContext, hooks?: TransactionHooks): Promise<Transaction>;
15
+ //# sourceMappingURL=manager.propagation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.propagation.d.ts","sourceRoot":"","sources":["../../src/manager/manager.propagation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAIhF;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,EAC3B,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Transaction propagation strategies.
3
+ *
4
+ * @module manager/manager.propagation
5
+ */
6
+ import { createTransaction } from "../transaction/transaction.core.js";
7
+ import { TransactionPropagationError } from "../transactionErrors/transactionError.types.js";
8
+ /**
9
+ * Handle transaction propagation when a transaction already exists.
10
+ */
11
+ export async function handlePropagation(current, propagation, opts, adapter, context, hooks) {
12
+ switch (propagation) {
13
+ case "required":
14
+ return current;
15
+ case "requires_new": {
16
+ const newTxn = createTransaction(opts);
17
+ if (hooks?.beforeBegin)
18
+ await hooks.beforeBegin({ transaction: newTxn });
19
+ const handle = await adapter.begin(opts);
20
+ newTxn._setHandle(handle);
21
+ if (hooks?.afterBegin)
22
+ await hooks.afterBegin({ transaction: newTxn });
23
+ return newTxn;
24
+ }
25
+ case "supports":
26
+ return current;
27
+ case "not_supported":
28
+ return current;
29
+ case "mandatory":
30
+ return current;
31
+ case "never":
32
+ throw new TransactionPropagationError("Transaction exists but propagation is 'never'");
33
+ case "nested":
34
+ return createNestedTransaction(current, opts, adapter);
35
+ default:
36
+ throw new TransactionPropagationError(`Unknown propagation: ${propagation}`);
37
+ }
38
+ }
39
+ /**
40
+ * Create a nested transaction using savepoints.
41
+ */
42
+ async function createNestedTransaction(parent, opts, adapter) {
43
+ if (!adapter.capabilities.savepoints || !adapter.createSavepoint) {
44
+ throw new TransactionPropagationError("Nested transactions require savepoint support");
45
+ }
46
+ const child = createTransaction(opts, parent.id);
47
+ const savepointName = `sp_${child.id}`;
48
+ const handle = parent._getHandle();
49
+ await adapter.createSavepoint(handle, savepointName);
50
+ child._setHandle({
51
+ parent: handle,
52
+ savepoint: savepointName,
53
+ });
54
+ return child;
55
+ }
56
+ //# sourceMappingURL=manager.propagation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.propagation.js","sourceRoot":"","sources":["../../src/manager/manager.propagation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAoB,EACpB,WAAmB,EACnB,IAAoC,EACpC,OAA2B,EAC3B,OAA2B,EAC3B,KAAwB;IAExB,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QAEjB,KAAK,cAAc,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,WAAW;gBAAE,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,MAA0D,CAAC,UAAU,CACpE,MAAM,CACP,CAAC;YACF,IAAI,KAAK,EAAE,UAAU;gBAAE,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QAEjB,KAAK,eAAe;YAClB,OAAO,OAAO,CAAC;QAEjB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QAEjB,KAAK,OAAO;YACV,MAAM,IAAI,2BAA2B,CACnC,+CAA+C,CAChD,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzD;YACE,MAAM,IAAI,2BAA2B,CACnC,wBAAwB,WAAW,EAAE,CACtC,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAAmB,EACnB,IAAoC,EACpC,OAA2B;IAE3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,IAAI,2BAA2B,CACnC,+CAA+C,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC;IAEvC,MAAM,MAAM,GACV,MACD,CAAC,UAAU,EAAE,CAAC;IACf,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpD,KAAyD,CAAC,UAAU,CAAC;QACpE,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transaction registry for tracking active transactions.
3
+ *
4
+ * @module registry
5
+ */
6
+ export { createTransactionRegistry } from "./registry.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transaction registry for tracking active transactions.
3
+ *
4
+ * @module registry
5
+ */
6
+ export { createTransactionRegistry } from "./registry.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Transaction registry — tracks active transactions.
3
+ *
4
+ * @module registry/registry
5
+ */
6
+ import type { TransactionRegistry } from "../transactionTypes/transactionHooks.js";
7
+ /**
8
+ * Create an in-memory transaction registry.
9
+ */
10
+ export declare function createTransactionRegistry(): TransactionRegistry;
11
+ //# sourceMappingURL=registry.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.core.d.ts","sourceRoot":"","sources":["../../src/registry/registry.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAEnF;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAoB/D"}