New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

lockdb

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

lockdb

LockDB is a cross-platform tool you can use to handle process/event locking and avoid race conditions. It is sometimes also known as a semaphore.

  • 0.0.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

LockDB

deno npm

LockDB is a cross-platform tool you can use to handle process/event locking and avoid race conditions. It is sometimes also known as a semaphore.

There are packages for Node.js/Browser/Bun/NPM, Deno, and you can also use it as a CLI.

It has no dependencies, and is very simple to use, with effectively 3 commands/actions/methods: lock('name'), unlock('name'), and check('name').

You can get your apiKey at lockdb.com or connect LockDB to your own server/API.

Usage (package)

Node/Browser/Bun/NPM

npm install --save-exact lockdb
const LockDB = require('lockdb'); // or import LockDB from 'lockdb';

const lock = new LockDB('service-id', { apiKey: 'api-key' });

// Check on a lock (optional)
const isReportLocked = await lock.check('report');
console.log(isReportLocked); // Outputs `false`

// Create a lock, returning if it was locked before
const wasReportLocked = await lock.lock('report');
console.log(isReportLocked); // Outputs `false`

// Unlock a lock, returning if it was locked before
const wasReportLockedBeforeUnlock = await lock.unlock('report');
console.log(wasReportLockedBeforeUnlock); // Outputs `true`

Deno

import LockDB from 'https://deno.land/x/lockdb@1.0.0/mod.ts';

const lock = new LockDB('service-id', { apiKey: 'api-key' });

// Check on a lock (optional)
const isReportLocked = await lock.check('report');
console.log(isReportLocked); // Outputs `false`

// Create a lock, returning if it was locked before
const wasReportLocked = await lock.lock('report');
console.log(isReportLocked); // Outputs `false`

// Unlock a lock, returning if it was locked before
const wasReportLockedBeforeUnlock = await lock.unlock('report');
console.log(wasReportLockedBeforeUnlock); // Outputs `true`

CLI

You can find binaries for your system in the latest release.

Here's an example for Linux intel (x86_64), on downloading it with curl and moving it to /usr/local/bin/ so it's available globally as lockdb:

# Download the binary from the latest release for your system and move it to `/usr/local/bin/`. Here's an example for most Linux OSes:
$ curl https://github.com/BrunoBernardino/lockdb/releases/latest/download/lockdb-linux-intel --output lockdb && sudo mv lockdb /usr/local/bin/

Then to use it, on any OS:

# Set ENV variables
$ export LOCKDB_SERVICE_ID="service-id"
$ export LOCKDB_API_KEY="api-key"

# Check on a lock
$ lockdb check report
false

# Create a lock, returning if it was locked before
$ lockdb lock report
false

# Unlock a lock, returning if it was locked before 
$ lockdb unlock report
true

Development

Requires deno@1.36.0 (other versions will probably work).

$ make format
$ make test

# CLI
$ deno run --allow-net mock_server.ts
$ deno run --allow-net --allow-env=LOCKDB_SERVICE_ID,LOCKDB_API_KEY,LOCKDB_SERVER_URL main.ts check report --server-url="http://127.0.0.1:5678" --service-id="service-identifier" --api-key="api-key"

Publishing

After committing and pushing, just run make publish VERSION=x.y.z. That will also trigger a new tag, build binaries, and a new draft release with them.

Keywords

FAQs

Package last updated on 03 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc