web chat
This commit is contained in:
239
JavaScript/adruino-temp-sensor/client/history.csv
Normal file
239
JavaScript/adruino-temp-sensor/client/history.csv
Normal file
@@ -0,0 +1,239 @@
|
||||
time,temperature
|
||||
2018-7-22 14:05:38,27
|
||||
2018-7-22 14:06:38,27
|
||||
2018-7-22 14:07:38,28
|
||||
2018-7-22 14:08:38,28
|
||||
2018-7-22 14:09:38,28
|
||||
2018-7-22 14:10:38,28
|
||||
2018-7-22 14:11:38,28
|
||||
2018-7-22 14:12:38,28
|
||||
2018-7-22 14:13:38,28
|
||||
2018-7-22 14:14:38,28
|
||||
2018-7-22 14:15:38,28
|
||||
2018-7-22 14:16:38,28
|
||||
2018-7-22 14:17:38,28
|
||||
2018-7-22 14:18:38,28
|
||||
2018-7-22 14:19:38,28
|
||||
2018-7-22 14:20:38,28
|
||||
2018-7-22 14:21:38,28
|
||||
2018-7-22 14:22:38,28
|
||||
2018-7-22 14:23:38,28
|
||||
2018-7-22 14:24:38,28
|
||||
2018-7-22 14:25:38,28
|
||||
2018-7-22 14:26:38,28
|
||||
2018-7-22 14:27:38,28
|
||||
2018-7-22 14:28:38,28
|
||||
2018-7-22 14:29:38,28
|
||||
2018-7-22 14:30:38,28
|
||||
2018-7-22 14:31:38,28
|
||||
2018-7-22 14:32:38,28
|
||||
2018-7-22 14:33:38,28
|
||||
2018-7-22 14:34:38,28
|
||||
2018-7-22 14:35:38,28
|
||||
2018-7-22 14:36:38,28
|
||||
2018-7-22 14:37:38,28
|
||||
2018-7-22 14:38:38,28
|
||||
2018-7-22 14:39:38,28
|
||||
2018-7-22 14:40:38,28
|
||||
2018-7-22 14:41:38,28
|
||||
2018-7-22 14:42:38,28
|
||||
2018-7-22 14:43:38,28
|
||||
2018-7-22 14:44:38,28
|
||||
2018-7-22 14:45:38,28
|
||||
2018-7-22 14:46:38,28
|
||||
2018-7-22 14:47:38,28
|
||||
2018-7-22 14:48:38,28
|
||||
2018-7-22 14:49:38,28
|
||||
2018-7-22 14:50:38,28
|
||||
2018-7-22 14:51:38,28
|
||||
2018-7-22 14:52:38,28
|
||||
2018-7-22 14:53:38,28
|
||||
2018-7-22 14:54:38,28
|
||||
2018-7-22 14:55:38,28
|
||||
2018-7-22 14:56:38,28
|
||||
2018-7-22 14:57:38,28
|
||||
2018-7-22 14:58:38,28
|
||||
2018-7-22 14:59:38,28
|
||||
2018-7-22 15:00:38,28
|
||||
2018-7-22 15:01:38,28
|
||||
2018-7-22 15:02:38,28
|
||||
2018-7-22 15:03:38,28
|
||||
2018-7-22 15:04:38,28
|
||||
2018-7-22 15:05:38,28
|
||||
2018-7-22 15:06:38,28
|
||||
2018-7-22 15:07:38,28
|
||||
2018-7-22 15:08:38,28
|
||||
2018-7-22 15:09:38,28
|
||||
2018-7-22 15:10:38,28
|
||||
2018-7-22 15:11:38,28
|
||||
2018-7-22 15:12:38,28
|
||||
2018-7-22 15:13:38,28
|
||||
2018-7-22 15:14:38,28
|
||||
2018-7-22 15:15:38,28
|
||||
2018-7-22 15:16:38,28
|
||||
2018-7-22 15:17:38,28
|
||||
2018-7-22 15:18:38,28
|
||||
2018-7-22 15:19:38,28
|
||||
2018-7-22 15:20:38,28
|
||||
2018-7-22 15:21:38,28
|
||||
2018-7-22 15:22:38,28
|
||||
2018-7-22 15:23:38,28
|
||||
2018-7-22 15:24:38,28
|
||||
2018-7-22 15:25:38,28
|
||||
2018-7-22 15:26:38,28
|
||||
2018-7-22 15:27:38,28
|
||||
2018-7-22 15:28:38,28
|
||||
2018-7-22 15:29:38,28
|
||||
2018-7-22 15:30:38,28
|
||||
2018-7-22 15:31:38,28
|
||||
2018-7-22 15:32:38,28
|
||||
2018-7-22 15:33:38,28
|
||||
2018-7-22 15:34:38,28
|
||||
2018-7-22 15:35:38,28
|
||||
2018-7-22 15:36:38,28
|
||||
2018-7-22 15:37:38,28
|
||||
2018-7-22 15:38:38,28
|
||||
2018-7-22 15:39:38,28
|
||||
2018-7-22 15:40:38,28
|
||||
2018-7-22 15:41:38,28
|
||||
2018-7-22 15:42:38,28
|
||||
2018-7-22 15:43:38,28
|
||||
2018-7-22 15:44:38,28
|
||||
2018-7-22 15:45:38,28
|
||||
2018-7-22 15:46:38,28
|
||||
2018-7-22 15:47:38,28
|
||||
2018-7-22 15:48:38,28
|
||||
2018-7-22 15:49:38,28
|
||||
2018-7-22 15:50:38,28
|
||||
2018-7-22 15:51:38,28
|
||||
2018-7-22 15:52:38,28
|
||||
2018-7-22 15:53:38,28
|
||||
2018-7-22 15:54:38,28
|
||||
2018-7-22 15:55:38,28
|
||||
2018-7-22 15:56:38,28
|
||||
2018-7-22 15:57:38,28
|
||||
2018-7-22 15:58:38,28
|
||||
2018-7-22 15:59:38,28
|
||||
2018-7-22 16:00:38,28
|
||||
2018-7-22 16:01:38,28
|
||||
2018-7-22 16:02:38,28
|
||||
2018-7-22 16:03:38,28
|
||||
2018-7-22 16:04:38,28
|
||||
2018-7-22 16:05:38,28
|
||||
2018-7-22 16:06:38,28
|
||||
2018-7-22 16:07:38,28
|
||||
2018-7-22 16:08:38,28
|
||||
2018-7-22 16:09:38,28
|
||||
2018-7-22 16:10:38,28
|
||||
2018-7-22 16:11:38,28
|
||||
2018-7-22 16:12:38,28
|
||||
2018-7-22 16:13:38,28
|
||||
2018-7-22 16:14:38,28
|
||||
2018-7-22 16:15:38,28
|
||||
2018-7-22 16:16:38,28
|
||||
2018-7-22 16:17:38,28
|
||||
2018-7-22 16:18:38,28
|
||||
2018-7-22 16:19:38,28
|
||||
2018-7-22 16:20:38,28
|
||||
2018-7-22 16:21:38,28
|
||||
2018-7-22 16:22:38,28
|
||||
2018-7-22 16:23:38,28
|
||||
2018-7-22 16:24:38,28
|
||||
2018-7-22 16:25:38,28
|
||||
2018-7-22 16:26:38,28
|
||||
2018-7-22 16:27:38,28
|
||||
2018-7-22 16:28:38,28
|
||||
2018-7-22 16:29:38,28
|
||||
2018-7-22 16:30:38,28
|
||||
2018-7-22 16:31:38,28
|
||||
2018-7-22 16:32:38,28
|
||||
2018-7-22 16:33:38,28
|
||||
2018-7-22 16:34:38,28
|
||||
2018-7-22 16:35:38,28
|
||||
2018-7-22 16:36:38,28
|
||||
2018-7-22 16:37:38,28
|
||||
2018-7-22 16:38:38,28
|
||||
2018-7-22 16:39:38,28
|
||||
2018-7-22 16:40:38,28
|
||||
2018-7-22 16:41:38,28
|
||||
2018-7-22 16:42:38,28
|
||||
2018-7-22 16:43:38,28
|
||||
2018-7-22 16:44:38,28
|
||||
2018-7-22 16:45:39,28
|
||||
2018-7-22 16:46:39,28
|
||||
2018-7-22 16:47:39,28
|
||||
2018-7-22 16:48:39,28
|
||||
2018-7-22 16:49:39,28
|
||||
2018-7-22 16:50:39,28
|
||||
2018-7-22 16:51:39,28
|
||||
2018-7-22 16:52:39,28
|
||||
2018-7-22 16:53:39,28
|
||||
2018-7-22 16:54:39,28
|
||||
2018-7-22 16:55:39,28
|
||||
2018-7-22 16:56:39,28
|
||||
2018-7-22 16:57:39,28
|
||||
2018-7-22 16:58:39,28
|
||||
2018-7-22 16:59:39,28
|
||||
2018-7-22 17:00:39,28
|
||||
2018-7-22 17:01:39,28
|
||||
2018-7-22 17:02:39,28
|
||||
2018-7-22 17:03:39,28
|
||||
2018-7-22 17:04:39,28
|
||||
2018-7-22 17:05:39,28
|
||||
2018-7-22 17:06:39,28
|
||||
2018-7-22 17:07:39,28
|
||||
2018-7-22 17:08:39,28
|
||||
2018-7-22 17:09:39,28
|
||||
2018-7-22 17:10:39,28
|
||||
2018-7-22 17:11:39,28
|
||||
2018-7-22 17:14:03,29
|
||||
2018-7-22 17:15:03,30
|
||||
2018-7-22 17:16:03,30
|
||||
2018-7-22 17:17:03,30
|
||||
2018-7-22 17:18:03,30
|
||||
2018-7-22 17:19:03,30
|
||||
2018-7-22 17:20:03,30
|
||||
2018-7-22 17:21:03,30
|
||||
2018-7-22 17:22:03,30
|
||||
2018-7-22 17:23:03,30
|
||||
2018-7-22 17:24:03,30
|
||||
2018-7-22 17:25:03,30
|
||||
2018-7-22 17:26:03,30
|
||||
2018-7-22 17:27:03,30
|
||||
2018-7-22 17:28:03,30
|
||||
2018-7-22 17:29:03,30
|
||||
2018-7-22 17:30:03,30
|
||||
2018-7-22 17:31:03,30
|
||||
2018-7-22 17:32:03,30
|
||||
2018-7-22 17:33:03,30
|
||||
2018-7-22 17:34:03,30
|
||||
2018-7-22 17:35:03,30
|
||||
2018-7-22 17:36:03,30
|
||||
2018-7-22 17:37:03,30
|
||||
2018-7-22 17:38:03,30
|
||||
2018-7-22 17:39:03,30
|
||||
2018-7-22 17:40:03,30
|
||||
2018-7-22 17:41:03,30
|
||||
2018-7-22 17:42:03,30
|
||||
2018-7-22 17:43:03,30
|
||||
2018-7-22 17:44:03,30
|
||||
2018-7-22 17:45:03,30
|
||||
2018-7-22 17:46:03,30
|
||||
2018-7-22 17:47:03,30
|
||||
2018-7-22 17:48:03,30
|
||||
2018-7-22 17:49:03,30
|
||||
2018-7-22 17:50:03,30
|
||||
2018-7-22 17:51:03,30
|
||||
2018-7-22 17:52:03,30
|
||||
2018-7-22 17:53:03,30
|
||||
2018-7-22 17:54:03,30
|
||||
2018-7-22 17:55:03,30
|
||||
2018-7-22 17:56:03,30
|
||||
2018-7-22 17:57:03,30
|
||||
2018-7-22 17:58:03,30
|
||||
2018-7-22 17:59:03,30
|
||||
2018-7-22 18:00:03,30
|
||||
2018-7-22 18:01:03,30
|
||||
2018-7-22 18:02:03,30
|
||||
2018-7-22 18:03:03,30
|
||||
2018-7-22 18:04:03,30
|
||||
|
@@ -1,6 +1,6 @@
|
||||
console.log('Connecting to server')
|
||||
|
||||
var socket = io.connect('benkyd.duckdns.org:8081');
|
||||
var socket = io.connect('benkyd.duckdns.org:7001');
|
||||
let temp = [];
|
||||
|
||||
socket.on('connect', function(data) {
|
||||
@@ -13,7 +13,8 @@ socket.on('handshake', function(data) {
|
||||
|
||||
socket.on('temp', function(data) {
|
||||
console.log(data);
|
||||
addPoint(data);
|
||||
if (data[0] * 2 != data[1]) socket.emmit('another');
|
||||
addPoint(data[0]);
|
||||
});
|
||||
|
||||
socket.on('lasthour', function(data) {
|
||||
|
||||
@@ -8,6 +8,7 @@ let io = require('socket.io')(server);
|
||||
/* COMMUNICATION WITH ARDUINO AND CLENSING OF DATA */
|
||||
|
||||
let lastHour = []
|
||||
let history = [];
|
||||
let temperature;
|
||||
const parser = new parsers.Readline({
|
||||
delimiter: '\r\n'
|
||||
@@ -40,12 +41,12 @@ app.use('/', express.static(__dirname + '/client'));
|
||||
app.get('/', function(req, res) {
|
||||
res.sendFile(__dirname + '/client/index.html');
|
||||
});
|
||||
app.listen(8080);
|
||||
console.log('Server listening on 80')
|
||||
app.listen(7000);
|
||||
console.log('Server listening on 8081')
|
||||
|
||||
/* WEBSOCKETS */
|
||||
|
||||
server.listen(8081);
|
||||
server.listen(7001);
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
let ip = socket.request.connection.remoteAddress;
|
||||
@@ -61,12 +62,18 @@ io.on('connection', (socket) => {
|
||||
socket.emit('lasthour', lastHour);
|
||||
|
||||
setInterval(() => {
|
||||
socket.emit('temp', temperature);
|
||||
socket.emit('temp', [temperature, temperature * 2]);
|
||||
}, 60000);
|
||||
});
|
||||
|
||||
socket.on('another', function(data) {
|
||||
socket.emit('temp', [temperature, temperature * 2]);
|
||||
});
|
||||
});
|
||||
|
||||
setInterval(() => {
|
||||
history.push(temperature);
|
||||
lastHour.push(temperature);
|
||||
if (lastHour.length > 60) lastHour.splice(0,1);
|
||||
fs.appendFileSync('client/history.csv', `${new Date().toLocaleString()},${temperature}\n`)
|
||||
}, 60000)
|
||||
|
||||
17
JavaScript/web-chat/client/index.html
Normal file
17
JavaScript/web-chat/client/index.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>BenChat</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<textarea name="chat" id="chat" cols="60" rows="30" readonly></textarea>
|
||||
<input type="text" name="in" id="in" placeholder="message">
|
||||
<input type="submit" value="Send" onclick="messagesend()">
|
||||
<script src="main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
42
JavaScript/web-chat/client/main.js
Normal file
42
JavaScript/web-chat/client/main.js
Normal file
@@ -0,0 +1,42 @@
|
||||
var socket = io.connect('http://benkyd.duckdns.org:8083');
|
||||
|
||||
let name;
|
||||
|
||||
window.addEventListener('keydown', (event) => {
|
||||
if (event.code == 'Enter') messagesend();
|
||||
})
|
||||
|
||||
function messagesend() {
|
||||
if (!name) {
|
||||
while (name == null || name == undefined) {
|
||||
name = prompt('Enter your name:');
|
||||
tempname = name.replace(/^\s+/, '').replace(/\s+$/, '');
|
||||
if (tempname === '') {
|
||||
name = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let message = document.getElementById('in').value;
|
||||
|
||||
if (message == '' || message == ' ') {
|
||||
document.getElementById('in').value = '';
|
||||
return;
|
||||
}
|
||||
|
||||
tempmessage = message.replace(/^\s+/, '').replace(/\s+$/, '');
|
||||
if (tempname === '') {
|
||||
document.getElementById('in').value = '';
|
||||
return;
|
||||
}
|
||||
|
||||
socket.emit('outward', {name: name, message: message})
|
||||
document.getElementById('in').value = '';
|
||||
}
|
||||
|
||||
socket.on('receive', (data) => {
|
||||
console.log(data);
|
||||
document.getElementById('chat').value = document.getElementById('chat').value + data;
|
||||
document.getElementById('chat').scrollTop = document.getElementById('chat').scrollHeight;
|
||||
});
|
||||
|
||||
19
JavaScript/web-chat/client/style.css
Normal file
19
JavaScript/web-chat/client/style.css
Normal file
@@ -0,0 +1,19 @@
|
||||
body {
|
||||
background-color: rgb(245, 245, 245);
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: none;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
input {
|
||||
position: absolute;
|
||||
top: 60%;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
left: 70px;
|
||||
width: 50%;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
const fs = require('fs');
|
||||
const bodyParser = require('body-parser');
|
||||
const utils = require('./utils');
|
||||
let express = require('express');
|
||||
let app = express();
|
||||
let server = require('http').createServer(app);
|
||||
let io = require('socket.io')(server);
|
||||
|
||||
app.use('/', express.static(__dirname + '/client'));
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
let ip = socket.request.connection.remoteAddress;
|
||||
if (ip.startsWith('::ffff:')) ip = ip.substring(7);
|
||||
console.log(`${utils.currenttime()} new client connected at ${ip}`)
|
||||
|
||||
socket.on('outward', async function(data) {
|
||||
if (ip == '86.11.58.84' || ip == '178.128.34.116') {
|
||||
socket.emit('receive', 'gey lol');
|
||||
return;
|
||||
}
|
||||
|
||||
// let rate = await rateLimit(socket);
|
||||
// if (rate == -1) return;
|
||||
name = data.name;
|
||||
message = data.message;
|
||||
|
||||
let validate = validateMessage(message, socket);
|
||||
if (validate == -1) return;
|
||||
|
||||
console.log(`${utils.currenttime()} ${name} {${ip}}: ${message}`);
|
||||
|
||||
socket.broadcast.emit('receive', `${name}: ${message} \n`);
|
||||
socket.emit('receive', `${name}: ${message} \n`);
|
||||
});
|
||||
});
|
||||
|
||||
function validateMessage(message) {
|
||||
if (message.length >= 2000) {
|
||||
socket.emit('receive', `YOU HAVE EXEDED THE 2000 CHARICTER LIMIT: MESSAGE NOT SENT \n`);
|
||||
}
|
||||
}
|
||||
|
||||
let requests = [];
|
||||
async function rateLimit(socket) {
|
||||
if (requests.indexOf(socket.request.connection.remoteAddress) != -1) {
|
||||
socket.emit('receive', `YOU ARE BEING RATE LIMITED, WAIT 1/2 SECOND\n`);
|
||||
await utils.sleep('10');
|
||||
|
||||
while (requests.indexOf(socket.request.connection.remoteAddress) != -1) {
|
||||
requests.splice(requests.indexOf(socket.request.connection.remoteAddress), 1);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
requests.push(socket.request.connection.remoteAddress);
|
||||
}
|
||||
|
||||
app.listen(8082);
|
||||
server.listen(8083);
|
||||
console.log('Server listening on 8082 and sockets are listening on 8083')
|
||||
|
||||
418
JavaScript/web-chat/package-lock.json
generated
418
JavaScript/web-chat/package-lock.json
generated
@@ -13,33 +13,113 @@
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
"after": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
|
||||
"integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"arraybuffer.slice": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
|
||||
"integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
|
||||
},
|
||||
"async-limiter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||
},
|
||||
"backo2": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
|
||||
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
|
||||
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
|
||||
},
|
||||
"base64id": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
|
||||
"integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
|
||||
},
|
||||
"better-assert": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
|
||||
"integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
|
||||
"requires": {
|
||||
"callsite": "1.0.0"
|
||||
}
|
||||
},
|
||||
"blob": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
|
||||
"integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"version": "1.18.3",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
|
||||
"integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "1.1.2",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.19",
|
||||
"iconv-lite": "0.4.23",
|
||||
"on-finished": "2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"qs": "6.5.2",
|
||||
"raw-body": "2.3.3",
|
||||
"type-is": "1.6.16"
|
||||
},
|
||||
"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=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"browser-request": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz",
|
||||
"integrity": "sha1-ns5bWsqJopkyJC4Yv5M975h2zBc="
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
|
||||
},
|
||||
"callsite": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
|
||||
"integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
|
||||
},
|
||||
"client-request": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/client-request/-/client-request-2.3.0.tgz",
|
||||
"integrity": "sha1-xGBPcfgclLKAZZV5oXu8BEb+whI="
|
||||
},
|
||||
"component-bind": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
|
||||
"integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
|
||||
},
|
||||
"component-emitter": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
|
||||
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
|
||||
},
|
||||
"component-inherit": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
|
||||
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
||||
@@ -88,6 +168,69 @@
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz",
|
||||
"integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==",
|
||||
"requires": {
|
||||
"accepts": "1.3.5",
|
||||
"base64id": "1.0.0",
|
||||
"cookie": "0.3.1",
|
||||
"debug": "3.1.0",
|
||||
"engine.io-parser": "2.1.2",
|
||||
"ws": "3.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-client": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
|
||||
"integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"component-inherit": "0.0.3",
|
||||
"debug": "3.1.0",
|
||||
"engine.io-parser": "2.1.2",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
"parseqs": "0.0.5",
|
||||
"parseuri": "0.0.5",
|
||||
"ws": "3.3.3",
|
||||
"xmlhttprequest-ssl": "1.5.5",
|
||||
"yeast": "0.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
|
||||
"integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
|
||||
"requires": {
|
||||
"after": "0.8.2",
|
||||
"arraybuffer.slice": "0.0.7",
|
||||
"base64-arraybuffer": "0.1.5",
|
||||
"blob": "0.0.4",
|
||||
"has-binary2": "1.0.3"
|
||||
}
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
@@ -133,6 +276,64 @@
|
||||
"type-is": "1.6.16",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"body-parser": {
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "1.1.2",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "1.6.16"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": "1.4.0"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
@@ -159,6 +360,24 @@
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"fs": {
|
||||
"version": "0.0.1-security",
|
||||
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
|
||||
"integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
|
||||
},
|
||||
"has-binary2": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
|
||||
"integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
|
||||
"requires": {
|
||||
"isarray": "2.0.1"
|
||||
}
|
||||
},
|
||||
"has-cors": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
|
||||
"integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
@@ -171,9 +390,17 @@
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
"version": "0.4.23",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
|
||||
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
|
||||
"requires": {
|
||||
"safer-buffer": "2.1.2"
|
||||
}
|
||||
},
|
||||
"indexof": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
|
||||
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
@@ -185,6 +412,11 @@
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
|
||||
"integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
|
||||
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
@@ -228,6 +460,11 @@
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
||||
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
|
||||
},
|
||||
"object-component": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
|
||||
"integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
@@ -236,6 +473,22 @@
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"parseqs": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
|
||||
"integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
|
||||
"requires": {
|
||||
"better-assert": "1.0.2"
|
||||
}
|
||||
},
|
||||
"parseuri": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
|
||||
"integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
|
||||
"requires": {
|
||||
"better-assert": "1.0.2"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
|
||||
@@ -266,37 +519,14 @@
|
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
|
||||
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.23",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": "1.4.0"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
@@ -304,6 +534,11 @@
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
@@ -340,11 +575,95 @@
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
|
||||
},
|
||||
"socket.io": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
|
||||
"integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
|
||||
"requires": {
|
||||
"debug": "3.1.0",
|
||||
"engine.io": "3.2.0",
|
||||
"has-binary2": "1.0.3",
|
||||
"socket.io-adapter": "1.1.1",
|
||||
"socket.io-client": "2.1.1",
|
||||
"socket.io-parser": "3.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-adapter": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
|
||||
"integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
|
||||
},
|
||||
"socket.io-client": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
|
||||
"integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
|
||||
"requires": {
|
||||
"backo2": "1.0.2",
|
||||
"base64-arraybuffer": "0.1.5",
|
||||
"component-bind": "1.0.0",
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "3.1.0",
|
||||
"engine.io-client": "3.2.1",
|
||||
"has-binary2": "1.0.3",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
"object-component": "0.0.3",
|
||||
"parseqs": "0.0.5",
|
||||
"parseuri": "0.0.5",
|
||||
"socket.io-parser": "3.2.0",
|
||||
"to-array": "0.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
|
||||
"integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "3.1.0",
|
||||
"isarray": "2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
|
||||
},
|
||||
"to-array": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
|
||||
"integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
|
||||
},
|
||||
"type-is": {
|
||||
"version": "1.6.16",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
|
||||
@@ -354,6 +673,11 @@
|
||||
"mime-types": "2.1.19"
|
||||
}
|
||||
},
|
||||
"ultron": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
|
||||
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
@@ -368,6 +692,26 @@
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
},
|
||||
"ws": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
||||
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
||||
"requires": {
|
||||
"async-limiter": "1.0.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"ultron": "1.1.1"
|
||||
}
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
|
||||
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
|
||||
},
|
||||
"yeast": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
|
||||
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
"author": "Ben (plane000)",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"express": "^4.16.3"
|
||||
"body-parser": "^1.18.3",
|
||||
"browser-request": "^0.3.3",
|
||||
"client-request": "^2.3.0",
|
||||
"express": "^4.16.3",
|
||||
"fs": "0.0.1-security",
|
||||
"socket.io": "^2.1.1"
|
||||
}
|
||||
}
|
||||
|
||||
18
JavaScript/web-chat/utils.js
Normal file
18
JavaScript/web-chat/utils.js
Normal file
@@ -0,0 +1,18 @@
|
||||
module.exports.currenttime = function() {
|
||||
let d = new Date(Date.now());
|
||||
return `[${pad(d.getHours(), 2)}:${pad(d.getMinutes(), 2)}:${pad(d.getSeconds(), 2)}]`;
|
||||
}
|
||||
|
||||
function pad(n, width, z) {
|
||||
z = z || '0';
|
||||
n = n + '';
|
||||
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
||||
}
|
||||
|
||||
module.exports.sleep = function(ms) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, ms);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user