diff --git a/.dockerignore b/.dockerignore index 4004b64..2b3aa56 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,7 @@ -/Server/.env -/Server/public -/Server/node_modules -/UI/node_modules \ No newline at end of file +Server/.env +Server/public/ +.git/ + +*/node_modules/ +UI/node_modules/ +Server/node_modules/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 821c86f..38ec879 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,13 @@ FROM node:10 AS builder -ENV NODE_ENV production -RUN npm i -g yarn -COPY . /src -RUN cd /src/UI && yarn && yarn build && cd /src/Server && yarn && mkdir public && mv /src/UI/build/* public +# ENV NODE_ENV production +COPY ./UI /src/UI +RUN cd /src/UI && yarn && yarn build + +COPY ./Server /src/Server +RUN cd /src/Server && yarn + +RUN cp -r /src/UI/build /src/Server/public + FROM mhart/alpine-node:10 ENV NODE_ENV production diff --git a/Server/index.js b/Server/index.js index ed12176..040893d 100644 --- a/Server/index.js +++ b/Server/index.js @@ -25,7 +25,7 @@ Array.prototype.filterNot = Array.prototype.filterNot || function (predicate) { // Create the server and socket.io server const server = http.createServer(app.callback()) -const io = _io(server, { transports: ['websocket'], path: '/api/socket.io', wsEngine: 'uws' }) +const io = _io(server, { transports: ['websocket'], path: '/api/socket.io' }) const M = new Roleypoly(router, io, app) // eslint-disable-line no-unused-vars @@ -47,19 +47,20 @@ async function start () { // SPA + Static if (process.env.NODE_ENV === 'production') { const pub = path.join(__dirname, 'public') + log.info('public path', pub) const staticFiles = require('koa-static') - app.use(staticFiles(pub, { defer: true })) - const send = require('koa-send') - app.use(async (ctx, next) => { - if (ctx.path.startsWith('/api')) { - return next() - } + // const send = require('koa-send') + // app.use(async (ctx, next) => { + // if (ctx.path.startsWith('/api')) { + // return next() + // } - await next() - send(ctx, 'index.html', { root: pub }) - }) + // // await next() + // // send(ctx, 'index.html', { root: pub }) + // }) + app.use(staticFiles(pub, { defer: true, gzip: true, br: true })) } // Request logger diff --git a/Server/package.json b/Server/package.json index 53edc16..8ef37d7 100644 --- a/Server/package.json +++ b/Server/package.json @@ -9,6 +9,7 @@ "pm2": "pm2" }, "dependencies": { + "@discordjs/uws": "^11.149.1", "chalk": "^2.4.1", "discord.js": "^11.4.2", "dotenv": "^6.1.0", @@ -17,22 +18,21 @@ "eslint-config-standard": "^12.0.0", "glob": "^7.1.3", "immutable": "^3.8.2", - "koa": "^2.6.1", + "koa": "^2.6.2", "koa-better-router": "^2.1.1", "koa-bodyparser": "^4.2.1", + "koa-compress": "^3.0.0", "koa-send": "^5.0.0", "koa-session": "^5.10.0", - "koa-compress": "^3.0.0", "koa-static": "^5.0.0", "ksuid": "^1.1.3", "lru-cache": "^4.1.3", - "pg": "^7.6.0", + "pg": "^7.6.1", "pg-hstore": "^2.3.2", - "pm2": "^2.9.3", - "sequelize": "^4.41.0", - "socket.io": "^2.1.1", - "superagent": "^4.0.0-beta.5", - "uuid": "^3.3.2", - "uws": "10.148.1" + "pm2": "^2.10.4", + "sequelize": "^4.41.2", + "socket.io": "^2.2.0", + "superagent": "^4.0.0", + "uuid": "^3.3.2" } } diff --git a/Server/yarn.lock b/Server/yarn.lock index e5dc82b..5f69084 100644 --- a/Server/yarn.lock +++ b/Server/yarn.lock @@ -18,6 +18,11 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@discordjs/uws@^11.149.1": + version "11.149.1" + resolved "https://registry.yarnpkg.com/@discordjs/uws/-/uws-11.149.1.tgz#2e86f2825f43bed43d2e69eaf30a07d2dd8e8946" + integrity sha512-TmbwZaeXDSCq0ckmf2q10Fkt1220gu9AZJ/UvtQjsi2jyJDjy0i0OwL4/eb3vc9Cwr0mpC9EbfzltQ2si0qUiQ== + "@types/geojson@^1.0.0": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf" @@ -329,10 +334,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-writer@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" - integrity sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg= +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== buffer@^5.1.0: version "5.2.1" @@ -658,7 +663,7 @@ debug@^3, debug@^3.0, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1: +debug@^4.0.0, debug@^4.0.1, debug@~4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== @@ -806,10 +811,10 @@ emitter-listener@^1.1.1: dependencies: shimmer "^1.2.0" -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" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== +engine.io-client@~3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.1.tgz#afedb4a07b2ea48b7190c3136bfea98fdd4f0f03" + integrity sha512-q66JBFuQcy7CSlfAz9L3jH+v7DTT3i6ZEadYcVj2pOs8/0uJHLxKX3WBkGTvULJMdz0tUCyJag0aKT/dpXL9BQ== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -819,7 +824,7 @@ engine.io-client@~3.2.0: indexof "0.0.1" parseqs "0.0.5" parseuri "0.0.5" - ws "~3.3.1" + ws "~6.1.0" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" @@ -834,17 +839,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" 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" - integrity sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw== +engine.io@~3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.3.1.tgz#e076d9d2d6c075dda4623253b80fa045c81dd3a4" + integrity sha512-p0njqQo5QWVxJauKcnp5IO+LBeE5JD1tAf+UxPU8ASEUHSpsSSfYR+kVb8XGGH8AEDUa1Dk5jCvPQShNBL5BdQ== 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" + ws "~6.1.0" "erlpack@github:discordapp/erlpack": version "0.1.0" @@ -1855,10 +1860,10 @@ koa-static@^5.0.0: debug "^3.1.0" koa-send "^5.0.0" -koa@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.6.1.tgz#88cabb18cd297e0577a37e40f400c4b6f1699fef" - integrity sha512-n9R5Eex4y0drUeqFTeCIeXyz8wjr2AxBo2Cq8LvmiXbJl4yDA5KIrecMPkhnmgACZnPXMRyCLbJoyLmpM9aFAw== +koa@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.6.2.tgz#57ba4d049b0a99cae0d594e6144e2931949a7ce1" + integrity sha512-KdnBFhTgh9ysMMoYe4J4fLvaKjT7mF3nRYV8MjxLzx6qywFNeptqi4xevyUltg1fZl2CFJ+HeLXuCGx07Yvl/A== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" @@ -2405,12 +2410,12 @@ pg-types@~1.12.1: postgres-date "~1.0.0" postgres-interval "^1.1.0" -pg@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-7.6.0.tgz#0c9ecaf0ce6f3c7e3c68ce8f621df79e741a89e3" - integrity sha512-INUjsobS7O0Slad6fVlSSSVpMd5wozwtdSrWL5/JfEGYCWtPwgka0uQOf2KCo7QbWUmwefcuNQtzijeztDquQg== +pg@^7.6.1: + version "7.6.1" + resolved "https://registry.yarnpkg.com/pg/-/pg-7.6.1.tgz#42c68aed37bf38b813616e3d21f4338f350c1b79" + integrity sha512-rAItIkYrRaNGinZN/Hs8F9R5mQjQSPlnzxPF+eCimSl92qnuNGR42gkpOQKP1bnvTwkSjRTBL+VNC5EcFhtCuQ== dependencies: - buffer-writer "1.0.1" + buffer-writer "2.0.0" packet-reader "0.3.1" pg-connection-string "0.1.3" pg-pool "~2.0.3" @@ -2484,7 +2489,7 @@ pm2-multimeter@^0.1.2: dependencies: charm "~0.1.1" -pm2@^2.9.3: +pm2@^2.10.4: version "2.10.4" resolved "https://registry.yarnpkg.com/pm2/-/pm2-2.10.4.tgz#dd292fd26aed882f6e9f7b9652191387d2debe6a" integrity sha512-AuAA6DoF/R3L9zSuYtKzaEd6UFvhCKqfW49dgLe0Q4SQtYmQMmXmyEAp5tr1iduJrqGRwpb5ytVm2rWZ56/4Vg== @@ -2805,10 +2810,10 @@ semver@5.*, semver@^5.0.1, semver@^5.3, semver@^5.3.0, semver@^5.5.0, semver@^5. resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -sequelize@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.41.0.tgz#fa24ac0471e398090b55b302579240ed58e0b54a" - integrity sha512-6zCYxjPriUBgLQ5dN4ZxC5eadUtRu2tHFoBiSU9vNGb6G3f4bZM6vFpJu0DhxeeyhodTAXqY1GaBpZzT3PXB/Q== +sequelize@^4.41.2: + version "4.41.2" + resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.41.2.tgz#bb9ba30d72e9eeb883c9861cd0e2cac672010883" + integrity sha512-8vPf2R0o9iEmtzkqNzwFdblO+0Mu+RNxOdLeYGGqWGlp3cushLpQucAeSGPQgf2hQVZP5yOCM1ouZKTQ5FTlvA== dependencies: bluebird "^3.5.0" cls-bluebird "^2.1.0" @@ -2943,46 +2948,46 @@ socket.io-adapter@~1.1.0: resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= -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" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== +socket.io-client@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" + integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== 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" + engine.io-client "~3.3.1" 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" + socket.io-parser "~3.3.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" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== 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" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== +socket.io@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.2.0.tgz#f0f633161ef6712c972b307598ecd08c9b1b4d5b" + integrity sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w== dependencies: - debug "~3.1.0" - engine.io "~3.2.0" + debug "~4.1.0" + engine.io "~3.3.1" has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.0" + socket.io-client "2.2.0" + socket.io-parser "~3.3.0" source-map-resolve@^0.5.0: version "0.5.2" @@ -3107,10 +3112,10 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -superagent@^4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-4.0.0-beta.5.tgz#441a89214113515e87d2f545fc8dd08aaa30cb29" - integrity sha512-v4FTm6kg6zJOfLcot9kCTcWy/wjD/hvtUXWcv0Pd8TlUqxKDctif2rtDPRb4gW6Df9MMXU1BHB+1z5U2VFVsYg== +superagent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-4.0.0.tgz#b9de499c0363acb53879cc42bd14ec26751050bb" + integrity sha512-qaGDf+QUYxgMYdJBWCezHnc3UjrCUwxm5bCfxBhTXI5BbCluVzmVNYzxvCw1jP9PXmwUZeOW2yPpGm9fLbhtFg== dependencies: component-emitter "^1.2.0" cookiejar "^2.1.2" @@ -3280,11 +3285,6 @@ uid-safe@^2.1.3: dependencies: random-bytes "~1.0.0" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - underscore@^1.7.0: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" @@ -3345,11 +3345,6 @@ uuid@^3.0.1, uuid@^3.2.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uws@10.148.1: - version "10.148.1" - resolved "https://registry.yarnpkg.com/uws/-/uws-10.148.1.tgz#fd1a79cf6118a388e0a1bed8a1397030d2c4fd2c" - integrity sha1-/Rp5z2EYo4jgob7YoTlwMNLE/Sw= - v8-compile-cache@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" @@ -3435,14 +3430,12 @@ ws@^4.0.0: async-limiter "~1.0.0" safe-buffer "~5.1.0" -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== +ws@~6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== dependencies: async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" xmlhttprequest-ssl@~1.5.4: version "1.5.5" diff --git a/UI/package.json b/UI/package.json index d4361ef..7b7fa46 100644 --- a/UI/package.json +++ b/UI/package.json @@ -8,13 +8,13 @@ "immutable": "^3.8.2", "moment": "^2.22.2", "prop-types": "^15.6.2", - "react": "^16.6.0", + "react": "^16.6.3", "react-custom-scrollbars": "^4.2.1", - "react-dnd": "^2.5.4", - "react-dnd-html5-backend": "^2.5.4", - "react-dom": "^16.6.0", + "react-dnd": "^7.0.0", + "react-dnd-html5-backend": "^7.0.0", + "react-dom": "^16.6.3", "react-immutable-proptypes": "^2.1.0", - "react-redux": "^5.1.0", + "react-redux": "^5.1.1", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", "react-router-redux": "^5.0.0-alpha.8", @@ -24,7 +24,7 @@ "redux": "^4.0.1", "redux-logger": "^3.0.6", "redux-thunk": "^2.3.0", - "superagent": "^4.0.0-beta.5", + "superagent": "^4.0.0", "uuid": "^3.3.2" }, "scripts": { diff --git a/UI/public/index.html b/UI/public/index.html index a47557f..646764e 100644 --- a/UI/public/index.html +++ b/UI/public/index.html @@ -7,9 +7,9 @@ Roleypoly - - - + + +