Socket
Book a DemoInstallSign in
Socket

redis-lua2js

Package Overview
Dependencies
Maintainers
2
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redis-lua2js

Convert a redis lua script into a simple node module

latest
Source
npmnpm
Version
6.0.0
Version published
Maintainers
2
Created
Source

redis-lua2js

Build Status npm package Coverage Status

convert redis lua scripts to a useful node module

Install

$ npm install --save-dev redis-lua2js

Usage

This module is not meant to be used on its own, but rather as part of another module, such as gulp-redis-lua2js or hook-redis-lua. In here, I will demonstrate the usage with the help of module-from-string:

index.js:

import { readFileSync } from 'node:fs';
import { join } from 'node:path';
import Redis from 'ioredis';
import lua2js from 'redis-lua2js';
import { requireFromString } from 'module-from-string';

const ioredis = new Redis();
const lua = readFileSync(join(__dirname, 'pdel.lua'));
const js = lua2js(lua); // This is a node module string, the template of which you can see in src/lua.js
const pdel = requireFromString(js); // Parse the module as a string

ioredis.defineCommand(pdel.name, {
  lua: pdel.lua,
  numberOfKeys: pdel.numberOfKeys,
});
ioredis.pdel('*');

pdel.lua:

--!/usr/bin/env lua
-- name pdel
-- nkeys 1

local function deleteKeys (keys)
  for i, name in ipairs(keys) do
    redis.call("DEL", name)
  end
end

if type(redis.replicate_commands) == 'function' and redis.replicate_commands() then -- Redis 3.2+
  local count = 0
  local cursor = "0"
  local keys

  repeat
    cursor, keys = unpack(redis.call("SCAN", cursor, "MATCH", KEYS[1]))
    count = count + #keys
    deleteKeys(keys)
  until cursor == "0"

  return count
else
  local keys = redis.call("KEYS", KEYS[1])
  deleteKeys(keys)
  return #keys
end

API

lua2js(lua, { name, numberOfKeys, type = "commonjs" })

Takes the contents of a lua script and outputs a node module, as a string, which can be used to load the script into a redis client such as ioredis easily.

lua

Type: string, the contents of a lua script

name

Type: string?

By default it is parsed from the comments of the lua script, as demonstrated in the Usage section

The name of the redis command, will be used when installing to ioredis

numberOfKeys

Type: string?,

By default it is parsed from the comments of the lua script, as demonstrated in the Usage section

The number of keys that the redis command accepts

type

Type: "commonjs" | "module"

Whether the output module is commonjs or esm.

The parsed module will export the following:

name

Type: string | null, contains the name from the API above

numberOfKeys

Type: integer | null, contains the value of the number of keys argument from the API above

lua

Type: string, contains the contents of the lua script, useful for manually installing the script, for example, with ioredis.defineCommand

License

See the LICENSE file for license rights and limitations (MIT).

Keywords

redis

FAQs

Package last updated on 01 Nov 2025

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