├── .codeclimate.yml ├── .fossa.yml ├── .github ├── dependabot.yml └── workflows │ ├── branches.yml │ └── pull-requests.yml ├── .gitignore ├── .mocharc.yaml ├── .prettierrc ├── .snyk ├── .yarnrc.yml ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── docker-compose.yml ├── eslint.config.mjs ├── package.json ├── setup-redis-servers.sh ├── src ├── Lock.ts ├── RedisMultiSemaphore.ts ├── RedisMutex.ts ├── RedisSemaphore.ts ├── RedlockMultiSemaphore.ts ├── RedlockMutex.ts ├── RedlockSemaphore.ts ├── errors │ ├── LostLockError.ts │ └── TimeoutError.ts ├── index.ts ├── misc.ts ├── multiSemaphore │ ├── acquire │ │ ├── index.ts │ │ └── lua.ts │ ├── refresh │ │ ├── index.ts │ │ └── lua.ts │ └── release │ │ ├── index.ts │ │ └── lua.ts ├── mutex │ ├── acquire.ts │ ├── refresh.ts │ └── release.ts ├── redlockMultiSemaphore │ ├── acquire.ts │ ├── refresh.ts │ └── release.ts ├── redlockMutex │ ├── acquire.ts │ ├── refresh.ts │ └── release.ts ├── redlockSemaphore │ ├── acquire.ts │ ├── refresh.ts │ └── release.ts ├── semaphore │ ├── acquire │ │ ├── index.ts │ │ └── lua.ts │ ├── refresh │ │ ├── index.ts │ │ └── lua.ts │ └── release.ts ├── types.ts └── utils │ ├── createEval.ts │ ├── index.ts │ └── redlock.ts ├── test ├── init.test.ts ├── redisClient.ts ├── setup.ts ├── shell.test.ts ├── shell.ts ├── src │ ├── Lock.test.ts │ ├── RedisMultiSemaphore.test.ts │ ├── RedisMutex.test.ts │ ├── RedisSemaphore.test.ts │ ├── RedlockMultiSemaphore.test.ts │ ├── RedlockMutex.test.ts │ ├── RedlockSemaphore.test.ts │ ├── index.test.ts │ ├── multiSemaphore │ │ ├── acquire │ │ │ ├── index.test.ts │ │ │ └── internal.test.ts │ │ ├── refresh │ │ │ └── index.test.ts │ │ └── release │ │ │ └── index.test.ts │ ├── mutex │ │ ├── acquire.test.ts │ │ ├── refresh.test.ts │ │ └── release.test.ts │ ├── redlockMutex │ │ ├── acquire.test.ts │ │ ├── refresh.test.ts │ │ └── release.test.ts │ ├── semaphore │ │ ├── acquire │ │ │ ├── index.test.ts │ │ │ └── internal.test.ts │ │ ├── refresh │ │ │ └── index.test.ts │ │ └── release.test.ts │ └── utils │ │ ├── eval.test.ts │ │ ├── index.test.ts │ │ └── redlock.test.ts └── unhandledRejection.ts ├── tsconfig.build-commonjs.json ├── tsconfig.build-es.json ├── tsconfig.json └── yarn.lock /.codeclimate.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.codeclimate.yml -------------------------------------------------------------------------------- /.fossa.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.fossa.yml -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/branches.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.github/workflows/branches.yml -------------------------------------------------------------------------------- /.github/workflows/pull-requests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.github/workflows/pull-requests.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.gitignore -------------------------------------------------------------------------------- /.mocharc.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.mocharc.yaml -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.prettierrc -------------------------------------------------------------------------------- /.snyk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/.snyk -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | defaultSemverRangePrefix: '' 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/README.md -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/eslint.config.mjs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/package.json -------------------------------------------------------------------------------- /setup-redis-servers.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/setup-redis-servers.sh -------------------------------------------------------------------------------- /src/Lock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/Lock.ts -------------------------------------------------------------------------------- /src/RedisMultiSemaphore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedisMultiSemaphore.ts -------------------------------------------------------------------------------- /src/RedisMutex.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedisMutex.ts -------------------------------------------------------------------------------- /src/RedisSemaphore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedisSemaphore.ts -------------------------------------------------------------------------------- /src/RedlockMultiSemaphore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedlockMultiSemaphore.ts -------------------------------------------------------------------------------- /src/RedlockMutex.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedlockMutex.ts -------------------------------------------------------------------------------- /src/RedlockSemaphore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/RedlockSemaphore.ts -------------------------------------------------------------------------------- /src/errors/LostLockError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/errors/LostLockError.ts -------------------------------------------------------------------------------- /src/errors/TimeoutError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/errors/TimeoutError.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/misc.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/misc.ts -------------------------------------------------------------------------------- /src/multiSemaphore/acquire/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/acquire/index.ts -------------------------------------------------------------------------------- /src/multiSemaphore/acquire/lua.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/acquire/lua.ts -------------------------------------------------------------------------------- /src/multiSemaphore/refresh/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/refresh/index.ts -------------------------------------------------------------------------------- /src/multiSemaphore/refresh/lua.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/refresh/lua.ts -------------------------------------------------------------------------------- /src/multiSemaphore/release/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/release/index.ts -------------------------------------------------------------------------------- /src/multiSemaphore/release/lua.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/multiSemaphore/release/lua.ts -------------------------------------------------------------------------------- /src/mutex/acquire.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/mutex/acquire.ts -------------------------------------------------------------------------------- /src/mutex/refresh.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/mutex/refresh.ts -------------------------------------------------------------------------------- /src/mutex/release.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/mutex/release.ts -------------------------------------------------------------------------------- /src/redlockMultiSemaphore/acquire.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMultiSemaphore/acquire.ts -------------------------------------------------------------------------------- /src/redlockMultiSemaphore/refresh.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMultiSemaphore/refresh.ts -------------------------------------------------------------------------------- /src/redlockMultiSemaphore/release.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMultiSemaphore/release.ts -------------------------------------------------------------------------------- /src/redlockMutex/acquire.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMutex/acquire.ts -------------------------------------------------------------------------------- /src/redlockMutex/refresh.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMutex/refresh.ts -------------------------------------------------------------------------------- /src/redlockMutex/release.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockMutex/release.ts -------------------------------------------------------------------------------- /src/redlockSemaphore/acquire.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockSemaphore/acquire.ts -------------------------------------------------------------------------------- /src/redlockSemaphore/refresh.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockSemaphore/refresh.ts -------------------------------------------------------------------------------- /src/redlockSemaphore/release.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/redlockSemaphore/release.ts -------------------------------------------------------------------------------- /src/semaphore/acquire/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/semaphore/acquire/index.ts -------------------------------------------------------------------------------- /src/semaphore/acquire/lua.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/semaphore/acquire/lua.ts -------------------------------------------------------------------------------- /src/semaphore/refresh/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/semaphore/refresh/index.ts -------------------------------------------------------------------------------- /src/semaphore/refresh/lua.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/semaphore/refresh/lua.ts -------------------------------------------------------------------------------- /src/semaphore/release.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/semaphore/release.ts -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/types.ts -------------------------------------------------------------------------------- /src/utils/createEval.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/utils/createEval.ts -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/utils/index.ts -------------------------------------------------------------------------------- /src/utils/redlock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/src/utils/redlock.ts -------------------------------------------------------------------------------- /test/init.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/init.test.ts -------------------------------------------------------------------------------- /test/redisClient.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/redisClient.ts -------------------------------------------------------------------------------- /test/setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/setup.ts -------------------------------------------------------------------------------- /test/shell.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/shell.test.ts -------------------------------------------------------------------------------- /test/shell.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/shell.ts -------------------------------------------------------------------------------- /test/src/Lock.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/Lock.test.ts -------------------------------------------------------------------------------- /test/src/RedisMultiSemaphore.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedisMultiSemaphore.test.ts -------------------------------------------------------------------------------- /test/src/RedisMutex.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedisMutex.test.ts -------------------------------------------------------------------------------- /test/src/RedisSemaphore.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedisSemaphore.test.ts -------------------------------------------------------------------------------- /test/src/RedlockMultiSemaphore.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedlockMultiSemaphore.test.ts -------------------------------------------------------------------------------- /test/src/RedlockMutex.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedlockMutex.test.ts -------------------------------------------------------------------------------- /test/src/RedlockSemaphore.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/RedlockSemaphore.test.ts -------------------------------------------------------------------------------- /test/src/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/index.test.ts -------------------------------------------------------------------------------- /test/src/multiSemaphore/acquire/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/multiSemaphore/acquire/index.test.ts -------------------------------------------------------------------------------- /test/src/multiSemaphore/acquire/internal.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/multiSemaphore/acquire/internal.test.ts -------------------------------------------------------------------------------- /test/src/multiSemaphore/refresh/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/multiSemaphore/refresh/index.test.ts -------------------------------------------------------------------------------- /test/src/multiSemaphore/release/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/multiSemaphore/release/index.test.ts -------------------------------------------------------------------------------- /test/src/mutex/acquire.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/mutex/acquire.test.ts -------------------------------------------------------------------------------- /test/src/mutex/refresh.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/mutex/refresh.test.ts -------------------------------------------------------------------------------- /test/src/mutex/release.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/mutex/release.test.ts -------------------------------------------------------------------------------- /test/src/redlockMutex/acquire.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/redlockMutex/acquire.test.ts -------------------------------------------------------------------------------- /test/src/redlockMutex/refresh.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/redlockMutex/refresh.test.ts -------------------------------------------------------------------------------- /test/src/redlockMutex/release.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/redlockMutex/release.test.ts -------------------------------------------------------------------------------- /test/src/semaphore/acquire/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/semaphore/acquire/index.test.ts -------------------------------------------------------------------------------- /test/src/semaphore/acquire/internal.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/semaphore/acquire/internal.test.ts -------------------------------------------------------------------------------- /test/src/semaphore/refresh/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/semaphore/refresh/index.test.ts -------------------------------------------------------------------------------- /test/src/semaphore/release.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/semaphore/release.test.ts -------------------------------------------------------------------------------- /test/src/utils/eval.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/utils/eval.test.ts -------------------------------------------------------------------------------- /test/src/utils/index.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/utils/index.test.ts -------------------------------------------------------------------------------- /test/src/utils/redlock.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/src/utils/redlock.test.ts -------------------------------------------------------------------------------- /test/unhandledRejection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/test/unhandledRejection.ts -------------------------------------------------------------------------------- /tsconfig.build-commonjs.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/tsconfig.build-commonjs.json -------------------------------------------------------------------------------- /tsconfig.build-es.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/tsconfig.build-es.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/tsconfig.json -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarthy/redis-semaphore/HEAD/yarn.lock --------------------------------------------------------------------------------