better-lock 2.0.3 → 3.0.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.
Files changed (52) hide show
  1. package/.idea/prettier.xml +1 -0
  2. package/README.md +54 -41
  3. package/dist/better_lock.js +13 -13
  4. package/dist/better_lock.js.map +1 -1
  5. package/dist/errors.d.ts +3 -1
  6. package/dist/errors.js +11 -12
  7. package/dist/errors.js.map +1 -1
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/internals.js +2 -2
  11. package/dist/internals.js.map +1 -1
  12. package/dist/options.d.ts +5 -0
  13. package/dist/types.d.ts +1 -1
  14. package/docs/assets/highlight.css +3 -3
  15. package/docs/assets/main.js +4 -2
  16. package/docs/assets/search.js +1 -1
  17. package/docs/assets/style.css +424 -538
  18. package/docs/classes/BetterLockError.html +109 -5
  19. package/docs/classes/BetterLockExecutionTimeoutError.html +122 -5
  20. package/docs/classes/BetterLockInternalError.html +101 -5
  21. package/docs/classes/BetterLockInvalidArgumentError.html +112 -5
  22. package/docs/classes/BetterLockJobAbortedError.html +115 -5
  23. package/docs/classes/BetterLockQueueOverflowError.html +142 -5
  24. package/docs/classes/BetterLockWaitTimeoutError.html +122 -5
  25. package/docs/classes/_internal_.BetterLock.html +297 -65
  26. package/docs/classes/_internal_.KeyQueue.html +126 -7
  27. package/docs/classes/_internal_.LockJob.html +225 -27
  28. package/docs/index.html +83 -13
  29. package/docs/interfaces/BetterLockJobOptions.html +89 -9
  30. package/docs/interfaces/BetterLockOptions.html +149 -17
  31. package/docs/modules/_internal_.__home_panta_dev_pantas_better_lock_src_errors_.html +80 -1
  32. package/docs/modules/_internal_.html +68 -7
  33. package/docs/modules.html +96 -5
  34. package/docs/types/BetterLockErrorName.html +61 -0
  35. package/docs/types/BetterLockExecutor.html +63 -0
  36. package/docs/types/BetterLockKey.html +61 -0
  37. package/docs/types/BetterLockQueueEjectionStrategy.html +59 -0
  38. package/docs/types/_internal_.ICallback.html +59 -0
  39. package/docs/types/_internal_.ICallbackExecutor.html +73 -0
  40. package/docs/types/_internal_.IErrorExports.html +52 -0
  41. package/docs/types/_internal_.IPromiseExecutor.html +65 -0
  42. package/docs/variables/BetterLock.html +59 -0
  43. package/package.json +6 -6
  44. package/spec/better_lock.spec.ts +37 -1
  45. package/src/better_lock.ts +7 -5
  46. package/src/errors.ts +5 -2
  47. package/src/index.ts +2 -1
  48. package/src/options.ts +7 -0
  49. package/src/types.ts +2 -2
  50. package/docs/assets/icons.css +0 -1043
  51. package/docs/assets/icons.png +0 -0
  52. package/docs/assets/icons@2x.png +0 -0
