diff --git a/monkey_island/cc/app.py b/monkey_island/cc/app.py
index 34d14ae86..6b9ac1154 100644
--- a/monkey_island/cc/app.py
+++ b/monkey_island/cc/app.py
@@ -14,6 +14,7 @@ from cc.resources.client_run import ClientRun
from cc.resources.edge import Edge
from cc.resources.local_run import LocalRun
from cc.resources.log import Log
+from cc.resources.island_logs import IslandLog
from cc.resources.monkey import Monkey
from cc.resources.monkey_configuration import MonkeyConfiguration
from cc.resources.monkey_download import MonkeyDownload
@@ -104,5 +105,6 @@ def init_app(mongo_url):
api.add_resource(Report, '/api/report', '/api/report/')
api.add_resource(TelemetryFeed, '/api/telemetry-feed', '/api/telemetry-feed/')
api.add_resource(Log, '/api/log', '/api/log/')
+ api.add_resource(IslandLog, '/api/log/island/download', '/api/log/island/download/')
return app
diff --git a/monkey_island/cc/environment/environment.py b/monkey_island/cc/environment/environment.py
index 8eb97a999..094b9c235 100644
--- a/monkey_island/cc/environment/environment.py
+++ b/monkey_island/cc/environment/environment.py
@@ -1,7 +1,11 @@
import json
+import logging
import standard
import aws
+logger = logging.getLogger(__name__)
+
+
ENV_DICT = {
'standard': standard.StandardEnvironment,
'aws': aws.AwsEnvironment
@@ -18,6 +22,7 @@ def load_env_from_file():
try:
__env_type = load_env_from_file()
env = ENV_DICT[__env_type]()
+ logger.info('Monkey\'s env is: {0}'.format(env.__class__.__name__))
except Exception:
- print('Failed initializing environment: %s' % __env_type)
+ logger.error('Failed initializing environment', exc_info=True)
raise
diff --git a/monkey_island/cc/island_logger.py b/monkey_island/cc/island_logger.py
new file mode 100644
index 000000000..8fbef1e0e
--- /dev/null
+++ b/monkey_island/cc/island_logger.py
@@ -0,0 +1,26 @@
+import os
+import json
+import logging.config
+
+
+__author__ = 'Maor.Rayzin'
+
+
+def json_setup_logging(default_path='logging.json', default_level=logging.INFO, env_key='LOG_CFG'):
+ """
+ Setup the logging configuration
+ :param default_path: the default log configuration file path
+ :param default_level: Default level to log from
+ :param env_key: SYS ENV key to use for external configuration file path
+ :return:
+ """
+ path = default_path
+ value = os.getenv(env_key, None)
+ if value:
+ path = value
+ if os.path.exists(path):
+ with open(path, 'rt') as f:
+ config = json.load(f)
+ logging.config.dictConfig(config)
+ else:
+ logging.basicConfig(level=default_level)
diff --git a/monkey_island/cc/island_logger_default_config.json b/monkey_island/cc/island_logger_default_config.json
new file mode 100644
index 000000000..e41ca3d9b
--- /dev/null
+++ b/monkey_island/cc/island_logger_default_config.json
@@ -0,0 +1,33 @@
+{
+ "version": 1,
+ "disable_existing_loggers": false,
+ "formatters": {
+ "simple": {
+ "format": "%(asctime)s - %(filename)s:%(lineno)s - %(funcName)10s() - %(levelname)s - %(message)s"
+ }
+ },
+
+ "handlers": {
+ "console": {
+ "class": "logging.StreamHandler",
+ "level": "DEBUG",
+ "formatter": "simple",
+ "stream": "ext://sys.stdout"
+ },
+
+ "info_file_handler": {
+ "class": "logging.handlers.RotatingFileHandler",
+ "level": "INFO",
+ "formatter": "simple",
+ "filename": "info.log",
+ "maxBytes": 10485760,
+ "backupCount": 20,
+ "encoding": "utf8"
+ }
+ },
+
+ "root": {
+ "level": "INFO",
+ "handlers": ["console", "info_file_handler"]
+ }
+}
\ No newline at end of file
diff --git a/monkey_island/cc/main.py b/monkey_island/cc/main.py
index e0f6ab079..c1133a9c8 100644
--- a/monkey_island/cc/main.py
+++ b/monkey_island/cc/main.py
@@ -2,19 +2,25 @@ from __future__ import print_function # In python 2.7
import os
import sys
-
import time
+import logging
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if BASE_PATH not in sys.path:
sys.path.insert(0, BASE_PATH)
+from cc.island_logger import json_setup_logging
+# This is here in order to catch EVERYTHING, some functions are being called on imports the log init needs to be on top.
+json_setup_logging(default_path='island_logger_default_config.json', default_level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
from cc.app import init_app
from cc.utils import local_ip_addresses
from cc.environment.environment import env
from cc.database import is_db_server_up
-if __name__ == '__main__':
+
+def main():
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
@@ -22,7 +28,7 @@ if __name__ == '__main__':
mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())
while not is_db_server_up(mongo_url):
- print('Waiting for MongoDB server')
+ logger.info('Waiting for MongoDB server')
time.sleep(1)
app = init_app(mongo_url)
@@ -33,6 +39,10 @@ if __name__ == '__main__':
ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'),
'keyfile': os.environ.get('SERVER_KEY', 'server.key')})
http_server.listen(env.get_island_port())
- print('Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
+ logger.info(
+ 'Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
IOLoop.instance().start()
+
+if __name__ == '__main__':
+ main()
diff --git a/monkey_island/cc/resources/client_run.py b/monkey_island/cc/resources/client_run.py
index 111c0d1a2..0e4be42e7 100644
--- a/monkey_island/cc/resources/client_run.py
+++ b/monkey_island/cc/resources/client_run.py
@@ -1,3 +1,4 @@
+import logging
from flask import request, jsonify
import flask_restful
@@ -5,6 +6,8 @@ from cc.services.node import NodeService
__author__ = 'itay.mizeretz'
+logger = logging.getLogger(__name__)
+
class ClientRun(flask_restful.Resource):
def get(self):
@@ -17,6 +20,7 @@ class ClientRun(flask_restful.Resource):
if monkey is not None:
is_monkey_running = not monkey["dead"]
else:
+ logger.info("Monkey is not running")
is_monkey_running = False
return jsonify(is_running=is_monkey_running)
diff --git a/monkey_island/cc/resources/island_logs.py b/monkey_island/cc/resources/island_logs.py
new file mode 100644
index 000000000..971306c14
--- /dev/null
+++ b/monkey_island/cc/resources/island_logs.py
@@ -0,0 +1,19 @@
+import logging
+
+import flask_restful
+
+from cc.auth import jwt_required
+from cc.services.island_logs import IslandLogService
+
+__author__ = "Maor.Rayzin"
+
+logger = logging.getLogger(__name__)
+
+
+class IslandLog(flask_restful.Resource):
+ @jwt_required()
+ def get(self):
+ try:
+ return IslandLogService.get_log_file()
+ except Exception as e:
+ logger.error('Monkey Island logs failed to download', exc_info=True)
diff --git a/monkey_island/cc/resources/local_run.py b/monkey_island/cc/resources/local_run.py
index c588eaf80..7b8965e1e 100644
--- a/monkey_island/cc/resources/local_run.py
+++ b/monkey_island/cc/resources/local_run.py
@@ -13,6 +13,8 @@ from cc.utils import local_ip_addresses
__author__ = 'Barak'
+import logging
+logger = logging.getLogger(__name__)
def run_local_monkey():
import platform
@@ -32,6 +34,7 @@ def run_local_monkey():
copyfile(monkey_path, target_path)
os.chmod(target_path, stat.S_IRWXU | stat.S_IRWXG)
except Exception as exc:
+ logger.error('Copy file failed', exc_info=True)
return False, "Copy file failed: %s" % exc
# run the monkey
@@ -41,6 +44,7 @@ def run_local_monkey():
args = "".join(args)
pid = subprocess.Popen(args, shell=True).pid
except Exception as exc:
+ logger.error('popen failed', exc_info=True)
return False, "popen failed: %s" % exc
return True, "pis: %s" % pid
diff --git a/monkey_island/cc/resources/monkey_download.py b/monkey_island/cc/resources/monkey_download.py
index ac1f9de2d..25e67fdb2 100644
--- a/monkey_island/cc/resources/monkey_download.py
+++ b/monkey_island/cc/resources/monkey_download.py
@@ -1,3 +1,4 @@
+import logging
import json
import os
@@ -6,6 +7,8 @@ import flask_restful
__author__ = 'Barak'
+logger = logging.getLogger(__name__)
+
MONKEY_DOWNLOADS = [
{
@@ -42,7 +45,10 @@ MONKEY_DOWNLOADS = [
def get_monkey_executable(host_os, machine):
for download in MONKEY_DOWNLOADS:
if host_os == download.get('type') and machine == download.get('machine'):
+ logger.info('Monkey exec found for os: {0} and machine: {1}'.format(host_os, machine))
return download
+ logger.warning('No monkey executables could be found for the host os or machine or both: host_os: {0}, machine: {1}'
+ .format(host_os, machine))
return None
diff --git a/monkey_island/cc/resources/root.py b/monkey_island/cc/resources/root.py
index 61c788d7e..56a7695c7 100644
--- a/monkey_island/cc/resources/root.py
+++ b/monkey_island/cc/resources/root.py
@@ -1,4 +1,5 @@
from datetime import datetime
+import logging
import flask_restful
from flask import request, make_response, jsonify
@@ -12,6 +13,8 @@ from cc.utils import local_ip_addresses
__author__ = 'Barak'
+logger = logging.getLogger(__name__)
+
class Root(flask_restful.Resource):
@@ -42,6 +45,7 @@ class Root(flask_restful.Resource):
# We can't drop system collections.
[mongo.db[x].drop() for x in mongo.db.collection_names() if not x.startswith('system.')]
ConfigService.init_config()
+ logger.info('DB was reset')
return jsonify(status='OK')
@staticmethod
@@ -50,6 +54,7 @@ class Root(flask_restful.Resource):
mongo.db.monkey.update({'dead': False}, {'$set': {'config.alive': False, 'modifytime': datetime.now()}},
upsert=False,
multi=True)
+ logger.info('Kill all monkeys was called')
return jsonify(status='OK')
@staticmethod
@@ -59,6 +64,7 @@ class Root(flask_restful.Resource):
infection_done = NodeService.is_monkey_finished_running()
if not infection_done:
report_done = False
+ logger.info('Report generation cannot be completed, infection is not done.')
else:
report_done = ReportService.is_report_generated()
return dict(run_server=True, run_monkey=is_any_exists, infection_done=infection_done, report_done=report_done)
diff --git a/monkey_island/cc/resources/telemetry.py b/monkey_island/cc/resources/telemetry.py
index cb18ff845..9785d213f 100644
--- a/monkey_island/cc/resources/telemetry.py
+++ b/monkey_island/cc/resources/telemetry.py
@@ -1,4 +1,5 @@
import json
+import logging
import traceback
import copy
from datetime import datetime
@@ -17,6 +18,9 @@ from cc.encryptor import encryptor
__author__ = 'Barak'
+logger = logging.getLogger(__name__)
+
+
class Telemetry(flask_restful.Resource):
@jwt_required()
def get(self, **kw):
@@ -52,10 +56,9 @@ class Telemetry(flask_restful.Resource):
if telem_type in TELEM_PROCESS_DICT:
TELEM_PROCESS_DICT[telem_type](telemetry_json)
else:
- print('Got unknown type of telemetry: %s' % telem_type)
+ logger.info('Got unknown type of telemetry: %s' % telem_type)
except Exception as ex:
- print("Exception caught while processing telemetry: %s" % str(ex))
- traceback.print_exc()
+ logger.error("Exception caught while processing telemetry", exc_info=True)
telem_id = mongo.db.telemetry.insert(telemetry_json)
return mongo.db.telemetry.find_one_or_404({"_id": telem_id})
diff --git a/monkey_island/cc/services/config.py b/monkey_island/cc/services/config.py
index 2ee29f3e9..2c0d3a31c 100644
--- a/monkey_island/cc/services/config.py
+++ b/monkey_island/cc/services/config.py
@@ -1,6 +1,7 @@
import copy
import collections
import functools
+import logging
from jsonschema import Draft4Validator, validators
from six import string_types
@@ -11,6 +12,8 @@ from cc.utils import local_ip_addresses
__author__ = "itay.mizeretz"
+logger = logging.getLogger(__name__)
+
WARNING_SIGN = u" \u26A0"
SCHEMA = {
@@ -894,6 +897,7 @@ class ConfigService:
if should_encrypt:
ConfigService.encrypt_config(config_json)
mongo.db.config.update({'name': 'newconfig'}, {"$set": config_json}, upsert=True)
+ logger.info('monkey config was updated')
@staticmethod
def init_default_config():
@@ -909,6 +913,7 @@ class ConfigService:
config = copy.deepcopy(ConfigService.default_config)
if should_encrypt:
ConfigService.encrypt_config(config)
+ logger.info("Default config was called")
return config
@staticmethod
@@ -922,6 +927,7 @@ class ConfigService:
config = ConfigService.get_default_config(True)
ConfigService.set_server_ips_in_config(config)
ConfigService.update_config(config, should_encrypt=False)
+ logger.info('Monkey config reset was called')
@staticmethod
def set_server_ips_in_config(config):
@@ -938,6 +944,7 @@ class ConfigService:
initial_config['name'] = 'initial'
initial_config.pop('_id')
mongo.db.config.insert(initial_config)
+ logger.info('Monkey config was inserted to mongo and saved')
@staticmethod
def _extend_config_with_default(validator_class):
diff --git a/monkey_island/cc/services/island_logs.py b/monkey_island/cc/services/island_logs.py
new file mode 100644
index 000000000..77b28bdd4
--- /dev/null
+++ b/monkey_island/cc/services/island_logs.py
@@ -0,0 +1,32 @@
+import logging
+__author__ = "Maor.Rayzin"
+
+logger = logging.getLogger(__name__)
+
+
+class IslandLogService:
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def get_log_file():
+ """
+ This static function is a helper function for the monkey island log download function.
+ It finds the logger handlers and checks if one of them is a fileHandler of any kind by checking if the handler
+ has the property handler.baseFilename.
+ :return:
+ a dict with the log file content.
+ """
+ logger_handlers = logger.parent.handlers
+ for handler in logger_handlers:
+ if hasattr(handler, 'baseFilename'):
+ logger.info('Log file found: {0}'.format(handler.baseFilename))
+ log_file_path = handler.baseFilename
+ with open(log_file_path, 'rt') as f:
+ log_file = f.read()
+ return {
+ 'log_file': log_file
+ }
+
+ logger.warning('No log file could be found, check logger config.')
+ return None
diff --git a/monkey_island/cc/services/report.py b/monkey_island/cc/services/report.py
index 902664d63..b830dc47e 100644
--- a/monkey_island/cc/services/report.py
+++ b/monkey_island/cc/services/report.py
@@ -1,4 +1,5 @@
import ipaddress
+import logging
from enum import Enum
from six import text_type
@@ -12,6 +13,9 @@ from cc.utils import local_ip_addresses, get_subnets
__author__ = "itay.mizeretz"
+logger = logging.getLogger(__name__)
+
+
class ReportService:
def __init__(self):
pass
@@ -79,6 +83,8 @@ class ReportService:
creds = ReportService.get_azure_creds()
machines = set([instance['origin'] for instance in creds])
+ logger.info('Azure issues generated for reporting')
+
return [
{
'type': 'azure_password',
@@ -105,6 +111,8 @@ class ReportService:
}
for node in nodes]
+ logger.info('Scanned nodes generated for reporting')
+
return nodes
@staticmethod
@@ -126,6 +134,8 @@ class ReportService:
}
for monkey in exploited]
+ logger.info('Exploited nodes generated for reporting')
+
return exploited
@staticmethod
@@ -149,6 +159,7 @@ class ReportService:
'origin': origin
}
)
+ logger.info('Stolen creds generated for reporting')
return creds
@staticmethod
@@ -169,6 +180,8 @@ class ReportService:
azure_leaked_users = [{'username': user.replace(',', '.'), 'type': 'Clear Password',
'origin': origin} for user in azure_users]
creds.extend(azure_leaked_users)
+
+ logger.info('Azure machines creds generated for reporting')
return creds
@staticmethod
@@ -320,6 +333,7 @@ class ReportService:
if machine not in issues_dict:
issues_dict[machine] = []
issues_dict[machine].append(issue)
+ logger.info('Issues generated for reporting')
return issues_dict
@staticmethod
@@ -407,6 +421,7 @@ class ReportService:
{'name': 'generated_report'},
{'$set': {'value': True}},
upsert=True)
+ logger.info("Report marked as generated.")
@staticmethod
def get_report():
diff --git a/monkey_island/cc/ui/package-lock.json b/monkey_island/cc/ui/package-lock.json
index 57cdfdc01..e0f519cbc 100644
--- a/monkey_island/cc/ui/package-lock.json
+++ b/monkey_island/cc/ui/package-lock.json
@@ -347,7 +347,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.11.0"
}
},
@@ -442,7 +442,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.11.0"
}
},
@@ -1170,7 +1170,7 @@
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.10.5"
},
"dependencies": {
@@ -1180,7 +1180,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.11.0"
},
"dependencies": {
@@ -1304,7 +1304,7 @@
"requires": {
"babel-core": "6.26.0",
"babel-runtime": "6.26.0",
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"home-or-tmp": "2.0.0",
"lodash": "4.17.4",
"mkdirp": "0.5.1",
@@ -1317,7 +1317,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.11.0"
}
},
@@ -1334,7 +1334,7 @@
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz",
"integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=",
"requires": {
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"regenerator-runtime": "0.10.5"
}
},
@@ -2105,9 +2105,9 @@
}
},
"core-js": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
- "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
+ "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ=="
},
"core-util-is": {
"version": "1.0.2",
@@ -5262,7 +5262,7 @@
"colors": "1.1.2",
"combine-lists": "1.0.1",
"connect": "3.6.3",
- "core-js": "2.5.5",
+ "core-js": "2.5.6",
"di": "0.0.1",
"dom-serialize": "2.2.1",
"expand-braces": "0.1.2",
@@ -6201,9 +6201,9 @@
"integrity": "sha1-IdZsxVcVTUN5/R4HnsfeWKN5sJk="
},
"npm": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-5.8.0.tgz",
- "integrity": "sha512-DowXzQwtSWDtbAjuWecuEiismR0VdNEYaL3VxNTYTdW6AGkYxfGk9LUZ/rt6etEyiH4IEk95HkJeGfXE5Rz9xQ==",
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-5.10.0.tgz",
+ "integrity": "sha512-lvjvjgR5wG2RJ2uqak1xtZcVAWMwVOzN5HkUlUj/n8rU1f3A0fNn+7HwOzH9Lyf0Ppyu9ApgsEpHczOSnx1cwA==",
"requires": {
"JSONStream": "1.3.2",
"abbrev": "1.1.1",
@@ -6214,9 +6214,11 @@
"archy": "1.0.0",
"bin-links": "1.1.0",
"bluebird": "3.5.1",
+ "byte-size": "4.0.2",
"cacache": "10.0.4",
"call-limit": "1.1.0",
"chownr": "1.0.1",
+ "cli-columns": "3.1.2",
"cli-table2": "0.2.0",
"cmd-shim": "2.0.2",
"columnify": "1.5.4",
@@ -6241,11 +6243,12 @@
"ini": "1.3.5",
"init-package-json": "1.10.3",
"is-cidr": "1.0.0",
- "json-parse-better-errors": "1.0.1",
+ "json-parse-better-errors": "1.0.2",
"lazy-property": "1.0.0",
- "libcipm": "1.6.0",
- "libnpx": "10.0.1",
- "lockfile": "1.0.3",
+ "libcipm": "1.6.2",
+ "libnpx": "10.2.0",
+ "lock-verify": "2.0.2",
+ "lockfile": "1.0.4",
"lodash._baseindexof": "3.1.0",
"lodash._baseuniq": "4.6.0",
"lodash._bindcallback": "3.0.1",
@@ -6257,20 +6260,23 @@
"lodash.union": "4.6.0",
"lodash.uniq": "4.5.0",
"lodash.without": "4.4.0",
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"meant": "1.0.1",
"mississippi": "3.0.0",
"mkdirp": "0.5.1",
"move-concurrently": "1.0.1",
+ "node-gyp": "3.6.2",
"nopt": "4.0.1",
"normalize-package-data": "2.4.0",
+ "npm-audit-report": "1.0.9",
"npm-cache-filename": "1.0.2",
"npm-install-checks": "3.0.0",
"npm-lifecycle": "2.0.1",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"npm-packlist": "1.1.10",
"npm-profile": "3.0.1",
"npm-registry-client": "8.5.1",
+ "npm-registry-fetch": "1.1.0",
"npm-user-validate": "1.0.0",
"npmlog": "4.1.2",
"once": "1.4.0",
@@ -6279,39 +6285,40 @@
"pacote": "7.6.1",
"path-is-inside": "1.0.2",
"promise-inflight": "1.0.1",
- "qrcode-terminal": "0.11.0",
- "query-string": "5.1.0",
+ "qrcode-terminal": "0.12.0",
+ "query-string": "6.1.0",
"qw": "1.0.1",
"read": "1.0.7",
"read-cmd-shim": "1.0.1",
"read-installed": "4.0.3",
"read-package-json": "2.0.13",
- "read-package-tree": "5.1.6",
- "readable-stream": "2.3.5",
+ "read-package-tree": "5.2.1",
+ "readable-stream": "2.3.6",
"readdir-scoped-modules": "1.0.2",
- "request": "2.83.0",
- "retry": "0.10.1",
+ "request": "2.85.0",
+ "retry": "0.12.0",
"rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
+ "safe-buffer": "5.1.2",
"semver": "5.5.0",
"sha": "2.0.1",
"slide": "1.1.6",
"sorted-object": "2.0.1",
"sorted-union-stream": "2.1.3",
- "ssri": "5.2.4",
+ "ssri": "5.3.0",
"strip-ansi": "4.0.0",
- "tar": "4.4.0",
+ "tar": "4.4.2",
"text-table": "0.2.0",
+ "tiny-relative-date": "1.3.0",
"uid-number": "0.0.6",
"umask": "1.1.0",
"unique-filename": "1.1.0",
"unpipe": "1.0.0",
- "update-notifier": "2.3.0",
+ "update-notifier": "2.5.0",
"uuid": "3.2.1",
- "validate-npm-package-license": "3.0.1",
+ "validate-npm-package-license": "3.0.3",
"validate-npm-package-name": "3.0.0",
"which": "1.3.0",
- "worker-farm": "1.5.4",
+ "worker-farm": "1.6.0",
"wrappy": "1.0.2",
"write-file-atomic": "2.3.0"
},
@@ -6374,6 +6381,10 @@
"version": "3.5.1",
"bundled": true
},
+ "byte-size": {
+ "version": "4.0.2",
+ "bundled": true
+ },
"cacache": {
"version": "10.0.4",
"bundled": true,
@@ -6382,13 +6393,13 @@
"chownr": "1.0.1",
"glob": "7.1.2",
"graceful-fs": "4.1.11",
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"mississippi": "2.0.0",
"mkdirp": "0.5.1",
"move-concurrently": "1.0.1",
"promise-inflight": "1.0.1",
"rimraf": "2.6.2",
- "ssri": "5.2.4",
+ "ssri": "5.3.0",
"unique-filename": "1.1.0",
"y18n": "4.0.0"
},
@@ -6414,7 +6425,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"typedarray": "0.0.6"
},
"dependencies": {
@@ -6430,7 +6441,7 @@
"requires": {
"end-of-stream": "1.4.1",
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"stream-shift": "1.0.0"
},
"dependencies": {
@@ -6452,7 +6463,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"from2": {
@@ -6460,7 +6471,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"parallel-transform": {
@@ -6469,7 +6480,7 @@
"requires": {
"cyclist": "0.2.2",
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
},
"dependencies": {
"cyclist": {
@@ -6513,7 +6524,7 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"xtend": "4.0.1"
},
"dependencies": {
@@ -6539,6 +6550,50 @@
"version": "1.0.1",
"bundled": true
},
+ "cli-columns": {
+ "version": "3.1.2",
+ "bundled": true,
+ "requires": {
+ "string-width": "2.1.1",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "2.1.1",
+ "bundled": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
"cli-table2": {
"version": "0.2.0",
"bundled": true,
@@ -6717,7 +6772,7 @@
"graceful-fs": "4.1.11",
"iferr": "0.1.5",
"imurmurhash": "0.1.4",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"gentle-fs": {
@@ -6824,12 +6879,12 @@
"bundled": true,
"requires": {
"glob": "7.1.2",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"promzard": "0.3.0",
"read": "1.0.7",
"read-package-json": "2.0.13",
"semver": "5.5.0",
- "validate-npm-package-license": "3.0.1",
+ "validate-npm-package-license": "3.0.3",
"validate-npm-package-name": "3.0.0"
},
"dependencies": {
@@ -6856,7 +6911,7 @@
}
},
"json-parse-better-errors": {
- "version": "1.0.1",
+ "version": "1.0.2",
"bundled": true
},
"lazy-property": {
@@ -6864,26 +6919,26 @@
"bundled": true
},
"libcipm": {
- "version": "1.6.0",
+ "version": "1.6.2",
"bundled": true,
"requires": {
"bin-links": "1.1.0",
"bluebird": "3.5.1",
"find-npm-prefix": "1.0.2",
"graceful-fs": "4.1.11",
- "lock-verify": "2.0.0",
+ "lock-verify": "2.0.1",
"npm-lifecycle": "2.0.1",
"npm-logical-tree": "1.2.1",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"pacote": "7.6.1",
"protoduck": "5.0.0",
"read-package-json": "2.0.13",
"rimraf": "2.6.2",
- "worker-farm": "1.5.4"
+ "worker-farm": "1.6.0"
},
"dependencies": {
"lock-verify": {
- "version": "2.0.0",
+ "version": "2.0.1",
"bundled": true,
"requires": {
"npm-package-arg": "5.1.2",
@@ -6918,45 +6973,18 @@
"bundled": true
}
}
- },
- "worker-farm": {
- "version": "1.5.4",
- "bundled": true,
- "requires": {
- "errno": "0.1.7",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "errno": {
- "version": "0.1.7",
- "bundled": true,
- "requires": {
- "prr": "1.0.1"
- },
- "dependencies": {
- "prr": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
}
}
},
"libnpx": {
- "version": "10.0.1",
+ "version": "10.2.0",
"bundled": true,
"requires": {
"dotenv": "5.0.1",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
- "update-notifier": "2.3.0",
+ "safe-buffer": "5.1.2",
+ "update-notifier": "2.5.0",
"which": "1.3.0",
"y18n": "4.0.0",
"yargs": "11.0.0"
@@ -6974,7 +7002,7 @@
"version": "11.0.0",
"bundled": true,
"requires": {
- "cliui": "4.0.0",
+ "cliui": "4.1.0",
"decamelize": "1.2.0",
"find-up": "2.1.0",
"get-caller-file": "1.0.2",
@@ -6989,7 +7017,7 @@
},
"dependencies": {
"cliui": {
- "version": "4.0.0",
+ "version": "4.1.0",
"bundled": true,
"requires": {
"string-width": "2.1.1",
@@ -7129,7 +7157,7 @@
"version": "5.1.0",
"bundled": true,
"requires": {
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"shebang-command": "1.2.0",
"which": "1.3.0"
},
@@ -7263,9 +7291,26 @@
}
}
},
+ "lock-verify": {
+ "version": "2.0.2",
+ "bundled": true,
+ "requires": {
+ "npm-package-arg": "6.1.0",
+ "semver": "5.5.0"
+ }
+ },
"lockfile": {
- "version": "1.0.3",
- "bundled": true
+ "version": "1.0.4",
+ "bundled": true,
+ "requires": {
+ "signal-exit": "3.0.2"
+ },
+ "dependencies": {
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true
+ }
+ }
},
"lodash._baseindexof": {
"version": "3.1.0",
@@ -7329,7 +7374,7 @@
"bundled": true
},
"lru-cache": {
- "version": "4.1.1",
+ "version": "4.1.2",
"bundled": true,
"requires": {
"pseudomap": "1.0.2",
@@ -7371,7 +7416,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"typedarray": "0.0.6"
},
"dependencies": {
@@ -7387,7 +7432,7 @@
"requires": {
"end-of-stream": "1.4.1",
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"stream-shift": "1.0.0"
},
"dependencies": {
@@ -7409,7 +7454,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"from2": {
@@ -7417,7 +7462,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"parallel-transform": {
@@ -7426,7 +7471,7 @@
"requires": {
"cyclist": "0.2.2",
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
},
"dependencies": {
"cyclist": {
@@ -7480,7 +7525,7 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"xtend": "4.0.1"
},
"dependencies": {
@@ -7538,6 +7583,93 @@
}
}
},
+ "node-gyp": {
+ "version": "3.6.2",
+ "bundled": true,
+ "requires": {
+ "fstream": "1.0.11",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "npmlog": "4.1.2",
+ "osenv": "0.1.5",
+ "request": "2.85.0",
+ "rimraf": "2.6.2",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "fstream": {
+ "version": "1.0.11",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+ }
+ }
+ },
"nopt": {
"version": "4.0.1",
"bundled": true,
@@ -7553,7 +7685,7 @@
"hosted-git-info": "2.6.0",
"is-builtin-module": "1.0.0",
"semver": "5.5.0",
- "validate-npm-package-license": "3.0.1"
+ "validate-npm-package-license": "3.0.3"
},
"dependencies": {
"is-builtin-module": {
@@ -7571,6 +7703,20 @@
}
}
},
+ "npm-audit-report": {
+ "version": "1.0.9",
+ "bundled": true,
+ "requires": {
+ "cli-table2": "0.2.0",
+ "console-control-strings": "1.1.0"
+ },
+ "dependencies": {
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ }
+ }
+ },
"npm-cache-filename": {
"version": "1.0.2",
"bundled": true
@@ -7600,93 +7746,6 @@
"version": "5.0.0",
"bundled": true
},
- "node-gyp": {
- "version": "3.6.2",
- "bundled": true,
- "requires": {
- "fstream": "1.0.11",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.5",
- "request": "2.83.0",
- "rimraf": "2.6.2",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.3.0"
- },
- "dependencies": {
- "fstream": {
- "version": "1.0.11",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "requires": {
- "brace-expansion": "1.1.11"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "bundled": true,
- "requires": {
- "abbrev": "1.1.1"
- }
- },
- "semver": {
- "version": "5.3.0",
- "bundled": true
- },
- "tar": {
- "version": "2.2.1",
- "bundled": true,
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- },
- "dependencies": {
- "block-stream": {
- "version": "0.0.9",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3"
- }
- }
- }
- }
- }
- },
"resolve-from": {
"version": "4.0.0",
"bundled": true
@@ -7694,7 +7753,7 @@
}
},
"npm-package-arg": {
- "version": "6.0.0",
+ "version": "6.1.0",
"bundled": true,
"requires": {
"hosted-git-info": "2.6.0",
@@ -7770,12 +7829,12 @@
"http-cache-semantics": "3.8.1",
"http-proxy-agent": "2.0.0",
"https-proxy-agent": "2.1.1",
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"mississippi": "1.3.1",
"node-fetch-npm": "2.0.2",
"promise-retry": "1.1.1",
"socks-proxy-agent": "3.0.1",
- "ssri": "5.2.4"
+ "ssri": "5.3.0"
},
"dependencies": {
"agentkeepalive": {
@@ -7915,7 +7974,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"typedarray": "0.0.6"
},
"dependencies": {
@@ -7931,7 +7990,7 @@
"requires": {
"end-of-stream": "1.4.1",
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"stream-shift": "1.0.0"
},
"dependencies": {
@@ -7953,7 +8012,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"from2": {
@@ -7961,7 +8020,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"parallel-transform": {
@@ -7970,7 +8029,7 @@
"requires": {
"cyclist": "0.2.2",
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
},
"dependencies": {
"cyclist": {
@@ -8024,7 +8083,7 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"xtend": "4.0.1"
},
"dependencies": {
@@ -8042,7 +8101,7 @@
"requires": {
"encoding": "0.1.12",
"json-parse-better-errors": "1.0.1",
- "safe-buffer": "5.1.1"
+ "safe-buffer": "5.1.2"
},
"dependencies": {
"encoding": {
@@ -8075,6 +8134,10 @@
"err-code": {
"version": "1.1.2",
"bundled": true
+ },
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true
}
}
},
@@ -8139,15 +8202,15 @@
"concat-stream": "1.6.1",
"graceful-fs": "4.1.11",
"normalize-package-data": "2.4.0",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"npmlog": "4.1.2",
"once": "1.4.0",
- "request": "2.83.0",
+ "request": "2.85.0",
"retry": "0.10.1",
- "safe-buffer": "5.1.1",
+ "safe-buffer": "5.1.2",
"semver": "5.5.0",
"slide": "1.1.6",
- "ssri": "5.2.4"
+ "ssri": "5.3.0"
},
"dependencies": {
"concat-stream": {
@@ -8155,7 +8218,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"typedarray": "0.0.6"
},
"dependencies": {
@@ -8164,6 +8227,264 @@
"bundled": true
}
}
+ },
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true
+ }
+ }
+ },
+ "npm-registry-fetch": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "figgy-pudding": "2.0.1",
+ "lru-cache": "4.1.2",
+ "make-fetch-happen": "3.0.0",
+ "npm-package-arg": "6.1.0",
+ "safe-buffer": "5.1.2"
+ },
+ "dependencies": {
+ "figgy-pudding": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "make-fetch-happen": {
+ "version": "3.0.0",
+ "bundled": true,
+ "requires": {
+ "agentkeepalive": "3.4.1",
+ "cacache": "10.0.4",
+ "http-cache-semantics": "3.8.1",
+ "http-proxy-agent": "2.1.0",
+ "https-proxy-agent": "2.2.1",
+ "lru-cache": "4.1.2",
+ "mississippi": "3.0.0",
+ "node-fetch-npm": "2.0.2",
+ "promise-retry": "1.1.1",
+ "socks-proxy-agent": "3.0.1",
+ "ssri": "5.3.0"
+ },
+ "dependencies": {
+ "agentkeepalive": {
+ "version": "3.4.1",
+ "bundled": true,
+ "requires": {
+ "humanize-ms": "1.2.1"
+ },
+ "dependencies": {
+ "humanize-ms": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "ms": "2.1.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "http-cache-semantics": {
+ "version": "3.8.1",
+ "bundled": true
+ },
+ "http-proxy-agent": {
+ "version": "2.1.0",
+ "bundled": true,
+ "requires": {
+ "agent-base": "4.2.0",
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.2.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "4.2.4"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.2.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "2.2.1",
+ "bundled": true,
+ "requires": {
+ "agent-base": "4.2.0",
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.2.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "4.2.4"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.2.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "node-fetch-npm": {
+ "version": "2.0.2",
+ "bundled": true,
+ "requires": {
+ "encoding": "0.1.12",
+ "json-parse-better-errors": "1.0.2",
+ "safe-buffer": "5.1.2"
+ },
+ "dependencies": {
+ "encoding": {
+ "version": "0.1.12",
+ "bundled": true,
+ "requires": {
+ "iconv-lite": "0.4.21"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.21",
+ "bundled": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ },
+ "dependencies": {
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "promise-retry": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "err-code": "1.1.2",
+ "retry": "0.10.1"
+ },
+ "dependencies": {
+ "err-code": {
+ "version": "1.1.2",
+ "bundled": true
+ },
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true
+ }
+ }
+ },
+ "socks-proxy-agent": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "agent-base": "4.2.0",
+ "socks": "1.1.10"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.2.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "4.2.4"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.2.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "socks": {
+ "version": "1.1.10",
+ "bundled": true,
+ "requires": {
+ "ip": "1.1.5",
+ "smart-buffer": "1.1.15"
+ },
+ "dependencies": {
+ "ip": {
+ "version": "1.1.5",
+ "bundled": true
+ },
+ "smart-buffer": {
+ "version": "1.1.15",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
}
}
},
@@ -8186,7 +8507,7 @@
"bundled": true,
"requires": {
"delegates": "1.0.0",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
},
"dependencies": {
"delegates": {
@@ -8314,13 +8635,13 @@
"cacache": "10.0.4",
"get-stream": "3.0.0",
"glob": "7.1.2",
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"make-fetch-happen": "2.6.0",
"minimatch": "3.0.4",
"mississippi": "3.0.0",
"mkdirp": "0.5.1",
"normalize-package-data": "2.4.0",
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"npm-packlist": "1.1.10",
"npm-pick-manifest": "2.1.0",
"osenv": "0.1.5",
@@ -8328,10 +8649,10 @@
"promise-retry": "1.1.1",
"protoduck": "5.0.0",
"rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
+ "safe-buffer": "5.1.2",
"semver": "5.5.0",
- "ssri": "5.2.4",
- "tar": "4.4.0",
+ "ssri": "5.3.0",
+ "tar": "4.4.2",
"unique-filename": "1.1.0",
"which": "1.3.0"
},
@@ -8349,12 +8670,12 @@
"http-cache-semantics": "3.8.1",
"http-proxy-agent": "2.1.0",
"https-proxy-agent": "2.2.0",
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"mississippi": "1.3.1",
"node-fetch-npm": "2.0.2",
"promise-retry": "1.1.1",
"socks-proxy-agent": "3.0.1",
- "ssri": "5.2.4"
+ "ssri": "5.3.0"
},
"dependencies": {
"agentkeepalive": {
@@ -8494,7 +8815,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"typedarray": "0.0.6"
},
"dependencies": {
@@ -8510,7 +8831,7 @@
"requires": {
"end-of-stream": "1.4.1",
"inherits": "2.0.3",
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"stream-shift": "1.0.0"
},
"dependencies": {
@@ -8532,7 +8853,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"from2": {
@@ -8540,7 +8861,7 @@
"bundled": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"parallel-transform": {
@@ -8549,7 +8870,7 @@
"requires": {
"cyclist": "0.2.2",
"inherits": "2.0.3",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
},
"dependencies": {
"cyclist": {
@@ -8603,7 +8924,7 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"xtend": "4.0.1"
},
"dependencies": {
@@ -8621,7 +8942,7 @@
"requires": {
"encoding": "0.1.12",
"json-parse-better-errors": "1.0.1",
- "safe-buffer": "5.1.1"
+ "safe-buffer": "5.1.2"
},
"dependencies": {
"encoding": {
@@ -8726,7 +9047,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "npm-package-arg": "6.0.0",
+ "npm-package-arg": "6.1.0",
"semver": "5.5.0"
}
},
@@ -8741,6 +9062,10 @@
"err-code": {
"version": "1.1.2",
"bundled": true
+ },
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true
}
}
},
@@ -8768,28 +9093,23 @@
"bundled": true
},
"qrcode-terminal": {
- "version": "0.11.0",
+ "version": "0.12.0",
"bundled": true
},
"query-string": {
- "version": "5.1.0",
+ "version": "6.1.0",
"bundled": true,
"requires": {
"decode-uri-component": "0.2.0",
- "object-assign": "4.1.1",
- "strict-uri-encode": "1.1.0"
+ "strict-uri-encode": "2.0.0"
},
"dependencies": {
"decode-uri-component": {
"version": "0.2.0",
"bundled": true
},
- "object-assign": {
- "version": "4.1.1",
- "bundled": true
- },
"strict-uri-encode": {
- "version": "1.1.0",
+ "version": "2.0.0",
"bundled": true
}
}
@@ -8859,7 +9179,7 @@
}
},
"read-package-tree": {
- "version": "5.1.6",
+ "version": "5.2.1",
"bundled": true,
"requires": {
"debuglog": "1.0.1",
@@ -8870,15 +9190,15 @@
}
},
"readable-stream": {
- "version": "2.3.5",
+ "version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
},
"dependencies": {
@@ -8895,10 +9215,10 @@
"bundled": true
},
"string_decoder": {
- "version": "1.0.3",
+ "version": "1.1.1",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "5.1.2"
}
},
"util-deprecate": {
@@ -8918,29 +9238,29 @@
}
},
"request": {
- "version": "2.83.0",
+ "version": "2.85.0",
"bundled": true,
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
- "combined-stream": "1.0.5",
+ "combined-stream": "1.0.6",
"extend": "3.0.1",
"forever-agent": "0.6.1",
- "form-data": "2.3.1",
+ "form-data": "2.3.2",
"har-validator": "5.0.3",
"hawk": "6.0.2",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
+ "mime-types": "2.1.18",
"oauth-sign": "0.8.2",
"performance-now": "2.1.0",
"qs": "6.5.1",
- "safe-buffer": "5.1.1",
+ "safe-buffer": "5.1.2",
"stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
+ "tough-cookie": "2.3.4",
"tunnel-agent": "0.6.0",
"uuid": "3.2.1"
},
@@ -8958,7 +9278,7 @@
"bundled": true
},
"combined-stream": {
- "version": "1.0.5",
+ "version": "1.0.6",
"bundled": true,
"requires": {
"delayed-stream": "1.0.0"
@@ -8979,12 +9299,12 @@
"bundled": true
},
"form-data": {
- "version": "2.3.1",
+ "version": "2.3.2",
"bundled": true,
"requires": {
"asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
+ "combined-stream": "1.0.6",
+ "mime-types": "2.1.18"
},
"dependencies": {
"asynckit": {
@@ -8997,18 +9317,18 @@
"version": "5.0.3",
"bundled": true,
"requires": {
- "ajv": "5.2.3",
+ "ajv": "5.5.2",
"har-schema": "2.0.0"
},
"dependencies": {
"ajv": {
- "version": "5.2.3",
+ "version": "5.5.2",
"bundled": true,
"requires": {
"co": "4.6.0",
- "fast-deep-equal": "1.0.0",
- "json-schema-traverse": "0.3.1",
- "json-stable-stringify": "1.0.1"
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
},
"dependencies": {
"co": {
@@ -9016,25 +9336,16 @@
"bundled": true
},
"fast-deep-equal": {
- "version": "1.0.0",
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
"bundled": true
},
"json-schema-traverse": {
"version": "0.3.1",
"bundled": true
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "jsonify": "0.0.0"
- },
- "dependencies": {
- "jsonify": {
- "version": "0.0.0",
- "bundled": true
- }
- }
}
}
},
@@ -9050,15 +9361,15 @@
"requires": {
"boom": "4.3.1",
"cryptiles": "3.1.2",
- "hoek": "4.2.0",
- "sntp": "2.0.2"
+ "hoek": "4.2.1",
+ "sntp": "2.1.0"
},
"dependencies": {
"boom": {
"version": "4.3.1",
"bundled": true,
"requires": {
- "hoek": "4.2.0"
+ "hoek": "4.2.1"
}
},
"cryptiles": {
@@ -9072,20 +9383,20 @@
"version": "5.2.0",
"bundled": true,
"requires": {
- "hoek": "4.2.0"
+ "hoek": "4.2.1"
}
}
}
},
"hoek": {
- "version": "4.2.0",
+ "version": "4.2.1",
"bundled": true
},
"sntp": {
- "version": "2.0.2",
+ "version": "2.1.0",
"bundled": true,
"requires": {
- "hoek": "4.2.0"
+ "hoek": "4.2.1"
}
}
}
@@ -9096,7 +9407,7 @@
"requires": {
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
- "sshpk": "1.13.1"
+ "sshpk": "1.14.1"
},
"dependencies": {
"assert-plus": {
@@ -9139,7 +9450,7 @@
}
},
"sshpk": {
- "version": "1.13.1",
+ "version": "1.14.1",
"bundled": true,
"requires": {
"asn1": "0.2.3",
@@ -9213,14 +9524,14 @@
"bundled": true
},
"mime-types": {
- "version": "2.1.17",
+ "version": "2.1.18",
"bundled": true,
"requires": {
- "mime-db": "1.30.0"
+ "mime-db": "1.33.0"
},
"dependencies": {
"mime-db": {
- "version": "1.30.0",
+ "version": "1.33.0",
"bundled": true
}
}
@@ -9242,7 +9553,7 @@
"bundled": true
},
"tough-cookie": {
- "version": "2.3.3",
+ "version": "2.3.4",
"bundled": true,
"requires": {
"punycode": "1.4.1"
@@ -9258,13 +9569,13 @@
"version": "0.6.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "5.1.2"
}
}
}
},
"retry": {
- "version": "0.10.1",
+ "version": "0.12.0",
"bundled": true
},
"rimraf": {
@@ -9275,7 +9586,7 @@
}
},
"safe-buffer": {
- "version": "5.1.1",
+ "version": "5.1.2",
"bundled": true
},
"semver": {
@@ -9287,7 +9598,7 @@
"bundled": true,
"requires": {
"graceful-fs": "4.1.11",
- "readable-stream": "2.3.5"
+ "readable-stream": "2.3.6"
}
},
"slide": {
@@ -9344,7 +9655,7 @@
"version": "1.2.0",
"bundled": true,
"requires": {
- "readable-stream": "2.3.5",
+ "readable-stream": "2.3.6",
"stream-shift": "1.0.0"
},
"dependencies": {
@@ -9357,10 +9668,10 @@
}
},
"ssri": {
- "version": "5.2.4",
+ "version": "5.3.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "5.1.2"
}
},
"strip-ansi": {
@@ -9377,14 +9688,15 @@
}
},
"tar": {
- "version": "4.4.0",
+ "version": "4.4.2",
"bundled": true,
"requires": {
"chownr": "1.0.1",
"fs-minipass": "1.2.5",
- "minipass": "2.2.1",
+ "minipass": "2.2.4",
"minizlib": "1.1.0",
"mkdirp": "0.5.1",
+ "safe-buffer": "5.1.2",
"yallist": "3.0.2"
},
"dependencies": {
@@ -9392,13 +9704,14 @@
"version": "1.2.5",
"bundled": true,
"requires": {
- "minipass": "2.2.1"
+ "minipass": "2.2.4"
}
},
"minipass": {
- "version": "2.2.1",
+ "version": "2.2.4",
"bundled": true,
"requires": {
+ "safe-buffer": "5.1.2",
"yallist": "3.0.2"
}
},
@@ -9406,9 +9719,13 @@
"version": "1.1.0",
"bundled": true,
"requires": {
- "minipass": "2.2.1"
+ "minipass": "2.2.4"
}
},
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true
+ },
"yallist": {
"version": "3.0.2",
"bundled": true
@@ -9419,6 +9736,10 @@
"version": "0.2.0",
"bundled": true
},
+ "tiny-relative-date": {
+ "version": "1.3.0",
+ "bundled": true
+ },
"uid-number": {
"version": "0.0.6",
"bundled": true
@@ -9448,13 +9769,14 @@
"bundled": true
},
"update-notifier": {
- "version": "2.3.0",
+ "version": "2.5.0",
"bundled": true,
"requires": {
- "boxen": "1.2.1",
- "chalk": "2.1.0",
- "configstore": "3.1.1",
+ "boxen": "1.3.0",
+ "chalk": "2.4.1",
+ "configstore": "3.1.2",
"import-lazy": "2.1.0",
+ "is-ci": "1.1.0",
"is-installed-globally": "0.1.0",
"is-npm": "1.0.0",
"latest-version": "3.1.0",
@@ -9463,16 +9785,16 @@
},
"dependencies": {
"boxen": {
- "version": "1.2.1",
+ "version": "1.3.0",
"bundled": true,
"requires": {
"ansi-align": "2.0.0",
"camelcase": "4.1.0",
- "chalk": "2.1.0",
+ "chalk": "2.4.1",
"cli-boxes": "1.0.0",
"string-width": "2.1.1",
"term-size": "1.2.0",
- "widest-line": "1.0.0"
+ "widest-line": "2.0.0"
},
"dependencies": {
"ansi-align": {
@@ -9528,7 +9850,7 @@
"version": "5.1.0",
"bundled": true,
"requires": {
- "lru-cache": "4.1.1",
+ "lru-cache": "4.1.2",
"shebang-command": "1.2.0",
"which": "1.3.0"
},
@@ -9586,75 +9908,32 @@
}
},
"widest-line": {
- "version": "1.0.0",
+ "version": "2.0.0",
"bundled": true,
"requires": {
- "string-width": "1.0.2"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "number-is-nan": "1.0.1"
- },
- "dependencies": {
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- }
+ "string-width": "2.1.1"
}
}
}
},
"chalk": {
- "version": "2.1.0",
+ "version": "2.4.1",
"bundled": true,
"requires": {
- "ansi-styles": "3.2.0",
+ "ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
- "supports-color": "4.4.0"
+ "supports-color": "5.4.0"
},
"dependencies": {
"ansi-styles": {
- "version": "3.2.0",
+ "version": "3.2.1",
"bundled": true,
"requires": {
- "color-convert": "1.9.0"
+ "color-convert": "1.9.1"
},
"dependencies": {
"color-convert": {
- "version": "1.9.0",
+ "version": "1.9.1",
"bundled": true,
"requires": {
"color-name": "1.1.3"
@@ -9673,14 +9952,14 @@
"bundled": true
},
"supports-color": {
- "version": "4.4.0",
+ "version": "5.4.0",
"bundled": true,
"requires": {
- "has-flag": "2.0.0"
+ "has-flag": "3.0.0"
},
"dependencies": {
"has-flag": {
- "version": "2.0.0",
+ "version": "3.0.0",
"bundled": true
}
}
@@ -9688,12 +9967,12 @@
}
},
"configstore": {
- "version": "3.1.1",
+ "version": "3.1.2",
"bundled": true,
"requires": {
"dot-prop": "4.2.0",
"graceful-fs": "4.1.11",
- "make-dir": "1.0.0",
+ "make-dir": "1.2.0",
"unique-string": "1.0.0",
"write-file-atomic": "2.3.0",
"xdg-basedir": "3.0.0"
@@ -9713,14 +9992,14 @@
}
},
"make-dir": {
- "version": "1.0.0",
+ "version": "1.2.0",
"bundled": true,
"requires": {
- "pify": "2.3.0"
+ "pify": "3.0.0"
},
"dependencies": {
"pify": {
- "version": "2.3.0",
+ "version": "3.0.0",
"bundled": true
}
}
@@ -9744,23 +10023,36 @@
"version": "2.1.0",
"bundled": true
},
+ "is-ci": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "ci-info": "1.1.3"
+ },
+ "dependencies": {
+ "ci-info": {
+ "version": "1.1.3",
+ "bundled": true
+ }
+ }
+ },
"is-installed-globally": {
"version": "0.1.0",
"bundled": true,
"requires": {
- "global-dirs": "0.1.0",
- "is-path-inside": "1.0.0"
+ "global-dirs": "0.1.1",
+ "is-path-inside": "1.0.1"
},
"dependencies": {
"global-dirs": {
- "version": "0.1.0",
+ "version": "0.1.1",
"bundled": true,
"requires": {
"ini": "1.3.5"
}
},
"is-path-inside": {
- "version": "1.0.0",
+ "version": "1.0.1",
"bundled": true,
"requires": {
"path-is-inside": "1.0.2"
@@ -9784,7 +10076,7 @@
"bundled": true,
"requires": {
"got": "6.7.1",
- "registry-auth-token": "3.3.1",
+ "registry-auth-token": "3.3.2",
"registry-url": "3.1.0",
"semver": "5.5.0"
},
@@ -9799,8 +10091,8 @@
"is-redirect": "1.0.0",
"is-retry-allowed": "1.1.0",
"is-stream": "1.1.0",
- "lowercase-keys": "1.0.0",
- "safe-buffer": "5.1.1",
+ "lowercase-keys": "1.0.1",
+ "safe-buffer": "5.1.2",
"timed-out": "4.0.1",
"unzip-response": "2.0.1",
"url-parse-lax": "1.0.0"
@@ -9840,7 +10132,7 @@
"bundled": true
},
"lowercase-keys": {
- "version": "1.0.0",
+ "version": "1.0.1",
"bundled": true
},
"timed-out": {
@@ -9867,25 +10159,25 @@
}
},
"registry-auth-token": {
- "version": "3.3.1",
+ "version": "3.3.2",
"bundled": true,
"requires": {
- "rc": "1.2.1",
- "safe-buffer": "5.1.1"
+ "rc": "1.2.7",
+ "safe-buffer": "5.1.2"
},
"dependencies": {
"rc": {
- "version": "1.2.1",
+ "version": "1.2.7",
"bundled": true,
"requires": {
- "deep-extend": "0.4.2",
+ "deep-extend": "0.5.1",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
},
"dependencies": {
"deep-extend": {
- "version": "0.4.2",
+ "version": "0.5.1",
"bundled": true
},
"minimist": {
@@ -9904,21 +10196,21 @@
"version": "3.1.0",
"bundled": true,
"requires": {
- "rc": "1.2.1"
+ "rc": "1.2.7"
},
"dependencies": {
"rc": {
- "version": "1.2.1",
+ "version": "1.2.7",
"bundled": true,
"requires": {
- "deep-extend": "0.4.2",
+ "deep-extend": "0.5.1",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
},
"dependencies": {
"deep-extend": {
- "version": "0.4.2",
+ "version": "0.5.1",
"bundled": true
},
"minimist": {
@@ -9955,29 +10247,44 @@
"bundled": true
},
"validate-npm-package-license": {
- "version": "3.0.1",
+ "version": "3.0.3",
"bundled": true,
"requires": {
- "spdx-correct": "1.0.2",
- "spdx-expression-parse": "1.0.4"
+ "spdx-correct": "3.0.0",
+ "spdx-expression-parse": "3.0.0"
},
"dependencies": {
"spdx-correct": {
- "version": "1.0.2",
+ "version": "3.0.0",
"bundled": true,
"requires": {
- "spdx-license-ids": "1.2.2"
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.0"
},
"dependencies": {
"spdx-license-ids": {
- "version": "1.2.2",
+ "version": "3.0.0",
"bundled": true
}
}
},
"spdx-expression-parse": {
- "version": "1.0.4",
- "bundled": true
+ "version": "3.0.0",
+ "bundled": true,
+ "requires": {
+ "spdx-exceptions": "2.1.0",
+ "spdx-license-ids": "3.0.0"
+ },
+ "dependencies": {
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "bundled": true
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "bundled": true
+ }
+ }
}
}
},
@@ -10008,11 +10315,10 @@
}
},
"worker-farm": {
- "version": "1.5.4",
+ "version": "1.6.0",
"bundled": true,
"requires": {
- "errno": "0.1.7",
- "xtend": "4.0.1"
+ "errno": "0.1.7"
},
"dependencies": {
"errno": {
@@ -10027,10 +10333,6 @@
"bundled": true
}
}
- },
- "xtend": {
- "version": "4.0.1",
- "bundled": true
}
}
},
@@ -11441,8 +11743,8 @@
"requires": {
"hoist-non-react-statics": "2.5.0",
"invariant": "2.2.2",
- "lodash": "4.17.5",
- "lodash-es": "4.17.8",
+ "lodash": "4.17.10",
+ "lodash-es": "4.17.10",
"loose-envify": "1.3.1",
"prop-types": "15.6.1"
},
@@ -11453,14 +11755,14 @@
"integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
},
"lodash": {
- "version": "4.17.5",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
- "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
},
"lodash-es": {
- "version": "4.17.8",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.8.tgz",
- "integrity": "sha512-I9mjAxengFAleSThFhhAhvba6fsO0hunb9/0sQ6qQihSZsJRBofv2rYH58WXaOb/O++eUmYpCLywSQ22GfU+sA=="
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz",
+ "integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg=="
}
}
},
@@ -11502,9 +11804,9 @@
}
},
"react-table": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.0.tgz",
- "integrity": "sha1-XOQC63Nd9oU0wD2rs/qgMUeLalg=",
+ "version": "6.8.2",
+ "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.2.tgz",
+ "integrity": "sha1-Olrvq8hZUzANFnhvowfDBhDbmtw=",
"requires": {
"classnames": "2.2.5"
}
diff --git a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
index 099c20a43..a23dd1d36 100644
--- a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
+++ b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
@@ -1,8 +1,9 @@
import React from 'react';
-import {Col} from 'react-bootstrap';
+import {Button, Col} from 'react-bootstrap';
import JSONTree from 'react-json-tree'
import {DataTable} from 'react-data-components';
import AuthComponent from '../AuthComponent';
+import download from 'downloadjs'
const renderJson = (val) =>
Download Monkey Island internal log file
+ +