Este commit está contenido en:
Your Name
2020-05-28 10:46:51 +00:00
padre 8e5fb9911c
commit cfb1b01b3c
Se han modificado 119 ficheros con 3177 adiciones y 0 borrados

Ver fichero

@@ -0,0 +1,17 @@
FROM node:slim
#ss
# ADD ./ /sever
# server.js /server/server.js
# ADD ./package.json /server/package.json
# RUN mkdir /server/public
# RUN mkdir /server/ssl
# RUN mkdir /server/lib
# COPY ./ssl/*.pem /server/ssl/
# COPY ./lib/*.js /server/lib/
WORKDIR /src
ADD ./package.json /src/package.json
RUN /usr/local/bin/npm install
RUN npm install
ENTRYPOINT ["/usr/local/bin/node", "server.js"]

Ver fichero

@@ -0,0 +1,45 @@
var colorsConsoleList = {
Reset: "\x1b[0m",
Bright: "\x1b[1m",
Dim: "\x1b[2m",
Underscore: "\x1b[4m",
Blink: "\x1b[5m",
Reverse: "\x1b[7m",
Hidden: "\x1b[8m",
FgBlack: "\x1b[30m",
FgRed: "\x1b[31m",
FgGreen: "\x1b[32m",
FgYellow: "\x1b[33m",
FgBlue: "\x1b[34m",
FgMagenta: "\x1b[35m",
FgCyan: "\x1b[36m",
FgWhite: "\x1b[37m",
BgBlack: "\x1b[40m",
BgRed: "\x1b[41m",
BgGreen: "\x1b[42m",
BgYellow: "\x1b[43m",
BgBlue: "\x1b[44m",
BgMagenta: "\x1b[45m",
BgCyan: "\x1b[46m",
BgWhite: "\x1b[47m",
};
var getColors = function(color){
return color.reduce((resul, x) => resul + colorsConsoleList[x], "");
}
var setColors = function(smg, color){
return getColors(color) + smg + colorsConsoleList["Reset"];
}
module.exports = {
log: function (smg, color = []) {
console.log(setColors(smg, color));
},
colorized: function (smg, color){
return setColors(smg, color);
}
};

Ver fichero

