diff --git a/.babelrc b/.babelrc index 04af60f9a1..4c8702e887 100644 --- a/.babelrc +++ b/.babelrc @@ -1,10 +1,6 @@ { - "presets": ["es2015"], "plugins": [ - "transform-object-rest-spread", - ["transform-async-to-module-method", { - "module": "bluebird", - "method": "coroutine" - }] + "transform-es2015-modules-commonjs", + "syntax-object-rest-spread", ] } diff --git a/.nodemonignore b/.nodemonignore index efb42543ee..7bde46b5e4 100644 --- a/.nodemonignore +++ b/.nodemonignore @@ -4,6 +4,7 @@ node_modules/** .bower-registry/** website/client-old/** website/client/** +website/client/store/** website/views/** website/build/** dist/** diff --git a/.nvmrc b/.nvmrc index 62f9457511..301160a930 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -6 \ No newline at end of file +8 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 537e118839..c150993057 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - '6' + - '8' services: - mongodb cache: @@ -8,8 +8,6 @@ cache: - 'node_modules' addons: chrome: stable -before_install: - - npm install -g npm@5 before_script: - npm run test:build - cp config.json.example config.json diff --git a/Dockerfile b/Dockerfile index befa3bdb55..168de8b0b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:boron +FROM node:8 # Upgrade NPM to v5 (Yarn is needed because of this bug https://github.com/npm/npm/issues/16807) # The used solution is suggested here https://github.com/npm/npm/issues/16807#issuecomment-313591975 diff --git a/Dockerfile-Production b/Dockerfile-Production index 4dac0ae835..1b4c47dbc2 100644 --- a/Dockerfile-Production +++ b/Dockerfile-Production @@ -1,4 +1,4 @@ -FROM node:boron +FROM node:8 ENV ADMIN_EMAIL admin@habitica.com ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e diff --git a/gulp/taskHelper.js b/gulp/taskHelper.js index 83560d3f46..270573ba70 100644 --- a/gulp/taskHelper.js +++ b/gulp/taskHelper.js @@ -2,7 +2,6 @@ import { exec } from 'child_process'; import psTree from 'ps-tree'; import nconf from 'nconf'; import net from 'net'; -import Bluebird from 'bluebird'; import { post } from 'superagent'; import { sync as glob } from 'glob'; import Mocha from 'mocha'; @@ -45,7 +44,7 @@ export function kill (proc) { * before failing. */ export function awaitPort (port, max = 60) { - return new Bluebird((rej, res) => { + return new Promise((rej, res) => { let socket; let timeout; let interval; diff --git a/migrations/archive/2016/20160529_fix_challenges.js b/migrations/archive/2016/20160529_fix_challenges.js index 035a5c30ed..714b716a3f 100644 --- a/migrations/archive/2016/20160529_fix_challenges.js +++ b/migrations/archive/2016/20160529_fix_challenges.js @@ -16,7 +16,6 @@ const authorName = 'Blade'; const authorUuid = '75f270e8-c5db-4722-a5e6-a83f1b23f76b'; -global.Promise = require('bluebird'); const MongoClient = require('mongodb').MongoClient; const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); diff --git a/migrations/archive/2016/20160530_fix_tasks_from_null_value_in_challenges_broken.js b/migrations/archive/2016/20160530_fix_tasks_from_null_value_in_challenges_broken.js index e010e34b35..fbb3d1bcfb 100644 --- a/migrations/archive/2016/20160530_fix_tasks_from_null_value_in_challenges_broken.js +++ b/migrations/archive/2016/20160530_fix_tasks_from_null_value_in_challenges_broken.js @@ -11,7 +11,6 @@ * pm'ed each user asking if they would like their tasks reset to the previous day ***************************************/ -global.Promise = require('bluebird'); const MongoClient = require('mongodb').MongoClient; const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); diff --git a/migrations/archive/2016/20160602_convert_quest_collection.js b/migrations/archive/2016/20160602_convert_quest_collection.js index 04db90f1c2..b70c85659e 100644 --- a/migrations/archive/2016/20160602_convert_quest_collection.js +++ b/migrations/archive/2016/20160602_convert_quest_collection.js @@ -12,7 +12,6 @@ * from an object to a number, hence this migration. ***************************************/ -global.Promise = require('bluebird'); const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); const Timer = require('./utils/timer'); diff --git a/migrations/archive/2016/20160605_convert_quest_collection_again.js b/migrations/archive/2016/20160605_convert_quest_collection_again.js index 5b9cc1e95c..7c0af7be3f 100644 --- a/migrations/archive/2016/20160605_convert_quest_collection_again.js +++ b/migrations/archive/2016/20160605_convert_quest_collection_again.js @@ -9,7 +9,6 @@ * and transfers a group's progress to it ***************************************/ -global.Promise = require('bluebird'); const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); const Timer = require('./utils/timer'); diff --git a/migrations/archive/2016/20160615_fix_bad_emails.js b/migrations/archive/2016/20160615_fix_bad_emails.js index 97f29cefcf..4fa7802526 100644 --- a/migrations/archive/2016/20160615_fix_bad_emails.js +++ b/migrations/archive/2016/20160615_fix_bad_emails.js @@ -12,7 +12,6 @@ * @example.com ***************************************/ -global.Promise = require('bluebird'); const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); const Timer = require('./utils/timer'); diff --git a/migrations/archive/2016/20161002_add_missing_webhook_type.js b/migrations/archive/2016/20161002_add_missing_webhook_type.js index 8a0dd5ecbe..94e87a1d5b 100644 --- a/migrations/archive/2016/20161002_add_missing_webhook_type.js +++ b/migrations/archive/2016/20161002_add_missing_webhook_type.js @@ -9,7 +9,6 @@ * they support a type and options and label * ***************************************/ -global.Promise = require('bluebird'); const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); const Timer = require('./utils/timer'); diff --git a/migrations/archive/2017/20170111_announce_collection_quest_change_in_parties.js b/migrations/archive/2017/20170111_announce_collection_quest_change_in_parties.js index 35361d4094..19bda0bd77 100644 --- a/migrations/archive/2017/20170111_announce_collection_quest_change_in_parties.js +++ b/migrations/archive/2017/20170111_announce_collection_quest_change_in_parties.js @@ -12,7 +12,6 @@ * message into the chat for affected parties. ***************************************/ -global.Promise = require('bluebird'); const uuid = require('uuid'); const TaskQueue = require('cwait').TaskQueue; const logger = require('./utils/logger'); diff --git a/migrations/archive/README.md b/migrations/archive/README.md index 9330a6dbf8..c1d79a81da 100644 --- a/migrations/archive/README.md +++ b/migrations/archive/README.md @@ -1,4 +1,6 @@ If you need to use a migration from this folder, move it to /migrations. Note that /migrations files (excluding /archive) are linted, so to pass test you'll have to make sure -that the file is written correctly. \ No newline at end of file +that the file is written correctly. + +They might also be using some old deps that we don't use anymore like Bluebird, mongoskin, ... \ No newline at end of file diff --git a/migrations/challenges/sync-all-challenges.js b/migrations/challenges/sync-all-challenges.js index 3be7a74bb0..7998aecdd1 100644 --- a/migrations/challenges/sync-all-challenges.js +++ b/migrations/challenges/sync-all-challenges.js @@ -1,5 +1,3 @@ -import Bluebird from 'Bluebird'; - import { model as Challenges } from '../../website/server/models/challenge'; import { model as User } from '../../website/server/models/user'; @@ -17,10 +15,10 @@ async function syncChallengeToMembers (challenges) { promises.push(user.save()); }); - return Bluebird.all(promises); + return Promise.all(promises); }); - return await Bluebird.all(challengSyncPromises); + return await Promise.all(challengSyncPromises); } async function syncChallenges (lastChallengeDate) { diff --git a/migrations/groups/create-group.js b/migrations/groups/create-group.js index d1cedcc4fc..b1d266890f 100644 --- a/migrations/groups/create-group.js +++ b/migrations/groups/create-group.js @@ -1,5 +1,3 @@ -import Bluebird from 'bluebird'; - import { model as Group } from '../../website/server/models/group'; import { model as User } from '../../website/server/models/user'; @@ -16,7 +14,7 @@ async function createGroup (name, privacy, type, leaderId) { group.leader = user._id; user.guilds.push(group._id); - return Bluebird.all([group.save(), user.save()]); + return Promise.all([group.save(), user.save()]); } module.exports = async function groupCreator () { diff --git a/migrations/groups/habitrpg-jackalopes.js b/migrations/groups/habitrpg-jackalopes.js index 50c6da4673..a33ae3a2f3 100644 --- a/migrations/groups/habitrpg-jackalopes.js +++ b/migrations/groups/habitrpg-jackalopes.js @@ -3,7 +3,6 @@ /* * This migration will find users with unlimited subscriptions who are also eligible for Jackalope mounts, and award them */ -import Bluebird from 'bluebird'; import { model as Group } from '../../website/server/models/group'; import { model as User } from '../../website/server/models/user'; @@ -38,7 +37,7 @@ async function handOutJackalopes () { cursor.on('close', async () => { console.log('done'); - return await Bluebird.all(promises); + return await Promise.all(promises); }); } diff --git a/migrations/groups/update-groups-with-group-plans.js b/migrations/groups/update-groups-with-group-plans.js index 921c9bbb99..d544f389ab 100644 --- a/migrations/groups/update-groups-with-group-plans.js +++ b/migrations/groups/update-groups-with-group-plans.js @@ -9,8 +9,6 @@ let authorUuid = ''; // ... own data is done * subscription to all members */ -import Bluebird from 'bluebird'; - import { model as Group } from '../../website/server/models/group'; import * as payments from '../../website/server/libs/payments'; @@ -28,7 +26,7 @@ async function updateGroupsWithGroupPlans () { }); cursor.on('close', async () => { - return await Bluebird.all(promises); + return await Promise.all(promises); }); } diff --git a/migrations/migration-runner.js b/migrations/migration-runner.js index 59a2a32a27..1d3e651d77 100644 --- a/migrations/migration-runner.js +++ b/migrations/migration-runner.js @@ -1,14 +1,14 @@ require('babel-register'); -require('babel-polyfill'); // This file must use ES5, everything required can be in ES6 function setUpServer () { const nconf = require('nconf'); // eslint-disable-line global-require, no-unused-vars const mongoose = require('mongoose'); // eslint-disable-line global-require, no-unused-vars - const Bluebird = require('bluebird'); // eslint-disable-line global-require, no-unused-vars const setupNconf = require('../website/server/libs/setupNconf'); // eslint-disable-line global-require + setupNconf(); + // We require src/server and npt src/index because // 1. nconf is already setup // 2. we don't need clustering diff --git a/migrations/s3-upload.js b/migrations/s3-upload.js index 7538e83f6d..4a2d2efcd2 100644 --- a/migrations/s3-upload.js +++ b/migrations/s3-upload.js @@ -1,4 +1,3 @@ -let Bluebird = require('bluebird'); let request = require('superagent'); let last = require('lodash/last'); let AWS = require('aws-sdk'); @@ -74,7 +73,7 @@ function uploadToS3 (start, end, filesUrls) { }); console.log(promises.length); - return Bluebird.all(promises) + return Promise.all(promises) .then(() => { currentIndex += 50; uploadToS3(currentIndex, currentIndex + 50, filesUrls); diff --git a/package-lock.json b/package-lock.json index 8d64233952..3af616b041 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,19 +5,19 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", - "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.41.tgz", + "integrity": "sha512-omQT0n9EW38xfMCY7cCW/PAT55igUX9c9cMq6QN4EjxCcelcrocwMJ6H4JP4BGrQ+OHdJAQPM9/Eaa2Yce4Aug==", "requires": { - "@babel/highlight": "7.0.0-beta.40" + "@babel/highlight": "7.0.0-beta.41" } }, "@babel/generator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.40.tgz", - "integrity": "sha512-c91BQcXyTq/5aFV4afgOionxZS1dxWt8OghEx5Q52SKssdGRFSiMKnk9tGkev1pYULPJBqjSDZU2Pcuc58ffZw==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.41.tgz", + "integrity": "sha512-j1hBM7K53RqAwPzPkS3GK9ggxJUBaUHevkpnt9iKBPHVlTrO3owMMlT8wH/GmOjr0HyBGFlL8cSlygx8RLdD7A==", "requires": { - "@babel/types": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.41", "jsesc": "2.5.1", "lodash": "4.17.5", "source-map": "0.5.7", @@ -37,27 +37,35 @@ } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz", - "integrity": "sha512-cK9BVLtOfisSISTTHXKGvBc2OBh65tjEk4PgXhsSnnH0i8RP2v+5RCxoSlh2y/i+l2fxQqKqv++Qo5RMiwmRCA==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.41.tgz", + "integrity": "sha512-oN/ljgS1InIpOp2bDkj8X5gIoiWnYBdhaAb2y/nPSMX4t0C6nIdbd0qYhG8uAKFm6mQBmm1cvNxPzcSB3F19aQ==", "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-get-function-arity": "7.0.0-beta.41", + "@babel/template": "7.0.0-beta.41", + "@babel/types": "7.0.0-beta.41" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz", - "integrity": "sha512-MwquaPznI4cUoZEgHC/XGkddOXtqKqD4DvZDOyJK2LR9Qi6TbMbAhc6IaFoRX7CRTFCmtGeu8gdXW2dBotBBTA==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.41.tgz", + "integrity": "sha512-B4Vwv02jCSjCws0jmBwR+c5y3MXs5dDyjEVZ8wlIeOaMvwXNxVrBGl+OaLuuPlxVNDrESNvpGFXxh+rlqf+w5Q==", "requires": { - "@babel/types": "7.0.0-beta.40" + "@babel/types": "7.0.0-beta.41" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.41.tgz", + "integrity": "sha512-eAyEJr4u3FWR5r0+gJWgE2Npu4d7BCXnXP+zw89n02x2DyewW0IHrED2HVlbhBAMWVt083VyGKjoVUMyH945wg==", + "requires": { + "@babel/types": "7.0.0-beta.41" } }, "@babel/highlight": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", - "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.41.tgz", + "integrity": "sha512-5RURdqgHmXdg775Dr6GIFaVatHaPtaVgMF29jvWgkm8LP/B3MjZR/TOhkpbIBChqFzTn7uQKiBR3002pGjKY7Q==", "requires": { "chalk": "2.3.2", "esutils": "2.0.2", @@ -65,43 +73,44 @@ } }, "@babel/template": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.40.tgz", - "integrity": "sha512-RlQiVB7eL7fxsKN6JvnCCwEwEL28CBYalXSgWWULuFlEHjtMoXBqQanSie3bNyhrANJx67sb+Sd/vuGivoMwLQ==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.41.tgz", + "integrity": "sha512-EiFgrLPJQ64+Im0+fg9fHcos0eooRG/iuTM6vlF4X9b+j/9Z/VCZejbvgqLYtuseT67GKQHEeEoXM07HK6in2Q==", "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", + "@babel/code-frame": "7.0.0-beta.41", + "@babel/types": "7.0.0-beta.41", + "babylon": "7.0.0-beta.41", "lodash": "4.17.5" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", - "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==" + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz", + "integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==" } } }, "@babel/traverse": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.40.tgz", - "integrity": "sha512-h96SQorjvdSuxQ6hHFIuAa3oxnad1TA5bU1Zz88+XqzwmM5QM0/k2D+heXGGy/76gT5ajl7xYLKGiPA/KTyVhQ==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.41.tgz", + "integrity": "sha512-EkWyDxYvaGaFjV+7xsGBeTsryqj5+oMo6noN/fhT5j5C4bpPuNwWnl47Ivvg10bk6v1NpfCoI6NHOWj3x+v9Ag==", "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/generator": "7.0.0-beta.40", - "@babel/helper-function-name": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", + "@babel/code-frame": "7.0.0-beta.41", + "@babel/generator": "7.0.0-beta.41", + "@babel/helper-function-name": "7.0.0-beta.41", + "@babel/helper-split-export-declaration": "7.0.0-beta.41", + "@babel/types": "7.0.0-beta.41", + "babylon": "7.0.0-beta.41", "debug": "3.1.0", "globals": "11.3.0", - "invariant": "2.2.3", + "invariant": "2.2.4", "lodash": "4.17.5" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", - "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==" + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz", + "integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==" }, "debug": { "version": "3.1.0", @@ -119,9 +128,9 @@ } }, "@babel/types": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.40.tgz", - "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.41.tgz", + "integrity": "sha512-q+Jf57E089a98CjAN5x0C5PAn7fqhVrEHTVAeVWHviyauASWgqff3F+t8migYEagnn5PcJ9lmtr5Mgmi3sV8PA==", "requires": { "esutils": "2.0.2", "lodash": "4.17.5", @@ -142,7 +151,7 @@ }, "@sinonjs/formatio": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", "dev": true, "requires": { @@ -206,9 +215,9 @@ } }, "acorn": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", - "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==" + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -263,7 +272,7 @@ "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", "dev": true, "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "xtend": "4.0.1" } }, @@ -295,7 +304,7 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -335,7 +344,7 @@ "resolved": "https://registry.npmjs.org/amazon-payments/-/amazon-payments-0.2.6.tgz", "integrity": "sha1-4e34TDjOJXzApFwnPaByaHVhs20=", "requires": { - "request": "2.83.0", + "request": "2.85.0", "xml2js": "0.4.4" }, "dependencies": { @@ -422,7 +431,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "qs": { @@ -431,9 +440,9 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", @@ -454,7 +463,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -642,7 +651,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "3.1.8", + "micromatch": "3.1.9", "normalize-path": "2.1.1" } }, @@ -757,7 +766,7 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "argparse": { @@ -965,9 +974,9 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.1.tgz", - "integrity": "sha512-BAlXqqeEhVEajhgz7rgerupI8sb695KpCaJ/w4Sb9s2LoUci8sSMhXw93Jp8MsOufWGJOY/P2jpUEVw4RlSzNw==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", "dev": true }, "astw": { @@ -1050,18 +1059,13 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" }, - "attempt-x": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/attempt-x/-/attempt-x-1.1.1.tgz", - "integrity": "sha512-hIp37ojJRRW8ExWSxxLpkDHUufk/DFfsb7/cUC1cVbBg7JV4gJTkCTRa44dlL9e5jx1P3VNrjL7QOQfi4MyltA==" - }, "autoprefixer": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.1.0.tgz", "integrity": "sha512-b6mjq6VZ0guW6evRkKXL5sSSvIXICAE9dyWReZ3l/riidU7bVaJMe5cQ512SmaLA4Pvgnhi5MFsMs/Mvyh9//Q==", "requires": { "browserslist": "3.1.2", - "caniuse-lite": "1.0.30000814", + "caniuse-lite": "1.0.30000815", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "6.0.19", @@ -1199,18 +1203,18 @@ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz", "integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==", "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", + "@babel/code-frame": "7.0.0-beta.41", + "@babel/traverse": "7.0.0-beta.41", + "@babel/types": "7.0.0-beta.41", + "babylon": "7.0.0-beta.41", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", - "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==" + "version": "7.0.0-beta.41", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz", + "integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==" } } }, @@ -1307,18 +1311,6 @@ "lodash": "4.17.5" } }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", @@ -1377,35 +1369,6 @@ "find-up": "2.1.0", "istanbul-lib-instrument": "1.10.1", "test-exclude": "4.2.1" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", - "dev": true, - "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } } }, "babel-plugin-syntax-async-functions": { @@ -1423,17 +1386,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, - "babel-plugin-transform-async-to-module-method": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-module-method/-/babel-plugin-transform-async-to-module-method-6.24.1.tgz", - "integrity": "sha1-kQmgiYd5S0EcshOFDOk17C8CnNs=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", @@ -1767,7 +1719,7 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", + "invariant": "2.2.4", "lodash": "4.17.5" } }, @@ -1854,7 +1806,7 @@ "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", "integrity": "sha1-drA3C3ebuBbRL9QXZKa4Vz61/sM=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "base64id": { @@ -2038,7 +1990,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "blob": { @@ -2189,10 +2141,10 @@ "isobject": "3.0.1", "kind-of": "6.0.2", "repeat-element": "1.1.2", - "snapdragon": "0.8.1", + "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", "split-string": "3.1.0", - "to-regex": "3.0.1" + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2229,7 +2181,7 @@ "defined": "1.0.0", "safe-buffer": "5.1.1", "through2": "2.0.3", - "umd": "3.0.1" + "umd": "3.0.3" } }, "browser-resolve": { @@ -2281,7 +2233,7 @@ "htmlescape": "1.1.1", "https-browserify": "1.0.0", "inherits": "2.0.3", - "insert-module-globals": "7.0.1", + "insert-module-globals": "7.0.2", "labeled-stream-splicer": "2.0.0", "module-deps": "4.1.1", "os-browserify": "0.3.0", @@ -2291,12 +2243,12 @@ "punycode": "1.4.1", "querystring-es3": "0.2.1", "read-only-stream": "2.0.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "resolve": "1.5.0", "shasum": "1.0.2", "shell-quote": "1.6.1", "stream-browserify": "2.0.1", - "stream-http": "2.8.0", + "stream-http": "2.8.1", "string_decoder": "1.0.3", "subarg": "1.0.0", "syntax-error": "1.4.0", @@ -2462,21 +2414,14 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.1.2.tgz", "integrity": "sha512-iO5MiK7MZXejqfnCK8onktxxb+mcW+KMiL/5gGF/UCWvVgPzbgbkA5cyYfqj/IIHHo7X1z0znrSHPw9AIfpvrw==", "requires": { - "caniuse-lite": "1.0.30000814", + "caniuse-lite": "1.0.30000815", "electron-to-chromium": "1.3.37" - }, - "dependencies": { - "electron-to-chromium": { - "version": "1.3.37", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.37.tgz", - "integrity": "sha1-SpJzTgBEyM8LFVO+V+riGkxuX6s=" - } } }, "bson": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", - "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", + "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" }, "buffer": { "version": "4.9.1", @@ -2499,13 +2444,10 @@ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" }, "buffer-from": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz", - "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", - "optional": true, - "requires": { - "is-array-buffer-x": "1.7.0" - } + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "optional": true }, "buffer-more-ints": { "version": "0.0.2", @@ -2525,7 +2467,7 @@ "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", "requires": { "file-type": "3.9.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "uuid": "2.0.3", "vinyl": "1.2.0" }, @@ -2668,11 +2610,6 @@ } } }, - "cached-constructors-x": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cached-constructors-x/-/cached-constructors-x-1.0.0.tgz", - "integrity": "sha512-JVP0oilYlPgBTD8bkQ+of7hSIJRtydCCJiMtzdRMXVQ98gdj0NyrJTZzbu5wtlO26Ev/1HXRTtbBNsVlLJ3+3A==" - }, "cached-path-relative": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", @@ -2736,7 +2673,7 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000810", + "caniuse-db": "1.0.30000815", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -2746,21 +2683,21 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000810", - "electron-to-chromium": "1.3.34" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.37" } } } }, "caniuse-db": { - "version": "1.0.30000810", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000810.tgz", - "integrity": "sha1-vSWDDEHvq2Qzmi44H0lnc0PIRQk=" + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000815.tgz", + "integrity": "sha1-DiGPoTPQ0HHIhqoEG0NSWMx0aJE=" }, "caniuse-lite": { - "version": "1.0.30000814", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000814.tgz", - "integrity": "sha512-Kt4dBhVlnTZ+jj+C8Bd4WT6RT4EJoX5/tlktHQfpqIMgLVrG1KBQlLf010ipMvuNrpQiAJ2A54e6MMbA0BaKxg==" + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz", + "integrity": "sha512-PGSOPK6gFe5fWd+eD0u2bG0aOsN1qC4B1E66tl3jOsIoKkTIcBYAc2+O6AeNzKW8RsFykWgnhkTlfOyuTzgI9A==" }, "capture-stack-trace": { "version": "1.0.0", @@ -2802,13 +2739,6 @@ "requires": { "align-text": "0.1.4", "lazy-cache": "1.0.4" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - } } }, "chai": { @@ -3054,7 +2984,7 @@ "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", "readdirp": "2.1.0", - "upath": "1.0.2" + "upath": "1.0.4" } }, "chromedriver": { @@ -3164,7 +3094,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "qs": { @@ -3198,7 +3128,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -3333,9 +3263,9 @@ } }, "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "requires": { "source-map": "0.5.7" }, @@ -3415,20 +3345,13 @@ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, "cloneable-readable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", - "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "requires": { "inherits": "2.0.3", - "process-nextick-args": "1.0.7", - "through2": "2.0.3" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - } + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.5" } }, "co": { @@ -3575,15 +3498,21 @@ } }, "commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==" }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, + "compare-versions": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.1.0.tgz", + "integrity": "sha512-4hAxDSBypT/yp2ySFD346So6Ragw5xmBn/e/agIGl3bZr6DLUqnoRZPusxKrXdYRZpgexO9daejmIenlq/wrIQ==", + "dev": true + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -3611,7 +3540,7 @@ }, "compression": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { "accepts": "1.3.5", @@ -3629,12 +3558,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "typedarray": "0.0.6" } }, @@ -3661,6 +3590,29 @@ "finalhandler": "1.1.0", "parseurl": "1.3.2", "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } } }, "connect-history-api-fallback": { @@ -3855,7 +3807,7 @@ "lcov-parse": "0.0.10", "log-driver": "1.2.7", "minimist": "1.2.0", - "request": "2.83.0" + "request": "2.85.0" }, "dependencies": { "assert-plus": { @@ -3952,7 +3904,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "minimist": { @@ -3968,9 +3920,9 @@ "dev": true }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "dev": true, "requires": { "aws-sign2": "0.7.0", @@ -3992,7 +3944,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -4072,7 +4024,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -4321,7 +4273,7 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000810", + "caniuse-db": "1.0.30000815", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -4333,8 +4285,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000810", - "electron-to-chromium": "1.3.34" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.37" } }, "chalk": { @@ -4478,7 +4430,7 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "es5-ext": "0.10.39" + "es5-ext": "0.10.40" } }, "dashdash": { @@ -4546,7 +4498,7 @@ "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", "requires": { "buffer-to-vinyl": "1.1.0", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "decompress-tar": "3.1.0", "decompress-tarbz2": "3.1.0", "decompress-targz": "3.1.0", @@ -4714,7 +4666,7 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "requires": { "is-stream": "1.1.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "replace-ext": { @@ -4750,7 +4702,7 @@ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "requires": { - "duplexify": "3.5.3", + "duplexify": "3.5.4", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -4760,7 +4712,7 @@ "merge-stream": "1.0.1", "mkdirp": "0.5.1", "object-assign": "4.1.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "strip-bom": "2.0.0", "strip-bom-stream": "1.0.0", "through2": "2.0.3", @@ -5109,7 +5061,7 @@ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "ast-types": "0.11.1", + "ast-types": "0.11.3", "escodegen": "1.3.3", "esprima": "3.1.3" }, @@ -5200,7 +5152,7 @@ "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "defined": "1.0.0" } }, @@ -5335,7 +5287,7 @@ "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", "requires": { "caw": "1.2.0", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "each-async": "1.1.1", "filenamify": "1.2.1", "got": "5.7.1", @@ -5344,7 +5296,7 @@ "is-url": "1.2.2", "object-assign": "4.1.1", "read-all-stream": "3.1.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "stream-combiner2": "1.1.1", "vinyl": "1.2.0", "vinyl-fs": "2.4.4", @@ -5468,7 +5420,7 @@ "parse-json": "2.2.0", "pinkie-promise": "2.0.1", "read-all-stream": "3.1.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "timed-out": "3.1.3", "unzip-response": "1.0.2", "url-parse-lax": "1.0.0" @@ -5531,7 +5483,7 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "requires": { "is-stream": "1.1.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "replace-ext": { @@ -5580,7 +5532,7 @@ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "requires": { - "duplexify": "3.5.3", + "duplexify": "3.5.4", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -5590,7 +5542,7 @@ "merge-stream": "1.0.1", "mkdirp": "0.5.1", "object-assign": "4.1.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "strip-bom": "2.0.0", "strip-bom-stream": "1.0.0", "through2": "2.0.3", @@ -5611,7 +5563,7 @@ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "duplexer3": { @@ -5620,13 +5572,13 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "duplexify": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", - "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "stream-shift": "1.0.0" } }, @@ -5641,7 +5593,7 @@ "dependencies": { "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" } } @@ -5747,9 +5699,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.34", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", - "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=" + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.37.tgz", + "integrity": "sha1-SpJzTgBEyM8LFVO+V+riGkxuX6s=" }, "elliptic": { "version": "6.4.0", @@ -5835,9 +5787,9 @@ } }, "engine.io-client": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.5.tgz", - "integrity": "sha512-Rv9vgb83zrNVhRircUXHi4mtbJhgy2oWtJOCZEbCLFs2HiDSWmh/aOEj8TwoKsn8zXGqTuQuPSoU4v3E10bR6A==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -5955,9 +5907,9 @@ } }, "es5-ext": { - "version": "0.10.39", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", - "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", + "version": "0.10.40", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.40.tgz", + "integrity": "sha512-S9Fh3oya5OOvYSNGvPZJ+vyrs6VYpe1IXPowVe3N1OhaiwVaGlwfn3Zf5P5klYcWOA0toIwYQW8XEv/QqhdHvQ==", "requires": { "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" @@ -5969,7 +5921,7 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39", + "es5-ext": "0.10.40", "es6-symbol": "3.1.1" } }, @@ -5979,7 +5931,7 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39", + "es5-ext": "0.10.40", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -5987,10 +5939,9 @@ } }, "es6-promise": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", - "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", - "dev": true + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" }, "es6-promisify": { "version": "5.0.0", @@ -5999,14 +5950,6 @@ "dev": true, "requires": { "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - } } }, "es6-set": { @@ -6015,7 +5958,7 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39", + "es5-ext": "0.10.40", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -6027,7 +5970,7 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39" + "es5-ext": "0.10.40" } }, "es6-weak-map": { @@ -6036,7 +5979,7 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39", + "es5-ext": "0.10.40", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -6095,7 +6038,7 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -6108,7 +6051,7 @@ "ajv": "5.5.2", "babel-code-frame": "6.26.0", "chalk": "2.3.2", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", @@ -6156,7 +6099,7 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -6301,7 +6244,7 @@ "domutils": "1.5.1", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } } } @@ -6330,7 +6273,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "requires": { - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -6347,14 +6290,6 @@ "requires": { "acorn": "5.5.3", "acorn-jsx": "3.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - } } }, "esprima": { @@ -6372,12 +6307,11 @@ } }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -6401,12 +6335,12 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.39" + "es5-ext": "0.10.40" } }, "event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "requires": { "duplexer": "0.1.1", @@ -6485,7 +6419,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -6567,8 +6501,8 @@ "extend-shallow": "2.0.1", "posix-character-classes": "0.1.1", "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -6737,20 +6671,6 @@ "vary": "1.1.2" }, "dependencies": { - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "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" - } - }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -6825,8 +6745,8 @@ "extend-shallow": "2.0.1", "fragment-cache": "0.2.1", "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -6879,6 +6799,16 @@ "yauzl": "2.4.1" }, "dependencies": { + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, "mkdirp": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", @@ -6912,7 +6842,7 @@ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "foreach": "2.0.5", "isarray": "0.0.1", "object-keys": "1.0.11" @@ -6936,9 +6866,9 @@ } }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -6996,7 +6926,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", "requires": { - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -7095,26 +7025,17 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", - "statuses": "1.3.1", + "statuses": "1.4.0", "unpipe": "1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - } } }, "find-cache-dir": { @@ -7159,7 +7080,7 @@ "requires": { "detect-file": "1.0.0", "is-glob": "3.1.0", - "micromatch": "3.1.8", + "micromatch": "3.1.9", "resolve-dir": "1.0.1" }, "dependencies": { @@ -7255,7 +7176,7 @@ "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "follow-redirects": { @@ -7319,9 +7240,9 @@ } }, "formidable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", - "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz", + "integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==" }, "forwarded": { "version": "0.1.2", @@ -7352,7 +7273,7 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "fs-access": { @@ -7391,7 +7312,7 @@ "graceful-fs": "4.1.11", "iferr": "0.1.5", "imurmurhash": "0.1.4", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "fs.realpath": { @@ -8440,7 +8361,7 @@ "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", "requires": { - "rc": "1.2.5" + "rc": "1.2.6" } }, "get-res": { @@ -8473,7 +8394,7 @@ "extend": "3.0.1", "file-uri-to-path": "1.0.0", "ftp": "0.3.10", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "data-uri-to-buffer": { @@ -8621,7 +8542,7 @@ "is-negated-glob": "1.0.0", "ordered-read-streams": "1.0.1", "pumpify": "1.4.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "remove-trailing-separator": "1.1.0", "to-absolute-glob": "2.0.2", "unique-stream": "2.2.1" @@ -8818,7 +8739,7 @@ "archy": "1.0.0", "array-sort": "1.0.0", "color-support": "1.1.3", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "copy-props": "2.0.1", "fancy-log": "1.3.2", "gulplog": "1.0.0", @@ -8830,7 +8751,7 @@ "pretty-hrtime": "1.0.3", "replace-homedir": "1.0.0", "semver-greatest-satisfied-range": "1.1.0", - "v8flags": "3.0.1", + "v8flags": "3.0.2", "yargs": "7.1.0" } } @@ -8862,7 +8783,7 @@ "archive-type": "3.2.0", "decompress": "3.0.0", "gulp-util": "3.0.8", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "gulp-imagemin": { @@ -8937,7 +8858,7 @@ "colors": "1.0.3", "event-stream": "3.3.4", "gulp": "3.9.1", - "nodemon": "1.15.1" + "nodemon": "1.17.2" }, "dependencies": { "chalk": { @@ -9349,7 +9270,7 @@ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "requires": { "chalk": "1.1.3", - "commander": "2.14.1", + "commander": "2.15.0", "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" }, @@ -9425,21 +9346,10 @@ "sparkles": "1.0.0" } }, - "has-own-property-x": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/has-own-property-x/-/has-own-property-x-3.2.0.tgz", - "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==", - "optional": true, - "requires": { - "cached-constructors-x": "1.0.0", - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" - } - }, "has-symbol-support-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", - "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, "has-symbols": { "version": "1.0.0", @@ -9451,7 +9361,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "1.4.2" } }, "has-unicode": { @@ -9584,9 +9494,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" }, "html-comment-regex": { "version": "1.1.1", @@ -9600,26 +9510,26 @@ "dev": true }, "html-minifier": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.9.tgz", - "integrity": "sha512-EZqO91XJwkj8BeLx9C12sKB/AHoTANaZax39vEOP9f/X/9jgJ3r1O2+neabuHqpz5kJO71TapP9JrtCY39su1A==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.11.tgz", + "integrity": "sha512-kIi9C090qWW5cGxEf+EwNUczduyVR6krk29WB3zDSWBQN6xuh/1jCXgmY4SvqzaJMOZFCnf8wcNzA8iPsfLiUQ==", "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.14.1", + "clean-css": "4.1.11", + "commander": "2.15.0", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.3.12" + "uglify-js": "3.3.15" }, "dependencies": { "uglify-js": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.12.tgz", - "integrity": "sha512-4jxrTXlV0HaXTsNILfXW0eey7Qo8qHYM6ih5ZNh45erDWU2GHmKDmekwBTskDb12h+kdd2DBvdzqVb47YzNmTA==", + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.15.tgz", + "integrity": "sha512-bqtBCAINYXX/OkdnqMGpbXr+OPWc00hsozRpk+dAtfnbdk2jjKiLmyOkQ7zamg648lVMnzATL8JrSN6LmaVpYA==", "requires": { - "commander": "2.14.1", + "commander": "2.15.0", "source-map": "0.6.1" } } @@ -9631,7 +9541,7 @@ "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", "requires": { "bluebird": "3.5.1", - "html-minifier": "3.5.9", + "html-minifier": "3.5.11", "loader-utils": "0.2.17", "lodash": "4.17.5", "pretty-error": "2.1.1", @@ -9872,7 +9782,7 @@ "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "httpntlm": { @@ -10026,7 +9936,7 @@ "integrity": "sha512-xwjBZQKpbkklHtJYnCOwRJjTRJA/nR0hQzKMh+CUZRvm/L0QwKKPJQ9tkPWQHrg+cydPu2i1vLgHuy2E0hKEkg==", "optional": true, "requires": { - "buffer-from": "0.1.1", + "buffer-from": "0.1.2", "is-svg": "2.1.0", "svgo": "1.0.5" } @@ -10134,7 +10044,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "qs": { @@ -10166,7 +10076,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -10212,12 +10122,6 @@ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, - "infinity-x": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/infinity-x/-/infinity-x-1.0.0.tgz", - "integrity": "sha512-wjy2TupBtZ+aAniKt+xs/PO0xOkuaL6wBysUKbgD7aL1PMW/qY5xXDG59zXZ7dU+gk3zwXOu4yIEWPCEFBTgHQ==", - "optional": true - }, "inflection": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", @@ -10325,9 +10229,9 @@ } }, "insert-module-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", - "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.2.tgz", + "integrity": "sha512-p3s7g96Nm62MbHRuj9ZXab0DuJNWD7qcmdUXCOQ/ZZn42DtDXfsLill7bq19lDCx3K3StypqUnuE3H2VmIJFUw==", "dev": true, "requires": { "JSONStream": "1.3.2", @@ -10429,9 +10333,9 @@ "integrity": "sha1-LtyjftaoqSi5amXa/ySMhDK6cbU=" }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { "loose-envify": "1.3.1" } @@ -10490,19 +10394,6 @@ "kind-of": "6.0.2" } }, - "is-array-buffer-x": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.7.0.tgz", - "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==", - "optional": true, - "requires": { - "attempt-x": "1.1.1", - "has-to-string-tag-x": "1.4.1", - "is-object-like-x": "1.7.0", - "object-get-own-property-descriptor-x": "3.2.0", - "to-string-tag-x": "1.4.2" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10606,14 +10497,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "is-falsey-x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-falsey-x/-/is-falsey-x-1.0.1.tgz", - "integrity": "sha512-XWNZC4A+3FX1ECoMjspuEFgSdio82IWjqY/suE0gZ10QA7nzHd/KraRq7Tc5VEHtFRgTRyTdY6W+ykPrDnyoAQ==", - "requires": { - "to-boolean-x": "1.0.1" - } - }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", @@ -10622,16 +10505,6 @@ "number-is-nan": "1.0.1" } }, - "is-finite-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-finite-x/-/is-finite-x-3.0.2.tgz", - "integrity": "sha512-HyFrxJZsgmP5RtR1PVlVvHSP4VslZOqr4uoq4x3rDrSOFaYp4R9tfmiWtAzQxPzixXhac3cYEno3NuVn0OHk2Q==", - "optional": true, - "requires": { - "infinity-x": "1.0.0", - "is-nan-x": "1.0.1" - } - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -10640,21 +10513,6 @@ "number-is-nan": "1.0.1" } }, - "is-function-x": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-3.3.0.tgz", - "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==", - "requires": { - "attempt-x": "1.1.1", - "has-to-string-tag-x": "1.4.1", - "is-falsey-x": "1.0.1", - "is-primitive": "2.0.0", - "normalize-space-x": "3.0.0", - "replace-comments-x": "2.0.0", - "to-boolean-x": "1.0.1", - "to-string-tag-x": "1.4.2" - } - }, "is-gif": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", @@ -10674,19 +10532,6 @@ "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=" }, - "is-index-x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-index-x/-/is-index-x-1.1.0.tgz", - "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==", - "optional": true, - "requires": { - "math-clamp-x": "1.2.0", - "max-safe-integer": "1.0.1", - "to-integer-x": "3.0.0", - "to-number-x": "2.0.0", - "to-string-symbols-supported-x": "1.0.0" - } - }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", @@ -10719,11 +10564,6 @@ "xtend": "4.0.1" } }, - "is-nan-x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-nan-x/-/is-nan-x-1.0.1.tgz", - "integrity": "sha512-VfNJgfuT8USqKCYQss8g7sFvCzDnL+OOVMQoXhVoulZAyp0ZTj3oyZaaPrn2dxepAkKSQI2BiKHbBabX1DqVtw==" - }, "is-natural-number": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", @@ -10734,15 +10574,6 @@ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" }, - "is-nil-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/is-nil-x/-/is-nil-x-1.4.1.tgz", - "integrity": "sha512-cfTKWI5iSR04SSCzzugTH5tS2rYG7kwI8yl/AqWkyuxZ7k55cbA47Y7Lezdg1N9aaELd+UxLg628bdQeNQ6BUw==", - "requires": { - "lodash.isnull": "3.0.0", - "validate.io-undefined": "1.0.3" - } - }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -10776,24 +10607,6 @@ "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, - "is-object-like-x": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.7.0.tgz", - "integrity": "sha512-B8Bi1F34O1LxZltWAS+V4SHcOphLD1WHRqe800h2bOfQUBE9azkkKlOQUh8OJviT5/f1ZX43k4yi8DW7OOKPxg==", - "optional": true, - "requires": { - "is-function-x": "3.3.0", - "is-primitive": "3.0.0" - }, - "dependencies": { - "is-primitive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.0.tgz", - "integrity": "sha512-Qch+MMfMdu7DMY6XElM7LUJKPmkbXdTqNhqyehVflzis2a8Zd9V6U8qZybb32uUSmlO/dNmg3fsA5t0Q9TC0mA==", - "optional": true - } - } - }, "is-odd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", @@ -10906,12 +10719,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", - "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", - "optional": true - }, "is-svg": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", @@ -11002,7 +10809,7 @@ "requires": { "abbrev": "1.0.9", "async": "1.5.2", - "istanbul-api": "1.2.2", + "istanbul-api": "1.3.1", "js-yaml": "3.7.0", "mkdirp": "0.5.1", "nopt": "3.0.6", @@ -11034,19 +10841,20 @@ } }, "istanbul-api": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.2.tgz", - "integrity": "sha512-kH5YRdqdbs5hiH4/Rr1Q0cSAGgjh3jTtg8vu9NLebBAoK3adVO4jk81J+TYOkTr2+Q4NLeb1ACvmEt65iG/Vbw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", "dev": true, "requires": { "async": "2.6.0", + "compare-versions": "3.1.0", "fileset": "2.0.3", - "istanbul-lib-coverage": "1.1.2", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.2", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.1.4", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.4", + "istanbul-lib-source-maps": "1.2.4", + "istanbul-reports": "1.3.0", "js-yaml": "3.7.0", "mkdirp": "0.5.1", "once": "1.4.0" @@ -11064,24 +10872,24 @@ } }, "istanbul-lib-coverage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz", - "integrity": "sha512-tZYA0v5A7qBSsOzcebJJ/z3lk3oSzH62puG78DbBA1+zupipX2CakDyiPV3pOb8He+jBwVimuwB0dTnh38hX0w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", + "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz", - "integrity": "sha512-nz8t4HQ2206a/3AXi+NHFWEa844DMpPsgbcUteJbt1j8LX1xg56H9rOMnhvcvVvPbW60qAIyrSk44H8ZDqaSSA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "6.26.1", @@ -11089,7 +10897,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-coverage": "1.2.0", "semver": "5.5.0" }, "dependencies": { @@ -11102,12 +10910,12 @@ } }, "istanbul-lib-report": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-coverage": "1.2.0", "mkdirp": "0.5.1", "path-parse": "1.0.5", "supports-color": "3.2.3" @@ -11131,13 +10939,13 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", + "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", "dev": true, "requires": { "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-coverage": "1.2.0", "mkdirp": "0.5.1", "rimraf": "2.6.2", "source-map": "0.5.7" @@ -11161,9 +10969,9 @@ } }, "istanbul-reports": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.4.tgz", - "integrity": "sha512-DfSTVOTkuO+kRmbO8Gk650Wqm1WRGr6lrdi2EwDK1vxpS71vdlLd613EpzOKdIFioB5f/scJTjeWBnvd1FWejg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -11378,7 +11186,7 @@ "body-parser": "1.18.2", "browserify": "14.5.0", "chokidar": "1.7.0", - "colors": "1.1.2", + "colors": "1.2.1", "combine-lists": "1.0.1", "connect": "3.6.6", "core-js": "2.5.3", @@ -11458,9 +11266,9 @@ } }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", + "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", "dev": true }, "expand-brackets": { @@ -11869,13 +11677,13 @@ "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", "dev": true, "requires": { - "colors": "1.1.2" + "colors": "1.2.1" }, "dependencies": { "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", + "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", "dev": true } } @@ -12014,12 +11822,9 @@ } }, "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "lazy-req": { "version": "1.1.0", @@ -12032,7 +11837,7 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "lcid": { @@ -12236,7 +12041,7 @@ "dev": true, "requires": { "is-stream": "1.1.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "replace-ext": { @@ -12266,7 +12071,7 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.3", + "duplexify": "3.5.4", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -12276,7 +12081,7 @@ "merge-stream": "1.0.1", "mkdirp": "0.5.1", "object-assign": "4.1.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "strip-bom": "2.0.0", "strip-bom-stream": "1.0.0", "through2": "2.0.3", @@ -12641,11 +12446,6 @@ } } }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=" - }, "lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", @@ -12674,26 +12474,11 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "lodash.isnull": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz", - "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4=" - }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -12736,11 +12521,6 @@ "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=" }, - "lodash.startswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", - "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=" - }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", @@ -13018,7 +12798,7 @@ "oauth-sign": "0.8.2", "qs": "6.2.3", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" } }, @@ -13088,9 +12868,9 @@ } }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -13248,41 +13028,16 @@ "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", "requires": { "findup-sync": "2.0.0", - "micromatch": "3.1.8", + "micromatch": "3.1.9", "resolve": "1.5.0", "stack-trace": "0.0.10" } }, - "math-clamp-x": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/math-clamp-x/-/math-clamp-x-1.2.0.tgz", - "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==", - "optional": true, - "requires": { - "to-number-x": "2.0.0" - } - }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" }, - "math-sign-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/math-sign-x/-/math-sign-x-3.0.0.tgz", - "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==", - "optional": true, - "requires": { - "is-nan-x": "1.0.1", - "to-number-x": "2.0.0" - } - }, - "max-safe-integer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/max-safe-integer/-/max-safe-integer-1.0.1.tgz", - "integrity": "sha1-84BgvixWPYwC5tSK85Ei/YO29BA=", - "optional": true - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -13332,7 +13087,7 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { "errno": "0.1.7", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "meow": { @@ -13369,7 +13124,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "method-override": { @@ -13389,9 +13144,9 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.8.tgz", - "integrity": "sha512-/XeuOQqYg+B5kwjDWekXseSwGS7CzE0w9Gjo4Cjkf/uFitNh47NrZHAY2vp/oS2YQVfebPIdbEIvgdy+kIcAog==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -13404,8 +13159,8 @@ "nanomatch": "1.2.9", "object.pick": "1.3.0", "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "miller-rabin": { @@ -13685,7 +13440,7 @@ "duplexer2": "0.1.4", "inherits": "2.0.3", "parents": "1.0.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "resolve": "1.5.0", "stream-combiner2": "1.1.1", "subarg": "1.0.0", @@ -13748,16 +13503,99 @@ } }, "mongodb": { - "version": "2.2.34", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.34.tgz", - "integrity": "sha1-o09Zu+thdUrsQy3nLD/iFSakTBo=", - "dev": true, + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.4.tgz", + "integrity": "sha512-90YIIs7A4ko4kCGafxxXj3foexCAlJBC0YLwwIKgSLoE7Vni2IqUMz6HSsZ3zbXOfR1KWtxfnc0RyAMAY/ViLg==", "requires": { - "es6-promise": "3.2.1", - "mongodb-core": "2.1.18", - "readable-stream": "2.2.7" + "mongodb-core": "3.0.4" + } + }, + "mongodb-core": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.4.tgz", + "integrity": "sha512-OTH267FjfwBdEufSnrgd+u8HuLWRuQ6p8DR0XirPl2BdlLEMh4XwjJf1RTlruILp5p2m1w8dDC8rCxibC3W8qQ==", + "requires": { + "bson": "1.0.6", + "require_optional": "1.0.1" + } + }, + "mongoose": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.10.tgz", + "integrity": "sha512-vBfFP6hOHBdsWogc84cLofclWVAiu0+q0/oLxL/y61RUpW4K3BIGH2QhI+7lPBrGpGS1Yk/KfnumndWQI7wZiA==", + "requires": { + "async": "2.1.4", + "bson": "1.0.6", + "kareem": "2.0.5", + "lodash.get": "4.4.2", + "mongodb": "3.0.4", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.3.0", + "mquery": "3.0.0", + "ms": "2.0.0", + "regexp-clone": "0.0.1", + "sliced": "1.0.1" }, "dependencies": { + "async": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", + "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", + "requires": { + "lodash": "4.17.5" + } + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, + "monk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/monk/-/monk-6.0.5.tgz", + "integrity": "sha512-NEygZ2fhRkPE9zxyOT/GhEYKIGClMCQ+StsTruZSlAWf1aRsgvdu8suVvOj3KWfdiOtsIMs9gg8eyyVHPNWRwg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "mongodb": "2.2.35", + "monk-middleware-cast-ids": "0.2.1", + "monk-middleware-fields": "0.2.0", + "monk-middleware-handle-callback": "0.2.2", + "monk-middleware-options": "0.2.1", + "monk-middleware-query": "0.2.0", + "monk-middleware-wait-for-connection": "0.2.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", + "dev": true + }, + "mongodb": { + "version": "2.2.35", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.35.tgz", + "integrity": "sha512-3HGLucDg/8EeYMin3k+nFWChTA85hcYDCw1lPsWR6yV9A6RgKb24BkLiZ9ySZR+S0nfBjWoIUS7cyV6ceGx5Gg==", + "dev": true, + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.19", + "readable-stream": "2.2.7" + } + }, + "mongodb-core": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.19.tgz", + "integrity": "sha512-Jt4AtWUkpuW03kRdYGxga4O65O1UHlFfvvInslEfLlGi+zDMxbBe3J2NVmN9qPJ957Mn6Iz0UpMtV80cmxCVxw==", + "dev": true, + "requires": { + "bson": "1.0.6", + "require_optional": "1.0.1" + } + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -13781,83 +13619,6 @@ } } }, - "mongodb-core": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.18.tgz", - "integrity": "sha1-TEYTm986HwMt7ZHbSfOO7AFlkFA=", - "dev": true, - "requires": { - "bson": "1.0.4", - "require_optional": "1.0.1" - } - }, - "mongoose": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.10.tgz", - "integrity": "sha512-vBfFP6hOHBdsWogc84cLofclWVAiu0+q0/oLxL/y61RUpW4K3BIGH2QhI+7lPBrGpGS1Yk/KfnumndWQI7wZiA==", - "requires": { - "async": "2.1.4", - "bson": "1.0.4", - "kareem": "2.0.5", - "lodash.get": "4.4.2", - "mongodb": "3.0.4", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.3.0", - "mquery": "3.0.0", - "ms": "2.0.0", - "regexp-clone": "0.0.1", - "sliced": "1.0.1" - }, - "dependencies": { - "async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", - "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", - "requires": { - "lodash": "4.17.5" - } - }, - "mongodb": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.4.tgz", - "integrity": "sha512-90YIIs7A4ko4kCGafxxXj3foexCAlJBC0YLwwIKgSLoE7Vni2IqUMz6HSsZ3zbXOfR1KWtxfnc0RyAMAY/ViLg==", - "requires": { - "mongodb-core": "3.0.4" - } - }, - "mongodb-core": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.4.tgz", - "integrity": "sha512-OTH267FjfwBdEufSnrgd+u8HuLWRuQ6p8DR0XirPl2BdlLEMh4XwjJf1RTlruILp5p2m1w8dDC8rCxibC3W8qQ==", - "requires": { - "bson": "1.0.4", - "require_optional": "1.0.1" - } - } - } - }, - "mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" - }, - "monk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/monk/-/monk-6.0.5.tgz", - "integrity": "sha512-NEygZ2fhRkPE9zxyOT/GhEYKIGClMCQ+StsTruZSlAWf1aRsgvdu8suVvOj3KWfdiOtsIMs9gg8eyyVHPNWRwg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "mongodb": "2.2.34", - "monk-middleware-cast-ids": "0.2.1", - "monk-middleware-fields": "0.2.0", - "monk-middleware-handle-callback": "0.2.2", - "monk-middleware-options": "0.2.1", - "monk-middleware-query": "0.2.0", - "monk-middleware-wait-for-connection": "0.2.0", - "object-assign": "4.1.1" - } - }, "monk-middleware-cast-ids": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/monk-middleware-cast-ids/-/monk-middleware-cast-ids-0.2.1.tgz", @@ -14008,11 +13769,6 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" }, - "nan-x": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.0.tgz", - "integrity": "sha512-yw4Fhe2/UTzanQ4f0yHWkRnfTuHZFAi4GZDjXS4G+qv5BqXTqPJBbSxpa7MyyW9v4Y4ZySZQik1vcbNkhdnIOg==" - }, "nanomatch": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", @@ -14028,8 +13784,8 @@ "kind-of": "6.0.2", "object.pick": "1.3.0", "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "native-promise-only": { @@ -14186,9 +13942,9 @@ } }, "nise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.0.tgz", - "integrity": "sha512-U+Krdzhsw4losPP/Rij5UGTLQgS9gaWmXdRIbZQIQWVsUGDBo+N0m9mrY9CCEnmwssgswwydxLJUZtFfouC0gA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.1.tgz", + "integrity": "sha512-kIH3X5YCj1vvj/32zDa9KNgzvfZd51ItGbiaCbtYhpnsCedLo0tIkb9zl169a41ATzF4z7kwMLz35XXDypma3g==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -14333,7 +14089,7 @@ "qs": "6.4.0", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -14402,9 +14158,9 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "stream-browserify": "2.0.1", - "stream-http": "2.8.0", + "stream-http": "2.8.1", "string_decoder": "1.0.3", "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", @@ -14432,9 +14188,9 @@ } }, "node-loggly-bulk": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-loggly-bulk/-/node-loggly-bulk-2.2.1.tgz", - "integrity": "sha512-7kd74XsTz+sEwnGCAAAQW57zHKzM0N9LWJctv9aMyC5Sw8lTBTlNyCoBhG7dgaJdTu9+bnHQu8p1trlh9O+Kog==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/node-loggly-bulk/-/node-loggly-bulk-2.2.2.tgz", + "integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==", "requires": { "json-stringify-safe": "5.0.1", "moment": "2.21.0", @@ -14449,8 +14205,8 @@ "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.2", - "rc": "1.2.5", - "request": "2.83.0", + "rc": "1.2.6", + "request": "2.85.0", "rimraf": "2.6.2", "semver": "5.5.0", "tar": "2.2.1", @@ -14540,7 +14296,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "qs": { @@ -14549,9 +14305,9 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", @@ -14572,7 +14328,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -14601,9 +14357,9 @@ } }, "node-rdkafka": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-2.3.0.tgz", - "integrity": "sha1-Qvlwmc6Z1/so2y4QUaiyuFlHkRA=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-2.3.1.tgz", + "integrity": "sha1-HBC4XJlyQ9UKFLCcA+6PI3DfjVY=", "optional": true, "requires": { "bindings": "1.3.0", @@ -14653,7 +14409,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "which": "1.3.0" } }, @@ -14702,7 +14458,7 @@ "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3", "uuid": "3.2.1" } @@ -14776,9 +14532,9 @@ "dev": true }, "nodemon": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.15.1.tgz", - "integrity": "sha512-zWNke/X74j3ljDRCXnhURTLJaCxew31ax4azoPQyRYAoUBqNIlZGaNpMcyi/A/ylkGKWFiUzf7HHFyA/cveTcQ==", + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.2.tgz", + "integrity": "sha512-v1fVfgaZanBHP/ZOc9V72uKKIF4dcRfZV7GISNVi/w/g5pwB7nIvOK+RGULjrzhs97cwUX41cM4+dlw+bg2igw==", "requires": { "chokidar": "2.0.2", "debug": "3.1.0", @@ -14786,6 +14542,7 @@ "minimatch": "3.0.4", "pstree.remy": "1.1.0", "semver": "5.5.0", + "supports-color": "5.3.0", "touch": "3.1.0", "undefsafe": "2.0.2", "update-notifier": "2.3.0" @@ -14803,6 +14560,14 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "requires": { + "has-flag": "3.0.0" + } } } }, @@ -14851,10 +14616,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", "semver": "5.0.3", - "validate-npm-package-license": "3.0.1" + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -14870,16 +14635,6 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, - "normalize-space-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-space-x/-/normalize-space-x-3.0.0.tgz", - "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==", - "requires": { - "cached-constructors-x": "1.0.0", - "trim-x": "3.0.0", - "white-space-x": "3.0.0" - } - }, "normalize-url": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", @@ -15029,24 +14784,6 @@ } } }, - "object-get-own-property-descriptor-x": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/object-get-own-property-descriptor-x/-/object-get-own-property-descriptor-x-3.2.0.tgz", - "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==", - "optional": true, - "requires": { - "attempt-x": "1.1.1", - "has-own-property-x": "3.2.0", - "has-symbol-support-x": "1.4.1", - "is-falsey-x": "1.0.1", - "is-index-x": "1.1.0", - "is-primitive": "2.0.0", - "is-string": "1.0.4", - "property-is-enumerable-x": "1.1.0", - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" - } - }, "object-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", @@ -15362,7 +15099,7 @@ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "os-browserify": { @@ -15662,7 +15399,7 @@ "resolved": "https://registry.npmjs.org/parse-cookie-phantomjs/-/parse-cookie-phantomjs-1.2.0.tgz", "integrity": "sha1-YNS782NpHYDLK3LE+vfUDekOS9c=", "requires": { - "tough-cookie": "2.3.3" + "tough-cookie": "2.3.4" } }, "parse-data-uri": { @@ -15709,17 +15446,6 @@ } } }, - "parse-int-x": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-int-x/-/parse-int-x-2.0.0.tgz", - "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==", - "requires": { - "cached-constructors-x": "1.0.0", - "nan-x": "1.0.0", - "to-string-x": "1.4.2", - "trim-left-x": "3.0.0" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -15971,7 +15697,7 @@ "hasha": "2.2.0", "kew": "0.7.0", "progress": "1.1.8", - "request": "2.83.0", + "request": "2.85.0", "request-progress": "2.0.1", "which": "1.3.0" }, @@ -16017,11 +15743,6 @@ } } }, - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" - }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", @@ -16074,7 +15795,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "jsonfile": { @@ -16091,9 +15812,9 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", @@ -16114,7 +15835,7 @@ "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -16149,7 +15870,7 @@ }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "http://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { "pinkie": "2.0.4" @@ -16281,13 +16002,13 @@ "requires": { "chalk": "2.3.2", "source-map": "0.6.1", - "supports-color": "5.2.0" + "supports-color": "5.3.0" }, "dependencies": { "supports-color": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", - "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "requires": { "has-flag": "3.0.0" } @@ -17014,8 +16735,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000810", - "electron-to-chromium": "1.3.34" + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.37" } }, "chalk": { @@ -17992,16 +17713,6 @@ "asap": "2.0.6" } }, - "property-is-enumerable-x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/property-is-enumerable-x/-/property-is-enumerable-x-1.1.0.tgz", - "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==", - "optional": true, - "requires": { - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" - } - }, "protocolify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/protocolify/-/protocolify-2.0.0.tgz", @@ -18243,7 +17954,7 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.3", + "duplexify": "3.5.4", "inherits": "2.0.3", "pump": "2.0.1" } @@ -18423,7 +18134,7 @@ "oauth-sign": "0.8.2", "qs": "6.2.3", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" } }, @@ -18582,9 +18293,9 @@ } }, "rc": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", - "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -18605,7 +18316,7 @@ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", "requires": { "pinkie-promise": "2.0.1", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "read-cache": { @@ -18629,7 +18340,7 @@ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "read-pkg": { @@ -18671,9 +18382,9 @@ } }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -18691,7 +18402,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, @@ -18720,14 +18431,14 @@ "optional": true, "requires": { "double-ended-queue": "2.1.0-0", - "redis-commands": "1.3.1", + "redis-commands": "1.3.5", "redis-parser": "2.6.0" } }, "redis-commands": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.1.tgz", - "integrity": "sha1-gdgm9F+pyLIBH0zXoP5ZfSQdRCs=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz", + "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA==", "dev": true, "optional": true }, @@ -18827,7 +18538,7 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "requires": { - "rc": "1.2.5", + "rc": "1.2.6", "safe-buffer": "5.1.1" } }, @@ -18836,7 +18547,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "1.2.5" + "rc": "1.2.6" } }, "regjsgen": { @@ -18936,15 +18647,6 @@ "is-finite": "1.0.2" } }, - "replace-comments-x": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-comments-x/-/replace-comments-x-2.0.0.tgz", - "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==", - "requires": { - "require-coercible-to-string-x": "1.0.0", - "to-string-x": "1.4.2" - } - }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", @@ -18983,7 +18685,7 @@ "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" }, "dependencies": { @@ -19021,15 +18723,6 @@ "integrity": "sha1-7W2Lm9Y4wTMosV3YOL1mYRHdeBw=", "dev": true }, - "require-coercible-to-string-x": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.0.tgz", - "integrity": "sha512-Rpfd4sMdflPAKecdKhfAtQHlZzzle4UMUgxJ01hXtTcNWMV8w9GeZnKhEyrT73kgrflBOP1zg41amUPZGcNspA==", - "requires": { - "require-object-coercible-x": "1.4.1", - "to-string-x": "1.4.2" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -19045,14 +18738,6 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, - "require-object-coercible-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/require-object-coercible-x/-/require-object-coercible-x-1.4.1.tgz", - "integrity": "sha512-0YHa2afepsLfQvwQ1P2XvDZnGOUia5sC07ZijIRU2dnsRxnuilXWF6B2CFaKGDA9eZl39lJHrXCDsnfgroRd6Q==", - "requires": { - "is-nil-x": "1.4.1" - } - }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -19421,14 +19106,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "requires": { - "to-object-path": "0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -19568,16 +19245,16 @@ "integrity": "sha1-BcLuxXn//+FFoDCsJs/qYbmA+r4=" }, "sinon": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.5.tgz", - "integrity": "sha512-vsg06IyB4gM5ry1qq13cQQk2U5ZqbL40ygDRNklYx2kokZktakyfinPDJP00WY0WjizRg2p0yhKLuTsCRpwCUA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.6.tgz", + "integrity": "sha512-bzQag30yErCC4lJPv+C2HcmD1+3ula4JQNePZldKcagi0Exq6XDfcC2yqXVfEwtfTIq1rYGujrUIZbwHPpKjog==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", "diff": "3.2.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.0", + "nise": "1.3.1", "supports-color": "5.3.0", "type-detect": "4.0.8" }, @@ -19665,9 +19342,9 @@ } }, "snapdragon": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", - "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { "base": "0.11.2", "debug": "2.6.9", @@ -19676,7 +19353,7 @@ "map-cache": "0.2.2", "source-map": "0.5.7", "source-map-resolve": "0.5.1", - "use": "2.0.2" + "use": "3.1.0" }, "dependencies": { "define-property": { @@ -19809,7 +19486,7 @@ "engine.io": "3.1.5", "socket.io-adapter": "1.1.1", "socket.io-client": "2.0.4", - "socket.io-parser": "3.1.2" + "socket.io-parser": "3.1.3" } }, "socket.io-adapter": { @@ -19829,28 +19506,37 @@ "component-bind": "1.0.0", "component-emitter": "1.2.1", "debug": "2.6.9", - "engine.io-client": "3.1.5", + "engine.io-client": "3.1.6", "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.1.2", + "socket.io-parser": "3.1.3", "to-array": "0.1.4" } }, "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", "dev": true, "requires": { "component-emitter": "1.2.1", - "debug": "2.6.9", + "debug": "3.1.0", "has-binary2": "1.0.2", "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", @@ -19949,22 +19635,32 @@ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" }, "split": { "version": "0.3.3", @@ -20080,9 +19776,9 @@ } }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -20229,7 +19925,7 @@ "resolved": "https://registry.npmjs.org/static-module/-/static-module-1.5.0.tgz", "integrity": "sha1-J9qYg8QajNCSNvhC8MHrxu32PYY=", "requires": { - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "duplexer2": "0.0.2", "escodegen": "1.3.3", "falafel": "2.1.0", @@ -20318,7 +20014,7 @@ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", "requires": { - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "stream-browserify": { @@ -20327,7 +20023,7 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "stream-combiner": { @@ -20344,7 +20040,7 @@ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "requires": { "duplexer2": "0.1.4", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "stream-consume": { @@ -20358,13 +20054,13 @@ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" }, "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } @@ -20381,7 +20077,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "streamroller": { @@ -20393,7 +20089,7 @@ "date-format": "1.2.0", "debug": "3.1.0", "mkdirp": "0.5.1", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "debug": { @@ -20603,11 +20299,11 @@ "debug": "3.1.0", "extend": "3.0.1", "form-data": "2.3.2", - "formidable": "1.1.1", + "formidable": "1.2.0", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "debug": { @@ -20854,7 +20550,7 @@ "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" @@ -20867,7 +20563,7 @@ "requires": { "bl": "1.2.1", "end-of-stream": "1.4.1", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, @@ -20902,7 +20598,7 @@ "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.8", + "micromatch": "3.1.9", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -20935,7 +20631,7 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, @@ -21023,40 +20719,11 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, - "to-boolean-x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-boolean-x/-/to-boolean-x-1.0.1.tgz", - "integrity": "sha512-PstxY3K6hVEHnY3FITs8XBoJbt0RI1e4MLIhAL9hWa3BtVLCrb86vU5z6lEKh7uZZjiPiLqIKMmfMro1nNgtXQ==" - }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, - "to-integer-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/to-integer-x/-/to-integer-x-3.0.0.tgz", - "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==", - "optional": true, - "requires": { - "is-finite-x": "3.0.2", - "is-nan-x": "1.0.1", - "math-sign-x": "3.0.0", - "to-number-x": "2.0.0" - } - }, - "to-number-x": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-number-x/-/to-number-x-2.0.0.tgz", - "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==", - "requires": { - "cached-constructors-x": "1.0.0", - "nan-x": "1.0.0", - "parse-int-x": "2.0.0", - "to-primitive-x": "1.1.0", - "trim-x": "3.0.0" - } - }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -21075,117 +20742,15 @@ } } }, - "to-object-x": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/to-object-x/-/to-object-x-1.5.0.tgz", - "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==", - "requires": { - "cached-constructors-x": "1.0.0", - "require-object-coercible-x": "1.4.1" - } - }, - "to-primitive-x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/to-primitive-x/-/to-primitive-x-1.1.0.tgz", - "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==", - "requires": { - "has-symbol-support-x": "1.4.1", - "is-date-object": "1.0.1", - "is-function-x": "3.3.0", - "is-nil-x": "1.4.1", - "is-primitive": "2.0.0", - "is-symbol": "1.0.1", - "require-object-coercible-x": "1.4.1", - "validate.io-undefined": "1.0.3" - } - }, - "to-property-key-x": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-property-key-x/-/to-property-key-x-2.0.2.tgz", - "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==", - "requires": { - "has-symbol-support-x": "1.4.1", - "to-primitive-x": "1.1.0", - "to-string-x": "1.4.2" - } - }, "to-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", - "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -21197,34 +20762,6 @@ "repeat-string": "1.6.1" } }, - "to-string-symbols-supported-x": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.0.tgz", - "integrity": "sha512-HbVH673pybrUmhzESGHUm17BBJvqb7BU8HciOvuEYm9ipuDyjmddhvkVqpVW6sM/C5/zhJo17n7O7I/24loJIQ==", - "optional": true, - "requires": { - "cached-constructors-x": "1.0.0", - "has-symbol-support-x": "1.4.1", - "is-symbol": "1.0.1" - } - }, - "to-string-tag-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.4.2.tgz", - "integrity": "sha512-ytO9eLigxsQQLGuab0C1iSSTzKdJNVSlBg0Spg4J/rGAVrQJ5y774mo0SSzgGeTT4RJGGyJNfObXaTMzX0XDOQ==", - "requires": { - "lodash.isnull": "3.0.0", - "validate.io-undefined": "1.0.3" - } - }, - "to-string-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/to-string-x/-/to-string-x-1.4.2.tgz", - "integrity": "sha512-/WP5arlwtCpAAexCCHiQBW0eXwse84osWyP1Qtaz71nsYSuUpOkT6tBm8nQ4IIUfSh5hji0hDupUCD2xbbOL6A==", - "requires": { - "is-symbol": "1.0.1" - } - }, "to-through": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", @@ -21262,23 +20799,13 @@ } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } }, - "trim-left-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-3.0.0.tgz", - "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==", - "requires": { - "cached-constructors-x": "1.0.0", - "require-coercible-to-string-x": "1.0.0", - "white-space-x": "3.0.0" - } - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -21297,25 +20824,6 @@ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, - "trim-right-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-right-x/-/trim-right-x-3.0.0.tgz", - "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==", - "requires": { - "cached-constructors-x": "1.0.0", - "require-coercible-to-string-x": "1.0.0", - "white-space-x": "3.0.0" - } - }, - "trim-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-3.0.0.tgz", - "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==", - "requires": { - "trim-left-x": "3.0.0", - "trim-right-x": "3.0.0" - } - }, "true-case-path": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", @@ -21488,9 +20996,9 @@ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" }, "umd": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", - "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", "dev": true }, "unc-path-regex": { @@ -21679,15 +21187,9 @@ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" }, "upath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", - "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", - "requires": { - "lodash.endswith": "4.2.1", - "lodash.isfunction": "3.0.9", - "lodash.isstring": "4.0.1", - "lodash.startswith": "4.2.1" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==" }, "update-notifier": { "version": "2.3.0", @@ -21799,74 +21301,11 @@ } }, "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "kind-of": "6.0.2" } }, "user-home": { @@ -21879,7 +21318,7 @@ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "tmp": "0.0.33" } }, @@ -21935,9 +21374,9 @@ "optional": true }, "v8flags": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz", - "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz", + "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", "requires": { "homedir-polyfill": "1.0.1" } @@ -21948,19 +21387,14 @@ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, - "validate.io-undefined": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz", - "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q=" - }, "validator": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz", @@ -22011,7 +21445,7 @@ "clone": "2.1.1", "clone-buffer": "1.0.0", "clone-stats": "1.0.0", - "cloneable-readable": "1.0.0", + "cloneable-readable": "1.1.2", "remove-trailing-separator": "1.1.0", "replace-ext": "1.0.0" }, @@ -22029,7 +21463,7 @@ "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", "requires": { "object-assign": "4.1.1", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "vinyl-buffer": { @@ -22087,7 +21521,7 @@ "lead": "1.0.0", "object.assign": "4.1.0", "pumpify": "1.4.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "remove-bom-buffer": "3.0.0", "remove-bom-stream": "1.2.0", "resolve-options": "1.1.0", @@ -22163,7 +21597,7 @@ "consolidate": "0.14.5", "hash-sum": "1.0.2", "loader-utils": "1.1.0", - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "postcss": "6.0.19", "postcss-load-config": "1.2.0", "postcss-selector-parser": "2.2.3", @@ -22274,136 +21708,13 @@ } }, "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "requires": { - "lodash": "4.17.5" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" } }, "wcwidth": { @@ -22419,9 +21730,9 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "acorn-dynamic-import": "2.0.2", - "ajv": "6.1.1", + "ajv": "6.2.1", "ajv-keywords": "3.1.0", "async": "2.6.0", "enhanced-resolve": "3.4.1", @@ -22438,17 +21749,17 @@ "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", + "watchpack": "1.5.0", "webpack-sources": "1.1.0", "yargs": "8.0.2" }, "dependencies": { "ajv": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.1.1.tgz", - "integrity": "sha1-l41Zf7wrfQ5aXD3esUmmgvKr+g4=", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", "requires": { - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -22610,10 +21921,10 @@ "integrity": "sha512-VKUVkVMc6TWVXmF1OxsBXoiRjYiDRA4XT0KqtbLMDK+891VX7FCuklYwzldND8J2upUcHHnuXYNTP+4mSFi4Kg==", "dev": true, "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "bfj-node4": "5.2.1", "chalk": "2.3.2", - "commander": "2.14.1", + "commander": "2.15.0", "ejs": "2.5.7", "express": "4.16.3", "filesize": "3.6.0", @@ -22731,11 +22042,6 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, - "white-space-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-3.0.0.tgz", - "integrity": "sha512-nMPVXGMdi/jQepXKryxqzEh/vCwdOYY/u6NZy40glMHvZfEr7/+vQKnDhEq4rZ1nniOFq9GWohQYB30uW/5Olg==" - }, "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", @@ -22811,7 +22117,7 @@ "resolved": "https://registry.npmjs.org/winston-loggly-bulk/-/winston-loggly-bulk-2.0.2.tgz", "integrity": "sha512-Rj5ivuPcaedHziIDJcllYdH7Tqjo3rUtqTiLSDE0s75rOJcVPwKTS9zZK1ZWaPPhMHOcocLYuHqUjAK3SHcU4g==", "requires": { - "node-loggly-bulk": "2.2.1", + "node-loggly-bulk": "2.2.2", "winston": "2.4.1" } }, diff --git a/package.json b/package.json index a502aed892..20e11cfd09 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "babel-loader": "^7.1.4", "babel-plugin-syntax-async-functions": "^6.13.0", "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-async-to-module-method": "^6.8.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", "babel-plugin-transform-object-rest-spread": "^6.16.0", "babel-plugin-transform-regenerator": "^6.16.1", "babel-polyfill": "^6.6.1", @@ -26,7 +26,6 @@ "babel-register": "^6.6.0", "babel-runtime": "^6.11.6", "bcrypt": "^1.0.2", - "bluebird": "^3.3.5", "body-parser": "^1.15.0", "bootstrap": "^4.0.0", "bootstrap-vue": "^2.0.0-rc.2", @@ -113,8 +112,8 @@ }, "private": true, "engines": { - "node": "^6.9.1", - "npm": "^5.0.0" + "node": "^8.9.4", + "npm": "^5.6.0" }, "scripts": { "lint": "eslint --ext .js,.vue .", @@ -141,6 +140,7 @@ "apidoc": "gulp apidoc" }, "devDependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", "babel-plugin-istanbul": "^4.1.6", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", diff --git a/scripts/paypalBillingSetup.js b/scripts/paypalBillingSetup.js index b941254420..72bec34d61 100644 --- a/scripts/paypalBillingSetup.js +++ b/scripts/paypalBillingSetup.js @@ -1,5 +1,4 @@ require('babel-register'); -require('babel-polyfill'); // This file is used for creating paypal billing plans. PayPal doesn't have a web interface for setting up recurring // payment plan definitions, instead you have to create it via their REST SDK and keep it updated the same way. So this diff --git a/test/api/v3/integration/dataexport/GET-export_userdata.xml.test.js b/test/api/v3/integration/dataexport/GET-export_userdata.xml.test.js index 19d25764a5..001748baca 100644 --- a/test/api/v3/integration/dataexport/GET-export_userdata.xml.test.js +++ b/test/api/v3/integration/dataexport/GET-export_userdata.xml.test.js @@ -2,9 +2,9 @@ import { generateUser, } from '../../../../helpers/api-v3-integration.helper'; import xml2js from 'xml2js'; -import Bluebird from 'bluebird'; +import util from 'util'; -let parseStringAsync = Bluebird.promisify(xml2js.parseString, {context: xml2js}); +let parseStringAsync = util.promisify(xml2js.parseString).bind(xml2js); describe('GET /export/userdata.xml', () => { // TODO disabled because it randomly causes the build to fail diff --git a/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js b/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js index 9faa405054..ba030e09ab 100644 --- a/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js @@ -2,8 +2,8 @@ import { createAndPopulateGroup, translate as t, generateUser, + sleep, } from '../../../../helpers/api-v3-integration.helper'; -import Bluebird from 'bluebird'; describe('POST /groups/:groupId/quests/accept', () => { const PET_QUEST = 'whale'; @@ -140,7 +140,7 @@ describe('POST /groups/:groupId/quests/accept', () => { // quest will start after everyone has accepted await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`); - await Bluebird.delay(500); + await sleep(0.5); await rejectingMember.sync(); diff --git a/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js b/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js index bcbf6a6cf1..2c5dee2ef3 100644 --- a/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js @@ -2,8 +2,8 @@ import { createAndPopulateGroup, translate as t, generateUser, + sleep, } from '../../../../helpers/api-v3-integration.helper'; -import Bluebird from 'bluebird'; describe('POST /groups/:groupId/quests/force-start', () => { const PET_QUEST = 'whale'; @@ -135,7 +135,7 @@ describe('POST /groups/:groupId/quests/force-start', () => { await leader.post(`/groups/${questingGroup._id}/quests/force-start`); - await Bluebird.delay(500); + await sleep(0.5); await Promise.all([ partyMemberThatRejects.sync(), @@ -161,7 +161,7 @@ describe('POST /groups/:groupId/quests/force-start', () => { await leader.post(`/groups/${questingGroup._id}/quests/force-start`); - await Bluebird.delay(500); + await sleep(0.5); await questingGroup.sync(); @@ -184,7 +184,7 @@ describe('POST /groups/:groupId/quests/force-start', () => { await leader.post(`/groups/${questingGroup._id}/quests/force-start`); - await Bluebird.delay(500); + await sleep(0.5); await questingGroup.sync(); @@ -201,7 +201,7 @@ describe('POST /groups/:groupId/quests/force-start', () => { await leader.post(`/groups/${questingGroup._id}/quests/force-start`); - await Bluebird.delay(500); + await sleep(0.5); await questingGroup.sync(); @@ -222,7 +222,7 @@ describe('POST /groups/:groupId/quests/force-start', () => { await leader.post(`/groups/${questingGroup._id}/quests/force-start`); - await Bluebird.delay(500); + await sleep(0.5); await questingGroup.sync(); diff --git a/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js b/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js index aacec2598b..471946489b 100644 --- a/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js @@ -2,9 +2,9 @@ import { createAndPopulateGroup, translate as t, generateUser, + sleep, } from '../../../../helpers/api-v3-integration.helper'; import { v4 as generateUUID } from 'uuid'; -import Bluebird from 'bluebird'; describe('POST /groups/:groupId/quests/reject', () => { let questingGroup; @@ -168,7 +168,7 @@ describe('POST /groups/:groupId/quests/reject', () => { // quest will start after everyone has accepted or rejected await rejectingMember.post(`/groups/${questingGroup._id}/quests/reject`); - await Bluebird.delay(500); + await sleep(0.5); await questingGroup.sync(); diff --git a/test/api/v3/integration/shops/GET-shops_market.test.js b/test/api/v3/integration/shops/GET-shops_market.test.js index 04a19f8479..8c9c941fcc 100644 --- a/test/api/v3/integration/shops/GET-shops_market.test.js +++ b/test/api/v3/integration/shops/GET-shops_market.test.js @@ -2,7 +2,6 @@ import { generateUser, translate as t, } from '../../../../helpers/api-integration/v3'; -import Bluebird from 'bluebird'; describe('GET /shops/market', () => { let user; @@ -42,13 +41,13 @@ describe('GET /shops/market', () => { return array; }, []); - let results = await Bluebird.each(items, (item) => { + let results = await Promise.all(items.map((item) => { let { purchaseType, key } = item; return user.post(`/user/purchase/${purchaseType}/${key}`); - }); + })); expect(results.length).to.be.greaterThan(0); - results.forEach((item) => { + items.forEach((item) => { expect(item).to.include.keys('key', 'text', 'notes', 'class', 'value', 'currency'); }); }); diff --git a/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js b/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js index e02e6dd2fe..66c868a62e 100644 --- a/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js +++ b/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js @@ -2,8 +2,8 @@ import { generateUser, generateGroup, generateChallenge, + sleep, } from '../../../../../helpers/api-integration/v3'; -import Bluebird from 'bluebird'; import { find } from 'lodash'; describe('POST /tasks/:id/score/:direction', () => { @@ -27,7 +27,7 @@ describe('POST /tasks/:id/score/:direction', () => { text: 'test habit', type: 'habit', }); - await Bluebird.delay(1000); + await sleep(1); let updatedUser = await user.get('/user'); usersChallengeTaskId = updatedUser.tasksOrder.habits[0]; }); @@ -65,7 +65,7 @@ describe('POST /tasks/:id/score/:direction', () => { text: 'test daily', type: 'daily', }); - await Bluebird.delay(1000); + await sleep(1); let updatedUser = await user.get('/user'); usersChallengeTaskId = updatedUser.tasksOrder.dailys[0]; }); @@ -109,7 +109,7 @@ describe('POST /tasks/:id/score/:direction', () => { text: 'test todo', type: 'todo', }); - await Bluebird.delay(1000); + await sleep(1); let updatedUser = await user.get('/user'); usersChallengeTaskId = updatedUser.tasksOrder.todos[0]; }); @@ -134,7 +134,7 @@ describe('POST /tasks/:id/score/:direction', () => { text: 'test reward', type: 'reward', }); - await Bluebird.delay(1000); + await sleep(1); let updatedUser = await user.get('/user'); usersChallengeTaskId = updatedUser.tasksOrder.todos[0]; }); diff --git a/test/api/v3/integration/user/DELETE-user.test.js b/test/api/v3/integration/user/DELETE-user.test.js index d11fa679ae..ea9b79f92a 100644 --- a/test/api/v3/integration/user/DELETE-user.test.js +++ b/test/api/v3/integration/user/DELETE-user.test.js @@ -11,7 +11,6 @@ import { each, map, } from 'lodash'; -import Bluebird from 'bluebird'; import { sha1MakeSalt, sha1Encrypt as sha1EncryptPassword, @@ -104,7 +103,7 @@ describe('DELETE /user', () => { password, }); - await Bluebird.all(map(ids, id => { + await Promise.all(map(ids, id => { return expect(checkExistence('tasks', id)).to.eventually.eql(false); })); }); diff --git a/test/api/v3/unit/libs/cron.test.js b/test/api/v3/unit/libs/cron.test.js index 76990aa20a..3699a3d54a 100644 --- a/test/api/v3/unit/libs/cron.test.js +++ b/test/api/v3/unit/libs/cron.test.js @@ -1,7 +1,6 @@ /* eslint-disable global-require */ import moment from 'moment'; import nconf from 'nconf'; -import Bluebird from 'bluebird'; import requireAgain from 'require-again'; import { recoverCron, cron } from '../../../../../website/server/libs/cron'; import { model as User } from '../../../../../website/server/models/user'; @@ -1363,7 +1362,7 @@ describe('recoverCron', () => { }); it('throws an error if user cannot be found', async () => { - execStub.returns(Bluebird.resolve(null)); + execStub.returns(Promise.resolve(null)); try { await recoverCron(status, locals); @@ -1374,8 +1373,8 @@ describe('recoverCron', () => { }); it('increases status.times count and reruns up to 4 times', async () => { - execStub.returns(Bluebird.resolve({_cronSignature: 'RUNNING_CRON'})); - execStub.onCall(4).returns(Bluebird.resolve({_cronSignature: 'NOT_RUNNING'})); + execStub.returns(Promise.resolve({_cronSignature: 'RUNNING_CRON'})); + execStub.onCall(4).returns(Promise.resolve({_cronSignature: 'NOT_RUNNING'})); await recoverCron(status, locals); @@ -1384,7 +1383,7 @@ describe('recoverCron', () => { }); it('throws an error if recoverCron runs 5 times', async () => { - execStub.returns(Bluebird.resolve({_cronSignature: 'RUNNING_CRON'})); + execStub.returns(Promise.resolve({_cronSignature: 'RUNNING_CRON'})); try { await recoverCron(status, locals); diff --git a/test/api/v3/unit/middlewares/language.test.js b/test/api/v3/unit/middlewares/language.test.js index 18caad8527..5a1136bd0c 100644 --- a/test/api/v3/unit/middlewares/language.test.js +++ b/test/api/v3/unit/middlewares/language.test.js @@ -8,7 +8,6 @@ import { attachTranslateFunction, } from '../../../../../website/server/middlewares/language'; import common from '../../../../../website/common'; -import Bluebird from 'bluebird'; import { model as User } from '../../../../../website/server/models/user'; const i18n = common.i18n; @@ -162,7 +161,7 @@ describe('language middleware', () => { return this; }, exec () { - return Bluebird.resolve({ + return Promise.resolve({ preferences: { language: 'it', }, diff --git a/test/api/v3/unit/models/user.test.js b/test/api/v3/unit/models/user.test.js index 14959bd823..00ea3f5607 100644 --- a/test/api/v3/unit/models/user.test.js +++ b/test/api/v3/unit/models/user.test.js @@ -1,4 +1,3 @@ -import Bluebird from 'bluebird'; import moment from 'moment'; import { model as User } from '../../../../../website/server/models/user'; import { model as Group } from '../../../../../website/server/models/group'; @@ -123,7 +122,7 @@ describe('User Model', () => { it('adds notifications without data for all given users via static method', async () => { let user = new User(); let otherUser = new User(); - await Bluebird.all([user.save(), otherUser.save()]); + await Promise.all([user.save(), otherUser.save()]); await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON'); @@ -149,7 +148,7 @@ describe('User Model', () => { it('adds notifications with data and seen status for all given users via static method', async () => { let user = new User(); let otherUser = new User(); - await Bluebird.all([user.save(), otherUser.save()]); + await Promise.all([user.save(), otherUser.save()]); await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON', {field: 1}, true); diff --git a/test/helpers/api-integration/v3/object-generators.js b/test/helpers/api-integration/v3/object-generators.js index 8322ae1098..dd8c4ef3fe 100644 --- a/test/helpers/api-integration/v3/object-generators.js +++ b/test/helpers/api-integration/v3/object-generators.js @@ -1,7 +1,6 @@ import { times, } from 'lodash'; -import Bluebird from 'bluebird'; import { v4 as generateUUID } from 'uuid'; import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes'; import { requester } from '../requester'; @@ -106,7 +105,7 @@ export async function createAndPopulateGroup (settings = {}) { guild: { guilds: [group._id] }, }; - let members = await Bluebird.all( + let members = await Promise.all( times(numberOfMembers, () => { return generateUser(groupMembershipTypes[group.type]); }) @@ -114,7 +113,7 @@ export async function createAndPopulateGroup (settings = {}) { await group.update({ memberCount: numberOfMembers + 1}); - let invitees = await Bluebird.all( + let invitees = await Promise.all( times(numberOfInvites, () => { return generateUser(); }) @@ -126,9 +125,9 @@ export async function createAndPopulateGroup (settings = {}) { }); }); - await Bluebird.all(invitationPromises); + await Promise.all(invitationPromises); - await Bluebird.map(invitees, (invitee) => invitee.sync()); + await Promise.all(invitees.map((invitee) => invitee.sync())); return { groupLeader, diff --git a/test/helpers/globals.helper.js b/test/helpers/globals.helper.js index 16b4e97558..b34b589ed1 100644 --- a/test/helpers/globals.helper.js +++ b/test/helpers/globals.helper.js @@ -2,8 +2,6 @@ /* eslint-disable global-require */ /* eslint-disable no-process-env */ -import Bluebird from 'bluebird'; - //------------------------------ // Global modules //------------------------------ @@ -16,7 +14,6 @@ global.sinon = require('sinon'); let sinonStubPromise = require('sinon-stub-promise'); sinonStubPromise(global.sinon); global.sandbox = sinon.sandbox.create(); -global.Promise = Bluebird; import setupNconf from '../../website/server/libs/setupNconf'; setupNconf('./config.json.example'); diff --git a/test/helpers/sleep.js b/test/helpers/sleep.js index a33970dfa2..74acac27a9 100644 --- a/test/helpers/sleep.js +++ b/test/helpers/sleep.js @@ -1,7 +1 @@ -export async function sleep (seconds = 1) { - let milliseconds = seconds * 1000; - - return new Promise((resolve) => { - setTimeout(resolve, milliseconds); - }); -} +export { default as sleep } from '../../website/server/libs/sleep'; \ No newline at end of file diff --git a/test/helpers/start-server.js b/test/helpers/start-server.js index 7e0ea3c00a..49383b55e9 100644 --- a/test/helpers/start-server.js +++ b/test/helpers/start-server.js @@ -1,13 +1,11 @@ /* eslint-disable no-process-env */ import nconf from 'nconf'; import mongoose from 'mongoose'; -import Bluebird from 'bluebird'; import setupNconf from '../../website/server/libs/setupNconf'; if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose setupNconf('./config.json'); // Use Q promises instead of mpromise in mongoose - mongoose.Promise = Bluebird; mongoose.connect(nconf.get('TEST_DB_URI')); } else { // When running tests and the server in the same process setupNconf('./config.json.example'); diff --git a/test/mocha.opts b/test/mocha.opts index 63c3988a56..28345d5049 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -3,7 +3,6 @@ --timeout 8000 --check-leaks --globals io --r babel-polyfill --require babel-register --require ./test/helpers/globals.helper --exit diff --git a/vagrant_scripts/install_node.sh b/vagrant_scripts/install_node.sh index 5ef143d1a4..e27fa26e8d 100755 --- a/vagrant_scripts/install_node.sh +++ b/vagrant_scripts/install_node.sh @@ -11,12 +11,12 @@ source /home/vagrant/.profile echo Setting up node... cd /vagrant -nvm install -nvm use +nvm install 8 +nvm use 8 nvm alias default current echo Update npm... -npm install -g npm@4 +npm install -g npm@5 echo Installing global modules... npm install -g gulp mocha node-pre-gyp diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index 326a66d5e4..2b9aacdcc9 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -16,7 +16,6 @@ import { NotAuthorized, } from '../../libs/errors'; import * as Tasks from '../../models/task'; -import Bluebird from 'bluebird'; import csvStringify from '../../libs/csvStringify'; import { createTasks, @@ -254,7 +253,7 @@ api.joinChallenge = { addUserJoinChallengeNotification(user); // Add all challenge's tasks to user's tasks and save the challenge - let results = await Bluebird.all([challenge.syncToUser(user), challenge.save()]); + let results = await Promise.all([challenge.syncToUser(user), challenge.save()]); let response = results[1].toJSON(); response.group = getChallengeGroupResponse(group); @@ -306,7 +305,7 @@ api.leaveChallenge = { if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound')); // Unlink challenge's tasks from user's tasks and save the challenge - await Bluebird.all([challenge.unlinkTasks(user, keep), challenge.save()]); + await Promise.all([challenge.unlinkTasks(user, keep), challenge.save()]); res.analytics.track('challenge leave', { uuid: user._id, @@ -364,8 +363,8 @@ api.getUserChallenges = { let resChals = challenges.map(challenge => challenge.toJSON()); // Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833 - await Bluebird.all(resChals.map((chal, index) => { - return Bluebird.all([ + await Promise.all(resChals.map((chal, index) => { + return Promise.all([ User.findById(chal.leader).select(nameFields).exec(), Group.findById(chal.group).select(basicGroupFields).exec(), ]).then(populatedData => { @@ -419,7 +418,7 @@ api.getGroupChallenges = { let resChals = challenges.map(challenge => challenge.toJSON()); // Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833 - await Bluebird.all(resChals.map((chal, index) => { + await Promise.all(resChals.map((chal, index) => { return User .findById(chal.leader) .select(nameFields) @@ -511,7 +510,7 @@ api.exportChallengeCsv = { // In v2 this used the aggregation framework to run some computation on MongoDB but then iterated through all // results on the server so the perf difference isn't that big (hopefully) - let [members, tasks] = await Bluebird.all([ + let [members, tasks] = await Promise.all([ User.find({challenges: challengeId}) .select(nameFields) .sort({_id: 1}) diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index fba5277d49..de48a80c47 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -14,7 +14,6 @@ import pusher from '../../libs/pusher'; import { getAuthorEmailFromMessage } from '../../libs/chat'; import { chatReporterFactory } from '../../libs/chatReporting/chatReporterFactory'; import nconf from 'nconf'; -import Bluebird from 'bluebird'; import bannedWords from '../../libs/bannedWords'; import guildsAllowingBannedWords from '../../libs/guildsAllowingBannedWords'; import { getMatchesByWordArray } from '../../libs/stringUtils'; @@ -184,7 +183,7 @@ api.postChat = { toSave.push(user.save()); } - let [savedGroup] = await Bluebird.all(toSave); + let [savedGroup] = await Promise.all(toSave); // realtime chat is only enabled for private groups (for now only for parties) if (savedGroup.privacy === 'private' && savedGroup.type === 'party') { diff --git a/website/server/controllers/api-v3/content.js b/website/server/controllers/api-v3/content.js index 05a7e800bc..ed1ede77e2 100644 --- a/website/server/controllers/api-v3/content.js +++ b/website/server/controllers/api-v3/content.js @@ -1,17 +1,17 @@ import common from '../../../common'; import _ from 'lodash'; import { langCodes } from '../../libs/i18n'; -import Bluebird from 'bluebird'; import fsCallback from 'fs'; import path from 'path'; import logger from '../../libs/logger'; +import util from 'util'; // Transform fs methods that accept callbacks in ones that return promises const fs = { - readFile: Bluebird.promisify(fsCallback.readFile, {context: fsCallback}), - writeFile: Bluebird.promisify(fsCallback.writeFile, {context: fsCallback}), - stat: Bluebird.promisify(fsCallback.stat, {context: fsCallback}), - mkdir: Bluebird.promisify(fsCallback.mkdir, {context: fsCallback}), + readFile: util.promisify(fsCallback.readFile).bind(fsCallback), + writeFile: util.promisify(fsCallback.writeFile).bind(fsCallback), + stat: util.promisify(fsCallback.stat).bind(fsCallback), + mkdir: util.promisify(fsCallback.mkdir).bind(fsCallback), }; let api = {}; diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index 67512a51bb..3a5bf907e2 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -1,5 +1,4 @@ import { authWithHeaders } from '../../middlewares/auth'; -import Bluebird from 'bluebird'; import _ from 'lodash'; import nconf from 'nconf'; import { @@ -137,7 +136,7 @@ api.createGroup = { user.party._id = group._id; } - let results = await Bluebird.all([user.save(), group.save()]); + let results = await Promise.all([user.save(), group.save()]); let savedGroup = results[1]; // Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833 @@ -194,7 +193,7 @@ api.createGroupPlan = { group.leader = user._id; user.guilds.push(group._id); - let results = await Bluebird.all([user.save(), group.save()]); + let results = await Promise.all([user.save(), group.save()]); let savedGroup = results[1]; // Analytics @@ -617,7 +616,7 @@ api.joinGroup = { } } - promises = await Bluebird.all(promises); + promises = await Promise.all(promises); let response = Group.toJSONCleanChat(promises[0], user); let leader = await User.findById(response.leader).select(nameFields).exec(); @@ -915,7 +914,7 @@ api.removeGroupMember = { let message = req.query.message || req.body.message; _sendMessageToRemoved(group, member, message, isInGroup); - await Bluebird.all([ + await Promise.all([ member.save(), group.save(), ]); @@ -1167,7 +1166,7 @@ api.inviteToGroup = { if (uuids) { let uuidInvites = uuids.map((uuid) => _inviteByUUID(uuid, group, user, req, res)); - let uuidResults = await Bluebird.all(uuidInvites); + let uuidResults = await Promise.all(uuidInvites); results.push(...uuidResults); } @@ -1175,7 +1174,7 @@ api.inviteToGroup = { let emailInvites = emails.map((invite) => _inviteByEmail(invite, group, user, req, res)); user.invitesSent += emails.length; await user.save(); - let emailResults = await Bluebird.all(emailInvites); + let emailResults = await Promise.all(emailInvites); results.push(...emailResults); } diff --git a/website/server/controllers/api-v3/members.js b/website/server/controllers/api-v3/members.js index 279f759ee7..61e0e3ec19 100644 --- a/website/server/controllers/api-v3/members.js +++ b/website/server/controllers/api-v3/members.js @@ -18,7 +18,6 @@ import { getUserInfo, sendTxn as sendTxnEmail, } from '../../libs/email'; -import Bluebird from 'bluebird'; import { sendNotification as sendPushNotification } from '../../libs/pushNotifications'; import { achievements } from '../../../../website/common/'; @@ -552,7 +551,7 @@ api.transferGems = { receiver.balance += amount; sender.balance -= amount; let promises = [receiver.save(), sender.save()]; - await Bluebird.all(promises); + await Promise.all(promises); // generate the message in both languages, so both users can understand it let receiverLang = receiver.preferences.language; diff --git a/website/server/controllers/api-v3/quests.js b/website/server/controllers/api-v3/quests.js index 792c37e124..7ae92b1b3a 100644 --- a/website/server/controllers/api-v3/quests.js +++ b/website/server/controllers/api-v3/quests.js @@ -1,5 +1,4 @@ import _ from 'lodash'; -import Bluebird from 'bluebird'; import { authWithHeaders } from '../../middlewares/auth'; import analytics from '../../libs/analyticsService'; import { @@ -109,7 +108,7 @@ api.inviteToQuest = { await group.startQuest(user); } - let [savedGroup] = await Bluebird.all([ + let [savedGroup] = await Promise.all([ group.save(), user.save(), ]); @@ -312,7 +311,7 @@ api.forceStart = { await group.startQuest(user); - let [savedGroup] = await Bluebird.all([ + let [savedGroup] = await Promise.all([ group.save(), user.save(), ]); @@ -372,7 +371,7 @@ api.cancelQuest = { group.quest = Group.cleanGroupQuest(); group.markModified('quest'); - let [savedGroup] = await Bluebird.all([ + let [savedGroup] = await Promise.all([ group.save(), User.update( {'party._id': groupId}, @@ -441,7 +440,7 @@ api.abortQuest = { group.quest = Group.cleanGroupQuest(); group.markModified('quest'); - let [groupSaved] = await Bluebird.all([group.save(), memberUpdates, questLeaderUpdate]); + let [groupSaved] = await Promise.all([group.save(), memberUpdates, questLeaderUpdate]); res.respond(200, groupSaved.quest); }, @@ -486,7 +485,7 @@ api.leaveQuest = { user.party.quest = Group.cleanQuestProgress(); user.markModified('party.quest'); - let [savedGroup] = await Bluebird.all([ + let [savedGroup] = await Promise.all([ group.save(), user.save(), ]); diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js index 8b9672afd0..348a9e6870 100644 --- a/website/server/controllers/api-v3/tasks.js +++ b/website/server/controllers/api-v3/tasks.js @@ -20,7 +20,6 @@ import { setNextDue, } from '../../libs/taskManager'; import common from '../../../common'; -import Bluebird from 'bluebird'; import _ from 'lodash'; import logger from '../../libs/logger'; import moment from 'moment'; @@ -598,7 +597,7 @@ api.scoreTask = { }); managerPromises.push(task.save()); - await Bluebird.all(managerPromises); + await Promise.all(managerPromises); throw new NotAuthorized(res.t('taskApprovalHasBeenRequested')); } @@ -647,7 +646,7 @@ api.scoreTask = { task.save(), ]; if (taskOrderPromise) promises.push(taskOrderPromise); - let results = await Bluebird.all(promises); + let results = await Promise.all(promises); let savedUser = results[0]; @@ -1132,7 +1131,7 @@ api.unlinkAllTasks = { if (!validTasks) throw new BadRequest(res.t('cantOnlyUnlinkChalTask')); if (keep === 'keep-all') { - await Bluebird.all(tasks.map(task => { + await Promise.all(tasks.map(task => { task.challenge = {}; return task.save(); })); @@ -1149,7 +1148,7 @@ api.unlinkAllTasks = { toSave.push(user.save()); - await Bluebird.all(toSave); + await Promise.all(toSave); } res.respond(200, {}); @@ -1199,7 +1198,7 @@ api.unlinkOneTask = { } else { // remove if (task.type !== 'todo' || !task.completed) { // eslint-disable-line no-lonely-if removeFromArray(user.tasksOrder[`${task.type}s`], taskId); - await Bluebird.all([user.save(), task.remove()]); + await Promise.all([user.save(), task.remove()]); } else { await task.remove(); } @@ -1317,7 +1316,7 @@ api.deleteTask = { // See https://github.com/HabitRPG/habitica/pull/9321#issuecomment-354187666 for more info if (!challenge) user._v++; - await Bluebird.all([taskOrderUpdate, task.remove()]); + await Promise.all([taskOrderUpdate, task.remove()]); } else { await task.remove(); } diff --git a/website/server/controllers/api-v3/tasks/groups.js b/website/server/controllers/api-v3/tasks/groups.js index 449a0e39b0..45eb8839da 100644 --- a/website/server/controllers/api-v3/tasks/groups.js +++ b/website/server/controllers/api-v3/tasks/groups.js @@ -1,5 +1,4 @@ import { authWithHeaders } from '../../../middlewares/auth'; -import Bluebird from 'bluebird'; import * as Tasks from '../../../models/task'; import { model as Group } from '../../../models/group'; import { model as User } from '../../../models/user'; @@ -205,7 +204,7 @@ api.assignTask = { let promises = []; promises.push(group.syncTask(task, assignedUser)); promises.push(group.save()); - await Bluebird.all(promises); + await Promise.all(promises); res.respond(200, task); }, @@ -350,7 +349,7 @@ api.approveTask = { managerPromises.push(task.save()); managerPromises.push(assignedUser.save()); - await Bluebird.all(managerPromises); + await Promise.all(managerPromises); res.respond(200, task); }, diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index ac2e82722d..1ae8a17dfb 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -9,7 +9,6 @@ import { model as Group, } from '../../models/group'; import * as Tasks from '../../models/task'; -import Bluebird from 'bluebird'; import _ from 'lodash'; import * as passwordUtils from '../../libs/password'; import { @@ -415,7 +414,7 @@ api.deleteUser = { return group.leave(user, 'remove-all'); }); - await Bluebird.all(groupLeavePromises); + await Promise.all(groupLeavePromises); await Tasks.Task.remove({ userId: user._id, @@ -1470,7 +1469,7 @@ api.userRebirth = { toSave.push(user.save()); - await Bluebird.all(toSave); + await Promise.all(toSave); res.respond(200, ...rebirthRes); }, @@ -1627,7 +1626,7 @@ api.userReroll = { let promises = tasks.map(task => task.save()); promises.push(user.save()); - await Bluebird.all(promises); + await Promise.all(promises); res.respond(200, ...rerollRes); }, @@ -1668,7 +1667,7 @@ api.userReset = { let resetRes = common.ops.reset(user, tasks); - await Bluebird.all([ + await Promise.all([ Tasks.Task.remove({_id: {$in: resetRes[0].tasksToRemove}, userId: user._id}), user.save(), ]); diff --git a/website/server/controllers/top-level/dataexport.js b/website/server/controllers/top-level/dataexport.js index 9f075b27ab..7943355bb2 100644 --- a/website/server/controllers/top-level/dataexport.js +++ b/website/server/controllers/top-level/dataexport.js @@ -11,7 +11,6 @@ import js2xml from 'js2xmlparser'; import Pageres from 'pageres'; import nconf from 'nconf'; import got from 'got'; -import Bluebird from 'bluebird'; import md from 'habitica-markdown'; import { S3, @@ -244,7 +243,7 @@ api.exportUserAvatarPng = { Body: stream, }); - let s3res = await new Bluebird((resolve, reject) => { + let s3res = await new Promise((resolve, reject) => { s3upload.send((err, s3uploadRes) => { if (err) { reject(err); diff --git a/website/server/index.js b/website/server/index.js index df9493a08f..4c952caf77 100644 --- a/website/server/index.js +++ b/website/server/index.js @@ -7,12 +7,6 @@ if (process.env.NODE_ENV !== 'production') { require('babel-register'); } -// The BabelJS polyfill is needed in production too -require('babel-polyfill'); - -// Setup Bluebird as the global promise library -global.Promise = require('bluebird'); - // Initialize configuration BEFORE anything const setupNconf = require('./libs/setupNconf'); setupNconf(); diff --git a/website/server/libs/amazonPayments.js b/website/server/libs/amazonPayments.js index 75ccddcecc..c6865963ae 100644 --- a/website/server/libs/amazonPayments.js +++ b/website/server/libs/amazonPayments.js @@ -1,9 +1,9 @@ import amazonPayments from 'amazon-payments'; import nconf from 'nconf'; -import Bluebird from 'bluebird'; import moment from 'moment'; import cc from 'coupon-code'; import uuid from 'uuid'; +import util from 'util'; import common from '../../common'; import { @@ -51,15 +51,15 @@ api.constants = { PAYMENT_METHOD_GIFT: 'Amazon Payments (Gift)', }; -api.getTokenInfo = Bluebird.promisify(amzPayment.api.getTokenInfo, {context: amzPayment.api}); -api.createOrderReferenceId = Bluebird.promisify(amzPayment.offAmazonPayments.createOrderReferenceForId, {context: amzPayment.offAmazonPayments}); -api.setOrderReferenceDetails = Bluebird.promisify(amzPayment.offAmazonPayments.setOrderReferenceDetails, {context: amzPayment.offAmazonPayments}); -api.confirmOrderReference = Bluebird.promisify(amzPayment.offAmazonPayments.confirmOrderReference, {context: amzPayment.offAmazonPayments}); -api.closeOrderReference = Bluebird.promisify(amzPayment.offAmazonPayments.closeOrderReference, {context: amzPayment.offAmazonPayments}); -api.setBillingAgreementDetails = Bluebird.promisify(amzPayment.offAmazonPayments.setBillingAgreementDetails, {context: amzPayment.offAmazonPayments}); -api.getBillingAgreementDetails = Bluebird.promisify(amzPayment.offAmazonPayments.getBillingAgreementDetails, {context: amzPayment.offAmazonPayments}); -api.confirmBillingAgreement = Bluebird.promisify(amzPayment.offAmazonPayments.confirmBillingAgreement, {context: amzPayment.offAmazonPayments}); -api.closeBillingAgreement = Bluebird.promisify(amzPayment.offAmazonPayments.closeBillingAgreement, {context: amzPayment.offAmazonPayments}); +api.getTokenInfo = util.promisify(amzPayment.api.getTokenInfo).bind(amzPayment.api); +api.createOrderReferenceId = util.promisify(amzPayment.offAmazonPayments.createOrderReferenceForId).bind(amzPayment.offAmazonPayments); +api.setOrderReferenceDetails = util.promisify(amzPayment.offAmazonPayments.setOrderReferenceDetails).bind(amzPayment.offAmazonPayments); +api.confirmOrderReference = util.promisify(amzPayment.offAmazonPayments.confirmOrderReference).bind(amzPayment.offAmazonPayments); +api.closeOrderReference = util.promisify(amzPayment.offAmazonPayments.closeOrderReference).bind(amzPayment.offAmazonPayments); +api.setBillingAgreementDetails = util.promisify(amzPayment.offAmazonPayments.setBillingAgreementDetails).bind(amzPayment.offAmazonPayments); +api.getBillingAgreementDetails = util.promisify(amzPayment.offAmazonPayments.getBillingAgreementDetails).bind(amzPayment.offAmazonPayments); +api.confirmBillingAgreement = util.promisify(amzPayment.offAmazonPayments.confirmBillingAgreement).bind(amzPayment.offAmazonPayments); +api.closeBillingAgreement = util.promisify(amzPayment.offAmazonPayments.closeBillingAgreement).bind(amzPayment.offAmazonPayments); api.authorizeOnBillingAgreement = function authorizeOnBillingAgreement (inputSet) { return new Promise((resolve, reject) => { diff --git a/website/server/libs/analyticsService.js b/website/server/libs/analyticsService.js index ca2c9a154a..8a745f90e0 100644 --- a/website/server/libs/analyticsService.js +++ b/website/server/libs/analyticsService.js @@ -1,7 +1,6 @@ /* eslint-disable camelcase */ import nconf from 'nconf'; import Amplitude from 'amplitude'; -import Bluebird from 'bluebird'; import googleAnalytics from 'universal-analytics'; import useragent from 'useragent'; import { @@ -171,7 +170,7 @@ let _sendDataToAmplitude = (eventType, data) => { amplitudeData.event_type = eventType; - return new Bluebird((resolve, reject) => { + return new Promise((resolve, reject) => { amplitude.track(amplitudeData) .then(resolve) .catch(() => reject('Error while sending data to Amplitude.')); @@ -222,7 +221,7 @@ let _sendDataToGoogle = (eventType, data) => { eventData.ev = value; } - return new Bluebird((resolve, reject) => { + return new Promise((resolve, reject) => { ga.event(eventData, (err) => { if (err) return reject(err); resolve(); @@ -236,7 +235,7 @@ let _sendPurchaseDataToAmplitude = (data) => { amplitudeData.event_type = 'purchase'; amplitudeData.revenue = data.purchaseValue; - return new Bluebird((resolve, reject) => { + return new Promise((resolve, reject) => { amplitude.track(amplitudeData) .then(resolve) .catch(reject); @@ -261,7 +260,7 @@ let _sendPurchaseDataToGoogle = (data) => { ev: price, }; - return new Bluebird((resolve) => { + return new Promise((resolve) => { ga.event(eventData).send(); ga.transaction(data.uuid, price) @@ -273,14 +272,14 @@ let _sendPurchaseDataToGoogle = (data) => { }; function track (eventType, data) { - return Bluebird.all([ + return Promise.all([ _sendDataToAmplitude(eventType, data), _sendDataToGoogle(eventType, data), ]); } function trackPurchase (data) { - return Bluebird.all([ + return Promise.all([ _sendPurchaseDataToAmplitude(data), _sendPurchaseDataToGoogle(data), ]); diff --git a/website/server/libs/challenges/index.js b/website/server/libs/challenges/index.js index 84be475b87..00bcf9d8cc 100644 --- a/website/server/libs/challenges/index.js +++ b/website/server/libs/challenges/index.js @@ -1,7 +1,6 @@ // Currently this holds helpers for challenge api, but we should break this up into submodules as it expands import omit from 'lodash/omit'; import uuid from 'uuid'; -import Bluebird from 'bluebird'; import { model as Challenge } from '../../models/challenge'; import { model as Group, @@ -82,7 +81,7 @@ export async function createChallenge (user, req, res) { addUserJoinChallengeNotification(user); - let results = await Bluebird.all([challenge.save({ + let results = await Promise.all([challenge.save({ validateBeforeSave: false, // already validate }), group.save()]); let savedChal = results[0]; diff --git a/website/server/libs/cron.js b/website/server/libs/cron.js index 1e27c9ddb1..1c5855e6de 100644 --- a/website/server/libs/cron.js +++ b/website/server/libs/cron.js @@ -1,8 +1,8 @@ import moment from 'moment'; -import Bluebird from 'bluebird'; import { model as User } from '../models/user'; import common from '../../common/'; import { preenUserHistory } from '../libs/preening'; +import sleep from '../libs/sleep'; import _ from 'lodash'; import cloneDeep from 'lodash/cloneDeep'; import nconf from 'nconf'; @@ -29,7 +29,7 @@ function setIsDueNextDue (task, user, now) { export async function recoverCron (status, locals) { let {user} = locals; - await Bluebird.delay(300); + await sleep(0.3); let reloadedUser = await User.findOne({_id: user._id}).exec(); diff --git a/website/server/libs/csvStringify.js b/website/server/libs/csvStringify.js index 39fb7c16c8..8db0280d57 100644 --- a/website/server/libs/csvStringify.js +++ b/website/server/libs/csvStringify.js @@ -1,8 +1,7 @@ import csvStringify from 'csv-stringify'; -import Bluebird from 'bluebird'; module.exports = (input) => { - return new Bluebird((resolve, reject) => { + return new Promise((resolve, reject) => { csvStringify(input, (err, output) => { if (err) return reject(err); return resolve(output); diff --git a/website/server/libs/inAppPurchases.js b/website/server/libs/inAppPurchases.js index 8d0c676978..e75fbe5e5f 100644 --- a/website/server/libs/inAppPurchases.js +++ b/website/server/libs/inAppPurchases.js @@ -1,6 +1,6 @@ import nconf from 'nconf'; +import util from 'util'; import iap from 'in-app-purchase'; -import Bluebird from 'bluebird'; // Validation ERROR Codes // const INVALID_PAYLOAD = 6778001; @@ -18,8 +18,8 @@ iap.config({ }); module.exports = { - setup: Bluebird.promisify(iap.setup, { context: iap }), - validate: Bluebird.promisify(iap.validate, { context: iap }), + setup: util.promisify(iap.setup.bind(iap)), + validate: util.promisify(iap.validate.bind(iap)), isValidated: iap.isValidated, getPurchaseData: iap.getPurchaseData, GOOGLE: iap.GOOGLE, diff --git a/website/server/libs/paypalPayments.js b/website/server/libs/paypalPayments.js index 19bd2f2676..b1e4e4f217 100644 --- a/website/server/libs/paypalPayments.js +++ b/website/server/libs/paypalPayments.js @@ -1,13 +1,13 @@ /* eslint-disable camelcase */ import nconf from 'nconf'; import moment from 'moment'; +import util from 'util'; import _ from 'lodash'; import payments from './payments'; import ipn from 'paypal-ipn'; import paypal from 'paypal-rest-sdk'; import shared from '../../common'; import cc from 'coupon-code'; -import Bluebird from 'bluebird'; import { model as Coupon } from '../models/coupon'; import { model as User } from '../models/user'; import { @@ -60,14 +60,14 @@ api.constants = { // PAYMENT_METHOD_GIFT: 'Amazon Payments (Gift)', }; -api.paypalPaymentCreate = Bluebird.promisify(paypal.payment.create, {context: paypal.payment}); -api.paypalPaymentExecute = Bluebird.promisify(paypal.payment.execute, {context: paypal.payment}); -api.paypalBillingAgreementCreate = Bluebird.promisify(paypal.billingAgreement.create, {context: paypal.billingAgreement}); -api.paypalBillingAgreementExecute = Bluebird.promisify(paypal.billingAgreement.execute, {context: paypal.billingAgreement}); -api.paypalBillingAgreementGet = Bluebird.promisify(paypal.billingAgreement.get, {context: paypal.billingAgreement}); -api.paypalBillingAgreementCancel = Bluebird.promisify(paypal.billingAgreement.cancel, {context: paypal.billingAgreement}); +api.paypalPaymentCreate = util.promisify(paypal.payment.create.bind(paypal.payment)); +api.paypalPaymentExecute = util.promisify(paypal.payment.execute.bind(paypal.payment)); +api.paypalBillingAgreementCreate = util.promisify(paypal.billingAgreement.create.bind(paypal.billingAgreement)); +api.paypalBillingAgreementExecute = util.promisify(paypal.billingAgreement.execute.bind(paypal.billingAgreement)); +api.paypalBillingAgreementGet = util.promisify(paypal.billingAgreement.get.bind(paypal.billingAgreement)); +api.paypalBillingAgreementCancel = util.promisify(paypal.billingAgreement.cancel.bind(paypal.billingAgreement)); -api.ipnVerifyAsync = Bluebird.promisify(ipn.verify, {context: ipn}); +api.ipnVerifyAsync = util.promisify(ipn.verify.bind(ipn)); api.checkout = async function checkout (options = {}) { let {gift, user} = options; diff --git a/website/server/libs/pushNotifications.js b/website/server/libs/pushNotifications.js index 7e31d76660..52b0f55759 100644 --- a/website/server/libs/pushNotifications.js +++ b/website/server/libs/pushNotifications.js @@ -3,7 +3,6 @@ import nconf from 'nconf'; // @TODO remove this lib and use directly the apn module import pushNotify from 'push-notify'; import logger from './logger'; -import Bluebird from 'bluebird'; import { S3, } from './aws'; @@ -20,7 +19,7 @@ const APN_ENABLED = nconf.get('PUSH_CONFIGS:APN_ENABLED') === 'true'; const S3_BUCKET = nconf.get('S3:bucket'); if (APN_ENABLED) { - Bluebird.all([ + Promise.all([ S3.getObject({ Bucket: S3_BUCKET, Key: 'apple_apn/cert.pem', diff --git a/website/server/libs/sleep.js b/website/server/libs/sleep.js new file mode 100644 index 0000000000..2df97b91ff --- /dev/null +++ b/website/server/libs/sleep.js @@ -0,0 +1,7 @@ +export default async function (seconds = 1) { + let milliseconds = seconds * 1000; + + return new Promise((resolve) => { + setTimeout(resolve, milliseconds); + }); +} \ No newline at end of file diff --git a/website/server/libs/spells.js b/website/server/libs/spells.js index ba728e3664..61f4d83ccb 100644 --- a/website/server/libs/spells.js +++ b/website/server/libs/spells.js @@ -1,5 +1,3 @@ -import Bluebird from 'bluebird'; - import { model as User } from '../models/user'; import * as Tasks from '../models/task'; import { @@ -24,7 +22,7 @@ async function castTaskSpell (res, req, targetId, user, spell, quantity = 1) { spell.cast(user, task, req); } - const results = await Bluebird.all([ + const results = await Promise.all([ user.save(), task.save(), ]); @@ -46,7 +44,7 @@ async function castMultiTaskSpell (req, user, spell, quantity = 1) { .filter(t => t.isModified()) .map(t => t.save()); toSave.unshift(user.save()); - const saved = await Bluebird.all(toSave); + const saved = await Promise.all(toSave); const response = { tasks: saved, @@ -82,7 +80,7 @@ async function castPartySpell (req, party, partyMembers, user, spell, quantity = for (let i = 0; i < quantity; i += 1) { spell.cast(user, partyMembers, req); } - await Bluebird.all(partyMembers.map(m => m.save())); + await Promise.all(partyMembers.map(m => m.save())); return partyMembers; } @@ -107,7 +105,7 @@ async function castUserSpell (res, req, party, partyMembers, targetId, user, spe } if (partyMembers !== user) { - await Bluebird.all([ + await Promise.all([ user.save(), partyMembers.save(), ]); diff --git a/website/server/libs/taskManager.js b/website/server/libs/taskManager.js index fa3e5fa1fb..612a035881 100644 --- a/website/server/libs/taskManager.js +++ b/website/server/libs/taskManager.js @@ -3,7 +3,6 @@ import * as Tasks from '../models/task'; import { BadRequest, } from './errors'; -import Bluebird from 'bluebird'; import _ from 'lodash'; import shared from '../../common'; @@ -18,9 +17,9 @@ async function _validateTaskAlias (tasks, res) { throw new BadRequest(res.t('taskAliasAlreadyUsed')); } - await Bluebird.map(tasksWithAliases, (task) => { + await Promise.all(tasksWithAliases.map((task) => { return task.validate(); - }); + })); } export function setNextDue (task, user, dueDateOption) { @@ -137,7 +136,7 @@ export async function createTasks (req, res, options = {}) { toSave.unshift(owner.save()); - let tasks = await Bluebird.all(toSave); + let tasks = await Promise.all(toSave); tasks.splice(0, 1); // Remove user, challenge, or group promise return tasks; } diff --git a/website/server/middlewares/cron.js b/website/server/middlewares/cron.js index 0264c985de..750cf1ab8c 100644 --- a/website/server/middlewares/cron.js +++ b/website/server/middlewares/cron.js @@ -1,6 +1,5 @@ import moment from 'moment'; import * as Tasks from '../models/task'; -import Bluebird from 'bluebird'; import { model as Group } from '../models/group'; import { model as User } from '../models/user'; import { recoverCron, cron } from '../libs/cron'; @@ -99,7 +98,7 @@ async function cronAsync (req, res) { tasks.forEach(task => { if (task.isModified()) toSave.push(task.save()); }); - await Bluebird.all(toSave); + await Promise.all(toSave); await Group.processQuestProgress(user, progress); diff --git a/website/server/models/challenge.js b/website/server/models/challenge.js index b00ef33687..6d16d3b7ec 100644 --- a/website/server/models/challenge.js +++ b/website/server/models/challenge.js @@ -1,5 +1,4 @@ import mongoose from 'mongoose'; -import Bluebird from 'bluebird'; import validator from 'validator'; import baseModel from '../libs/baseModel'; import _ from 'lodash'; @@ -120,7 +119,7 @@ schema.methods.syncToUser = async function syncChallengeToUser (user) { }); } - let [challengeTasks, userTasks] = await Bluebird.all([ + let [challengeTasks, userTasks] = await Promise.all([ // Find original challenge tasks Tasks.Task.find({ userId: {$exists: false}, @@ -165,7 +164,7 @@ schema.methods.syncToUser = async function syncChallengeToUser (user) { }); toSave.push(user.save()); - return Bluebird.all(toSave); + return Promise.all(toSave); }; async function _fetchMembersIds (challengeId) { @@ -202,7 +201,7 @@ async function _addTaskFn (challenge, tasks, memberId) { // Update the user toSave.unshift(User.update({_id: memberId}, updateTasksOrderQ).exec()); - return await Bluebird.all(toSave); + return await Promise.all(toSave); } // Add a new task to challenge members @@ -210,11 +209,11 @@ schema.methods.addTasks = async function challengeAddTasks (tasks) { let challenge = this; let membersIds = await _fetchMembersIds(challenge._id); - let queue = new TaskQueue(Bluebird, 25); // process only 5 users concurrently + let queue = new TaskQueue(Promise, 25); // process only 5 users concurrently - await Bluebird.map(membersIds, queue.wrap((memberId) => { + await Promise.all(membersIds.map(queue.wrap((memberId) => { return _addTaskFn(challenge, tasks, memberId); - })); + }))); }; // Sync updated task to challenge members @@ -267,7 +266,7 @@ schema.methods.unlinkTasks = async function challengeUnlinkTasks (user, keep) { $set: {challenge: {}}, }, {multi: true}).exec(); - return Bluebird.all([user.save(), this.save()]); + return Promise.all([user.save(), this.save()]); } else { // keep = 'remove-all' let tasks = await Tasks.Task.find(findQuery).select('_id type completed').exec(); let taskPromises = tasks.map(task => { @@ -280,7 +279,7 @@ schema.methods.unlinkTasks = async function challengeUnlinkTasks (user, keep) { }); user.markModified('tasksOrder'); taskPromises.push(user.save(), this.save()); - return Bluebird.all(taskPromises); + return Promise.all(taskPromises); } }; @@ -358,7 +357,7 @@ schema.methods.closeChal = async function closeChal (broken = {}) { }, {multi: true}).exec(), ]; - Bluebird.all(backgroundTasks); + Promise.all(backgroundTasks); }; export let model = mongoose.model('Challenge', schema); diff --git a/website/server/models/group.js b/website/server/models/group.js index daa00269df..b3287153a3 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -19,7 +19,6 @@ import { } from '../libs/errors'; import baseModel from '../libs/baseModel'; import { sendTxn as sendTxnEmail } from '../libs/email'; -import Bluebird from 'bluebird'; import nconf from 'nconf'; import { sendNotification as sendPushNotification } from '../libs/pushNotifications'; import pusher from '../libs/pusher'; @@ -308,7 +307,7 @@ schema.statics.getGroups = async function getGroups (options = {}) { } }); - let groupsArray = _.reduce(await Bluebird.all(queries), (previousValue, currentValue) => { + let groupsArray = _.reduce(await Promise.all(queries), (previousValue, currentValue) => { if (_.isEmpty(currentValue)) return previousValue; // don't add anything to the results if the query returned null or an empty array return previousValue.concat(Array.isArray(currentValue) ? currentValue : [currentValue]); // otherwise concat the new results to the previousValue }, []); @@ -427,7 +426,7 @@ schema.methods.removeGroupInvitations = async function removeGroupInvitations () return user.save(); }); - return Bluebird.all(userUpdates); + return Promise.all(userUpdates); }; // Return true if user is a member of the group @@ -628,13 +627,18 @@ schema.methods.startQuest = async function startQuest (user) { // remove any users from quest.members who aren't in the party let partyId = this._id; let questMembers = this.quest.members; - await Bluebird.map(Object.keys(this.quest.members), async (memberId) => { - let member = await User.findOne({_id: memberId, 'party._id': partyId}).select('_id').lean().exec(); - - if (!member) { - delete questMembers[memberId]; - } - }); + await Promise.all(Object.keys(this.quest.members).map(memberId => { + return User.findOne({_id: memberId, 'party._id': partyId}) + .select('_id') + .lean() + .exec() + .then((member) => { + if (!member) { + delete questMembers[memberId]; + } + return; + }); + })); if (userIsParticipating) { user.party.quest.key = this.quest.key; @@ -871,7 +875,7 @@ schema.methods.finishQuest = async function finishQuest (quest) { })); } - return Bluebird.all(promises); + return Promise.all(promises); }; function _isOnQuest (user, progress, group) { @@ -1123,7 +1127,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC let challengesToRemoveUserFrom = challenges.map(chal => { return chal.unlinkTasks(user, keep); }); - await Bluebird.all(challengesToRemoveUserFrom); + await Promise.all(challengesToRemoveUserFrom); } // Unlink group tasks) @@ -1135,7 +1139,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC let assignedTasksToRemoveUserFrom = assignedTasks.map(task => { return this.unlinkTask(task, user, keep); }); - await Bluebird.all(assignedTasksToRemoveUserFrom); + await Promise.all(assignedTasksToRemoveUserFrom); let promises = []; @@ -1171,7 +1175,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC if (members.length === 0) { promises.push(group.remove()); - return await Bluebird.all(promises); + return await Promise.all(promises); } } else if (group.leader === user._id) { // otherwise If the leader is leaving (or if the leader previously left, and this wasn't accounted for) let query = group.type === 'party' ? {'party._id': group._id} : {guilds: group._id}; @@ -1193,7 +1197,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all', keepC } promises.push(group.update(update).exec()); - return await Bluebird.all(promises); + return await Promise.all(promises); }; /** @@ -1327,7 +1331,7 @@ schema.methods.syncTask = async function groupSyncTask (taskToSync, user) { if (matchingTask.tags.indexOf(group._id) === -1) matchingTask.tags.push(group._id); // add tag if missing toSave.push(matchingTask.save(), taskToSync.save(), user.save()); - return Bluebird.all(toSave); + return Promise.all(toSave); }; schema.methods.unlinkTask = async function groupUnlinkTask (unlinkingTask, user, keep) { @@ -1353,7 +1357,7 @@ schema.methods.unlinkTask = async function groupUnlinkTask (unlinkingTask, user, user.markModified('tasksOrder'); } - return Bluebird.all([task.remove(), user.save(), unlinkingTask.save()]); + return Promise.all([task.remove(), user.save(), unlinkingTask.save()]); } }; diff --git a/website/server/models/user/hooks.js b/website/server/models/user/hooks.js index d77c45cb61..0ebcfe6733 100644 --- a/website/server/models/user/hooks.js +++ b/website/server/models/user/hooks.js @@ -1,7 +1,6 @@ import common from '../../../common'; import _ from 'lodash'; import moment from 'moment'; -import Bluebird from 'bluebird'; import baseModel from '../../libs/baseModel'; import * as Tasks from '../task'; import { @@ -58,7 +57,7 @@ function _populateDefaultTasks (user, taskTypes) { // @TODO: default tasks are handled differently now, and not during registration. We should move this code let tasksToCreate = []; - if (user.registeredThrough === 'habitica-web') return Bluebird.all(tasksToCreate); + if (user.registeredThrough === 'habitica-web') return Promise.all(tasksToCreate); if (tagsI !== -1) { taskTypes = _.clone(taskTypes); @@ -89,7 +88,7 @@ function _populateDefaultTasks (user, taskTypes) { tasksToCreate.push(...tasksOfType); }); - return Bluebird.all(tasksToCreate) + return Promise.all(tasksToCreate) .then((tasksCreated) => { _.each(tasksCreated, (task) => { user.tasksOrder[`${task.type}s`].push(task._id); diff --git a/website/server/models/user/methods.js b/website/server/models/user/methods.js index fab636972d..1f8712fef2 100644 --- a/website/server/models/user/methods.js +++ b/website/server/models/user/methods.js @@ -1,7 +1,6 @@ import moment from 'moment'; import common from '../../../common'; -import Bluebird from 'bluebird'; import { chatDefaults, TAVERN_ID, @@ -132,7 +131,7 @@ schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, o sender.markModified('inbox.messages'); let promises = [userToReceiveMessage.save(), sender.save()]; - await Bluebird.all(promises); + await Promise.all(promises); }; /** diff --git a/website/server/server.js b/website/server/server.js index 473cc4a284..b8a5783d62 100644 --- a/website/server/server.js +++ b/website/server/server.js @@ -2,9 +2,6 @@ import nconf from 'nconf'; import logger from './libs/logger'; import express from 'express'; import http from 'http'; -import Bluebird from 'bluebird'; - -global.Promise = Bluebird; const server = http.createServer(); const app = express();