@decaf-ts/transactional-decorators 0.0.4 → 0.0.5
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 +4 -4
- package/dist/esm/transactional-decorators.bundle.min.esm.js +1 -1
- package/dist/transactional-decorators.bundle.min.js +1 -1
- package/lib/Transaction.cjs +152 -3
- package/lib/Transaction.d.ts +7 -0
- package/lib/constants.cjs +9 -1
- package/lib/decorators.cjs +166 -1
- package/lib/decorators.d.ts +0 -7
- package/lib/esm/Transaction.d.ts +7 -0
- package/lib/esm/Transaction.js +148 -3
- package/lib/esm/constants.js +6 -1
- package/lib/esm/decorators.d.ts +0 -7
- package/lib/esm/decorators.js +162 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +26 -1
- package/lib/esm/interfaces/TransactionLock.js +3 -0
- package/lib/esm/interfaces/index.js +3 -1
- package/lib/esm/locks/Lock.js +63 -1
- package/lib/esm/locks/SyncronousLock.js +117 -1
- package/lib/esm/locks/index.js +4 -1
- package/lib/esm/types.js +3 -0
- package/lib/esm/utils.js +15 -1
- package/lib/index.cjs +43 -1
- package/lib/index.d.ts +1 -1
- package/lib/interfaces/TransactionLock.cjs +4 -1
- package/lib/interfaces/index.cjs +19 -1
- package/lib/locks/Lock.cjs +67 -1
- package/lib/locks/SyncronousLock.cjs +121 -1
- package/lib/locks/index.cjs +20 -1
- package/lib/types.cjs +4 -1
- package/lib/utils.cjs +18 -1
- package/package.json +21 -18
|
@@ -1 +1,121 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SyncronousLock = void 0;
|
|
4
|
+
const Lock_1 = require("./Lock.cjs");
|
|
5
|
+
class SyncronousLock {
|
|
6
|
+
constructor(counter = 1, onBegin, onEnd) {
|
|
7
|
+
this.currentTransaction = undefined;
|
|
8
|
+
this.lock = new Lock_1.Lock();
|
|
9
|
+
this.counter = counter;
|
|
10
|
+
this.pendingTransactions = [];
|
|
11
|
+
this.onBegin = onBegin;
|
|
12
|
+
this.onEnd = onEnd;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @summary Submits a transaction to be processed
|
|
16
|
+
* @param {Transaction} transaction
|
|
17
|
+
*/
|
|
18
|
+
submit(transaction) {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
20
|
+
const self = this;
|
|
21
|
+
self.lock.acquire().then(() => {
|
|
22
|
+
if (self.currentTransaction &&
|
|
23
|
+
self.currentTransaction.id === transaction.id) {
|
|
24
|
+
self.lock.release();
|
|
25
|
+
return transaction.fire();
|
|
26
|
+
}
|
|
27
|
+
if (self.counter > 0) {
|
|
28
|
+
self.counter--;
|
|
29
|
+
self.lock.release();
|
|
30
|
+
return self.fireTransaction(transaction);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
self.pendingTransactions.push(transaction);
|
|
34
|
+
self.lock.release();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @summary Executes a transaction
|
|
40
|
+
*
|
|
41
|
+
* @param {Transaction} transaction
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
fireTransaction(transaction) {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
46
|
+
const self = this;
|
|
47
|
+
self.lock.acquire().then(() => {
|
|
48
|
+
self.currentTransaction = transaction;
|
|
49
|
+
self.lock.release();
|
|
50
|
+
if (self.onBegin)
|
|
51
|
+
self.onBegin().then(() => {
|
|
52
|
+
// all.call(
|
|
53
|
+
// self,
|
|
54
|
+
// `Firing transaction {0}. {1} remaining...`,
|
|
55
|
+
// transaction.id,
|
|
56
|
+
// this.pendingTransactions.length,
|
|
57
|
+
// );
|
|
58
|
+
transaction.fire();
|
|
59
|
+
});
|
|
60
|
+
else {
|
|
61
|
+
// all.call(
|
|
62
|
+
// self,
|
|
63
|
+
// `Firing transaction {0}. {1} remaining...`,
|
|
64
|
+
// transaction.id,
|
|
65
|
+
// this.pendingTransactions.length,
|
|
66
|
+
// );
|
|
67
|
+
transaction.fire();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @summary Releases The lock after the conclusion of a transaction
|
|
73
|
+
*/
|
|
74
|
+
async release(err) {
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
76
|
+
const self = this;
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
self.lock.acquire().then(() => {
|
|
79
|
+
if (!self.currentTransaction)
|
|
80
|
+
console.warn("Trying to release an unexisting transaction. should never happen...");
|
|
81
|
+
// debug.call(
|
|
82
|
+
// self,
|
|
83
|
+
// "Releasing transaction: {0}",
|
|
84
|
+
// self.currentTransaction?.toString(true, true),
|
|
85
|
+
// );
|
|
86
|
+
self.currentTransaction = undefined;
|
|
87
|
+
self.lock.release();
|
|
88
|
+
const afterConclusionCB = () => {
|
|
89
|
+
self.lock.acquire().then(() => {
|
|
90
|
+
if (self.pendingTransactions.length > 0) {
|
|
91
|
+
const transaction = self.pendingTransactions.shift();
|
|
92
|
+
const cb = () => self.fireTransaction(transaction);
|
|
93
|
+
//
|
|
94
|
+
// all(
|
|
95
|
+
// `Releasing Transaction Lock on transaction {0}`,
|
|
96
|
+
// transaction.id,
|
|
97
|
+
// );
|
|
98
|
+
if (typeof globalThis.window ===
|
|
99
|
+
"undefined")
|
|
100
|
+
globalThis.process.nextTick(cb); // if you are on node
|
|
101
|
+
else
|
|
102
|
+
setTimeout(cb, 0); // if you are in the browser
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
self.counter++;
|
|
106
|
+
}
|
|
107
|
+
self.lock.release();
|
|
108
|
+
resolve();
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
if (self.onEnd)
|
|
112
|
+
self.onEnd(err).then(() => afterConclusionCB());
|
|
113
|
+
else
|
|
114
|
+
afterConclusionCB();
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.SyncronousLock = SyncronousLock;
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9sb2Nrcy9TeW5jcm9ub3VzTG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFlQSxpQ0FBOEI7QUFFOUIsTUFBYSxjQUFjO0lBU3pCLFlBQ0UsVUFBa0IsQ0FBQyxFQUNuQixPQUE2QixFQUM3QixLQUFzQztRQVR4Qyx1QkFBa0IsR0FBaUIsU0FBUyxDQUFDO1FBSTVCLFNBQUksR0FBRyxJQUFJLFdBQUksRUFBRSxDQUFDO1FBT2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUF3QjtRQUM3Qiw0REFBNEQ7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUNFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFDN0MsQ0FBQztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMs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QUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDOztvQkFDM0QsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcElELHdDQW9JQyIsImZpbGUiOiJsb2Nrcy9TeW5jcm9ub3VzTG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgU2ltcGxlIFN5bmNocm9ub3VzIExvY2sgaW1wbGVtZW50YXRpb25cbiAqIEBkZXNjcmlwdGlvbiBmb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudFxuICogYWRhcHRlZCBmcm9tIHtAbGluayBodHRwczovL3d3dy50YWxraW5naGlnaHRlY2guY29tL2VuL2NyZWF0aW5nLWEtanMtbG9jay1mb3ItYS1yZXNvdXJjZS99XG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IFtjb3VudGVyXSB0aGUgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0cmFuc2FjdGlvbnMgYWxsb3dlZC4gZGVmYXVsdHMgdG8gMVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29uQmVnaW5dIHRvIGJlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25FbmRdIHRvIGJlIGNhbGxlZCBhdCB0aGUgY29uY2x1c2lvbiBvZiB0aGUgdHJhbnNhY3Rpb25cbiAqXG4gKiBAY2xhc3MgU3luY3Jvbm91c0xvY2tcbiAqIEBpbXBsZW1lbnRzIFRyYW5zYWN0aW9uTG9ja1xuICpcbiAqIEBjYXRlZ29yeSBUcmFuc2FjdGlvbnNcbiAqLyBpbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gXCIuLi9UcmFuc2FjdGlvblwiO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Mb2NrIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvVHJhbnNhY3Rpb25Mb2NrXCI7XG5pbXBvcnQgeyBMb2NrIH0gZnJvbSBcIi4vTG9ja1wiO1xuXG5leHBvcnQgY2xhc3MgU3luY3Jvbm91c0xvY2sgaW1wbGVtZW50cyBUcmFuc2FjdGlvbkxvY2sge1xuICBwcml2YXRlIGNvdW50ZXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBwZW5kaW5nVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdO1xuICBjdXJyZW50VHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbiA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkJlZ2luPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVuZD86IChlcnI/OiBFcnJvcikgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2sgPSBuZXcgTG9jaygpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvdW50ZXI6IG51bWJlciA9IDEsXG4gICAgb25CZWdpbj86ICgpID0+IFByb21pc2U8dm9pZD4sXG4gICAgb25FbmQ/OiAoZXJyPzogRXJyb3IpID0+IFByb21pc2U8dm9pZD4sXG4gICkge1xuICAgIHRoaXMuY291bnRlciA9IGNvdW50ZXI7XG4gICAgdGhpcy5wZW5kaW5nVHJhbnNhY3Rpb25zID0gW107XG4gICAgdGhpcy5vbkJlZ2luID0gb25CZWdpbjtcbiAgICB0aGlzLm9uRW5kID0gb25FbmQ7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgU3VibWl0cyBhIHRyYW5zYWN0aW9uIHRvIGJlIHByb2Nlc3NlZFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKi9cbiAgc3VibWl0KHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHNlbGYubG9jay5hY3F1aXJlKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHNlbGYuY3VycmVudFRyYW5zYWN0aW9uICYmXG4gICAgICAgIHNlbGYuY3VycmVudFRyYW5zYWN0aW9uLmlkID09PSB0cmFuc2FjdGlvbi5pZFxuICAgICAgKSB7XG4gICAgICAgIHNlbGYubG9jay5yZWxlYXNlKCk7XG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5maXJlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmNvdW50ZXIgPiAwKSB7XG4gICAgICAgIHNlbGYuY291bnRlci0tO1xuICAgICAgICBzZWxmLmxvY2sucmVsZWFzZSgpO1xuICAgICAgICByZXR1cm4gc2VsZi5maXJlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5wZW5kaW5nVHJhbnNhY3Rpb25zLnB1c2godHJhbnNhY3Rpb24pO1xuICAgICAgICBzZWxmLmxvY2sucmVsZWFzZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIGEgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZmlyZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHNlbGYubG9jay5hY3F1aXJlKCkudGhlbigoKSA9PiB7XG4gICAgICBzZWxmLmN1cnJlbnRUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICAgICAgc2VsZi5sb2NrLnJlbGVhc2UoKTtcbiAgICAgIGlmIChzZWxmLm9uQmVnaW4pXG4gICAgICAgIHNlbGYub25CZWdpbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vIGFsbC5jYWxsKFxuICAgICAgICAgIC8vICAgc2VsZixcbiAgICAgICAgICAvLyAgIGBGaXJpbmcgdHJhbnNhY3Rpb24gezB9LiB7MX0gcmVtYWluaW5nLi4uYCxcbiAgICAgICAgICAvLyAgIHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgIC8vICAgdGhpcy5wZW5kaW5nVHJhbnNhY3Rpb25zLmxlbmd0aCxcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIHRyYW5zYWN0aW9uLmZpcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gYWxsLmNhbGwoXG4gICAgICAgIC8vICAgc2VsZixcbiAgICAgICAgLy8gICBgRmlyaW5nIHRyYW5zYWN0aW9uIHswfS4gezF9IHJlbWFpbmluZy4uLmAsXG4gICAgICAgIC8vICAgdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgIC8vICAgdGhpcy5wZW5kaW5nVHJhbnNhY3Rpb25zLmxlbmd0aCxcbiAgICAgICAgLy8gKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZmlyZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWxlYXNlcyBUaGUgbG9jayBhZnRlciB0aGUgY29uY2x1c2lvbiBvZiBhIHRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyByZWxlYXNlKGVycj86IEVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzZWxmLmxvY2suYWNxdWlyZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAoIXNlbGYuY3VycmVudFRyYW5zYWN0aW9uKVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiVHJ5aW5nIHRvIHJlbGVhc2UgYW4gdW5leGlzdGluZyB0cmFuc2FjdGlvbi4gc2hvdWxkIG5ldmVyIGhhcHBlbi4uLlwiLFxuICAgICAgICAgICk7XG4gICAgICAgIC8vIGRlYnVnLmNhbGwoXG4gICAgICAgIC8vICAgc2VsZixcbiAgICAgICAgLy8gICBcIlJlbGVhc2luZyB0cmFuc2FjdGlvbjogezB9XCIsXG4gICAgICAgIC8vICAgc2VsZi5jdXJyZW50VHJhbnNhY3Rpb24/LnRvU3RyaW5nKHRydWUsIHRydWUpLFxuICAgICAgICAvLyApO1xuICAgICAgICBzZWxmLmN1cnJlbnRUcmFuc2FjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2VsZi5sb2NrLnJlbGVhc2UoKTtcblxuICAgICAgICBjb25zdCBhZnRlckNvbmNsdXNpb25DQiA9ICgpID0+IHtcbiAgICAgICAgICBzZWxmLmxvY2suYWNxdWlyZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ1RyYW5zYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID1cbiAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdUcmFuc2FjdGlvbnMuc2hpZnQoKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgICAgICAgICBjb25zdCBjYiA9ICgpID0+IHNlbGYuZmlyZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gYWxsKFxuICAgICAgICAgICAgICAvLyAgIGBSZWxlYXNpbmcgVHJhbnNhY3Rpb24gTG9jayBvbiB0cmFuc2FjdGlvbiB7MH1gLFxuICAgICAgICAgICAgICAvLyAgIHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgKGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyB7IHdpbmRvdzogYW55IH0pLndpbmRvdyA9PT1cbiAgICAgICAgICAgICAgICBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MubmV4dFRpY2soY2IpOyAvLyBpZiB5b3UgYXJlIG9uIG5vZGVcbiAgICAgICAgICAgICAgZWxzZSBzZXRUaW1lb3V0KGNiLCAwKTsgLy8gaWYgeW91IGFyZSBpbiB0aGUgYnJvd3NlclxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2VsZi5jb3VudGVyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmxvY2sucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzZWxmLm9uRW5kKSBzZWxmLm9uRW5kKGVycikudGhlbigoKSA9PiBhZnRlckNvbmNsdXNpb25DQigpKTtcbiAgICAgICAgZWxzZSBhZnRlckNvbmNsdXNpb25DQigpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/locks/index.cjs
CHANGED
|
@@ -1 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Lock.cjs"), exports);
|
|
18
|
+
__exportStar(require("./SyncronousLock.cjs"), exports);
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9sb2Nrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLG1EQUFpQyIsImZpbGUiOiJsb2Nrcy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0xvY2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N5bmNyb25vdXNMb2NrXCI7XG4iXX0=
|
package/lib/types.cjs
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InR5cGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBkZWZpbmVzIGEgY2FsbGFibGUgYXMgcGVyY2VpdmVkIGJ5IHRoZSBsb2NrXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzLlRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgdHlwZSBMb2NrQ2FsbGFibGUgPSAodmFsdWU/OiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIENhbGxiYWNrID0gKGVycj86IEVycm9yLCByZXN1bHQ/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuIl19
|
package/lib/utils.cjs
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObjectName = getObjectName;
|
|
4
|
+
function getObjectName(obj) {
|
|
5
|
+
if (!obj)
|
|
6
|
+
return;
|
|
7
|
+
if (typeof obj === "string")
|
|
8
|
+
return obj;
|
|
9
|
+
if (obj.constructor &&
|
|
10
|
+
obj.constructor.name &&
|
|
11
|
+
["Function", "Object"].indexOf(obj.constructor.name) === -1)
|
|
12
|
+
return obj.constructor.name;
|
|
13
|
+
if (typeof obj === "function" && obj.name)
|
|
14
|
+
return obj.name;
|
|
15
|
+
return obj.toString();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQVdDO0FBWEQsU0FBZ0IsYUFBYSxDQUFDLEdBQVE7SUFDcEMsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPO0lBQ2pCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3hDLElBQ0UsR0FBRyxDQUFDLFdBQVc7UUFDZixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUk7UUFDcEIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNELE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDOUIsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxDQUFDLElBQUk7UUFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDM0QsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEIsQ0FBQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3ROYW1lKG9iajogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFvYmopIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiBvYmo7XG4gIGlmIChcbiAgICBvYmouY29uc3RydWN0b3IgJiZcbiAgICBvYmouY29uc3RydWN0b3IubmFtZSAmJlxuICAgIFtcIkZ1bmN0aW9uXCIsIFwiT2JqZWN0XCJdLmluZGV4T2Yob2JqLmNvbnN0cnVjdG9yLm5hbWUpID09PSAtMVxuICApXG4gICAgcmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5uYW1lKSByZXR1cm4gb2JqLm5hbWU7XG4gIHJldHVybiBvYmoudG9TdHJpbmcoKTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/transactional-decorators",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "template for ts projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"lint": "eslint .",
|
|
21
21
|
"lint-fix": "eslint --fix ./src/*",
|
|
22
22
|
"test:circular": "dpdm -T --no-warning --no-tree ./src/index.ts",
|
|
23
|
-
"prepare-release": "npm run lint-fix && npm run build:prod && npm run docs",
|
|
23
|
+
"prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
24
24
|
"release": "./bin/tag-release.sh",
|
|
25
25
|
"clean-publish": "npx clean-publish",
|
|
26
|
-
"coverage": "npm run test:all && jest-coverage-badges
|
|
26
|
+
"coverage": "npm run test:all && cd workdocs && jest-coverage-badges",
|
|
27
27
|
"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/",
|
|
28
28
|
"uml": "cd workdocs/uml && for FILE in ./*.puml; do docker run --rm -v $(pwd):/work -w /work miy4/plantuml -DPLANTUML_LIMIT_SIZE=8192 -tpng $FILE; done && cd ../.. && cp -fr workdocs/uml/*.png workdocs/resources/",
|
|
29
29
|
"docs": "npx rimraf ./docs && mkdir docs && npm run do-install -- better-docs taffydb && gulp docs; npm remove better-docs taffydb"
|
|
@@ -68,35 +68,38 @@
|
|
|
68
68
|
"@decaf-ts/db-decorators": "latest",
|
|
69
69
|
"@decaf-ts/decorator-validation": "latest",
|
|
70
70
|
"@decaf-ts/injectable-decorators": "latest",
|
|
71
|
-
"@
|
|
72
|
-
"@
|
|
73
|
-
"
|
|
74
|
-
"
|
|
71
|
+
"@eslint/js": "^9.13.0",
|
|
72
|
+
"@types/jest": "^29.5.13",
|
|
73
|
+
"@typescript-eslint/eslint-plugin": "^8.10.0",
|
|
74
|
+
"clean-publish": "^5.0.0",
|
|
75
|
+
"eslint": "^9.13.0",
|
|
75
76
|
"eslint-config-prettier": "^9.1.0",
|
|
76
|
-
"eslint-plugin-prettier": "^5.1
|
|
77
|
-
"
|
|
77
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
78
|
+
"globals": "^15.11.0",
|
|
79
|
+
"gulp": "^5.0.0",
|
|
78
80
|
"gulp-if": "^3.0.0",
|
|
79
81
|
"gulp-rename": "^2.0.0",
|
|
80
82
|
"gulp-replace": "^1.1.4",
|
|
81
83
|
"gulp-run-command": "^0.0.10",
|
|
82
|
-
"gulp-sourcemaps": "^
|
|
84
|
+
"gulp-sourcemaps": "^2.6.5",
|
|
83
85
|
"gulp-typescript": "^6.0.0-alpha.1",
|
|
84
86
|
"gulp-uglify": "^3.0.2",
|
|
85
87
|
"jest": "^29.7.0",
|
|
86
|
-
"jest-coverage-badges": "^1.
|
|
88
|
+
"jest-coverage-badges": "^1.0.0",
|
|
87
89
|
"jest-junit": "^16.0.0",
|
|
88
|
-
"jsdoc": "^4.0.
|
|
90
|
+
"jsdoc": "^4.0.4",
|
|
89
91
|
"jsdoc-mermaid": "^1.0.0",
|
|
90
92
|
"markdown-include": "^0.4.3",
|
|
91
93
|
"merge-stream": "^2.0.0",
|
|
92
|
-
"nodemon": "^3.1.
|
|
93
|
-
"npm-check-updates": "^
|
|
94
|
-
"prettier": "^3.
|
|
95
|
-
"rimraf": "^
|
|
96
|
-
"ts-jest": "^29.
|
|
94
|
+
"nodemon": "^3.1.7",
|
|
95
|
+
"npm-check-updates": "^17.1.4",
|
|
96
|
+
"prettier": "^3.3.3",
|
|
97
|
+
"rimraf": "^6.0.1",
|
|
98
|
+
"ts-jest": "^29.2.5",
|
|
97
99
|
"ts-loader": "^9.5.1",
|
|
98
100
|
"ts-node": "^10.9.2",
|
|
99
|
-
"typescript": "^5.
|
|
101
|
+
"typescript": "^5.6.3",
|
|
102
|
+
"typescript-eslint": "^8.10.0",
|
|
100
103
|
"vinyl-named": "^1.1.0",
|
|
101
104
|
"webpack-stream": "^7.0.0"
|
|
102
105
|
},
|