@@ -0,0 +1,55 @@
var log = require('./colorized').log,
c = require('./colorized').colorized,
s = {
n: ["FgRed", "BgBlack", "Bright"], // Normality
bkr: ["FgRed", "BgBlack", "Bright", "Blink"], // Blink red
bky: ["FgYellow", "BgBlack", "Bright", "Blink"], // Blink yellow
b: ["FgWhite", "BgBlack"], // Border
l: ["FgWhite", "BgBlack", "Bright"], // logo
lr: ["FgRed", "BgBlack", "Bright"], // logo red
ly: ["FgYellow", "BgBlack", "Bright"], // logo yellow
lm: ["FgMagenta", "BgBlack", "Bright"], // logo magenta
lg: ["FgGreen", "BgBlack", "Bright"] // logo green
},
b = () => c("---", s.b),
bkr = (x) => c(x, s.bkr),
bky = (x) => c(x, s.bky),
l = (x) => c(x, s.l),
ly = (x) => c(x, s.ly),
lr = (x) => c(x, s.lr),
lm = (x) => c(x, s.lm),
lg = (x) => c(x, s.lg);
module.exports = {
logo: function () {
log("--------------------------------------------", s.b);
log(b() + c(" MW-NodeJS Server 0.3 ", s.lr) + b());
log("--------------------------------------------", s.b);
log(b() + l(" .-. ") + b());
log(b() + l(" {{") + lm("#") + l("}} ") + b());
log(b() + l(" 888 ") + b());
log(b() + l(" 888 ") + b());
log(b() + l(" 8@8 ") + b());
log(b() + l(" _ )8( _ ") + b());
log(b() + l(" ____________________(") + lr("@") + l(")__/8@8\\__(") + lr("@") + l(") ") + b());
log(b() + l(' | | | |`~"-=):(=-"~` ') + b());
log(b() + l(" | ") + lg("<>") + l(" | | ") + lg("<>") + l(" | |.| ") + b());
log(b() + l(" | ") + lg("<><>") + l(" | | ") + lg("<><>") + l(" | |") + bky("A") + l("| ") + b());
log(b() + l(" | ") + lg("<> <>") + l("| |") + lg("<> <>") + l(" | |'| ") + b());
log(b() + l(" | ") + lg("<>") + l(" .--------. ") + lg("<>") + l(" | |.| ") + b());
log(b() + l(" |_____| ") + ly("()") + l(" |_____| |") + bky("C") + l("| ") + b());
log(b() + l(" | | ") + ly("(O\\/O)") + l(" | | |'| ") + b());
log(b() + l(" | \\ ") + ly("/\\") + l(" / | |.| ") + b());
log(b() + l(" |______\\ ") + ly("\\/") + l(" /______| |") + bky("A") + l("| ") + b());
log(b() + l(" | '.__.' | |'| ") + b());
log(b() + l(" | ") + lg("<>") + l(" | | ") + lg("<>") + l(" | |.| ") + b());
log(b() + l(" | ") + lg("<> <>") + l("| |") + lg("<> <>") + l(" | |") + bky("B") + l("| ") + b());
log(b() + l(" | ") + lg("<><>") + l(" | | ") + lg("<><>") + l(" | |'| ") + b());
log(b() + l(" | ") + lg("<>") + l(" | | ") + lg("<>") + l(" | |.| ") + b());
log(b() + l(" |________|__|________| \\ / ") + b());
log(b() + l(" v ") + b());
log("--------------------------------------------", s.b);
}
}

Ver fichero

@@ -0,0 +1,40 @@
module.exports = {
create: channel => {
map = require("../public/maps/" + channel + "/index").map;
map.players = {};
return map;
},
collision: (a,b) => {
return a && b ? parseInt(a.position.x) + parseInt(a.width) > parseInt(b.position.x) && parseInt(a.position.x) < parseInt(b.position.x) + parseInt(b.width) && parseInt(a.position.y) + parseInt(a.height) > parseInt(b.position.y) && parseInt(a.position.y) < parseInt(b.position.y) + parseInt(b.height) : false;
},
collisionX: (m, a,b) => {
return parseInt(a.position.x + m) + parseInt(a.width) > parseInt(b.position.x) && parseInt(a.position.x + m) < parseInt(b.position.x) + parseInt(b.width) && parseInt(a.position.y) + parseInt(a.height) > parseInt(b.position.y) && parseInt(a.position.y) < parseInt(b.position.y) + parseInt(b.height);
},
collisionY: (m, a,b) => {
return parseInt(a.position.y + m) + parseInt(a.height) > parseInt(b.position.y) && parseInt(a.position.y + m) < parseInt(b.position.y) + parseInt(b.height) && parseInt(a.position.x) + parseInt(a.width) > parseInt(b.position.x) && parseInt(a.position.x) < parseInt(b.position.x) + parseInt(b.width);
},
insideX: (m, item, limits) => {
return (item.position.x + m) > limits.x.max && (item.position.x + m) < limits.x.min;
},
insideY: (m, item, limits) => {
return (item.position.y + m) > limits.y.max && (item.position.y + m) < limits.y.min;
},
moveX: (m, player, channel) => {
let maper = module.exports;
return maper.insideX(m, player, channel.limits) && !Object.values(channel.players).reduce((acc, x) => acc ? acc : player != x ? maper.collisionX(m, player, x) : false, false) && !Object.values(channel.colliders).reduce((acc, x) => acc ? acc : player != x ? maper.collisionX(m, player, x) : false, false);
},
moveY: (m, player, channel) => {
let maper = module.exports;
return maper.insideY(m, player, channel.limits) && !Object.values(channel.players).reduce((acc, x) => acc ? acc : player != x ? maper.collisionY(m, player, x) : false, false) && !Object.values(channel.colliders).reduce((acc, x) => acc ? acc : player != x ? maper.collisionY(m, player, x) : false, false);
},
getRandom: (min, max) => {
return Math.floor(Math.random() * (max - min) ) + min;
},
getRandomPosition:(limits) =>{
let maper = module.exports;
return {
"x": maper.getRandom(limits.x.min, limits.x.max),
"y": maper.getRandom(limits.y.min, limits.y.max)
}
}
}

