diff --git a/.nvmrc b/.nvmrc index 301160a930..f599e28b8a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -8 \ No newline at end of file +10 diff --git a/.travis.yml b/.travis.yml index 66cadafc86..5b78de0c79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - '8' + - '10' services: - mongodb cache: diff --git a/Dockerfile b/Dockerfile index c60a444cc7..6c776f2c97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:8 +FROM node:10 ENV ADMIN_EMAIL admin@habitica.com ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e diff --git a/Dockerfile-Dev b/Dockerfile-Dev index e5a4dbc4b3..b0b07b6dfd 100644 --- a/Dockerfile-Dev +++ b/Dockerfile-Dev @@ -1,4 +1,4 @@ -FROM node:8 +FROM node:10 # Install global packages RUN npm install -g gulp-cli mocha diff --git a/package-lock.json b/package-lock.json index 3fc830efbf..c1bf7b054d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4969,12 +4969,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, - "bindings": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.1.tgz", - "integrity": "sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew==", - "optional": true - }, "bl": { "version": "1.2.2", "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", @@ -17412,16 +17406,6 @@ "request": ">=2.76.0 <3.0.0" } }, - "node-rdkafka": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-2.4.2.tgz", - "integrity": "sha512-sOfVLlLUChJZqmJV5lTdL/psAg4TvkDnSprly6UQenCK8W69ee7Q20v8nzFESsdZWTRgpNHu3WEmz9I+Ef6Bog==", - "optional": true, - "requires": { - "bindings": "1.x", - "nan": "2.x" - } - }, "node-sass": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.10.0.tgz", diff --git a/package.json b/package.json index d4d477aee7..f4856545cb 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "compression": "^1.7.2", "cookie-session": "^1.2.0", "coupon-code": "^0.4.5", - "cross-env": "^5.1.5", + "cross-env": "^5.2.0", "css-loader": "^0.28.11", "csv-stringify": "^4.3.1", "cwait": "^1.1.1", @@ -80,7 +80,7 @@ "ps-tree": "^1.0.0", "pug": "^2.0.3", "rimraf": "^2.4.3", - "sass-loader": "^7.0.0", + "sass-loader": "^7.0.3", "shelljs": "^0.8.2", "short-uuid": "^3.0.0", "smartbanner.js": "^1.9.1", @@ -90,7 +90,7 @@ "svg-url-loader": "^2.3.2", "svgo": "^1.0.5", "svgo-loader": "^2.1.0", - "universal-analytics": "^0.4.16", + "universal-analytics": "^0.4.17", "update": "^0.7.4", "upgrade": "^1.1.0", "url-loader": "^1.0.0", @@ -107,15 +107,15 @@ "vuedraggable": "^2.15.0", "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec", "webpack": "^3.12.0", - "webpack-merge": "^4.0.0", - "winston": "^2.4.2", + "webpack-merge": "^4.1.3", + "winston": "^2.4.3", "winston-loggly-bulk": "^2.0.2", "xml2js": "^0.4.4" }, "private": true, "engines": { - "node": "^8.9.4", - "npm": "^5.6.0" + "node": "^10", + "npm": "^6" }, "scripts": { "lint": "eslint --ext .js,.vue .", @@ -144,13 +144,13 @@ "apidoc": "gulp apidoc" }, "devDependencies": { - "@vue/test-utils": "^1.0.0-beta.16", + "@vue/test-utils": "^1.0.0-beta.19", "babel-plugin-istanbul": "^4.1.6", "babel-plugin-syntax-object-rest-spread": "^6.13.0", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chalk": "^2.4.1", - "chromedriver": "^2.38.3", + "chromedriver": "^2.40.0", "connect-history-api-fallback": "^1.1.0", "coveralls": "^3.0.1", "cross-spawn": "^6.0.5", @@ -180,7 +180,7 @@ "mocha": "^5.1.1", "monk": "^6.0.6", "nightwatch": "^0.9.21", - "puppeteer": "^1.4.0", + "puppeteer": "^1.5.0", "require-again": "^2.0.0", "selenium-server": "^3.12.0", "sinon": "^6.3.5", @@ -190,7 +190,5 @@ "webpack-dev-middleware": "^2.0.5", "webpack-hot-middleware": "^2.22.2" }, - "optionalDependencies": { - "node-rdkafka": "^2.3.0" - } + "optionalDependencies": {} } diff --git a/website/server/libs/queue/index.js b/website/server/libs/queue/index.js index 7823e7f912..aba25ce226 100644 --- a/website/server/libs/queue/index.js +++ b/website/server/libs/queue/index.js @@ -1,59 +1,7 @@ -import nconf from 'nconf'; -import logger from '../logger'; - -const GROUP_ID = nconf.get('KAFKA:GROUP_ID'); -const CLOUDKARAFKA_BROKERS = nconf.get('KAFKA:CLOUDKARAFKA_BROKERS'); -const CLOUDKARAFKA_USERNAME = nconf.get('KAFKA:CLOUDKARAFKA_USERNAME'); -const CLOUDKARAFKA_PASSWORD = nconf.get('KAFKA:CLOUDKARAFKA_PASSWORD'); -const CLOUDKARAFKA_TOPIC_PREFIX = nconf.get('KAFKA:CLOUDKARAFKA_TOPIC_PREFIX'); - -const prefix = CLOUDKARAFKA_TOPIC_PREFIX; -const topic = `${prefix}-default`; - -let Kafka; -let producer; - -try { - Kafka = require('node-rdkafka'); // eslint-disable-line global-require -} catch (er) { - Kafka = null; -} - -function createProducer () { - const kafkaConf = { - 'group.id': GROUP_ID, - 'metadata.broker.list': CLOUDKARAFKA_BROKERS ? CLOUDKARAFKA_BROKERS.split(',') : '', - 'socket.keepalive.enable': true, - 'security.protocol': 'SASL_SSL', - 'sasl.mechanisms': 'SCRAM-SHA-256', - 'sasl.username': CLOUDKARAFKA_USERNAME, - 'sasl.password': CLOUDKARAFKA_PASSWORD, - debug: 'generic,broker,security', - }; - - producer = new Kafka.Producer(kafkaConf); - - producer.connect(); -} - -if (Kafka && GROUP_ID && CLOUDKARAFKA_BROKERS && CLOUDKARAFKA_USERNAME && CLOUDKARAFKA_PASSWORD && CLOUDKARAFKA_TOPIC_PREFIX) { - createProducer(); -} - -process.on('exit', () => { - if (producer && producer.isConnected()) producer.disconnect(); -}); - const api = {}; api.sendMessage = function sendMessage (message, key) { - if (!producer || !producer.isConnected()) return; - - try { - producer.produce(topic, -1, new Buffer(JSON.stringify(message)), key); - } catch (err) { - logger.error(err); - } + return; }; module.exports = api;