@decaf-ts/transactional-decorators 0.3.4 → 0.3.6
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.
- package/README.md +37 -188
- package/dist/transactional-decorators.cjs +1 -1
- package/dist/transactional-decorators.cjs.map +1 -1
- package/dist/transactional-decorators.js +1 -1
- package/dist/transactional-decorators.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,6 +6,14 @@ A comprehensive TypeScript library providing transaction management capabilities
|
|
|
6
6
|
|
|
7
7
|
> Release docs refreshed on 2025-11-26. See [workdocs/reports/RELEASE_NOTES.md](./workdocs/reports/RELEASE_NOTES.md) for ticket summaries.
|
|
8
8
|
|
|
9
|
+
### Core Concepts
|
|
10
|
+
|
|
11
|
+
* **`@transactional`**: A method decorator that wraps a method in a transaction, ensuring that it is executed atomically.
|
|
12
|
+
* **`Transaction` Class**: The core class for managing transaction lifecycle, including creation, execution, and cleanup.
|
|
13
|
+
* **Locks**: The library provides different lock implementations to control concurrency.
|
|
14
|
+
* **`SynchronousLock`**: A simple lock that allows only one transaction to execute at a time.
|
|
15
|
+
* **`MultiLock`**: A more advanced lock that allows multiple transactions to execute concurrently, with a configurable limit.
|
|
16
|
+
|
|
9
17
|
|
|
10
18
|

|
|
11
19
|

|
|
@@ -60,226 +68,67 @@ The Transactional Decorators library is a standalone module that provides a robu
|
|
|
60
68
|
This library is ideal for applications that need to ensure data consistency and handle concurrent operations safely, such as database applications, financial systems, or any application where atomic operations are important.
|
|
61
69
|
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
- [Initial Setup](./tutorials/For%20Developers.md#_initial-setup_)
|
|
66
|
-
- [Installation](./tutorials/For%20Developers.md#installation)
|
|
71
|
+
# How to Use
|
|
67
72
|
|
|
68
|
-
|
|
73
|
+
This guide provides examples of how to use the main features of the `@decaf-ts/transactional-decorators` library.
|
|
69
74
|
|
|
70
|
-
|
|
75
|
+
## Transactional Decorator
|
|
71
76
|
|
|
72
|
-
|
|
77
|
+
The `@transactional` decorator ensures that a method is executed within a transaction.
|
|
73
78
|
|
|
74
79
|
```typescript
|
|
75
80
|
import { transactional } from '@decaf-ts/transactional-decorators';
|
|
76
81
|
|
|
77
|
-
class
|
|
82
|
+
class MyService {
|
|
78
83
|
@transactional()
|
|
79
|
-
async
|
|
80
|
-
// This method will be executed within a transaction
|
|
81
|
-
// If an error occurs, the transaction will be released with the error
|
|
82
|
-
const user = await this.userRepository.save(userData);
|
|
83
|
-
return user;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
@transactional(['custom', 'metadata'])
|
|
87
|
-
async updateUser(userId: string, userData: any): Promise<any> {
|
|
88
|
-
// You can pass custom metadata to the transaction
|
|
89
|
-
const user = await this.userRepository.findById(userId);
|
|
90
|
-
Object.assign(user, userData);
|
|
91
|
-
return await this.userRepository.save(user);
|
|
84
|
+
async myTransactionalMethod() {
|
|
85
|
+
// This method will be executed within a transaction.
|
|
92
86
|
}
|
|
93
87
|
}
|
|
94
|
-
|
|
95
|
-
// Using the transactional method
|
|
96
|
-
const userService = new UserService();
|
|
97
|
-
const newUser = await userService.createUser({ name: 'John Doe' });
|
|
98
88
|
```
|
|
99
89
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
For more control over the transaction lifecycle, you can use the Transaction class directly.
|
|
103
|
-
|
|
104
|
-
**Description**: Create and manage transactions manually for complex scenarios or when you need fine-grained control.
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
import { Transaction } from '@decaf-ts/transactional-decorators';
|
|
108
|
-
|
|
109
|
-
// Creating a transaction
|
|
110
|
-
const transaction = new Transaction(
|
|
111
|
-
'UserService', // Source
|
|
112
|
-
'createUser', // Method name
|
|
113
|
-
async () => {
|
|
114
|
-
// Transaction logic here
|
|
115
|
-
const user = await userRepository.save({ name: 'John Doe' });
|
|
116
|
-
return user;
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
// Submitting the transaction for execution
|
|
121
|
-
await Transaction.submit(transaction);
|
|
122
|
-
|
|
123
|
-
// Using the Transaction.push method for callback-style APIs
|
|
124
|
-
Transaction.push(
|
|
125
|
-
userService, // The object instance
|
|
126
|
-
userService.createUserWithCallback, // The method to call
|
|
127
|
-
{ name: 'John Doe' }, // Arguments
|
|
128
|
-
(err, user) => {
|
|
129
|
-
if (err) {
|
|
130
|
-
console.error('Error creating user:', err);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
console.log('User created:', user);
|
|
134
|
-
}
|
|
135
|
-
);
|
|
136
|
-
```
|
|
90
|
+
## Locks
|
|
137
91
|
|
|
138
|
-
|
|
92
|
+
The library provides different lock implementations to control concurrency.
|
|
139
93
|
|
|
140
|
-
|
|
94
|
+
### SynchronousLock
|
|
141
95
|
|
|
142
|
-
|
|
96
|
+
The `SynchronousLock` allows only one transaction to execute at a time. This is the default lock.
|
|
143
97
|
|
|
144
98
|
```typescript
|
|
145
|
-
import {
|
|
146
|
-
|
|
147
|
-
class BaseRepository {
|
|
148
|
-
@transactional()
|
|
149
|
-
async save(entity: any): Promise<any> {
|
|
150
|
-
// Base save implementation
|
|
151
|
-
return entity;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
99
|
+
import { Transaction, SynchronousLock } from '@decaf-ts/transactional-decorators';
|
|
154
100
|
|
|
155
|
-
|
|
156
|
-
@transactional()
|
|
157
|
-
async save(user: any): Promise<any> {
|
|
158
|
-
// Pre-processing
|
|
159
|
-
user.updatedAt = new Date();
|
|
160
|
-
|
|
161
|
-
// Call the super method with transaction context
|
|
162
|
-
const result = await transactionalSuperCall(super.save.bind(this), user);
|
|
163
|
-
|
|
164
|
-
// Post-processing
|
|
165
|
-
console.log('User saved:', result);
|
|
166
|
-
return result;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
101
|
+
Transaction.setLock(new SynchronousLock());
|
|
169
102
|
```
|
|
170
103
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
You can implement your own TransactionLock to customize how transactions are processed.
|
|
104
|
+
### MultiLock
|
|
174
105
|
|
|
175
|
-
|
|
106
|
+
The `MultiLock` allows multiple transactions to execute concurrently, with a configurable limit.
|
|
176
107
|
|
|
177
108
|
```typescript
|
|
178
|
-
import {
|
|
179
|
-
|
|
180
|
-
// Custom transaction lock that logs transactions
|
|
181
|
-
class LoggingTransactionLock implements TransactionLock {
|
|
182
|
-
currentTransaction?: Transaction;
|
|
183
|
-
private pendingTransactions: Transaction[] = [];
|
|
184
|
-
|
|
185
|
-
submit(transaction: Transaction): void {
|
|
186
|
-
console.log(`Submitting transaction: ${transaction.toString()}`);
|
|
187
|
-
|
|
188
|
-
if (this.currentTransaction) {
|
|
189
|
-
this.pendingTransactions.push(transaction);
|
|
190
|
-
console.log(`Transaction queued. Queue length: ${this.pendingTransactions.length}`);
|
|
191
|
-
} else {
|
|
192
|
-
this.currentTransaction = transaction;
|
|
193
|
-
console.log(`Executing transaction immediately`);
|
|
194
|
-
transaction.fire();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
async release(err?: Error): Promise<void> {
|
|
199
|
-
if (err) {
|
|
200
|
-
console.error(`Transaction error: ${err.message}`);
|
|
201
|
-
} else {
|
|
202
|
-
console.log(`Transaction completed successfully`);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
this.currentTransaction = undefined;
|
|
109
|
+
import { Transaction, MultiLock } from '@decaf-ts/transactional-decorators';
|
|
206
110
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
console.log(`Processing next transaction: ${nextTransaction.toString()}`);
|
|
210
|
-
this.currentTransaction = nextTransaction;
|
|
211
|
-
nextTransaction.fire();
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
return Promise.resolve();
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// Set the custom lock as the default
|
|
219
|
-
Transaction.setLock(new LoggingTransactionLock());
|
|
111
|
+
// Allow up to 5 transactions to execute concurrently
|
|
112
|
+
Transaction.setLock(new MultiLock(5));
|
|
220
113
|
```
|
|
221
114
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
The Lock class provides a basic locking mechanism that you can use independently of the transaction system.
|
|
115
|
+
## Manual Transaction Management
|
|
225
116
|
|
|
226
|
-
|
|
117
|
+
You can also manage transactions manually using the `Transaction` class.
|
|
227
118
|
|
|
228
119
|
```typescript
|
|
229
|
-
import {
|
|
230
|
-
|
|
231
|
-
// Create a lock for a shared resource
|
|
232
|
-
const resourceLock = new Lock();
|
|
233
|
-
|
|
234
|
-
// Execute a function with exclusive access to the resource
|
|
235
|
-
async function accessSharedResource() {
|
|
236
|
-
const result = await resourceLock.execute(async () => {
|
|
237
|
-
// This code will run with exclusive access to the resource
|
|
238
|
-
const data = await fetchDataFromDatabase();
|
|
239
|
-
const processedData = processData(data);
|
|
240
|
-
await saveDataToDatabase(processedData);
|
|
241
|
-
return processedData;
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
return result;
|
|
245
|
-
}
|
|
120
|
+
import { Transaction } from '@decaf-ts/transactional-decorators';
|
|
246
121
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
//
|
|
252
|
-
const data = await fetchDataFromDatabase();
|
|
253
|
-
const processedData = processData(data);
|
|
254
|
-
await saveDataToDatabase(processedData);
|
|
255
|
-
return processedData;
|
|
256
|
-
} finally {
|
|
257
|
-
// Always release the lock, even if an error occurs
|
|
258
|
-
resourceLock.release();
|
|
122
|
+
const myTransaction = new Transaction(
|
|
123
|
+
'MyManualTransaction',
|
|
124
|
+
'myAction',
|
|
125
|
+
async () => {
|
|
126
|
+
// Transaction logic here
|
|
259
127
|
}
|
|
260
|
-
|
|
261
|
-
```
|
|
262
|
-
|
|
128
|
+
);
|
|
263
129
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
- group similar functionality in folders (analog to namespaces but without any namespace declaration)
|
|
267
|
-
- one class per file;
|
|
268
|
-
- one interface per file (unless interface is just used as a type);
|
|
269
|
-
- group types as other interfaces in a types.ts file per folder;
|
|
270
|
-
- group constants or enums in a constants.ts file per folder;
|
|
271
|
-
- group decorators in a decorators.ts file per folder;
|
|
272
|
-
- always import from the specific file, never from a folder or index file (exceptions for dependencies on other packages);
|
|
273
|
-
- prefer the usage of established design patters where applicable:
|
|
274
|
-
- Singleton (can be an anti-pattern. use with care);
|
|
275
|
-
- factory;
|
|
276
|
-
- observer;
|
|
277
|
-
- strategy;
|
|
278
|
-
- builder;
|
|
279
|
-
- etc;
|
|
280
|
-
|
|
281
|
-
## Release Documentation Hooks
|
|
282
|
-
Stay aligned with the automated release pipeline by reviewing [Release Notes](./workdocs/reports/RELEASE_NOTES.md) and [Dependencies](./workdocs/reports/DEPENDENCIES.md) after trying these recipes (updated on 2025-11-26).
|
|
130
|
+
Transaction.submit(myTransaction);
|
|
131
|
+
```
|
|
283
132
|
|
|
284
133
|
|
|
285
134
|
### Related
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,i,s){"use strict";class a{constructor(){this.queue=[],this.locked=!1}async execute(t,...e){let i;await this.acquire();try{i=await Promise.resolve(t())}catch(t){throw this.release(),t}return this.release(),i}async acquire(...t){const e=this;return e.locked?new Promise((t=>e.queue.push(t))):(e.locked=!0,Promise.resolve())}release(...t){const e=this.queue.shift();e?void 0===globalThis.window?globalThis.process.nextTick(e):setTimeout(e,0):this.locked=!1}}const n={TRANSACTIONAL:"transactional"};e.Metadata.transactionals=t=>{const i=e.Metadata.get(t,n.TRANSACTIONAL);return i?Object.keys(i):[]},e.Metadata.isTransactional=t=>!!e.Metadata.get(t,n.TRANSACTIONAL);class o extends i.InternalError{constructor(t="Transaction timed out"){super(t,o.name,500)}}const r=new WeakMap;class c extends s.LoggedClass{static{this.debug=!1}static{this.globalTimeout=-1}static{this.metadataCache=new WeakMap}static{this.log=new Proxy(s.Logging.for(c),{get:(t,e,i)=>"log"!==e||c.debug?Reflect.get(t,e,i):(...t)=>{}})}get log(){return this._log||(this._log=c.log),this._log}static{this.contexts=new WeakMap}constructor(t,e,i,s){super(),this.initialFireDispatched=!1,this.released=!1,this.id=Date.now(),this.action=i,this.method=e,this.logs=[[this.id,t,e].join(" | ")],this.source=t,this.metadata=s,this.completion=new Promise(((t,e)=>{this.resolveCompletion=t,this.rejectCompletion=e}))}static async push(t,e,...i){const s=this.log.for(this.push),a=c.describeTarget(t),n=c.describeTarget(e),o=new c(a,n,(async()=>{const a=s.for(o.id.toString());try{a.verbose("Executing transaction method "+n),a.debug("With arguments: "+JSON.stringify(i));const s=await Promise.resolve(e.call(o.bindToTransaction(t),...i));return a.verbose(`Transaction method ${n} executed successfully`),a.debug("Result: "+JSON.stringify(s)),await o.release(),a.debug("lock released"),s}catch(t){throw await o.release(t),t}}));return s.debug(`Pushing transaction ${o.id} for method ${n} on issuer ${a}`),c.submit(o)}static async run(t,e,i){const s="function"!=typeof t,a=s?t:void 0,n=s?e:t;if("function"!=typeof n)throw Error("Transaction.run requires an async function");const o=s?i:e,r=Array.isArray(o)&&o.length?o:void 0,l=a?c.describeTarget(a):c.describeTarget(n),h=c.describeTarget(n);let d;return d=new c(l,h,(async()=>{let t;try{const t=a?d.bindToTransaction(a):void 0;return await n.call(t??d)}catch(e){throw t=e,e}finally{await d.release(t instanceof Error?t:void 0)}}),r),c.submit(d)}static setLock(t){this.lock=t}static getLock(){return this.lock||(this.lock=new l),this.lock}static submit(t){return c.getLock().submit(t)}static async release(t){return c.getLock().release(t)}async release(t){this.released||(this.released=!0,await c.release(t))}getMetadata(){return this.metadata?[...this.metadata]:void 0}static getTransactionalMetadata(t){let s=this.metadataCache.get(t);if(s)return s;const a=new Set(["__transactionProxy","__transactionTarget","string"==typeof i.DBKeys.ORIGINAL?i.DBKeys.ORIGINAL:"__originalObj"]),n=e.Metadata.transactionals(t)??[],o=(e.Metadata.properties(t)||[]).filter((t=>!a.has(t))),r=new Map;return o.forEach((i=>{const s=e.Metadata.type(t,i);r.set(i,!!s&&e.Metadata.isTransactional(s))})),s={methods:n,propertyKeys:o,propertyDesignTypes:r},this.metadataCache.set(t,s),s}bindTransaction(t){this.log.for(this.bindTransaction).verbose(`Binding the ${t.toString()} to ${this}`),this.logs.push(...t.logs),t.bindTransaction=this.bindToTransaction.bind(this),t.bindToTransaction=this.bindToTransaction.bind(this),this.action=t.action}bindToTransaction(t){const a=this.log.for(this.bindToTransaction);a.verbose(`Binding object ${s.getObjectName(t)} to transaction ${this.id}`);const n=c.getTransactionalMetadata(t.constructor),o=n.methods;if(!o.length)return t;const r=this,l=new Set(["__transactionProxy","__transactionTarget","string"==typeof i.DBKeys.ORIGINAL?i.DBKeys.ORIGINAL:"__originalObj"]),h=new Set(n.propertyKeys);Object.getOwnPropertyNames(t).forEach((t=>{l.has(t)||h.add(t)}));const d=Array.from(h).filter((i=>{if(n.propertyDesignTypes.get(i))return!0;const s=t[i];return!(!s||"object"!=typeof s&&"function"!=typeof s||!e.Metadata.isTransactional(s.constructor))}));a.debug(`found transaction methods: ${o.join(", ")} and properties: ${d.join(", ")}`);const u=new Proxy(t,{get:(t,e,i)=>o.includes(e)?new Proxy(t[e],{apply:(t,e,i)=>Reflect.apply(t,e,[r,...i])}):d.includes(e)?r.bindToTransaction(t[e]):Reflect.get(t,e,i)});return u[i.DBKeys.ORIGINAL]=t[i.DBKeys.ORIGINAL]||t,u.toString=()=>s.getObjectName(u[i.DBKeys.ORIGINAL])+" proxy for transaction "+this.id,u.__transactionProxy=!0,u.__transactionTarget=t.__transactionTarget||t,c.contexts.set(u,r),u}applyGlobalTimeout(t){if(0>=c.globalTimeout)return t;const e=c.globalTimeout,i=this.log.for(this.applyGlobalTimeout);return new Promise(((s,a)=>{let n=!1;const r=setTimeout((()=>{if(n)return;const t=new o(`Transaction ${this.toString()} exceeded timeout of ${e}ms`);i.warn(t.message),this.release(t).catch((t=>i.error(t))),a(t)}),e);t.then((t=>{n=!0,clearTimeout(r),s(t)})).catch((t=>{n=!0,clearTimeout(r),a(t)}))}))}fire(){if(!this.action)throw Error("Missing the method");const t=(async()=>this.action?await this.action():void 0)(),e=c.globalTimeout>0?this.applyGlobalTimeout(t):t;return this.initialFireDispatched||(this.initialFireDispatched=!0,e.then((t=>(this.resolveCompletion?.(t),t))).catch((t=>{throw this.rejectCompletion?.(t),t}))),e}toString(t=!0,e=!1){return`${t?`[${this.id}]`:""}[Transaction][${this.source}.${this.method}${e?"]\nTransaction Log:\n"+this.logs.join("\n"):"]"}`}static contextTransaction(t){if(t&&t.__transactionProxy)return this.contexts.get(t)}wait(){return this.completion}static describeTarget(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)return s.getObjectName(t);const e=t;let i=r.get(e);return i||(i=s.getObjectName(t),r.set(e,i)),i}}class l extends s.LoggedClass{get log(){return this._log||(this._log=c.log.for(this)),this._log}logger(t){return this.loggerCache.has(t)||this.loggerCache.set(t,this.log.for(this[t])),this.loggerCache.get(t)}constructor(t=1,e,i){super(),this.counter=t,this.onBegin=e,this.onEnd=i,this.pendingTransactions=[],this.currentTransaction=void 0,this.loggerCache=new Map,this.lock=new a}async submit(t){const e=this.logger("submit");if(await this.lock.acquire(),e.silly("Lock acquired to submit transaction "+t.id),this.currentTransaction&&this.currentTransaction.id===t.id)return this.lock.release(),e.silly("Released lock for re-entrant transaction "+t.id),t.fire();let i;return this.counter>0?(this.counter--,this.lock.release(),e.silly("Released lock for transaction "+t.id),i=this.fireTransaction(t)):(e.debug(`Pushing transaction ${t.id} to the queue`),this.pendingTransactions.push(t),i=t.wait(),this.lock.release(),e.silly("Released lock after queuing transaction "+t.id)),i}async fireTransaction(t){const e=this.logger("fireTransaction");return await this.lock.acquire(),e.silly("Lock acquired obtain transaction "+t.id),this.currentTransaction=t,this.lock.release(),e.silly("Released lock after obtaining "+t.id),this.onBegin&&(e.verbose("Calling onBegin for transaction "+t.id),await this.onBegin()),e.info(`Starting transaction ${t.id}. ${this.pendingTransactions.length} remaining...`),t.fire()}async release(t){const e=this.logger("release");await this.lock.acquire(),this.currentTransaction||e.warn("Trying to release an unexisting transaction. should never happen..."),e.verbose("Releasing transaction "+this.currentTransaction?.toString(!0,!0));const i=this.currentTransaction?.id;if(this.currentTransaction=void 0,this.lock.release(),e.silly("Released lock after clearing transaction "+i),this.onEnd&&(e.verbose("Calling onEnd for transaction "+i),await this.onEnd(t)),await this.lock.acquire(),e.silly(`Acquired lock after completing transaction ${i} for pending transaction verification`),this.pendingTransactions.length>0){const t=this.pendingTransactions.shift(),i=()=>this.fireTransaction.call(this,t).catch((t=>{this.log.for(this.fireTransaction).error(t)}));e.silly(`Marking ${t.id} for execution`),s.isBrowser()?setTimeout(i,0):globalThis.process.nextTick(i)}else e.debug("No pending transactions. Incrementing counter."),this.counter++;this.lock.release(),e.silly("Released lock after completing transaction "+i)}}const h="##VERSION##",d="##PACKAGE##";e.Metadata.registerLibrary(d,h),t.Lock=a,t.MultiLock=class extends a{constructor(){super(),this.locks={},this.lock=new a}async lockFor(t){return await this.lock.acquire(),this.locks[t]||(this.locks[t]=new a),this.lock.release(),this.locks[t]}async execute(t,e,...i){return(await this.lockFor(e)).execute(t,...i)}async acquire(t,...e){return(await this.lockFor(t)).acquire(...e)}release(t,...e){if(!(t in this.locks))throw Error("Trying to release a non existing lock. should be impossible");return this.locks[t].release(...e)}},t.PACKAGE_NAME=d,t.SynchronousLock=l,t.TimeoutError=o,t.Transaction=c,t.TransactionalKeys=n,t.VERSION=h,t.transactional=(...t)=>e.Decoration.for(n.TRANSACTIONAL).define({decorator:(...t)=>(s,a,o)=>{if(!o)throw new i.InternalError("This decorator only applies to methods");return e.method()(s,a,o),e.Metadata.set(s.constructor,e.Metadata.key(n.TRANSACTIONAL,a),{data:t}),o.value=new Proxy(o.value,{apply:async(e,i,n)=>new Promise(((o,r)=>{async function l(t,e,i){return!e||e instanceof Error||i||(i=e,e=void 0),await t.release(e),e?r(e):o(i)}const h=n[0],d=(()=>{let t=0;for(;t<n.length&&n[t]instanceof c;)t++;return t})(),u=d>0?n.slice(d):n,g=h instanceof c?h:c.contextTransaction(i);if(g){const n=new c(s.name,a,(async()=>{try{return o(await Reflect.apply(e,n.bindToTransaction(i),u))}catch(t){return r(t)}}),t.length?t:void 0);g.bindTransaction(n),g.fire()}else{const n=new c(s.name,a,(async()=>{try{return l(n,void 0,await Reflect.apply(e,n.bindToTransaction(i),u))}catch(t){return l(n,t)}}),t.length?t:void 0);c.submit(n)}}))}),o},args:t}).apply()},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/logging"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["transactional-decorators"]={},t.decafTsDecoration,t.decafTsDbDecorators,t.decafTsLogging);
|
|
1
|
+
var t,e;t=this,e=function(t,e,i,s){"use strict";class a{constructor(){this.queue=[],this.locked=!1}async execute(t,...e){let i;await this.acquire();try{i=await Promise.resolve(t())}catch(t){throw this.release(),t}return this.release(),i}async acquire(...t){const e=this;return e.locked?new Promise(t=>e.queue.push(t)):(e.locked=!0,Promise.resolve())}release(...t){const e=this.queue.shift();e?void 0===globalThis.window?globalThis.process.nextTick(e):setTimeout(e,0):this.locked=!1}}const n={TRANSACTIONAL:"transactional"};e.Metadata.transactionals=t=>{const i=e.Metadata.get(t,n.TRANSACTIONAL);return i?Object.keys(i):[]},e.Metadata.isTransactional=t=>!!e.Metadata.get(t,n.TRANSACTIONAL);class o extends i.InternalError{constructor(t="Transaction timed out"){super(t,o.name,500)}}const r=new WeakMap;class c extends s.LoggedClass{static{this.debug=!1}static{this.globalTimeout=-1}static{this.metadataCache=new WeakMap}static{this.log=new Proxy(s.Logging.for(c),{get:(t,e,i)=>"log"!==e||c.debug?Reflect.get(t,e,i):(...t)=>{}})}get log(){return this._log||(this._log=c.log),this._log}static{this.contexts=new WeakMap}constructor(t,e,i,s){super(),this.initialFireDispatched=!1,this.released=!1,this.id=Date.now(),this.action=i,this.method=e,this.logs=[[this.id,t,e].join(" | ")],this.source=t,this.metadata=s,this.completion=new Promise((t,e)=>{this.resolveCompletion=t,this.rejectCompletion=e})}static async push(t,e,...i){const s=this.log.for(this.push),a=c.describeTarget(t),n=c.describeTarget(e),o=new c(a,n,async()=>{const a=s.for(o.id.toString());try{a.verbose("Executing transaction method "+n),a.debug("With arguments: "+JSON.stringify(i));const s=await Promise.resolve(e.call(o.bindToTransaction(t),...i));return a.verbose(`Transaction method ${n} executed successfully`),a.debug("Result: "+JSON.stringify(s)),await o.release(),a.debug("lock released"),s}catch(t){throw await o.release(t),t}});return s.debug(`Pushing transaction ${o.id} for method ${n} on issuer ${a}`),c.submit(o)}static async run(t,e,i){const s="function"!=typeof t,a=s?t:void 0,n=s?e:t;if("function"!=typeof n)throw Error("Transaction.run requires an async function");const o=s?i:e,r=Array.isArray(o)&&o.length?o:void 0,l=a?c.describeTarget(a):c.describeTarget(n),h=c.describeTarget(n);let d;return d=new c(l,h,async()=>{let t;try{const t=a?d.bindToTransaction(a):void 0;return await n.call(t??d)}catch(e){throw t=e,e}finally{await d.release(t instanceof Error?t:void 0)}},r),c.submit(d)}static setLock(t){this.lock=t}static getLock(){return this.lock||(this.lock=new l),this.lock}static submit(t){return c.getLock().submit(t)}static async release(t){return c.getLock().release(t)}async release(t){this.released||(this.released=!0,await c.release(t))}getMetadata(){return this.metadata?[...this.metadata]:void 0}static getTransactionalMetadata(t){let s=this.metadataCache.get(t);if(s)return s;const a=new Set(["__transactionProxy","__transactionTarget","string"==typeof i.DBKeys.ORIGINAL?i.DBKeys.ORIGINAL:"__originalObj"]),n=e.Metadata.transactionals(t)??[],o=(e.Metadata.properties(t)||[]).filter(t=>!a.has(t)),r=new Map;return o.forEach(i=>{const s=e.Metadata.type(t,i);r.set(i,!!s&&e.Metadata.isTransactional(s))}),s={methods:n,propertyKeys:o,propertyDesignTypes:r},this.metadataCache.set(t,s),s}bindTransaction(t){this.log.for(this.bindTransaction).verbose(`Binding the ${t.toString()} to ${this}`),this.logs.push(...t.logs),t.bindTransaction=this.bindToTransaction.bind(this),t.bindToTransaction=this.bindToTransaction.bind(this),this.action=t.action}bindToTransaction(t){const a=this.log.for(this.bindToTransaction);a.verbose(`Binding object ${s.getObjectName(t)} to transaction ${this.id}`);const n=c.getTransactionalMetadata(t.constructor),o=n.methods;if(!o.length)return t;const r=this,l=new Set(["__transactionProxy","__transactionTarget","string"==typeof i.DBKeys.ORIGINAL?i.DBKeys.ORIGINAL:"__originalObj"]),h=new Set(n.propertyKeys);Object.getOwnPropertyNames(t).forEach(t=>{l.has(t)||h.add(t)});const d=Array.from(h).filter(i=>{if(n.propertyDesignTypes.get(i))return!0;const s=t[i];return!(!s||"object"!=typeof s&&"function"!=typeof s||!e.Metadata.isTransactional(s.constructor))});a.debug(`found transaction methods: ${o.join(", ")} and properties: ${d.join(", ")}`);const u=new Proxy(t,{get:(t,e,i)=>o.includes(e)?new Proxy(t[e],{apply:(t,e,i)=>Reflect.apply(t,e,[r,...i])}):d.includes(e)?r.bindToTransaction(t[e]):Reflect.get(t,e,i)});return u[i.DBKeys.ORIGINAL]=t[i.DBKeys.ORIGINAL]||t,u.toString=()=>s.getObjectName(u[i.DBKeys.ORIGINAL])+" proxy for transaction "+this.id,u.__transactionProxy=!0,u.__transactionTarget=t.__transactionTarget||t,c.contexts.set(u,r),u}applyGlobalTimeout(t){if(0>=c.globalTimeout)return t;const e=c.globalTimeout,i=this.log.for(this.applyGlobalTimeout);return new Promise((s,a)=>{let n=!1;const r=setTimeout(()=>{if(n)return;const t=new o(`Transaction ${this.toString()} exceeded timeout of ${e}ms`);i.warn(t.message),this.release(t).catch(t=>i.error(t)),a(t)},e);t.then(t=>{n=!0,clearTimeout(r),s(t)}).catch(t=>{n=!0,clearTimeout(r),a(t)})})}fire(){if(!this.action)throw Error("Missing the method");const t=(async()=>this.action?await this.action():void 0)(),e=c.globalTimeout>0?this.applyGlobalTimeout(t):t;return this.initialFireDispatched||(this.initialFireDispatched=!0,e.then(t=>(this.resolveCompletion?.(t),t)).catch(t=>{throw this.rejectCompletion?.(t),t})),e}toString(t=!0,e=!1){return`${t?`[${this.id}]`:""}[Transaction][${this.source}.${this.method}${e?"]\nTransaction Log:\n"+this.logs.join("\n"):"]"}`}static contextTransaction(t){if(t&&t.__transactionProxy)return this.contexts.get(t)}wait(){return this.completion}static describeTarget(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)return s.getObjectName(t);const e=t;let i=r.get(e);return i||(i=s.getObjectName(t),r.set(e,i)),i}}class l extends s.LoggedClass{get log(){return this._log||(this._log=c.log.for(this)),this._log}logger(t){return this.loggerCache.has(t)||this.loggerCache.set(t,this.log.for(this[t])),this.loggerCache.get(t)}constructor(t=1,e,i){super(),this.counter=t,this.onBegin=e,this.onEnd=i,this.pendingTransactions=[],this.currentTransaction=void 0,this.loggerCache=new Map,this.lock=new a}async submit(t){const e=this.logger("submit");if(await this.lock.acquire(),e.silly("Lock acquired to submit transaction "+t.id),this.currentTransaction&&this.currentTransaction.id===t.id)return this.lock.release(),e.silly("Released lock for re-entrant transaction "+t.id),t.fire();let i;return this.counter>0?(this.counter--,this.lock.release(),e.silly("Released lock for transaction "+t.id),i=this.fireTransaction(t)):(e.debug(`Pushing transaction ${t.id} to the queue`),this.pendingTransactions.push(t),i=t.wait(),this.lock.release(),e.silly("Released lock after queuing transaction "+t.id)),i}async fireTransaction(t){const e=this.logger("fireTransaction");return await this.lock.acquire(),e.silly("Lock acquired obtain transaction "+t.id),this.currentTransaction=t,this.lock.release(),e.silly("Released lock after obtaining "+t.id),this.onBegin&&(e.verbose("Calling onBegin for transaction "+t.id),await this.onBegin()),e.info(`Starting transaction ${t.id}. ${this.pendingTransactions.length} remaining...`),t.fire()}async release(t){const e=this.logger("release");await this.lock.acquire(),this.currentTransaction||e.warn("Trying to release an unexisting transaction. should never happen..."),e.verbose("Releasing transaction "+this.currentTransaction?.toString(!0,!0));const i=this.currentTransaction?.id;if(this.currentTransaction=void 0,this.lock.release(),e.silly("Released lock after clearing transaction "+i),this.onEnd&&(e.verbose("Calling onEnd for transaction "+i),await this.onEnd(t)),await this.lock.acquire(),e.silly(`Acquired lock after completing transaction ${i} for pending transaction verification`),this.pendingTransactions.length>0){const t=this.pendingTransactions.shift(),i=()=>this.fireTransaction.call(this,t).catch(t=>{this.log.for(this.fireTransaction).error(t)});e.silly(`Marking ${t.id} for execution`),s.isBrowser()?setTimeout(i,0):globalThis.process.nextTick(i)}else e.debug("No pending transactions. Incrementing counter."),this.counter++;this.lock.release(),e.silly("Released lock after completing transaction "+i)}}const h="##VERSION##",d="##PACKAGE##";e.Metadata.registerLibrary(d,h),t.Lock=a,t.MultiLock=class extends a{constructor(){super(),this.locks={},this.lock=new a}async lockFor(t){return await this.lock.acquire(),this.locks[t]||(this.locks[t]=new a),this.lock.release(),this.locks[t]}async execute(t,e,...i){return(await this.lockFor(e)).execute(t,...i)}async acquire(t,...e){return(await this.lockFor(t)).acquire(...e)}release(t,...e){if(!(t in this.locks))throw Error("Trying to release a non existing lock. should be impossible");return this.locks[t].release(...e)}},t.PACKAGE_NAME=d,t.SynchronousLock=l,t.TimeoutError=o,t.Transaction=c,t.TransactionalKeys=n,t.VERSION=h,t.transactional=(...t)=>e.Decoration.for(n.TRANSACTIONAL).define({decorator:(...t)=>(s,a,o)=>{if(!o)throw new i.InternalError("This decorator only applies to methods");return e.method()(s,a,o),e.Metadata.set(s.constructor,e.Metadata.key(n.TRANSACTIONAL,a),{data:t}),o.value=new Proxy(o.value,{apply:async(e,i,n)=>new Promise((o,r)=>{async function l(t,e,i){return!e||e instanceof Error||i||(i=e,e=void 0),await t.release(e),e?r(e):o(i)}const h=n[0],d=(()=>{let t=0;for(;t<n.length&&n[t]instanceof c;)t++;return t})(),u=d>0?n.slice(d):n,g=h instanceof c?h:c.contextTransaction(i);if(g){const n=new c(s.name,a,async()=>{try{return o(await Reflect.apply(e,n.bindToTransaction(i),u))}catch(t){return r(t)}},t.length?t:void 0);g.bindTransaction(n),g.fire()}else{const n=new c(s.name,a,async()=>{try{return l(n,void 0,await Reflect.apply(e,n.bindToTransaction(i),u))}catch(t){return l(n,t)}},t.length?t:void 0);c.submit(n)}})}),o},args:t}).apply()},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/logging"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["transactional-decorators"]={},t.decafTsDecoration,t.decafTsDbDecorators,t.decafTsLogging);
|
|
2
2
|
//# sourceMappingURL=transactional-decorators.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactional-decorators.cjs","sources":["../src/locks/Lock.ts","../src/constants.ts","../src/overrides/overrides.ts","../src/errors.ts","../src/Transaction.ts","../src/locks/SynchronousLock.ts","../src/index.ts","../src/locks/MultiLock.ts","../src/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["Lock","constructor","this","queue","locked","execute","func","args","result","acquire","Promise","resolve","e","release","self","push","next","shift","globalThis","window","process","nextTick","setTimeout","TransactionalKeys","TRANSACTIONAL","Metadata","transactionals","obj","meta","get","Object","keys","isTransactional","TimeoutError","InternalError","message","super","name","objectNameCache","WeakMap","Transaction","LoggedClass","debug","globalTimeout","metadataCache","log","Proxy","Logging","for","target","prop","receiver","Reflect","contexts","source","method","action","metadata","initialFireDispatched","released","id","Date","now","logs","join","completion","reject","resolveCompletion","rejectCompletion","issuer","issuerName","describeTarget","methodName","transaction","async","l","toString","verbose","JSON","stringify","call","bindToTransaction","submit","run","contextOrRunnable","runnableOrMetadata","maybeMetadata","contextProvided","context","undefined","runnable","Error","rawMetadata","metadataValue","Array","isArray","length","sourceName","caughtError","boundContext","error","setLock","lock","getLock","SynchronousLock","err","getMetadata","getTransactionalMetadata","cached","reservedProps","Set","DBKeys","ORIGINAL","methods","propertyKeys","properties","filter","has","propertyDesignTypes","Map","forEach","type","set","bindTransaction","nextTransaction","bind","getObjectName","transactionalMethods","props","getOwnPropertyNames","add","transactionProps","from","p","value","boundObj","includes","apply","methodTarget","thisArg","argArray","__transactionProxy","__transactionTarget","applyGlobalTimeout","execution","timeoutMs","settled","timer","warn","catch","releaseErr","then","clearTimeout","fire","baseExecution","executeAction","withId","withLog","contextTransaction","wait","key","logger","loggerCache","counter","onBegin","onEnd","pendingTransactions","currentTransaction","silly","resultPromise","fireTransaction","info","cb","isBrowser","VERSION","PACKAGE_NAME","registerLibrary","locks","lockFor","data","Decoration","define","decorator","propertyKey","descriptor","exitFunction","candidate","transactionPrefixLength","count","invocationArgs","slice","activeTransaction","updatedTransaction","newTransaction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transactional-decorators.cjs","sources":["../src/locks/Lock.ts","../src/constants.ts","../src/overrides/overrides.ts","../src/errors.ts","../src/Transaction.ts","../src/locks/SynchronousLock.ts","../src/index.ts","../src/locks/MultiLock.ts","../src/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["Lock","constructor","this","queue","locked","execute","func","args","result","acquire","Promise","resolve","e","release","self","push","next","shift","globalThis","window","process","nextTick","setTimeout","TransactionalKeys","TRANSACTIONAL","Metadata","transactionals","obj","meta","get","Object","keys","isTransactional","TimeoutError","InternalError","message","super","name","objectNameCache","WeakMap","Transaction","LoggedClass","debug","globalTimeout","metadataCache","log","Proxy","Logging","for","target","prop","receiver","Reflect","contexts","source","method","action","metadata","initialFireDispatched","released","id","Date","now","logs","join","completion","reject","resolveCompletion","rejectCompletion","issuer","issuerName","describeTarget","methodName","transaction","async","l","toString","verbose","JSON","stringify","call","bindToTransaction","submit","run","contextOrRunnable","runnableOrMetadata","maybeMetadata","contextProvided","context","undefined","runnable","Error","rawMetadata","metadataValue","Array","isArray","length","sourceName","caughtError","boundContext","error","setLock","lock","getLock","SynchronousLock","err","getMetadata","getTransactionalMetadata","cached","reservedProps","Set","DBKeys","ORIGINAL","methods","propertyKeys","properties","filter","has","propertyDesignTypes","Map","forEach","type","set","bindTransaction","nextTransaction","bind","getObjectName","transactionalMethods","props","getOwnPropertyNames","add","transactionProps","from","p","value","boundObj","includes","apply","methodTarget","thisArg","argArray","__transactionProxy","__transactionTarget","applyGlobalTimeout","execution","timeoutMs","settled","timer","warn","catch","releaseErr","then","clearTimeout","fire","baseExecution","executeAction","withId","withLog","contextTransaction","wait","key","logger","loggerCache","counter","onBegin","onEnd","pendingTransactions","currentTransaction","silly","resultPromise","fireTransaction","info","cb","isBrowser","VERSION","PACKAGE_NAME","registerLibrary","locks","lockFor","data","Decoration","define","decorator","propertyKey","descriptor","exitFunction","candidate","transactionPrefixLength","count","invocationArgs","slice","activeTransaction","updatedTransaction","newTransaction"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Metadata as t,Decoration as e,method as i}from"@decaf-ts/decoration";import{InternalError as s,DBKeys as n}from"@decaf-ts/db-decorators";import{LoggedClass as a,Logging as r,getObjectName as o,isBrowser as c}from"@decaf-ts/logging";class l{constructor(){this.queue=[],this.locked=!1}async execute(t,...e){let i;await this.acquire();try{i=await Promise.resolve(t())}catch(t){throw this.release(),t}return this.release(),i}async acquire(...t){const e=this;return e.locked?new Promise(
|
|
1
|
+
import{Metadata as t,Decoration as e,method as i}from"@decaf-ts/decoration";import{InternalError as s,DBKeys as n}from"@decaf-ts/db-decorators";import{LoggedClass as a,Logging as r,getObjectName as o,isBrowser as c}from"@decaf-ts/logging";class l{constructor(){this.queue=[],this.locked=!1}async execute(t,...e){let i;await this.acquire();try{i=await Promise.resolve(t())}catch(t){throw this.release(),t}return this.release(),i}async acquire(...t){const e=this;return e.locked?new Promise(t=>e.queue.push(t)):(e.locked=!0,Promise.resolve())}release(...t){const e=this.queue.shift();e?void 0===globalThis.window?globalThis.process.nextTick(e):setTimeout(e,0):this.locked=!1}}class h extends l{constructor(){super(),this.locks={},this.lock=new l}async lockFor(t){return await this.lock.acquire(),this.locks[t]||(this.locks[t]=new l),this.lock.release(),this.locks[t]}async execute(t,e,...i){return(await this.lockFor(e)).execute(t,...i)}async acquire(t,...e){return(await this.lockFor(t)).acquire(...e)}release(t,...e){if(!(t in this.locks))throw Error("Trying to release a non existing lock. should be impossible");return this.locks[t].release(...e)}}const u={TRANSACTIONAL:"transactional"};t.transactionals=e=>{const i=t.get(e,"transactional");return i?Object.keys(i):[]},t.isTransactional=e=>!!t.get(e,"transactional");class g extends s{constructor(t="Transaction timed out"){super(t,g.name,500)}}const d=new WeakMap;class f extends a{static{this.debug=!1}static{this.globalTimeout=-1}static{this.metadataCache=new WeakMap}static{this.log=new Proxy(r.for(f),{get:(t,e,i)=>"log"!==e||f.debug?Reflect.get(t,e,i):(...t)=>{}})}get log(){return this._log||(this._log=f.log),this._log}static{this.contexts=new WeakMap}constructor(t,e,i,s){super(),this.initialFireDispatched=!1,this.released=!1,this.id=Date.now(),this.action=i,this.method=e,this.logs=[[this.id,t,e].join(" | ")],this.source=t,this.metadata=s,this.completion=new Promise((t,e)=>{this.resolveCompletion=t,this.rejectCompletion=e})}static async push(t,e,...i){const s=this.log.for(this.push),n=f.describeTarget(t),a=f.describeTarget(e),r=new f(n,a,async()=>{const n=s.for(r.id.toString());try{n.verbose("Executing transaction method "+a),n.debug("With arguments: "+JSON.stringify(i));const s=await Promise.resolve(e.call(r.bindToTransaction(t),...i));return n.verbose(`Transaction method ${a} executed successfully`),n.debug("Result: "+JSON.stringify(s)),await r.release(),n.debug("lock released"),s}catch(t){throw await r.release(t),t}});return s.debug(`Pushing transaction ${r.id} for method ${a} on issuer ${n}`),f.submit(r)}static async run(t,e,i){const s="function"!=typeof t,n=s?t:void 0,a=s?e:t;if("function"!=typeof a)throw Error("Transaction.run requires an async function");const r=s?i:e,o=Array.isArray(r)&&r.length?r:void 0,c=n?f.describeTarget(n):f.describeTarget(a),l=f.describeTarget(a);let h;return h=new f(c,l,async()=>{let t;try{const t=n?h.bindToTransaction(n):void 0;return await a.call(t??h)}catch(e){throw t=e,e}finally{await h.release(t instanceof Error?t:void 0)}},o),f.submit(h)}static setLock(t){this.lock=t}static getLock(){return this.lock||(this.lock=new T),this.lock}static submit(t){return f.getLock().submit(t)}static async release(t){return f.getLock().release(t)}async release(t){this.released||(this.released=!0,await f.release(t))}getMetadata(){return this.metadata?[...this.metadata]:void 0}static getTransactionalMetadata(e){let i=this.metadataCache.get(e);if(i)return i;const s=new Set(["__transactionProxy","__transactionTarget","string"==typeof n.ORIGINAL?n.ORIGINAL:"__originalObj"]),a=t.transactionals(e)??[],r=(t.properties(e)||[]).filter(t=>!s.has(t)),o=new Map;return r.forEach(i=>{const s=t.type(e,i);o.set(i,!!s&&t.isTransactional(s))}),i={methods:a,propertyKeys:r,propertyDesignTypes:o},this.metadataCache.set(e,i),i}bindTransaction(t){this.log.for(this.bindTransaction).verbose(`Binding the ${t.toString()} to ${this}`),this.logs.push(...t.logs),t.bindTransaction=this.bindToTransaction.bind(this),t.bindToTransaction=this.bindToTransaction.bind(this),this.action=t.action}bindToTransaction(e){const i=this.log.for(this.bindToTransaction);i.verbose(`Binding object ${o(e)} to transaction ${this.id}`);const s=f.getTransactionalMetadata(e.constructor),a=s.methods;if(!a.length)return e;const r=this,c=new Set(["__transactionProxy","__transactionTarget","string"==typeof n.ORIGINAL?n.ORIGINAL:"__originalObj"]),l=new Set(s.propertyKeys);Object.getOwnPropertyNames(e).forEach(t=>{c.has(t)||l.add(t)});const h=Array.from(l).filter(i=>{if(s.propertyDesignTypes.get(i))return!0;const n=e[i];return!(!n||"object"!=typeof n&&"function"!=typeof n||!t.isTransactional(n.constructor))});i.debug(`found transaction methods: ${a.join(", ")} and properties: ${h.join(", ")}`);const u=new Proxy(e,{get:(t,e,i)=>a.includes(e)?new Proxy(t[e],{apply:(t,e,i)=>Reflect.apply(t,e,[r,...i])}):h.includes(e)?r.bindToTransaction(t[e]):Reflect.get(t,e,i)});return u[n.ORIGINAL]=e[n.ORIGINAL]||e,u.toString=()=>o(u[n.ORIGINAL])+" proxy for transaction "+this.id,u.__transactionProxy=!0,u.__transactionTarget=e.__transactionTarget||e,f.contexts.set(u,r),u}applyGlobalTimeout(t){if(0>=f.globalTimeout)return t;const e=f.globalTimeout,i=this.log.for(this.applyGlobalTimeout);return new Promise((s,n)=>{let a=!1;const r=setTimeout(()=>{if(a)return;const t=new g(`Transaction ${this.toString()} exceeded timeout of ${e}ms`);i.warn(t.message),this.release(t).catch(t=>i.error(t)),n(t)},e);t.then(t=>{a=!0,clearTimeout(r),s(t)}).catch(t=>{a=!0,clearTimeout(r),n(t)})})}fire(){if(!this.action)throw Error("Missing the method");const t=(async()=>this.action?await this.action():void 0)(),e=f.globalTimeout>0?this.applyGlobalTimeout(t):t;return this.initialFireDispatched||(this.initialFireDispatched=!0,e.then(t=>(this.resolveCompletion?.(t),t)).catch(t=>{throw this.rejectCompletion?.(t),t})),e}toString(t=!0,e=!1){return`${t?`[${this.id}]`:""}[Transaction][${this.source}.${this.method}${e?"]\nTransaction Log:\n"+this.logs.join("\n"):"]"}`}static contextTransaction(t){if(t&&t.__transactionProxy)return this.contexts.get(t)}wait(){return this.completion}static describeTarget(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)return o(t);const e=t;let i=d.get(e);return i||(i=o(t),d.set(e,i)),i}}class T extends a{get log(){return this._log||(this._log=f.log.for(this)),this._log}logger(t){return this.loggerCache.has(t)||this.loggerCache.set(t,this.log.for(this[t])),this.loggerCache.get(t)}constructor(t=1,e,i){super(),this.counter=t,this.onBegin=e,this.onEnd=i,this.pendingTransactions=[],this.currentTransaction=void 0,this.loggerCache=new Map,this.lock=new l}async submit(t){const e=this.logger("submit");if(await this.lock.acquire(),e.silly("Lock acquired to submit transaction "+t.id),this.currentTransaction&&this.currentTransaction.id===t.id)return this.lock.release(),e.silly("Released lock for re-entrant transaction "+t.id),t.fire();let i;return this.counter>0?(this.counter--,this.lock.release(),e.silly("Released lock for transaction "+t.id),i=this.fireTransaction(t)):(e.debug(`Pushing transaction ${t.id} to the queue`),this.pendingTransactions.push(t),i=t.wait(),this.lock.release(),e.silly("Released lock after queuing transaction "+t.id)),i}async fireTransaction(t){const e=this.logger("fireTransaction");return await this.lock.acquire(),e.silly("Lock acquired obtain transaction "+t.id),this.currentTransaction=t,this.lock.release(),e.silly("Released lock after obtaining "+t.id),this.onBegin&&(e.verbose("Calling onBegin for transaction "+t.id),await this.onBegin()),e.info(`Starting transaction ${t.id}. ${this.pendingTransactions.length} remaining...`),t.fire()}async release(t){const e=this.logger("release");await this.lock.acquire(),this.currentTransaction||e.warn("Trying to release an unexisting transaction. should never happen..."),e.verbose("Releasing transaction "+this.currentTransaction?.toString(!0,!0));const i=this.currentTransaction?.id;if(this.currentTransaction=void 0,this.lock.release(),e.silly("Released lock after clearing transaction "+i),this.onEnd&&(e.verbose("Calling onEnd for transaction "+i),await this.onEnd(t)),await this.lock.acquire(),e.silly(`Acquired lock after completing transaction ${i} for pending transaction verification`),this.pendingTransactions.length>0){const t=this.pendingTransactions.shift(),i=()=>this.fireTransaction.call(this,t).catch(t=>{this.log.for(this.fireTransaction).error(t)});e.silly(`Marking ${t.id} for execution`),c()?setTimeout(i,0):globalThis.process.nextTick(i)}else e.debug("No pending transactions. Incrementing counter."),this.counter++;this.lock.release(),e.silly("Released lock after completing transaction "+i)}}function p(...n){return e.for("transactional").define({decorator:(...e)=>(n,a,r)=>{if(!r)throw new s("This decorator only applies to methods");return i()(n,a,r),t.set(n.constructor,t.key("transactional",a),{data:e}),r.value=new Proxy(r.value,{apply:async(t,i,s)=>new Promise((r,o)=>{async function c(t,e,i){return!e||e instanceof Error||i||(i=e,e=void 0),await t.release(e),e?o(e):r(i)}const l=s[0],h=(()=>{let t=0;for(;t<s.length&&s[t]instanceof f;)t++;return t})(),u=h>0?s.slice(h):s,g=l instanceof f?l:f.contextTransaction(i);if(g){const s=new f(n.name,a,async()=>{try{return r(await Reflect.apply(t,s.bindToTransaction(i),u))}catch(t){return o(t)}},e.length?e:void 0);g.bindTransaction(s),g.fire()}else{const s=new f(n.name,a,async()=>{try{return c(s,void 0,await Reflect.apply(t,s.bindToTransaction(i),u))}catch(t){return c(s,t)}},e.length?e:void 0);f.submit(s)}})}),r},args:n}).apply()}const y="##VERSION##",m="##PACKAGE##";t.registerLibrary(m,y);export{l as Lock,h as MultiLock,m as PACKAGE_NAME,T as SynchronousLock,g as TimeoutError,f as Transaction,u as TransactionalKeys,y as VERSION,p as transactional};
|
|
2
2
|
//# sourceMappingURL=transactional-decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactional-decorators.js","sources":["../src/locks/Lock.ts","../src/locks/MultiLock.ts","../src/constants.ts","../src/overrides/overrides.ts","../src/errors.ts","../src/Transaction.ts","../src/locks/SynchronousLock.ts","../src/decorators.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["Lock","constructor","this","queue","locked","execute","func","args","result","acquire","Promise","resolve","e","release","self","push","next","shift","globalThis","window","process","nextTick","setTimeout","MultiLock","super","locks","lock","lockFor","name","Error","TransactionalKeys","TRANSACTIONAL","Metadata","transactionals","obj","meta","get","Object","keys","isTransactional","TimeoutError","InternalError","message","objectNameCache","WeakMap","Transaction","LoggedClass","debug","globalTimeout","metadataCache","log","Proxy","Logging","for","target","prop","receiver","Reflect","contexts","source","method","action","metadata","initialFireDispatched","released","id","Date","now","logs","join","completion","reject","resolveCompletion","rejectCompletion","issuer","issuerName","describeTarget","methodName","transaction","async","l","toString","verbose","JSON","stringify","call","bindToTransaction","submit","run","contextOrRunnable","runnableOrMetadata","maybeMetadata","contextProvided","context","undefined","runnable","rawMetadata","metadataValue","Array","isArray","length","sourceName","caughtError","boundContext","error","setLock","getLock","SynchronousLock","err","getMetadata","getTransactionalMetadata","cached","reservedProps","Set","DBKeys","ORIGINAL","methods","propertyKeys","properties","filter","has","propertyDesignTypes","Map","forEach","type","set","bindTransaction","nextTransaction","bind","getObjectName","transactionalMethods","props","getOwnPropertyNames","add","transactionProps","from","p","value","boundObj","includes","apply","methodTarget","thisArg","argArray","__transactionProxy","__transactionTarget","applyGlobalTimeout","execution","timeoutMs","settled","timer","warn","catch","releaseErr","then","clearTimeout","fire","baseExecution","executeAction","withId","withLog","contextTransaction","wait","key","logger","loggerCache","counter","onBegin","onEnd","pendingTransactions","currentTransaction","silly","resultPromise","fireTransaction","info","cb","isBrowser","transactional","data","Decoration","define","decorator","propertyKey","descriptor","exitFunction","candidate","transactionPrefixLength","count","invocationArgs","slice","activeTransaction","updatedTransaction","newTransaction","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transactional-decorators.js","sources":["../src/locks/Lock.ts","../src/locks/MultiLock.ts","../src/constants.ts","../src/overrides/overrides.ts","../src/errors.ts","../src/Transaction.ts","../src/locks/SynchronousLock.ts","../src/decorators.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["Lock","constructor","this","queue","locked","execute","func","args","result","acquire","Promise","resolve","e","release","self","push","next","shift","globalThis","window","process","nextTick","setTimeout","MultiLock","super","locks","lock","lockFor","name","Error","TransactionalKeys","TRANSACTIONAL","Metadata","transactionals","obj","meta","get","Object","keys","isTransactional","TimeoutError","InternalError","message","objectNameCache","WeakMap","Transaction","LoggedClass","debug","globalTimeout","metadataCache","log","Proxy","Logging","for","target","prop","receiver","Reflect","contexts","source","method","action","metadata","initialFireDispatched","released","id","Date","now","logs","join","completion","reject","resolveCompletion","rejectCompletion","issuer","issuerName","describeTarget","methodName","transaction","async","l","toString","verbose","JSON","stringify","call","bindToTransaction","submit","run","contextOrRunnable","runnableOrMetadata","maybeMetadata","contextProvided","context","undefined","runnable","rawMetadata","metadataValue","Array","isArray","length","sourceName","caughtError","boundContext","error","setLock","getLock","SynchronousLock","err","getMetadata","getTransactionalMetadata","cached","reservedProps","Set","DBKeys","ORIGINAL","methods","propertyKeys","properties","filter","has","propertyDesignTypes","Map","forEach","type","set","bindTransaction","nextTransaction","bind","getObjectName","transactionalMethods","props","getOwnPropertyNames","add","transactionProps","from","p","value","boundObj","includes","apply","methodTarget","thisArg","argArray","__transactionProxy","__transactionTarget","applyGlobalTimeout","execution","timeoutMs","settled","timer","warn","catch","releaseErr","then","clearTimeout","fire","baseExecution","executeAction","withId","withLog","contextTransaction","wait","key","logger","loggerCache","counter","onBegin","onEnd","pendingTransactions","currentTransaction","silly","resultPromise","fireTransaction","info","cb","isBrowser","transactional","data","Decoration","define","decorator","propertyKey","descriptor","exitFunction","candidate","transactionPrefixLength","count","invocationArgs","slice","activeTransaction","updatedTransaction","newTransaction","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export * from "./types.js";
|
|
|
18
18
|
* @const VERSION
|
|
19
19
|
* @memberOf module:transactions
|
|
20
20
|
*/
|
|
21
|
-
export const VERSION = "0.3.
|
|
21
|
+
export const VERSION = "0.3.5";
|
|
22
22
|
export const PACKAGE_NAME = "@decaf-ts/transactional-decorators";
|
|
23
23
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
|
24
24
|
//# sourceMappingURL=index.js.map
|
package/lib/index.cjs
CHANGED
|
@@ -35,7 +35,7 @@ __exportStar(require("./types.cjs"), exports);
|
|
|
35
35
|
* @const VERSION
|
|
36
36
|
* @memberOf module:transactions
|
|
37
37
|
*/
|
|
38
|
-
exports.VERSION = "0.3.
|
|
38
|
+
exports.VERSION = "0.3.5";
|
|
39
39
|
exports.PACKAGE_NAME = "@decaf-ts/transactional-decorators";
|
|
40
40
|
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
41
41
|
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED