@decaf-ts/transactional-decorators 0.3.1 → 0.3.3
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 +5 -0
- 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/esm/locks/Lock.d.ts +6 -5
- package/lib/esm/locks/Lock.js +6 -3
- package/lib/esm/locks/Lock.js.map +1 -1
- package/lib/esm/locks/MultiLock.d.ts +10 -0
- package/lib/esm/locks/MultiLock.js +30 -0
- package/lib/esm/locks/MultiLock.js.map +1 -0
- package/lib/esm/locks/index.d.ts +1 -0
- package/lib/esm/locks/index.js +1 -0
- package/lib/esm/locks/index.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/locks/Lock.cjs +6 -3
- package/lib/locks/Lock.d.ts +6 -5
- package/lib/locks/Lock.js.map +1 -1
- package/lib/locks/MultiLock.cjs +34 -0
- package/lib/locks/MultiLock.d.ts +10 -0
- package/lib/locks/MultiLock.js.map +1 -0
- package/lib/locks/index.cjs +1 -0
- package/lib/locks/index.d.ts +1 -0
- package/lib/locks/index.js.map +1 -1
- package/package.json +4 -3
- package/workdocs/assets/slogans.json +174 -0
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
A comprehensive TypeScript library providing transaction management capabilities through decorators, locks, and utilities. This library enables atomic operations, concurrency control, and error handling in your TypeScript applications, ensuring data integrity and thread safety.
|
|
6
6
|
|
|
7
|
+
> Release docs refreshed on 2025-11-26. See [workdocs/reports/RELEASE_NOTES.md](./workdocs/reports/RELEASE_NOTES.md) for ticket summaries.
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|

|
|
9
11
|