Ver fichero

@@ -0,0 +1,13 @@
{
"name": "magicworldserver",
"version": "0.1.0",
"private": true,
"dependencies": {
"express": "^4.16.3",
"express-force-ssl": "^0.3.2",
"pixi": "^0.3.1",
"serve-static": "^1.13.2",
"socket.io": "^2.1.1",
"ws": "^6.0.0"
}
}

Ver fichero

@@ -0,0 +1,209 @@
'use strict'
const express = require('express'),
app = express(),
fs = require('fs'),
http = require('http'),
// https = require('https'),
map = require('./lib/maper'),
// secure = require('express-force-ssl'),
Url = require('url'),
io = require('ws'),
serveStatic = require('serve-static'),
log = require('./lib/colorized').log,
//colorized = require('./lib/colorized').colorized,
logo = require('./lib/logo').logo,
options = {
key: fs.readFileSync(__dirname + '/ssl/key.pem'),
cert: fs.readFileSync(__dirname + '/ssl/cert.pem')
},
channels = {},
styles = {
disconnect: ["FgRed", "Bright"],
connect: ["FgGreen", "Bright"]
};
logo();
app
//.use(secure)
.use(serveStatic(__dirname + '/public'));
const server = http.createServer(app),
ws = new io.Server({
server: server
});
server.listen(80)
ws.on('connection', (socket, req) => {
let params = Url.parse(req.url, true).query;
socket.channel = params.channelName;
socket.username = params.username;
if (!channels[socket.channel]) {
channels[socket.channel] = map.create(socket.channel);
}
socket.send(socket.username + " create " + JSON.stringify(channels[socket.channel]));
channels[socket.channel].players[socket.username] = {
"position": map.getRandomPosition(channels[socket.channel].limits),
"direction": "down",
"state": "stop",
"username": socket.username,
"lives": channels[socket.channel].player.lives,
"scale": channels[socket.channel].player.scale,
"score": 0,
"width": 0,
"height": 0
};
let msg = socket.username + " " + JSON.stringify(channels[socket.channel].players[socket.username]);
socket.send(msg);
// Cuando recive un mensaje
socket.on('message', msg => {
var username = msg.split(" ")[0];
var type = msg.split(" ")[1];
if (type != "chat" && channels[socket.channel].players[socket.username].position) {
var data = JSON.parse(msg.replace(username + " ", "")),
v = channels[socket.channel].player.velocity_divisor ? ((channels[socket.channel].players[socket.username].position.y) + (channels[socket.channel].size.y / 2)) / channels[socket.channel].player.velocity_divisor : channels[socket.channel].player.velocity,
mx = -data.vx / channels[socket.channel].player.dvx * v,
my = -data.vy / channels[socket.channel].player.dvy * v;
if (map.moveX(mx, channels[socket.channel].players[socket.username], channels[socket.channel])) {
channels[socket.channel].players[socket.username].position.x += mx;
}
if (map.moveY(my, channels[socket.channel].players[socket.username], channels[socket.channel])) {
channels[socket.channel].players[socket.username].position.y += my;
}
channels[socket.channel].players[socket.username].state = data.state;
channels[socket.channel].players[socket.username].direction = data.direction;
channels[socket.channel].players[socket.username].width = data.width;
channels[socket.channel].players[socket.username].height = data.height;
if(channels[socket.channel].player.scale_ratio_divisor){
channels[socket.channel].players[socket.username].scale = (((channels[socket.channel].players[socket.username].position.y * -1) / channels[socket.channel].player.scale_ratio_divisor) - channels[socket.channel].player.scale) * -1;
}else{
channels[socket.channel].players[socket.username].scale = channels[socket.channel].player.scale;
}
if (channels[socket.channel].players[socket.username].state == "attack") {
var collider;
var punch = 80;
switch (channels[socket.channel].players[socket.username].direction) {
case "up":
collider = {
position: {
x: channels[socket.channel].players[socket.username].position.x,
y: parseInt(channels[socket.channel].players[socket.username].position.y) - 40
},
width: channels[socket.channel].players[socket.username].width,
height: 40,
punch: -punch,
direction: "y"
};
break;
case "down":
collider = {
position: {
x: channels[socket.channel].players[socket.username].position.x,
y: parseInt(channels[socket.channel].players[socket.username].position.y) + parseInt(channels[socket.channel].players[socket.username].height)
},
width: channels[socket.channel].players[socket.username].height,
height: 40,
punch: punch,
direction: "y"
};
break;
case "left":
collider = {
position: {
x: parseInt(channels[socket.channel].players[socket.username].position.x) - 40,
y: channels[socket.channel].players[socket.username].position.y
},
width: 40,
height: channels[socket.channel].players[socket.username].height,
punch: -punch,
direction: "x"
};
break;
case "right":
collider = {
position: {
x: parseInt(channels[socket.channel].players[socket.username].position.x) + parseInt(channels[socket.channel].players[socket.username].width),
y: channels[socket.channel].players[socket.username].position.y
},
width: 40,
height: channels[socket.channel].players[socket.username].height,
punch: punch,
direction: "x"
};
break;
}
var msg2 = "";
Object.values(channels[socket.channel].players).map(x => {
if(map.collision(collider, x)){
x.lives -= parseInt(x.lives) > 0 ? 1 : 0;
if(parseInt(x.lives) == 0){
channels[socket.channel].players[socket.username].lives += parseInt(channels[socket.channel].players[socket.username].lives) < 16 ? 1 : 0;
channels[socket.channel].players[socket.username].score += parseInt(x.score) != 0 ? Math.round(x.score/2) : 0;
x.score = 0;
x.position = map.getRandomPosition(channels[socket.channel].limits);
if(channels[socket.channel].player.scale_ratio_divisor){
x.scale = (((x.position.y * -1) / channels[socket.channel].player.scale_ratio_divisor) - channels[socket.channel].player.scale) * -1;
}
x.lives = channels[socket.channel].player.lives;
}else{
if(collider.direction == "x"){
if(map.moveX(collider.punch, x, channels[socket.channel])){
x.position[collider.direction] += collider.punch;
}
}else{
if(map.moveY(collider.punch, x, channels[socket.channel])){
x.position[collider.direction] += collider.punch;
}
}
channels[socket.channel].players[socket.username].score += 10;
if(channels[socket.channel].player.scale_ratio_divisor){
x.scale = (((x.position.y * -1) / channels[socket.channel].player.scale_ratio_divisor) - channels[socket.channel].player.scale) * -1;
}
}
channels[socket.channel].players[x.username] = x;
msg2 = x.username + " " + JSON.stringify(x);
}
});
}
msg = socket.username + " " + JSON.stringify(channels[socket.channel].players[socket.username]);
}
ws.clients.forEach(function each(client) {
if (client.channel == socket.channel && client.readyState === io.OPEN) {
if (msg2) client.send(msg2);
client.send(msg);
}
});
})
// Cierra la conexión y envía a los demás el mensaje
.on('close', () => {
log(socket.username + " | Disconect on " + socket.channel + ".", styles.disconnect);
ws.clients.forEach(function each(client) {
if (client !== socket && client.channel == socket.channel && client.readyState === io.OPEN) {
client.send(socket.username + " left");
}
});
delete channels[socket.channel].players[socket.username];
socket.removeAllListeners();
//socket.disconnect();
});
log(socket.username + " | Connect on " + socket.channel + ".", styles.connect);
});
/*
.on('register', data => {
log("register");
socket.emit('users', { users: "testing" })
socket.broadcast.emit('adduser', { user: "elgustavo" })
})
*/

Ver fichero

@@ -0,0 +1,46 @@
'use strict';
var constants = require('constants'),
https = require('https'),
path = require('path'),
tls = require('tls'),
fs = require('fs'),
Url = require('url'),
WebSocket = require('ws');
const server = https.createServer({
secureProtocol: 'SSLv23_method',
secureOptions: constants.SSL_OP_NO_SSLv3,
rejectUnauthorized: false,
key: fs.readFileSync(__dirname + '/ssl/key.pem'),
cert: fs.readFileSync(__dirname + '/ssl/cert.pem')
});
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws, req) {
//console.log(Url.parse(req.url, true).query);
console.log("Connect");
var params = Url.parse(req.url, true).query;
ws.channel = params.channelName;
ws.on('message', function message(msg) {
wss.clients.forEach(function each(client) {
if (client !== ws && client.channel == ws.channel && client.readyState === WebSocket.OPEN) {
client.send(msg);
}
});
});
});
server.listen('9000', 'magicworld.servebeer.com', function listening() {
const ws = new WebSocket(`wss://magicworld.servebeer.com:${server.address().port}`, {
rejectUnauthorized: true
});
ws.on('open', function open() {
ws.send(`WebSocket Listen in ${server.address().port}`);
});
});
wss.on('connection', function connection(ws) {})

Ver fichero

@@ -0,0 +1,578 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
accepts@~1.3.4, accepts@~1.3.5:
version "1.3.5"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
dependencies:
mime-types "~2.1.18"
negotiator "0.6.1"
after@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
arraybuffer.slice@~0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
async-limiter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
backo2@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
base64-arraybuffer@0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
base64id@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
better-assert@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
dependencies:
callsite "1.0.0"
blob@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
body-parser@1.18.2:
version "1.18.2"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
dependencies:
bytes "3.0.0"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.1"
http-errors "~1.6.2"
iconv-lite "0.4.19"
on-finished "~2.3.0"
qs "6.5.1"
raw-body "2.3.2"
type-is "~1.6.15"
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
callsite@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
component-bind@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
component-emitter@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
component-inherit@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
cookie@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
debug@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
ms "2.0.0"
depd@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
depd@~1.1.1, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
engine.io-client@~3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36"
dependencies:
component-emitter "1.2.1"
component-inherit "0.0.3"
debug "~3.1.0"
engine.io-parser "~2.1.1"
has-cors "1.1.0"
indexof "0.0.1"
parseqs "0.0.5"
parseuri "0.0.5"
ws "~3.3.1"
xmlhttprequest-ssl "~1.5.4"
yeast "0.1.2"
engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196"
dependencies:
after "0.8.2"
arraybuffer.slice "~0.0.7"
base64-arraybuffer "0.1.5"
blob "0.0.4"
has-binary2 "~1.0.2"
engine.io@~3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d"
dependencies:
accepts "~1.3.4"
base64id "1.0.0"
cookie "0.3.1"
debug "~3.1.0"
engine.io-parser "~2.1.0"
ws "~3.3.1"
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
express-force-ssl@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/express-force-ssl/-/express-force-ssl-0.3.2.tgz#01b2b498ae6fd2e41152b22b57a3e173773af67e"
dependencies:
lodash.assign "^3.2.0"
express@^4.16.3:
version "4.16.3"
resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
dependencies:
accepts "~1.3.5"
array-flatten "1.1.1"
body-parser "1.18.2"
content-disposition "0.5.2"
content-type "~1.0.4"
cookie "0.3.1"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.2"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
finalhandler "1.1.1"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.2"
path-to-regexp "0.1.7"
proxy-addr "~2.0.3"
qs "6.5.1"
range-parser "~1.2.0"
safe-buffer "5.1.1"
send "0.16.2"
serve-static "1.13.2"
setprototypeof "1.1.0"
statuses "~1.4.0"
type-is "~1.6.16"
utils-merge "1.0.1"
vary "~1.1.2"
finalhandler@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
statuses "~1.4.0"
unpipe "~1.0.0"
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
has-binary2@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
dependencies:
isarray "2.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"
http-errors@1.6.2:
version "1.6.2"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
dependencies:
depd "1.1.1"
inherits "2.0.3"
setprototypeof "1.0.3"
statuses ">= 1.3.1 < 2"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
iconv-lite@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
indexof@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
ipaddr.js@1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
isarray@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
lodash._baseassign@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
dependencies:
lodash._basecopy "^3.0.0"
lodash.keys "^3.0.0"
lodash._basecopy@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
lodash._bindcallback@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
lodash._createassigner@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
dependencies:
lodash._bindcallback "^3.0.0"
lodash._isiterateecall "^3.0.0"
lodash.restparam "^3.0.0"
lodash._getnative@^3.0.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
lodash._isiterateecall@^3.0.0:
version "3.0.9"
resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
lodash.assign@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
dependencies:
lodash._baseassign "^3.0.0"
lodash._createassigner "^3.0.0"
lodash.keys "^3.0.0"
lodash.isarguments@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
lodash.isarray@^3.0.0:
version "3.0.4"
resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
lodash.keys@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
dependencies:
lodash._getnative "^3.0.0"
lodash.isarguments "^3.0.0"
lodash.isarray "^3.0.0"
lodash.restparam@^3.0.0:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
mime-db@~1.35.0:
version "1.35.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
mime-types@~2.1.18:
version "2.1.19"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
dependencies:
mime-db "~1.35.0"
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
negotiator@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
object-component@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
dependencies:
ee-first "1.1.1"
parseqs@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
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"
dependencies:
better-assert "~1.0.0"
parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
pixi@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/pixi/-/pixi-0.3.1.tgz#858cd6164a32a1e4b41192cdf5c6d98209300ba8"
proxy-addr@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
dependencies:
forwarded "~0.1.2"
ipaddr.js "1.8.0"
qs@6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
range-parser@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
raw-body@2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
dependencies:
bytes "3.0.0"
http-errors "1.6.2"
iconv-lite "0.4.19"
unpipe "1.0.0"
safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
safe-buffer@~5.1.0:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
send@0.16.2:
version "0.16.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
dependencies:
debug "2.6.9"
depd "~1.1.2"
destroy "~1.0.4"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "~1.6.2"
mime "1.4.1"
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.4.0"
serve-static@1.13.2, serve-static@^1.13.2:
version "1.13.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.2"
send "0.16.2"
setprototypeof@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
socket.io-adapter@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
socket.io-client@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f"
dependencies:
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.0"
has-binary2 "~1.0.2"
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"
socket.io-parser@~3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077"
dependencies:
component-emitter "1.2.1"
debug "~3.1.0"
isarray "2.0.1"
socket.io@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980"
dependencies:
debug "~3.1.0"
engine.io "~3.2.0"
has-binary2 "~1.0.2"
socket.io-adapter "~1.1.0"
socket.io-client "2.1.1"
socket.io-parser "~3.2.0"
"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
to-array@0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
type-is@~1.6.15, type-is@~1.6.16:
version "1.6.16"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
dependencies:
media-typer "0.3.0"
mime-types "~2.1.18"
ultron@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
ws@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35"
dependencies:
async-limiter "~1.0.0"
ws@~3.3.1:
version "3.3.3"
resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"
ultron "~1.1.0"
xmlhttprequest-ssl@~1.5.4:
version "1.5.5"
resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
yeast@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"