@@ -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
- ![Travis tests](https://travis-ci.org/panta82/better-lock.svg?branch=master)
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', // To be used in error reporting and logging
58
- log: winstonLogger.debug, // Give it your logger with appropeiate level
59
- wait_timeout: 1000 * 30, // Max 30 sec wait in queue
60
- execution_timeout: 1000 * 60 * 5, // Time out after 5 minutes
61
- queue_size: 1, // At most one pending job
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.acquire([fromId, toId], () => {
102
- return Promise.all([
103
- User.get(fromId),
104
- User.get(toId),
105
- ]).then(([fromUser, toUser]) => {
106
- fromUser.amount -= amount;
107
- toUser.amount += amount;
108
- return Promise.all([
109
- user1.save(),
110
- user2.save(),
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(done => {
127
- // Inside the lock
128
- doMyAsyncStuffHere((err) => {
129
- // Call done when done
130
- done(err);
131
- });
132
- }, (err, result) => {
133
- // Outside the lock
134
- if (err) {
135
- // Either your or BetterLock's error
136
- console.error(err);
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
 
@@ -190,6 +184,9 @@ Most commonly used options are:
190
184
  - `queue_size`
191
185
  Max queue size for waiting jobs.
192
186
 
187
+ - `queue_ejection_strategy`
188
+ Which job to eject from the queue when it's full. Default is `newest`.
189
+
193
190
  Default options are a static member `DEFAULT_OPTIONS` on the `BetterLock` class. During runtime, you can change the defaults like this:
194
191
 
195
192
  ```javascript
@@ -217,6 +214,22 @@ The library is not a good fit if:
217
214
 
218
215
  ### Change log
219
216
 
217
+ #### **3.0.0** (_2024/04/18_)
218
+
219
+ Add option `queue_ejection_strategy`.
220
+
221
+ Major version bump because the default strategy changed from "newest" (the old assumed value) to "newest" (makes more sense).
222
+
223
+ To migrate, specify:
224
+
225
+ ```javascript
226
+ {
227
+ "queue_ejection_strategy": "newest"
228
+ }
229
+ ```
230
+
231
+ in your job options.
232
+
220
233
  #### **2.0.3** (_2022/05/28_)
221
234
 
222
235
  Introduce generated API docs. Remove beta tag from npm version.
@@ -131,7 +131,7 @@ var BetterLock = /** @class */ (function () {
131
131
  job.wait_timeout_id = setTimeout(function () { return _this.onWaitTimeout(job); }, job.options.wait_timeout);
132
132
  // NOTE: timeout of 0 will NOT trigger error if lock can be acquired immediately.
133
133
  }
134
- this.log("Enqueued " + job);
134
+ this.log("Enqueued ".concat(job));
135
135
  // Perform update of queues this job has modified. We don't do this in next tick or something,
136
136
  // because we want canAcquire to immediately return false
137
137
  if (queuesToUpdate.length) {
@@ -161,18 +161,18 @@ var BetterLock = /** @class */ (function () {
161
161
  }
162
162
  // Handle wait queue overflow
163
163
  if (tools.isNumber(this.options.queue_size) && this.options.queue_size < queue.jobs.length) {
164
- // Overflow. Reject the most recent job
165
- var mostRecentJob = queue.jobs[queue.jobs.length - 1];
166
- this.log(queue.toString() + " has overflown, so most recent job (" + mostRecentJob + ") was kicked out");
167
- this.endJob(mostRecentJob, [
168
- new errors_1.BetterLockQueueOverflowError(this.options.name, queue.key, queue.jobs.length, mostRecentJob),
164
+ var strategy = this.options.queue_ejection_strategy || 'oldest';
165
+ var targetJob = queue.jobs[strategy === 'oldest' ? 0 : queue.jobs.length - 1];
166
+ this.log("".concat(queue.toString(), " has overflown, so the ").concat(strategy, " job (").concat(targetJob, ") was kicked out"));
167
+ this.endJob(targetJob, [
168
+ new errors_1.BetterLockQueueOverflowError(this.options.name, queue.key, queue.jobs.length, targetJob, strategy),
169
169
  ]);
170
170
  }
171
171
  }
172
172
  };
173
173
  BetterLock.prototype.executeJob = function (job) {
174
174
  var _this = this;
175
- this.log("Executing " + job);
175
+ this.log("Executing ".concat(job));
176
176
  // Clear wait timeout
177
177
  clearTimeout(job.wait_timeout_id);
178
178
  job.wait_timeout_id = null;
@@ -189,7 +189,7 @@ var BetterLock = /** @class */ (function () {
189
189
  if (queue.active !== job) {
190
190
  // This should never happen
191
191
  return _this.endJob(job, [
192
- new errors_1.BetterLockInternalError(_this.options.name, "Corrupted wait queue state for " + queue.key),
192
+ new errors_1.BetterLockInternalError(_this.options.name, "Corrupted wait queue state for ".concat(queue.key)),
193
193
  ]);
194
194
  }
195
195
  }
@@ -203,7 +203,7 @@ var BetterLock = /** @class */ (function () {
203
203
  for (var _i = 0; _i < arguments.length; _i++) {
204
204
  args[_i] = arguments[_i];
205
205
  }
206
- _this.log("Done called for " + job);
206
+ _this.log("Done called for ".concat(job));
207
207
  _this.endJob(job, args);
208
208
  };
209
209
  if (job.executor.length > 0) {
@@ -231,17 +231,17 @@ var BetterLock = /** @class */ (function () {
231
231
  });
232
232
  };
233
233
  BetterLock.prototype.onWaitTimeout = function (job) {
234
- this.log(job + " has timed out after waiting in queue for " + (new Date().valueOf() - job.enqueued_at.valueOf()) + "ms");
234
+ this.log("".concat(job, " has timed out after waiting in queue for ").concat(new Date().valueOf() - job.enqueued_at.valueOf(), "ms"));
235
235
  this.endJob(job, [new errors_1.BetterLockWaitTimeoutError(this.options.name, job)]);
236
236
  };
237
237
  BetterLock.prototype.onExecutionTimeout = function (job) {
238
- this.log(job + " has timed out after executing for " + (new Date().valueOf() - job.executed_at.valueOf()) + "ms");
238
+ this.log("".concat(job, " has timed out after executing for ").concat(new Date().valueOf() - job.executed_at.valueOf(), "ms"));
239
239
  this.endJob(job, [new errors_1.BetterLockExecutionTimeoutError(this.options.name, job)]);
240
240
  };
241
241
  BetterLock.prototype.endJob = function (job, callbackArgs) {
242
242
  var _this = this;
243
243
  if (job.ended_at) {
244
- this.log("WARNING: " + job + " is trying to end, but it has already ended at " + job.ended_at.toISOString() + ". Called with arguments: " + callbackArgs);
244
+ 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
245
  return;
246
246
  }
247
247
  clearTimeout(job.wait_timeout_id);
@@ -266,7 +266,7 @@ var BetterLock = /** @class */ (function () {
266
266
  }
267
267
  else {
268
268
  // Something is wrong. Where did this job come from?
269
- this.log("WARNING: " + job + " is ending, but it is not found anywhere in the queue for " + queue.key);
269
+ this.log("WARNING: ".concat(job, " is ending, but it is not found anywhere in the queue for ").concat(queue.key));
270
270
  }
271
271
  }
272
272
  }
@@ -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,iBA+FC;QA9FC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAChD,8CAA8C;YAC9C,UAAU,GAAG,QAAQ,CAAC;YACtB,QAAQ,GAAG,QAAQ,CAAC;YACpB,QAAQ,GAAG,GAAG,CAAC;YACf,GAAG,GAAG,IAAI,CAAC;SACZ;QAED,wCAAwC;QACxC,IAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,IAAM,WAAW,GAAG,GAAG,CAAC;YACxB,oCAAoC;YACpC,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;oBAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACzB,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;iBAC7B;aACF;SACF;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QAED,gDAAgD;QAChD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC/B,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,UAAU,GAAG,QAAQ,CAAC;aACvB;YAED,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;SACxC;QAED,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,IAAI,uCAA8B,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,UAAU,EACV,YAAY,EACZ,QAAQ,CACT,CAAC;SACH;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,IAAI,uCAA8B,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,UAAU,EACV,YAAY,EACZ,QAAQ,CACT,CAAC;SACH;QAED,sBAAsB;QACtB,IAAM,mBAAmB,GAAG,UAAU;YACpC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,CAAC,8FAA8F;gBAC9F,IAAI,CAAC,OAAO,CAAC;QAEjB,IAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAEvE,qBAAqB;QACrB,IAAI,mBAAmB,CAAC,mBAAmB,EAAE;YAC3C,IAAM,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;SACpC;QAED,4BAA4B;QAC5B,IAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,+BAA+B;QAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC5C,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAvB,CAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE1F,iFAAiF;SAClF;QAED,IAAI,CAAC,GAAG,CAAC,cAAY,GAAK,CAAC,CAAC;QAE5B,8FAA8F;QAC9F,yDAAyD;QACzD,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SAC7B;aAAM;YACL,6FAA6F;YAC7F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,OAAQ,QAAgB,CAAC,OAAO,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,2BAAM,GAAd,UAAe,MAAkB;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAExB,6CAA6C;YAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;gBACtC,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;gBACnB,GAAG,CAAC,aAAa,EAAE,CAAC;gBAEpB,IAAI,GAAG,CAAC,aAAa,IAAI,CAAC,EAAE;oBAC1B,gCAAgC;oBAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBACtB;aACF;YAED,6BAA6B;YAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC1F,uCAAuC;gBACvC,IAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,GAAG,CACH,KAAK,CAAC,QAAQ,EAAE,4CAAuC,aAAa,qBAAkB,CAC1F,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;oBACzB,IAAI,qCAA4B,CAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,IAAI,CAAC,MAAM,EACjB,aAAa,CACd;iBACF,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAEO,+BAAU,GAAlB,UAAmB,GAAiB;QAApC,iBAwEC;QAvEC,IAAI,CAAC,GAAG,CAAC,eAAa,GAAK,CAAC,CAAC;QAE7B,qBAAqB;QACrB,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAClC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QAE3B,iGAAiG;QACjG,qDAAqD;QAErD,YAAY,CAAC;YACX,kDAAkD;YAClD,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACnC,OAAO;aACR;YAED,mDAAmD;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAM,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;oBACxB,2BAA2B;oBAC3B,OAAO,KAAI,CAAC,MAAM,CAAC,GAAG,EAAE;wBACtB,IAAI,gCAAuB,CACzB,KAAI,CAAC,OAAO,CAAC,IAAI,EACjB,oCAAkC,KAAK,CAAC,GAAK,CAC9C;qBACF,CAAC,CAAC;iBACJ;aACF;YAED,uCAAuC;YACvC,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAE7B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBACjD,GAAG,CAAC,oBAAoB,GAAG,UAAU,CACnC,cAAM,OAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAA5B,CAA4B,EAClC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAC9B,CAAC;aACH;YAED,IAAM,QAAQ,GAAG;gBAAC,cAAO;qBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;oBAAP,yBAAO;;gBACvB,KAAI,CAAC,GAAG,CAAC,qBAAmB,GAAK,CAAC,CAAC;gBAEnC,KAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC;YAEF,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,qBAAqB;gBACrB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACvB,OAAO;aACR;YAED,oBAAoB;YACpB,IAAI,cAAc,CAAC;YACnB,IAAI;gBACF,cAAc,GAAI,GAAG,CAAC,QAAgB,EAAE,CAAC;aAC1C;YAAC,OAAO,GAAG,EAAE;gBACZ,sCAAsC;gBACtC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACf;YAED,mBAAmB;YACnB,IAAI,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;gBAC/C,cAAc,CAAC,IAAI,CACjB,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAnB,CAAmB,EAC1B,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,GAAG,CAAC,EAAb,CAAa,CACrB,CAAC;aACH;iBAAM;gBACL,6DAA6D;gBAC7D,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kCAAa,GAArB,UAAsB,GAAiB;QACrC,IAAI,CAAC,GAAG,CACH,GAAG,mDACJ,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,QAC9C,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mCAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,uCAAkB,GAA1B,UAA2B,GAAiB;QAC1C,IAAI,CAAC,GAAG,CACH,GAAG,4CACJ,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,QAC9C,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,wCAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,2BAAM,GAAd,UAAe,GAAiB,EAAE,YAAmB;QAArD,iBA8CC;QA7CC,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,GAAG,CACN,cAAY,GAAG,uDAAkD,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,iCAA4B,YAAc,CACtI,CAAC;YACF,OAAO;SACR;QAED,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAClC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QAE3B,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACvC,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEhC,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1B,IAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;gBACxB,0CAA0C;gBAC1C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;aACrB;iBAAM;gBACL,iDAAiD;gBACjD,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,oBAAoB;oBACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC7B;qBAAM;oBACL,oDAAoD;oBACpD,IAAI,CAAC,GAAG,CACN,cAAY,GAAG,kEAA6D,KAAK,CAAC,GAAK,CACxF,CAAC;iBACH;aACF;SACF;QAED,oBAAoB;QACpB,IAAI;YACF,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SACxC;gBAAS;YACR,4CAA4C;YAC5C,YAAY,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAA3B,CAA2B,CAAC,CAAC;SACjD;IACH,CAAC;IAED;;;;;OAKG;IACI,0BAAK,GAAZ,UAAa,GAAc;QAA3B,iBASC;QARC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,UAAA,GAAG;YAC5B,KAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,kCAAyB,CAAC,KAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YAC7C,sFAAsF;YACtF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,kCAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7F;IACH,CAAC;IAED;;;OAGG;IACI,6BAAQ,GAAf;QACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,IAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B,qCAAqC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACjB;IACH,CAAC;IA9ZD;;OAEG;IACI,0BAAe,GAAa;QACjC,mBAAmB,EAAE,IAAI;QACzB,cAAc,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,EAAjC,CAAiC;KACvD,CAAC;IAyZJ,iBAAC;CAAA,AAhaD,IAgaC;AAhaY,gCAAU"}
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
- constructor(lockName: any, key: any, count: any, job: LockJob<any>);
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, "[" + lockName + "] " + message) || 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
- _this = _super.call(this, lockName, message + ' This is probably a bug inside "better-lock" library') || this;
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 \"" + argument + "\" must be " + expected + " (got: \"" + actual + "\")") || this;
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 + " has timed out after " + (new Date().valueOf() - job.enqueued_at.valueOf()) + "ms in wait queue";
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 + " has timed out after " + (new Date().valueOf() - job.executed_at.valueOf()) + "ms of execution";
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 \"" + key + "\"";
109
- var message = "Too many jobs (" + count + ") are waiting" + keyDesignation + ". The most recent job (" + job + ") was kicked out";
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 + " has been aborted by the user", job.incoming_stack) || this;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
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;AAehB,gGAtBA,wBAAe,OAsBA;AACf,gHAtBA,wCAA+B,OAsBA;AAC/B,wGAtBA,gCAAuB,OAsBA;AACvB,+GAtBA,uCAA8B,OAsBA;AAC9B,0GAtBA,kCAAyB,OAsBA;AACzB,6GAtBA,qCAA4B,OAsBA;AAC5B,2GAtBA,mCAA0B,OAsBA;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"}
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 #" + this.id + " [" + this.keys.join(', ') + "]";
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<" + this.key + ">";
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___';
@@ -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,UAAQ,IAAI,CAAC,EAAE,UAAK,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,cAAY,IAAI,CAAC,GAAG,MAAG,CAAC;IACxF,CAAC;IAtBD,yDAAyD;IACzC,0BAAiB,GAAG,yBAAyB,CAAC;IAsBhE,eAAC;CAAA,AAxBD,IAwBC;AAxBY,4BAAQ"}
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
@@ -15,6 +15,7 @@ export interface ILockJobOptions {
15
15
  */
16
16
  extend_stack_traces?: boolean;
17
17
  }
18
+ export declare type IQueueEjectionStrategy = 'oldest' | 'newest';
18
19
  /**
19
20
  * Options that apply on BetterLock instance
20
21
  */
@@ -32,6 +33,10 @@ export interface IOptions extends ILockJobOptions {
32
33
  * Max queue size for waiting jobs.
33
34
  */
34
35
  queue_size?: number | null;
36
+ /**
37
+ * If queue is full, which job to eject. Defaults to 'oldest'.
38
+ */
39
+ queue_ejection_strategy?: IQueueEjectionStrategy;
35
40
  /**
36
41
  * Lock name. This will be written in all logs and error messages, to help you distinguish between different locks
37
42
  */
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?: Error, ...result: TResult) => void : (err?: Error, result?: TResult) => void;
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: #F5F5F5;
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
- body.light {
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
- body.dark {
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);