better-lock 2.0.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/prettier.xml +1 -0
- package/README.md +55 -41
- package/dist/better_lock.js +38 -35
- package/dist/better_lock.js.map +1 -1
- package/dist/errors.d.ts +3 -1
- package/dist/errors.js +11 -12
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internals.js +2 -2
- package/dist/internals.js.map +1 -1
- package/dist/options.d.ts +17 -0
- package/dist/types.d.ts +1 -1
- package/docs/assets/highlight.css +3 -3
- package/docs/assets/main.js +4 -2
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +424 -538
- package/docs/classes/BetterLockError.html +109 -5
- package/docs/classes/BetterLockExecutionTimeoutError.html +122 -5
- package/docs/classes/BetterLockInternalError.html +101 -5
- package/docs/classes/BetterLockInvalidArgumentError.html +112 -5
- package/docs/classes/BetterLockJobAbortedError.html +115 -5
- package/docs/classes/BetterLockQueueOverflowError.html +142 -5
- package/docs/classes/BetterLockWaitTimeoutError.html +122 -5
- package/docs/classes/_internal_.BetterLock.html +297 -65
- package/docs/classes/_internal_.KeyQueue.html +126 -7
- package/docs/classes/_internal_.LockJob.html +225 -27
- package/docs/index.html +83 -13
- package/docs/interfaces/BetterLockJobOptions.html +89 -9
- package/docs/interfaces/BetterLockOptions.html +149 -17
- package/docs/modules/_internal_.__home_panta_dev_pantas_better_lock_src_errors_.html +80 -1
- package/docs/modules/_internal_.html +68 -7
- package/docs/modules.html +96 -5
- package/docs/types/BetterLockErrorName.html +61 -0
- package/docs/types/BetterLockExecutor.html +63 -0
- package/docs/types/BetterLockKey.html +61 -0
- package/docs/types/BetterLockQueueEjectionStrategy.html +59 -0
- package/docs/types/_internal_.ICallback.html +59 -0
- package/docs/types/_internal_.ICallbackExecutor.html +73 -0
- package/docs/types/_internal_.IErrorExports.html +52 -0
- package/docs/types/_internal_.IPromiseExecutor.html +65 -0
- package/docs/variables/BetterLock.html +59 -0
- package/package.json +6 -6
- package/spec/better_lock.spec.ts +97 -1
- package/src/better_lock.ts +33 -28
- package/src/errors.ts +5 -2
- package/src/index.ts +2 -1
- package/src/options.ts +22 -0
- package/src/types.ts +2 -2
- package/docs/assets/icons.css +0 -1043
- package/docs/assets/icons.png +0 -0
- package/docs/assets/icons@2x.png +0 -0
package/.idea/prettier.xml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<project version="4">
|
|
3
3
|
<component name="PrettierConfiguration">
|
|
4
|
+
<option name="myConfigurationMode" value="AUTOMATIC" />
|
|
4
5
|
<option name="myRunOnSave" value="true" />
|
|
5
6
|
<option name="myRunOnReformat" value="true" />
|
|
6
7
|
<option name="myFilesPattern" value="{**/*,*}" />
|
package/README.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
A (better) node.js lock library.
|
|
4
4
|
|
|
5
|
-

|
|
6
|
-
|
|
7
5
|
### Features
|
|
8
6
|
|
|
9
7
|
- Typescript-ready
|
|
@@ -44,8 +42,7 @@ try {
|
|
|
44
42
|
|
|
45
43
|
// Outside the lock. You will get whatever the promise chain has returned.
|
|
46
44
|
console.log(res); // "my result"
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
45
|
+
} catch (err) {
|
|
49
46
|
// Either your or BetterLock's error
|
|
50
47
|
}
|
|
51
48
|
```
|
|
@@ -54,11 +51,11 @@ catch (err) {
|
|
|
54
51
|
|
|
55
52
|
```typescript
|
|
56
53
|
const lock = new BetterLock({
|
|
57
|
-
name: 'FileLock',
|
|
58
|
-
log: winstonLogger.debug,
|
|
59
|
-
wait_timeout: 1000 * 30,
|
|
60
|
-
execution_timeout: 1000 * 60 * 5,
|
|
61
|
-
queue_size: 1,
|
|
54
|
+
name: 'FileLock', // To be used in error reporting and logging
|
|
55
|
+
log: winstonLogger.debug, // Give it your logger with appropeiate level
|
|
56
|
+
wait_timeout: 1000 * 30, // Max 30 sec wait in queue
|
|
57
|
+
execution_timeout: 1000 * 60 * 5, // Time out after 5 minutes
|
|
58
|
+
queue_size: 1, // At most one pending job
|
|
62
59
|
});
|
|
63
60
|
|
|
64
61
|
async function processFile(filename) {
|
|
@@ -69,14 +66,13 @@ async function processFile(filename) {
|
|
|
69
66
|
});
|
|
70
67
|
return {
|
|
71
68
|
status: true,
|
|
72
|
-
result
|
|
69
|
+
result,
|
|
73
70
|
};
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
71
|
+
} catch (err) {
|
|
76
72
|
if (err instanceof BetterLock.QueueOverflowError) {
|
|
77
73
|
// The job was discarded
|
|
78
74
|
return {
|
|
79
|
-
status: false
|
|
75
|
+
status: false,
|
|
80
76
|
};
|
|
81
77
|
}
|
|
82
78
|
|
|
@@ -86,7 +82,6 @@ async function processFile(filename) {
|
|
|
86
82
|
throw err;
|
|
87
83
|
}
|
|
88
84
|
}
|
|
89
|
-
|
|
90
85
|
```
|
|
91
86
|
|
|
92
87
|
##### Locking on multiple keys
|
|
@@ -98,21 +93,17 @@ const userLock = new BetterLock({
|
|
|
98
93
|
});
|
|
99
94
|
|
|
100
95
|
function transferBetweenUsers(fromId, toId, amount) {
|
|
101
|
-
userLock
|
|
102
|
-
|
|
103
|
-
User.get(fromId),
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
]);
|
|
96
|
+
userLock
|
|
97
|
+
.acquire([fromId, toId], () => {
|
|
98
|
+
return Promise.all([User.get(fromId), User.get(toId)]).then(([fromUser, toUser]) => {
|
|
99
|
+
fromUser.amount -= amount;
|
|
100
|
+
toUser.amount += amount;
|
|
101
|
+
return Promise.all([user1.save(), user2.save()]);
|
|
102
|
+
});
|
|
103
|
+
})
|
|
104
|
+
.then(() => {
|
|
105
|
+
console.log('Transfer completed');
|
|
112
106
|
});
|
|
113
|
-
}).then(() => {
|
|
114
|
-
console.log('Transfer completed');
|
|
115
|
-
});
|
|
116
107
|
}
|
|
117
108
|
```
|
|
118
109
|
|
|
@@ -123,19 +114,22 @@ const BetterLock = require('better-lock');
|
|
|
123
114
|
|
|
124
115
|
const lock = new BetterLock();
|
|
125
116
|
//...
|
|
126
|
-
lock.acquire(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
//
|
|
136
|
-
|
|
117
|
+
lock.acquire(
|
|
118
|
+
done => {
|
|
119
|
+
// Inside the lock
|
|
120
|
+
doMyAsyncStuffHere(err => {
|
|
121
|
+
// Call done when done
|
|
122
|
+
done(err);
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
(err, result) => {
|
|
126
|
+
// Outside the lock
|
|
127
|
+
if (err) {
|
|
128
|
+
// Either your or BetterLock's error
|
|
129
|
+
console.error(err);
|
|
130
|
+
}
|
|
137
131
|
}
|
|
138
|
-
|
|
132
|
+
);
|
|
139
133
|
```
|
|
140
134
|
|
|
141
135
|
You can see a bunch more usage examples in the spec file, [here](spec/better_lock.spec.ts);
|
|
@@ -174,7 +168,7 @@ Example:
|
|
|
174
168
|
|
|
175
169
|
```javascript
|
|
176
170
|
lock.acquire(executor, callback, {
|
|
177
|
-
wait_timeout: 1000
|
|
171
|
+
wait_timeout: 1000,
|
|
178
172
|
});
|
|
179
173
|
```
|
|
180
174
|
|
|
@@ -217,6 +211,26 @@ The library is not a good fit if:
|
|
|
217
211
|
|
|
218
212
|
### Change log
|
|
219
213
|
|
|
214
|
+
#### **3.1.0** (_2024/06/21_)
|
|
215
|
+
|
|
216
|
+
Add option `lock_condition`.
|
|
217
|
+
|
|
218
|
+
#### **3.0.0** (_2024/04/18_)
|
|
219
|
+
|
|
220
|
+
Add option `queue_ejection_strategy`.
|
|
221
|
+
|
|
222
|
+
Major version bump because the default strategy changed from "newest" (the old assumed value) to "newest" (makes more sense).
|
|
223
|
+
|
|
224
|
+
To migrate, specify:
|
|
225
|
+
|
|
226
|
+
```javascript
|
|
227
|
+
{
|
|
228
|
+
"queue_ejection_strategy": "newest"
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
in your job options.
|
|
233
|
+
|
|
220
234
|
#### **2.0.3** (_2022/05/28_)
|
|
221
235
|
|
|
222
236
|
Introduce generated API docs. Remove beta tag from npm version.
|
package/dist/better_lock.js
CHANGED
|
@@ -76,23 +76,6 @@ var BetterLock = /** @class */ (function () {
|
|
|
76
76
|
executor = key;
|
|
77
77
|
key = null;
|
|
78
78
|
}
|
|
79
|
-
// Repackage "key" into an array of keys
|
|
80
|
-
var keys = [];
|
|
81
|
-
if (Array.isArray(key)) {
|
|
82
|
-
var arrayOfKeys = key;
|
|
83
|
-
// Make sure we don't add duplicates
|
|
84
|
-
var seenKeys = new Set();
|
|
85
|
-
for (var i = 0; i < arrayOfKeys.length; i++) {
|
|
86
|
-
var normalizedKey = this.normalizeAndValidateKey(arrayOfKeys[i]);
|
|
87
|
-
if (!seenKeys.has(normalizedKey)) {
|
|
88
|
-
keys.push(normalizedKey);
|
|
89
|
-
seenKeys.add(normalizedKey);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
keys.push(this.normalizeAndValidateKey(key));
|
|
95
|
-
}
|
|
96
79
|
// Create callback wrapper for promise interface
|
|
97
80
|
if (!tools.isFunction(callback)) {
|
|
98
81
|
if (jobOptions === undefined) {
|
|
@@ -100,6 +83,31 @@ var BetterLock = /** @class */ (function () {
|
|
|
100
83
|
}
|
|
101
84
|
callback = tools.callbackWithPromise();
|
|
102
85
|
}
|
|
86
|
+
// Prepare job options
|
|
87
|
+
var effectiveJobOptions = jobOptions
|
|
88
|
+
? tools.assign({}, [this.options, jobOptions])
|
|
89
|
+
: // No need to create new object since these will be read-only and are subset of global options
|
|
90
|
+
this.options;
|
|
91
|
+
// Repackage "key" into an array of keys, but only if lock_condition allows it.
|
|
92
|
+
// Otherwise, it stays an array and gets executed immediately.
|
|
93
|
+
var keys = [];
|
|
94
|
+
if (!effectiveJobOptions.lock_condition || effectiveJobOptions.lock_condition(key)) {
|
|
95
|
+
if (Array.isArray(key)) {
|
|
96
|
+
var arrayOfKeys = key;
|
|
97
|
+
// Make sure we don't add duplicates
|
|
98
|
+
var seenKeys = new Set();
|
|
99
|
+
for (var i = 0; i < arrayOfKeys.length; i++) {
|
|
100
|
+
var normalizedKey = this.normalizeAndValidateKey(arrayOfKeys[i]);
|
|
101
|
+
if (!seenKeys.has(normalizedKey)) {
|
|
102
|
+
keys.push(normalizedKey);
|
|
103
|
+
seenKeys.add(normalizedKey);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
keys.push(this.normalizeAndValidateKey(key));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
103
111
|
// Validate other options
|
|
104
112
|
if (!tools.isFunction(executor)) {
|
|
105
113
|
throw new errors_1.BetterLockInvalidArgumentError(this.options.name, 'executor', 'a function', executor);
|
|
@@ -107,11 +115,6 @@ var BetterLock = /** @class */ (function () {
|
|
|
107
115
|
if (!tools.isFunction(callback)) {
|
|
108
116
|
throw new errors_1.BetterLockInvalidArgumentError(this.options.name, 'callback', 'a function', callback);
|
|
109
117
|
}
|
|
110
|
-
// Prepare job options
|
|
111
|
-
var effectiveJobOptions = jobOptions
|
|
112
|
-
? tools.assign({}, [this.options, jobOptions])
|
|
113
|
-
: // No need to create new object since these will be read-only and are subset of global options
|
|
114
|
-
this.options;
|
|
115
118
|
var job = new internals_1.LockJob(keys, executor, callback, effectiveJobOptions);
|
|
116
119
|
// Set incoming stack
|
|
117
120
|
if (effectiveJobOptions.extend_stack_traces) {
|
|
@@ -131,7 +134,7 @@ var BetterLock = /** @class */ (function () {
|
|
|
131
134
|
job.wait_timeout_id = setTimeout(function () { return _this.onWaitTimeout(job); }, job.options.wait_timeout);
|
|
132
135
|
// NOTE: timeout of 0 will NOT trigger error if lock can be acquired immediately.
|
|
133
136
|
}
|
|
134
|
-
this.log("Enqueued "
|
|
137
|
+
this.log("Enqueued ".concat(job));
|
|
135
138
|
// Perform update of queues this job has modified. We don't do this in next tick or something,
|
|
136
139
|
// because we want canAcquire to immediately return false
|
|
137
140
|
if (queuesToUpdate.length) {
|
|
@@ -161,18 +164,18 @@ var BetterLock = /** @class */ (function () {
|
|
|
161
164
|
}
|
|
162
165
|
// Handle wait queue overflow
|
|
163
166
|
if (tools.isNumber(this.options.queue_size) && this.options.queue_size < queue.jobs.length) {
|
|
164
|
-
|
|
165
|
-
var
|
|
166
|
-
this.log(queue.toString()
|
|
167
|
-
this.endJob(
|
|
168
|
-
new errors_1.BetterLockQueueOverflowError(this.options.name, queue.key, queue.jobs.length,
|
|
167
|
+
var strategy = this.options.queue_ejection_strategy || 'oldest';
|
|
168
|
+
var targetJob = queue.jobs[strategy === 'oldest' ? 0 : queue.jobs.length - 1];
|
|
169
|
+
this.log("".concat(queue.toString(), " has overflown, so the ").concat(strategy, " job (").concat(targetJob, ") was kicked out"));
|
|
170
|
+
this.endJob(targetJob, [
|
|
171
|
+
new errors_1.BetterLockQueueOverflowError(this.options.name, queue.key, queue.jobs.length, targetJob, strategy),
|
|
169
172
|
]);
|
|
170
173
|
}
|
|
171
174
|
}
|
|
172
175
|
};
|
|
173
176
|
BetterLock.prototype.executeJob = function (job) {
|
|
174
177
|
var _this = this;
|
|
175
|
-
this.log("Executing "
|
|
178
|
+
this.log("Executing ".concat(job));
|
|
176
179
|
// Clear wait timeout
|
|
177
180
|
clearTimeout(job.wait_timeout_id);
|
|
178
181
|
job.wait_timeout_id = null;
|
|
@@ -189,7 +192,7 @@ var BetterLock = /** @class */ (function () {
|
|
|
189
192
|
if (queue.active !== job) {
|
|
190
193
|
// This should never happen
|
|
191
194
|
return _this.endJob(job, [
|
|
192
|
-
new errors_1.BetterLockInternalError(_this.options.name, "Corrupted wait queue state for "
|
|
195
|
+
new errors_1.BetterLockInternalError(_this.options.name, "Corrupted wait queue state for ".concat(queue.key)),
|
|
193
196
|
]);
|
|
194
197
|
}
|
|
195
198
|
}
|
|
@@ -203,7 +206,7 @@ var BetterLock = /** @class */ (function () {
|
|
|
203
206
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
204
207
|
args[_i] = arguments[_i];
|
|
205
208
|
}
|
|
206
|
-
_this.log("Done called for "
|
|
209
|
+
_this.log("Done called for ".concat(job));
|
|
207
210
|
_this.endJob(job, args);
|
|
208
211
|
};
|
|
209
212
|
if (job.executor.length > 0) {
|
|
@@ -231,17 +234,17 @@ var BetterLock = /** @class */ (function () {
|
|
|
231
234
|
});
|
|
232
235
|
};
|
|
233
236
|
BetterLock.prototype.onWaitTimeout = function (job) {
|
|
234
|
-
this.log(job
|
|
237
|
+
this.log("".concat(job, " has timed out after waiting in queue for ").concat(new Date().valueOf() - job.enqueued_at.valueOf(), "ms"));
|
|
235
238
|
this.endJob(job, [new errors_1.BetterLockWaitTimeoutError(this.options.name, job)]);
|
|
236
239
|
};
|
|
237
240
|
BetterLock.prototype.onExecutionTimeout = function (job) {
|
|
238
|
-
this.log(job
|
|
241
|
+
this.log("".concat(job, " has timed out after executing for ").concat(new Date().valueOf() - job.executed_at.valueOf(), "ms"));
|
|
239
242
|
this.endJob(job, [new errors_1.BetterLockExecutionTimeoutError(this.options.name, job)]);
|
|
240
243
|
};
|
|
241
244
|
BetterLock.prototype.endJob = function (job, callbackArgs) {
|
|
242
245
|
var _this = this;
|
|
243
246
|
if (job.ended_at) {
|
|
244
|
-
this.log("WARNING: "
|
|
247
|
+
this.log("WARNING: ".concat(job, " is trying to end, but it has already ended at ").concat(job.ended_at.toISOString(), ". Called with arguments: ").concat(callbackArgs));
|
|
245
248
|
return;
|
|
246
249
|
}
|
|
247
250
|
clearTimeout(job.wait_timeout_id);
|
|
@@ -266,7 +269,7 @@ var BetterLock = /** @class */ (function () {
|
|
|
266
269
|
}
|
|
267
270
|
else {
|
|
268
271
|
// Something is wrong. Where did this job come from?
|
|
269
|
-
this.log("WARNING: "
|
|
272
|
+
this.log("WARNING: ".concat(job, " is ending, but it is not found anywhere in the queue for ").concat(queue.key));
|
|
270
273
|
}
|
|
271
274
|
}
|
|
272
275
|
}
|
package/dist/better_lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"better_lock.js","sourceRoot":"","sources":["../src/better_lock.ts"],"names":[],"mappings":";;;AAAA,mCAOkB;AAClB,yCAAgD;AAEhD,+BAAiC;AAGjC;;GAEG;AACH;IAaE;;OAEG;IACH,oBAAY,OAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,6BAAQ,GAAhB,UAAiB,GAAa;QAC5B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACrC,GAAG,GAAG,oBAAQ,CAAC,iBAAiB,CAAC;SAClC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,+BAAU,GAAjB,UAAkB,GAAY;QAC5B,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7C,CAAC;IAEO,4CAAuB,GAA/B,UAAgC,GAAa;QAC3C,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,oBAAoB;QACpB,MAAM,IAAI,uCAA8B,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,KAAK,EACL,4DAA4D,EAC5D,GAAG,CACJ,CAAC;IACJ,CAAC;IA+BD;;;;;;;;;;;;;;OAcG;IACI,4BAAO,GAAd,UAAe,GAAG,EAAE,QAAS,EAAE,QAAS,EAAE,UAAW;QAArD,
|
|
1
|
+
{"version":3,"file":"better_lock.js","sourceRoot":"","sources":["../src/better_lock.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LockJob } from './internals';
|
|
2
2
|
import { IErrorName } from './types';
|
|
3
|
+
import { IQueueEjectionStrategy } from './options';
|
|
3
4
|
export declare class BetterLockError extends Error {
|
|
4
5
|
/**
|
|
5
6
|
* Name of the lock that caused the error
|
|
@@ -35,7 +36,8 @@ export declare class BetterLockQueueOverflowError extends BetterLockError {
|
|
|
35
36
|
keys: string[];
|
|
36
37
|
job_count: number;
|
|
37
38
|
kicked_out_job_id: number;
|
|
38
|
-
|
|
39
|
+
strategy: IQueueEjectionStrategy;
|
|
40
|
+
constructor(lockName: any, key: any, count: any, job: LockJob<any>, strategy: IQueueEjectionStrategy);
|
|
39
41
|
}
|
|
40
42
|
export declare class BetterLockJobAbortedError extends BetterLockError {
|
|
41
43
|
job_id: number;
|
package/dist/errors.js
CHANGED
|
@@ -20,15 +20,15 @@ var internals_1 = require("./internals");
|
|
|
20
20
|
var BetterLockError = /** @class */ (function (_super) {
|
|
21
21
|
__extends(BetterLockError, _super);
|
|
22
22
|
function BetterLockError(lockName, message, incomingStack) {
|
|
23
|
-
var _newTarget = this.constructor;
|
|
24
23
|
if (incomingStack === void 0) { incomingStack = null; }
|
|
24
|
+
var _newTarget = this.constructor;
|
|
25
25
|
var _this = this;
|
|
26
26
|
// Fix typescript custom Error prototype chain
|
|
27
27
|
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
28
28
|
// https://github.com/reduardo7/ts-base-error/blob/master/src/index.ts
|
|
29
29
|
var trueProto = _newTarget.prototype;
|
|
30
30
|
if (lockName) {
|
|
31
|
-
_this = _super.call(this, "["
|
|
31
|
+
_this = _super.call(this, "[".concat(lockName, "] ").concat(message)) || this;
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
_this = _super.call(this, message) || this;
|
|
@@ -51,13 +51,11 @@ exports.BetterLockError = BetterLockError;
|
|
|
51
51
|
var BetterLockInternalError = /** @class */ (function (_super) {
|
|
52
52
|
__extends(BetterLockInternalError, _super);
|
|
53
53
|
function BetterLockInternalError(lockName, message) {
|
|
54
|
-
var _this = this;
|
|
55
54
|
var lastChar = message[message.length - 1];
|
|
56
55
|
if (lastChar !== '.' && lastChar !== '!' && lastChar !== '?') {
|
|
57
56
|
message += '.';
|
|
58
57
|
}
|
|
59
|
-
|
|
60
|
-
return _this;
|
|
58
|
+
return _super.call(this, lockName, message + ' This is probably a bug inside "better-lock" library') || this;
|
|
61
59
|
}
|
|
62
60
|
return BetterLockInternalError;
|
|
63
61
|
}(BetterLockError));
|
|
@@ -65,7 +63,7 @@ exports.BetterLockInternalError = BetterLockInternalError;
|
|
|
65
63
|
var BetterLockInvalidArgumentError = /** @class */ (function (_super) {
|
|
66
64
|
__extends(BetterLockInvalidArgumentError, _super);
|
|
67
65
|
function BetterLockInvalidArgumentError(lockName, argument, expected, actual) {
|
|
68
|
-
var _this = _super.call(this, lockName, "Argument \""
|
|
66
|
+
var _this = _super.call(this, lockName, "Argument \"".concat(argument, "\" must be ").concat(expected, " (got: \"").concat(actual, "\")")) || this;
|
|
69
67
|
_this.argument = argument;
|
|
70
68
|
_this.argument = argument;
|
|
71
69
|
return _this;
|
|
@@ -77,7 +75,7 @@ var BetterLockWaitTimeoutError = /** @class */ (function (_super) {
|
|
|
77
75
|
__extends(BetterLockWaitTimeoutError, _super);
|
|
78
76
|
function BetterLockWaitTimeoutError(lockName, job) {
|
|
79
77
|
var _this = this;
|
|
80
|
-
var message = job
|
|
78
|
+
var message = "".concat(job, " has timed out after ").concat(new Date().valueOf() - job.enqueued_at.valueOf(), "ms in wait queue");
|
|
81
79
|
_this = _super.call(this, lockName, message, job.incoming_stack) || this;
|
|
82
80
|
_this.job_id = job.id;
|
|
83
81
|
_this.keys = job.keys;
|
|
@@ -91,7 +89,7 @@ var BetterLockExecutionTimeoutError = /** @class */ (function (_super) {
|
|
|
91
89
|
__extends(BetterLockExecutionTimeoutError, _super);
|
|
92
90
|
function BetterLockExecutionTimeoutError(lockName, job) {
|
|
93
91
|
var _this = this;
|
|
94
|
-
var message = job
|
|
92
|
+
var message = "".concat(job, " has timed out after ").concat(new Date().valueOf() - job.executed_at.valueOf(), "ms of execution");
|
|
95
93
|
_this = _super.call(this, lockName, message, job.incoming_stack) || this;
|
|
96
94
|
_this.job_id = job.id;
|
|
97
95
|
_this.keys = job.keys;
|
|
@@ -103,15 +101,16 @@ var BetterLockExecutionTimeoutError = /** @class */ (function (_super) {
|
|
|
103
101
|
exports.BetterLockExecutionTimeoutError = BetterLockExecutionTimeoutError;
|
|
104
102
|
var BetterLockQueueOverflowError = /** @class */ (function (_super) {
|
|
105
103
|
__extends(BetterLockQueueOverflowError, _super);
|
|
106
|
-
function BetterLockQueueOverflowError(lockName, key, count, job) {
|
|
104
|
+
function BetterLockQueueOverflowError(lockName, key, count, job, strategy) {
|
|
107
105
|
var _this = this;
|
|
108
|
-
var keyDesignation = key === internals_1.KeyQueue.DEFAULT_QUEUE_KEY ? '' : " for key \""
|
|
109
|
-
var message = "Too many jobs ("
|
|
106
|
+
var keyDesignation = key === internals_1.KeyQueue.DEFAULT_QUEUE_KEY ? '' : " for key \"".concat(key, "\"");
|
|
107
|
+
var message = "Too many jobs (".concat(count, ") are waiting").concat(keyDesignation, ". The ").concat(strategy, " job (").concat(job, ") was kicked out");
|
|
110
108
|
_this = _super.call(this, lockName, message, job.incoming_stack) || this;
|
|
111
109
|
_this.job_id = job.id;
|
|
112
110
|
_this.keys = job.keys;
|
|
113
111
|
_this.job_count = count;
|
|
114
112
|
_this.kicked_out_job_id = job.id;
|
|
113
|
+
_this.strategy = strategy;
|
|
115
114
|
return _this;
|
|
116
115
|
}
|
|
117
116
|
return BetterLockQueueOverflowError;
|
|
@@ -120,7 +119,7 @@ exports.BetterLockQueueOverflowError = BetterLockQueueOverflowError;
|
|
|
120
119
|
var BetterLockJobAbortedError = /** @class */ (function (_super) {
|
|
121
120
|
__extends(BetterLockJobAbortedError, _super);
|
|
122
121
|
function BetterLockJobAbortedError(lockName, job) {
|
|
123
|
-
var _this = _super.call(this, lockName, job
|
|
122
|
+
var _this = _super.call(this, lockName, "".concat(job, " has been aborted by the user"), job.incoming_stack) || this;
|
|
124
123
|
_this.job_id = job.id;
|
|
125
124
|
_this.keys = job.keys;
|
|
126
125
|
return _this;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAAgD;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BetterLock as BetterLockUnadorned } from './better_lock';
|
|
2
2
|
import { BetterLockError, BetterLockExecutionTimeoutError, BetterLockInternalError, BetterLockInvalidArgumentError, BetterLockJobAbortedError, BetterLockQueueOverflowError, BetterLockWaitTimeoutError } from './errors';
|
|
3
|
-
import { ILockJobOptions as BetterLockJobOptions, IOptions as BetterLockOptions } from './options';
|
|
3
|
+
import { ILockJobOptions as BetterLockJobOptions, IOptions as BetterLockOptions, IQueueEjectionStrategy as BetterLockQueueEjectionStrategy } from './options';
|
|
4
4
|
import { IErrorName as BetterLockErrorName, IExecutor as BetterLockExecutor, ILockKey as BetterLockKey } from './types';
|
|
5
|
-
export { BetterLockOptions, BetterLockJobOptions, BetterLockExecutor, BetterLockKey, BetterLockErrorName, BetterLockError, BetterLockExecutionTimeoutError, BetterLockInternalError, BetterLockInvalidArgumentError, BetterLockJobAbortedError, BetterLockQueueOverflowError, BetterLockWaitTimeoutError, };
|
|
5
|
+
export { BetterLockOptions, BetterLockQueueEjectionStrategy, BetterLockJobOptions, BetterLockExecutor, BetterLockKey, BetterLockErrorName, BetterLockError, BetterLockExecutionTimeoutError, BetterLockInternalError, BetterLockInvalidArgumentError, BetterLockJobAbortedError, BetterLockQueueOverflowError, BetterLockWaitTimeoutError, };
|
|
6
6
|
export declare const BetterLock: typeof BetterLockUnadorned & {
|
|
7
7
|
BetterLock: typeof BetterLockUnadorned;
|
|
8
8
|
Error: typeof BetterLockError;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAAkE;AAClE,mCAQkB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAAkE;AAClE,mCAQkB;AAgBhB,gGAvBA,wBAAe,OAuBA;AACf,gHAvBA,wCAA+B,OAuBA;AAC/B,wGAvBA,gCAAuB,OAuBA;AACvB,+GAvBA,uCAA8B,OAuBA;AAC9B,0GAvBA,kCAAyB,OAuBA;AACzB,6GAvBA,qCAA4B,OAuBA;AAC5B,2GAvBA,mCAA0B,OAuBA;AAG5B,SAAS,aAAa,CACpB,MAAe,EACf,OAAiB;IAEjB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAa,CAAC;AACvB,CAAC;AAEY,QAAA,UAAU,GAAG,aAAa,CAAC,wBAAmB,EAAE;IAC3D,UAAU,EAAE,wBAAmB;IAE/B,KAAK,EAAE,wBAAe;IACtB,aAAa,EAAE,gCAAuB;IACtC,oBAAoB,EAAE,uCAA8B;IACpD,gBAAgB,EAAE,mCAA0B;IAC5C,qBAAqB,EAAE,wCAA+B;IACtD,kBAAkB,EAAE,qCAA4B;IAChD,eAAe,EAAE,kCAAyB;CAC3C,CAAC,CAAC;AAEH,kBAAe,kBAAU,CAAC"}
|
package/dist/internals.js
CHANGED
|
@@ -41,7 +41,7 @@ var LockJob = /** @class */ (function () {
|
|
|
41
41
|
this.options = options;
|
|
42
42
|
}
|
|
43
43
|
LockJob.prototype.toString = function () {
|
|
44
|
-
return "Job #"
|
|
44
|
+
return "Job #".concat(this.id, " [").concat(this.keys.join(', '), "]");
|
|
45
45
|
};
|
|
46
46
|
LockJob._lastId = 0;
|
|
47
47
|
return LockJob;
|
|
@@ -65,7 +65,7 @@ var KeyQueue = /** @class */ (function () {
|
|
|
65
65
|
this.key = key;
|
|
66
66
|
}
|
|
67
67
|
KeyQueue.prototype.toString = function () {
|
|
68
|
-
return this.key === KeyQueue.DEFAULT_QUEUE_KEY ? 'JobQueue' : "JobQueue<"
|
|
68
|
+
return this.key === KeyQueue.DEFAULT_QUEUE_KEY ? 'JobQueue' : "JobQueue<".concat(this.key, ">");
|
|
69
69
|
};
|
|
70
70
|
// We will use this key when user doesn't supply anything
|
|
71
71
|
KeyQueue.DEFAULT_QUEUE_KEY = '___DEFAULT_QUEUE_KEY___';
|
package/dist/internals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internals.js","sourceRoot":"","sources":["../src/internals.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH;IA8DE,iBACE,IAA0B,EAC1B,QAA4B,EAC5B,QAA4B,EAC5B,OAAwB;QA/D1B,kDAAkD;QAC3C,OAAE,GAAG,SAAS,CAAC;QAuBtB;;WAEG;QACI,gBAAW,GAAS,IAAI,IAAI,EAAE,CAAC;QAEtC;;WAEG;QACI,gBAAW,GAAS,IAAI,CAAC;QAEhC;;WAEG;QACI,aAAQ,GAAS,IAAI,CAAC;QAO7B;;WAEG;QACI,oBAAe,GAAG,IAAI,CAAC;QAE9B;;WAEG;QACI,yBAAoB,GAAG,IAAI,CAAC;QAEnC;;WAEG;QACI,mBAAc,GAAW,IAAI,CAAC;QAQnC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,0BAAQ,GAAR;QACE,OAAO,
|
|
1
|
+
{"version":3,"file":"internals.js","sourceRoot":"","sources":["../src/internals.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH;IA8DE,iBACE,IAA0B,EAC1B,QAA4B,EAC5B,QAA4B,EAC5B,OAAwB;QA/D1B,kDAAkD;QAC3C,OAAE,GAAG,SAAS,CAAC;QAuBtB;;WAEG;QACI,gBAAW,GAAS,IAAI,IAAI,EAAE,CAAC;QAEtC;;WAEG;QACI,gBAAW,GAAS,IAAI,CAAC;QAEhC;;WAEG;QACI,aAAQ,GAAS,IAAI,CAAC;QAO7B;;WAEG;QACI,oBAAe,GAAG,IAAI,CAAC;QAE9B;;WAEG;QACI,yBAAoB,GAAG,IAAI,CAAC;QAEnC;;WAEG;QACI,mBAAc,GAAW,IAAI,CAAC;QAQnC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,0BAAQ,GAAR;QACE,OAAO,eAAQ,IAAI,CAAC,EAAE,eAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC;IACrD,CAAC;IA9EM,eAAO,GAAG,CAAC,CAAC;IA+ErB,cAAC;CAAA,AAhFD,IAgFC;AAhFY,0BAAO;AAkFpB,wHAAwH;AAExH;;GAEG;AACH;IAiBE,kBAAY,GAAY;QAXxB;;;WAGG;QACI,SAAI,GAAmB,EAAE,CAAC;QAEjC;;WAEG;QACI,WAAM,GAAiB,IAAI,CAAC;QAGjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,2BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAY,IAAI,CAAC,GAAG,MAAG,CAAC;IACxF,CAAC;IAtBD,yDAAyD;IACzC,0BAAiB,GAAG,yBAAyB,CAAC;IAsBhE,eAAC;CAAA,AAxBD,IAwBC;AAxBY,4BAAQ"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ILockKey } from './types';
|
|
1
2
|
/**
|
|
2
3
|
* Options that apply on LockJob
|
|
3
4
|
*/
|
|
@@ -14,7 +15,14 @@ export interface ILockJobOptions {
|
|
|
14
15
|
* In any error produced by BetterLock, extend the stack trace to include incoming trace. Overrides BetterLockOptions value.
|
|
15
16
|
*/
|
|
16
17
|
extend_stack_traces?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Before acquiring lock, call this function with the given key. If condition is rejected, the executor is immediately called, without locking.
|
|
20
|
+
* This can be used to more conveniently opt out of locking, without duplicating or extracting the executor.
|
|
21
|
+
* Overrides BetterLockOptions value.
|
|
22
|
+
*/
|
|
23
|
+
lock_condition?: (key: ILockKey | Array<ILockKey>) => boolean;
|
|
17
24
|
}
|
|
25
|
+
export declare type IQueueEjectionStrategy = 'oldest' | 'newest';
|
|
18
26
|
/**
|
|
19
27
|
* Options that apply on BetterLock instance
|
|
20
28
|
*/
|
|
@@ -32,6 +40,15 @@ export interface IOptions extends ILockJobOptions {
|
|
|
32
40
|
* Max queue size for waiting jobs.
|
|
33
41
|
*/
|
|
34
42
|
queue_size?: number | null;
|
|
43
|
+
/**
|
|
44
|
+
* If queue is full, which job to eject. Defaults to 'oldest'.
|
|
45
|
+
*/
|
|
46
|
+
queue_ejection_strategy?: IQueueEjectionStrategy;
|
|
47
|
+
/**
|
|
48
|
+
* Before acquiring lock, call this function with the given key. If condition is rejected, the executor is immediately called, without locking.
|
|
49
|
+
* This can be used to more conveniently opt out of locking, without duplicating or extracting the executor.
|
|
50
|
+
*/
|
|
51
|
+
lock_condition?: (key: ILockKey | Array<ILockKey>) => boolean;
|
|
35
52
|
/**
|
|
36
53
|
* Lock name. This will be written in all logs and error messages, to help you distinguish between different locks
|
|
37
54
|
*/
|
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare type IErrorName = keyof IErrorExports;
|
|
|
8
8
|
* User-supplied callback. We support a "canonical" callback, with just error and result,
|
|
9
9
|
* but also old-school callbacks, with varargs return values.
|
|
10
10
|
*/
|
|
11
|
-
export declare type ICallback<TResult> = TResult extends any[] ? (err
|
|
11
|
+
export declare type ICallback<TResult> = TResult extends any[] ? (err: Error | null, ...result: TResult) => void : (err: Error | null, result?: TResult) => void;
|
|
12
12
|
/**
|
|
13
13
|
* Function that user will supply as the thing that will be running inside lock.
|
|
14
14
|
* It can either accept a done() function, or return a promise.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
--dark-hl-8: #B5CEA8;
|
|
20
20
|
--light-hl-9: #267F99;
|
|
21
21
|
--dark-hl-9: #4EC9B0;
|
|
22
|
-
--light-code-background: #
|
|
22
|
+
--light-code-background: #FFFFFF;
|
|
23
23
|
--dark-code-background: #1E1E1E;
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
--code-background: var(--dark-code-background);
|
|
52
52
|
} }
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
:root[data-theme='light'] {
|
|
55
55
|
--hl-0: var(--light-hl-0);
|
|
56
56
|
--hl-1: var(--light-hl-1);
|
|
57
57
|
--hl-2: var(--light-hl-2);
|
|
@@ -65,7 +65,7 @@ body.light {
|
|
|
65
65
|
--code-background: var(--light-code-background);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
:root[data-theme='dark'] {
|
|
69
69
|
--hl-0: var(--dark-hl-0);
|
|
70
70
|
--hl-1: var(--dark-hl-1);
|
|
71
71
|
--hl-2: var(--dark-hl-2);
|