Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

async-await-mutex-lock

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-await-mutex-lock - npm Package Compare versions

Comparing version
1.0.5
to
1.0.6
+3
dist/index.d.ts
import { Lock } from "./lock";
export { Lock };
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,CAAC"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lock = void 0;
const lock_1 = require("./lock");
Object.defineProperty(exports, "Lock", { enumerable: true, get: function () { return lock_1.Lock; } });
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAErB,qFAFA,WAAI,OAEA"}
export declare class Lock<T> {
private _isAcquired;
private _acquiredMap;
private waitingMap;
private waitingList;
acquire(key?: T): Promise<void>;
isAcquired(key?: T): boolean;
release(key?: T): void;
}
//# sourceMappingURL=lock.d.ts.map
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI,CAAC,CAAC;IACjB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO;IAc5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI;CAoCvB"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lock = void 0;
class Lock {
constructor() {
this._isAcquired = false;
this._acquiredMap = new Map();
this.waitingMap = new Map();
this.waitingList = [];
}
acquire(key) {
if (key) {
if (!this._acquiredMap.has(key) || !this._acquiredMap.get(key)) {
this._acquiredMap.set(key, true);
return Promise.resolve();
}
}
else if (!this._isAcquired) {
this._isAcquired = true;
return Promise.resolve();
}
return new Promise((resolve, reject) => {
if (key) {
if (this.waitingMap.has(key)) {
let resolvers = this.waitingMap.get(key);
resolvers.push(resolve);
this.waitingMap.set(key, resolvers);
}
else {
this.waitingMap.set(key, [resolve]);
}
}
else {
this.waitingList.push(resolve);
}
});
}
isAcquired(key) {
if (key) {
if (!this._acquiredMap.has(key)) {
return false;
}
else {
return this._acquiredMap.get(key);
}
}
else {
return this._isAcquired;
}
}
release(key) {
var _a;
if (key) {
if (!this._acquiredMap.has(key) || !this._acquiredMap.get(key)) {
throw new Error("Please acquire a lock for " + key + " before releasing!!");
}
else {
if (((_a = this.waitingMap.get(key)) === null || _a === void 0 ? void 0 : _a.length) > 0) {
let resolve = this.waitingMap.get(key).shift();
resolve();
}
else {
if (this.waitingMap.has(key)) {
this.waitingMap.delete(key);
}
this._acquiredMap.set(key, false);
}
}
}
else {
if (!this._isAcquired) {
throw new Error("Please acquire a lock before releasing!!");
}
else {
if (this.waitingList.length > 0) {
let resolve = this.waitingList.shift();
resolve();
}
else {
this._isAcquired = false;
}
}
}
}
}
exports.Lock = Lock;
//# sourceMappingURL=lock.js.map
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
+3
-2
{
"name": "async-await-mutex-lock",
"version": "v1.0.5",
"version": "v1.0.6",
"description": "Mutex locks for async functions with functionality to use keys for separate locks",
"main": "index.js",
"main": "dist/index",
"types": "dist/index",
"scripts": {

@@ -7,0 +8,0 @@ "test": "jest --detectOpenHandles --verbose",

+4
-4

@@ -13,3 +13,3 @@ # Async Await Mutex Lock

```javascript
import Lock from "async-await-mutex-lock";
import { Lock } from "async-await-mutex-lock";

@@ -35,3 +35,3 @@ let lock = new Lock();

```javascript
import Lock from "async-await-mutex-lock";
import { Lock } from "async-await-mutex-lock";

@@ -67,3 +67,3 @@ let lock = new Lock<string>();

```javascript
import Lock from "async-await-mutex-lock";
import { Lock } from "async-await-mutex-lock";

@@ -81,3 +81,3 @@ let lock = new Lock();

```javascript
import Lock from "async-await-mutex-lock";
import { Lock } from "async-await-mutex-lock";

@@ -84,0 +84,0 @@ let lock = new Lock<string>();