Merge remote-tracking branch 'origin/develop' into release-candidate

pull/15350/head
Diego Sampaio 6 years ago
commit 3042a3efda
No known key found for this signature in database
GPG Key ID: E060152B30502562
  1. 8
      app/api/server/api.js
  2. 2
      app/authorization/client/views/permissions.js
  3. 35
      app/metrics/server/lib/metrics.js
  4. 2
      app/models/server/models/Permissions.js
  5. 11
      app/models/server/models/_Base.js
  6. 3
      app/models/server/oplogEvents.js
  7. 58
      app/setup-wizard/client/final.js
  8. 398
      app/setup-wizard/client/setupWizard.js
  9. 3
      client/components/setupWizard/steps/AdminUserInformationStep.js
  10. 393
      package-lock.json

@ -22,6 +22,12 @@ export const defaultRateLimiterOptions = {
export let API = {};
const getRequestIP = (req) =>
req.headers['x-forwarded-for']
|| (req.connection && req.connection.remoteAddress)
|| (req.socket && req.socket.remoteAddress)
|| (req.connection && req.connection.socket && req.connection.socket.remoteAddress);
export class APIClass extends Restivus {
constructor(properties) {
super(properties);
@ -289,7 +295,7 @@ export class APIClass extends Restivus {
});
logger.debug(`${ this.request.method.toUpperCase() }: ${ this.request.url }`);
const requestIp = this.request.headers['x-forwarded-for'] || this.request.connection.remoteAddress || this.request.socket.remoteAddress || this.request.connection.socket.remoteAddress;
const requestIp = getRequestIP(this.request);
const objectForRateLimitMatch = {
IPAddr: requestIp,
route: `${ this.request.route }${ this.request.method.toLowerCase() }`,

@ -191,7 +191,7 @@ Template.permissionsTable.events({
const action = ~permission.roles.indexOf(role) ? 'authorization:removeRoleFromPermission' : 'authorization:addPermissionToRole';
return Meteor.call(action, permission, role);
return Meteor.call(action, permissionId, role);
},
});

@ -9,6 +9,7 @@ import { Info } from '../../../utils';
import { Migrations } from '../../../migrations';
import { settings } from '../../../settings';
import { Statistics } from '../../../models';
import { oplogEvents } from '../../../models/server/oplogEvents';
client.collectDefaultMetrics();
@ -56,6 +57,11 @@ metrics.version = new client.Gauge({ name: 'rocketchat_version', labelNames: ['v
metrics.migration = new client.Gauge({ name: 'rocketchat_migration', help: 'migration versoin' });
metrics.instanceCount = new client.Gauge({ name: 'rocketchat_instance_count', help: 'instances running' });
metrics.oplogEnabled = new client.Gauge({ name: 'rocketchat_oplog_enabled', labelNames: ['enabled'], help: 'oplog enabled' });
metrics.oplog = new client.Counter({
name: 'rocketchat_oplog',
help: 'summary of oplog operations',
labelNames: ['collection', 'op'],
});
// User statistics
metrics.totalUsers = new client.Gauge({ name: 'rocketchat_users_total', help: 'total of users' });
@ -157,24 +163,33 @@ app.use('/', (req, res) => {
const server = http.createServer(app);
const oplogMetric = ({ collection, op }) => {
metrics.oplog.inc({
collection,
op,
});
};
let timer;
const updatePrometheusConfig = async () => {
const port = process.env.PROMETHEUS_PORT || settings.get('Prometheus_Port');
const enabled = settings.get('Prometheus_Enabled');
if (port == null || enabled == null) {
return;
}
if (enabled === true) {
server.listen({
port,
host: process.env.BIND_IP || '0.0.0.0',
});
timer = Meteor.setInterval(setPrometheusData, 5000);
} else {
if (!port || !enabled) {
server.close();
Meteor.clearInterval(timer);
oplogEvents.removeListener('record', oplogMetric);
return;
}
server.listen({
port,
host: process.env.BIND_IP || '0.0.0.0',
});
timer = Meteor.setInterval(setPrometheusData, 5000);
oplogEvents.on('record', oplogMetric);
};
Meteor.startup(async () => {

@ -11,7 +11,7 @@ export class Permissions extends Base {
}
findOneById(_id) {
return this.findOne(_id);
return this.findOne({ _id });
}
createOrUpdate(name, roles) {

@ -4,6 +4,7 @@ import objectPath from 'object-path';
import _ from 'underscore';
import { BaseDb } from './_BaseDb';
import { oplogEvents } from '../oplogEvents';
export class Base {
constructor(nameOrModel) {
@ -16,6 +17,16 @@ export class Base {
this.emit = this._db.emit.bind(this._db);
this.db = this;
this._db.on('change', ({ action, oplog }) => {
if (!oplog) {
return;
}
oplogEvents.emit('record', {
collection: this.collectionName,
op: action,
});
});
}
get origin() {

@ -0,0 +1,3 @@
import { EventEmitter } from 'events';
export const oplogEvents = new EventEmitter();

@ -1,58 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Template } from 'meteor/templating';
import { settings } from '../../settings';
import { Users } from '../../models';
import { hasRole } from '../../authorization';
Template.setupWizardFinal.onCreated(function() {
const isSetupWizardDone = Meteor._localStorage.getItem('wizardFinal');
if (isSetupWizardDone === null) {
FlowRouter.go('setup-wizard');
}
this.autorun((c) => {
const showSetupWizard = settings.get('Show_Setup_Wizard');
if (!showSetupWizard) {
// Setup Wizard state is not defined yet
return;
}
const userId = Meteor.userId();
const user = userId && Users.findOne(userId, { fields: { status: true } });
if (userId && (!user || !user.status)) {
// User and its status are not defined yet
return;
}
c.stop();
const isComplete = showSetupWizard === 'completed';
const noUserLoggedInAndIsNotPending = !userId && showSetupWizard !== 'pending';
const userIsLoggedButIsNotAdmin = userId && !hasRole(userId, 'admin');
if (isComplete || noUserLoggedInAndIsNotPending || userIsLoggedButIsNotAdmin) {
FlowRouter.go('home');
}
});
});
Template.setupWizardFinal.onRendered(function() {
$('#initial-page-loading').remove();
});
Template.setupWizardFinal.events({
'click .js-finish'() {
settings.set('Show_Setup_Wizard', 'completed', function() {
Meteor._localStorage.removeItem('wizard');
Meteor._localStorage.removeItem('wizardFinal');
FlowRouter.go('home');
});
},
});
Template.setupWizardFinal.helpers({
siteUrl() {
return settings.get('Site_Url');
},
});

@ -1,398 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { ReactiveVar } from 'meteor/reactive-var';
import { ReactiveDict } from 'meteor/reactive-dict';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import toastr from 'toastr';
import { settings } from '../../settings';
import { callbacks } from '../../callbacks';
import { hasRole } from '../../authorization';
import { Users } from '../../models';
import { t, handleError } from '../../utils';
import { call } from '../../ui-utils';
const cannotSetup = () => {
const showSetupWizard = settings.get('Show_Setup_Wizard');
if (!showSetupWizard) {
// Setup Wizard state is not defined yet
return;
}
const userId = Meteor.userId();
const user = userId && Users.findOne(userId, { fields: { status: true } });
if (userId && (!user || !user.status)) {
// User and its status are not defined yet
return;
}
const isComplete = showSetupWizard === 'completed';
const noUserLoggedInAndIsNotPending = !userId && showSetupWizard !== 'pending';
const userIsLoggedButIsNotAdmin = userId && !hasRole(userId, 'admin');
return isComplete || noUserLoggedInAndIsNotPending || userIsLoggedButIsNotAdmin;
};
const registerAdminUser = (state, callback) => {
const registrationData = Object.entries(state)
.filter(([key]) => /registration-/.test(key))
.map(([key, value]) => [key.replace('registration-', ''), value])
.reduce((o, [key, value]) => ({ ...o, [key]: value }), {});
Meteor.call('registerUser', registrationData, (error) => {
if (error) {
return handleError(error);
}
callbacks.run('userRegistered');
Meteor.loginWithPassword(registrationData.email, registrationData.pass, (error) => {
if (error) {
if (error.error === 'error-invalid-email') {
toastr.success(t('We_have_sent_registration_email'));
return false;
}
return handleError(error);
}
Session.set('forceLogin', false);
Meteor.call('setUsername', registrationData.username, (error) => {
if (error) {
return handleError(error);
}
callbacks.run('usernameSet');
callback && callback();
});
});
});
};
const persistSettings = (state, callback) => {
const setupSettings = Object.entries(state)
.filter(([key]) => !/registration-|registerServer|optIn|currentStep|invalidUsername|invalidEmail/.test(key))
.map(([_id, value]) => ({ _id, value }))
.concat([
{
_id: 'Statistics_reporting',
value: state.registerServer,
},
{
_id: 'Apps_Framework_enabled',
value: state.registerServer,
},
{
_id: 'Register_Server',
value: state.registerServer,
},
{
_id: 'Allow_Marketing_Emails',
value: state.optIn,
},
]);
settings.batchSet(setupSettings, (error) => {
if (error) {
return handleError(error);
}
callback && callback();
});
};
Template.setupWizard.onCreated(async function() {
const statusDefault = {
currentStep: 1,
registerServer: true,
optIn: true,
};
this.state = new ReactiveDict(statusDefault);
this.wizardSettings = new ReactiveVar([]);
this.allowStandaloneServer = new ReactiveVar(false);
if (Meteor._localStorage.getItem('wizardFinal')) {
return FlowRouter.go('setup-wizard-final');
}
const jsonString = Meteor._localStorage.getItem('wizard');
const state = (jsonString && JSON.parse(jsonString)) || statusDefault;
this.state.set(state);
this.autorun(async () => {
if (!Meteor.userId()) {
return;
}
const { settings, allowStandaloneServer } = await call('getSetupWizardParameters') || {};
this.wizardSettings.set(settings);
this.allowStandaloneServer.set(allowStandaloneServer);
});
this.autorun(() => {
const state = this.state.all();
state['registration-pass'] = '';
Meteor._localStorage.setItem('wizard', JSON.stringify(state));
});
this.autorun(async (c) => {
const cantSetup = cannotSetup();
if (typeof cantSetup === 'undefined') {
return;
}
if (cantSetup) {
c.stop();
FlowRouter.go('home');
return;
}
if (!Meteor.userId()) {
return this.state.set('currentStep', 1);
}
if (this.state.get('currentStep') === 1) {
this.state.set('currentStep', 2);
} else {
this.state.set('registration-pass', '');
}
});
});
Template.setupWizard.onRendered(function() {
$('#initial-page-loading').remove();
});
Template.setupWizard.events({
'submit .setup-wizard-forms__box'() {
return false;
},
'click .setup-wizard-forms__footer-next'(e, t) {
switch (t.state.get('currentStep')) {
case 1: {
const usernameValue = t.state.get('registration-username');
const usernameRegex = new RegExp(`^${ settings.get('UTF8_Names_Validation') }$`);
t.state.set('invalidUsername', !usernameRegex.test(usernameValue));
const emailValue = t.state.get('registration-email');
const emailRegex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]+$/i;
t.state.set('invalidEmail', !emailRegex.test(emailValue));
if (t.state.get('invalidUsername') || t.state.get('invalidEmail')) {
return false;
}
registerAdminUser(t.state.all(), () => t.state.set('currentStep', 2));
return false;
}
case 2: {
t.state.set('currentStep', 3);
return false;
}
case 3: {
t.state.set('currentStep', 4);
return false;
}
case 4: {
persistSettings(t.state.all(), () => {
Meteor._localStorage.removeItem('wizard');
Meteor._localStorage.setItem('wizardFinal', true);
if (t.state.get('registerServer')) {
Meteor.call('cloud:registerWorkspace', (error) => {
if (error) {
console.warn(error);
return;
}
FlowRouter.go('setup-wizard-final');
});
} else {
FlowRouter.go('setup-wizard-final');
}
});
return false;
}
}
return false;
},
'click .setup-wizard-forms__footer-back'(e, t) {
switch (t.state.get('currentStep')) {
case 2:
t.state.set('currentStep', 1);
break;
case 3:
t.state.set('currentStep', 2);
break;
case 4:
t.state.set('currentStep', 3);
break;
}
return false;
},
'input .js-setting-data'({ currentTarget: { name, value } }, t) {
t.state.set(name, value);
},
'click input[name="registerServer"]'({ currentTarget: { value } }, t) {
const oldValue = t.state.get('registerServer');
const newValue = value === 'true';
t.state.set('registerServer', newValue);
if (!oldValue && newValue) {
t.state.set('optIn', true);
}
if (!newValue) {
t.state.set('optIn', false);
}
return false;
},
'click input[name="optIn"]'({ currentTarget: { checked } }, t) {
t.state.set('optIn', checked);
return false;
},
});
Template.setupWizard.helpers({
currentStep() {
return Template.instance().state.get('currentStep');
},
currentStepTitle() {
switch (Template.instance().state.get('currentStep')) {
case 1:
return 'Admin_Info';
case 2:
return 'Organization_Info';
case 3:
return 'Server_Info';
case 4:
return 'Register_Server';
}
},
formLoadStateClass() {
switch (Template.instance().state.get('currentStep')) {
case 1:
return settings.get('Show_Setup_Wizard') === 'pending' && 'setup-wizard-forms__box--loaded';
case 2:
case 3:
return Template.instance().wizardSettings.get().length > 0 && 'setup-wizard-forms__box--loaded';
case 4:
return 'setup-wizard-forms__box--loaded';
}
},
showBackButton() {
switch (Template.instance().state.get('currentStep')) {
case 3:
return true;
case 4:
return true;
}
return false;
},
isContinueDisabled() {
switch (Template.instance().state.get('currentStep')) {
case 1:
return Object.entries(Template.instance().state.all())
.filter(([key, value]) => /registration-/.test(key) && !value)
.length !== 0;
}
return false;
},
infoArgs() {
const t = Template.instance();
return {
currentStep: t.state.get('currentStep'),
};
},
adminInfoArgs() {
const t = Template.instance();
return {
currentStep: t.state.get('currentStep'),
name: t.state.get('registration-name'),
username: t.state.get('registration-username'),
email: t.state.get('registration-email'),
password: t.state.get('registration-pass'),
invalidUsername: t.state.get('invalidUsername'),
invalidEmail: t.state.get('invalidEmail'),
};
},
registerServerArgs() {
const t = Template.instance();
return {
currentStep: t.state.get('currentStep'),
allowStandaloneServer: t.allowStandaloneServer.get(),
registerServer: t.allowStandaloneServer.get() ? t.state.get('registerServer') : true,
optIn: t.state.get('optIn'),
};
},
customStepArgs(step) {
const t = Template.instance();
return {
currentStep: t.state.get('currentStep'),
step,
settings: t.wizardSettings.get()
.filter((setting) => setting.wizard.step === step)
.sort((a, b) => a.wizard.order - b.wizard.order)
.map(({ type, _id, i18nLabel, values }) => ({
type,
id: _id,
label: i18nLabel,
value: t.state.get(_id),
options: (
type === 'select'
&& values
&& values.map(({ i18nLabel, key }) => ({ optionLabel: i18nLabel, optionValue: key }))
) || (
type === 'language'
&& [{
optionLabel: 'Default',
optionValue: '',
}].concat(
Object.entries(TAPi18n.getLanguages())
.map(([key, { name }]) => ({ optionLabel: name, optionValue: key }))
.sort((a, b) => a.key - b.key)
)
),
isValueSelected: (value) => value === t.state.get(_id),
})),
};
},
});
Template.setupWizardInfo.helpers({
stepItemModifier(step) {
const { currentStep } = Template.currentData();
if (currentStep === step) {
return 'setup-wizard-info__steps-item--active';
}
if (currentStep > step) {
return 'setup-wizard-info__steps-item--past';
}
return '';
},
stepTitle(step) {
switch (step) {
case 1:
return 'Admin_Info';
case 2:
return 'Organization_Info';
case 3:
return 'Server_Info';
case 4:
return 'Register_Server';
}
},
});

@ -27,7 +27,7 @@ const registerAdminUser = async ({ name, username, email, password, onRegistrati
onRegistrationEmailSent && onRegistrationEmailSent();
return;
}
handleError(error);
throw error;
}
@ -100,7 +100,6 @@ export function AdminUserInformationStep({ step, title }) {
goToNextStep();
} catch (error) {
console.error(error);
handleError(error);
} finally {
setCommiting(false);
}

393
package-lock.json generated

@ -147,7 +147,7 @@
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
@ -1840,7 +1840,7 @@
"dependencies": {
"buffer": {
"version": "4.9.1",
"resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"requires": {
"base64-js": "^1.0.2",
@ -1957,7 +1957,7 @@
"dependencies": {
"jsesc": {
"version": "1.3.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
}
@ -3813,7 +3813,7 @@
},
"browserify-aes": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"requires": {
"buffer-xor": "^1.0.3",
@ -3847,7 +3847,7 @@
},
"browserify-rsa": {
"version": "4.0.1",
"resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"requires": {
"bn.js": "^4.1.0",
@ -4155,7 +4155,7 @@
"dependencies": {
"callsites": {
"version": "2.0.0",
"resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
}
@ -4176,16 +4176,6 @@
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
"dev": true
},
"camel-case": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
"integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
"dev": true,
"requires": {
"no-case": "^2.2.0",
"upper-case": "^1.1.1"
}
},
"camelcase": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
@ -4234,7 +4224,7 @@
"dependencies": {
"cheerio": {
"version": "0.19.0",
"resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz",
"integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=",
"requires": {
"css-select": "~1.0.0",
@ -4246,7 +4236,7 @@
},
"css-select": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz",
"integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=",
"requires": {
"boolbase": "~1.0.0",
@ -4257,7 +4247,7 @@
},
"css-what": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz",
"integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w="
},
"domhandler": {
@ -4278,7 +4268,7 @@
},
"htmlparser2": {
"version": "3.8.3",
"resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"requires": {
"domelementtype": "1",
@ -4299,7 +4289,7 @@
},
"entities": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
}
}
@ -4311,12 +4301,12 @@
},
"lodash": {
"version": "3.10.1",
"resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
},
"readable-stream": {
"version": "1.1.14",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
@ -4327,7 +4317,7 @@
},
"string_decoder": {
"version": "0.10.31",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
}
}
@ -4473,7 +4463,7 @@
},
"cheerio": {
"version": "0.22.0",
"resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
"integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
"requires": {
"css-select": "~1.2.0",
@ -4522,7 +4512,6 @@
"chromedriver": "^2.35",
"colors": "1.1.2",
"commander": "^2.9.0",
"cucumber": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
"deep-extend": "^0.4.1",
"exit": "^0.1.2",
"fibers": "^1.0.14",
@ -4566,6 +4555,34 @@
"type-detect": "^4.0.0"
}
},
"cucumber": {
"version": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
"from": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
"requires": {
"co": "^4.6.0",
"colors": "^1.1.2",
"commander": "^2.9.0",
"fibers": "^1.0.7",
"glob": "^7.0.0",
"lodash": "^4.0.0",
"meteor-promise": "^0.8.0"
},
"dependencies": {
"glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
}
}
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@ -4584,8 +4601,7 @@
"fibers": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz",
"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw=",
"dev": true
"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw="
},
"glob": {
"version": "github:lucetius/node-glob#51c7ca6e69bfbd17db5f1ea710e3f2a7a457d9ce",
@ -4667,8 +4683,7 @@
"once": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.0.tgz",
"integrity": "sha1-FRr4a/wfCMS58H0GqyUP/L61ZYE=",
"dev": true
"integrity": "sha1-FRr4a/wfCMS58H0GqyUP/L61ZYE="
},
"progress": {
"version": "1.1.8",
@ -4814,23 +4829,6 @@
"restore-cursor": "^2.0.0"
}
},
"cli-table": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
"integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
"dev": true,
"requires": {
"colors": "1.0.3"
},
"dependencies": {
"colors": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
"dev": true
}
}
},
"cli-width": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
@ -4928,7 +4926,7 @@
},
"color-convert": {
"version": "0.5.3",
"resolved": "http://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
"integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
},
"color-name": {
@ -4947,9 +4945,8 @@
},
"colors": {
"version": "1.1.2",
"resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
"dev": true
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
},
"colour": {
"version": "0.7.1",
@ -5251,7 +5248,7 @@
},
"create-hash": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"requires": {
"cipher-base": "^1.0.1",
@ -5263,7 +5260,7 @@
},
"create-hmac": {
"version": "1.1.7",
"resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"requires": {
"cipher-base": "^1.0.3",
@ -5285,7 +5282,7 @@
"dependencies": {
"node-fetch": {
"version": "2.1.2",
"resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
}
}
@ -5375,7 +5372,7 @@
},
"css-select": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"requires": {
"boolbase": "~1.0.0",
@ -5419,36 +5416,6 @@
"integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
"dev": true
},
"cucumber": {
"version": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
"from": "github:xolvio/cucumber-js#v1.3.0-chimp.6",
"dev": true,
"requires": {
"camel-case": "^3.0.0",
"cli-table": "^0.3.1",
"co": "^4.6.0",
"colors": "^1.1.2",
"commander": "^2.9.0",
"duration": "^0.2.0",
"fibers": "^1.0.7",
"figures": "1.7.0",
"gherkin": "4.0.0",
"glob": "^7.0.0",
"is-generator": "^1.0.2",
"lodash": "^4.0.0",
"meteor-promise": "^0.8.0",
"stack-chain": "^1.3.5",
"stacktrace-js": "^1.3.0"
},
"dependencies": {
"fibers": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz",
"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw=",
"dev": true
}
}
},
"cuid": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz",
@ -5978,7 +5945,7 @@
},
"diffie-hellman": {
"version": "5.0.3",
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"requires": {
"bn.js": "^4.1.0",
@ -5997,7 +5964,7 @@
},
"doctrine": {
"version": "1.5.0",
"resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"dev": true,
"requires": {
@ -6089,16 +6056,6 @@
"stream-shift": "^1.0.0"
}
},
"duration": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz",
"integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==",
"dev": true,
"requires": {
"d": "1",
"es5-ext": "~0.10.46"
}
},
"eachr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/eachr/-/eachr-2.0.4.tgz",
@ -6198,6 +6155,11 @@
"resolved": "https://registry.npmjs.org/emailreplyparser/-/emailreplyparser-0.0.5.tgz",
"integrity": "sha1-BpYswKRCFnWbo7mOOyV3wM4w/Aw="
},
"emitter-component": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz",
"integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY="
},
"emojione": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz",
@ -6320,15 +6282,6 @@
}
}
},
"error-stack-parser": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
"integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
"dev": true,
"requires": {
"stackframe": "^0.3.1"
}
},
"es-abstract": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
@ -7125,7 +7078,7 @@
},
"finalhandler": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"requires": {
"debug": "2.6.9",
@ -7144,7 +7097,7 @@
},
"http-errors": {
"version": "1.6.3",
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
"depd": "~1.1.2",
@ -7510,16 +7463,6 @@
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
"dev": true
},
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5",
"object-assign": "^4.1.0"
}
},
"file-entry-cache": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
@ -8424,7 +8367,7 @@
},
"get-stream": {
"version": "3.0.0",
"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
},
"get-value": {
@ -8466,12 +8409,6 @@
"integrity": "sha1-x9aGwf8spOiCpYrfOKfeJpG6f5k=",
"dev": true
},
"gherkin": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/gherkin/-/gherkin-4.0.0.tgz",
"integrity": "sha1-edzgTRIj6kO0hip2vlzo+JwSwyw=",
"dev": true
},
"github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@ -9524,6 +9461,11 @@
"pify": "^3.0.0"
}
},
"hammerjs": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
"integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
},
"hapi": {
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/hapi/-/hapi-8.8.0.tgz",
@ -9633,6 +9575,18 @@
"hoek": "2.x.x",
"joi": "6.x.x",
"wreck": "5.x.x"
},
"dependencies": {
"wreck": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/wreck/-/wreck-5.6.1.tgz",
"integrity": "sha1-r/ADBAATiJ11YZtccYcN0qjdBpo=",
"dev": true,
"requires": {
"boom": "2.x.x",
"hoek": "2.x.x"
}
}
}
},
"heavy": {
@ -9644,6 +9598,20 @@
"boom": "2.x.x",
"hoek": "2.x.x",
"joi": "5.x.x"
},
"dependencies": {
"joi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/joi/-/joi-5.1.0.tgz",
"integrity": "sha1-FSrQfbjunGQBmX/1/SwSiWBwv1g=",
"dev": true,
"requires": {
"hoek": "^2.2.x",
"isemail": "1.x.x",
"moment": "2.x.x",
"topo": "1.x.x"
}
}
}
},
"hoek": {
@ -10133,7 +10101,7 @@
"dependencies": {
"domelementtype": {
"version": "1.3.0",
"resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
"integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
},
"readable-stream": {
@ -10150,7 +10118,7 @@
},
"http-errors": {
"version": "1.6.3",
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
"depd": "~1.1.2",
@ -10946,12 +10914,6 @@
"number-is-nan": "^1.0.0"
}
},
"is-generator": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz",
"integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=",
"dev": true
},
"is-glob": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
@ -11407,7 +11369,7 @@
},
"json5": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
},
"jsonfile": {
@ -11582,6 +11544,11 @@
}
}
},
"keycharm": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.2.0.tgz",
"integrity": "sha1-+m6i5DuQpoAohD0n8gddNajD5vk="
},
"keypress": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
@ -11884,7 +11851,7 @@
},
"load-json-file": {
"version": "2.0.0",
"resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
"requires": {
@ -11896,7 +11863,7 @@
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
@ -12192,12 +12159,6 @@
"signal-exit": "^3.0.0"
}
},
"lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
"integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
"dev": true
},
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@ -12724,7 +12685,7 @@
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
@ -12746,7 +12707,7 @@
},
"string_decoder": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
@ -12778,8 +12739,7 @@
"meteor-promise": {
"version": "0.8.6",
"resolved": "https://registry.npmjs.org/meteor-promise/-/meteor-promise-0.8.6.tgz",
"integrity": "sha512-HP6tOr67z/9XU2Dr0F2SSr8WRTuE23AG9Dj578DCJPEYHs67OLKBviU8A8rwvbwMD7Lu2+Of+yAMz2Wd8r4yxg==",
"dev": true
"integrity": "sha512-HP6tOr67z/9XU2Dr0F2SSr8WRTuE23AG9Dj578DCJPEYHs67OLKBviU8A8rwvbwMD7Lu2+Of+yAMz2Wd8r4yxg=="
},
"methods": {
"version": "1.1.2",
@ -12895,7 +12855,7 @@
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
}
@ -13023,7 +12983,7 @@
},
"commander": {
"version": "2.15.1",
"resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
"dev": true
},
@ -13448,15 +13408,6 @@
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"no-case": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
"integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
"dev": true,
"requires": {
"lower-case": "^1.1.1"
}
},
"node-abi": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.9.0.tgz",
@ -13695,8 +13646,13 @@
"integrity": "sha1-CH52u+t+jcVmhrJdtOYMX/nbCR8=",
"dev": true,
"requires": {
"is-stream": "^1.1.0",
"web-streams-polyfill": "git://github.com/gwicke/web-streams-polyfill.git#42c488428adea1dc0c0245014e4896ad456b1ded"
"is-stream": "^1.1.0"
},
"dependencies": {
"web-streams-polyfill": {
"version": "git://github.com/gwicke/web-streams-polyfill.git#42c488428adea1dc0c0245014e4896ad456b1ded",
"from": "git://github.com/gwicke/web-streams-polyfill.git#42c488428adea1dc0c0245014e4896ad456b1ded"
}
}
},
"nodejieba": {
@ -13812,7 +13768,7 @@
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
@ -14153,7 +14109,7 @@
},
"pako": {
"version": "0.2.9",
"resolved": "http://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
"integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
},
"parallel-transform": {
@ -14169,7 +14125,7 @@
},
"parse-asn1": {
"version": "5.1.1",
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
"requires": {
"asn1.js": "^4.0.0",
@ -14500,7 +14456,7 @@
},
"tough-cookie": {
"version": "2.3.4",
"resolved": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"dev": true,
"requires": {
@ -14823,7 +14779,7 @@
},
"globby": {
"version": "6.1.0",
"resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
"integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
"dev": true,
"requires": {
@ -14836,7 +14792,7 @@
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
@ -15456,6 +15412,14 @@
"react-is": "^16.8.1"
}
},
"propagating-hammerjs": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.4.7.tgz",
"integrity": "sha512-oW9Wd+W2Tp5uOz6Fh4mEU7p+FoyU85smLH/mPga83Loh0pHa6AH4ZHGywvwMk3TWP31l7iUsvJyW265p4Ipwrg==",
"requires": {
"hammerjs": "^2.0.8"
}
},
"protobufjs": {
"version": "6.8.8",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
@ -16630,7 +16594,7 @@
},
"sha.js": {
"version": "2.4.11",
"resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"requires": {
"inherits": "^2.0.1",
@ -17059,69 +17023,11 @@
"figgy-pudding": "^3.5.1"
}
},
"stack-chain": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
"integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=",
"dev": true
},
"stack-generator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-1.1.0.tgz",
"integrity": "sha1-NvapIHUabBD0maE8Msu19RoLiyU=",
"dev": true,
"requires": {
"stackframe": "^1.0.2"
},
"dependencies": {
"stackframe": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz",
"integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==",
"dev": true
}
}
},
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
"stackframe": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
"integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
"dev": true
},
"stacktrace-gps": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-2.4.4.tgz",
"integrity": "sha1-acgn6dbW9Bz0ONfxleLjy/zyjEQ=",
"dev": true,
"requires": {
"source-map": "0.5.6",
"stackframe": "~0.3"
},
"dependencies": {
"source-map": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
"dev": true
}
}
},
"stacktrace-js": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-1.3.1.tgz",
"integrity": "sha1-Z8qyWJr1xBe5Yvc2mUAne7O2oYs=",
"dev": true,
"requires": {
"error-stack-parser": "^1.3.6",
"stack-generator": "^1.0.7",
"stacktrace-gps": "^2.4.3"
}
},
"starttls": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz",
@ -17164,7 +17070,7 @@
},
"stream-browserify": {
"version": "2.0.1",
"resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
"integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
"requires": {
"inherits": "~2.0.1",
@ -17196,7 +17102,7 @@
},
"stream-http": {
"version": "2.8.1",
"resolved": "http://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz",
"integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==",
"requires": {
"builtin-status-codes": "^3.0.0",
@ -17311,7 +17217,7 @@
},
"strip-eof": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
},
"strip-indent": {
@ -18099,7 +18005,7 @@
"dependencies": {
"progress": {
"version": "1.1.8",
"resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
}
}
@ -18563,12 +18469,6 @@
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
"dev": true
},
"upper-case": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
"integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
"dev": true
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@ -18668,7 +18568,7 @@
},
"util": {
"version": "0.10.3",
"resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"requires": {
"inherits": "2.0.1"
@ -18707,7 +18607,7 @@
},
"valid-data-url": {
"version": "0.1.6",
"resolved": "http://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz",
"resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz",
"integrity": "sha512-FXg2qXMzfAhZc0y2HzELNfUeiOjPr+52hU1DNBWiJJ2luXD+dD1R9NA48Ug5aj0ibbxroeGDc/RJv6ThiGgkDw=="
},
"validate-npm-package-license": {
@ -18804,6 +18704,18 @@
"unist-util-stringify-position": "^1.1.1"
}
},
"vis": {
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/vis/-/vis-4.21.0.tgz",
"integrity": "sha1-3XFji/9/ZJXQC8n0DCU1JhM97Ws=",
"requires": {
"emitter-component": "^1.1.1",
"hammerjs": "^2.0.8",
"keycharm": "^0.2.0",
"moment": "^2.18.1",
"propagating-hammerjs": "^1.4.6"
}
},
"vm-browserify": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
@ -18958,11 +18870,6 @@
"xtend": "^4.0.0"
}
},
"web-streams-polyfill": {
"version": "git://github.com/gwicke/web-streams-polyfill.git#42c488428adea1dc0c0245014e4896ad456b1ded",
"from": "git://github.com/gwicke/web-streams-polyfill.git#spec_performance_improvements",
"dev": true
},
"webdav": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/webdav/-/webdav-2.0.0.tgz",
@ -19234,7 +19141,7 @@
},
"whatwg-fetch": {
"version": "2.0.4",
"resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
},
"whatwg-mimetype": {
@ -19417,7 +19324,7 @@
"dependencies": {
"xmlbuilder": {
"version": "9.0.7",
"resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
}
}

Loading…
Cancel
Save