|
|
@@ -276,6 +278,9 @@ async function manualLockHandling() {
|
|
|
276
278
|
- builder;
|
|
277
279
|
- etc;
|
|
278
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).
|
|
283
|
+
|
|
279
284
|
|
|
280
285
|
### Related
|
|
281
286
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,i,a){"use strict";class s{constructor(){this.queue=[],this.locked=!1}async execute(t){let e;await this.acquire();try{e=await Promise.resolve(t())}catch(t){throw this.release(),t}return this.release(),e}async acquire(){const t=this;return t.locked?new Promise(e=>t.queue.push(e)):(t.locked=!0,Promise.resolve())}release(){const t=this.queue.shift();t?void 0===globalThis.window?globalThis.process.nextTick(t):setTimeout(t,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 a.LoggedClass{static{this.debug=!1}static{this.globalTimeout=-1}static{this.metadataCache=new WeakMap}static{this.log=new Proxy(a.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,a){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=a,this.completion=new Promise((t,e)=>{this.resolveCompletion=t,this.rejectCompletion=e})}static async push(t,e,...i){const a=this.log.for(this.push),s=c.describeTarget(t),n=c.describeTarget(e),o=new c(s,n,async()=>{const s=a.for(o.id.toString());try{s.verbose("Executing transaction method "+n),s.debug("With arguments: "+JSON.stringify(i));const a=await Promise.resolve(e.call(o.bindToTransaction(t),...i));return s.verbose(`Transaction method ${n} executed successfully`),s.debug("Result: "+JSON.stringify(a)),await o.release(),s.debug("lock released"),a}catch(t){throw await o.release(t),t}});return a.debug(`Pushing transaction ${o.id} for method ${n} on issuer ${s}`),c.submit(o)}static async run(t,e,i){const a="function"!=typeof t,s=a?t:void 0,n=a?e:t;if("function"!=typeof n)throw Error("Transaction.run requires an async function");const o=a?i:e,r=Array.isArray(o)&&o.length?o:void 0,l=s?c.describeTarget(s):c.describeTarget(n),h=c.describeTarget(n);let d;return d=new c(l,h,async()=>{let t;try{const t=s?d.bindToTransaction(s):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 a=this.metadataCache.get(t);if(a)return a;const s=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=>!s.has(t)),r=new Map;return o.forEach(i=>{const a=e.Metadata.type(t,i);r.set(i,!!a&&e.Metadata.isTransactional(a))}),a={methods:n,propertyKeys:o,propertyDesignTypes:r},this.metadataCache.set(t,a),a}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 s=this.log.for(this.bindToTransaction);s.verbose(`Binding object ${a.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 a=t[i];return!(!a||"object"!=typeof a&&"function"!=typeof a||!e.Metadata.isTransactional(a.constructor))});s.debug(`found transaction methods: ${o.join(", ")} and properties: ${d.join(", ")}`);const g=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 g[i.DBKeys.ORIGINAL]=t[i.DBKeys.ORIGINAL]||t,g.toString=()=>a.getObjectName(g[i.DBKeys.ORIGINAL])+" proxy for transaction "+this.id,g.__transactionProxy=!0,g.__transactionTarget=t.__transactionTarget||t,c.contexts.set(g,r),g}applyGlobalTimeout(t){if(0>=c.globalTimeout)return t;const e=c.globalTimeout,i=this.log.for(this.applyGlobalTimeout);return new Promise((a,s)=>{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)),s(t)},e);t.then(t=>{n=!0,clearTimeout(r),a(t)}).catch(t=>{n=!0,clearTimeout(r),s(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 a.getObjectName(t);const e=t;let i=r.get(e);return i||(i=a.getObjectName(t),r.set(e,i)),i}}class l extends a.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 s}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`),a.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=s,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)=>(a,s,o)=>{if(!o)throw new i.InternalError("This decorator only applies to methods");return e.method()(a,s,o),e.Metadata.set(a.constructor,e.Metadata.key(n.TRANSACTIONAL,s),{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})(),g=d>0?n.slice(d):n,u=h instanceof c?h:c.contextTransaction(i);if(u){const n=new c(a.name,s,async()=>{try{return o(await Reflect.apply(e,n.bindToTransaction(i),g))}catch(t){return r(t)}},t.length?t:void 0);u.bindTransaction(n),u.fire()}else{const n=new c(a.name,s,async()=>{try{return l(n,void 0,await Reflect.apply(e,n.bindToTransaction(i),g))}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/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["Lock","constructor","this","queue","locked","execute","func","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","args","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","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
|
|
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/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],"names":["Lock","constructor","this","queue","locked","execute","func","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","args","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","transactional","data","Decoration","define","decorator","propertyKey","descriptor","exitFunction","candidate","transactionPrefixLength","count","invocationArgs","slice","activeTransaction","updatedTransaction","newTransaction","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"qPAcaA,EAAb,WAAAC,GACUC,KAAKC,MAAmB,GACxBD,KAAME,QAAG,CAqDlB,CA7CC,aAAMC,CAAQC,GAEZ,IAAIC,QADEL,KAAKM,UAEX,IACED,QAAeE,QAAQC,QAAQJ,IAChC,CAAC,MAAOK,GAEP,MADAT,KAAKU,UACCD,CACP,CAED,OADAT,KAAKU,UACEL,CACR,CAMD,aAAMC,GAEJ,MAAMK,EAAOX,KACb,OAAIW,EAAKT,OACA,IAAIK,QAAeC,GAAYG,EAAKV,MAAMW,KAAKJ,KAEtDG,EAAKT,QAAS,EACPK,QAAQC,UAElB,CAKD,OAAAE,GAEE,MACMG,EADOb,KAC+BC,MAAMa,QAC9CD,OAE6D,IAArDE,WAA0CC,OAElDD,WAAWE,QAAQC,SAASL,GACzBM,WAAWN,EAAM,GAPXb,KASNE,QAAS,CAEjB,ECtDU,MAAAkB,EAA4C,CACvDC,cAAe,iBCXhBC,EAAiBC,eAChBC,IAEA,MAAMC,EAAOH,EAASI,IAAIF,EAAKJ,iBAC/B,OAAKK,EACEE,OAAOC,KAAKH,GADD,EAEpB,EAECH,EAAiBO,gBAA+BL,KACtCF,EAASI,IAAIF,EAAKJ,iBCXvB,MAAOU,UAAqBC,EAChC,WAAAhC,CAAYiC,EAA0B,yBACpCC,MAAMD,EAASF,EAAaI,KAAM,IACnC,ECIH,MAAMC,EAAkB,IAAIC,QA8CtB,MAAOC,UAAuBC,SAC3BtC,KAAKuC,OAAG,CAAM,QACdvC,KAAAwC,eAAiB,CAAE,QACFxC,KAAAyC,cAAgB,IAAIL,OAQxC,QAEWpC,KAAG0C,IAAG,IAAIC,MAAMC,EAAQC,IAAIR,GAAc,CACvDX,IAAG,CAACoB,EAAQC,EAAMC,IACH,QAATD,GAAkBV,EAAYE,MACzBU,QAAQvB,IAAIoB,EAAQC,EAAMC,GAE5B,IAAIE,QAIZ,CAEH,OAAaR,GAIX,OAHK1C,KAAW,OACdA,KAAW,KAAIqC,EAAYK,KAEtB1C,KAAW,IACnB,QAeuBA,KAAAmD,SAAW,IAAIf,OAAoC,CAE3E,WAAArC,CACEqD,EACAC,EACAC,EACAC,GAEAtB,QAZMjC,KAAqBwD,uBAAG,EACxBxD,KAAQyD,UAAG,EAYjBzD,KAAK0D,GAAKC,KAAKC,MACf5D,KAAKsD,OAASA,EACdtD,KAAKqD,OAASA,EACdrD,KAAK6D,KAAO,CAAC,CAAC7D,KAAK0D,GAAIN,EAAQC,GAAQS,KAAK,QAC5C9D,KAAKoD,OAASA,EACdpD,KAAKuD,SAAWA,EAChBvD,KAAK+D,WAAa,IAAIxD,QAAW,CAACC,EAASwD,KACzChE,KAAKiE,kBAAoBzD,EACzBR,KAAKkE,iBAAmBF,GAE3B,CAUD,iBAAapD,CACXuD,EACAd,KACGH,GAEH,MAAMR,EAAM1C,KAAK0C,IAAIG,IAAI7C,KAAKY,MACxBwD,EAAa/B,EAAYgC,eAAeF,GACxCG,EAAajC,EAAYgC,eAAehB,GAExCkB,EAA8B,IAAIlC,EACtC+B,EACAE,EACAE,UACE,MAAMC,EAAI/B,EAAIG,IAAI0B,EAAYb,GAAGgB,YACjC,IACED,EAAEE,QAAQ,gCAAgCL,GAC1CG,EAAElC,MAAM,mBAAmBqC,KAAKC,UAAU3B,IAC1C,MAAM7C,QAAeE,QAAQC,QAC3B6C,EAAOyB,KAAKP,EAAYQ,kBAAkBZ,MAAYjB,IAMxD,OAJAuB,EAAEE,QAAQ,sBAAsBL,2BAChCG,EAAElC,MAAM,WAAWqC,KAAKC,UAAUxE,UAC5BkE,EAAY7D,UAClB+D,EAAElC,MAAM,iBACDlC,CACR,CAAC,MAAOI,GAEP,YADM8D,EAAY7D,QAAQD,GACpBA,CACP,IAML,OAHAiC,EAAIH,MACF,uBAAuBgC,EAAYb,iBAAiBY,eAAwBF,KAEvE/B,EAAY2C,OAAOT,EAC3B,CAWD,gBAAaU,CACXC,EACAC,EACAC,GAEA,MAAMC,EAA+C,mBAAtBH,EACzBI,EAAWD,EAAkBH,OAAoBK,EAGjDC,EACJH,EAAkBF,EAAqBD,EAEzC,GAAwB,mBAAbM,EACT,MAAUC,MAAM,8CAElB,MAAMC,EAAcL,EAAkBD,EAAgBD,EAChDQ,EACJC,MAAMC,QAAQH,IAAgBA,EAAYI,OACtCJ,OACAH,EACAQ,EAAaT,EACfjD,EAAYgC,eAAeiB,GAC3BjD,EAAYgC,eAAemB,GACzBlB,EAAajC,EAAYgC,eAAemB,GAE9C,IAAIjB,EAuBJ,OANAA,EAAc,IAAIlC,EAChB0D,EACAzB,EAlBaE,UACb,IAAIwB,EACJ,IACE,MAAMC,EAAeX,EACjBf,EAAYQ,kBAAkBO,QAC9BC,EACJ,aAAaC,EAASV,KAAMmB,GAAgB1B,EAC7C,CAAC,MAAO2B,GAEP,MADAF,EAAcE,EACRA,CACP,CAAS,cACF3B,EAAY7D,QAChBsF,aAAuBP,MAASO,OAAwBT,EAE3D,GAMDI,GAEKtD,EAAY2C,OAAOT,EAC3B,CAQD,cAAO4B,CAAQC,GACbpG,KAAKoG,KAAOA,CACb,CAOD,cAAOC,GAEL,OADKrG,KAAKoG,OAAMpG,KAAKoG,KAAO,IAAIE,GACzBtG,KAAKoG,IACb,CAQD,aAAOpB,CAAUT,GACf,OAAOlC,EAAYgE,UAAUrB,OAAOT,EACrC,CAQD,oBAAa7D,CAAQ6F,GACnB,OAAOlE,EAAYgE,UAAU3F,QAAQ6F,EACtC,CAQD,aAAM7F,CAAQ6F,GACRvG,KAAKyD,WACTzD,KAAKyD,UAAW,QACVpB,EAAY3B,QAAQ6F,GAC3B,CAOD,WAAAC,GACE,OAAOxG,KAAKuD,SAAW,IAAIvD,KAAKuD,eAAYgC,CAC7C,CAEO,+BAAOkB,CAAyB3D,GACtC,IAAI4D,EAAS1G,KAAKyC,cAAcf,IAAIoB,GACpC,GAAI4D,EAAQ,OAAOA,EACnB,MAAMC,EAAgB,IAAIC,IAAY,CACpC,qBACA,sBAC2B,iBAApBC,EAAOC,SAAwBD,EAAOC,SAAW,kBAEpDC,EAAWzF,EAASC,eAAeuB,IAAwB,GAC3DkE,GAAgB1F,EAAS2F,WAAWnE,IAAW,IAAIoE,OACtDnE,IAAU4D,EAAcQ,IAAIpE,IAEzBqE,EAAsB,IAAIC,IAOhC,OANAL,EAAaM,QAASvE,IACpB,MAAMwE,EAAOjG,EAASiG,KAAKzE,EAAQC,GACnCqE,EAAoBI,IAAIzE,IAAQwE,GAAQjG,EAASO,gBAAgB0F,MAEnEb,EAAS,CAAEK,UAASC,eAAcI,uBAClCpH,KAAKyC,cAAc+E,IAAI1E,EAAQ4D,GACxBA,CACR,CAQD,eAAAe,CAAgBC,GACd1H,KAAK0C,IACFG,IAAI7C,KAAKyH,iBACT9C,QAAQ,eAAe+C,EAAgBhD,iBAAiB1E,QAC3DA,KAAK6D,KAAKjD,QAAQ8G,EAAgB7D,MAClC6D,EAAgBD,gBAAkBzH,KAAK+E,kBAAkB4C,KAAK3H,MAC9D0H,EAAgB3C,kBAAoB/E,KAAK+E,kBAAkB4C,KAAK3H,MAChEA,KAAKsD,OAASoE,EAAgBpE,MAC/B,CAQD,iBAAAyB,CAAkBvD,GAChB,MAAMkB,EAAM1C,KAAK0C,IAAIG,IAAI7C,KAAK+E,mBAC9BrC,EAAIiC,QACF,kBAAkBiD,EAAcpG,qBAAuBxB,KAAK0D,MAE9D,MAAMH,EAAWlB,EAAYoE,yBAAyBjF,EAAIzB,aACpD8H,EAAuBtE,EAASwD,QACtC,IAAKc,EAAqB/B,OAAQ,OAAOtE,EAEzC,MAAMb,EAAOX,KAEP2G,EAAgB,IAAIC,IAAY,CACpC,qBACA,sBAC2B,iBAApBC,EAAOC,SAAwBD,EAAOC,SAAW,kBAEpDgB,EAAQ,IAAIlB,IAAYrD,EAASyD,cACvCrF,OAAOoG,oBAAoBvG,GAAK8F,QAASvE,IAClC4D,EAAcQ,IAAIpE,IAAO+E,EAAME,IAAIjF,KAE1C,MAAMkF,EAA6BrC,MAAMsC,KAAKJ,GAAOZ,OAAQiB,IAC3D,GAAI5E,EAAS6D,oBAAoB1F,IAAIyG,GAAI,OAAO,EAChD,MAAMC,EAAS5G,EAAgC2G,GAC/C,SACEC,GACkB,iBAAVA,GAAuC,mBAAVA,IACrC9G,EAASO,gBAAgBuG,EAAMrI,gBAOnC2C,EAAIH,MACF,8BAA8BsF,EAAqB/D,KAAK,yBAAyBmE,EAAiBnE,KAAK,SAEzG,MAAMuE,EAAW,IAAI1F,MAAMnB,EAAK,CAC9BE,IAAG,CAACoB,EAAQC,EAAMC,IACZ6E,EAAqBS,SAASvF,GACzB,IAAIJ,MAAMG,EAAOC,GAAqC,CAC3DwF,MAAK,CAACC,EAAcC,EAASC,IACpBzF,QAAQsF,MAAMC,EAAcC,EAAS,CAAC9H,KAAS+H,MAIxDT,EAAiBK,SAASvF,GACrBpC,EAAKoE,kBAAkBjC,EAAOC,IAEhCE,QAAQvB,IAAIoB,EAAQC,EAAMC,KAerC,OAXAqF,EAASxB,EAAOC,UACdtF,EAAIqF,EAAOC,WAAatF,EAC1B6G,EAAS3D,SAAW,IAClBkD,EAAcS,EAASxB,EAAOC,WAC9B,0BACA9G,KAAK0D,GACN2E,EAAiBM,oBAAqB,EACtCN,EAAiBO,oBACfpH,EAAYoH,qBAAuBpH,EACtCa,EAAYc,SAASqE,IAAIa,EAAU1H,GAE5B0H,CACR,CAQO,kBAAAQ,CAAmBC,GACzB,GAAiC,GAA7BzG,EAAYG,cAAoB,OAAOsG,EAC3C,MAAMC,EAAY1G,EAAYG,cACxBE,EAAM1C,KAAK0C,IAAIG,IAAI7C,KAAK6I,oBAC9B,OAAO,IAAItI,QAAW,CAACC,EAASwD,KAC9B,IAAIgF,GAAU,EACd,MAAMC,EAAQ9H,WAAW,KACvB,GAAI6H,EAAS,OACb,MAAM9C,EAAQ,IAAIpE,EAChB,eAAe9B,KAAK0E,kCAAkCqE,OAExDrG,EAAIwG,KAAKhD,EAAMlE,SACfhC,KAAKU,QAAQwF,GAAOiD,MAAOC,GACzB1G,EAAIwD,MAAMkD,IAEZpF,EAAOkC,IACN6C,GAEHD,EACGO,KAAMjB,IACLY,GAAU,EACVM,aAAaL,GACbzI,EAAQ4H,KAETe,MAAO5C,IACNyC,GAAU,EACVM,aAAaL,GACbjF,EAAOuC,MAGd,CAOD,IAAAgD,GACE,IAAKvJ,KAAKsD,OAAQ,MAAUmC,MAAM,sBAClC,MAGM+D,EAHgBhF,UACbxE,KAAKsD,aAAetD,KAAKsD,cAAYiC,EAExBkE,GAChBX,EACJzG,EAAYG,cAAgB,EACxBxC,KAAK6I,mBAAmBW,GACxBA,EAaN,OAZKxJ,KAAKwD,wBACRxD,KAAKwD,uBAAwB,EAC7BsF,EACGO,KAAMhJ,IACLL,KAAKiE,oBAAoB5D,GAClBA,IAER8I,MAAO5C,IAEN,MADAvG,KAAKkE,mBAAmBqC,GAClBA,KAGLuC,CACR,CASQ,QAAApE,CAASgF,GAAS,EAAMC,GAAU,GACzC,MAAO,GAAGD,EAAS,IAAI1J,KAAK0D,MAAQ,mBAAmB1D,KAAKoD,UAAUpD,KAAKqD,SACzEsG,EAAU,wBAAwB3J,KAAK6D,KAAKC,KAAK,MAAU,KAE9D,CAED,yBAAO8F,CAAmBtE,GACxB,GAAKA,GAAaA,EAAgBqD,mBAGlC,OAAO3I,KAAKmD,SAASzB,IAAI4D,EAC1B,CAED,IAAAuE,GACE,OAAO7J,KAAK+D,UACb,CAEO,qBAAOM,CAAevB,GAC5B,GACa,OAAXA,GACmB,iBAAXA,GAAyC,mBAAXA,EAEtC,OAAO8E,EAAc9E,GAEvB,MAAMgH,EAAMhH,EACZ,IAAI4D,EAASvE,EAAgBT,IAAIoI,GAKjC,OAJKpD,IACHA,EAASkB,EAAc9E,GACvBX,EAAgBqF,IAAIsC,EAAKpD,IAEpBA,CACR,ECreG,MAAOJ,UAAwBhE,EAKnC,OAAaI,GAIX,OAHK1C,KAAW,OACdA,KAAW,KAAIqC,EAAiB,IAAEQ,IAAI7C,OAEjCA,KAAW,IACnB,CAEO,MAAA+J,CAAO1G,GAOb,OANKrD,KAAKgK,YAAY7C,IAAI9D,IACxBrD,KAAKgK,YAAYxC,IACfnE,EACArD,KAAK0C,IAAIG,IAAK7C,KAAwCqD,KAGnDrD,KAAKgK,YAAYtI,IAAI2B,EAC7B,CAID,WAAAtD,CACUkK,EAAkB,EACTC,EACAC,GAEjBlI,QAJQjC,KAAOiK,QAAPA,EACSjK,KAAOkK,QAAPA,EACAlK,KAAKmK,MAALA,EA1BXnK,KAAmBoK,oBAAuB,GAClDpK,KAAkBqK,wBAAsB9E,EACvBvF,KAAAgK,YAAc,IAAI3C,IAmBlBrH,KAAAoG,KAAO,IAAItG,CAQ3B,CAMD,YAAMkF,CAAUT,GACd,MAAM7B,EAAM1C,KAAK+J,OAAO,UAGxB,SAFM/J,KAAKoG,KAAK9F,UAChBoC,EAAI4H,MAAM,uCAAuC/F,EAAYb,IAE3D1D,KAAKqK,oBACLrK,KAAKqK,mBAAmB3G,KAAOa,EAAYb,GAI3C,OAFA1D,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,4CAA4C/F,EAAYb,IAC3Da,EAAYgF,OAErB,IAAIgB,EAaJ,OAZIvK,KAAKiK,QAAU,GACjBjK,KAAKiK,UACLjK,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,iCAAiC/F,EAAYb,IACvD6G,EAAgBvK,KAAKwK,gBAAgBjG,KAErC7B,EAAIH,MAAM,uBAAuBgC,EAAYb,mBAC7C1D,KAAKoK,oBAAoBxJ,KAAK2D,GAC9BgG,EAAgBhG,EAAYsF,OAC5B7J,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,2CAA2C/F,EAAYb,KAE5D6G,CACR,CAQO,qBAAMC,CAAmBjG,GAC/B,MAAM7B,EAAM1C,KAAK+J,OAAO,mBAaxB,aAZM/J,KAAKoG,KAAK9F,UAChBoC,EAAI4H,MAAM,oCAAoC/F,EAAYb,IAC1D1D,KAAKqK,mBAAqB9F,EAC1BvE,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,iCAAiC/F,EAAYb,IACnD1D,KAAKkK,UACPxH,EAAIiC,QAAQ,mCAAmCJ,EAAYb,UACrD1D,KAAKkK,WAEbxH,EAAI+H,KACF,wBAAwBlG,EAAYb,OAAO1D,KAAKoK,oBAAoBtE,uBAE/DvB,EAAYgF,MACpB,CAID,aAAM7I,CAAQ6F,GACZ,MAAM7D,EAAM1C,KAAK+J,OAAO,iBAElB/J,KAAKoG,KAAK9F,UACXN,KAAKqK,oBACR3H,EAAIwG,KACF,uEAEJxG,EAAIiC,QACF,yBAAyB3E,KAAKqK,oBAAoB3F,UAAS,GAAM,IAEnE,MAAMhB,EAAK1D,KAAKqK,oBAAoB3G,GAapC,GAZA1D,KAAKqK,wBAAqB9E,EAC1BvF,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,4CAA4C5G,GAClD1D,KAAKmK,QACPzH,EAAIiC,QAAQ,iCAAiCjB,SACvC1D,KAAKmK,MAAM5D,UAGbvG,KAAKoG,KAAK9F,UAChBoC,EAAI4H,MACF,8CAA8C5G,0CAE5C1D,KAAKoK,oBAAoBtE,OAAS,EAAG,CACvC,MAAMvB,EAAcvE,KAAKoK,oBAAoBtJ,QAEvC4J,EAAK,IACF1K,KAAKwK,gBAAgB1F,KAAK9E,KAAMuE,GAAa4E,MAAO5C,IACzDvG,KAAK0C,IAAIG,IAAI7C,KAAKwK,iBAAiBtE,MAAMK,KAG7C7D,EAAI4H,MAAM,WAAW/F,EAAYb,oBAC5BiH,IAGHxJ,WAAWuJ,EAAI,GAFf3J,WAAWE,QAAQC,SAASwJ,EAI/B,MACChI,EAAIH,MAAM,kDACVvC,KAAKiK,UAEPjK,KAAKoG,KAAK1F,UACVgC,EAAI4H,MAAM,8CAA8C5G,EACzD,ECjHa,SAAAkH,KAAiBC,GAwG/B,OAAOC,EAAWjI,IAAIzB,iBACnB2J,OAAO,CACNC,UAzGJ,IAA+BH,IACtB,CAAU/H,EAAamI,EAAmBC,KAC/C,IAAKA,EACH,MAAM,IAAInJ,EAAc,0CAgG1B,OA/FAsB,IAASP,EAAQmI,EAAaC,GAC9B5J,EAASkG,IACP1E,EAAO/C,YACPuB,EAASwI,IAAI1I,gBAAiC6J,GAC9C,CACEJ,KAAMA,IAGVK,EAAW9C,MAAQ,IAAIzF,MAAMuI,EAAW9C,MAAO,CAC7C5D,MAAW,MAAIhD,EAAUiH,EAAcC,IAC9B,IAAInI,QAAW,CAACC,EAASwD,KAC9BQ,eAAe2G,EACb5G,EACAgC,EACAlG,GAOA,OALIkG,GAASA,aAAed,OAAWpF,IACrCA,EAASkG,EACTA,OAAMhB,SAEFhB,EAAY7D,QAAQ6F,GACnBA,EACFvC,EAAOuC,GACP/F,EAAQH,EACd,CAED,MAAM+K,EAAY1C,EAAS,GACrB2C,EAA0B,MAC9B,IAAIC,EAAQ,EACZ,KACEA,EAAQ5C,EAAS5C,QACjB4C,EAAS4C,aAAkBjJ,GAE3BiJ,IAEF,OAAOA,CACR,EAT+B,GAU1BC,EACJF,EAA0B,EACtB3C,EAAS8C,MAAMH,GACf3C,EAEA+C,EACJL,aAAqB/I,EACjB+I,EACA/I,EAAYuH,mBAAmBnB,GAErC,GAAIgD,EAAmB,CACrB,MAAMC,EAAuC,IAAIrJ,EAC/CS,EAAOZ,KACP+I,EACAzG,UACE,IACE,OAAOhE,QACCyC,QAAQsF,MACZ/G,EACAkK,EAAmB3G,kBAAkB0D,GACrC8C,GAGL,CAAC,MAAO9K,GACP,OAAOuD,EAAOvD,EACf,GAEHoK,EAAK/E,OAAS+E,OAAOtF,GAEvBkG,EAAkBhE,gBAAgBiE,GAClCD,EAAkBlC,MACnB,KAAM,CACL,MAAMoC,EAAiC,IAAItJ,EACzCS,EAAOZ,KACP+I,EACAzG,UACE,IACE,OAAO2G,EACLQ,OACApG,QACMtC,QAAQsF,MACZ/G,EACAmK,EAAe5G,kBAAkB0D,GACjC8C,GAGL,CAAC,MAAO9K,GACP,OAAO0K,EAAaQ,EAAgBlL,EACrC,GAEHoK,EAAK/E,OAAS+E,OAAOtF,GAEvBlD,EAAY2C,OAAO2G,EACpB,MAKAT,CACT,EAMEhI,KAAM2H,IAEPtC,OACL,CC5HO,MAAMqD,EAAU,cAEVC,EAAe,cAE5BvK,EAASwK,gBAAgBD,EAAcD"}
|
|
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.2";
|
|
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/esm/locks/Lock.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { LockCallable } from "../types";
|
|
1
2
|
/**
|
|
2
3
|
* @description Base lock implementation for concurrency control
|
|
3
4
|
* @summary Provides a basic lock mechanism for controlling access to shared resources, with support for queuing and executing functions when the lock is available
|
|
@@ -11,22 +12,22 @@
|
|
|
11
12
|
* });
|
|
12
13
|
*/
|
|
13
14
|
export declare class Lock {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
protected queue: LockCallable[];
|
|
16
|
+
protected locked: boolean;
|
|
16
17
|
/**
|
|
17
18
|
* @description Executes a function with exclusive lock access
|
|
18
19
|
* @summary Acquires the lock, executes the provided function, and releases the lock afterward, ensuring proper cleanup even if the function throws an error
|
|
19
20
|
* @param {Function} func - The function to execute when the lock is acquired
|
|
20
21
|
* @return {Promise<any>} A promise that resolves with the result of the executed function
|
|
21
22
|
*/
|
|
22
|
-
execute(func: () => any): Promise<any>;
|
|
23
|
+
execute(func: () => any, ...args: any[]): Promise<any>;
|
|
23
24
|
/**
|
|
24
25
|
* @summary waits to acquire the lock
|
|
25
26
|
* @param {string} [issuer]
|
|
26
27
|
*/
|
|
27
|
-
acquire(): Promise<void>;
|
|
28
|
+
acquire(...args: any[]): Promise<void>;
|
|
28
29
|
/**
|
|
29
30
|
* @summary releases the lock
|
|
30
31
|
*/
|
|
31
|
-
release(): void;
|
|
32
|
+
release(...args: any[]): void;
|
|
32
33
|
}
|
package/lib/esm/locks/Lock.js
CHANGED
|
@@ -21,7 +21,8 @@ export class Lock {
|
|
|
21
21
|
* @param {Function} func - The function to execute when the lock is acquired
|
|
22
22
|
* @return {Promise<any>} A promise that resolves with the result of the executed function
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
async execute(func, ...args) {
|
|
25
26
|
await this.acquire();
|
|
26
27
|
let result;
|
|
27
28
|
try {
|
|
@@ -38,7 +39,8 @@ export class Lock {
|
|
|
38
39
|
* @summary waits to acquire the lock
|
|
39
40
|
* @param {string} [issuer]
|
|
40
41
|
*/
|
|
41
|
-
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
43
|
+
async acquire(...args) {
|
|
42
44
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
43
45
|
const self = this;
|
|
44
46
|
if (self.locked) {
|
|
@@ -52,7 +54,8 @@ export class Lock {
|
|
|
52
54
|
/**
|
|
53
55
|
* @summary releases the lock
|
|
54
56
|
*/
|
|
55
|
-
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
58
|
+
release(...args) {
|
|
56
59
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
57
60
|
const self = this;
|
|
58
61
|
const next = self.queue.shift();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../../src/locks/Lock.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,IAAI;IAAjB;
|
|
1
|
+
{"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../../src/locks/Lock.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,IAAI;IAAjB;QACY,UAAK,GAAmB,EAAE,CAAC;QAC3B,WAAM,GAAG,KAAK,CAAC;IAwD3B,CAAC;IAtDC;;;;;OAKG;IACH,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,IAAe,EAAE,GAAG,IAAW;QAC3C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,GAAG,IAAW;QAC1B,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,6DAA6D;IAC7D,OAAO,CAAC,GAAG,IAAW;QACpB,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,EAAE,CAAC;YACT,IACE,OAAQ,UAAyC,CAAC,MAAM,KAAK,WAAW;gBAExE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;;gBACrD,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Lock } from "./Lock";
|
|
2
|
+
export declare class MultiLock extends Lock {
|
|
3
|
+
protected locks: Record<string, Lock>;
|
|
4
|
+
protected lock: Lock;
|
|
5
|
+
constructor();
|
|
6
|
+
protected lockFor(name: string): Promise<Lock>;
|
|
7
|
+
execute(func: () => any, name: string, ...args: any[]): Promise<any>;
|
|
8
|
+
acquire(name: string, ...args: any[]): Promise<void>;
|
|
9
|
+
release(name: string, ...args: any[]): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Lock } from "./Lock.js";
|
|
2
|
+
export class MultiLock extends Lock {
|
|
3
|
+
constructor() {
|
|
4
|
+
super();
|
|
5
|
+
this.locks = {};
|
|
6
|
+
this.lock = new Lock();
|
|
7
|
+
}
|
|
8
|
+
async lockFor(name) {
|
|
9
|
+
await this.lock.acquire();
|
|
10
|
+
if (!this.locks[name])
|
|
11
|
+
this.locks[name] = new Lock();
|
|
12
|
+
this.lock.release();
|
|
13
|
+
return this.locks[name];
|
|
14
|
+
}
|
|
15
|
+
async execute(func, name, ...args) {
|
|
16
|
+
const lock = await this.lockFor(name);
|
|
17
|
+
return lock.execute(func, ...args);
|
|
18
|
+
}
|
|
19
|
+
async acquire(name, ...args) {
|
|
20
|
+
const lock = await this.lockFor(name);
|
|
21
|
+
return lock.acquire(...args);
|
|
22
|
+
}
|
|
23
|
+
release(name, ...args) {
|
|
24
|
+
if (!(name in this.locks))
|
|
25
|
+
throw new Error(`Trying to release a non existing lock. should be impossible`);
|
|
26
|
+
const lock = this.locks[name];
|
|
27
|
+
return lock.release(...args);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=MultiLock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiLock.js","sourceRoot":"","sources":["../../../src/locks/MultiLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,kBAAe;AAE9B,MAAM,OAAO,SAAU,SAAQ,IAAI;IAIjC;QACE,KAAK,EAAE,CAAC;QAJA,UAAK,GAAyB,EAAE,CAAC;QACjC,SAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAI5B,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAY;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,IAAe,EACf,IAAY,EACZ,GAAG,IAAW;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAAG,IAAW;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEQ,OAAO,CAAC,IAAY,EAAE,GAAG,IAAW;QAC3C,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
package/lib/esm/locks/index.d.ts
CHANGED
package/lib/esm/locks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/locks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAAuB;AACvB,qCAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/locks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAAuB;AACvB,+BAA4B;AAC5B,qCAAkC"}
|
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.2";
|
|
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
package/lib/locks/Lock.cjs
CHANGED
|
@@ -24,7 +24,8 @@ class Lock {
|
|
|
24
24
|
* @param {Function} func - The function to execute when the lock is acquired
|
|
25
25
|
* @return {Promise<any>} A promise that resolves with the result of the executed function
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28
|
+
async execute(func, ...args) {
|
|
28
29
|
await this.acquire();
|
|
29
30
|
let result;
|
|
30
31
|
try {
|
|
@@ -41,7 +42,8 @@ class Lock {
|
|
|
41
42
|
* @summary waits to acquire the lock
|
|
42
43
|
* @param {string} [issuer]
|
|
43
44
|
*/
|
|
44
|
-
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
46
|
+
async acquire(...args) {
|
|
45
47
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
46
48
|
const self = this;
|
|
47
49
|
if (self.locked) {
|
|
@@ -55,7 +57,8 @@ class Lock {
|
|
|
55
57
|
/**
|
|
56
58
|
* @summary releases the lock
|
|
57
59
|
*/
|
|
58
|
-
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
61
|
+
release(...args) {
|
|
59
62
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
60
63
|
const self = this;
|
|
61
64
|
const next = self.queue.shift();
|
package/lib/locks/Lock.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { LockCallable } from "../types";
|
|
1
2
|
/**
|
|
2
3
|
* @description Base lock implementation for concurrency control
|
|
3
4
|
* @summary Provides a basic lock mechanism for controlling access to shared resources, with support for queuing and executing functions when the lock is available
|
|
@@ -11,22 +12,22 @@
|
|
|
11
12
|
* });
|
|
12
13
|
*/
|
|
13
14
|
export declare class Lock {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
protected queue: LockCallable[];
|
|
16
|
+
protected locked: boolean;
|
|
16
17
|
/**
|
|
17
18
|
* @description Executes a function with exclusive lock access
|
|
18
19
|
* @summary Acquires the lock, executes the provided function, and releases the lock afterward, ensuring proper cleanup even if the function throws an error
|
|
19
20
|
* @param {Function} func - The function to execute when the lock is acquired
|
|
20
21
|
* @return {Promise<any>} A promise that resolves with the result of the executed function
|
|
21
22
|
*/
|
|
22
|
-
execute(func: () => any): Promise<any>;
|
|
23
|
+
execute(func: () => any, ...args: any[]): Promise<any>;
|
|
23
24
|
/**
|
|
24
25
|
* @summary waits to acquire the lock
|
|
25
26
|
* @param {string} [issuer]
|
|
26
27
|
*/
|
|
27
|
-
acquire(): Promise<void>;
|
|
28
|
+
acquire(...args: any[]): Promise<void>;
|
|
28
29
|
/**
|
|
29
30
|
* @summary releases the lock
|
|
30
31
|
*/
|
|
31
|
-
release(): void;
|
|
32
|
+
release(...args: any[]): void;
|
|
32
33
|
}
|
package/lib/locks/Lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../src/locks/Lock.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AACH,MAAa,IAAI;IAAjB;
|
|
1
|
+
{"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../src/locks/Lock.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AACH,MAAa,IAAI;IAAjB;QACY,UAAK,GAAmB,EAAE,CAAC;QAC3B,WAAM,GAAG,KAAK,CAAC;IAwD3B,CAAC;IAtDC;;;;;OAKG;IACH,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,IAAe,EAAE,GAAG,IAAW;QAC3C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,GAAG,IAAW;QAC1B,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,6DAA6D;IAC7D,OAAO,CAAC,GAAG,IAAW;QACpB,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,EAAE,CAAC;YACT,IACE,OAAQ,UAAyC,CAAC,MAAM,KAAK,WAAW;gBAExE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;;gBACrD,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;CACF;AA1DD,oBA0DC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiLock = void 0;
|
|
4
|
+
const Lock_1 = require("./Lock.cjs");
|
|
5
|
+
class MultiLock extends Lock_1.Lock {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.locks = {};
|
|
9
|
+
this.lock = new Lock_1.Lock();
|
|
10
|
+
}
|
|
11
|
+
async lockFor(name) {
|
|
12
|
+
await this.lock.acquire();
|
|
13
|
+
if (!this.locks[name])
|
|
14
|
+
this.locks[name] = new Lock_1.Lock();
|
|
15
|
+
this.lock.release();
|
|
16
|
+
return this.locks[name];
|
|
17
|
+
}
|
|
18
|
+
async execute(func, name, ...args) {
|
|
19
|
+
const lock = await this.lockFor(name);
|
|
20
|
+
return lock.execute(func, ...args);
|
|
21
|
+
}
|
|
22
|
+
async acquire(name, ...args) {
|
|
23
|
+
const lock = await this.lockFor(name);
|
|
24
|
+
return lock.acquire(...args);
|
|
25
|
+
}
|
|
26
|
+
release(name, ...args) {
|
|
27
|
+
if (!(name in this.locks))
|
|
28
|
+
throw new Error(`Trying to release a non existing lock. should be impossible`);
|
|
29
|
+
const lock = this.locks[name];
|
|
30
|
+
return lock.release(...args);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.MultiLock = MultiLock;
|
|
34
|
+
//# sourceMappingURL=MultiLock.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Lock } from "./Lock";
|
|
2
|
+
export declare class MultiLock extends Lock {
|
|
3
|
+
protected locks: Record<string, Lock>;
|
|
4
|
+
protected lock: Lock;
|
|
5
|
+
constructor();
|
|
6
|
+
protected lockFor(name: string): Promise<Lock>;
|
|
7
|
+
execute(func: () => any, name: string, ...args: any[]): Promise<any>;
|
|
8
|
+
acquire(name: string, ...args: any[]): Promise<void>;
|
|
9
|
+
release(name: string, ...args: any[]): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiLock.js","sourceRoot":"","sources":["../../src/locks/MultiLock.ts"],"names":[],"mappings":";;;AAAA,qCAA8B;AAE9B,MAAa,SAAU,SAAQ,WAAI;IAIjC;QACE,KAAK,EAAE,CAAC;QAJA,UAAK,GAAyB,EAAE,CAAC;QACjC,SAAI,GAAG,IAAI,WAAI,EAAE,CAAC;IAI5B,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAY;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,WAAI,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,IAAe,EACf,IAAY,EACZ,GAAG,IAAW;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAAG,IAAW;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEQ,OAAO,CAAC,IAAY,EAAE,GAAG,IAAW;QAC3C,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AArCD,8BAqCC"}
|
package/lib/locks/index.cjs
CHANGED
|
@@ -20,5 +20,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
__exportStar(require("./Lock.cjs"), exports);
|
|
23
|
+
__exportStar(require("./MultiLock.cjs"), exports);
|
|
23
24
|
__exportStar(require("./SynchronousLock.cjs"), exports);
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/lib/locks/index.d.ts
CHANGED
package/lib/locks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locks/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,6CAAuB;AACvB,wDAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locks/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,6CAAuB;AACvB,kDAA4B;AAC5B,wDAAkC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/transactional-decorators",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "Locking and transactions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"lint": "eslint .",
|
|
28
28
|
"lint-fix": "eslint --fix .",
|
|
29
29
|
"prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
30
|
-
"prepare-release": "npm run lint-fix && npm run build:prod && npm run docs",
|
|
30
|
+
"prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
31
31
|
"release": "./bin/tag-release.sh",
|
|
32
32
|
"clean-publish": "npx clean-publish",
|
|
33
33
|
"drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
|
|
@@ -52,7 +52,8 @@
|
|
|
52
52
|
},
|
|
53
53
|
"files": [
|
|
54
54
|
"lib",
|
|
55
|
-
"dist"
|
|
55
|
+
"dist",
|
|
56
|
+
"workdocs/assets/slogans.json"
|
|
56
57
|
],
|
|
57
58
|
"keywords": [
|
|
58
59
|
"transactions",
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"Slogan": "Transactional‑Decorators: commit your code without committing your caffeine overdose.",
|
|
4
|
+
"Tags": "Transactions, Coffee‑themed, Calm"
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"Slogan": "Decorate your methods with @transactional like you garnish your latte.",
|
|
8
|
+
"Tags": "Decorators, Fun, Technical"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"Slogan": "Begin transaction. Sip decaf. Then commit without the crash.",
|
|
12
|
+
"Tags": "Workflow, Calm, Coffee‑themed"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"Slogan": "Lock, save, rollback—while your heart rate stays mellow.",
|
|
16
|
+
"Tags": "Transactions, Chill, Developer"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"Slogan": "When your methods execute calmly, your database stays sane.",
|
|
20
|
+
"Tags": "DeveloperDX, Calm, Technical"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"Slogan": "Batch operations? Just another day at the café.",
|
|
24
|
+
"Tags": "BatchOps, Metaphor, Coffee‑themed"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"Slogan": "No caffeine jitters—just ACID comforts.",
|
|
28
|
+
"Tags": "ACID, Humor, Technical"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"Slogan": "Let your service classes relax—transactional support’s got your back.",
|
|
32
|
+
"Tags": "Services, Calm, Developer"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"Slogan": "Methods wrapped in @transactional: because code should run like a decaf drip.",
|
|
36
|
+
"Tags": "Decorators, Coffee‑themed, Tech"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"Slogan": "Start, commit, end—handled quietly, like a gentle espresso pour.",
|
|
40
|
+
"Tags": "Workflow, Calm, Coffee‑themed"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"Slogan": "Transactional context: your code’s relaxation lounge.",
|
|
44
|
+
"Tags": "Context, Chill, Developer"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"Slogan": "Errors within a transaction? Rollback, breathe, and move on.",
|
|
48
|
+
"Tags": "ErrorHandling, Calm, Technical"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"Slogan": "Your methods coffee‑break while the transaction runs.",
|
|
52
|
+
"Tags": "Metaphor, Fun, Developer"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"Slogan": "Commit the change. Keep the calm.",
|
|
56
|
+
"Tags": "Commit, Calm, Technical"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"Slogan": "Decorator‑driven transactions so you don’t transact your blood pressure.",
|
|
60
|
+
"Tags": "Decorators, Humor, Calm"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"Slogan": "When concurrency looms, splash in decaf and stay ready.",
|
|
64
|
+
"Tags": "Concurrency, Coffee‑themed, Developer"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"Slogan": "Transaction boundaries without the caffeine boundaries.",
|
|
68
|
+
"Tags": "Boundaries, Calm, Technical"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"Slogan": "Lock your data, unlock your dev chill.",
|
|
72
|
+
"Tags": "Locking, Chill, Developer"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"Slogan": "From method start to transaction end—smooth as a decaf latte.",
|
|
76
|
+
"Tags": "Workflow, Coffee‑themed, Tech"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"Slogan": "Isolation levels? More like relaxation levels.",
|
|
80
|
+
"Tags": "Isolation, Humor, Technical"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"Slogan": "Decorate once. Transact forever. Heart rate unchanged.",
|
|
84
|
+
"Tags": "Decorators, Calm, Developer"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"Slogan": "Avoid commit storms and caffeine storms alike.",
|
|
88
|
+
"Tags": "Commits, Humor, Calm"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"Slogan": "Your code runs slow‑brew, not sprint‑brew.",
|
|
92
|
+
"Tags": "Performance, Metaphor, Coffee‑themed"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"Slogan": "Transaction manager in one hand, decaf in the other.",
|
|
96
|
+
"Tags": "Developer, Coffee‑themed, Fun"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"Slogan": "Rollback made polite. No caffeine crash required.",
|
|
100
|
+
"Tags": "Rollback, Calm, Technical"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"Slogan": "Atomic operations served with a side of serenity.",
|
|
104
|
+
"Tags": "Atomicity, Calm, Developer"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"Slogan": "Decorator meets transaction meets developer zen.",
|
|
108
|
+
"Tags": "Decorators, Calm, Developer"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"Slogan": "Start your unit of work. Start your decaf drip.",
|
|
112
|
+
"Tags": "UnitOfWork, Coffee‑themed, Tech"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"Slogan": "Transaction boundaries that don’t boundary your sleep.",
|
|
116
|
+
"Tags": "Sleep, Calm, Developer"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"Slogan": "Your DB commit queue shouldn’t spike your adrenaline.",
|
|
120
|
+
"Tags": "Database, Calm, Technical"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"Slogan": "Let your transaction finish before your coffee cools.",
|
|
124
|
+
"Tags": "Timing, Coffee‑themed, Fun"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"Slogan": "Because your data deserves the same decaf treatment as your code.",
|
|
128
|
+
"Tags": "Data, Coffee‑themed, Developer"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"Slogan": "Transactions handled. Features shipped. Jitters avoided.",
|
|
132
|
+
"Tags": "Workflow, Productivity, Calm"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"Slogan": "Decorator‑based transaction control: lean code, relaxed developers.",
|
|
136
|
+
"Tags": "Decorators, DeveloperDX, Calm"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"Slogan": "Isolation, atomicity and peace of mind.",
|
|
140
|
+
"Tags": "ACID, Calm, Technical"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"Slogan": "Your method calls get the lounge‑treatment.",
|
|
144
|
+
"Tags": "MethodCalls, Metaphor, Chill"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"Slogan": "No caffeine sprint. Just a smooth commit.",
|
|
148
|
+
"Tags": "Commit, Coffee‑themed, Developer"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"Slogan": "Your architecture’s in‑between‑transaction nap zone.",
|
|
152
|
+
"Tags": "Architecture, Relaxed, Developer"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"Slogan": "Avoid accidental double‑commit binges.",
|
|
156
|
+
"Tags": "Bugs, Calm, Technical"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"Slogan": "Wrap your services in calm, not in a caffeine frenzy.",
|
|
160
|
+
"Tags": "Services, Calm, Coffee‑themed"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"Slogan": "Transaction decorators: your code’s coffee break.",
|
|
164
|
+
"Tags": "Decorators, Coffee‑themed, Fun"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"Slogan": "Commit when ready. Relax always.",
|
|
168
|
+
"Tags": "Commit, Chill, Developer"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"Slogan": "Transactional‑Decorators: because even your database deserves decaf code.",
|
|
172
|
+
"Tags": "Branding, Coffee‑themed, Calm"
|
|
173
|
+
}
|
|
174
|
+
]
|