diff --git a/helpers/buffer.js b/helpers/buffer.js
new file mode 100644
index 00000000..3fb65adb
--- /dev/null
+++ b/helpers/buffer.js
@@ -0,0 +1,23 @@
+const messageBuffer = {
+ jz0ahj: [
+ {
+ chatId: "-388078727",
+ name: "jim",
+ text: "helloo",
+ from: "jims",
+ adminName: "admin",
+ },
+ ],
+};
+
+module.exports.getMessages = function getMessages(userId) {
+ return messageBuffer[userId] || [];
+};
+
+module.exports.getMessageCount = function getMessageCount(userId) {
+ return messageBuffer[userId] ? messageBuffer[userId].length : 0;
+};
+
+module.exports.deleteBuffer = function deleteBuffer(userId) {
+ delete messageBuffer[userId];
+};
diff --git a/helpers/socket.js b/helpers/socket.js
new file mode 100644
index 00000000..8a36a14b
--- /dev/null
+++ b/helpers/socket.js
@@ -0,0 +1,214 @@
+const { getMessages, deleteBuffer } = require("./buffer");
+const { sendMessageToTelegram, sendTypingAction } = require("./telegram");
+const socketIo = require("socket.io");
+
+const connectedSockets = {};
+
+module.exports.createSocketServer = function createSocketServer(server) {
+ const io = socketIo(server);
+
+ io.on("connection", (socket) => {
+ socket.on("register", async function (registerMsg) {
+ const { isNewUser, chatId, userId, oldId, userData, currentUrl } =
+ registerMsg;
+ console.info("a user connected", userId);
+ socket.userId = userId;
+ socket.userData = userData;
+ connectedSockets[userId] = socket;
+ const messages = getMessages(userId);
+
+ if (messages.length) {
+ console.info(`${userId} has ${messages.length} messages in the buffer`);
+ for (let msg of messages) {
+ const { chatId, name, text, from, adminName } = msg;
+ console.info("sending buffered message to user", text);
+ socket.emit(chatId + "-" + userId, {
+ name,
+ text,
+ from,
+ adminName,
+ });
+ }
+ deleteBuffer(userId);
+ }
+ });
+
+ socket.on("message", (data) => {
+ if (!connectedSockets[socket.userId]) {
+ console.log(
+ `Message received on disconnected socket - ${socket.userId}`
+ );
+ connectedSockets[socket.userId] = socket;
+ }
+ const { action, msg } = data;
+ console.log("Message received:", data);
+ if (action === "typing") {
+ sendTypingAction();
+ } else if (action === "message") {
+ connectedSockets[socket.userId].messageReceived = true;
+ const text = `[${socket.userId}]: ${socket.userData?.email}\n${data.msg.text}`;
+ sendMessageToTelegram(text);
+ }
+ });
+
+ socket.on("disconnect", () => {
+ if (connectedSockets[socket.userId].messageReceived) {
+ sendTelegramMessage(chatId, socket.userId + " has left");
+ }
+ delete connectedSockets[socket.userId];
+ });
+ });
+};
+
+// export function sendMessageToUser({ chatId, userId, message }) {
+// const { name, text, from } = message;
+// // check if connected, if not then buffer
+// if (connectedSockets[userId]) {
+// console.log("client connected sending message");
+// const sock = connectedSockets[userId];
+// sock.emit(chatId + "-" + userId, {
+// name,
+// text,
+// from: "admin",
+// adminName: from,
+// });
+// } else {
+// if (!messageBuffer[userId]) {
+// messageBuffer[userId] = [];
+// }
+// console.log("client not connected buffering message");
+// messageBuffer[userId].unshift({
+// chatId,
+// name,
+// text,
+// from: "admin",
+// adminName: from,
+// });
+// }
+// }
+
+// export async function onConnectionStart(client) {
+// client.on("register", async function (registerMsg) {
+// const { isNewUser, chatId, userId, oldId, userData, currentUrl } =
+// registerMsg;
+// console.log("register user", userId);
+// connectedSockets[userId] = client;
+// let messageReceived = false;
+// // check the buffer and send anything in there
+// if (messageBuffer[userId]) {
+// const buffered = messageBuffer[userId];
+// let msg = buffered.pop();
+// console.log(`sending ${buffered.length} buffered messages`);
+// while (msg) {
+// const { chatId, name, text, from, adminName } = msg;
+// client.emit(chatId + "-" + userId, {
+// name,
+// text,
+// from,
+// adminName,
+// });
+// msg = buffered.pop();
+// }
+// delete messageBuffer[userId];
+// }
+
+// console.log("userId " + userId + " connected to chatId " + chatId);
+
+// if (oldId) {
+// await sendMessage(
+// chatId,
+// userId,
+// `Lead ${oldId} has logged in as ${userData.email}`
+// );
+// await sendStartMessage(chatId, { ...userData, currentUrl });
+// }
+
+// client.on("message", async function (data) {
+// if (data.action === "typing") {
+// return setTyping(chatId);
+// }
+// const { msg } = data;
+// if (isNewUser && !messageReceived) {
+// // enrich user data
+// await sendStartMessage(chatId, {
+// ...userData,
+// currentUrl,
+// });
+// }
+
+// messageReceived = true;
+// client.emit(chatId + "-" + userId, msg);
+// return sendMessage(
+// chatId,
+// userId,
+// msg.text,
+// userData ? userData.email : ""
+// );
+// });
+
+// client.on("disconnect", function () {
+// if (messageReceived) {
+// sendTelegramMessage(chatId, userId + " has left");
+// }
+// delete connectedSockets[userId];
+// });
+// });
+// }
+
+// function sendStartMessage(chatId, userData = {}) {
+// const { id, email, currentUrl } = userData;
+// console.log(userData);
+// const isLead = !email;
+// let text = "";
+
+// if (isLead) {
+// text = `New Lead
+// URL:\t ${currentUrl || "unknown"}
+// `;
+// } else {
+// text = `A user has started a chat.
+// ID:\t ${id}
+// Email:\t ${email}
+// URL:\t ${currentUrl || "unknown"}
+// Stripe:\t https://dashboard.stripe.com/search?query=${email}
+// `;
+// }
+// text = `${text}`;
+// return sendTelegramMessage(chatId, text, "HTML");
+// }
+
+// function sendMessage(chatId, userId, text, email = "") {
+// return sendTelegramMessage(
+// chatId,
+// `[${userId}] ${email}:\n${text}`,
+// "HTML"
+// );
+// }
+
+// function setTyping(chatId) {
+// return new Promise((resolve, reject) => {
+// request
+// .post(
+// "https://api.telegram.org/bot" +
+// process.env.TELEGRAM_TOKEN +
+// "/sendChatAction",
+// function (err, resp, body) {
+// if (err) {
+// console.error(err);
+// return reject(err);
+// }
+// resolve(body);
+// }
+// )
+// .form({
+// chat_id: chatId,
+// action: "typing",
+// });
+// });
+// }
+
+// export function connectSocket(http) {
+// const io = require("socket.io")(http);
+// // handle chat visitors websocket messages
+// io.on("connection", onConnectionStart);
+// }
diff --git a/helpers/telegram.js b/helpers/telegram.js
new file mode 100644
index 00000000..bb6146b5
--- /dev/null
+++ b/helpers/telegram.js
@@ -0,0 +1,28 @@
+const { Telegraf } = require("telegraf");
+
+const bot = new Telegraf(process.env.TELEGRAM_TOKEN);
+const channelId = process.env.CHANNEL_ID;
+
+bot.on("message", (ctx) => {
+ console.log(`Message in group: ${ctx.message.text}`);
+ if (ctx.chat.type === "group" || ctx.chat.type === "supergroup") {
+ console.log(`Message in group: ${ctx.message.text}`);
+ // Add your logic here
+ }
+});
+
+module.exports.sendMessageToTelegram = function sendMessageToTelegram(message) {
+ bot.telegram.sendMessage(channelId, message);
+};
+
+module.exports.sendTypingAction = function sendTypingAction() {
+ bot.telegram.sendChatAction(channelId, "typing");
+};
+
+module.exports.startBot = function startBot() {
+ bot.launch();
+ console.info("Launched Squarechat.");
+};
+
+process.once("SIGINT", () => bot.stop("SIGINT"));
+process.once("SIGTERM", () => bot.stop("SIGTERM"));
diff --git a/index.js b/index.js
new file mode 100644
index 00000000..d6ec6ec7
--- /dev/null
+++ b/index.js
@@ -0,0 +1,39 @@
+const express = require("express");
+const { Telegraf } = require("telegraf");
+const http = require("http");
+
+const cors = require("cors");
+const { sendMessageToTelegram, startBot } = require("./helpers/telegram");
+const { getMessageCount } = require("./helpers/buffer");
+const { createSocketServer } = require("./helpers/socket");
+
+const { PORT } = process.env;
+
+const app = express();
+const server = http.createServer(app);
+
+createSocketServer(server);
+
+app.post("/usage-start", cors(), function (req, res) {
+ console.log("usage from", req.query.host);
+ const unreadCount = getMessageCount(req.query.userId);
+ res.status(200).send(unreadCount.toString());
+});
+
+app.post("/unreads", cors(), function (req, res) {
+ const unreadCount = getMessageCount(req.query.userId);
+ res.status(200).send(unreadCount.toString());
+});
+
+// left here until the cache expires
+app.post("/usage-end", cors(), function (req, res) {
+ res.statusCode = 200;
+ res.end();
+});
+
+app.use(express.static("dist"));
+
+server.listen(PORT, () => {
+ console.log(`Server is running on port ${PORT}`);
+});
+startBot();
diff --git a/package.json b/package.json
index 10b9d425..598998c4 100644
--- a/package.json
+++ b/package.json
@@ -36,9 +36,10 @@
"preact": "^7.1.0",
"request": "^2.79.0",
"shx": "^0.2.2",
- "socket.io": "^1.7.3",
- "socket.io-client": "^1.7.3",
+ "socket.io": "^4.8.0",
+ "socket.io-client": "^4.8.0",
"store": "^1.3.20",
+ "telegraf": "^4.16.3",
"webpack": "^1.14.0"
}
}
diff --git a/server.js b/server.js
index 36cdd227..d6bd8506 100644
--- a/server.js
+++ b/server.js
@@ -1,199 +1,122 @@
-const request = require('request');
-const compression = require('compression');
-const cors = require('cors');
-const express = require('express');
-const bodyParser = require('body-parser');
+const request = require("request");
+const compression = require("compression");
+const cors = require("cors");
+const express = require("express");
+const bodyParser = require("body-parser");
+const { sendMessageToUser, onConnectionStart } = require("./helpers/socket");
const app = express();
-const http = require('http').Server(app);
-const io = require('socket.io')(http);
+const http = require("http").Server(app);
if (!process.env.TELEGRAM_TOKEN) {
- console.error('TELEGRAM_TOKEN not provided');
+ console.error("TELEGRAM_TOKEN not provided");
process.exit(1);
}
-const connectedSockets = {};
-const messageBuffer = {};
-app.use(express.static('dist', { index: 'demo.html', maxage: '4h' }));
+app.use(express.static("dist", { index: "demo.html", maxage: "4h" }));
app.use(bodyParser.json());
// handle admin Telegram messages
-app.post('/hook', function(req, res) {
+app.post("/hook", function (req, res) {
try {
const message = req.body.message || req.body.channel_post;
const chatId = message.chat.id;
- const name = message.chat.first_name || message.chat.title || 'admin';
- const text = message.text || '';
+ const name = message.chat.first_name || message.chat.title || "admin";
+ const text = message.text || "";
const reply = message.reply_to_message;
const from = message.from.username;
res.statusCode = 200;
- if (text.startsWith('/start')) {
- console.log('/start chatId ' + chatId);
+ if (text.startsWith("/start")) {
+ console.log("/start chatId " + chatId);
sendTelegramMessage(
chatId,
- '*Welcome to Intergram* \n' +
- 'Your unique chat id is `' +
+ "*Welcome to Intergram* \n" +
+ "Your unique chat id is `" +
chatId +
- '`\n' +
- 'Use it to link between the embedded chat and this telegram chat',
- 'Markdown'
+ "`\n" +
+ "Use it to link between the embedded chat and this telegram chat",
+ "Markdown"
);
} else if (reply) {
- let replyText = reply.text || '';
+ let replyText = reply.text || "";
// check if a reply to someone known
const userIdMatch = replyText.match(/^\[(.+)\]/);
if (userIdMatch) {
const userId = userIdMatch[1];
- // check if connected, if not then buffer
- if (connectedSockets[userId]) {
- console.log('client connected sending message');
- const sock = connectedSockets[userId];
- sock.emit(chatId + '-' + userId, {
+ sendMessageToUser({
+ chatId,
+ userId,
+ message: {
name,
text,
- from: 'admin',
- adminName: from
- });
- } else {
- if (!messageBuffer[userId]) {
- messageBuffer[userId] = [];
- }
- console.log('client not connected buffering message');
- messageBuffer[userId].unshift({
- chatId,
- name,
- text,
- from: 'admin',
- adminName: from
- });
- }
+ from: "admin",
+ },
+ });
+ // // check if connected, if not then buffer
+ // if (connectedSockets[userId]) {
+ // console.log("client connected sending message");
+ // const sock = connectedSockets[userId];
+ // sock.emit(chatId + "-" + userId, {
+ // name,
+ // text,
+ // from: "admin",
+ // adminName: from,
+ // });
+ // } else {
+ // if (!messageBuffer[userId]) {
+ // messageBuffer[userId] = [];
+ // }
+ // console.log("client not connected buffering message");
+ // messageBuffer[userId].unshift({
+ // chatId,
+ // name,
+ // text,
+ // from: "admin",
+ // adminName: from,
+ // });
+ // }
}
}
} catch (e) {
- console.error('hook error', e, req.body);
+ console.error("hook error", e, req.body);
} finally {
res.end();
}
});
-// handle chat visitors websocket messages
-io.on('connection', function(client) {
- const address = client.handshake.address.replace('::ffff:', '');
- client.on('register', function(registerMsg) {
- const {
- isNewUser,
- chatId,
- userId,
- oldId,
- userData,
- currentUrl
- } = registerMsg;
- console.log('register user', userId);
- connectedSockets[userId] = client;
- let messageReceived = false;
- // check the buffer and send anything in there
- if (messageBuffer[userId]) {
- const buffered = messageBuffer[userId];
- let msg = buffered.pop();
- console.log(`sending ${buffered.length} buffered messages`);
- while (msg) {
- const { chatId, name, text, from, adminName } = msg;
- client.emit(chatId + '-' + userId, {
- name,
- text,
- from,
- adminName
- });
- msg = buffered.pop();
- }
- delete messageBuffer[userId];
- }
-
- console.log('userId ' + userId + ' connected to chatId ' + chatId);
-
- if (oldId) {
- sendMessage(
- chatId,
- userId,
- `Lead ${oldId} has logged in as ${userData.email}`
- ).then(() => {
- return sendStartMessage(chatId, { ...userData, currentUrl });
- });
- }
- client.on('message', function(data) {
- if (data.action === 'typing') {
- return setTyping(chatId);
- }
- const { msg } = data;
- return Promise.resolve()
- .then(() => {
- if (isNewUser && !messageReceived) {
- // enrich user data
- return getIpAddressGeo(address).then(location => {
- console.log('sending start msg');
- return sendStartMessage(chatId, {
- ...userData,
- location,
- currentUrl
- });
- });
- }
- })
- .then(() => {
- messageReceived = true;
- client.emit(chatId + '-' + userId, msg);
- return sendMessage(
- chatId,
- userId,
- msg.text,
- userData ? userData.email : ''
- );
- });
- });
-
- client.on('disconnect', function() {
- if (messageReceived) {
- sendTelegramMessage(chatId, userId + ' has left');
- }
- delete connectedSockets[userId];
- });
- });
-});
-
-function sendStartMessage(chatId, userData = {}) {
- const { id, name, email, provider, location, currentUrl } = userData;
- console.log(userData);
- const isLead = !email;
- let text = '';
-
- if (isLead) {
- text = `New Lead
-URL:\t ${currentUrl || 'unknown'}
-`;
- } else {
- text = `A user has started a chat.
-ID:\t ${id}
-Email:\t ${email}
-Location:\t ${location || 'unknown'}
-URL:\t ${currentUrl || 'unknown'}
-Stripe:\t https://dashboard.stripe.com/search?query=${email}
-`;
- }
- text = `${text}`;
- return sendTelegramMessage(chatId, text, 'HTML');
-}
-
-function sendMessage(chatId, userId, text, email = '') {
- return sendTelegramMessage(
- chatId,
- `[${userId}] ${email}:\n${text}`,
- 'HTML'
- );
-}
-
-app.post('/usage-start', cors(), function(req, res) {
- console.log('usage from', req.query.host);
+// function sendStartMessage(chatId, userData = {}) {
+// const { id, name, email, provider, location, currentUrl } = userData;
+// console.log(userData);
+// const isLead = !email;
+// let text = "";
+
+// if (isLead) {
+// text = `New Lead
+// URL:\t ${currentUrl || "unknown"}
+// `;
+// } else {
+// text = `A user has started a chat.
+// ID:\t ${id}
+// Email:\t ${email}
+// Location:\t ${location || "unknown"}
+// URL:\t ${currentUrl || "unknown"}
+// Stripe:\t https://dashboard.stripe.com/search?query=${email}
+// `;
+// }
+// text = `${text}`;
+// return sendTelegramMessage(chatId, text, "HTML");
+// }
+
+// function sendMessage(chatId, userId, text, email = "") {
+// return sendTelegramMessage(
+// chatId,
+// `[${userId}] ${email}:\n${text}`,
+// "HTML"
+// );
+// }
+
+app.post("/usage-start", cors(), function (req, res) {
+ console.log("usage from", req.query.host);
let unreadCount = 0;
if (messageBuffer[req.query.userId]) {
unreadCount = messageBuffer[req.query.userId].length;
@@ -202,7 +125,7 @@ app.post('/usage-start', cors(), function(req, res) {
res.status(200).send(unreadCount.toString());
});
-app.post('/unreads', cors(), function(req, res) {
+app.post("/unreads", cors(), function (req, res) {
let unreadCount = 0;
if (messageBuffer[req.query.userId]) {
unreadCount = messageBuffer[req.query.userId].length;
@@ -212,98 +135,73 @@ app.post('/unreads', cors(), function(req, res) {
});
// left here until the cache expires
-app.post('/usage-end', cors(), function(req, res) {
+app.post("/usage-end", cors(), function (req, res) {
res.statusCode = 200;
res.end();
});
-http.listen(process.env.PORT || 3000, function() {
- console.log('listening on port:' + (process.env.PORT || 3000));
+http.listen(process.env.PORT || 3000, function () {
+ console.log("listening on port:" + (process.env.PORT || 3000));
});
-app.get('/.well-known/acme-challenge/:content', (req, res) => {
+app.get("/.well-known/acme-challenge/:content", (req, res) => {
res.send(process.env.CERTBOT_RESPONSE);
});
-function getIpAddressGeo(ip) {
- return new Promise((resolve, reject) => {
- request.get(
- `https://api.ipgeolocation.io/ipgeo?apiKey=${
- process.env.GEO_KEY
- }&ip=${ip}`,
- (err, resp, body) => {
- if (err) {
- console.log(body);
- return reject(err);
- }
- console.log(body);
- resolve(JSON.parse(body).country_name);
- }
- );
- });
-}
-
-function setTyping(chatId) {
- return new Promise((resolve, reject) => {
- request
- .post(
- 'https://api.telegram.org/bot' +
- process.env.TELEGRAM_TOKEN +
- '/sendChatAction',
- function(err, resp, body) {
- if (err) {
- console.error(err);
- return reject(err);
- }
- resolve(body);
- }
- )
- .form({
- chat_id: chatId,
- action: 'typing'
- });
- });
-}
-
-function sendTelegramMessage(chatId, text, parseMode) {
- const url =
- 'https://api.telegram.org/bot' +
- process.env.TELEGRAM_TOKEN +
- '/sendMessage';
-
- return new Promise((resolve, reject) => {
- request
- .post(url, function(err, resp, body) {
- if (err) {
- console.error(err);
- return reject(err);
- }
- resolve(body);
- })
- .form({
- chat_id: chatId,
- text: text,
- parse_mode: parseMode
- });
- });
-}
-
-process.on('uncaughtException', error => {
- sendTelegramMessage(
- '-388078727',
- `Server uncaught exception:
-${error.toString()}
-`
- );
- console.error(error);
-});
-
-process.on('unhandledRejection', error => {
- sendTelegramMessage(
- '-388078727',
- `Server unhandled rejection:
-${error.toString()}
-`
- );
- console.error(error);
-});
+// function getIpAddressGeo(ip) {
+// return new Promise((resolve, reject) => {
+// request.get(
+// `https://api.ipgeolocation.io/ipgeo?apiKey=${process.env.GEO_KEY}&ip=${ip}`,
+// (err, resp, body) => {
+// if (err) {
+// console.log(body);
+// return reject(err);
+// }
+// console.log(body);
+// resolve(JSON.parse(body).country_name);
+// }
+// );
+// });
+// }
+
+// function setTyping(chatId) {
+// return new Promise((resolve, reject) => {
+// request
+// .post(
+// "https://api.telegram.org/bot" +
+// process.env.TELEGRAM_TOKEN +
+// "/sendChatAction",
+// function (err, resp, body) {
+// if (err) {
+// console.error(err);
+// return reject(err);
+// }
+// resolve(body);
+// }
+// )
+// .form({
+// chat_id: chatId,
+// action: "typing",
+// });
+// });
+// }
+
+// process.on("uncaughtException", (error) => {
+// sendTelegramMessage(
+// "-388078727",
+// `Server uncaught exception:
+// ${error.toString()}
+// `
+// );
+// console.error(error);
+// });
+
+// process.on("unhandledRejection", (error) => {
+// sendTelegramMessage(
+// "-388078727",
+// `Server unhandled rejection:
+// ${error.toString()}
+// `
+// );
+// console.error(error);
+// });
diff --git a/src/chat/chat.js b/src/chat/chat.js
index 415b0b86..2c3f2d2b 100644
--- a/src/chat/chat.js
+++ b/src/chat/chat.js
@@ -1,12 +1,12 @@
-import * as store from 'store';
+import * as store from "store";
-import { Component, h } from 'preact';
+import { Component, h } from "preact";
-import MessageArea from './message-area';
-import io from 'socket.io-client';
+import MessageArea from "./message-area";
+import io from "socket.io-client";
export default class Chat extends Component {
- autoResponseState = 'pristine'; // pristine, set or canceled
+ autoResponseState = "pristine"; // pristine, set or canceled
autoResponseTimer = 0;
constructor(props) {
@@ -24,28 +24,28 @@ export default class Chat extends Component {
}
componentDidMount() {
- this.socket = io.connect();
- const oldId = store.get('oldId');
- this.socket.on('connect', () => {
- this.socket.emit('register', {
+ this.socket = io();
+ const oldId = store.get("oldId");
+ this.socket.on("connect", () => {
+ this.socket.emit("register", {
chatId: this.props.chatId,
userId: this.props.userId,
isNewUser: this.props.isNewUser,
userData: this.props.conf.userData,
currentUrl: this.props.conf.url,
- oldId
+ oldId,
});
});
- store.set('oldId', null);
+ store.set("oldId", null);
this.socket.on(
- this.props.chatId + '-' + this.props.userId,
+ this.props.chatId + "-" + this.props.userId,
this.incomingMessage
);
if (!this.state.messages.length) {
this.writeToMessages({
text: this.props.conf.introMessage,
- from: 'admin'
+ from: "admin",
});
}
}
@@ -70,24 +70,24 @@ export default class Chat extends Component {
handleKeyPress = (e) => {
let message;
let timeout;
- const now = new Date().toLocaleString('en-US', {
- timeZone: 'Asia/Singapore'
+ const now = new Date().toLocaleString("en-US", {
+ timeZone: "Asia/Singapore",
});
let hours = new Date(now).getHours();
const isNightTime = hours < 8 && hours > 11;
- this.socket.send({ action: 'typing' });
+ this.socket.send({ action: "typing" });
if (e.keyCode == 13 && this.input.value) {
let text = this.input.value;
this.socket.send({
- action: 'message',
+ action: "message",
msg: {
text,
- from: 'visitor'
+ from: "visitor",
},
- userData: this.props.conf.userData
+ userData: this.props.conf.userData,
});
- this.input.value = '';
- if (this.autoResponseState === 'pristine') {
+ this.input.value = "";
+ if (this.autoResponseState === "pristine") {
if (isNightTime) {
timeout = 1000;
message = `(Auto message) It's night time right now and we're probably asleep, please leave your email so we can contact you later, or fill out the form here.`;
@@ -98,24 +98,24 @@ export default class Chat extends Component {
this.autoResponseTimer = setTimeout(() => {
this.writeToMessages({
text: message,
- from: 'admin'
+ from: "admin",
});
- this.autoResponseState = 'canceled';
+ this.autoResponseState = "canceled";
}, timeout); // 2 MINUTES
- this.autoResponseState = 'set';
+ this.autoResponseState = "set";
}
}
};
incomingMessage = (msg) => {
this.writeToMessages(msg);
- if (msg.from === 'admin') {
- document.getElementById('messageSound').play();
+ if (msg.from === "admin") {
+ document.getElementById("messageSound").play();
- if (this.autoResponseState === 'pristine') {
- this.autoResponseState = 'canceled';
- } else if (this.autoResponseState === 'set') {
- this.autoResponseState = 'canceled';
+ if (this.autoResponseState === "pristine") {
+ this.autoResponseState = "canceled";
+ } else if (this.autoResponseState === "set") {
+ this.autoResponseState = "canceled";
clearTimeout(this.autoResponseTimer);
}
}
@@ -133,7 +133,7 @@ export default class Chat extends Component {
return;
}
this.setState({
- message: this.state.messages.push(msg)
+ message: this.state.messages.push(msg),
});
if (store.enabled) {
@@ -142,7 +142,7 @@ export default class Chat extends Component {
messages.push(msg);
});
} catch (e) {
- console.log('failed to add new message to local storage', e);
+ console.log("failed to add new message to local storage", e);
store.set(this.messagesKey, []);
}
}
diff --git a/src/chat/message-area.js b/src/chat/message-area.js
index 6d9b5e59..e59eba64 100644
--- a/src/chat/message-area.js
+++ b/src/chat/message-area.js
@@ -11,7 +11,7 @@ const admins = {
jivings: jamesImg,
dinkydani: danielleImg,
jameswilliamr: otterImg,
- admin: lmaImg
+ admin: lmaImg,
};
export default class MessageArea extends Component {
componentDidMount() {
@@ -27,37 +27,43 @@ export default class MessageArea extends Component {
return (
{
+ ref={(r) => {
this.ref = r;
}}
>
- {props.messages.map(({ name, text, from, time, adminName = 'admin' }) => {
- const renderedMsg = md.render(text);
- console.log(renderedMsg);
- const isAdmin = from !== "visitor";
- return (
- -
- {admins[adminName] ? (
-
-

-
- ) : null}
-
-
-
- {props.conf.displayMessageTime ? (
-
- {currentTime - new Date(time) < dayInMillis
- ? dateFormat(time, "HH:MM")
- : dateFormat(time, "m/d/yy HH:MM")}
+ {props.messages.map(
+ ({ name, text, from, time, adminName = "admin" }) => {
+ const renderedMsg = md.render(text);
+ console.log(renderedMsg);
+ const isAdmin = from !== "visitor";
+ return (
+
-
+ {admins[adminName] ? (
+
+
) : (
- ""
+
+

+
)}
-
-
- );
- })}
+
+
+
+ {props.conf.displayMessageTime ? (
+
+ {currentTime - new Date(time) < dayInMillis
+ ? dateFormat(time, "HH:MM")
+ : dateFormat(time, "m/d/yy HH:MM")}
+
+ ) : (
+ ""
+ )}
+
+
+ );
+ }
+ )}
);
}
diff --git a/yarn.lock b/yarn.lock
index 0aa9d98b..91df394e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,28 @@
# yarn lockfile v1
+"@socket.io/component-emitter@~3.1.0":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
+ integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
+
+"@telegraf/types@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@telegraf/types/-/types-7.1.0.tgz#d8bd9b2f5070b4de46971416e890338cd89fc23d"
+ integrity sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==
+
+"@types/cookie@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
+ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
+
+"@types/cors@^2.8.12":
+ version "2.8.17"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b"
+ integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==
+ dependencies:
+ "@types/node" "*"
+
"@types/events@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
@@ -26,18 +48,24 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.4.tgz#64db61e0359eb5a8d99b55e05c729f130a678b04"
integrity sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==
+"@types/node@>=10.0.0":
+ version "22.7.4"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc"
+ integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==
+ dependencies:
+ undici-types "~6.19.2"
+
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-accepts@1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
- integrity sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
dependencies:
- mime-types "~2.1.11"
- negotiator "0.6.1"
+ event-target-shim "^5.0.0"
accepts@~1.1.3:
version "1.1.4"
@@ -72,11 +100,6 @@ acorn@^5.3.0, acorn@^5.5.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
-after@0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
- integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
-
ajv-errors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@@ -251,11 +274,6 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-arraybuffer.slice@0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
- integrity sha1-8zshWfBTKj8xB6JywMz70a0peco=
-
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
@@ -1049,30 +1067,20 @@ babylon@^6.0.18, babylon@^6.18.0:
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
-backo2@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
- integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
-
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-base64-arraybuffer@0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
- integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
-
base64-js@^1.0.2:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
-base64id@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
- integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=
+base64id@2.0.0, base64id@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
+ integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
base@^0.11.1:
version "0.11.2"
@@ -1099,13 +1107,6 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
-better-assert@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
- integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=
- dependencies:
- callsite "1.0.0"
-
bfj-node4@^5.2.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830"
@@ -1125,11 +1126,6 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-blob@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
- integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=
-
bluebird@^3.5.1:
version "3.5.5"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
@@ -1210,6 +1206,24 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -1266,11 +1280,6 @@ caller-path@^0.1.0:
dependencies:
callsites "^0.2.0"
-callsite@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
- integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
-
callsites@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
@@ -1461,31 +1470,11 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-component-bind@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
- integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
-
-component-emitter@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
- integrity sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=
-
-component-emitter@1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
- integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
-
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-component-inherit@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
- integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
-
compressible@~2.0.16:
version "2.0.17"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
@@ -1582,16 +1571,16 @@ cookie@0.1.2:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.2.tgz#72fec3d24e48a3432073d90c12642005061004b1"
integrity sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
- integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
-
cookie@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+cookie@~0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
+
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
@@ -1607,7 +1596,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-cors@^2.8.1:
+cors@^2.8.1, cors@~2.8.5:
version "2.8.5"
resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
@@ -1666,20 +1655,6 @@ dateformat@^2.0.0:
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=
-debug@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
- integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
- dependencies:
- ms "0.7.1"
-
-debug@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
- integrity sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=
- dependencies:
- ms "0.7.2"
-
debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -1701,6 +1676,13 @@ debug@^4.1.0, debug@^4.1.1:
dependencies:
ms "^2.1.1"
+debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+ integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
+ dependencies:
+ ms "^2.1.3"
+
debug@~2.1.0:
version "2.1.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.1.3.tgz#ce8ab1b5ee8fbee2bfa3b633cab93d366b63418e"
@@ -1914,47 +1896,37 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
-engine.io-client@~1.8.4:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.5.tgz#fe7fb60cb0dcf2fa2859489329cb5968dedeb11f"
- integrity sha512-AYTgHyeVUPitsseqjoedjhYJapNVoSPShbZ+tEUX9/73jgZ/Z3sUlJf9oYgdEBBdVhupUpUqSxH0kBCXlQnmZg==
- dependencies:
- component-emitter "1.2.1"
- component-inherit "0.0.3"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- has-cors "1.1.0"
- indexof "0.0.1"
- parsejson "0.0.3"
- parseqs "0.0.5"
- parseuri "0.0.5"
- ws "~1.1.5"
- xmlhttprequest-ssl "1.5.3"
- yeast "0.1.2"
-
-engine.io-parser@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a"
- integrity sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=
- dependencies:
- after "0.8.2"
- arraybuffer.slice "0.0.6"
- base64-arraybuffer "0.1.5"
- blob "0.0.4"
- has-binary "0.1.7"
- wtf-8 "1.0.0"
-
-engine.io@~1.8.4:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.5.tgz#4ebe5e75c6dc123dee4afdce6e5fdced21eb93f6"
- integrity sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==
- dependencies:
- accepts "1.3.3"
- base64id "1.0.0"
- cookie "0.3.1"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- ws "~1.1.5"
+engine.io-client@~6.6.1:
+ version "6.6.1"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.6.1.tgz#28a9cc4e90d448e1d0ba9369ad08a7af82f9956a"
+ integrity sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ debug "~4.3.1"
+ engine.io-parser "~5.2.1"
+ ws "~8.17.1"
+ xmlhttprequest-ssl "~2.1.1"
+
+engine.io-parser@~5.2.1:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f"
+ integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==
+
+engine.io@~6.6.0:
+ version "6.6.1"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.1.tgz#a82b1e5511239a0e95fac14516870ee9138febc8"
+ integrity sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==
+ dependencies:
+ "@types/cookie" "^0.4.1"
+ "@types/cors" "^2.8.12"
+ "@types/node" ">=10.0.0"
+ accepts "~1.3.4"
+ base64id "2.0.0"
+ cookie "~0.4.1"
+ cors "~2.8.5"
+ debug "~4.3.1"
+ engine.io-parser "~5.2.1"
+ ws "~8.17.1"
enhanced-resolve@~0.9.0:
version "0.9.1"
@@ -2172,6 +2144,11 @@ event-emitter@~0.3.5:
d "1"
es5-ext "~0.10.14"
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
eventemitter3@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
@@ -2704,18 +2681,6 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"
-has-binary@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c"
- integrity sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=
- dependencies:
- isarray "0.0.1"
-
-has-cors@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
- integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
-
has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
@@ -3266,11 +3231,6 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -3358,11 +3318,6 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-json3@3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
- integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
-
json3@^3.3.2:
version "3.3.3"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
@@ -3647,7 +3602,7 @@ mime-db@~1.12.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7"
integrity sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=
-mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.24"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
@@ -3738,6 +3693,11 @@ mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
dependencies:
minimist "0.0.8"
+mri@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+
ms@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c"
@@ -3748,16 +3708,6 @@ ms@0.7.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.0.tgz#865be94c2e7397ad8a57da6a633a6e2f30798b83"
integrity sha1-hlvpTC5zl62KV9pqYzpuLzB5i4M=
-ms@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
- integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
-
-ms@0.7.2:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
- integrity sha1-riXPJRKziFodldfwN4aNhDESR2U=
-
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -3773,6 +3723,11 @@ ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+ms@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -3832,11 +3787,6 @@ negotiator@0.4.9:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f"
integrity sha1-kuRrbbU8fkIe1koryU8IvnYw3z8=
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
- integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
-
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -3852,6 +3802,13 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+node-fetch@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-forge@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a"
@@ -3962,21 +3919,11 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
- integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
-
object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-object-component@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
- integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
-
object-copy@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
@@ -4086,11 +4033,6 @@ optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
-options@>=0.0.5:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
- integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=
-
original@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
@@ -4171,6 +4113,11 @@ p-retry@^3.0.1:
dependencies:
retry "^0.12.0"
+p-timeout@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a"
+ integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==
+
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
@@ -4191,27 +4138,6 @@ parse-glob@^3.0.4:
is-extglob "^1.0.0"
is-glob "^2.0.0"
-parsejson@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab"
- integrity sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=
- dependencies:
- better-assert "~1.0.0"
-
-parseqs@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
- integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=
- dependencies:
- better-assert "~1.0.0"
-
-parseuri@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
- integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=
- dependencies:
- better-assert "~1.0.0"
-
parseurl@~1.3.0, parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -4772,6 +4698,13 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+safe-compare@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/safe-compare/-/safe-compare-1.1.4.tgz#5e0128538a82820e2e9250cd78e45da6786ba593"
+ integrity sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==
+ dependencies:
+ buffer-alloc "^1.2.0"
+
safe-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
@@ -4784,6 +4717,11 @@ safe-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+sandwich-stream@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-2.0.2.tgz#6d1feb6cf7e9fe9fadb41513459a72c2e84000fa"
+ integrity sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==
+
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -4998,53 +4936,44 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-socket.io-adapter@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b"
- integrity sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=
+socket.io-adapter@~2.5.2:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082"
+ integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==
dependencies:
- debug "2.3.3"
- socket.io-parser "2.3.1"
+ debug "~4.3.4"
+ ws "~8.17.1"
-socket.io-client@1.7.4, socket.io-client@^1.7.3:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281"
- integrity sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=
- dependencies:
- backo2 "1.0.2"
- component-bind "1.0.0"
- component-emitter "1.2.1"
- debug "2.3.3"
- engine.io-client "~1.8.4"
- has-binary "0.1.7"
- indexof "0.0.1"
- object-component "0.0.3"
- parseuri "0.0.5"
- socket.io-parser "2.3.1"
- to-array "0.1.4"
+socket.io-client@^4.8.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.8.0.tgz#2ea0302d0032d23422bd2860f78127a800cad6a2"
+ integrity sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ debug "~4.3.2"
+ engine.io-client "~6.6.1"
+ socket.io-parser "~4.2.4"
-socket.io-parser@2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0"
- integrity sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=
+socket.io-parser@~4.2.4:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83"
+ integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==
dependencies:
- component-emitter "1.1.2"
- debug "2.2.0"
- isarray "0.0.1"
- json3 "3.3.2"
+ "@socket.io/component-emitter" "~3.1.0"
+ debug "~4.3.1"
-socket.io@^1.7.3:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz#2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00"
- integrity sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=
+socket.io@^4.8.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.0.tgz#33d05ae0915fad1670bd0c4efcc07ccfabebe3b1"
+ integrity sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==
dependencies:
- debug "2.3.3"
- engine.io "~1.8.4"
- has-binary "0.1.7"
- object-assign "4.1.0"
- socket.io-adapter "0.5.0"
- socket.io-client "1.7.4"
- socket.io-parser "2.3.1"
+ accepts "~1.3.4"
+ base64id "~2.0.0"
+ cors "~2.8.5"
+ debug "~4.3.2"
+ engine.io "~6.6.0"
+ socket.io-adapter "~2.5.2"
+ socket.io-parser "~4.2.4"
sockjs-client@1.3.0:
version "1.3.0"
@@ -5314,6 +5243,20 @@ tar@^4:
safe-buffer "^5.1.2"
yallist "^3.0.3"
+telegraf@^4.16.3:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/telegraf/-/telegraf-4.16.3.tgz#f03fa30482b540a7f9895af8f13ec8f432840a66"
+ integrity sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==
+ dependencies:
+ "@telegraf/types" "^7.1.0"
+ abort-controller "^3.0.0"
+ debug "^4.3.4"
+ mri "^1.2.0"
+ node-fetch "^2.7.0"
+ p-timeout "^4.1.0"
+ safe-compare "^1.1.4"
+ sandwich-stream "^2.0.2"
+
text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -5336,11 +5279,6 @@ timers-browserify@^2.0.2:
dependencies:
setimmediate "^1.0.4"
-to-array@0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
- integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
-
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@@ -5389,6 +5327,11 @@ tough-cookie@~2.4.3:
psl "^1.1.24"
punycode "^1.4.1"
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
@@ -5469,10 +5412,10 @@ uglify-to-browserify@~1.0.0:
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
-ultron@1.0.x:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
- integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=
+undici-types@~6.19.2:
+ version "6.19.8"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
+ integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
union-value@^1.0.0:
version "1.0.1"
@@ -5618,6 +5561,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
webpack-bundle-analyzer@^2.2.1:
version "2.13.1"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526"
@@ -5737,6 +5685,14 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
@@ -5811,23 +5767,15 @@ ws@^6.2.1:
dependencies:
async-limiter "~1.0.0"
-ws@~1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"
- integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==
- dependencies:
- options ">=0.0.5"
- ultron "1.0.x"
-
-wtf-8@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
- integrity sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=
+ws@~8.17.1:
+ version "8.17.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
+ integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
-xmlhttprequest-ssl@1.5.3:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
- integrity sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=
+xmlhttprequest-ssl@~2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz#0d045c3b2babad8e7db1af5af093f5d0d60df99a"
+ integrity sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==
xtend@^4.0.0:
version "4.0.2"
@@ -5879,8 +5827,3 @@ yargs@~3.10.0:
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"
-
-yeast@0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
- integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=