🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

redis-semaphore

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redis-semaphore - npm Package Compare versions

Comparing version

to
2.1.0

4

lib/fair-semaphore/acquire.d.ts

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function acquireFairSemaphore(client: Redis, key: string, limit: number, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;
import Redis from 'ioredis';
export default function acquireFairSemaphore(client: Redis.Redis | Redis.Cluster, key: string, limit: number, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;

@@ -1,4 +0,4 @@

import { Redis } from 'ioredis';
export declare function acquire(client: Redis, key: string, limit: number, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function release(client: Redis, key: string, identifier: string): Promise<boolean>;
export declare function refresh(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
import Redis from 'ioredis';
export declare function acquire(client: Redis.Redis | Redis.Cluster, key: string, limit: number, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function release(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<boolean>;
export declare function refresh(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function refreshFairSemaphore(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
import Redis from 'ioredis';
export default function refreshFairSemaphore(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function releaseFairSemaphore(client: Redis, key: string, identifier: string): Promise<boolean>;
import Redis from 'ioredis';
export default function releaseFairSemaphore(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function acquireMutex(client: Redis, key: string, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;
import Redis from 'ioredis';
export default function acquireMutex(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;

@@ -1,4 +0,4 @@

import { Redis } from 'ioredis';
export declare function acquire(client: Redis, key: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function refresh(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
export declare function release(client: Redis, key: string, identifier: string): Promise<void>;
import Redis from 'ioredis';
export declare function acquire(client: Redis.Redis | Redis.Cluster, key: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function refresh(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
export declare function release(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<void>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function refreshMutex(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
import Redis from 'ioredis';
export default function refreshMutex(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function releaseMutex(client: Redis, key: string, identifier: string): Promise<void>;
import Redis from 'ioredis';
export default function releaseMutex(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<void>;

@@ -5,3 +5,3 @@ /// <reference types="node" />

export default class RedisMutex {
protected _client: Redis.Redis;
protected _client: Redis.Redis | Redis.Cluster;
protected _key: string;

@@ -14,3 +14,3 @@ protected _identifier?: string;

protected _refreshInterval?: NodeJS.Timeout;
constructor(client: Redis.Redis, key: string, { lockTimeout, acquireTimeout, retryInterval, refreshInterval }?: TimeoutOptions);
constructor(client: Redis.Redis | Redis.Cluster, key: string, { lockTimeout, acquireTimeout, retryInterval, refreshInterval }?: TimeoutOptions);
protected _startRefresh(identifier: string): void;

@@ -17,0 +17,0 @@ protected _stopRefresh(): void;

@@ -22,3 +22,3 @@ "use strict";

}
if (!(client instanceof ioredis_1.default)) {
if (!(client instanceof ioredis_1.default || client instanceof ioredis_1.default.Cluster)) {
throw new Error('"client" must be instance of ioredis client');

@@ -25,0 +25,0 @@ }

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
import Redis from 'ioredis';
import { TimeoutOptions } from './misc';

@@ -6,3 +6,3 @@ import RedisMutex from './RedisMutex';

protected _limit: number;
constructor(client: Redis, key: string, limit: number, { lockTimeout, acquireTimeout, retryInterval, refreshInterval }?: TimeoutOptions);
constructor(client: Redis.Redis | Redis.Cluster, key: string, limit: number, { lockTimeout, acquireTimeout, retryInterval, refreshInterval }?: TimeoutOptions);
protected _processRefresh(identifier: string): Promise<void>;

@@ -9,0 +9,0 @@ acquire(): Promise<string>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function acquireSemaphore(client: Redis, key: string, limit: number, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;
import Redis from 'ioredis';
export default function acquireSemaphore(client: Redis.Redis | Redis.Cluster, key: string, limit: number, identifier: string, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<boolean>;

@@ -1,4 +0,4 @@

import { Redis } from 'ioredis';
export declare function acquire(client: Redis, key: string, limit: number, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function release(client: Redis, key: string, identifier: string): Promise<void>;
export declare function refresh(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
import Redis from 'ioredis';
export declare function acquire(client: Redis.Redis | Redis.Cluster, key: string, limit: number, lockTimeout: number, acquireTimeout: number, retryInterval: number): Promise<string>;
export declare function release(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<void>;
export declare function refresh(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function refreshSemaphore(client: Redis, key: string, identifier: string, lockTimeout: number): Promise<boolean>;
import Redis from 'ioredis';
export default function refreshSemaphore(client: Redis.Redis | Redis.Cluster, key: string, identifier: string, lockTimeout: number): Promise<boolean>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function releaseSemaphore(client: Redis, key: string, identifier: string): Promise<void>;
import Redis from 'ioredis';
export default function releaseSemaphore(client: Redis.Redis | Redis.Cluster, key: string, identifier: string): Promise<void>;

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis';
export default function createEval(script: string, keysCount: number): (client: Redis, args: (string | number)[]) => Promise<any>;
import Redis from 'ioredis';
export default function createEval(script: string, keysCount: number): (client: Redis.Redis | Redis.Cluster, args: (string | number)[]) => Promise<any>;

@@ -10,3 +10,5 @@ "use strict";

function createSHA1(script) {
return crypto_1.createHash('sha1').update(script, 'utf8').digest('hex');
return crypto_1.createHash('sha1')
.update(script, 'utf8')
.digest('hex');
}

@@ -20,3 +22,2 @@ function isNoScriptError(err) {

const baseSHAArgs = [sha1, keysCount];
const keysCountStr = '' + keysCount; // ...
debug('creating script:', script, 'sha1:', sha1);

@@ -27,3 +28,3 @@ return async function optimizedEval(client, args) {

try {
return await client.evalsha(sha1, keysCountStr, ...args);
return await client.evalsha(sha1, keysCount, ...args);
}

@@ -30,0 +31,0 @@ catch (err) {

{
"name": "redis-semaphore",
"version": "2.0.1",
"version": "2.1.0",
"description": "Distributed mutex and semaphore based on Redis",

@@ -11,2 +11,3 @@ "main": "lib/index.js",

"dev": "mocha -w",
"check-types": "tsc -b tsconfig.check-types.json",
"build": "yarn build-commonjs",

@@ -29,33 +30,33 @@ "build-commonjs": "rm -rf lib && yarn tsc -b tsconfig.build-commonjs.json",

"devDependencies": {
"@types/chai": "^4.2.11",
"@types/chai-as-promised": "^7.1.2",
"@types/chai": "^4.2.11",
"@types/debug": "^4.1.5",
"@types/ioredis": "^4.14.9",
"@types/ioredis": "^4.16.1",
"@types/mocha": "^7.0.2",
"@types/node": "13.13.0",
"@types/node": "13.13.5",
"@types/sinon": "^9.0.0",
"@types/sinon-chai": "^3.2.4",
"@types/sinon": "^9.0.0",
"@types/uuid": "^7.0.2",
"@typescript-eslint/eslint-plugin": "2.28.0",
"@typescript-eslint/parser": "2.28.0",
"@types/uuid": "^7.0.3",
"@typescript-eslint/eslint-plugin": "2.31.0",
"@typescript-eslint/parser": "2.31.0",
"babel-eslint": "^10.1.0",
"benchmark": "^2.1.4",
"chai": "4.2.0",
"chai-as-promised": "7.1.1",
"chai": "4.2.0",
"coveralls": "^3.0.11",
"coveralls": "^3.1.0",
"eslint": "6.8.0",
"eslint-config-inclusive": "1.2.7",
"eslint-plugin-node": "11.1.0",
"eslint": "6.8.0",
"ioredis": "^4.16.2",
"ioredis": "^4.16.3",
"mocha": "7.1.2",
"mocha-lcov-reporter": "^1.3.0",
"mocha": "7.1.1",
"nyc": "^15.0.1",
"sinon": "9.0.2",
"sinon-chai": "3.5.0",
"sinon": "9.0.2",
"snyk": "1.305.1",
"ts-node": "^8.8.2",
"snyk": "1.319.2",
"ts-node": "^8.10.1",
"typescript": "^3.8.3"
},
"engines": {
"node": ">= 8.0.0"
"node": ">= 10.0.0"
},

@@ -67,3 +68,3 @@ "peerDependencies": {

"debug": "^4.1.1",
"uuid": "^7.0.3"
"uuid": "^8.0.0"
},

@@ -70,0 +71,0 @@ "resolutions": {

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -39,3 +39,3 @@ import { createEval, delay } from '../utils/index'

export default async function acquireFairSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -42,0 +42,0 @@ limit: number,

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis'
import Redis from 'ioredis'
import { v4 as uuid4 } from 'uuid'

@@ -14,3 +14,3 @@

export async function acquire(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -40,3 +40,7 @@ limit: number,

export async function release(client: Redis, key: string, identifier: string) {
export async function release(
client: Redis.Redis | Redis.Cluster,
key: string,
identifier: string
) {
const finalKey = getKey(key)

@@ -47,3 +51,3 @@ return await releaseSemaphore(client, finalKey, identifier)

export async function refresh(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -50,0 +54,0 @@ identifier: string,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -34,3 +34,3 @@ import { createEval } from '../utils/index'

export default async function refreshFairSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -37,0 +37,0 @@ identifier: string,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -20,3 +20,3 @@ import { createEval } from '../utils/index'

export default async function releaseFairSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -23,0 +23,0 @@ identifier: string

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -9,3 +9,3 @@ import { delay } from '../utils/index'

export default async function acquireMutex(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -12,0 +12,0 @@ identifier: string,

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis'
import Redis from 'ioredis'
import { v4 as uuid4 } from 'uuid'

@@ -14,3 +14,3 @@

export async function acquire(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -39,3 +39,3 @@ lockTimeout: number,

export async function refresh(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -49,5 +49,9 @@ identifier: string,

export async function release(client: Redis, key: string, identifier: string) {
export async function release(
client: Redis.Redis | Redis.Cluster,
key: string,
identifier: string
) {
const finalKey = getKey(key)
return await releaseMutex(client, finalKey, identifier)
}
import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -21,3 +21,3 @@ import { createEval } from '../utils/index'

export default async function refreshMutex(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -24,0 +24,0 @@ identifier: string,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -20,3 +20,3 @@ import { createEval } from '../utils/index'

export default async function releaseMutex(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -23,0 +23,0 @@ identifier: string

@@ -18,3 +18,3 @@ import createDebug from 'debug'

export default class RedisMutex {
protected _client: Redis.Redis
protected _client: Redis.Redis | Redis.Cluster
protected _key: string

@@ -28,3 +28,3 @@ protected _identifier?: string

constructor(
client: Redis.Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -41,3 +41,3 @@ {

}
if (!(client instanceof Redis)) {
if (!(client instanceof Redis || client instanceof Redis.Cluster)) {
throw new Error('"client" must be instance of ioredis client')

@@ -44,0 +44,0 @@ }

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -14,3 +14,3 @@ import LostLockError from './errors/LostLockError'

constructor(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -17,0 +17,0 @@ limit: number,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -29,3 +29,3 @@ import { createEval, delay } from '../utils/index'

export default async function acquireSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -32,0 +32,0 @@ limit: number,

@@ -1,2 +0,2 @@

import { Redis } from 'ioredis'
import Redis from 'ioredis'
import { v4 as uuid4 } from 'uuid'

@@ -14,3 +14,3 @@

export async function acquire(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -40,3 +40,7 @@ limit: number,

export async function release(client: Redis, key: string, identifier: string) {
export async function release(
client: Redis.Redis | Redis.Cluster,
key: string,
identifier: string
) {
const finalKey = getKey(key)

@@ -47,3 +51,3 @@ return await releaseSemaphore(client, finalKey, identifier)

export async function refresh(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -50,0 +54,0 @@ identifier: string,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -25,3 +25,3 @@ import { createEval } from '../utils/index'

export default async function refreshSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -28,0 +28,0 @@ identifier: string,

import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -7,3 +7,3 @@ const debug = createDebug('redis-semaphore:semaphore:release')

export default async function releaseSemaphore(
client: Redis,
client: Redis.Redis | Redis.Cluster,
key: string,

@@ -10,0 +10,0 @@ identifier: string

import { createHash } from 'crypto'
import createDebug from 'debug'
import { Redis } from 'ioredis'
import Redis from 'ioredis'

@@ -8,3 +8,5 @@ const debug = createDebug('redis-semaphore:eval')

function createSHA1(script: string) {
return createHash('sha1').update(script, 'utf8').digest('hex')
return createHash('sha1')
.update(script, 'utf8')
.digest('hex')
}

@@ -20,6 +22,5 @@

const baseSHAArgs = [sha1, keysCount]
const keysCountStr = '' + keysCount // ...
debug('creating script:', script, 'sha1:', sha1)
return async function optimizedEval(
client: Redis,
client: Redis.Redis | Redis.Cluster,
args: Array<number | string>

@@ -30,3 +31,3 @@ ) {

try {
return await client.evalsha(sha1, keysCountStr, ...args)
return await client.evalsha(sha1, keysCount, ...args)
} catch (err) {

@@ -33,0 +34,0 @@ if (isNoScriptError(err)) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet