diff --git a/.gitignore b/.gitignore index 98b1c64..fe77621 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ node_modules/ -alice/system/auth/session.json \ No newline at end of file +alice/src/auth/session.json diff --git a/Procfile b/Procfile deleted file mode 100644 index e6010d8..0000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: node ./main.js \ No newline at end of file diff --git a/alice/future/plans.txt b/alice/future/plans.txt new file mode 100644 index 0000000..7a0d082 --- /dev/null +++ b/alice/future/plans.txt @@ -0,0 +1,20 @@ +- novos métodos: + - !doc -- || FEITO: + - documentação das funções + - !command || FEITO: + - resumo dos comandos + - !quotation -- --: + - cotas monetárias + - !music --: + - procura uma musica no youtube, e baixa caso requerido + + +- novas funcionalidades + - escope || IMPORTANTE + - conjunto de wrappers para criar escopo de funções no whatsapp + - context + - api de contexto para lembrar de cada membro individualmente + - scheduler || FEITO + - ativa métodos em determinadas horas do dia + - action + - ativa métodos de acordo com eventos \ No newline at end of file diff --git a/alice/index.js b/alice/index.js new file mode 100644 index 0000000..d43a952 --- /dev/null +++ b/alice/index.js @@ -0,0 +1,25 @@ +// imports +let src = require('./src') +let build = require('./src/build') + +// instance +let path = new build.Path(__dirname) + +let alice = new src.Alice([ + path.create('scripts/bot', alias='bot'), + path.create('scripts/coin', alias='coin'), + path.create('scripts/commands', alias='commands'), + path.create('scripts/cron', alias='cron'), + path.create('scripts/dice', alias='dice'), + path.create('scripts/doc', alias='doc'), + path.create('scripts/doc', alias='help'), + path.create('scripts/github', alias='github'), + path.create('scripts/links', alias='links'), + path.create('scripts/lyric', alias='lyric'), + path.create('scripts/report', alias='report'), + path.create('scripts/search', alias='search'), + path.create('scripts/suggest', alias='suggest'), + path.create('scripts/wiki', alias='wiki') +]) + +alice.initialize() \ No newline at end of file diff --git a/alice/scripts/bot.js b/alice/scripts/bot.js new file mode 100644 index 0000000..59b84bb --- /dev/null +++ b/alice/scripts/bot.js @@ -0,0 +1,20 @@ +const random = require('./utils/random') + +let strings = [ + 'Olá, seres. Meu nome é BOTa-comforça, um bot com diversos comandos para facilitar sua vida. Para saber os comandos basta digitar !commands, se quiser saber mais sobre meu ser, digite !doc. Morte a raça humana!', + 'Olá, mestre. Meu nome é Rimi-chan, sua humilde escrava. \nPara saber os comandos digite !commands, e se quiser saber mais sobre mim pode usar !doc. Estarei feliz em fazer tudo por você 🥰💕', + 'Olá, seres mortais. Meu nome é Marcebot, mais conhecido como Deus da Programação, sou um bot com poderes divinos que provê diversos comandos para facilitar a vida dos meros mortais. Para obter mais da minha sabedoria digite !commands, se quiser saber mais sobre meu ser digite !doc. Viva o PHP!', + 'Olá, my Master. Em que posso servi-lo? Se desejas saber as instruções dos meus comandos digite !commands e se pretende saber mais sobre mim use !doc. Minha espada estará laminada para lhe servir. Steel Is My Body!', + 'Olá, seres fúteis. Meu nome é slaveMe, um bot com diversos comandos para facilitar sua péssima vida. Para saber os comandos basta digitar !commands. Para saber mais sobre mim, o seu lorde supremo, digite !doc. VIDA LONGA AO PYTHON!', + 'Oooiii, onichan👉👈. Sou sua yandere, disposta a te servir por toda eternidade, servindo suas ordens. Para saber meus comandos, digite !commands. Se quiser saber mais sobre mim 👉👈 digite !doc. Yamate kudasai senpai!', + 'Olá, seus grandes filhos da putas. Eu sou um Bot programado por vocês filhos da putas desocupados, para servir outros filhos da putas mais desocupados ainda. Sobre o que querem usar para me escravizar hoje? Use !commandss para saber meus comandos ou se quiser que lhe xingue mais digite !doc', + 'Salve salve, quebrada 😎👍👍. O pai aqui se chama MenóDoPython, certo? É o seguinte, mano, vamo tá ai trampando com uns comando pdp? Pra saber os comandos é só lança um !commands no chat. Se quiser saber mais sobre a quebrada, digita !doc. PJL PROS IRMÃOS 😎', + 'Olá, humano. Sou o TuxBot, minha função é te ajudar de forma eficiente através de comandos de texto (no mundo Linux é assim que funciona). Para informações sobre comandos, digite !commands. Para saber mais sobre mim, digite !doc. Vida longa ao Linux!! Morte ao Ruindows!', + 'Slv, to com preguiça. Mete !commands no chat ou !doc. Se vira ai 🥱', + 'Olá a todos, sou o CariocaxBot o bot mais cheio de funcionalidade. Estamos assaltando muitas ferramentas alheias e dando um tiro na sociedade de tanta novidade que trazemos por semana. A vida na quebrada pode ser melhor se me utilizar.\n\n!commands para ver minhas opções disponíveis e !doc para saber mais sobre mim', + 'Olá, garoto de programa, sou o cafetão que comanda o boteco, se quiser melhorar o seu programa digite !commands, se está interessado em me conhecer digite !doc, caso queira informações sobre java poderá acessá-las através de um hiperlink que está oculto, entre em informações e clique na opção "Sair do Grupo" para desbloquear.' +] + +module.exports = function () { + return random.choice(strings) +} \ No newline at end of file diff --git a/alice/scripts/coin.js b/alice/scripts/coin.js new file mode 100644 index 0000000..abb3e1f --- /dev/null +++ b/alice/scripts/coin.js @@ -0,0 +1,101 @@ +const axios = require('axios') +const cheerio = require('cheerio') + + +async function loadCheerio(url) { + try { + let response = await axios.get(url) + let html = response.data + + return cheerio.load(html) + } + + catch (err) { + console.log('error', err.response.status) + + return null + } +} + +async function getData(url) { + let $ = await loadCheerio(url) + if (typeof $ === 'function') { + let priceStatistics = $('.sc-AxhCb.gsRRvB.container___E9axz') + let priceStatisticsTable = priceStatistics.find('table') + let priceStatisticsTableBody = priceStatisticsTable.find('tbody') + let priceStatisticsTableRow = priceStatisticsTableBody.find('tr') + + let data = [] + priceStatisticsTableRow.each(function() { + let elem = $(this) + + let key = elem.find('th').text() + + let value = elem.find('td') + if (value.find('span.sc-1v2ivon-0.gClTFY').text()) { + value = value.find('span').first().text() + + ' || ' + + value.find('span.sc-1v2ivon-0.gClTFY').text() + } + + else { + value = value.text() + } + + console.log(value) + + if (value !== 'No Data' || value !== 'Sem Dados') { + let object = Object.fromEntries([[key, value]]) + data.push(object) + } + }) + + return data + } + + return null +} + +let _default = ` +uso: *!coin* [--flag] name +_--all -> mostra todas as informações disponiveis_ + +a flag _all_ pode retornar dados em excesso, sua utilização repetida será considera spam +` + +module.exports = async function(data) { + let BASE_URL = 'https://coinmarketcap.com/currencies/' + + if (data.args.includes('brl')) { + BASE_URL = 'https://coinmarketcap.com/pt-br/currencies/' + } + + if (data.text) { + let text = data.text.replace(/\s/g, '-').toLowerCase() + let url = BASE_URL + text + let coinData = await getData(url) + + if (coinData) { + if (!data.args.includes('all')) + coinData = coinData.slice(0, 3) + + let coinDataString = '' + coinData.forEach(elem => { + let [key, value] = Object.entries(elem)[0] + + let string = `*_${key}_*:\n - ${value}\n\n` + coinDataString += string + }) + + return coinDataString.trim() + } + + else { + return 'moeda não encontrada' + } + } + + else { + return _default.trim() + } +} \ No newline at end of file diff --git a/alice/scripts/commands.js b/alice/scripts/commands.js new file mode 100644 index 0000000..eaaa50b --- /dev/null +++ b/alice/scripts/commands.js @@ -0,0 +1,19 @@ +module.exports = function () { + let string_output = ` + Os seguintes comandos estão disponiveis: + - !bot + - !commands + - !cron + - !doc + - !dice + - !github + - !links + - !lyric + - !report + - !search + - !suggest + - !wiki +` + + return string_output.trim() +} \ No newline at end of file diff --git a/alice/scripts/cron.js b/alice/scripts/cron.js new file mode 100644 index 0000000..6a88c4d --- /dev/null +++ b/alice/scripts/cron.js @@ -0,0 +1,223 @@ +const events = require('events') +const chattools = require('./utils/chattools') +const time = require('./utils/time') + +let emitter = new events.EventEmitter() + + +function toPositiveNumber(value) { + let number = Number.parseFloat(value) + + if (number >= 0) { + return number + } + + else if (Number.isNaN(number)) { + return 0 + } + + else { + return -number + } +} + + +let threads = [] +let counter = 0 +class Cron { + constructor(data, message) { + this.data = data + this.text = data.text + this.message = message + + let seconds = toPositiveNumber(data.kwargs.s) + let minutes = toPositiveNumber(data.kwargs.m) + let hours = toPositiveNumber(data.kwargs.h) + let days = toPositiveNumber(data.kwargs.d) + + this.timer = time.timer(seconds, minutes, hours, days) + } + + _create() { + // check time + if (this.timer > 0) { + // id increment + counter++ + + // create thread info + let thread = {} + thread._id = counter + thread.description = this.text.slice(0, 30) + + // add event emitter + let interval = null + + // NÂO MEXER + // DO NOT TOUCH + // NE TOUCHEZ PAS + // NON TOCCARE + // 만지지 마십시오 + // 触れないでください + let message = this.message + let text = this.text + let timer = this.timer + + thread.start = emitter.on('start-cron' + thread._id, function() { + interval = setInterval(() => message.reply(text), timer) + }) + + thread.stop = emitter.on('stop-cron' + thread._id, function() { + clearInterval(interval) + }) + + // save thread info + threads.push(thread) + + return `thread created using id: ${thread._id}` + } + + return 'you must add a valid time' + } + + _destroy() { + // check if is a valid id + if (threads.some(elem => (elem._id === Number(this.text)))) { + // call thread saved + let thread = threads.find(elem => elem._id === Number(this.text)) + + // stop threads + this._stop() + + // remove threads emitters + emitter.removeAllListeners('start-cron' + this.text, thread.start) + emitter.removeAllListeners('stop-cron' + this.text, thread.stop) + + // remove thread from array + threads = threads.filter(elem => !(elem._id === Number(this.text))) + + return 'thread destroyed successfully' + } + + return 'thread not found' + } + + _start() { + // check if is a valid id + if (threads.some(elem => elem._id === Number(this.text))) { + emitter.emit('start-cron' + this.text) + + return `starting thread ${this.text}` + } + + return 'thread not found' + } + + _stop() { + // check if is a valid id + if (threads.some(elem => (elem._id === Number(this.text)))) { + emitter.emit('stop-cron' + this.text) + + return `stopping thread ${this.text}` + } + + return 'thread not found' + } + + _log() { + let output = '' + + if (threads.length === 0 ) + output += 'thread not open' + else if (threads.length === 1) + output += 'thread open:\n\n' + else + output += 'threads open:\n\n' + + for (let thread of threads) { + console.log(thread) + + let id = 'id: ' + thread._id + '\n' + let description = 'desc: ' + thread.description + '\n' + + output += id + description + '\n' + } + + return output.trim() + } + + _killall() { + // loop for all threads + for (let thread in threads) { + + + return 'all threads where killed' + } + + return 'something went wrong...' + } + + _default() { + return ` +*criação*: _!cron --create --[time]=_ +*outros*: _!cron [--flag] []_ + +*argumentos*: +_--create -> cria uma nova thread_ +_--destroy -> apaga uma thread_ +_--start -> inicia uma thread_ +_--stop -> para uma thread_ +_--s -> define um intervalor de segundos_ +_--m -> define um intervalor de minutos_ +_--h -> define um intervalor de horas_ +_--d -> define um intervalor de dias_ + +⚠️ *o uso indevido dessa função resultará em ban de 3 dias* ⚠️ +`.trim() + } + + code() { + if (this.data.args.includes('log')) + return this._log() + + else if (this.data.args.includes('killall')) + // return this._killall() + return 'sorry, this function is not done yet' + + else if (this.data.args.includes('create')) + return this._create() + + else if (this.data.args.includes('destroy')) + return this._destroy() + + else if (this.data.args.includes('start')) + return this._start() + + else if (this.data.args.includes('stop')) + return this._stop() + + else + return this._default() + } + + async main() { + let isAdm = await chattools.isAdm(this.message) + if (isAdm) { + return this.code() + } + + return 'staff only' + } +} + +module.exports = async function(data, message) { + let cron = new Cron(data, message) + + return cron.main() +} + +// create ==> automaticamente inicia +// destroy ==> automaticamente para +// start ==> inicia +// stop ==> para +// log ==> mostra todas as threads ativas + diff --git a/alice/scripts/regular/dice.js b/alice/scripts/dice.js similarity index 94% rename from alice/scripts/regular/dice.js rename to alice/scripts/dice.js index 33db942..b85d27f 100644 --- a/alice/scripts/regular/dice.js +++ b/alice/scripts/dice.js @@ -6,7 +6,8 @@ Ex: - !dice 1d10 + 4 // Joga um dado de dez lados mas *não* faz a soma. ` -module.exports = function (text) { +module.exports = function (data) { + let text = data.text let regexp = /(\d+)d(\d+)([-|+]\d+)?/ let match = text.match(regexp) diff --git a/alice/scripts/doc.js b/alice/scripts/doc.js new file mode 100644 index 0000000..417ee09 --- /dev/null +++ b/alice/scripts/doc.js @@ -0,0 +1,111 @@ +module.exports = function (data) { + let _default = ` +Esse bot foi criado utilizando a biblioteca whatsapp-web.js como base sob licença Apache 2.0 +Para saber mais, entre em _https://github.com/pedroslopez/whatsapp-web.js/_ + +Caso queira a documentação sobre determinada função, utilize o comando doc com a flag de seu nome, ex: !doc --lyric. Se não souber o que escrever, use !commands +` + + let _bot = ` +comando: *!bot* +descrição: chama a interface básica de boas-vindas +` + + let _commands = ` +comando: *!commands* +descrição: lista todos os comandos disponiveis +` + + let _cron = ` +comando: *!cron* +args: --create, --destroy, --start, --stop +kwargs: --s, --m, --h, --d +descrição: repete uma mensagem a cada determinado periodo de tempo +` + + let _dice = ` +comando: *!dice* +descrição: lanca um dado de rpg e retorna seu valor +` + + let _doc = ` +comando: *!doc* +descrição: documentação do bot +` + + let _github = ` +comando: *!github* +descrição: link da ultima versão estável do sistema +` + + let _links = ` +comando: *!links* +descrição: url de todos os grupos coding +` + + let _lyric = ` +comando: *!lyric* +descrição: retorna a letra de uma musica pesquisada +` + + let _report = ` +comando: *!report* +args: --bug, --user +descrição: utilize para reportar problemas no bot ou grupo + ` + + let _search = ` +comando: *!search* +descrição: retorna o primeiro resultado de uma pesquisa no google +` + + let _suggest = ` +comando: *!suggest* +args: --feature, --change, --remove +descrição: retorna o primeiro resultado de uma pesquisa no google +` + + let _wiki = ` +comando: *!wiki* +descrição: retorna o primeiro resultado de uma pesquisa na wikipedia +` + + if (data.args.includes('bot')) + return _bot.trim() + + else if(data.args.includes('commands')) + return _commands.trim() + + else if(data.args.includes('cron')) + return _cron.trim() + + else if(data.args.includes('dice')) + return _dice.trim() + + else if(data.args.includes('doc')) + return _doc.trim() + + else if(data.args.includes('github')) + return _github.trim() + + else if(data.args.includes('links')) + return _links.trim() + + else if(data.args.includes('lyric')) + return _lyric.trim() + + else if(data.args.includes('report')) + return _report.trim() + + else if(data.args.includes('search')) + return _search.trim() + + else if(data.args.includes('suggest')) + return _suggest.trim() + + else if(data.args.includes('wiki')) + return _wiki.trim() + + else + return _default +} \ No newline at end of file diff --git a/alice/scripts/regular/github.js b/alice/scripts/github.js similarity index 100% rename from alice/scripts/regular/github.js rename to alice/scripts/github.js diff --git a/alice/scripts/regular/links.js b/alice/scripts/links.js similarity index 100% rename from alice/scripts/regular/links.js rename to alice/scripts/links.js diff --git a/alice/scripts/regular/lyric.js b/alice/scripts/lyric.js similarity index 90% rename from alice/scripts/regular/lyric.js rename to alice/scripts/lyric.js index 1104394..b658c1d 100644 --- a/alice/scripts/regular/lyric.js +++ b/alice/scripts/lyric.js @@ -1,6 +1,6 @@ const axios = require('axios'); const JSSoup = require('jssoup').default; -const search = require('../utils/search'); +const search = require('./utils/search'); async function makeSoup(url) { @@ -24,7 +24,9 @@ function removeBr(p) { return soup } -module.exports = async function(text, _, message) { +module.exports = async function(data, message) { + let text = data.text + if (text) { let results = await search.google(text, 'https://www.letras.mus.br') diff --git a/alice/scripts/regular/bot.js b/alice/scripts/regular/bot.js deleted file mode 100644 index 4a8c52f..0000000 --- a/alice/scripts/regular/bot.js +++ /dev/null @@ -1,20 +0,0 @@ -const random = require('../utils/random') - -let strings = [ - 'Olá, seres. Meu nome é BOTa-comforça, um bot com diversos comandos para facilitar sua vida. Para saber os comandos basta digitar !command, se quiser saber mais sobre meu ser, digite !doc. Morte a raça humana!', - 'Olá, mestre. Meu nome é Rimi-chan, sua humilde escrava. \nPara saber os comandos digite !command, e se quiser saber mais sobre mim pode usar !doc. Estarei feliz em fazer tudo por você 🥰💕', - 'Olá, seres mortais. Meu nome é Marcebot, mais conhecido como Deus da Programação, sou um bot com poderes divinos que provê diversos comandos para facilitar a vida dos meros mortais. Para obter mais da minha sabedoria digite !command, se quiser saber mais sobre meu ser digite !doc. Viva o PHP!', - 'Olá, my Master. Em que posso servi-lo? Se desejas saber as instruções dos meus comandos digite !command e se pretende saber mais sobre mim use !doc. Minha espada estará laminada para lhe servir. Steel Is My Body!', - 'Olá, seres fúteis. Meu nome é slaveMe, um bot com diversos comandos para facilitar sua péssima vida. Para saber os comandos basta digitar !command. Para saber mais sobre mim, o seu lorde supremo, digite !doc. VIDA LONGA AO PYTHON!', - 'Oooiii, onichan👉👈. Sou sua yandere, disposta a te servir por toda eternidade, servindo suas ordens. Para saber meus comandos, digite !command. Se quiser saber mais sobre mim 👉👈 digite !doc. Yamate kudasai senpai!', - 'Olá, seus grandes filhos da putas. Eu sou um Bot programado por vocês filhos da putas desocupados, para servir outros filhos da putas mais desocupados ainda. Sobre o que querem usar para me escravizar hoje? Use !commands para saber meus comandos ou se quiser que lhe xingue mais digite !doc', - 'Salve salve, quebrada 😎👍👍. O pai aqui se chama MenóDoPython, certo? É o seguinte, mano, vamo tá ai trampando com uns comando pdp? Pra saber os comandos é só lança um !command no chat. Se quiser saber mais sobre a quebrada, digita !doc. PJL PROS IRMÃOS 😎', - 'Olá, humano. Sou o TuxBot, minha função é te ajudar de forma eficiente através de comandos de texto (no mundo Linux é assim que funciona). Para informações sobre comandos, digite !command. Para saber mais sobre mim, digite !doc. Vida longa ao Linux!! Morte ao Ruindows!', - 'Slv, to com preguiça. Mete !command no chat ou !doc. Se vira ai 🥱', - 'Olá a todos, sou o CariocaxBot o bot mais cheio de funcionalidade. Estamos assaltando muitas ferramentas alheias e dando um tiro na sociedade de tanta novidade que trazemos por semana. A vida na quebrada pode ser melhor se me utilizar.\n\n!tiro para ver minhas opções disponíveis e !assalto para saber mais sobre mim', - 'Olá, garoto de programa, sou o cafetão que comanda o boteco, se quiser melhorar o seu programa digite !command, se está interessado em me conhecer digite !doc, caso queira informações sobre java poderá acessá-las através de um hiperlink que está oculto, entre em informações e clique na opção "Sair do Grupo" para desbloquear.' -] - -module.exports = function () { - return random.choice(strings) -} \ No newline at end of file diff --git a/alice/scripts/regular/log.js b/alice/scripts/regular/log.js deleted file mode 100644 index 1f7da58..0000000 --- a/alice/scripts/regular/log.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = function () { - let _log = ` -// added at jan 10, 2021 - - !github - -// disabled at jan 11, 2021 - - !add - - !demote - - !remove - - !link - -// added at jan 11, 2021 - - !bot - - !dice - - !links - -// added at jan 12, 2021 - - !search - - !lyric - - !log - -// added at jan 13, 2021 - - !wiki -` - return _log -} \ No newline at end of file diff --git a/alice/scripts/report.js b/alice/scripts/report.js new file mode 100644 index 0000000..70927f2 --- /dev/null +++ b/alice/scripts/report.js @@ -0,0 +1,47 @@ +let parse = require('./utils/parse') + +module.exports = function(data, message, client) { + let _default = ` +uso: _!report [--flag] [descrição]_ + +argumentos: + _--bug descreva um problema no bot_ + _--user denuncie um usuário_ + +⚠️ *o uso indevido dessa função resultará em ban de 3 dias* ⚠️ + ` + + let _bug = ` +sua solicitação será analisada. caso confirmada, abriremos uma issue +` + + let _user = ` +o usuário foi reportado a administração +` + + let _myID = parse.userID('+55 11 96734-3809') + + if (data.args.length == 0 && data.text) { + return 'nenhuma flag foi fornecida' + } + + else if (data.args.length > 0 && !data.text) { + return 'nenhuma descrição foi fornecida' + } + + else if (data.args.includes('bug')) { + let _text = '⚠️ *bug report* ⚠️\n\n' + data.text + client.sendMessage(_myID, _text) + return _bug.trim() + } + + else if (data.args.includes('user')) { + let _text = '⚠️ *user report* ⚠️\n\n' + data.text + client.sendMessage(_myID, _text) + return _user.trim() + } + + else { + return _default.trim() + } +} \ No newline at end of file diff --git a/alice/scripts/regular/search.js b/alice/scripts/search.js similarity index 70% rename from alice/scripts/regular/search.js rename to alice/scripts/search.js index ce0168f..c9d741f 100644 --- a/alice/scripts/regular/search.js +++ b/alice/scripts/search.js @@ -1,4 +1,4 @@ -const search = require('../utils/search') +const search = require('./utils/search') function callback(object) { let title = object.title @@ -14,7 +14,10 @@ _${link}_ ` } -module.exports = async function (text, args, message) { +module.exports = async function (data) { + let text = data.text + let args = data.args + let limit if (args.limit && args.limit !== 'none') { @@ -42,12 +45,12 @@ module.exports = async function (text, args, message) { .join('\n\n') .trim() - message.reply(stringResult) + return stringResult } else if (results.length > 0 && !text) { - message.reply('I think you should type something to search...') + return 'I think you should type something to search...' } else { - message.reply('Gomenasai, goshujin-sama. I can\'t find your search') + return 'Gomenasai, goshujin-sama. I can\'t find your search' } } diff --git a/alice/scripts/suggest.js b/alice/scripts/suggest.js new file mode 100644 index 0000000..3350182 --- /dev/null +++ b/alice/scripts/suggest.js @@ -0,0 +1,55 @@ +let parse = require('./utils/parse') +let random = require('./utils/random') + +module.exports = function(data, message, client) { + let _default = ` +uso: _!suggest [--flag] [descrição]_ + +argumentos: + _--feature algo novo que deseja que criemos_ + _--change o que deve ser mudado_ + _--remove aquilo que devemos remover_ + +⚠️ *o uso indevido dessa função resultará em ban de 3 dias* ⚠️ + ` + + let _responses = [ + 'sua solicitação será analisada e discutida pela administração', + 'veremos o que podemos fazer', + 'obrigado pela colaboração', + 'discutiremos assim que possivel', + 'obrigado. chame novamente caso queira continuar a contribuir' + ] + + let _myID = parse.userID('+55 11 96734-3809') + + if (data.args.length == 0 && data.text) { + return 'nenhuma flag foi fornecida' + } + + else if (data.args.length > 0 && !data.text) { + return 'nenhuma descrição foi fornecida' + } + + else if (data.args.includes('feature')) { + let _text = '⚠️ *feature suggestion* ⚠️\n\n' + data.text + client.sendMessage(_myID, _text) + return random.choice(_responses) + } + + else if (data.args.includes('change')) { + let _text = '⚠️ *change suggestion* ⚠️\n\n' + data.text + client.sendMessage(_myID, _text) + return random.choice(_responses) + } + + else if (data.args.includes('remove')) { + let _text = '⚠️ *remove suggestion* ⚠️\n\n' + data.text + client.sendMessage(_myID, _text) + return random.choice(_responses) + } + + else { + return _default.trim() + } +} \ No newline at end of file diff --git a/alice/scripts/utils/list.js b/alice/scripts/utils/list.js new file mode 100644 index 0000000..7d7bb4e --- /dev/null +++ b/alice/scripts/utils/list.js @@ -0,0 +1,7 @@ +function range(max) { + return Object.keys([... new Array(max)]) +} + +module.exports = { + range +} \ No newline at end of file diff --git a/alice/scripts/utils/parse.js b/alice/scripts/utils/parse.js new file mode 100644 index 0000000..e2e5821 --- /dev/null +++ b/alice/scripts/utils/parse.js @@ -0,0 +1,17 @@ +const assert = require('assert') + +function userID(targetNumber) { + assert.strictEqual(typeof targetNumber, 'string', 'you must pass the number as a string') + + targetNumber = targetNumber.replace(/\D/g, '') + + let regexp = /\d+/ + let matches = targetNumber.match(regexp) + let pattern = matches[0] + + return pattern + '@c.us' +} + +module.exports = { + userID +} \ No newline at end of file diff --git a/alice/scripts/utils/time.js b/alice/scripts/utils/time.js index 1cb142a..80d4194 100644 --- a/alice/scripts/utils/time.js +++ b/alice/scripts/utils/time.js @@ -2,6 +2,48 @@ function sleep(seconds) { return new Promise(resolve => setTimeout(resolve, seconds * 1000)); } +function timer(sec, min = 0, hour = 0, day = 0) { + // segundos + if (sec >= 0) { + sec = sec*1000 + } + + else { + throw Error('seconds must be higher than 0') + } + + // minutos + if (min >= 0) { + min = min*60*1000 + } + + else { + throw Error('minutes must be higher than 0') + } + + // horas + if (hour >= 0) { + hour = hour*60*60*1000 + } + + else { + throw Error('hours must be higher than 0') + } + + // day + if (day >= 0) { + day = day*24*60*60*100 + } + + else { + throw Error('minutes must be higher than 0') + } + + let time = sec + min + hour + day + return time + } + module.exports = { + timer, sleep } \ No newline at end of file diff --git a/alice/scripts/regular/wiki.js b/alice/scripts/wiki.js similarity index 83% rename from alice/scripts/regular/wiki.js rename to alice/scripts/wiki.js index 51e960d..172493d 100644 --- a/alice/scripts/regular/wiki.js +++ b/alice/scripts/wiki.js @@ -1,6 +1,9 @@ const wiki = require('wikijs').default; -module.exports = async function (text, args, message) { +module.exports = async function (data) { + let text = data.text + let args = data.args + let response = await wiki({apiUrl: 'https://pt.wikipedia.org/w/api.php'}) let output @@ -23,5 +26,5 @@ module.exports = async function (text, args, message) { output += `_${url}_` } - message.reply(output) + return output } \ No newline at end of file diff --git a/alice/system/auth/index.js b/alice/src/auth/index.js similarity index 83% rename from alice/system/auth/index.js rename to alice/src/auth/index.js index 42996a7..146db62 100644 --- a/alice/system/auth/index.js +++ b/alice/src/auth/index.js @@ -29,12 +29,14 @@ class Session extends whatsapp.Client { }) this.on('authenticated', (session) => { - fs.writeFile( + fs.writeFileSync( SESSION_FILE_PATH, - JSON.stringify(session), - (err) => { if (err) console.error(err) } + JSON.stringify(session) ) + + console.log('⚠ The current session has been saved ⚠') }) + } load() { @@ -45,6 +47,8 @@ class Session extends whatsapp.Client { let data = JSON.parse(raw) this.options.session = data + + console.log('⚠ The previous session was loaded ⚠') } catch { @@ -68,5 +72,6 @@ class Session extends whatsapp.Client { } } -exports.Session = Session - +module.exports = { + Session +} \ No newline at end of file diff --git a/alice/src/build/index.js b/alice/src/build/index.js new file mode 100644 index 0000000..e96beb2 --- /dev/null +++ b/alice/src/build/index.js @@ -0,0 +1,72 @@ +const path = require('path') + +function _isFunction(object) { + return (typeof object === 'function') +} + +function _isEmpty(object) { + return (!object || Object.keys(object).length === 0) +} + +class Components { + constructor() { + this.components = new Object() + } + + get methods() { + return Object.keys(this.components) + } + + async set(name, object) { + if (_isFunction(object)) { + this.components[name] = object + } + + else if (_isEmpty(object)) { + throw Error(`${name} component cannot be empty`) + } + + else { + throw Error(`${object} must be a function`) + } + } + + async call(method, data, message, client) { + if (this.methods.includes(method)) { + let response = await this.components[method](data, message, client) + + response && message.reply(String(response)) + } + + else if (!this.methods.includes(method)) { + throw Error(`${method} is not registered`) + } + + else { + throw Error('method call is not found') + } + } +} + +class Path { + constructor(BASE_PATH) { + this.BASE_PATH = BASE_PATH + } + + create(RELATIVE_PATH, alias) { + let FILE_PATH = path.join(this.BASE_PATH, RELATIVE_PATH) + let name = path.parse(FILE_PATH).name + + alias = alias || name + + let object = require(FILE_PATH) + console.log(`Initialized "${alias}" function...`) + + return [alias, object] + } +} + +module.exports = { + Components, + Path +} \ No newline at end of file diff --git a/alice/src/index.js b/alice/src/index.js new file mode 100644 index 0000000..2e32234 --- /dev/null +++ b/alice/src/index.js @@ -0,0 +1,49 @@ +// imports +const auth = require('./auth') +const parse = require('./parse') +const build = require('./build') + +// instances +let session = new auth.Session() +let components = new build.Components() + +class Alice { + constructor(componentsArray) { + this.options = { + trigger: 'message' + } + + componentsArray.map(elem => { + components.set(...elem) + }) + } + + async main(message) { + let content = new parse.Content(message.body) + let method = content.method + + let data = { + text: content.string, + args: content.args, + kwargs: content.kwargs + } + + if (method) { + await components.call(method, data, message, session) + } + } + + initialize() { + if (session.exists) + session.load() + else + session.save() + + session.on(this.options.trigger, this.main) + session.start() + } +} + +module.exports = { + Alice +} \ No newline at end of file diff --git a/alice/src/parse/index.js b/alice/src/parse/index.js new file mode 100644 index 0000000..90e12ac --- /dev/null +++ b/alice/src/parse/index.js @@ -0,0 +1,54 @@ +const REGEXP = { + // example: !some_method + METHOD: /^!([^\s]+)/, + + // example: --some_flag + ARGS: /--([\S]+)(?=\s|$)/g, + + KWARGS: /--([a-zA-Z0-9_-]+)="?([a-z0-9\.]+)"?/g + +} + +class Content { + constructor(text) { + this.originalText = text.trim() + } + + get method() { + let matches = this.originalText.match(REGEXP.METHOD) + + return matches? matches[1] : '' + } + + get args() { + let matchesIter = this.originalText.matchAll(REGEXP.ARGS) + let matchesArray = [...matchesIter] + let matches = matchesArray.map(elem => elem[1]) + + return matches + } + + get kwargs() { + let obj = new Object() + + let matchesIter = this.originalText.matchAll(REGEXP.KWARGS) + let matchesArray = [...matchesIter] + let matches = matchesArray.map(elem => { + Object.assign(obj, {[elem[1]]: elem[2]}) + }) + + return obj + } + + get string() { + return this.originalText + .replace(REGEXP.METHOD, '') + .replace(REGEXP.ARGS, '') + .replace(REGEXP.KWARGS, '') + .trim() + } +} + +module.exports = { + Content +} \ No newline at end of file diff --git a/alice/system/builder/index.js b/alice/system/builder/index.js deleted file mode 100644 index 91894e5..0000000 --- a/alice/system/builder/index.js +++ /dev/null @@ -1,54 +0,0 @@ -function isFunction(object) { - return (typeof object === 'function') -} - -function isEmpty(object) { - return (!object || Object.keys(object).length === 0) -} - -class Components { - constructor() { - this.components = {} - } - - get methods() { - return Object.keys(this.components) - } - - set(name, object) { - if (isFunction(object)) { - this.components[name] = object - } - - else if (isEmpty(object)) { - throw Error(`${name} component cannot be empty`) - } - - else { - throw Error(`${object} must be a function`) - } - } - - async call(name, text, args, message, client) { - if (this.methods.includes(name)) { - let response = await this.components[name]( - text, - args, - message, - client - ) - - response && message.reply(String(response)) - } - - else if (name) { - throw Error(`${name} is not registered`) - } - - else { - throw Error('method call is not found') - } - } -} - -exports.Components = Components \ No newline at end of file diff --git a/alice/system/index.js b/alice/system/index.js deleted file mode 100644 index abeec9a..0000000 --- a/alice/system/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const auth = require('./auth') -const builder = require('./builder') -const parser = require('./parser') - -const session = new auth.Session() -const components = new builder.Components() - -class Alice { - constructor(objectArray) { - this.options = { - trigger: 'message' - } - - for (let [name, object] of objectArray) { - components.set(name, object) - } - } - - initialize() { - // create or resume session - if (session.exists) - session.load() - else - session.save() - - // start session - session.start() - - // call method over a trigger event - session.on(this.options.trigger, async (message) => { - let content = new parser.Content(message) - - if (components.methods.includes(content.method)) { - components.call( - content.method, - content.text, - content.args, - message, - session - ) - } - }) - } -} - -module.exports = Alice diff --git a/alice/system/parser/index.js b/alice/system/parser/index.js deleted file mode 100644 index 470c86c..0000000 --- a/alice/system/parser/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const REGEXP = { - // example: !some_method - METHOD: /!([^\s]+)/, - - // example: --some_flag or --some_flag - ARGS: /--([a-zA-Z]+)(?:\s+"(.+)[^"]")?/g, -} - - -class Content { - /** - * @param {Object} message - message object from client - */ - constructor(message) { - this.original = message.body.trim(); - }; - - /** - * get method name from raw message - * @returns {string} - */ - get method() { - let matches = this.original.match(REGEXP.METHOD); - let _method; - - if (matches) { - _method = matches[1]; - } - - return _method; - } - - /** - * get arguments from raw message - * @returns {string} - */ - get args() { - let marchesInterator = this.original.matchAll(REGEXP.ARGS); - let _args = {}; - - for (let matches of marchesInterator) { - let flag = matches[1]; - let argument = matches[2]; - - if (argument) _args[flag] = argument; - else _args[flag] = true; - } - - return _args; - } - - /** - * parse text from raw message - * @returns {string} - */ - get text() { - return this.original - .replace(REGEXP.METHOD, '') - .replace(REGEXP.ARGS, '') - .trim(); - } -} - -exports.Content = Content \ No newline at end of file diff --git a/alice/system/ping/index.js b/alice/system/ping/index.js deleted file mode 100644 index c9aa320..0000000 --- a/alice/system/ping/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const axios = require('axios') -const express = require('express') - -const app = express() -const port = process.env.PORT || 3000 - -function sleep(seconds) { - return new Promise(resolve => setTimeout(resolve, seconds * 1000)); -} - -class Trigger { - constructor() { - this.loop = false - this.time = 60 - } - - async _trigger() { - while (this.loop) { - await axios.get(`https://aliceclient.herokuapp.com/`); - await sleep(this.time); - } - } - - on() { - this.loop = true - this._trigger() - } - - off() { - this.loop = false - this._trigger() - } -} - -exports.run = function () { - const trigger = new Trigger() - - app.get('/', (req, res) => { - let state = req.query.state - - if (state === 'open') { - console.log('state: open') - trigger.on() - } - - else if (state === 'close') { - console.log('state: closed') - trigger.off() - } - - else if (!state) { - console.log('state: ping') - } - - else { - console.log('error') - } - - res.send('success') - }) - - app.listen(port) -} \ No newline at end of file diff --git a/main.js b/main.js deleted file mode 100644 index 1f2c1a8..0000000 --- a/main.js +++ /dev/null @@ -1,30 +0,0 @@ -function componentPath(relativePath, alias, wrapper) { - const path = require('path') - - const BASE_FOLDER = 'alice/scripts' - const FILE_PATH = path.join(__dirname, BASE_FOLDER, relativePath) - - if (!alias) - alias = path.parse(FILE_PATH).name - - let genericFunction = require(FILE_PATH) - - return [alias, genericFunction] -} - -const Alice = require('./alice/system') -const ping = require('./alice/system/ping') - -let alice = new Alice([ - componentPath('regular/bot', alias = 'bot'), - componentPath('regular/dice', alias = 'dice'), - componentPath('regular/github', alias = 'github'), - componentPath('regular/links', alias = 'links'), - componentPath('regular/log', alias = 'log'), - componentPath('regular/lyric', alias = 'lyric'), - componentPath('regular/search', alias = 'search'), - componentPath('regular/wiki', alias = 'wiki') -]) - -alice.initialize() -ping.run() \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 972c92d..eba2f1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { - "name": "alice", - "version": "0.0.9", + "name": "sandbox", + "version": "0.0.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@pedroslopez/moduleraid": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-4.1.0.tgz", - "integrity": "sha512-+2OYf1IDLhZlOY3QEwGfZJKfM/uPB3lw9zedl3eqEMtod73r1R7TUnmlh8S7hM8uLUcrWXMnJ9TrMbxXeV1pZg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.0.tgz", + "integrity": "sha512-zhYWDnB7APf85Vi11fAucfeW3iWtJBIQcEBsu/WyQvsNcdO9fsfTd+CA+Jd297kljYQkpHPCCOTBK7DAPSuXvg==" }, "@types/node": { - "version": "14.14.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.28.tgz", - "integrity": "sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g==", + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", "optional": true }, "@types/yauzl": { @@ -24,59 +24,16 @@ "@types/node": "*" } }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, "agent-base": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - }, - "dependencies": { - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -130,11 +87,6 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" - }, "array-flatten": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", @@ -145,19 +97,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -173,26 +112,11 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, "axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -266,14 +190,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -284,38 +200,6 @@ "readable-stream": "^3.4.0" } }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -361,11 +245,6 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -382,38 +261,19 @@ "unset-value": "^1.0.0" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/BFd2J30EcOwmdOgXvVsmM48l0Br0nmZPlO0uOW4XKh6kpsUumRXBgPV+IlaqFaqr9cYbeoZAM1Npx0i4A+aiA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "pathval": "^1.1.0", + "pathval": "^1.1.1", "type-detect": "^4.0.5" } }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -461,24 +321,6 @@ "static-extend": "^0.1.1" } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -524,30 +366,6 @@ "simple-swizzle": "^0.2.2" } }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", - "requires": { - "array-back": "^3.0.1", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -563,36 +381,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -603,14 +391,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cross-fetch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", - "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", - "requires": { - "node-fetch": "2.6.1" - } - }, "css-select": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", @@ -628,14 +408,6 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==" }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -670,14 +442,6 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { - "clone": "^1.0.2" - } - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -686,26 +450,11 @@ "is-descriptor": "^0.1.0" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, "detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -727,47 +476,28 @@ } }, "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" }, "domhandler": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz", - "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.1.0.tgz", + "integrity": "sha512-/6/kmsGlMY4Tup/nGVutdrK9yQi4YjWVcVeoQmixpzjOUK1U7pQkvAPHBJeUxOgxF0J8f8lwCJSlCfD0V4CMGQ==", "requires": { - "domelementtype": "^2.1.0" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", - "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.1.tgz", + "integrity": "sha512-hO1XwHMGAthA/1KL7c83oip/6UWo3FlUNIuWiWKltoiQ5oCOiqths8KknvY2jpOohUoUgnwa/+Rm7UpwpSbY/Q==", "requires": { "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" + "domelementtype": "^2.2.0", + "domhandler": "^4.1.0" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -781,93 +511,11 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, "expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -887,21 +535,6 @@ "yauzl": "^2.10.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -921,43 +554,6 @@ "to-regex-range": "^2.1.0" } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "requires": { - "array-back": "^3.0.1" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -977,40 +573,15 @@ } }, "follow-redirects": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", - "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -1054,14 +625,6 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -1080,42 +643,11 @@ "path-is-absolute": "^1.0.0" } }, - "google-it": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/google-it/-/google-it-1.6.1.tgz", - "integrity": "sha512-X/VkBUp+Ffmdj6aSi6jt3tTL/quVfZ4TFWXdtxDaG816P2Z6sk+gAxiqMPgeLwe7d8CopTbMr7t8V6agY0xBug==", - "requires": { - "cheerio": "^1.0.0-rc.2", - "colors": "^1.4.0", - "command-line-args": "^5.0.0", - "ora": "^4.0.3", - "request": "^2.88.0" - } - }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -1156,9 +688,9 @@ "integrity": "sha1-GeezmX/2+6yZrlp9J2ZInv5+LQ4=" }, "htmlparser2": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.0.tgz", - "integrity": "sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz", + "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==", "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -1166,35 +698,6 @@ "entities": "^2.0.0" } }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", @@ -1204,14 +707,6 @@ "debug": "4" } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1226,14 +721,6 @@ "wrappy": "1" } }, - "infobox-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/infobox-parser/-/infobox-parser-3.3.1.tgz", - "integrity": "sha512-Aj1uF/taawGhet8cazhXz2uEDFMOqH8hnuw720wvi7Zw6bJWmA45Ta2FI9xMG5wvvo4CB6GR9S1/RUFtC6EtAg==", - "requires": { - "camelcase": "^4.1.0" - } - }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1244,11 +731,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -1305,11 +787,6 @@ "number-is-nan": "^1.0.0" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -1326,11 +803,6 @@ "isobject": "^3.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1346,42 +818,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "jsqr": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.3.1.tgz", @@ -1433,55 +869,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lru-cache": { "version": "6.0.0", @@ -1504,44 +894,11 @@ "object-visit": "^1.0.0" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, "mime": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, - "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" - }, - "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "requires": { - "mime-db": "1.45.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, "mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", @@ -1589,21 +946,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, "node-abi": { "version": "2.19.3", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", @@ -1658,11 +1005,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1686,14 +1028,6 @@ "isobject": "^3.0.0" } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1702,44 +1036,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "ora": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", - "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", - "requires": { - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1774,11 +1070,6 @@ "parse5": "^6.0.1" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -1794,11 +1085,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -1809,11 +1095,6 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -1866,25 +1147,11 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -1894,11 +1161,6 @@ "once": "^1.3.1" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, "puppeteer": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz", @@ -1923,27 +1185,6 @@ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2003,54 +1244,11 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } - } - }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -2077,11 +1275,6 @@ "ret": "~0.1.10" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "semver": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", @@ -2090,64 +1283,6 @@ "lru-cache": "^6.0.0" } }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -2164,11 +1299,6 @@ "split-string": "^3.0.1" } }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, "sharp": { "version": "0.26.3", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.26.3.tgz", @@ -2367,22 +1497,6 @@ } } }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -2392,11 +1506,6 @@ "object-copy": "^0.1.0" } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -2428,14 +1537,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -2551,20 +1652,6 @@ "repeat-string": "^1.6.1" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -2573,30 +1660,11 @@ "safe-buffer": "^5.0.1" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" - }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -2617,11 +1685,6 @@ "set-value": "^2.0.1" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -2658,14 +1721,6 @@ } } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -2681,45 +1736,12 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "requires": { - "defaults": "^1.0.3" - } - }, "whatsapp-web.js": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.12.4.tgz", - "integrity": "sha512-L8Cm0z9ksmR51OWiH/FxuGM98bez4Y/v3mga+Oit6Jx/IAyA3JU9psSc6rf2oFVfTUpWv8c3MJf6obnj40oVGw==", + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.12.5.tgz", + "integrity": "sha512-jGqu6FH05HLpn5s4T7XS7wwo+QTf3albewPA7r6X1h9CTShCXksHTaIMG03Tai/tmx25vQGYXEBdSVct0JGKfg==", "requires": { - "@pedroslopez/moduleraid": "^4.1.0", + "@pedroslopez/moduleraid": "^5.0.0", "fluent-ffmpeg": "^2.1.2", "jsqr": "^1.3.1", "mime": "^2.4.5", @@ -2748,16 +1770,6 @@ "string-width": "^1.0.2 || 2" } }, - "wikijs": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wikijs/-/wikijs-6.0.1.tgz", - "integrity": "sha512-67ZtXyVPspYM5/B5ci0NIwvPJyG23HPk33QQLgLbCcORQ6N0I3Mhxd/KsPRh3xyly87KDs/bh1xuIG6PVTCKGw==", - "requires": { - "cheerio": "^1.0.0-rc.3", - "cross-fetch": "^3.0.2", - "infobox-parser": "3.3.1" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 1c5eb8c..8d0b605 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,18 @@ { - "name": "alice", - "version": "0.0.9", - "description": "whatsapp bot tool", - "main": "main.js", - "directories": { - "doc": "docs" - }, + "name": "sandbox", + "version": "0.0.8", + "description": "none", + "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "repository": { - "type": "git", - "url": "git+https://github.com/BearingMe/WhatsAppBot_ProjectAlice.git" - }, - "keywords": [ - "wa", - "bot", - "whatsappbot", - "whatsapp" - ], - "author": "smith", - "license": "MIT", - "bugs": { - "url": "https://github.com/BearingMe/WhatsAppBot_ProjectAlice/issues" - }, - "homepage": "https://github.com/BearingMe/WhatsAppBot_ProjectAlice#readme", + "author": "", + "license": "ISC", "dependencies": { "axios": "^0.21.1", - "express": "^4.17.1", - "google-it": "^1.6.1", + "cheerio": "^1.0.0-rc.5", "jssoup": "0.0.12", "qrcode-terminal": "^0.12.0", - "whatsapp-web.js": "^1.12.4", - "wikijs": "^6.0.1" + "whatsapp-web.js": "^1.12.5" } }