commit
564a5d3135
7 changed files with 2121 additions and 165 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 LBRY <filip@lbry.io>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
62
bot/bot.js
62
bot/bot.js
|
@ -1,65 +1,53 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// Load up libraries
|
// Load up libraries
|
||||||
const Discord = require("discord.js");
|
const Discord = require('discord.js');
|
||||||
// Load config!
|
// Load config!
|
||||||
let config = require('config');
|
let config = require('config');
|
||||||
config = config.get('bot');
|
config = config.get('bot');
|
||||||
|
|
||||||
var aliases;
|
var aliases;
|
||||||
try {
|
try {
|
||||||
aliases = require("./alias.json");
|
aliases = require('./alias.json');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//No aliases defined
|
//No aliases defined
|
||||||
aliases = {
|
aliases = {
|
||||||
"test": {
|
test: {
|
||||||
process: function(bot, msg) {
|
process: function(bot, msg) {
|
||||||
msg.channel.send('test');
|
msg.channel.send('test');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
var commands = {
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
var commands = {};
|
||||||
|
|
||||||
var bot = new Discord.Client();
|
var bot = new Discord.Client();
|
||||||
|
|
||||||
bot.on("ready", function() {
|
bot.on('ready', function() {
|
||||||
console.log(
|
console.log('Logged in! Serving in ' + bot.guilds.array().length + ' servers');
|
||||||
"Logged in! Serving in " + bot.guilds.array().length + " servers"
|
require('./plugins.js').init();
|
||||||
);
|
console.log('type ' + config.prefix + 'help in Discord for a commands list.');
|
||||||
require("./plugins.js").init();
|
bot.user.setGame(config.prefix + 'tip');
|
||||||
console.log("type " + config.prefix + "help in Discord for a commands list.");
|
|
||||||
bot.user.setGame(
|
|
||||||
config.prefix + "tip"
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
bot.on("disconnected", function() {
|
bot.on('disconnected', function() {
|
||||||
console.log("Disconnected!");
|
console.log('Disconnected!');
|
||||||
process.exit(1); //exit node.js with an error
|
process.exit(1); //exit node.js with an error
|
||||||
});
|
});
|
||||||
|
|
||||||
function checkMessageForCommand(msg, isEdit) {
|
function checkMessageForCommand(msg, isEdit) {
|
||||||
//check if message is a command
|
//check if message is a command
|
||||||
if (msg.author.id != bot.user.id && msg.content.startsWith(config.prefix)) {
|
if (msg.author.id != bot.user.id && msg.content.startsWith(config.prefix)) {
|
||||||
console.log(
|
console.log('treating ' + msg.content + ' from ' + msg.author + ' as command');
|
||||||
"treating " + msg.content + " from " + msg.author + " as command"
|
var cmdTxt = msg.content.split(' ')[0].substring(config.prefix.length);
|
||||||
);
|
var suffix = msg.content.substring(cmdTxt.length + config.prefix.length + 1); //add one for the ! and one for the space
|
||||||
var cmdTxt = msg.content.split(" ")[0].substring(config.prefix.length);
|
|
||||||
var suffix = msg.content.substring(
|
|
||||||
cmdTxt.length + config.prefix.length + 1
|
|
||||||
); //add one for the ! and one for the space
|
|
||||||
if (msg.isMentioned(bot.user)) {
|
if (msg.isMentioned(bot.user)) {
|
||||||
try {
|
try {
|
||||||
cmdTxt = msg.content.split(" ")[1];
|
cmdTxt = msg.content.split(' ')[1];
|
||||||
suffix = msg.content.substring(
|
suffix = msg.content.substring(bot.user.mention().length + cmdTxt.length + config.prefix.length + 1);
|
||||||
bot.user.mention().length + cmdTxt.length + config.prefix.length + 1
|
|
||||||
);
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//no command
|
//no command
|
||||||
msg.channel.send("Yes?");
|
msg.channel.send('Yes?');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,9 +62,9 @@ function checkMessageForCommand(msg, isEdit) {
|
||||||
try {
|
try {
|
||||||
cmd.process(bot, msg, suffix, isEdit);
|
cmd.process(bot, msg, suffix, isEdit);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
var msgTxt = "command " + cmdTxt + " failed :(";
|
var msgTxt = 'command ' + cmdTxt + ' failed :(';
|
||||||
if (config.debug) {
|
if (config.debug) {
|
||||||
msgTxt += "\n" + e.stack;
|
msgTxt += '\n' + e.stack;
|
||||||
}
|
}
|
||||||
msg.channel.send(msgTxt);
|
msg.channel.send(msgTxt);
|
||||||
}
|
}
|
||||||
|
@ -89,16 +77,16 @@ function checkMessageForCommand(msg, isEdit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg.author != bot.user && msg.isMentioned(bot.user)) {
|
if (msg.author != bot.user && msg.isMentioned(bot.user)) {
|
||||||
msg.channel.send("yes?"); //using a mention here can lead to looping
|
msg.channel.send('yes?'); //using a mention here can lead to looping
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bot.on("message", msg => checkMessageForCommand(msg, false));
|
bot.on('message', msg => checkMessageForCommand(msg, false));
|
||||||
bot.on("messageUpdate", (oldMessage, newMessage) => {
|
/*bot.on("messageUpdate", (oldMessage, newMessage) => {
|
||||||
checkMessageForCommand(newMessage, true);
|
checkMessageForCommand(newMessage, true);
|
||||||
});
|
});*/
|
||||||
|
|
||||||
exports.addCommand = function(commandName, commandObject) {
|
exports.addCommand = function(commandName, commandObject) {
|
||||||
try {
|
try {
|
||||||
|
@ -113,7 +101,7 @@ exports.addCustomFunc = function(customFunc) {
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
exports.commandCount = function() {
|
exports.commandCount = function() {
|
||||||
return Object.keys(commands).length;
|
return Object.keys(commands).length;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,29 +10,41 @@ exports.commands = [
|
||||||
]
|
]
|
||||||
exports.tip = {
|
exports.tip = {
|
||||||
usage: "<subcommand>",
|
usage: "<subcommand>",
|
||||||
description: 'balance: get your balance\n deposit: get adress for your deposits\n withdraw ADDRESS AMOUNT: withdraw AMOUNT credits to ADDRESS\n <user> <amount>: mention a user with @ and then the amount to tip them',
|
description: '\t[help]\n\t\tGet this message\n\tbalance\n\t\tGet your balance\n\tdeposit\n\t\tGet address for your deposits\n\twithdraw ADDRESS AMOUNT\n\t\tWithdraw AMOUNT credits to ADDRESS\n\t[private] <user> <amount>\n\t\tMention a user with @ and then the amount to tip them, or put private before the user to tip them privately.\nKey: [] : Optionally include contained keyword, <> : Replace with appropriate value.',
|
||||||
process: async function (bot, msg, suffix) {
|
process: async function (bot, msg, suffix) {
|
||||||
let tipper = msg.author.id,
|
let tipper = msg.author.id.replace('!', ''),
|
||||||
words = msg.content.trim().split(' ').filter(function (n) { return n !== ""; }),
|
words = msg.content.trim().split(' ').filter(function (n) { return n !== ""; }),
|
||||||
subcommand = words.length >= 2 ? words[1] : 'help';
|
subcommand = words.length >= 2 ? words[1] : 'help',
|
||||||
if (subcommand === 'help') {
|
helpmsgparts = [['[help]', 'Get this message'],
|
||||||
doHelp(msg);
|
['balance', 'Get your balance'],
|
||||||
}
|
['deposit', 'Get address for your deposits'],
|
||||||
else if (subcommand === 'balance') {
|
['withdraw ADDRESS AMOUNT', 'Withdraw AMOUNT credits to ADDRESS'],
|
||||||
doBalance(msg, tipper);
|
['[private] <user> <amount>', 'Mention a user with @ and then the amount to tip them, or put private before the user to tip them privately.']],
|
||||||
}
|
helpmsg = '```**!tip**\n' + formatDescriptions(helpmsgparts) + 'Key: [] : Optionally include contained keyword, <> : Replace with appropriate value.```',
|
||||||
else if (subcommand === 'deposit') {
|
channelwarning = 'Please use <#369896313082478594> or DMs to talk to bots.';
|
||||||
doDeposit(msg, tipper);
|
switch (subcommand) {
|
||||||
}
|
case 'help': privateOrSandboxOnly(msg, channelwarning, doHelp, [helpmsg]); break;
|
||||||
else if (subcommand === 'withdraw') {
|
case 'balance': doBalance(msg, tipper); break;
|
||||||
doWithdraw(msg, tipper, words);
|
case 'deposit': privateOrSandboxOnly(msg, channelwarning, doDeposit, [tipper]); break;
|
||||||
}
|
case 'withdraw': privateOrSandboxOnly(msg, channelwarning, doWithdraw, [tipper, words, helpmsg]); break;
|
||||||
else {
|
default: doTip(msg, tipper, words, helpmsg);
|
||||||
doTip(msg, tipper, words);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function privateOrSandboxOnly(message, wrongchannelmsg, fn, args) {
|
||||||
|
if (!inPrivateOrBotSandbox(message)) {
|
||||||
|
message.reply(wrongchannelmsg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fn.apply(null, [message, ...args]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function doHelp(message, helpmsg) {
|
||||||
|
message.author.send(helpmsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function doBalance(message, tipper) {
|
function doBalance(message, tipper) {
|
||||||
lbry.getBalance(tipper, 1, function (err, balance) {
|
lbry.getBalance(tipper, 1, function (err, balance) {
|
||||||
|
@ -47,10 +59,6 @@ function doBalance(message, tipper) {
|
||||||
|
|
||||||
|
|
||||||
function doDeposit(message, tipper) {
|
function doDeposit(message, tipper) {
|
||||||
if(!inPrivateOrBotSandbox(message)){
|
|
||||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
getAddress(tipper, function (err, address) {
|
getAddress(tipper, function (err, address) {
|
||||||
if (err) {
|
if (err) {
|
||||||
message.reply('Error getting deposit address');
|
message.reply('Error getting deposit address');
|
||||||
|
@ -62,13 +70,9 @@ function doDeposit(message, tipper) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function doWithdraw(message, tipper, words) {
|
function doWithdraw(message, tipper, words, helpmsg) {
|
||||||
if(!inPrivateOrBotSandbox(message)){
|
|
||||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (words.length < 4) {
|
if (words.length < 4) {
|
||||||
doHelp(message);
|
doHelp(message, helpmsg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,42 +95,37 @@ function doWithdraw(message, tipper, words) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function doTip(message, tipper, words) {
|
function doTip(message, tipper, words, helpmsg) {
|
||||||
if (words.length < 3 || !words) {
|
if (words.length < 3 || !words) {
|
||||||
doHelp(message);
|
doHelp(message, helpmsg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let amount = getValidatedAmount(words[2]);
|
let prv = 0;
|
||||||
|
let amountOffset = 2;
|
||||||
|
if (words.length >= 4 && words[1] === 'private') {
|
||||||
|
prv = 1;
|
||||||
|
amountOffset = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
let amount = getValidatedAmount(words[amountOffset]);
|
||||||
|
|
||||||
if (amount === null) {
|
if (amount === null) {
|
||||||
message.reply('I dont know how to tip that many credits');
|
message.reply('I dont know how to tip that many credits');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.mentions.members.first().id) {
|
if (message.mentions.users.first().id) {
|
||||||
let id = message.mentions.members.first().id;
|
sendLbc(message, tipper, message.mentions.users.first().id.replace('!', ''), amount, prv);
|
||||||
sendLbc(message, tipper, id, amount);
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
message.reply('Sorry, I could not find a user in your tip...');
|
message.reply('Sorry, I could not find a user in your tip...');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function doHelp(message) {
|
function sendLbc(message, tipper, recipient, amount, privacyFlag) {
|
||||||
if(!inPrivateOrBotSandbox(message)){
|
getAddress(recipient, function (err, address) {
|
||||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
message.reply('Sent you help via DM!');
|
|
||||||
message.author.send('**!tip**\n !tip balance: get your balance\n !tip deposit: get adress for your deposits\n !tip withdraw ADDRESS AMOUNT: withdraw AMOUNT credits to ADDRESS\n !tip <user> <amount>: send <amount> credits to <user>');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function sendLbc(message, tipper, id, amount) {
|
|
||||||
getAddress(id, function(err, address){
|
|
||||||
if (err) {
|
if (err) {
|
||||||
message.reply(err.message);
|
message.reply(err.message);
|
||||||
}
|
}
|
||||||
|
@ -137,10 +136,17 @@ function sendLbc(message, tipper, id, amount) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var imessage =
|
var imessage =
|
||||||
'Wubba lubba dub dub! <@' + tipper + '> tipped <@' + id + '> ' + amount + ' LBC (' + txLink(txId) + '). ' +
|
'Wubba lubba dub dub! <@' + tipper + '> tipped <@' + recipient + '> ' + amount + ' LBC (' + txLink(txId) + '). ' +
|
||||||
'DM me `!tip` for tipbot instructions.'
|
'DM me `!tip` for tipbot instructions.'
|
||||||
|
if (privacyFlag) {
|
||||||
|
message.author.send(imessage);
|
||||||
|
if (message.author.id != message.mentions.users.first().id) {
|
||||||
|
message.mentions.users.first().send(imessage);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
message.reply(imessage);
|
message.reply(imessage);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -168,6 +174,7 @@ function getAddress(userId, cb) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function inPrivateOrBotSandbox(msg) {
|
function inPrivateOrBotSandbox(msg) {
|
||||||
if ((msg.channel.type == 'dm') || (msg.channel.id === '369896313082478594')) {
|
if ((msg.channel.type == 'dm') || (msg.channel.id === '369896313082478594')) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -176,6 +183,7 @@ function inPrivateOrBotSandbox(msg){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getValidatedAmount(amount) {
|
function getValidatedAmount(amount) {
|
||||||
amount = amount.trim();
|
amount = amount.trim();
|
||||||
if (amount.toLowerCase().endsWith('lbc')) {
|
if (amount.toLowerCase().endsWith('lbc')) {
|
||||||
|
@ -188,3 +196,9 @@ function getValidatedAmount(amount) {
|
||||||
function txLink(txId) {
|
function txLink(txId) {
|
||||||
return "<https://explorer.lbry.io/tx/" + txId + ">";
|
return "<https://explorer.lbry.io/tx/" + txId + ">";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function formatDescriptions(msgparts) {
|
||||||
|
return msgparts.map(elem => '\t' + elem[0] + '\n\t\t' + elem[1] + '\n')
|
||||||
|
.join('');
|
||||||
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const fs = require("fs"),
|
const fs = require('fs'),
|
||||||
path = require("path");
|
path = require('path');
|
||||||
|
|
||||||
function getPlugins(srcpath) {
|
function getPlugins(srcpath) {
|
||||||
return fs.readdirSync(srcpath);
|
return fs.readdirSync(srcpath);
|
||||||
}
|
}
|
||||||
let plugin_directory = path.join(__dirname, "modules");
|
let plugin_directory = path.join(__dirname, 'modules');
|
||||||
let plugins = getPlugins(plugin_directory);
|
let plugins = getPlugins(plugin_directory);
|
||||||
|
|
||||||
exports.init = function init() {
|
exports.init = function init() {
|
||||||
|
@ -14,7 +14,7 @@ exports.init = function init() {
|
||||||
};
|
};
|
||||||
|
|
||||||
function load_plugins() {
|
function load_plugins() {
|
||||||
const dbot = require("./bot.js");
|
const dbot = require('./bot.js');
|
||||||
let commandCount = 0;
|
let commandCount = 0;
|
||||||
let otherFunc = 0;
|
let otherFunc = 0;
|
||||||
for (let i = 0; i < plugins.length; i++) {
|
for (let i = 0; i < plugins.length; i++) {
|
||||||
|
@ -25,7 +25,7 @@ function load_plugins() {
|
||||||
console.log(`Improper setup of the '${plugins[i]}' plugin. : ${err}`);
|
console.log(`Improper setup of the '${plugins[i]}' plugin. : ${err}`);
|
||||||
}
|
}
|
||||||
if (plugin) {
|
if (plugin) {
|
||||||
if ("commands" in plugin) {
|
if ('commands' in plugin) {
|
||||||
for (let j = 0; j < plugin.commands.length; j++) {
|
for (let j = 0; j < plugin.commands.length; j++) {
|
||||||
if (plugin.commands[j] in plugin) {
|
if (plugin.commands[j] in plugin) {
|
||||||
dbot.addCommand(plugin.commands[j], plugin[plugin.commands[j]]);
|
dbot.addCommand(plugin.commands[j], plugin[plugin.commands[j]]);
|
||||||
|
@ -33,7 +33,7 @@ function load_plugins() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if("custom" in plugin){
|
if ('custom' in plugin) {
|
||||||
for (let j = 0; j < plugin.custom.length; j++) {
|
for (let j = 0; j < plugin.custom.length; j++) {
|
||||||
if (plugin.custom[j] in plugin) {
|
if (plugin.custom[j] in plugin) {
|
||||||
dbot.addCustomFunc(plugin[plugin.custom[j]]);
|
dbot.addCustomFunc(plugin[plugin.custom[j]]);
|
||||||
|
|
1911
package-lock.json
generated
Normal file
1911
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
16
package.json
16
package.json
|
@ -8,8 +8,8 @@
|
||||||
"discord.js": "^11.2.1",
|
"discord.js": "^11.2.1",
|
||||||
"embed-creator": "^1.1.4",
|
"embed-creator": "^1.1.4",
|
||||||
"jsonpath": "^0.2.12",
|
"jsonpath": "^0.2.12",
|
||||||
"moment": "^2.19.1",
|
"moment": "^2.20.1",
|
||||||
"mongoose": "^4.12.3",
|
"mongoose": "^4.13.7",
|
||||||
"node-config": "^0.0.2",
|
"node-config": "^0.0.2",
|
||||||
"numeral": "^2.0.6",
|
"numeral": "^2.0.6",
|
||||||
"request": "^2.83.0"
|
"request": "^2.83.0"
|
||||||
|
@ -17,16 +17,18 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prettier": "prettier * --write",
|
"prettier": "prettier * --write",
|
||||||
"build": "babel bot -d dist",
|
"build": "babel bot -d dist",
|
||||||
"prod": "babel bot -d dist & node dist/bot.js"
|
"prod": "babel bot -d dist & node dist/bot.js",
|
||||||
|
"lint": "prettier --write bot/**/*.js",
|
||||||
|
"precommit": "prettier --write bot/**/*.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"prettier": "1.7.4"
|
"prettier": "1.7.4"
|
||||||
},
|
},
|
||||||
"name": "wunderbot-discord",
|
"name": "lbry-tipbot",
|
||||||
"version": "0.0.1",
|
"version": "0.0.3",
|
||||||
"description": "LBRYs bot for Discord",
|
"description": "LBRYs tipbot for Discord",
|
||||||
"main": "app.js",
|
"main": "app.js",
|
||||||
"repository": "https://github.com/filipnyquist/wunderbot-disc",
|
"repository": "https://github.com/lbryio/lbry-tipbot",
|
||||||
"author": "filipnyquist <filip@lbry.io>",
|
"author": "filipnyquist <filip@lbry.io>",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
}
|
}
|
||||||
|
|
106
yarn.lock
106
yarn.lock
|
@ -2,6 +2,10 @@
|
||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@types/node@^7.0.48":
|
||||||
|
version "7.0.48"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.48.tgz#24bfdc0aa82e8f6dbd017159c58094a2e06d0abb"
|
||||||
|
|
||||||
JSONSelect@0.4.0:
|
JSONSelect@0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.4.0.tgz#a08edcc67eb3fcbe99ed630855344a0cf282bb8d"
|
resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.4.0.tgz#a08edcc67eb3fcbe99ed630855344a0cf282bb8d"
|
||||||
|
@ -18,13 +22,13 @@ ajv@^4.9.1:
|
||||||
json-stable-stringify "^1.0.1"
|
json-stable-stringify "^1.0.1"
|
||||||
|
|
||||||
ajv@^5.1.0:
|
ajv@^5.1.0:
|
||||||
version "5.2.3"
|
version "5.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.4.0.tgz#32d1cf08dbc80c432f426f12e10b2511f6b46474"
|
||||||
dependencies:
|
dependencies:
|
||||||
co "^4.6.0"
|
co "^4.6.0"
|
||||||
fast-deep-equal "^1.0.0"
|
fast-deep-equal "^1.0.0"
|
||||||
|
fast-json-stable-stringify "^2.0.0"
|
||||||
json-schema-traverse "^0.3.0"
|
json-schema-traverse "^0.3.0"
|
||||||
json-stable-stringify "^1.0.1"
|
|
||||||
|
|
||||||
ansi-regex@^2.0.0:
|
ansi-regex@^2.0.0:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
|
@ -407,8 +411,8 @@ bcrypt-pbkdf@^1.0.0:
|
||||||
tweetnacl "^0.14.3"
|
tweetnacl "^0.14.3"
|
||||||
|
|
||||||
binary-extensions@^1.0.0:
|
binary-extensions@^1.0.0:
|
||||||
version "1.10.0"
|
version "1.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
|
||||||
|
|
||||||
bitcoin@^3.0.1:
|
bitcoin@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
|
@ -523,16 +527,18 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
commander@^2.11.0:
|
commander@^2.11.0:
|
||||||
version "2.11.0"
|
version "2.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.0.tgz#2f13615c39c687a77926aa68ef25c099db1e72fb"
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "^7.0.48"
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
|
|
||||||
config@^1.27.0:
|
config@^1.27.0:
|
||||||
version "1.27.0"
|
version "1.28.1"
|
||||||
resolved "https://registry.yarnpkg.com/config/-/config-1.27.0.tgz#3ab30d0080ff76f407c2f47ac1326adfd908af5f"
|
resolved "https://registry.yarnpkg.com/config/-/config-1.28.1.tgz#7625d2a1e4c90f131d8a73347982d93c3873282d"
|
||||||
dependencies:
|
dependencies:
|
||||||
json5 "0.4.0"
|
json5 "0.4.0"
|
||||||
os-homedir "1.0.2"
|
os-homedir "1.0.2"
|
||||||
|
@ -595,6 +601,10 @@ detect-indent@^4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
repeating "^2.0.0"
|
repeating "^2.0.0"
|
||||||
|
|
||||||
|
detect-libc@^1.0.2:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||||
|
|
||||||
discord.js@^11.2.1:
|
discord.js@^11.2.1:
|
||||||
version "11.2.1"
|
version "11.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.2.1.tgz#bfc0f5a8b6398dc372d026e503592646456053fc"
|
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.2.1.tgz#bfc0f5a8b6398dc372d026e503592646456053fc"
|
||||||
|
@ -616,8 +626,8 @@ ecc-jsbn@~0.1.1:
|
||||||
jsbn "~0.1.0"
|
jsbn "~0.1.0"
|
||||||
|
|
||||||
embed-creator@^1.1.4:
|
embed-creator@^1.1.4:
|
||||||
version "1.1.4"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/embed-creator/-/embed-creator-1.1.4.tgz#7f8a783db6ae384d029e746837d65553e6ff0f9e"
|
resolved "https://registry.yarnpkg.com/embed-creator/-/embed-creator-1.2.3.tgz#f122165d39f9ca35aed3ef7b7ae643e7dd856ea1"
|
||||||
|
|
||||||
es6-promise@3.2.1:
|
es6-promise@3.2.1:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
|
@ -695,6 +705,10 @@ fast-deep-equal@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
||||||
|
|
||||||
|
fast-json-stable-stringify@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||||
|
|
||||||
filename-regex@^2.0.0:
|
filename-regex@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
|
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
|
||||||
|
@ -740,19 +754,19 @@ form-data@~2.3.1:
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
fs-readdir-recursive@^1.0.0:
|
fs-readdir-recursive@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
|
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
|
||||||
|
|
||||||
fs.realpath@^1.0.0:
|
fs.realpath@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
|
|
||||||
fsevents@^1.0.0:
|
fsevents@^1.0.0:
|
||||||
version "1.1.2"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
|
||||||
dependencies:
|
dependencies:
|
||||||
nan "^2.3.0"
|
nan "^2.3.0"
|
||||||
node-pre-gyp "^0.6.36"
|
node-pre-gyp "^0.6.39"
|
||||||
|
|
||||||
fstream-ignore@^1.0.5:
|
fstream-ignore@^1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
|
@ -887,9 +901,9 @@ home-or-tmp@^2.0.0:
|
||||||
os-homedir "^1.0.0"
|
os-homedir "^1.0.0"
|
||||||
os-tmpdir "^1.0.1"
|
os-tmpdir "^1.0.1"
|
||||||
|
|
||||||
hooks-fixed@2.0.0:
|
hooks-fixed@2.0.2:
|
||||||
version "2.0.0"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.0.tgz#a01d894d52ac7f6599bbb1f63dfc9c411df70cba"
|
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.2.tgz#20076daa07e77d8a6106883ce3f1722e051140b0"
|
||||||
|
|
||||||
http-signature@~1.1.0:
|
http-signature@~1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -919,8 +933,8 @@ inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||||
|
|
||||||
ini@~1.3.0:
|
ini@~1.3.0:
|
||||||
version "1.3.4"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||||
|
|
||||||
invariant@^2.2.2:
|
invariant@^2.2.2:
|
||||||
version "2.2.2"
|
version "2.2.2"
|
||||||
|
@ -935,8 +949,8 @@ is-binary-path@^1.0.0:
|
||||||
binary-extensions "^1.0.0"
|
binary-extensions "^1.0.0"
|
||||||
|
|
||||||
is-buffer@^1.1.5:
|
is-buffer@^1.1.5:
|
||||||
version "1.1.5"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
|
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||||
|
|
||||||
is-dotfile@^1.0.0:
|
is-dotfile@^1.0.0:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
|
@ -1112,6 +1126,10 @@ lex-parser@0.1.x, lex-parser@~0.1.3:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/lex-parser/-/lex-parser-0.1.4.tgz#64c4f025f17fd53bfb45763faeb16f015a747550"
|
resolved "https://registry.yarnpkg.com/lex-parser/-/lex-parser-0.1.4.tgz#64c4f025f17fd53bfb45763faeb16f015a747550"
|
||||||
|
|
||||||
|
lodash.get@4.4.2:
|
||||||
|
version "4.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||||
|
|
||||||
lodash.some@^4.6.0:
|
lodash.some@^4.6.0:
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
|
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
|
||||||
|
@ -1179,8 +1197,8 @@ minimist@^1.2.0:
|
||||||
minimist "0.0.8"
|
minimist "0.0.8"
|
||||||
|
|
||||||
moment@^2.10.3, moment@^2.19.1:
|
moment@^2.10.3, moment@^2.19.1:
|
||||||
version "2.19.1"
|
version "2.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe"
|
||||||
|
|
||||||
mongodb-core@2.1.17:
|
mongodb-core@2.1.17:
|
||||||
version "2.1.17"
|
version "2.1.17"
|
||||||
|
@ -1198,13 +1216,14 @@ mongodb@2.2.33:
|
||||||
readable-stream "2.2.7"
|
readable-stream "2.2.7"
|
||||||
|
|
||||||
mongoose@^4.12.3:
|
mongoose@^4.12.3:
|
||||||
version "4.12.3"
|
version "4.13.4"
|
||||||
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.12.3.tgz#7099bf8ce4945150001f4c2462e56c9e958ddcb9"
|
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.13.4.tgz#31afd5fe865911678adbc892c4d3f66d0a821dfb"
|
||||||
dependencies:
|
dependencies:
|
||||||
async "2.1.4"
|
async "2.1.4"
|
||||||
bson "~1.0.4"
|
bson "~1.0.4"
|
||||||
hooks-fixed "2.0.0"
|
hooks-fixed "2.0.2"
|
||||||
kareem "1.5.0"
|
kareem "1.5.0"
|
||||||
|
lodash.get "4.4.2"
|
||||||
mongodb "2.2.33"
|
mongodb "2.2.33"
|
||||||
mpath "0.3.0"
|
mpath "0.3.0"
|
||||||
mpromise "0.5.5"
|
mpromise "0.5.5"
|
||||||
|
@ -1240,17 +1259,18 @@ muri@1.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/muri/-/muri-1.3.0.tgz#aeccf3db64c56aa7c5b34e00f95b7878527a4721"
|
resolved "https://registry.yarnpkg.com/muri/-/muri-1.3.0.tgz#aeccf3db64c56aa7c5b34e00f95b7878527a4721"
|
||||||
|
|
||||||
nan@^2.3.0:
|
nan@^2.3.0:
|
||||||
version "2.7.0"
|
version "2.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
|
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
|
||||||
|
|
||||||
node-config@^0.0.2:
|
node-config@^0.0.2:
|
||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/node-config/-/node-config-0.0.2.tgz#46b40dcfbcb0e66d46a15f81b54eac2130fb150d"
|
resolved "https://registry.yarnpkg.com/node-config/-/node-config-0.0.2.tgz#46b40dcfbcb0e66d46a15f81b54eac2130fb150d"
|
||||||
|
|
||||||
node-pre-gyp@^0.6.36:
|
node-pre-gyp@^0.6.39:
|
||||||
version "0.6.38"
|
version "0.6.39"
|
||||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d"
|
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
detect-libc "^1.0.2"
|
||||||
hawk "3.1.3"
|
hawk "3.1.3"
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
nopt "^4.0.1"
|
nopt "^4.0.1"
|
||||||
|
@ -1585,8 +1605,8 @@ sliced@1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
|
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
|
||||||
|
|
||||||
snekfetch@^3.3.0:
|
snekfetch@^3.3.0:
|
||||||
version "3.5.2"
|
version "3.5.8"
|
||||||
resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.5.2.tgz#aec6f2a7d2c43b9ed942653d1074070a2c1cae50"
|
resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.5.8.tgz#4d4e539f8435352105e74c392f62f66740a27d6c"
|
||||||
|
|
||||||
sntp@1.x.x:
|
sntp@1.x.x:
|
||||||
version "1.0.9"
|
version "1.0.9"
|
||||||
|
@ -1595,8 +1615,8 @@ sntp@1.x.x:
|
||||||
hoek "2.x.x"
|
hoek "2.x.x"
|
||||||
|
|
||||||
sntp@2.x.x:
|
sntp@2.x.x:
|
||||||
version "2.0.2"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b"
|
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
|
||||||
dependencies:
|
dependencies:
|
||||||
hoek "4.x.x"
|
hoek "4.x.x"
|
||||||
|
|
||||||
|
@ -1667,8 +1687,8 @@ supports-color@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||||
|
|
||||||
tar-pack@^3.4.0:
|
tar-pack@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
|
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^2.2.0"
|
debug "^2.2.0"
|
||||||
fstream "^1.0.10"
|
fstream "^1.0.10"
|
||||||
|
@ -1720,8 +1740,8 @@ uid-number@^0.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
||||||
|
|
||||||
ultron@~1.1.0:
|
ultron@~1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
|
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
|
||||||
|
|
||||||
underscore@1.1.x:
|
underscore@1.1.x:
|
||||||
version "1.1.7"
|
version "1.1.7"
|
||||||
|
@ -1768,8 +1788,8 @@ wrappy@1:
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
|
|
||||||
ws@^3.1.0:
|
ws@^3.1.0:
|
||||||
version "3.2.0"
|
version "3.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-3.2.0.tgz#d5d3d6b11aff71e73f808f40cc69d52bb6d4a185"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
|
||||||
dependencies:
|
dependencies:
|
||||||
async-limiter "~1.0.0"
|
async-limiter "~1.0.0"
|
||||||
safe-buffer "~5.1.0"
|
safe-buffer "~5.1.0"
|
||||||
|
|
Loading…
Reference in a new issue