better-lock 3.2.0 → 3.3.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/README.md CHANGED
@@ -24,6 +24,24 @@ npm install --save better-lock
24
24
  yarn add better-lock
25
25
  ```
26
26
 
27
+ ### Browser usage
28
+
29
+ Better Lock can be bundled for frontend use. A lock coordinates asynchronous work only within the
30
+ current JavaScript context; it is not shared between tabs, workers, or other devices.
31
+
32
+ ```typescript
33
+ import BetterLock from 'better-lock';
34
+
35
+ const lock = new BetterLock();
36
+ ```
37
+
38
+ The published package is CommonJS, so use it through a frontend bundler such as Vite or webpack. It
39
+ cannot be loaded directly from a browser `<script type="module">` tag.
40
+
41
+ Extended stack traces are enabled by default when the runtime supports `Error.captureStackTrace`.
42
+ In browsers without that API, Better Lock automatically skips stack extension and otherwise works
43
+ normally.
44
+
27
45
  ### Documentation
28
46
 
29
47
  Full docs: <https://panta82.github.io/better-lock/>
@@ -208,13 +226,21 @@ This library is a good fit if:
208
226
  The library is not a good fit if:
209
227
 
210
228
  - **You need lock reentrancy.**
211
- There is no good solution for this in node.js that I know of. And this library doesn't offer any.
229
+ The library doesn't currently use node's new `AsyncLocalStorage` API, so it doesn't support reentrancy. You are safe from deadlocks when calling with multiple keys, because the keys are enqueued synchronously. But you should not call `lock.acquire` from within an executor function or its sub-calls (or make sure you know what you're doing).
212
230
 
213
231
  - **You need a shared lock between different nodes**
214
232
  This library is a single process only. If you need to coordinate multiple apps or services, you need a different library.
215
233
 
216
234
  ### Change log
217
235
 
236
+ #### **3.3.0** (_2026/08/25_)
237
+
238
+ Make the library compatible with browsers.
239
+
240
+ #### **3.2.0** (_2024/06/21_)
241
+
242
+ Add new api `canAcquire`. A helper for "best effort" lock acquisition.
243
+
218
244
  #### **3.2.0** (_2024/06/21_)
219
245
 
220
246
  Add new api `canAcquire`. A helper for "best effort" lock acquisition.
@@ -126,7 +126,8 @@ var BetterLock = /** @class */ (function () {
126
126
  }
127
127
  var job = new internals_1.LockJob(keys, executor, callback, effectiveJobOptions);
128
128
  // Set incoming stack
129
- if (effectiveJobOptions.extend_stack_traces) {
129
+ if (effectiveJobOptions.extend_stack_traces &&
130
+ typeof Error.captureStackTrace === 'function') {
130
131
  var tempErr = new Error();
131
132
  Error.captureStackTrace(tempErr, this.acquire);
132
133
  job.incoming_stack = tempErr.stack;
@@ -235,7 +236,7 @@ var BetterLock = /** @class */ (function () {
235
236
  job.wait_timeout_id = null;
236
237
  // We want to do the rest of this in a separate context, because we don't want user executor code
237
238
  // to ever interfere with the code calling acquire().
238
- setImmediate(function () {
239
+ setTimeout(function () {
239
240
  // Make sure job hasn't been ended in the meantime
240
241
  if (job.executed_at || job.ended_at) {
241
242
  return;
@@ -285,7 +286,7 @@ var BetterLock = /** @class */ (function () {
285
286
  // "promise" is just some random value. We don't have to wait
286
287
  lockDone(null, executorResult);
287
288
  }
288
- });
289
+ }, 0);
289
290
  };
290
291
  BetterLock.prototype.onWaitTimeout = function (job) {
291
292
  this.log("".concat(job, " has timed out after waiting in queue for ").concat(new Date().valueOf() - job.enqueued_at.valueOf(), "ms"));
@@ -333,7 +334,7 @@ var BetterLock = /** @class */ (function () {
333
334
  }
334
335
  finally {
335
336
  // Whatever happens, schedule a queue update
336
- setImmediate(function () { return _this.update(queuesToUpdate); });
337
+ setTimeout(function () { return _this.update(queuesToUpdate); }, 0);
337
338
  }
338
339
  };
339
340
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"better_lock.js","sourceRoot":"","sources":["../src/better_lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"better_lock.js","sourceRoot":"","sources":["../src/better_lock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "better-lock",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "A (better) node.js lock library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "prepublishOnly": "npm run build",
9
- "build": "tsc",
9
+ "build": "tsc --project tsconfig.build.json",
10
10
  "test": "jest",
11
11
  "watch": "jest --watchAll",
12
12
  "lint": "eslint ./src",
@@ -55,6 +55,5 @@
55
55
  ".js, .jsx": {
56
56
  "style": "module"
57
57
  }
58
- },
59
- "dependencies": {}
58
+ }
60
59
  }
@@ -366,6 +366,18 @@ describe('BetterLock', () => {
366
366
  })();
367
367
  });
368
368
 
369
+ it('will skip extended stack traces when the runtime does not support them', async () => {
370
+ const captureStackTrace = Error.captureStackTrace;
371
+ Error.captureStackTrace = undefined;
372
+
373
+ try {
374
+ const lock = new BetterLock({ extend_stack_traces: true });
375
+ await expect(lock.acquire(() => Promise.resolve('ok'))).resolves.toEqual('ok');
376
+ } finally {
377
+ Error.captureStackTrace = captureStackTrace;
378
+ }
379
+ });
380
+
369
381
  it('can abort specific key', done => {
370
382
  const lock = new BetterLock();
371
383
 
@@ -190,9 +190,12 @@ export class BetterLock {
190
190
  const job = new LockJob(keys, executor, callback, effectiveJobOptions);
191
191
 
192
192
  // Set incoming stack
193
- if (effectiveJobOptions.extend_stack_traces) {
193
+ if (
194
+ effectiveJobOptions.extend_stack_traces &&
195
+ typeof (Error as any).captureStackTrace === 'function'
196
+ ) {
194
197
  const tempErr = new Error();
195
- Error.captureStackTrace(tempErr, this.acquire);
198
+ (Error as any).captureStackTrace(tempErr, this.acquire);
196
199
  job.incoming_stack = tempErr.stack;
197
200
  }
198
201
 
@@ -356,7 +359,7 @@ export class BetterLock {
356
359
  // We want to do the rest of this in a separate context, because we don't want user executor code
357
360
  // to ever interfere with the code calling acquire().
358
361
 
359
- setImmediate(() => {
362
+ setTimeout(() => {
360
363
  // Make sure job hasn't been ended in the meantime
361
364
  if (job.executed_at || job.ended_at) {
362
365
  return;
@@ -417,7 +420,7 @@ export class BetterLock {
417
420
  // "promise" is just some random value. We don't have to wait
418
421
  lockDone(null, executorResult);
419
422
  }
420
- });
423
+ }, 0);
421
424
  }
422
425
 
423
426
  private onWaitTimeout(job: LockJob<any>) {
@@ -484,7 +487,7 @@ export class BetterLock {
484
487
  job.callback.apply(null, callbackArgs);
485
488
  } finally {
486
489
  // Whatever happens, schedule a queue update
487
- setImmediate(() => this.update(queuesToUpdate));
490
+ setTimeout(() => this.update(queuesToUpdate), 0);
488
491
  }
489
492
  }
490
493
 
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": []
5
+ }
6
+ }
package/tsconfig.json CHANGED
@@ -2,6 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "target": "es5",
4
4
  "module": "commonjs",
5
+ "lib": ["es2018", "dom"],
5
6
  "declaration": true,
6
7
  "outDir": "./dist",
7
8
  "strict": false,