UNPKG

syncguard

Version:

Functional TypeScript library for distributed locking across microservices. Prevents race conditions with Redis, PostgreSQL, Firestore, and custom backends. Features automatic lock management, timeout handling, and extensible architecture.

161 lines (160 loc) 4.68 kB
{ "name": "syncguard", "version": "2.5.3", "description": "Functional TypeScript library for distributed locking across microservices. Prevents race conditions with Redis, PostgreSQL, Firestore, and custom backends. Features automatic lock management, timeout handling, and extensible architecture.", "keywords": [ "atomic", "backend-agnostic", "cluster", "concurrency", "coordination", "critical-section", "database-lock", "distributed-lock", "distributed-systems", "functional", "lock", "microservices", "multi-process", "mutex", "parallel", "postgres", "postgresql", "race-condition", "redis", "resource-locking", "semaphore", "sql", "nosql", "firestore", "gcp", "google-cloud", "synchronization", "typescript" ], "author": "Konstantin Tarkus <koistya@kriasoft.com>", "license": "MIT", "homepage": "https://kriasoft.com/syncguard/", "repository": "github:kriasoft/syncguard", "bugs": "https://github.com/kriasoft/syncguard/issues", "funding": "https://github.com/sponsors/koistya", "engines": { "node": ">=20.0.0" }, "type": "module", "main": "./index.js", "module": "./index.js", "types": "./index.d.ts", "files": [ "**/*.js", "**/*.d.ts", "LICENSE", "README.md" ], "exports": { ".": { "types": "./index.d.ts", "default": "./index.js" }, "./common": { "types": "./common/index.d.ts", "default": "./common/index.js" }, "./redis": { "types": "./redis/index.d.ts", "default": "./redis/index.js" }, "./postgres": { "types": "./postgres/index.d.ts", "default": "./postgres/index.js" }, "./firestore": { "types": "./firestore/index.d.ts", "default": "./firestore/index.js" } }, "peerDependencies": { "@google-cloud/firestore": "^8", "ioredis": "^5", "postgres": "^3" }, "peerDependenciesMeta": { "@google-cloud/firestore": { "optional": true }, "ioredis": { "optional": true }, "postgres": { "optional": true } }, "devDependencies": { "@google-cloud/firestore": "^8.0.0", "@types/bun": "1.3.4", "firebase-tools": "^14.27.0", "gh-pages": "^6.3.0", "husky": "^9.1.7", "ioredis": "^5.8.1", "lint-staged": "^16.2.7", "postgres": "^3.4.7", "prettier": "^3.7.4", "prettier-plugin-sql": "^0.19.2", "typescript": "^5.9.3", "vitepress": "^2.0.0-alpha.15" }, "scripts": { "prepare": "husky", "build": "rm -rf ./dist && tsc && cp ./package.json ./LICENSE ./README.md ./dist", "dev": "tsc --watch", "format": "prettier --write .", "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json", "test": "bun test test/unit", "test:unit": "bun test test/unit", "test:unit:coverage": "bun test --coverage --coverage-reporter=lcov test/unit", "test:contracts": "bun test test/contracts", "test:contracts:coverage": "bun test --coverage --coverage-reporter=lcov test/contracts", "test:e2e": "bun test test/e2e", "test:e2e:coverage": "bun test --coverage --coverage-reporter=lcov test/e2e", "test:integration": "bun test test/contracts test/e2e", "test:integration:coverage": "bun test --coverage --coverage-reporter=lcov test/contracts test/e2e", "test:benchmarks": "RUN_BENCHMARKS=1 bun test test/benchmarks", "test:ci": "bun test test/unit test/contracts test/e2e", "test:all": "bun test test/unit test/contracts test/e2e", "test:watch": "bun test --watch test/unit", "redis": "docker run --rm --name redis-test -p 127.0.0.1:6379:6379 --tmpfs /data --health-cmd \"redis-cli ping\" --health-interval 2s --health-timeout 1s --health-retries 10 --health-start-period 0s redis:7-alpine", "firestore": "firebase emulators:start --only firestore", "docs:dev": "vitepress dev docs", "docs:build": "vitepress build docs", "docs:preview": "vitepress preview docs", "docs:deploy": "gh-pages -d docs/.vitepress/dist" }, "sideEffects": false, "lint-staged": { "*.{ts,js,json,md}": [ "bun prettier --write" ], "{common,firestore,redis,postgres}/**/*.ts": [ "bash -c 'bun tsc --noEmit --skipLibCheck'" ] }, "prettier": { "semi": true, "trailingComma": "all", "singleQuote": false, "printWidth": 80, "tabWidth": 2, "overrides": [ { "files": "**/*.sql", "options": { "language": "postgresql", "database": "postgresql", "plugins": [ "prettier-plugin-sql" ] } } ] } }