You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-10 11:43:01 +03:00
Standard is not as up to date and still uses a old eslint version. Instead, use the airbnb default with a couple of modifications. All required changes are included.
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
'use strict'
|
|
|
|
const Command = require('./command')
|
|
|
|
function addCommand(clientProto, multiProto, command) {
|
|
// Some rare Redis commands use special characters in their command name
|
|
// Convert those to a underscore to prevent using invalid function names
|
|
const commandName = command.replace(/(?:^([0-9])|[^a-zA-Z0-9_$])/g, '_$1')
|
|
|
|
// Do not override existing functions
|
|
if (!clientProto[command]) {
|
|
clientProto[commandName] = function (...args) {
|
|
return this.internalSendCommand(new Command(command, args))
|
|
}
|
|
if (!clientProto[commandName].name) {
|
|
Object.defineProperty(clientProto[commandName], 'name', {
|
|
value: commandName
|
|
})
|
|
}
|
|
}
|
|
Object.defineProperty(clientProto, commandName.toUpperCase(), {
|
|
enumerable: false,
|
|
configurable: false,
|
|
writable: false,
|
|
value: clientProto[commandName]
|
|
})
|
|
|
|
// Do not override existing functions
|
|
if (!multiProto[command] && command !== 'multi') {
|
|
multiProto[commandName] = function (...args) {
|
|
this._queue.push(new Command(command, args))
|
|
return this
|
|
}
|
|
if (!multiProto[commandName].name) {
|
|
Object.defineProperty(multiProto[commandName], 'name', {
|
|
value: commandName
|
|
})
|
|
}
|
|
}
|
|
Object.defineProperty(multiProto, commandName.toUpperCase(), {
|
|
enumerable: false,
|
|
configurable: false,
|
|
writable: false,
|
|
value: clientProto[commandName]
|
|
})
|
|
}
|
|
|
|
module.exports = addCommand
|