Compare commits

..

7 Commits

Author SHA1 Message Date
7946c61468 remove comment block 2025-04-04 09:15:35 +02:00
0b77de8b4c fix ttl sometimes -1 2025-04-04 09:14:04 +02:00
6ae5b3ddd2 fix formatting, bump version 2025-01-10 18:30:13 +01:00
66261365d7 change package name 2025-01-10 18:25:59 +01:00
8ec81cf547 add publish script 2025-01-10 16:03:08 +01:00
c26e8f227a add .npmrc to gitignore 2025-01-10 15:59:09 +01:00
33050a6f4a bump version, add .npmignore 2025-01-10 15:55:50 +01:00
4 changed files with 22 additions and 12 deletions

1
.gitignore vendored
View File

@@ -70,6 +70,7 @@ web_modules/
# Optional npm cache directory # Optional npm cache directory
.npm .npm
.npmrc
# Optional eslint cache # Optional eslint cache

6
.npmignore Normal file
View File

@@ -0,0 +1,6 @@
test/
node_modules/
README.md
.gitignore
biome.json
bun.lockb

View File

@@ -1,9 +1,11 @@
{ {
"name": "mutex-lock-redis", "name": "@osudirect/mutex-lock-redis",
"version": "1.1.0",
"module": "index.ts", "module": "index.ts",
"type": "module", "type": "module",
"scripts": { "scripts": {
"lint": "bunx biome check --write" "lint": "bunx biome check --write",
"publish": "npm publish --scope=ezppfarm"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.9.4", "@biomejs/biome": "1.9.4",

View File

@@ -31,21 +31,22 @@ export class MutexLock {
const releaseFunc = async () => { const releaseFunc = async () => {
await this.redisClient.del(lockIdentifier); await this.redisClient.del(lockIdentifier);
}; };
let ttl = this.mutexOptions?.mutex?.ttl || 60;
if (ttl <= 0) ttl = 60;
while (true) { while (true) {
const acquired = await this.redisClient.set(lockIdentifier, "1", { const acquired = await this.redisClient.set(lockIdentifier, "1", {
NX: true NX: true,
EX: ttl,
}); });
if (acquired) { if (acquired) {
await this.redisClient.expire(
lockIdentifier,
this.mutexOptions?.mutex?.ttl || 60
);
return releaseFunc; return releaseFunc;
} }
await new Promise(resolve => await new Promise((resolve) =>
setTimeout(resolve, this.mutexOptions?.mutex?.checkInterval || 100) setTimeout(resolve, this.mutexOptions?.mutex?.checkInterval || 100),
); );
} }
}} }
}