aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore9
-rw-r--r--README.rst61
-rw-r--r--VERSION1
-rw-r--r--docs/conf.py21
-rw-r--r--docs/functionality.rst32
-rw-r--r--docs/index.rst10
-rw-r--r--docs/installation.rst2
-rw-r--r--docs/introduction.rst5
-rw-r--r--docs/schemas.rst19
-rw-r--r--dodo.py295
-rw-r--r--node_modules.patch34
-rw-r--r--package.json62
-rw-r--r--playground/a01/.gitignore1
-rw-r--r--playground/a01/main.py112
-rw-r--r--playground/conf.yaml3
-rw-r--r--playground/config/domain.xml34
-rw-r--r--playground/config/network.xml10
-rw-r--r--playground/config/ssh.key27
-rw-r--r--playground/config/ssh.key.pub1
-rw-r--r--playground/env.sh7
-rwxr-xr-xplayground/execute.sh6
-rwxr-xr-xplayground/run.sh3
-rwxr-xr-xplayground/server.sh7
-rw-r--r--playground/server.yaml1
-rw-r--r--requirements.pip.dev.txt15
-rw-r--r--requirements.pip.doc.txt1
-rw-r--r--requirements.pip.run.txt5
-rw-r--r--requirements.pip.runtime.txt5
-rw-r--r--schemas_json/action.yaml15
-rw-r--r--schemas_json/logging.yaml123
-rw-r--r--schemas_json/message.yaml131
-rw-r--r--schemas_json/project.yaml102
-rw-r--r--schemas_json/server.yaml93
-rw-r--r--src_doit/__init__.py62
-rw-r--r--src_js/hatter/common.js66
-rw-r--r--src_js/hatter/main.js41
-rw-r--r--src_js/hatter/renderer.js153
-rw-r--r--src_js/hatter/util.js172
-rw-r--r--src_js/hatter/vt.js4
-rw-r--r--src_py/hatter/__init__.py0
-rw-r--r--src_py/hatter/__main__.py8
-rw-r--r--src_py/hatter/backend.py171
-rw-r--r--src_py/hatter/common.py10
-rw-r--r--src_py/hatter/executor.py197
-rw-r--r--src_py/hatter/main.py189
-rw-r--r--src_py/hatter/server.py163
-rw-r--r--src_py/hatter/util.py147
-rw-r--r--src_web/static/index.html10
-rw-r--r--src_web/style/main.scss6
-rw-r--r--webpack.config.js39
-rw-r--r--yarn.lock3828
51 files changed, 347 insertions, 6172 deletions
diff --git a/.gitignore b/.gitignore
index 003a56a..7d0bb47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,4 @@
-__pycache__
-/build
-/dist
/.doit.*
-/node_modules
-/src_py/hatter/json_validator.py
-/src_js/hatter/validator.js
+/build
+/src_py/hatter/json_schema_repo.json
+__pycache__
diff --git a/README.rst b/README.rst
index b9ae60e..0522eff 100644
--- a/README.rst
+++ b/README.rst
@@ -1,48 +1,45 @@
Hatter
======
-Hatter is continuous integration server. It provides isolated execution
-environments, for running automated actions, as virtual machines managed by
-libvirt.
+Hatter is continuous integration server/executor. It provides isolated
+execution environments, for running automated actions, as containers managed
+by podman.
Key features:
* automated projects based on git repositories
- * virtual machines as execution runners
- * virtual machine snapshots for consistent execution environments
+ * containers as execution runners
* per project configuration as YAML file inside project's repository
* web based control and monitoring interface
+ * webhook/periodic execution triggering
+ * CLI executor
Runtime requirements
--------------------
-* python >=3.6
-* libvirt
+* python >=3.8
+* podman
-Additional required python packages are listed in `requirements.pip.run.txt`.
+Additional required python packages are listed in
+`requirements.pip.runtime.txt`.
-Development requirements
-------------------------
+Running
+-------
-* nodejs >=7
-* yarn
-Additional required python packages are listed in `requirements.pip.dev.txt`.
+Server
+''''''
-Source
-------
+CLI executor
+''''''''''''
-Source code available at `<https://github.com/bozokopic/hatter>`_.
-
-Documentation
+Configuration
-------------
-Online documentation available at `<http://hatter.readthedocs.io>`_.
-
Build
-----
@@ -60,18 +57,24 @@ Default task::
$ doit
-creates `dist` folder containing Hatter distribution.
+creates `build` folder containing Hatter distribution.
-TODO
-----
+License
+-------
-* user interface - frontend
+hatter - continuous integration server/executor
+Copyright (C) 2017-2022 Bozo Kopic
- * create user interface
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
-* other
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
- * test functionality
- * write complete setup.py
- * distribution
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..0ea3a94
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.2.0
diff --git a/docs/conf.py b/docs/conf.py
deleted file mode 100644
index bc23583..0000000
--- a/docs/conf.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import sphinx_rtd_theme
-
-
-extensions = ['sphinx.ext.imgmath',
- 'sphinx.ext.graphviz',
- 'sphinx.ext.todo']
-
-project = 'Hatter'
-version = '0.0.1'
-copyright = '2017, Božo Kopić'
-master_doc = 'index'
-
-html_theme = 'sphinx_rtd_theme'
-html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
-html_use_index = False
-html_show_sourcelink = False
-html_show_sphinx = False
-html_sidebars = {
- '**': ['globaltoc.html', 'relations.html']}
-
-todo_include_todos = True
diff --git a/docs/functionality.rst b/docs/functionality.rst
deleted file mode 100644
index 6943f14..0000000
--- a/docs/functionality.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-Functionality
-=============
-
-Hatter is CI tool with emphasis on simple workflow based on virtual machine
-work executors. In contrast to most other CI tools, Hatter doesn't have
-specialized executors that need to be installed on machines that execute
-user defined commands. Each executor is generic VM with SSH daemon which
-is used for file transfer and execution of user defined commands. Therefore,
-Hatter is implemented as single daemon that orchestrates VMs lifecycle and
-remote command execution.
-
-
-Server
-------
-
-Hatter server daemon provides project execution orchestrator facility with
-web-based administration interface. It is configured with single YAML
-configuration defined by :ref:`JSON Schema <server-configuration>`. Single
-server instance can support automation of multiple projects.
-
-
-Project
--------
-
-Hatter project is represented by single git repository containing project
-configuration file - `.hatter.yml`. Configuration file is defined by
-:ref:`JSON Schema <project-configuration>`. This configuration can define
-multiple execution environments with appropriate execution commands.
-
-
-Execution environment
----------------------
diff --git a/docs/index.rst b/docs/index.rst
deleted file mode 100644
index 3ae48eb..0000000
--- a/docs/index.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Content
-=======
-
-.. toctree::
- :includehidden:
-
- introduction
- functionality
- installation
- schemas
diff --git a/docs/installation.rst b/docs/installation.rst
deleted file mode 100644
index 11e4437..0000000
--- a/docs/installation.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Installation
-============
diff --git a/docs/introduction.rst b/docs/introduction.rst
deleted file mode 100644
index c435c88..0000000
--- a/docs/introduction.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Introduction
-============
-
-.. include:: ../README.rst
- :start-line: 2
diff --git a/docs/schemas.rst b/docs/schemas.rst
deleted file mode 100644
index 4425ce3..0000000
--- a/docs/schemas.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-JSON Schemas
-============
-
-.. _project-configuration:
-
-Project configuration
----------------------
-
-.. literalinclude:: ../schemas_json/project.yaml
-
-
-.. _server-configuration:
-
-Server configuration
---------------------
-
-.. literalinclude:: ../schemas_json/server.yaml
-
-.. literalinclude:: ../schemas_json/logging.yaml
diff --git a/dodo.py b/dodo.py
index 94266d3..c9fc571 100644
--- a/dodo.py
+++ b/dodo.py
@@ -1,293 +1,6 @@
-import sys
-import os
-import shutil
-import json
-import yaml
-import subprocess
-from pathlib import Path
-from doit.action import CmdAction
+from hat.doit import common
+DOIT_CONFIG = common.init(python_paths=['src_py'],
+ default_tasks=['wheel'])
-sys.path += ['src_py']
-os.environ['PYTHONPATH'] = os.path.abspath('src_py')
-
-DOIT_CONFIG = {
- 'backend': 'sqlite3',
- 'default_tasks': ['dist_build'],
- 'verbosity': 2}
-
-
-# ######################## utility functions #################################
-
-def mkdir_p(*paths):
- for path in paths:
- os.makedirs(str(Path(path)), exist_ok=True)
-
-
-def rm_rf(*paths):
- for path in paths:
- p = Path(path)
- if not p.exists():
- continue
- if p.is_dir():
- shutil.rmtree(str(p), ignore_errors=True)
- else:
- p.unlink()
-
-
-def cp_r(src, dest):
- src = Path(src)
- dest = Path(dest)
- if src.is_dir():
- shutil.copytree(str(src), str(dest))
- else:
- shutil.copy2(str(src), str(dest))
-
-
-# ########################## global tasks ####################################
-
-def task_clean_all():
- """Clean all"""
-
- return {'actions': [(rm_rf, ['build', 'dist'])],
- 'task_dep': ['pyhatter_clean',
- 'jshatter_clean',
- 'docs_clean',
- 'dist_clean']}
-
-
-def task_gen_all():
- """Generate all"""
-
- return {'actions': None,
- 'task_dep': ['pyhatter_gen',
- 'jshatter_gen']}
-
-
-def task_check_all():
- """Check all"""
-
- return {'actions': None,
- 'task_dep': ['pyhatter_check']}
-
-
-# ############################ dist tasks #####################################
-
-def task_dist_clean():
- """Distribution - clean"""
-
- return {'actions': [(rm_rf, ['dist'])]}
-
-
-def task_dist_build():
- """Distribution - build (DEFAULT)"""
-
- def generate_setup_py():
- with open('dist/setup.py', 'w', encoding='utf-8') as f:
- f.write('\n')
-
- return {'actions': [(rm_rf, ['dist']),
- (cp_r, ['build/pyhatter', 'dist']),
- (cp_r, ['build/jshatter', 'dist/hatter/web']),
- generate_setup_py],
- 'task_dep': [
- 'gen_all',
- 'pyhatter_build',
- 'jshatter_build']}
-
-
-# ########################## pyhatter tasks ###################################
-
-def task_pyhatter_clean():
- """PyHatter - clean"""
-
- return {'actions': [(rm_rf, ['build/pyhatter',
- 'src_py/hatter/json_validator.py'])]}
-
-
-def task_pyhatter_build():
- """PyHatter - build"""
-
- generated_files = {Path('src_py/hatter/json_validator.py')}
-
- def compile(src_path, dst_path):
- mkdir_p(dst_path.parent)
- # if src_path.suffix == '.py':
- # py_compile.compile(src_path, dst_path.with_suffix('.pyc'),
- # doraise=True)
- # else:
- # cp_r(src_path, dst_path)
- cp_r(src_path, dst_path)
-
- def create_subtask(src_path):
- dst_path = Path('build/pyhatter') / src_path.relative_to('src_py')
- return {'name': str(src_path),
- 'actions': [(compile, [src_path, dst_path])],
- 'file_dep': [src_path],
- 'targets': [dst_path]}
-
- for src_path in generated_files:
- yield create_subtask(src_path)
-
- for dirpath, dirnames, filenames in os.walk('src_py'):
- if '__pycache__' in dirnames:
- dirnames.remove('__pycache__')
- for i in filenames:
- src_path = Path(dirpath) / i
- if src_path not in generated_files:
- yield create_subtask(src_path)
-
-
-def task_pyhatter_check():
- """PyHatter - run flake8"""
-
- return {'actions': [CmdAction('python -m flake8 .', cwd='src_py')]}
-
-
-def task_pyhatter_gen():
- """PyHatter - generate additional python modules"""
-
- return {'actions': None,
- 'task_dep': ['pyhatter_gen_json_validator']}
-
-
-def task_pyhatter_gen_json_validator():
- """PyHatter - generate json validator"""
-
- schema_files = list(Path('schemas_json').glob('**/*.yaml'))
- output_file = Path('src_py/hatter/json_validator.py')
-
- def parse_schemas():
- schemas = {}
- for schema_file in schema_files:
- with open(schema_file, encoding='utf-8') as f:
- data = yaml.safe_load(f)
- if data['id'] in schemas:
- raise Exception("duplicate schema id " + data['id'])
- schemas[data['id']] = data
- return schemas
-
- def generate_output():
- schemas = parse_schemas()
- with open(output_file, 'w', encoding='utf-8') as f:
- f.write(
- '# pylint: skip-file\n'
- 'import jsonschema\n\n\n'
- '_schemas = ' + repr(schemas) + ' # NOQA\n\n\n'
- 'def validate(data, schema_id):\n'
- ' """ Validate data with JSON schema\n\n'
- ' Args:\n'
- ' data: validated data\n'
- ' schema_id (str): JSON schema identificator\n\n'
- ' Raises:\n'
- ' Exception: validation fails\n\n'
- ' """\n'
- ' base_uri = schema_id.split("#")[0] + "#"\n'
- ' fragment = schema_id.split("#")[1] if "#" in schema_id else ""\n' # NOQA
- ' resolver = jsonschema.RefResolver(\n'
- ' base_uri=base_uri,\n'
- ' referrer=_schemas[base_uri],\n'
- ' handlers={"hat": lambda x: _schemas[x + "#"]})\n'
- ' jsonschema.validate(\n'
- ' instance=data,\n'
- ' schema=resolver.resolve_fragment(resolver.referrer, fragment),\n' # NOQA
- ' resolver=resolver)\n')
-
- return {'actions': [generate_output],
- 'file_dep': schema_files,
- 'targets': [output_file]}
-
-
-# ########################## jshatter tasks ###################################
-
-def task_jshatter_clean():
- """JsHatter - clean"""
-
- return {'actions': [(rm_rf, ['build/jshatter',
- 'src_js/hatter/validator.js'])]}
-
-
-def task_jshatter_install_deps():
- """JsHatter - install dependencies"""
-
- def patch():
- subprocess.Popen(['patch', '-r', '/dev/null', '--forward', '-p0',
- '-i', 'node_modules.patch'],
- stdout=subprocess.DEVNULL,
- stderr=subprocess.DEVNULL).wait()
-
- return {'actions': ['yarn install',
- patch]}
-
-
-def task_jshatter_remove_deps():
- """JsHatter - remove dependencies"""
-
- return {'actions': [(rm_rf, ['node_modules', 'yarn.lock'])]}
-
-
-def task_jshatter_gen():
- """JsHatter - generate additional JavaScript modules"""
-
- return {'actions': None,
- 'task_dep': ['jshatter_gen_validator']}
-
-
-def task_jshatter_gen_validator():
- """JsHatter - generate json validator"""
-
- schema_files = list(Path('schemas_json').glob('**/*.yaml'))
- output_file = Path('src_js/hatter/validator.js')
-
- def parse_schemas():
- for schema_file in schema_files:
- with open(schema_file, encoding='utf-8') as f:
- yield yaml.safe_load(f)
-
- def generate_output():
- schemas_json = json.dumps(list(parse_schemas()), indent=4)
- with open(output_file, 'w', encoding='utf-8') as f:
- f.write(
- 'import tv4 from "tv4";\n\n\n' +
- schemas_json + '.forEach(i => tv4.addSchema(i.id, i));\n\n\n' +
- 'export function validate(data, schemaId) {\n' +
- ' return tv4.validate(data, tv4.getSchema(schemaId));\n' +
- '}\n')
-
- return {'actions': [generate_output],
- 'file_dep': schema_files,
- 'targets': [output_file]}
-
-
-def task_jshatter_build():
- """JsHatter - build"""
-
- return {'actions': ['yarn run build'],
- 'task_dep': ['jshatter_install_deps', 'jshatter_gen']}
-
-
-def task_jshatter_watch():
- """JsHatter - build on change"""
-
- return {'actions': ['yarn run watch'],
- 'task_dep': ['jshatter_install_deps', 'jshatter_gen']}
-
-
-# ############################ docs tasks #####################################
-
-def task_docs_clean():
- """Docs - clean"""
-
- return {'actions': [(rm_rf, ['build/docs'])]}
-
-
-def task_docs_build():
- """Docs - build documentation"""
-
- def build_html(src, dest):
- mkdir_p(Path(dest).parent)
- subprocess.Popen([
- 'sphinx-build', '-q', '-b', 'html',
- str(Path(src)), str(Path(dest))]).wait()
-
- return {'actions': [(build_html, ['docs', 'build/docs'])]}
+from src_doit import * # NOQA
diff --git a/node_modules.patch b/node_modules.patch
deleted file mode 100644
index 716a9c9..0000000
--- a/node_modules.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- node_modules/virtual-dom/vdom/apply-properties.js
-+++ node_modules/virtual-dom/vdom/apply-properties.js
-@@ -36,9 +36,7 @@
- node.removeAttribute(attrName)
- }
- } else if (propName === "style") {
-- for (var i in previousValue) {
-- node.style[i] = ""
-- }
-+ node.style = ""
- } else if (typeof previousValue === "string") {
- node[propName] = ""
- } else {
-
-
---- node_modules/virtual-dom/virtual-hyperscript/index.js
-+++ node_modules/virtual-dom/virtual-hyperscript/index.js
-@@ -40,16 +40,6 @@
- props.namespace = undefined;
- }
-
-- // fix cursor bug
-- if (tag === 'INPUT' &&
-- !namespace &&
-- props.hasOwnProperty('value') &&
-- props.value !== undefined &&
-- !isHook(props.value)
-- ) {
-- props.value = softSetHook(props.value);
-- }
--
- transformProperties(props);
-
- if (children !== undefined && children !== null) {
diff --git a/package.json b/package.json
deleted file mode 100644
index 03c5002..0000000
--- a/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "hatter",
- "version": "0.0.1",
- "license": "GPL-3.0",
- "scripts": {
- "build": "webpack",
- "watch": "webpack -w"
- },
- "devDependencies": {
- "alertifyjs": "1.9.0",
- "babel-core": "6.23.1",
- "babel-loader": "6.3.2",
- "babel-plugin-transform-async-to-generator": "6.22.0",
- "babel-plugin-transform-async-to-module-method": "6.22.0",
- "babel-plugin-transform-decorators": "6.22.0",
- "babel-plugin-transform-runtime": "6.23.0",
- "babel-preset-es2015": "6.22.0",
- "babel-runtime": "6.23.0",
- "bean": "1.0.15",
- "bluebird": "3.4.7",
- "bytebuffer": "5.0.1",
- "core-decorators": "0.15.0",
- "css-loader": "0.26.1",
- "dom-delegator": "13.1.0",
- "exports-loader": "0.6.3",
- "file-loader": "0.10.0",
- "file-saver": "1.3.3",
- "font-awesome": "4.7.0",
- "hint.css": "2.4.1",
- "hyperscript": "2.0.2",
- "imports-loader": "0.7.0",
- "individual": "3.0.0",
- "js-yaml": "3.8.1",
- "jshashes": "1.0.6",
- "json-formatter-js": "1.3.0",
- "json-loader": "0.5.4",
- "loglevel": "1.4.1",
- "long": "3.2.0",
- "material-design-lite": "1.3.0",
- "moment": "2.17.1",
- "node-css": "0.1.0",
- "node-sass": "4.5.0",
- "normalize.css": "5.0.0",
- "papaparse": "4.1.4",
- "purecss": "0.6.2",
- "ramda": "0.23.0",
- "raw-loader": "0.5.1",
- "resolve-url-loader": "2.0.0",
- "roboto-fontface": "0.7.0",
- "roboto-mono-webfont": "2.0.986",
- "sass-loader": "6.0.1",
- "style-loader": "0.13.1",
- "tern": "0.21.0",
- "tmp": "0.0.31",
- "tv4": "1.2.7",
- "url-loader": "0.5.7",
- "url-parse": "1.1.8",
- "virtual-dom": "2.1.1",
- "webpack": "2.2.1",
- "yaml-loader": "0.4.0"
- }
-}
diff --git a/playground/a01/.gitignore b/playground/a01/.gitignore
deleted file mode 100644
index 09d06c8..0000000
--- a/playground/a01/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-repository
diff --git a/playground/a01/main.py b/playground/a01/main.py
deleted file mode 100644
index 9f96465..0000000
--- a/playground/a01/main.py
+++ /dev/null
@@ -1,112 +0,0 @@
-import libvirt
-import sys
-import time
-import git
-import os
-import shutil
-import pathlib
-import tempfile
-import paramiko.client
-import paramiko.rsakey
-
-
-def main():
- repo_path = 'repository'
- conf = {'domain': 'archlinux',
- 'ssh_username': 'root',
- 'ssh_password': 'archlinux',
- 'script': ['pwd',
- 'ls',
- 'cat test.txt']}
- with tempfile.TemporaryDirectory() as tmpdir:
- repo_arch_path = str(
- (pathlib.Path(tmpdir) / 'hatter_archive.tar').absolute())
- init_git_archive(repo_path, repo_arch_path)
- execute_libvirt(conf, repo_arch_path)
-
-
-def init_git_archive(repo_path, repo_arch_path):
- shutil.rmtree(repo_path, ignore_errors=True)
- os.mkdir(repo_path)
- with open(pathlib.Path(repo_path) / 'test.txt', 'w',
- encoding='utf-8') as f:
- f.write('test123\n')
- g = git.Git(repo_path)
- g.init()
- g.add('.')
- g.commit(m='init')
- g.archive('HEAD', o=repo_arch_path)
-
-
-def execute_libvirt(conf, repo_arch_path):
- conn = libvirt.open(conf.get('uri', 'qemu:///system'))
- domain = conn.lookupByName(conf['domain'])
- if domain.isActive():
- domain.destroy()
- snapshot_names = domain.snapshotListNames()
- if 'temp_hatter' in snapshot_names:
- domain.snapshotLookupByName('temp_hatter').delete()
- origin_snapshot = domain.snapshotCreateXML(
- "<domainsnapshot><name>temp_hatter</name></domainsnapshot>")
- snapshot_name = conf.get('snapshot')
- if snapshot_name:
- snapshot = domain.snapshotLookupByName(snapshot_name)
- if snapshot:
- domain.revertToSnapshot(snapshot)
- domain.create()
- address = None
- for _ in range(10):
- addresses = domain.interfaceAddresses(0)
- for i in addresses.values():
- for j in i['addrs']:
- address = j['addr']
- break
- if address:
- execute_ssh(conf, address, repo_arch_path)
- break
- time.sleep(1)
- domain.destroy()
- domain.revertToSnapshot(origin_snapshot)
- origin_snapshot.delete()
- conn.close()
-
-
-def execute_ssh(conf, address, repo_arch_path):
- conn = paramiko.client.SSHClient()
- conn.set_missing_host_key_policy(paramiko.client.AutoAddPolicy)
- connected = False
- for _ in range(10):
- try:
- conn.connect(address, username=conf['ssh_username'],
- password=conf['ssh_password'],
- timeout=1, auth_timeout=1)
- connected = True
- break
- except Exception as e:
- time.sleep(5)
- if not connected:
- return
- sftp_conn = conn.open_sftp()
- sftp_conn.put(repo_arch_path, 'hatter_archive.tar')
- sftp_conn.close()
- execute_ssh_cmd(conn, 'rm -rf hatter_archive', '.')
- execute_ssh_cmd(conn, 'mkdir hatter_archive', '.')
- execute_ssh_cmd(conn, 'tar xf hatter_archive.tar -C hatter_archive', '.')
- for cmd in conf['script']:
- print('>> ', cmd)
- stdout, stderr = execute_ssh_cmd(conn, cmd, 'hatter_archive')
- print('>>>> stdout')
- print(stdout, end='')
- print('>>>> stderr')
- print(stderr)
- conn.close()
-
-
-def execute_ssh_cmd(conn, cmd, cwd):
- _, ssh_stdout, ssh_stderr = conn.exec_command(
- 'cd {} && {}'.format(cwd, cmd))
- return ssh_stdout.read().decode('utf-8'), ssh_stderr.read().decode('utf-8')
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/playground/conf.yaml b/playground/conf.yaml
deleted file mode 100644
index efee9fe..0000000
--- a/playground/conf.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-repositories: []
-...
diff --git a/playground/config/domain.xml b/playground/config/domain.xml
deleted file mode 100644
index 7091c12..0000000
--- a/playground/config/domain.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<domain type='kvm'>
- <name>archlinux</name>
- <os>
- <type>hvm</type>
- <boot dev='hd'/>
- </os>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>destroy</on_crash>
- <memory unit="G">1</memory>
- <pm>
- <suspend-to-mem enabled='no'/>
- <suspend-to-disk enabled='no'/>
- </pm>
- <features>
- <acpi/>
- <apic/>
- </features>
- <clock offset='utc'/>
- <devices>
- <emulator>/usr/bin/qemu-system-x86_64</emulator>
- <disk type='file'>
- <driver name='qemu' type='qcow2'/>
- <source file='/srv/libvirt/archlinux.qcow2'/>
- <target dev='hda' bus='virtio'/>
- </disk>
- <interface type='network'>
- <source network="default"/>
- </interface>
- <video>
- <model type='vga' vram='65536' heads='1'/>
- </video>
- </devices>
-</domain>
diff --git a/playground/config/network.xml b/playground/config/network.xml
deleted file mode 100644
index f64eedc..0000000
--- a/playground/config/network.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<network>
- <name>default</name>
- <bridge name="virbr0"/>
- <forward mode="nat"/>
- <ip address="10.0.0.1" netmask="255.255.255.0">
- <dhcp>
- <range start="10.0.0.10" end="10.0.0.100"/>
- </dhcp>
- </ip>
-</network>
diff --git a/playground/config/ssh.key b/playground/config/ssh.key
deleted file mode 100644
index 57eb86e..0000000
--- a/playground/config/ssh.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA9t4sSxeHa8A0TwMOzD9M9OITtcbl3rki/QfBLIFBkKlP24Tx
-BOH5dRfWq0LC7j1+ViDUyBEuPw513ADxuwUhpLbhelkDM7rrmobXvKfYfKlK6mtn
-RA2tFSeJNmWO7Cz3VYR3JWUgG5TGowXWHRx42MP7fzmbWKd2HSVUUmKVONb98YjW
-nZFTmBaV53lHfVLCKitxsToFL0uGzqFSMt27BK9GDaCA159zC4G7YqjiqxkqA5UY
-x2IbMFKMd7eAKw/yCdBRuCWGYFvjPlHj1m4zCHZsfFQ5fYrO9NFd2ieYxQBgSfJ+
-cDSmiaXXWWfooaG0h2UKMkrqU0YmHGOA2c/xJwIDAQABAoIBAE0Q4Iz0pG7ryqib
-0MPMQw7zgKmvlNUpwJVzFUf6deheIrLp1n/qt4BpV7eRGN9czRLAHwzx6BkBP6PV
-m6EBohYUjWEvZoOAp8pOrAyV7UxFYUC7FLq29kBzXi9gFvT9uJy2xKck4ZgaosQD
-r2rZF5S74cg+yJMte/7vR1qMsf7S6eyrDVMQGP6c0apMT1GxmcAHx9T71ePoYnD2
-faUzr+lVnTLGB6wv1cyaF/Nrt/leskBJ0qmKfkWMRc2uPPPDIvGW39z9OIoPqlEr
-4RKqwvyqRzh0uQ/4tpZzMQTfQQSzQ3B9gxCyox7Fc8z/KOSVHzbFso9FCjidCtxR
-054KmqkCgYEA/r1tdovJzv7AYJeeEV81VFCwtxIg2T04JhhfYiGg/MSSp4Jc05UM
-ivVn9VIyjj9kP0mFTSH/4zLFpo9jp7a/HTfqOK6fIT0p8bQ/PJ8ZZ7cQN1MsV7bh
-YaXaUF8Oh/yidnZC3dH1ByVrvZC8DolGlpLAvl8i66kUXGvHvnuYNB0CgYEA+BbG
-84ge1O9aLxEKzW9soTglFJREMT3jMvK7oUPvYy6JhjoKbM3CnkFSQx+k+QA5wgKf
-Z+bWGjWZ3paOP1wgmRl/3/ST08W79I6WaQVBx28DiGypyJ3V0/lkfxvsAhsPhM0n
-qya+ASYuYa1OZR2sdykyYA74+lor8DzEwIfB7xMCgYEA9516QbkvuZ23siyu4YQC
-eqrUm59rfr8bTSxzyxeVPR52z4zQXnqLbqeNHdGAgvTrpPj6MjfSXC6GIZlP7T6e
-FvC7I83ZsJ2bn+7taSfdsgsoIB8hA0IpYpms1GMR5O2VnkDmTmhAHWoqiGGf6yFV
-FBgicupXL2ty90NtLaNGF6ECgYAcvE6pEKA5m8u/XeL5bqmPdvhcjNvlNDznvtPa
-1wqYW2CUio6Akci0Ge7UVYr/SHZoMXOTTlqISKMc9CVf02T3Nsvn/eVNhz7BEe78
-FR7MYeBv4d48nYOR/PYV/v70M3w1rqmkmmUxruF6cN9+uNQsLTpng/R00xL5zaAg
-iNj+vwKBgQCbPS90lQ+d3YSB0W5kdBigTfgMASwFiENXHEPReTTDi73y9AQL8yh7
-fhwegAxBuKYUMqUh/yjE/lWE9j+TjLufPOLq3K0C+xoOQExuZ7+xEg9SjIju+Fj5
-iebkM6IzOZtiCNZXEQvJiHj6aTM6wTy8OhuLry04ayXvJ6Kmj63lsw==
------END RSA PRIVATE KEY-----
diff --git a/playground/config/ssh.key.pub b/playground/config/ssh.key.pub
deleted file mode 100644
index a3c6b6f..0000000
--- a/playground/config/ssh.key.pub
+++ /dev/null
@@ -1 +0,0 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD23ixLF4drwDRPAw7MP0z04hO1xuXeuSL9B8EsgUGQqU/bhPEE4fl1F9arQsLuPX5WINTIES4/DnXcAPG7BSGktuF6WQMzuuuahte8p9h8qUrqa2dEDa0VJ4k2ZY7sLPdVhHclZSAblMajBdYdHHjYw/t/OZtYp3YdJVRSYpU41v3xiNadkVOYFpXneUd9UsIqK3GxOgUvS4bOoVIy3bsEr0YNoIDXn3MLgbtiqOKrGSoDlRjHYhswUox3t4ArD/IJ0FG4JYZgW+M+UePWbjMIdmx8VDl9is700V3aJ5jFAGBJ8n5wNKaJpddZZ+ihobSHZQoySupTRiYcY4DZz/En bozo@bart
diff --git a/playground/env.sh b/playground/env.sh
new file mode 100644
index 0000000..b39dc8b
--- /dev/null
+++ b/playground/env.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+PYTHON=${PYTHON:-python}
+RUN_PATH=$(cd $(dirname -- "$0") && pwd)
+ROOT_PATH=$RUN_PATH/..
+
+export PYTHONPATH=$ROOT_PATH/src_py
diff --git a/playground/execute.sh b/playground/execute.sh
new file mode 100755
index 0000000..0325904
--- /dev/null
+++ b/playground/execute.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+. $(dirname -- "$0")/env.sh
+
+exec $PYTHON -m hatter execute \
+ "$@"
diff --git a/playground/run.sh b/playground/run.sh
deleted file mode 100755
index 7302d7b..0000000
--- a/playground/run.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-PYTHONPATH="../src_py" python -m hatter.main -c conf.yaml --web-path ../build/jshatter $*
diff --git a/playground/server.sh b/playground/server.sh
new file mode 100755
index 0000000..8011973
--- /dev/null
+++ b/playground/server.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+. $(dirname -- "$0")/env.sh
+
+exec $PYTHON -m hatter server \
+ --conf server.yaml \
+ "$@"
diff --git a/playground/server.yaml b/playground/server.yaml
new file mode 100644
index 0000000..0ebc807
--- /dev/null
+++ b/playground/server.yaml
@@ -0,0 +1 @@
+repos: {}
diff --git a/requirements.pip.dev.txt b/requirements.pip.dev.txt
index 764e73e..9af3242 100644
--- a/requirements.pip.dev.txt
+++ b/requirements.pip.dev.txt
@@ -1,7 +1,8 @@
-doit
-aiohttp
-libvirt-python
-pyyaml
-paramiko
-setuptools
-sphinx
+-r requirements.pip.runtime.txt
+
+build >= 0.7.0
+doit >= 0.34.2
+flake8 >= 4.0.1
+hat-doit ~= 0.8.1
+setuptools >= 60.10.0
+wheel >= 0.37.1
diff --git a/requirements.pip.doc.txt b/requirements.pip.doc.txt
deleted file mode 100644
index 6966869..0000000
--- a/requirements.pip.doc.txt
+++ /dev/null
@@ -1 +0,0 @@
-sphinx
diff --git a/requirements.pip.run.txt b/requirements.pip.run.txt
deleted file mode 100644
index 2471761..0000000
--- a/requirements.pip.run.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-aiohttp
-libvirt-python
-pyyaml
-paramiko
-setuptools
diff --git a/requirements.pip.runtime.txt b/requirements.pip.runtime.txt
new file mode 100644
index 0000000..c5fec48
--- /dev/null
+++ b/requirements.pip.runtime.txt
@@ -0,0 +1,5 @@
+aiohttp ~= 3.8.1
+appdirs ~= 1.4.4
+click ~= 8.0.3
+hat-aio ~= 0.6.0
+hat-json ~= 0.5.5
diff --git a/schemas_json/action.yaml b/schemas_json/action.yaml
new file mode 100644
index 0000000..67f6550
--- /dev/null
+++ b/schemas_json/action.yaml
@@ -0,0 +1,15 @@
+---
+"$schema": "http://json-schema.org/schema#"
+id: "hatter://action.yaml#"
+type: object
+required:
+ - image
+ - command
+properties:
+ image:
+ type: string
+ description: container image
+ command:
+ type: string
+ description: shell commands
+...
diff --git a/schemas_json/logging.yaml b/schemas_json/logging.yaml
deleted file mode 100644
index 3c2bdfe..0000000
--- a/schemas_json/logging.yaml
+++ /dev/null
@@ -1,123 +0,0 @@
----
-"$schema": "http://json-schema.org/schema#"
-id: "hatter://logging.yaml#"
-title: Logging
-description: Logging configuration
-type: object
-required:
- - version
-properties:
- version:
- title: Version
- type: integer
- default: 1
- formatters:
- title: Formatters
- type: object
- patternProperties:
- "(.)+":
- title: Formatter
- type: object
- properties:
- format:
- title: Format
- type: string
- default: null
- datefmt:
- title: Date format
- type: string
- default: null
- filters:
- title: Filters
- type: object
- patternProperties:
- "(.)+":
- title: Filter
- type: object
- properties:
- name:
- title: Logger name
- type: string
- default: ''
- handlers:
- title: Handlers
- type: object
- patternProperties:
- "(.)+":
- title: Handler
- type: object
- description: |
- Additional properties are passed as keyword arguments to
- constructor
- required:
- - class
- properties:
- class:
- title: Class
- type: string
- level:
- title: Level
- type: string
- formatter:
- title: Formatter
- type: string
- filters:
- title: Filters
- type: array
- items:
- title: Filter id
- type: string
- loggers:
- title: Loggers
- type: object
- patternProperties:
- "(.)+":
- title: Logger
- type: object
- properties:
- level:
- title: Level
- type: string
- propagate:
- title: Propagate
- type: boolean
- filters:
- title: Filters
- type: array
- items:
- title: Filter id
- type: string
- handlers:
- title: Handlers
- type: array
- items:
- title: Handler id
- type: string
- root:
- title: Root logger
- type: object
- properties:
- level:
- title: Level
- type: string
- filters:
- title: Filters
- type: array
- items:
- title: Filter id
- type: string
- handlers:
- title: Handlers
- type: array
- items:
- title: Handler id
- type: string
- incremental:
- title: Incremental configuration
- type: boolean
- default: false
- disable_existing_loggers:
- title: Disable existing loggers
- type: boolean
- default: true
-...
diff --git a/schemas_json/message.yaml b/schemas_json/message.yaml
deleted file mode 100644
index 7f89ed3..0000000
--- a/schemas_json/message.yaml
+++ /dev/null
@@ -1,131 +0,0 @@
----
-"$schema": "http://json-schema.org/schema#"
-id: "hatter://message.yaml#"
-title: Message
-description: Backend-frontend communication messages
-oneOf:
- - "$ref": "hatter://message.yaml#/definitions/client_message"
- - "$ref": "hatter://message.yaml#/definitions/server_message"
-definitions:
- client_message:
- title: Client message
- description: Message sent by frontend
- oneOf:
- - title: Set log
- type: object
- required:
- - type
- - offset
- - limit
- properties:
- type:
- enum:
- - set_log
- offset:
- type: integer
- limit:
- type: integer
- - title: Add job
- type: object
- required:
- - type
- - repository
- - commit
- properties:
- type:
- enum:
- - add_job
- repository:
- type: string
- commit:
- type: string
- server_message:
- title: Server message
- description: Message sent by backend
- oneOf:
- - title: Active job
- type: object
- required:
- - type
- - job
- properties:
- type:
- enum:
- - active_job
- job:
- oneOf:
- - type: 'null'
- - "$ref": "hatter://message.yaml#/definitions/job"
- - title: Job queue
- type: object
- required:
- - type
- - jobs
- properties:
- type:
- enum:
- - job_queue
- jobs:
- type: array
- items:
- "$ref": "hatter://message.yaml#/definitions/job"
- - title: Log entries
- type: object
- required:
- - type
- - entries
- properties:
- type:
- enum:
- - log_entries
- entries:
- type: array
- items:
- "$ref": "hatter://message.yaml#/definitions/log_entry"
- - title: repositories
- type: object
- required:
- - type
- - repositories
- properties:
- type:
- enum:
- - repositories
- repositories:
- type: array
- items:
- type: string
-
- job:
- type: object
- required:
- - id
- - timestamp
- - repository
- - commit
- properties:
- id:
- type: integer
- timestamp:
- type: integer
- repository:
- type: string
- commit:
- type: string
- log_entry:
- type: object
- required:
- - timestamp
- - repository
- - commit
- - message
- properties:
- timestamp:
- type: integer
- repository:
- type: string
- commit:
- type: string
- message:
- type: string
-...
diff --git a/schemas_json/project.yaml b/schemas_json/project.yaml
deleted file mode 100644
index 7a66914..0000000
--- a/schemas_json/project.yaml
+++ /dev/null
@@ -1,102 +0,0 @@
----
-"$schema": "http://json-schema.org/schema#"
-id: "hatter://project.yaml#"
-title: Project
-description: Project configuration
-type: array
-items:
- type: object
- description: Single execution environment
- required:
- - vm
- - ssh
- - script
- properties:
- vm:
- title: VM
- description: VM configuration
- type: object
- required:
- - domain
- properties:
- uri:
- title: URI
- description: Libvirt URI
- type: string
- default: "qemu:///system"
- domain:
- title: Domain
- description: |
- Domain registered with libvirt used as execution
- environment
- type: string
- snapshot:
- title: Snapshot
- description: |
- Snapshot used as initial execution environment state
- type: string
- temp_snapshot:
- title: Temporary snapshot
- description: |
- Snapshot used for storing initial domain state
- type: string
- default: temp_hatter
- get_address_retry_count:
- title: Get address retry count
- description: |
- Maximum number of retries for obtaining running VM guest
- IP address
- type: integer
- default: 10
- get_address_delay:
- title: Get address delay
- description: |
- Delay in seconds between successive get address requests
- type: number
- default: 5
- ssh:
- title: SSH
- description: VM guest SSH daemon configuration
- type: object
- required:
- - username
- - password
- properties:
- username:
- title: Username
- description: Username for connecting to VM guest SSH daemon
- type: string
- password:
- title: Password
- description: Password for connecting to VM guest SSH daemon
- type: string
- connect_retry_count:
- title: Connect retry count
- description: |
- Maximum number of connect retries
- type: integer
- default: 10
- connect_delay:
- title: Connect delay
- description: |
- Delay in seconds between successive connect calls
- type: number
- default: 5
- connect_timeout:
- title: Connect timeout
- description: |
- Single connect's TCP connect timeout and authenticate
- timeout in seconds
- type: number
- default: 1
- script:
- title: Script
- description: |
- List of shell commands executed inside VM guest
- type: array
- items:
- title: Command
- description: |
- Single shell command
- type: string
-...
diff --git a/schemas_json/server.yaml b/schemas_json/server.yaml
index 4a576b2..c44528a 100644
--- a/schemas_json/server.yaml
+++ b/schemas_json/server.yaml
@@ -1,37 +1,70 @@
---
"$schema": "http://json-schema.org/schema#"
id: "hatter://server.yaml#"
-title: Server
-description: Server configuration
type: object
required:
- - repositories
+ - repos
properties:
- log:
- "$ref": "hatter://logging.yaml#"
- host:
- title: Host
- description: Listening host name
- type: string
- default: "0.0.0.0"
- port:
- title: TCP port
- description: Listening TCP port
- type: integer
- default: 24000
- db_path:
- title: DB path
- description: SQLite database path
- type: string
- default: hatter.db
- webhook_path:
- title: Webhook path
- type: string
- default: '/webhook'
- repositories:
- title: Repositories
- description: List of all repository urls
- type: array
- items:
- type: string
+ env:
+ type: object
+ description: |
+ environment variables avaliable to all repositories
+ (keys represent variable names)
+ patternProperties:
+ ".+":
+ type: string
+ description: environment variable value
+ repos:
+ type: object
+ description: git repositories (keys represent repository names)
+ patternProperties:
+ ".+":
+ type: object
+ required:
+ - url
+ properties:
+ url:
+ type: string
+ description: remote repository location
+ refs:
+ type: array
+ description: git references used for commit listing
+ items:
+ type: string
+ default:
+ - "refs/heads/*"
+ actions:
+ type: array
+ decription: action file paths inside repository
+ items:
+ type: string
+ default:
+ - ".hatter.yaml"
+ min_sync_delay:
+ type:
+ - number
+ - "null"
+ description: |
+ minimum time delay (in seconds) between
+ two consecutive remote ref synchronizations
+ (null disables synchronization limiting)
+ default: 5
+ max_sync_delay:
+ type:
+ - number
+ - "null"
+ description: |
+ maximum time delay (in seconds) between
+ two consecutive remote ref synchronizations
+ (null disables periodic synchronization)
+ default: null
+ env:
+ type: object
+ description: |
+ environment variables avaliable to this repository
+ (keys represent variable names)
+ patternProperties:
+ ".+":
+ type: string
+ description: environment variable value
...
diff --git a/src_doit/__init__.py b/src_doit/__init__.py
new file mode 100644
index 0000000..6773485
--- /dev/null
+++ b/src_doit/__init__.py
@@ -0,0 +1,62 @@
+from pathlib import Path
+
+from hat import json
+from hat.doit import common
+from hat.doit.py import (build_wheel,
+ run_flake8)
+
+
+__all__ = ['task_clean_all',
+ 'task_wheel',
+ 'task_check',
+ 'task_json_schema_repo']
+
+
+build_dir = Path('build')
+src_py_dir = Path('src_py')
+schemas_json_dir = Path('schemas_json')
+
+json_schema_repo_path = src_py_dir / 'hatter/json_schema_repo.json'
+
+
+def task_clean_all():
+ """Clean all"""
+ return {'actions': [(common.rm_rf, [build_dir,
+ json_schema_repo_path])]}
+
+
+def task_wheel():
+ """Build wheel"""
+
+ def build():
+ build_wheel(
+ src_dir=src_py_dir,
+ dst_dir=build_dir,
+ name='hatter',
+ description='Continuous integration server/executor',
+ url='https://github.com/bozokopic/hatter',
+ license=common.License.GPL3,
+ packages=['hatter'],
+ console_scripts=['hatter = hatter.main:main'])
+
+ return {'actions': [build],
+ 'task_dep': ['json_schema_repo']}
+
+
+def task_check():
+ """Check"""
+ return {'actions': [(run_flake8, [src_py_dir])]}
+
+
+def task_json_schema_repo():
+ """Generate JSON Schema Repository"""
+ src_paths = list(schemas_json_dir.rglob('*.yaml'))
+
+ def generate():
+ repo = json.SchemaRepository(*src_paths)
+ data = repo.to_json()
+ json.encode_file(data, json_schema_repo_path, indent=None)
+
+ return {'actions': [generate],
+ 'file_dep': src_paths,
+ 'targets': [json_schema_repo_path]}
diff --git a/src_js/hatter/common.js b/src_js/hatter/common.js
deleted file mode 100644
index c6dcfcc..0000000
--- a/src_js/hatter/common.js
+++ /dev/null
@@ -1,66 +0,0 @@
-
-import r from 'hatter/renderer';
-import * as util from 'hatter/util';
-
-
-export const defaultState = {
- conn: null,
- log: {
- offset: 0,
- offsetText: '0',
- limit: 0,
- limitText: '0',
- entries: []
- },
- job: {
- active: null,
- queue: []
- },
- repositories: []
-};
-
-
-export function processMsg(msg) {
- if (msg.type == 'repositories') {
- r.set('repositories', msg.repositories);
- } else if (msg.type == 'active_job') {
- r.set(['job', 'active'], msg.job);
- } else if (msg.type == 'job_queue') {
- r.set(['job', 'queue'], msg.jobs);
- } else if (msg.type == 'log_entries') {
- r.set(['log', 'entires'], msg.entries);
- }
-}
-
-
-export function addJob(repository) {
- r.get('conn').send(JSON.stringify({
- type: 'add_job',
- repository: repository,
- commit: 'HEAD'
- }));
-}
-
-
-bean.on(r, 'change', state => {
- let newOffset = parseInt(state.log.offsetText);
- let newLimit = parseInt(state.log.limitText);
- if (util.isInteger(newOffset) && newOffset != state.log.offset) {
- r.set(['log', 'offset'], newOffset).then(sendSetLog);
- }
- if (util.isInteger(newLimit) && newLimit != state.log.limit) {
- r.set(['log', 'limit'], newLimit).then(sendSetLog);
- }
-});
-
-
-function sendSetLog() {
- let conn = r.get('conn');
- if (!conn)
- return;
- conn.send(JSON.stringify({
- type: 'set_log',
- offset: r.get('offset'),
- limit: r.get('limit')
- }));
-}
diff --git a/src_js/hatter/main.js b/src_js/hatter/main.js
deleted file mode 100644
index 3f64ed3..0000000
--- a/src_js/hatter/main.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import bean from 'bean';
-
-import r from 'hatter/renderer';
-import * as util from 'hatter/util';
-import * as common from 'hatter/common';
-import * as vt from 'hatter/vt';
-
-import 'static!static/index.html';
-import 'style/main.scss';
-
-
-function main() {
- let conn = new WebSocket(wsAddress);
-
- conn.onopen = () => {
- let root = document.body.appendChild(document.createElement('div'));
- let state = util.set('conn', conn, common.defaultState);
- r.init(root, state, vt.main);
- };
-
- conn.onclose = () => {
- alert("Disconnected from server");
- };
-
- conn.onerror = () => {
- alert("Couldn't connect to server");
- };
-
- conn.onmessage = (evt) => {
- try {
- let msg = JSON.parse(evt.data);
- common.processMsg(msg);
- } catch(e) {
- conn.close();
- throw e;
- }
- };
-}
-
-
-bean.on(window, 'load', main);
diff --git a/src_js/hatter/renderer.js b/src_js/hatter/renderer.js
deleted file mode 100644
index aed7c48..0000000
--- a/src_js/hatter/renderer.js
+++ /dev/null
@@ -1,153 +0,0 @@
-import Delegator from 'dom-delegator';
-import bean from 'bean';
-import vh from 'virtual-dom/h';
-import diff from 'virtual-dom/diff';
-import patch from 'virtual-dom/patch';
-import createElement from 'virtual-dom/create-element';
-
-import * as u from 'hatter/util';
-
-
-const delegator = Delegator();
-const vhTypes = ['VirtualNode', 'Widget'];
-
-
-function vhFromArray(node) {
- if (!node)
- return [];
- if (u.isString(node) || vhTypes.includes(node.type))
- return node;
- if (!u.isArray(node))
- throw 'Invalid node structure';
- if (node.length < 1)
- return [];
- if (typeof node[0] != 'string')
- return node.map(vhFromArray);
- let hasProps = (node.length > 1 &&
- u.isObject(node[1]) &&
- !vhTypes.includes(node[1].type));
- let children = Array.from(
- u.flatten(node.slice(hasProps ? 2 : 1).map(vhFromArray)));
- let result = hasProps ? vh(node[0], node[1], children) :
- vh(node[0], children);
- return result;
-}
-
-
-class VTreeRenderer {
-
- constructor(el) {
- this._el = el;
- this._vtree = null;
- }
-
- render(vtree) {
- let vt = vhFromArray(vtree);
- if (vt.type == 'VirtualNode') {
- if (this._vtree) {
- let d = diff(this._vtree, vt);
- patch(this._el.firstChild, d);
- } else {
- while (this._el.firstChild)
- this._el.removeChild(this._el.firstChild);
- this._el.appendChild(createElement(vt));
- }
- this._vtree = vt;
- } else {
- this._vtree = null;
- while (this._el.firstChild)
- this._el.removeChild(this._el.firstChild);
- }
- }
-
-}
-
-
-export class Renderer {
-
- constructor(el, initState, vtCb, maxFps) {
- this.init(el, initState, vtCb, maxFps);
- }
-
- init(el, initState, vtCb, maxFps) {
- this._state = null;
- this._changes = [];
- this._promise = null;
- this._timeout = null;
- this._lastRender = null;
- this._vtCb = vtCb;
- this._maxFps = maxFps;
- this._r = new VTreeRenderer(el || document.querySelector('body'));
- if (initState)
- this.change(_ => initState);
- }
-
- get(...paths) {
- return u.get(paths, this._state);
- }
-
- set(path, value) {
- if (arguments.length < 2) {
- value = path;
- path = [];
- }
- return this.change(path, _ => value);
- }
-
- change(path, cb) {
- if (arguments.length < 2) {
- cb = path;
- path = [];
- }
- this._changes.push([path, cb]);
- if (this._promise)
- return this._promise;
- this._promise = new Promise((resolve, reject) => {
- setTimeout(() => {
- try {
- this._change();
- } catch(e) {
- this._promise = null;
- reject(e);
- throw e;
- }
- this._promise = null;
- resolve();
- }, 0);
- });
- return this._promise;
- }
-
- _change() {
- let change = false;
- while (this._changes.length > 0) {
- let [path, cb] = this._changes.shift();
- let view = u.get(path);
- let oldState = this._state;
- this._state = u.change(path, cb, this._state);
- if (this._state && u.equals(view(oldState),
- view(this._state)))
- continue;
- change = true;
- if (!this._vtCb || this._timeout)
- continue;
- let delay = (!this._lastRender || !this._maxFps ?
- 0 :
- (1000 / self._maxFps) -
- (performance.now() - this._lastRender));
- this._timeout = setTimeout(() => {
- this._timeout = null;
- this._lastRender = performance.now();
- this._r.render(this._vtCb(this._state));
- bean.fire(this, 'render', this._state);
- }, (delay > 0 ? delay : 0));
- }
- if (change)
- bean.fire(this, 'change', this._state);
- }
-
-}
-
-
-const defaultRenderer = new Renderer();
-export default defaultRenderer;
diff --git a/src_js/hatter/util.js b/src_js/hatter/util.js
deleted file mode 100644
index e3dbfeb..0000000
--- a/src_js/hatter/util.js
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-export const isArray = Array.isArray;
-export const isObject = obj => obj !== null &&
- typeof(obj) == 'object' &&
- !isArray(obj);
-export const isNumber = n => typeof(n) == 'number';
-export const isInteger = Number.isInteger;
-export const isString = str => typeof(str) == 'string';
-
-
-export function clone(obj) {
- if (isArray(obj))
- return Array.from(obj, clone);
- if (isObject(obj)) {
- let ret = {};
- for (let i in obj)
- ret[i] = clone(obj[i]);
- return ret;
- }
- return obj;
-}
-
-
-export function equals(x, y) {
- if (x === y)
- return true;
- if (typeof(x) != 'object' || typeof(y) != 'object' || x === null || y === null)
- return false;
- if (Array.isArray(x) || Array.isArray(y)) {
- if (!Array.isArray(x) || !Array.isArray(y) || x.length != y.length)
- return false;
- }
- for (let i in x)
- if (!equals(x[i], y[i]))
- return false;
- for (let i in y)
- if (!equals(x[i], y[i]))
- return false;
- return true;
-}
-
-
-export function toPairs(obj) {
- return Object.entries(obj);
-}
-
-
-export function fromPairs(arr) {
- let ret = {};
- for (let [k, v] of arr)
- ret[k] = v;
- return ret;
-}
-
-
-export function* flatten(arr) {
- if (isArray(arr)) {
- for (let i of arr)
- if (isArray(i))
- yield* flatten(i);
- else
- yield i;
- } else {
- yield arr;
- }
-}
-
-
-export function pipe(...fns) {
- if (fns.length < 1)
- throw 'no functions';
- return function (...args) {
- let ret = fns[0].apply(this, args);
- for (let fn of fns.slice(1))
- ret = fn(ret);
- return ret;
- };
-}
-
-
-export function curry(fn) {
- let wrapper = function(oldArgs) {
- return function(...args) {
- args = oldArgs.concat(args);
- if (args.length >= fn.length)
- return fn.apply(this, args);
- return wrapper(args);
- };
- };
- return wrapper([]);
-}
-
-
-export const get = curry((path, obj) => {
- let ret = obj;
- for (let i of flatten(path)) {
- if (ret === null || typeof(ret) != 'object')
- return undefined;
- ret = ret[i];
- }
- return ret;
-});
-
-
-export const change = curry((path, fn, obj) => {
- function _change(path, obj) {
- if (isInteger(path[0])) {
- obj = (isArray(obj) ? Array.from(obj) : []);
- } else if (isString(path[0])) {
- obj = (isObject(obj) ? Object.assign({}, obj) : {});
- } else {
- throw 'invalid path';
- }
- if (path.length > 1) {
- obj[path[0]] = _change(path.slice(1), obj[path[0]]);
- } else {
- obj[path[0]] = fn(obj[path[0]]);
- }
- return obj;
- }
- path = Array.from(flatten(path));
- if (path.length < 1)
- return fn(obj);
- return _change(path, obj);
-});
-
-
-export const set = curry((path, val, obj) => change(path, _ => val, obj));
-
-
-export const omit = curry((path, obj) => {
- function _omit(path, obj) {
- if (isInteger(path[0])) {
- obj = (isArray(obj) ? Array.from(obj) : []);
- } else if (isString(path[0])) {
- obj = (isObject(obj) ? Object.assign({}, obj) : {});
- } else {
- throw 'invalid path';
- }
- if (path.length > 1) {
- obj[path[0]] = _omit(path.slice(1), obj[path[0]]);
- } else {
- delete obj[path[0]];
- }
- return obj;
- }
- path = Array.from(flatten(path));
- if (path.length < 1)
- return undefined;
- return _omit(path, obj);
-});
-
-
-export const sortBy = curry((fn, arr) => Array.from(arr).sort((x, y) => {
- let xVal = fn(x);
- let yVal = fn(y);
- if (xVal < yVal)
- return -1;
- if (xVal > yVal)
- return 1;
- return 0;
-}));
-
-
-export const map = curry((fn, arr) => arr.map(fn));
-
-
-export const filter = curry((fn, arr) => arr.filter(fn));
-
-
-export const append = curry((val, arr) => arr.concat([val]));
diff --git a/src_js/hatter/vt.js b/src_js/hatter/vt.js
deleted file mode 100644
index c1fcb9f..0000000
--- a/src_js/hatter/vt.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-export function main() {
- return ['div', 'Hatter'];
-}
diff --git a/src_py/hatter/__init__.py b/src_py/hatter/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src_py/hatter/__init__.py
diff --git a/src_py/hatter/__main__.py b/src_py/hatter/__main__.py
new file mode 100644
index 0000000..065fe88
--- /dev/null
+++ b/src_py/hatter/__main__.py
@@ -0,0 +1,8 @@
+import sys
+
+from hatter.main import main
+
+
+if __name__ == '__main__':
+ sys.argv[0] = 'hatter'
+ sys.exit(main())
diff --git a/src_py/hatter/backend.py b/src_py/hatter/backend.py
deleted file mode 100644
index 8b78570..0000000
--- a/src_py/hatter/backend.py
+++ /dev/null
@@ -1,171 +0,0 @@
-import sqlite3
-import datetime
-import threading
-import logging
-import concurrent.futures
-import asyncio
-
-from hatter import util
-from hatter import executor
-
-
-util.monkeypatch_sqlite3()
-
-
-LogEntry = util.namedtuple('LogEntry',
- ['timestamp', 'datetime.datetime: timestamp'],
- ['repository', 'str: repository'],
- ['commit', 'str: commit'],
- ['msg', 'str: message'])
-
-Job = util.namedtuple('Job',
- ['id', 'int: id'],
- ['timestamp', 'datetime.datetime: timestamp'],
- ['repository', 'str: repository'],
- ['commit', 'str: commit'])
-
-
-class Backend:
-
- def __init__(self, db_path, repositories):
- self._repositories = repositories
- self._next_job_id = 0
- self._active = None
- self._queue = []
- self._active_change_cbs = util.CallbackRegistry()
- self._queue_change_cbs = util.CallbackRegistry()
- self._log_change_cbs = util.CallbackRegistry()
- self._cv = asyncio.Condition()
- self._db = _DB(db_path)
- self._executor = concurrent.futures.ThreadPoolExecutor()
- self._run_loop_future = asyncio.ensure_future(self._run_loop())
-
- @property
- def repositories(self):
- return self._repositories
-
- @property
- def active(self):
- return self._active
-
- @property
- def queue(self):
- return self._queue
-
- def register_active_change_cb(self, cb):
- return self._active_change_cbs.register(cb)
-
- def register_queue_change_cb(self, cb):
- return self._queue_change_cbs.register(cb)
-
- def register_log_change_cb(self, cb):
- return self._log_change_cbs.register(cb)
-
- async def async_close(self):
- self._run_loop_future.cancel()
- await self._run_loop_future
-
- async def query_log(self, offset, limit):
- return await asyncio.get_event_loop().run_in_executor(
- self._executor, self._db.query, offset, limit)
-
- async def add_job(self, repository, commit):
- job = Job(id=self._next_job_id,
- timestamp=datetime.datetime.now(datetime.timezone.utc),
- repository=repository,
- commit=commit)
- self._next_job_id += 1
- with await self._cv:
- self._queue.append(job)
- self._cv.notify_all()
- self._queue_change_cbs.notify()
-
- async def _run_loop(self):
- log = logging.getLogger('hatter.project')
- while True:
- with await self._cv:
- while not self._queue:
- await self._cv.wait()
- self._active = self._queue_change_cbs.pop(0)
- self._queue_change_cbs.notify()
- self._active_change_cbs.notify()
-
- handler = _LogHandler(
- self._db, self._active.repository, self._active.commit)
- log.addHandler(handler)
- try:
- await asyncio.get_event_loop().run_in_executor(
- self._executor, executor.run,
- log, self._active.repository, self._active.commit)
- except asyncio.CancelledError:
- break
- except Exception as e:
- log.error("%s", e, exc_info=True)
- finally:
- log.removeHandler(handler)
- self._active = None
- self._active_change_cbs.notify()
-
-
-class _LogHandler(logging.Handler):
-
- def __init__(self, db, repository, commit):
- super().__init__()
- self._db = db
- self._repository
- self._commit = commit
-
- def emit(self, record):
- self._db.add(
- timestamp=datetime.datetime.fromtimestamp(
- record.created, datetime.timezone.utc),
- repository=self._repository,
- commit=self._commit,
- msg=record.getMessage())
-
-
-class _DB:
-
- def __init__(self, db_path):
- db_path.parent.mkdir(exist_ok=True)
- self._db = sqlite3.connect('file:{}?nolock=1'.format(db_path),
- uri=True,
- isolation_level=None,
- detect_types=sqlite3.PARSE_DECLTYPES)
- self._db.executescript("CREATE TABLE IF NOT EXISTS log ("
- "timestamp TIMESTAMP, "
- "repository TEXT, "
- "commit TEXT, "
- "msg TEXT)")
- self._db.commit()
- self._lock = threading.Lock()
-
- def close(self):
- with self._lock:
- self._db.close()
-
- def add(self, timestamp, repository, commit, msg):
- with self._lock:
- self._db.execute(
- "INSERT INTO log VALUES "
- "(:timestamp, :repository, :commit, :msg)",
- {'timestamp': timestamp,
- 'repository': repository,
- 'commit': commit,
- 'msg': msg})
-
- def query(self, offset, limit):
- with self._lock:
- c = self._db.execute(
- "SELECT rowid, * FROM log ORDER BY rowid DESC "
- "LIMIT :limit OFFSET :offset",
- {'limit': limit, 'offset': offset})
- try:
- result = c.fetchall()
- except Exception as e:
- result = []
- return [LogEntry(timestamp=i[1],
- repository=i[2],
- commit=i[3],
- msg=i[4])
- for i in result]
diff --git a/src_py/hatter/common.py b/src_py/hatter/common.py
new file mode 100644
index 0000000..cf99bb9
--- /dev/null
+++ b/src_py/hatter/common.py
@@ -0,0 +1,10 @@
+from pathlib import Path
+
+from hat import json
+
+
+package_path: Path = Path(__file__).parent
+
+json_schema_repo: json.SchemaRepository = json.SchemaRepository(
+ json.json_schema_repo,
+ json.SchemaRepository.from_json(package_path / 'json_schema_repo.json'))
diff --git a/src_py/hatter/executor.py b/src_py/hatter/executor.py
deleted file mode 100644
index 2d1ae2a..0000000
--- a/src_py/hatter/executor.py
+++ /dev/null
@@ -1,197 +0,0 @@
-import tempfile
-import pathlib
-import tarfile
-import subprocess
-import io
-import time
-import contextlib
-import yaml
-import libvirt
-import paramiko
-
-import hatter.json_validator
-
-
-def run(log, repo_path, commit='HEAD', archive_name='hatter_archive'):
- log.info('starting executor for repository {} ({})'.format(repo_path,
- commit))
- t_begin = time.monotonic()
- archive_file_name = archive_name + '.tar.gz'
- with tempfile.TemporaryDirectory() as tempdir:
- archive_path = pathlib.Path(tempdir) / archive_file_name
- log.info('fetching remote repository')
- _git_archive(repo_path, commit, archive_path)
- log.info('loading project configuration')
- conf = _load_conf(archive_path)
- for i in conf:
- log.info('starting virtual machine')
- with contextlib.closing(_VM(i['vm'])) as vm:
- log.info('creating SSH connection')
- with contextlib.closing(_SSH(i['ssh'], vm.address)) as ssh:
- log.info('transfering repository to virtual machine')
- ssh.execute('rm -rf {} {}'.format(archive_file_name,
- archive_name))
- ssh.upload(archive_path, archive_file_name)
- ssh.execute('mkdir {}'.format(archive_name))
- ssh.execute('tar xf {} -C {}'.format(archive_file_name,
- archive_name))
- log.info('executing scripts')
- for script in i['scripts']:
- ssh.execute(script, archive_name, log)
- t_end = time.monotonic()
- log.info('executor finished (duration: {}s)'.format(t_end - t_begin))
-
-
-class _VM:
-
- def __init__(self, conf):
- self._conn = None
- self._domain = None
- self._temp_snapshot = None
- self._address = None
- try:
- self._conn = _libvirt_connect(conf.get('uri', 'qemu:///system'))
- self._domain = _libvirt_get_domain(self._conn, conf['domain'])
- if self._domain.isActive():
- self._domain.destroy()
- self._temp_snapshot = _libvirt_create_temp_snapshot(
- self._domain, conf.get('temp_snapshot', 'temp_hatter'))
- if 'snapshot' in conf:
- _libvirt_revert_snapshot(self._domain, conf['snapshot'])
- _libvirt_start_domain(self._domain)
- for _ in range(conf('get_address_retry_count', 10)):
- self._address = _libvirt_get_address(self._domain)
- if self._address:
- return
- time.sleep(conf.get('get_address_delay', 5))
- raise Exception('ip addess not detected')
- except Exception:
- self.close()
- raise
-
- @property
- def address(self):
- return self._address
-
- def close(self):
- if self._domain:
- self._domain.destroy()
- if self._domain and self._temp_snapshot:
- self._domain.revertToSnapshot(self._temp_snapshot)
- if self._temp_snapshot:
- self._temp_snapshot.delete()
- if self._conn:
- self._conn.close()
- self._temp_snapshot = None
- self._domain = None
- self._conn = None
- self._address = None
-
-
-class _SSH:
-
- def __init__(self, conf, address):
- self._conn = paramiko.SSHClient()
- self._conn.set_missing_host_key_policy(paramiko.AutoAddPolicy)
- for _ in range(conf.get('connect_retry_count', 10)):
- try:
- self._conn.connect(
- address,
- username=conf['username'], password=conf['password'],
- timeout=conf.get('connect_timeout', 1),
- auth_timeout=conf.get('connect_timeout', 1))
- return
- except Exception as e:
- time.sleep(conf.get('connect_delay', 5))
- raise Exception('could not connect to {}'.format(address))
-
- def close(self):
- if self._conn:
- self._conn.close()
- self._conn = None
-
- def upload(self, src_path, dst_path):
- with contextlib.closing(self._conn.open_sftp()) as sftp:
- sftp.put(str(src_path), str(dst_path))
-
- def execute(self, cmd, cwd='.', log=None):
- if log:
- log.info('executing command: {}'.format(cmd))
- with contextlib.closing(self._conn.invoke_shell()) as shell:
- shell.set_combine_stderr(True)
- shell.exec_command('cd {} && {}'.format(cwd, cmd))
- with contextlib.closing(shell.makefile()) as f:
- data = f.read()
- if log:
- log.info('command output: {}'.format(data))
- exit_code = shell.recv_exit_status()
- if exit_code > 0:
- raise Exception('command exit code is {}'.format(exit_code))
-
-
-def _load_conf(archive_path):
- with tarfile.open(archive_path) as archive:
- f = io.TextIOWrapper(archive.extractfile('.hatter.yml'),
- encoding='utf-8')
- conf = yaml.safe_load(f)
- hatter.json_validator.validate(conf, 'hatter://project.yaml#')
- return conf
-
-
-def _git_archive(repo_path, commit, output_path):
- result = subprocess.run(
- ['git', 'archive', '--format=tar.gz',
- '--outfile={}'.format(str(output_path)),
- '--remote={}'.format(repo_path),
- commit],
- stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
- if result.returncode:
- raise Exception("could not archive {} from {}".format(commit,
- repo_path))
-
-
-def _libvirt_connect(uri):
- conn = libvirt.open(uri)
- if not conn:
- raise Exception('could not open connection to {}'.format(uri))
- return conn
-
-
-def _libvirt_get_domain(conn, domain_name):
- domain = conn.lookupByName(domain_name)
- if not domain:
- raise Exception('domain {} not available'.format(domain_name))
- return domain
-
-
-def _libvirt_start_domain(domain):
- if domain.create():
- raise Exception('could not run vm')
-
-
-def _libvirt_create_temp_snapshot(domain, temp_snapshot_name):
- temp_snapshot = domain.snapshotLookupByName(temp_snapshot_name)
- if temp_snapshot:
- temp_snapshot.delete()
- temp_snapshot = domain.snapshotCreateXML(
- "<domainsnapshot><name>{}</name></domainsnapshot>".format(
- temp_snapshot_name))
- if not temp_snapshot:
- raise Exception('could not create snapshot {}'.format(
- temp_snapshot_name))
- return temp_snapshot
-
-
-def _libvirt_revert_snapshot(domain, snapshot_name):
- snapshot = domain.snapshotLookupByName(snapshot_name)
- if not snapshot:
- raise Exception('snapshot {} not available'.format(snapshot_name))
- if domain.revertToSnapshot(snapshot):
- raise Exception('could not revert snapshot {}'.format(snapshot_name))
-
-
-def _libvirt_get_address(domain):
- addresses = domain.interfaceAddresses(0)
- for i in addresses.values():
- for j in i.get('addrs', []):
- return j.get('addr')
diff --git a/src_py/hatter/main.py b/src_py/hatter/main.py
index 71245a2..f1046a5 100644
--- a/src_py/hatter/main.py
+++ b/src_py/hatter/main.py
@@ -1,74 +1,115 @@
-import sys
-import asyncio
-import argparse
-import pdb
-import yaml
-import logging.config
-import atexit
-import pkg_resources
-import pathlib
-
-import hatter.json_validator
-from hatter import util
-from hatter.backend import Backend
-from hatter.server import create_web_server
-
-
-def main():
- args = _create_parser().parse_args()
-
- with open(args.conf, encoding='utf-8') as conf_file:
- conf = yaml.safe_load(conf_file)
- hatter.json_validator.validate(conf, 'hatter://server.yaml#')
-
- if 'log' in conf:
- logging.config.dictConfig(conf['log'])
-
- if args.web_path:
- web_path = args.web_path
- else:
- atexit.register(pkg_resources.cleanup_resources)
- web_path = pkg_resources.resource_filename('hatter', 'web')
-
- util.run_until_complete_without_interrupt(async_main(conf, web_path))
-
-
-async def async_main(conf, web_path):
- backend = None
- web_server = None
- try:
- backend = Backend(pathlib.Path(conf.get('db_path', 'hatter.db')),
- conf['repositories'])
- web_server = await create_web_server(
- backend, conf.get('host', '0.0.0.0'), conf.get('port', 24000),
- conf.get('webhook_path', '/webhook'), web_path)
- await asyncio.Future()
- except asyncio.CancelledError:
- pass
- except Exception as e:
- pdb.set_trace()
- raise
- finally:
- if web_server:
- await web_server.async_close()
- if backend:
- await backend.async_close()
- await asyncio.sleep(0.5)
-
-
-def _create_parser():
- parser = argparse.ArgumentParser(prog='hatter')
- parser.add_argument(
- '--web-path', default=None, metavar='path', dest='web_path',
- help="web ui directory path")
-
- named_arguments = parser.add_argument_group('required named arguments')
- named_arguments.add_argument(
- '-c', '--conf', required=True, metavar='path', dest='conf',
- help='configuration path')
-
- return parser
-
-
-if __name__ == '__main__':
- sys.exit(main())
+from pathlib import Path
+import asyncio
+import contextlib
+import logging.config
+import sys
+import tempfile
+import typing
+import subprocess
+
+import appdirs
+import click
+
+from hat import aio
+from hat import json
+
+from hatter import common
+
+
+user_config_dir: Path = Path(appdirs.user_config_dir('hatter'))
+user_data_dir: Path = Path(appdirs.user_data_dir('hatter'))
+
+default_conf_path: Path = user_config_dir / 'server.yaml'
+default_db_path: Path = user_data_dir / 'hatter.db'
+
+ssh_key_path: typing.Optional[Path] = None
+
+
+@click.group()
+@click.option('--log-level',
+ default='INFO',
+ type=click.Choice(['CRITICAL', 'ERROR', 'WARNING', 'INFO',
+ 'DEBUG', 'NOTSET']),
+ help="log level")
+@click.option('--ssh-key', default=None, metavar='PATH', type=Path,
+ help="private key used for ssh authentication")
+def main(log_level: str,
+ ssh_key: typing.Optional[Path]):
+ global ssh_key_path
+ ssh_key_path = ssh_key
+
+ logging.config.dictConfig({
+ 'version': 1,
+ 'formatters': {
+ 'console': {
+ 'format': "[%(asctime)s %(levelname)s %(name)s] %(message)s"}},
+ 'handlers': {
+ 'console': {
+ 'class': 'logging.StreamHandler',
+ 'formatter': 'console',
+ 'level': log_level}},
+ 'root': {
+ 'level': log_level,
+ 'handlers': ['console']},
+ 'disable_existing_loggers': False})
+
+
+@main.command()
+@click.argument('url', required=True)
+@click.argument('branch', required=False, default='master')
+@click.argument('action', required=False, default='.hatter.yaml')
+def execute(url: str,
+ branch: str,
+ action: str):
+ with tempfile.TemporaryDirectory() as repo_dir:
+ repo_dir = Path(repo_dir)
+
+ subprocess.run(['git', 'clone', '-q', '--depth', '1',
+ '-b', branch, url, str(repo_dir)],
+ check=True)
+
+ conf = json.decode_file(repo_dir / '.hatter.yaml')
+ common.json_schema_repo.validate('hatter://action.yaml#', conf)
+
+ image = conf['image']
+ command = conf['command']
+ subprocess.run(['podman', 'run', '-i', '--rm',
+ '-v', f'{repo_dir}:/hatter',
+ image, '/bin/sh'],
+ input=f'set -e\ncd /hatter\n{command}\n',
+ encoding='utf-8',
+ check=True)
+
+
+@main.command()
+@click.option('--host', default='0.0.0.0',
+ help="listening host name (default 0.0.0.0)")
+@click.option('--port', default=24000, type=int,
+ help="listening TCP port (default 24000)")
+@click.option('--conf', default=default_conf_path, metavar='PATH', type=Path,
+ help="configuration defined by hatter://server.yaml# "
+ "(default $XDG_CONFIG_HOME/hatter/server.yaml)")
+@click.option('--db', default=default_db_path, metavar='PATH', type=Path,
+ help="sqlite database path "
+ "(default $XDG_CONFIG_HOME/hatter/hatter.db")
+def server(host: str,
+ port: int,
+ conf: Path,
+ db: Path):
+ conf = json.decode_file(conf)
+ common.json_schema_repo.validate('hatter://server.yaml#', conf)
+
+ with contextlib.suppress(asyncio.CancelledError):
+ aio.run_asyncio(async_server(host, port, conf, db))
+
+
+async def async_server(host: str,
+ port: int,
+ conf: json.Data,
+ db_path: Path):
+ pass
+
+
+if __name__ == '__main__':
+ sys.argv[0] = 'hatter'
+ main()
diff --git a/src_py/hatter/server.py b/src_py/hatter/server.py
deleted file mode 100644
index baeffac..0000000
--- a/src_py/hatter/server.py
+++ /dev/null
@@ -1,163 +0,0 @@
-import asyncio
-import json
-import aiohttp.web
-
-from hatter import util
-import hatter.json_validator
-
-
-async def create_web_server(backend, host, port, webhook_path, web_path):
- srv = WebServer()
- srv._backend = backend
- srv._app = aiohttp.web.Application()
- srv._app.router.add_route(
- 'GET', '/', lambda req: aiohttp.web.HTTPFound('/index.html'))
- srv._app.router.add_route('*', '/ws', srv._ws_handler)
- srv._app.router.add_route('POST', webhook_path, srv._webhook_handler)
- srv._app.router.add_static('/', web_path)
- srv._app_handler = srv._app.make_handler()
- srv._srv = await asyncio.get_event_loop().create_server(
- srv._app_handler, host=host, port=port)
- return srv
-
-
-class WebServer:
-
- async def async_close(self):
- self._srv.close()
- await self._srv.wait_closed()
- await self._app.shutdown()
- await self._app_handler.finish_connections(0)
- await self._app.cleanup()
-
- async def _ws_handler(self, request):
- ws = aiohttp.web.WebSocketResponse()
- await ws.prepare(request)
- client = _Client(self._backend, ws)
- await client.run()
- return ws
-
- async def _webhook_handler(self, request):
- try:
- if not ({'X-Gitlab-Event', 'X-GitHub-Event'} &
- set(request.headers.keys())):
- raise Exception('unsupported webhook request')
- body = await request.read()
- data = json.loads(body)
- req = _parse_webhook_request(request.headers, data)
- for commit in req.commits:
- self._backend.add_job(req.url, commit)
- except Exception:
- pass
- return aiohttp.web.Response()
-
-
-_WebhookRequest = util.namedtuple('_WebhookRequest', 'url', 'commits')
-
-
-def _parse_webhook_request(headers, data):
- if headers.get('X-Gitlab-Event') == 'Push Hook':
- url = data['repository']['git_http_url']
- commits = [commit['id'] for commit in data['commits']]
- elif headers.get('X-GitHub-Event') == 'push':
- url = data['repository']['clone_url']
- commits = [commit['id'] for commit in data['commits']]
- else:
- raise Exception('unsupported webhook event')
- return _WebhookRequest(url, commits)
-
-
-class _Client:
-
- def __init__(self, backend, ws):
- self._backend = backend
- self._ws = ws
- self._log_offset = 0
- self._log_limit = 0
- self._log_entries = []
- self._active_job = None
- self._job_queue = []
-
- async def run(self):
- self._active_job = self._backend.active
- self._job_queue = list(self._backend.queue)
- with self._backend.register_active_change_cb(self._on_active_change):
- with self._backend.register_queue_change_cb(self._on_queue_change):
- with self._backend.register_log_change_cb(self._on_log_change):
- try:
- self._send_repositories()
- self._send_active_job()
- self._send_job_queue()
- self._send_log_entries()
- while True:
- msg = await self._ws.receive()
- if self._ws.closed:
- break
- if msg.type != aiohttp.WSMsgType.TEXT:
- continue
- json_msg = json.loads(msg.data, encoding='utf-8')
- hatter.json_validator.validate(json_msg, 'hatter://message.yaml#/definitions/client_message') # NOQA
- await self._process_msg(json_msg)
- except Exception as e:
- print('>>>', e)
-
- async def _process_msg(self, msg):
- if msg['type'] == 'set_log':
- self._log_offset = msg['log_offset']
- self._log_limit = msg['log_limit']
- await self._update_log()
- elif msg['type'] == 'add_job':
- await self._backend.add_job(msg['repository'], msg['commit'])
-
- def _on_active_change(self):
- if self._active_job != self._backend.active:
- self._active_job = self._backend.active
- self._send_active_job()
-
- def _on_queue_change(self):
- if self._job_queue != self._backend.job_queue:
- self._job_queue = list(self._backend.job_queue)
- self._send_job_queue()
-
- def _on_log_change(self):
- asyncio.ensure_future(self._update_log())
-
- async def _update_log(self, offset, limit):
- log_entries = await self._backend.query_log(offset, limit)
- if log_entries != self._log_entries:
- self._log_entries = log_entries
- self._send_log_entries()
-
- def _send_repositories(self):
- self._ws.send_str(json.dumps({
- 'type': 'repositories',
- 'repositories': self._backend.repositories}))
-
- def _send_active_job(self):
- self._ws.send_str(json.dumps({
- 'type': 'active_job',
- 'job': _job_to_json(self._active_job)}))
-
- def _send_job_queue(self):
- self._ws.send_str(json.dumps({
- 'type': 'job_queue',
- 'jobs': [_job_to_json(i) for i in self._job_queue]}))
-
- def _send_log_entries(self):
- self._ws.send_str(json.dumps({
- 'type': 'log_entries',
- 'entries': [_log_entry_to_json(i) for i in self._log_entries]}))
-
-
-def _job_to_json(job):
- return {'id': job.id,
- 'timestamp': job.timestamp.timestamp(),
- 'repository': job.repository,
- 'commit': job.commit}
-
-
-def _log_entry_to_json(entry):
- return {'timestamp': entry.timestamp.timestamp(),
- 'repository': entry.repository,
- 'commit': entry.commit,
- 'message': entry.msg}
diff --git a/src_py/hatter/util.py b/src_py/hatter/util.py
deleted file mode 100644
index a4fff55..0000000
--- a/src_py/hatter/util.py
+++ /dev/null
@@ -1,147 +0,0 @@
-import collections
-import sys
-import contextlib
-import asyncio
-import datetime
-import sqlite3
-
-
-def namedtuple(name, *props):
- """Create documented namedtuple
-
- Args:
- name (Union[str,Tuple[str,str]]):
- named tuple's name or named tuple's name with documentation
- props (Sequence[Union[str,Tuple[str,str]]]):
- named tuple' properties with optional documentation
-
- Returns:
- class implementing collections.namedtuple
-
- """
- props = [(i, None) if isinstance(i, str) else i for i in props]
- cls = collections.namedtuple(name if isinstance(name, str) else name[0],
- [i[0] for i in props])
- if not isinstance(name, str) and name[1]:
- cls.__doc__ = name[1]
- for k, v in props:
- if v:
- getattr(cls, k).__doc__ = v
- try:
- cls.__module__ = sys._getframe(1).f_globals.get('__name__', '__main__')
- except (AttributeError, ValueError):
- pass
- return cls
-
-
-def run_until_complete_without_interrupt(future):
- """Run event loop until future or coroutine is done
-
- Args:
- future (Awaitable): future or coroutine
-
- Returns:
- Any: provided future's result
-
- KeyboardInterrupt is suppressed (while event loop is running) and is mapped
- to single cancelation of running task. If multipple KeyboardInterrupts
- occur, task is cancelled only once.
-
- """
- async def ping_loop():
- with contextlib.suppress(asyncio.CancelledError):
- while True:
- await asyncio.sleep(1)
-
- task = asyncio.ensure_future(future)
- if sys.platform == 'win32':
- ping_loop_task = asyncio.ensure_future(ping_loop())
- with contextlib.suppress(KeyboardInterrupt):
- asyncio.get_event_loop().run_until_complete(task)
- asyncio.get_event_loop().call_soon(task.cancel)
- if sys.platform == 'win32':
- asyncio.get_event_loop().call_soon(ping_loop_task.cancel)
- while not task.done():
- with contextlib.suppress(KeyboardInterrupt):
- asyncio.get_event_loop().run_until_complete(task)
- if sys.platform == 'win32':
- while not ping_loop_task.done():
- with contextlib.suppress(KeyboardInterrupt):
- asyncio.get_event_loop().run_until_complete(ping_loop_task)
- return task.result()
-
-
-def monkeypatch_sqlite3():
- """Monkeypatch sqlite timestamp converter"""
-
- def _sqlite_convert_timestamp(val):
- datepart, timetzpart = val.split(b" ")
- if b"+" in timetzpart:
- tzsign = 1
- timepart, tzpart = timetzpart.split(b"+")
- elif b"-" in timetzpart:
- tzsign = -1
- timepart, tzpart = timetzpart.split(b"-")
- else:
- timepart, tzpart = timetzpart, None
- year, month, day = map(int, datepart.split(b"-"))
- timepart_full = timepart.split(b".")
- hours, minutes, seconds = map(int, timepart_full[0].split(b":"))
- if len(timepart_full) == 2:
- microseconds = int('{:0<6.6}'.format(timepart_full[1].decode()))
- else:
- microseconds = 0
- if tzpart:
- tzhours, tzminutes = map(int, tzpart.split(b":"))
- tz = datetime.timezone(
- tzsign * datetime.timedelta(hours=tzhours, minutes=tzminutes))
- else:
- tz = None
-
- val = datetime.datetime(year, month, day, hours, minutes, seconds,
- microseconds, tz)
- return val
-
- sqlite3.register_converter("timestamp", _sqlite_convert_timestamp)
-
-
-class RegisterCallbackHandle(collections.namedtuple(
- 'RegisterCallbackHandle', ['cancel'])):
- """Handle used for canceling callback registration
-
- Attributes:
- cancel (Callable[[],None]): cancel registered callback
-
- """
-
- def __enter__(self):
- return self
-
- def __exit__(self, *args):
- self.cancel()
-
-
-class CallbackRegistry:
- """Callback registry"""
-
- def __init__(self):
- self._cbs = []
-
- def register(self, cb):
- """Register callback
-
- Args:
- cb (Callable): callback
-
- Returns:
- RegisterCallbackHandle
-
- """
- self.cbs.append(cb)
- return RegisterCallbackHandle(lambda: self.cbs.remove(cb))
-
- def notify(self, *args, **kwargs):
- """Notify all registered callbacks"""
-
- for cb in self._cbs:
- cb(*args, **kwargs)
diff --git a/src_web/static/index.html b/src_web/static/index.html
deleted file mode 100644
index b738fb0..0000000
--- a/src_web/static/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="UTF-8">
- <title>Hatter</title>
- <script src="main.js"></script>
-</head>
-<body>
-</body>
-</html>
diff --git a/src_web/style/main.scss b/src_web/style/main.scss
deleted file mode 100644
index 2181a8b..0000000
--- a/src_web/style/main.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-@import '~normalize.css/normalize';
-
-body {
- font-size: 9pt;
- margin: 5px;
-}
diff --git a/webpack.config.js b/webpack.config.js
deleted file mode 100644
index 097b089..0000000
--- a/webpack.config.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var path = require('path');
-
-
-module.exports = [
- {
- entry: {
- main: '.' + path.sep + path.join('src_js', 'hatter', 'main')
- },
- output: {
- filename: '[name].js',
- path: path.join(__dirname, 'build', 'jshatter')
- },
- module: {
- rules: [
- {
- test: /\.scss$/,
- use: ["style-loader", "css-loader", "resolve-url-loader", "sass-loader?sourceMap"]
- },
- {
- test: /node_modules.*\.(woff|woff2|ttf|eot|svg)$/,
- use: "file-loader?name=fonts/[hash].[ext]"
- }
- ]
- },
- resolve: {
- modules: [
- path.join(__dirname, 'src_js'),
- path.join(__dirname, 'src_web'),
- path.join(__dirname, 'node_modules')
- ]
- },
- resolveLoader: {
- alias: {
- static: 'file-loader?context=src_web/static&name=[path][name].[ext]'
- }
- },
- devtool: 'source-map'
- }
-];
diff --git a/yarn.lock b/yarn.lock
deleted file mode 100644
index 9713cd9..0000000
--- a/yarn.lock
+++ /dev/null
@@ -1,3828 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-abbrev@1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
-
-acorn-dynamic-import@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
- dependencies:
- acorn "^4.0.3"
-
-acorn@^4.0.3, acorn@^4.0.4, acorn@^4.0.9:
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
-
-adjust-sourcemap-loader@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2"
- dependencies:
- assert "^1.3.0"
- camelcase "^1.2.1"
- loader-utils "^1.0.2"
- lodash.assign "^4.0.1"
- lodash.defaults "^3.1.2"
- object-path "^0.9.2"
- regex-parser "^2.2.1"
-
-ajv-keywords@^1.1.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
-
-ajv@^4.7.0, ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-alertifyjs@1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/alertifyjs/-/alertifyjs-1.9.0.tgz#d2b6269ce98c266df39cb5fe007618522ea0b4b9"
-
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-ansi-styles@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
- dependencies:
- color-convert "^1.0.0"
-
-anymatch@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
- dependencies:
- arrify "^1.0.0"
- micromatch "^2.1.5"
-
-aproba@^1.0.3:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
-
-are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- dependencies:
- arr-flatten "^1.0.1"
-
-arr-flatten@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
-
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
-
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-arrify@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-
-asn1.js@^4.0.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-
-assert@^1.1.1, assert@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
- dependencies:
- util "0.10.3"
-
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-async-foreach@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
-
-async@^2.0.1, async@^2.1.2:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d"
- dependencies:
- lodash "^4.14.0"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-
-atob@~1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
-
-autoprefixer@^6.3.1:
- version "6.7.7"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
- dependencies:
- browserslist "^1.7.6"
- caniuse-db "^1.0.30000634"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^5.2.16"
- postcss-value-parser "^3.2.3"
-
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-
-aws4@^1.2.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-
-babel-code-frame@^6.11.0, babel-code-frame@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
- dependencies:
- chalk "^1.1.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
-babel-core@6.23.1:
- version "6.23.1"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-generator "^6.23.0"
- babel-helpers "^6.23.0"
- babel-messages "^6.23.0"
- babel-register "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.23.0"
- babel-traverse "^6.23.1"
- babel-types "^6.23.0"
- babylon "^6.11.0"
- convert-source-map "^1.1.0"
- debug "^2.1.1"
- json5 "^0.5.0"
- lodash "^4.2.0"
- minimatch "^3.0.2"
- path-is-absolute "^1.0.0"
- private "^0.1.6"
- slash "^1.0.0"
- source-map "^0.5.0"
-
-babel-core@^6.24.1:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-generator "^6.25.0"
- babel-helpers "^6.24.1"
- babel-messages "^6.23.0"
- babel-register "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.25.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- convert-source-map "^1.1.0"
- debug "^2.1.1"
- json5 "^0.5.0"
- lodash "^4.2.0"
- minimatch "^3.0.2"
- path-is-absolute "^1.0.0"
- private "^0.1.6"
- slash "^1.0.0"
- source-map "^0.5.0"
-
-babel-generator@^6.23.0, babel-generator@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
- dependencies:
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.2.0"
- source-map "^0.5.0"
- trim-right "^1.0.1"
-
-babel-helper-bindify-decorators@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-call-delegate@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-define-map@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-helper-explode-class@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
- dependencies:
- babel-helper-bindify-decorators "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
- dependencies:
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-get-function-arity@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-hoist-variables@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-optimise-call-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-helper-remap-async-to-generator@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-replace-supers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
- dependencies:
- babel-helper-optimise-call-expression "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helpers@^6.23.0, babel-helpers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-loader@6.3.2:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.3.2.tgz#18de4566385578c1b4f8ffe6cbc668f5e2a5ef03"
- dependencies:
- find-cache-dir "^0.1.1"
- loader-utils "^0.2.16"
- mkdirp "^0.5.1"
- object-assign "^4.0.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-check-es2015-constants@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-syntax-async-functions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
-
-babel-plugin-syntax-decorators@^6.13.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
-
-babel-plugin-transform-async-to-generator@6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e"
- dependencies:
- babel-helper-remap-async-to-generator "^6.22.0"
- babel-plugin-syntax-async-functions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-async-to-module-method@6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-module-method/-/babel-plugin-transform-async-to-module-method-6.22.0.tgz#19c51f18407a74cc5d83098a297e57ab5cfdd008"
- dependencies:
- babel-helper-remap-async-to-generator "^6.22.0"
- babel-plugin-syntax-async-functions "^6.8.0"
- babel-runtime "^6.22.0"
- babel-types "^6.22.0"
-
-babel-plugin-transform-decorators@6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.22.0.tgz#c03635b27a23b23b7224f49232c237a73988d27c"
- dependencies:
- babel-helper-explode-class "^6.22.0"
- babel-plugin-syntax-decorators "^6.13.0"
- babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-types "^6.22.0"
-
-babel-plugin-transform-es2015-arrow-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoping@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-plugin-transform-es2015-classes@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
- dependencies:
- babel-helper-define-map "^6.24.1"
- babel-helper-function-name "^6.24.1"
- babel-helper-optimise-call-expression "^6.24.1"
- babel-helper-replace-supers "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-computed-properties@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-destructuring@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-for-of@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-function-name@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
- dependencies:
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
- dependencies:
- babel-plugin-transform-strict-mode "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-modules-systemjs@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-umd@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
- dependencies:
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-object-super@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
- dependencies:
- babel-helper-replace-supers "^6.24.1"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-parameters@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
- dependencies:
- babel-helper-call-delegate "^6.24.1"
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-spread@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-sticky-regex@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-template-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-unicode-regex@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- regexpu-core "^2.0.0"
-
-babel-plugin-transform-regenerator@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
- dependencies:
- regenerator-transform "0.9.11"
-
-babel-plugin-transform-runtime@6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-strict-mode@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-preset-es2015@6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835"
- dependencies:
- babel-plugin-check-es2015-constants "^6.22.0"
- babel-plugin-transform-es2015-arrow-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoping "^6.22.0"
- babel-plugin-transform-es2015-classes "^6.22.0"
- babel-plugin-transform-es2015-computed-properties "^6.22.0"
- babel-plugin-transform-es2015-destructuring "^6.22.0"
- babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
- babel-plugin-transform-es2015-for-of "^6.22.0"
- babel-plugin-transform-es2015-function-name "^6.22.0"
- babel-plugin-transform-es2015-literals "^6.22.0"
- babel-plugin-transform-es2015-modules-amd "^6.22.0"
- babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
- babel-plugin-transform-es2015-modules-systemjs "^6.22.0"
- babel-plugin-transform-es2015-modules-umd "^6.22.0"
- babel-plugin-transform-es2015-object-super "^6.22.0"
- babel-plugin-transform-es2015-parameters "^6.22.0"
- babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
- babel-plugin-transform-es2015-spread "^6.22.0"
- babel-plugin-transform-es2015-sticky-regex "^6.22.0"
- babel-plugin-transform-es2015-template-literals "^6.22.0"
- babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
- babel-plugin-transform-es2015-unicode-regex "^6.22.0"
- babel-plugin-transform-regenerator "^6.22.0"
-
-babel-register@^6.23.0, babel-register@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
- dependencies:
- babel-core "^6.24.1"
- babel-runtime "^6.22.0"
- core-js "^2.4.0"
- home-or-tmp "^2.0.0"
- lodash "^4.2.0"
- mkdirp "^0.5.1"
- source-map-support "^0.4.2"
-
-babel-runtime@6.23.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.10.0"
-
-babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.24.1, babel-template@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- lodash "^4.2.0"
-
-babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- debug "^2.2.0"
- globals "^9.0.0"
- invariant "^2.2.0"
- lodash "^4.2.0"
-
-babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
- dependencies:
- babel-runtime "^6.22.0"
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^1.0.1"
-
-babylon@^6.11.0, babylon@^6.17.2:
- version "6.17.4"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
-
-balanced-match@^0.4.2:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-base64-js@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- dependencies:
- tweetnacl "^0.14.3"
-
-bean@1.0.15:
- version "1.0.15"
- resolved "https://registry.yarnpkg.com/bean/-/bean-1.0.15.tgz#b4a9fff82618b071471676c8b190868048c34775"
-
-big.js@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
-
-binary-extensions@^1.0.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
-
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- dependencies:
- inherits "~2.0.0"
-
-bluebird@3.4.7:
- version "3.4.7"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
-
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.7"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.7.tgz#ddb048e50d9482790094c13eb3fcfc833ce7ab46"
-
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- dependencies:
- hoek "2.x.x"
-
-brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
-brorand@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-
-browser-fingerprint@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz#8df3cdca25bf7d5b3542d61545d730053fce604a"
-
-browser-split@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/browser-split/-/browser-split-0.0.0.tgz#41419caef769755929dd518967d3eec0a6262771"
-
-browser-split@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/browser-split/-/browser-split-0.0.1.tgz#7b097574f8e3ead606fb4664e64adfdda2981a93"
-
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
- dependencies:
- buffer-xor "^1.0.2"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.0"
- inherits "^2.0.1"
-
-browserify-cipher@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
- dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
-
-browserify-rsa@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
- dependencies:
- bn.js "^4.1.0"
- randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
-
-browserify-zlib@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
- dependencies:
- pako "~0.2.0"
-
-browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
- version "1.7.7"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
- dependencies:
- caniuse-db "^1.0.30000639"
- electron-to-chromium "^1.2.7"
-
-buffer-xor@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
-
-buffer@^4.3.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-
-bytebuffer@5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
- dependencies:
- long "~3"
-
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^1.0.2, camelcase@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-
-camelcase@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-
-camelcase@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
-
-camelize@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
-
-caniuse-api@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
- dependencies:
- browserslist "^1.3.6"
- caniuse-db "^1.0.30000529"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
-caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000696"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000696.tgz#e71f5c61e1f96c7a3af4e791ac5db55e11737604"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
-chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chalk@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
- dependencies:
- ansi-styles "^3.1.0"
- escape-string-regexp "^1.0.5"
- supports-color "^4.0.0"
-
-chokidar@^1.4.3:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^2.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
- dependencies:
- inherits "^2.0.1"
-
-clap@^1.0.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857"
- dependencies:
- chalk "^1.1.3"
-
-class-list@~0.1.0, class-list@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/class-list/-/class-list-0.1.1.tgz#9b9745192c4179b5da0a0d7633658e3c70d796cb"
- dependencies:
- indexof "0.0.1"
-
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
-clone@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-coa@~1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.3.tgz#1b54a5e1dcf77c990455d4deea98c564416dc893"
- dependencies:
- q "^1.1.2"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-color-convert@^1.0.0, color-convert@^1.3.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
- dependencies:
- color-name "^1.1.1"
-
-color-name@^1.0.0, color-name@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d"
-
-color-string@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
- dependencies:
- color-name "^1.0.0"
-
-color@^0.11.0:
- version "0.11.4"
- resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
- dependencies:
- clone "^1.0.2"
- color-convert "^1.3.0"
- color-string "^0.3.0"
-
-colormin@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
- dependencies:
- color "^0.11.0"
- css-color-names "0.0.4"
- has "^1.0.1"
-
-colors@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
- dependencies:
- delayed-stream "~1.0.0"
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- dependencies:
- date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-
-constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-
-convert-source-map@^0.3.3:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
-
-convert-source-map@^1.1.0, convert-source-map@^1.1.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
-
-core-decorators@0.15.0:
- version "0.15.0"
- resolved "https://registry.yarnpkg.com/core-decorators/-/core-decorators-0.15.0.tgz#e5a58ff7ed48b9d2ef42262fd9550cddde18a819"
-
-core-js@^1.1.1:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-
-core-js@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-create-ecdh@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.0.0"
-
-create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
- dependencies:
- cipher-base "^1.0.1"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- sha.js "^2.4.0"
-
-create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
- dependencies:
- cipher-base "^1.0.3"
- create-hash "^1.1.0"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-cross-spawn@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
- dependencies:
- lru-cache "^4.0.1"
- which "^1.2.9"
-
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- dependencies:
- boom "2.x.x"
-
-crypto-browserify@^3.11.0:
- version "3.11.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
- dependencies:
- browserify-cipher "^1.0.0"
- browserify-sign "^4.0.0"
- create-ecdh "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.0"
- diffie-hellman "^5.0.0"
- inherits "^2.0.1"
- pbkdf2 "^3.0.3"
- public-encrypt "^4.0.0"
- randombytes "^2.0.0"
-
-css-color-names@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
-
-css-loader@0.26.1:
- version "0.26.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.1.tgz#2ba7f20131b93597496b3e9bb500785a49cd29ea"
- dependencies:
- babel-code-frame "^6.11.0"
- css-selector-tokenizer "^0.7.0"
- cssnano ">=2.6.1 <4"
- loader-utils "~0.2.2"
- lodash.camelcase "^4.3.0"
- object-assign "^4.0.1"
- postcss "^5.0.6"
- postcss-modules-extract-imports "^1.0.0"
- postcss-modules-local-by-default "^1.0.1"
- postcss-modules-scope "^1.0.0"
- postcss-modules-values "^1.1.0"
- source-list-map "^0.1.4"
-
-css-selector-tokenizer@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
-
-css@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
- dependencies:
- inherits "^2.0.1"
- source-map "^0.1.38"
- source-map-resolve "^0.3.0"
- urix "^0.1.0"
-
-cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
-
-"cssnano@>=2.6.1 <4":
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
- dependencies:
- autoprefixer "^6.3.1"
- decamelize "^1.1.2"
- defined "^1.0.0"
- has "^1.0.1"
- object-assign "^4.0.1"
- postcss "^5.0.14"
- postcss-calc "^5.2.0"
- postcss-colormin "^2.1.8"
- postcss-convert-values "^2.3.4"
- postcss-discard-comments "^2.0.4"
- postcss-discard-duplicates "^2.0.1"
- postcss-discard-empty "^2.0.1"
- postcss-discard-overridden "^0.1.1"
- postcss-discard-unused "^2.2.1"
- postcss-filter-plugins "^2.0.0"
- postcss-merge-idents "^2.1.5"
- postcss-merge-longhand "^2.0.1"
- postcss-merge-rules "^2.0.3"
- postcss-minify-font-values "^1.0.2"
- postcss-minify-gradients "^1.0.1"
- postcss-minify-params "^1.0.4"
- postcss-minify-selectors "^2.0.4"
- postcss-normalize-charset "^1.1.0"
- postcss-normalize-url "^3.0.7"
- postcss-ordered-values "^2.1.0"
- postcss-reduce-idents "^2.2.2"
- postcss-reduce-initial "^1.0.0"
- postcss-reduce-transforms "^1.0.3"
- postcss-svgo "^2.1.1"
- postcss-unique-selectors "^2.0.2"
- postcss-value-parser "^3.2.3"
- postcss-zindex "^2.0.1"
-
-csso@~2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
- dependencies:
- clap "^1.0.9"
- source-map "^0.5.3"
-
-cuid@^1.2.4:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/cuid/-/cuid-1.3.8.tgz#4b875e0969bad764f7ec0706cf44f5fb0831f6b7"
- dependencies:
- browser-fingerprint "0.0.1"
- core-js "^1.1.1"
- node-fingerprint "0.0.2"
-
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- dependencies:
- array-find-index "^1.0.1"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- dependencies:
- assert-plus "^1.0.0"
-
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-
-debug@^2.1.1, debug@^2.2.0:
- version "2.6.8"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
- dependencies:
- ms "2.0.0"
-
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
-
-defined@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-des.js@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- dependencies:
- repeating "^2.0.0"
-
-diffie-hellman@^5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
-dom-delegator@13.1.0:
- version "13.1.0"
- resolved "https://registry.yarnpkg.com/dom-delegator/-/dom-delegator-13.1.0.tgz#f82cc535866a1878d9b4696d3befaeb4b5dad4b3"
- dependencies:
- cuid "^1.2.4"
- ev-store "^7.0.0"
- global "^4.2.1"
- individual "^2.0.0"
- inherits "^2.0.1"
- weakmap-shim "^1.0.0"
- xtend "^2.2.0"
-
-dom-walk@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
-
-domain-browser@^1.1.1:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
-
-ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- dependencies:
- jsbn "~0.1.0"
-
-electron-to-chromium@^1.2.7:
- version "1.3.15"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz#08397934891cbcfaebbd18b82a95b5a481138369"
-
-elliptic@^6.0.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
- dependencies:
- bn.js "^4.4.0"
- brorand "^1.0.1"
- hash.js "^1.0.0"
- hmac-drbg "^1.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.0"
-
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-
-enhanced-resolve@^2.2.2:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-2.3.0.tgz#a115c32504b6302e85a76269d7a57ccdd962e359"
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.3.0"
- object-assign "^4.0.1"
- tapable "^0.2.3"
-
-enhanced-resolve@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3"
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.4.0"
- object-assign "^4.0.1"
- tapable "^0.2.5"
-
-errno@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
- dependencies:
- prr "~0.0.0"
-
-error-ex@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
- dependencies:
- is-arrayish "^0.2.1"
-
-error@^4.3.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/error/-/error-4.4.0.tgz#bf69ff251fb4a279c19adccdaa6b61e90d9bf12a"
- dependencies:
- camelize "^1.0.0"
- string-template "~0.2.0"
- xtend "~4.0.0"
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-esprima@^2.6.0:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-
-esprima@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-ev-store@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/ev-store/-/ev-store-7.0.0.tgz#1ab0c7f82136505dd74b31d17701cb2be6d26558"
- dependencies:
- individual "^3.0.0"
-
-events@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-
-evp_bytestokey@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
- dependencies:
- create-hash "^1.1.1"
-
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- dependencies:
- is-posix-bracket "^0.1.0"
-
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- dependencies:
- fill-range "^2.1.0"
-
-exports-loader@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.3.tgz#57dc78917f709b96f247fa91e69b554c855013c8"
- dependencies:
- loader-utils "0.2.x"
- source-map "0.1.x"
-
-extend@~3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
-
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- dependencies:
- is-extglob "^1.0.0"
-
-extsprintf@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
-
-fastparse@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
-
-file-loader@0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.0.tgz#bbe6db7474ac92c7f54fdc197cf547e98b6b8e12"
- dependencies:
- loader-utils "~0.2.5"
-
-file-saver@1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.3.tgz#cdd4c44d3aa264eac2f68ec165bc791c34af1232"
-
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^1.1.3"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
-find-cache-dir@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
- dependencies:
- commondir "^1.0.1"
- mkdirp "^0.5.1"
- pkg-dir "^1.0.0"
-
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-flatten@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
-
-font-awesome@4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
-
-for-in@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- dependencies:
- for-in "^1.0.1"
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-fsevents@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
- dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.36"
-
-fstream-ignore@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
- dependencies:
- fstream "^1.0.0"
- inherits "2"
- minimatch "^3.0.0"
-
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
-function-bind@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
-
-gaze@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
- dependencies:
- globule "^1.0.0"
-
-get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
-
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- dependencies:
- assert-plus "^1.0.0"
-
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- dependencies:
- is-glob "^2.0.0"
-
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- 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"
-
-global@^4.2.1, global@^4.3.0:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
- dependencies:
- min-document "^2.19.0"
- process "~0.5.1"
-
-globals@^9.0.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-
-globule@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
- dependencies:
- glob "~7.1.1"
- lodash "~4.17.4"
- minimatch "~3.0.2"
-
-graceful-fs@^4.1.2:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
-
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- dependencies:
- ansi-regex "^2.0.0"
-
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
- dependencies:
- function-bind "^1.0.2"
-
-hash-base@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
- dependencies:
- inherits "^2.0.1"
-
-hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.0"
-
-hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
-
-hint.css@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/hint.css/-/hint.css-2.4.1.tgz#cf3396c2df216974c5d9533ee30f3030d7378f9b"
-
-hmac-drbg@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-
-home-or-tmp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.1"
-
-hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
-
-html-comment-regex@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
-
-html-element@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/html-element/-/html-element-2.2.0.tgz#c3c1ff88c261db74d0af6391eef90c346f900730"
- dependencies:
- class-list "~0.1.1"
-
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
-https-browserify@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
-
-hyperscript@2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hyperscript/-/hyperscript-2.0.2.tgz#3839cba45554bdfe27bb81c2142d1684f8135af5"
- dependencies:
- browser-split "0.0.0"
- class-list "~0.1.0"
- html-element "^2.0.0"
-
-icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
-
-ieee754@^1.1.4:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
-
-imports-loader@0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.0.tgz#468c04de8075941cfab28146c755c24cc1f36ccd"
- dependencies:
- loader-utils "^0.2.16"
- source-map "^0.5.6"
-
-in-publish@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- dependencies:
- repeating "^2.0.0"
-
-indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
-
-indexof@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-
-individual@3.0.0, individual@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/individual/-/individual-3.0.0.tgz#e7ca4f85f8957b018734f285750dc22ec2f9862d"
-
-individual@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97"
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-
-ini@~1.3.0:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
-
-interpret@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
-
-invariant@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
- dependencies:
- loose-envify "^1.0.0"
-
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
-
-is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
-
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- dependencies:
- builtin-modules "^1.0.0"
-
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- dependencies:
- is-primitive "^2.0.0"
-
-is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-glob@^2.0.0, is-glob@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
- dependencies:
- is-extglob "^1.0.0"
-
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- dependencies:
- kind-of "^3.0.2"
-
-is-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
-
-is-plain-obj@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-is-svg@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
- dependencies:
- html-comment-regex "^1.1.0"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- dependencies:
- isarray "1.0.0"
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-
-js-base64@^2.1.8, js-base64@^2.1.9:
- version "2.1.9"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
-
-js-tokens@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-
-js-yaml@3.8.1:
- version "3.8.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628"
- dependencies:
- argparse "^1.0.7"
- esprima "^3.1.1"
-
-js-yaml@^3.5.2:
- version "3.8.4"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
- dependencies:
- argparse "^1.0.7"
- esprima "^3.1.1"
-
-js-yaml@~3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
- dependencies:
- argparse "^1.0.7"
- esprima "^2.6.0"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-
-jshashes@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.6.tgz#b04eb4ae8f9987b2d3ce00a6337c120543949bfd"
-
-json-formatter-js@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/json-formatter-js/-/json-formatter-js-1.3.0.tgz#a6577ac03ae7876d492b0954bd4eff33c38cbc09"
-
-json-loader@0.5.4, json-loader@^0.5.4:
- version "0.5.4"
- resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-
-json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-json5@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-
-jsprim@^1.2.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.0.2"
- json-schema "0.2.3"
- verror "1.3.6"
-
-kind-of@^3.0.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- dependencies:
- is-buffer "^1.1.5"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- dependencies:
- invert-kv "^1.0.0"
-
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
-loader-runner@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
-
-loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5:
- version "0.2.17"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
- object-assign "^4.0.1"
-
-loader-utils@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
-
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._bindcallback@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-
-lodash._createassigner@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
- dependencies:
- lodash._bindcallback "^3.0.0"
- lodash._isiterateecall "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
-lodash.assign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._createassigner "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash.assign@^4.0.1, lodash.assign@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
-
-lodash.camelcase@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
-
-lodash.clonedeep@^4.3.2:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-
-lodash.defaults@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
- dependencies:
- lodash.assign "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash.defaults@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
-
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
-
-lodash.mergewith@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
-
-lodash.restparam@^3.0.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
-
-lodash.tail@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
-
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-
-lodash@^4.0.0, lodash@^4.14.0, lodash@^4.2.0, lodash@~4.17.4:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
-
-loglevel@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd"
-
-long@3.2.0, long@~3:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
-
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-loose-envify@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
- dependencies:
- js-tokens "^3.0.0"
-
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-lru-cache@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
-macaddress@^0.2.8:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-
-material-design-lite@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/material-design-lite/-/material-design-lite-1.3.0.tgz#d004ce3fee99a1eeb74a78b8a325134a5f1171d3"
-
-math-expression-evaluator@^1.2.14:
- version "1.2.17"
- resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
-
-memory-fs@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-memory-fs@^0.4.0, memory-fs@~0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
-micromatch@^2.1.5:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- dependencies:
- arr-diff "^2.0.0"
- array-unique "^0.2.1"
- braces "^1.8.2"
- expand-brackets "^0.1.4"
- extglob "^0.3.1"
- filename-regex "^2.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.1"
- kind-of "^3.0.2"
- normalize-path "^2.0.1"
- object.omit "^2.0.0"
- parse-glob "^3.0.4"
- regex-cache "^0.4.2"
-
-miller-rabin@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
-mime-db@~1.27.0:
- version "1.27.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
-
-mime-types@^2.1.12, mime-types@~2.1.7:
- version "2.1.15"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
- dependencies:
- mime-db "~1.27.0"
-
-mime@1.2.x:
- version "1.2.11"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
-
-min-document@^2.19.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
- dependencies:
- dom-walk "^0.1.0"
-
-minimalistic-assert@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
-
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-
-minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.1.3, minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-moment@2.17.1:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-nan@^2.3.0, nan@^2.3.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
-
-next-tick@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d"
-
-node-css@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/node-css/-/node-css-0.1.0.tgz#61482945f76a433a06dfc62bd5babb75442ae98f"
-
-node-fingerprint@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/node-fingerprint/-/node-fingerprint-0.0.2.tgz#31cbabeb71a67ae7dd5a7dc042e51c3c75868501"
-
-node-gyp@^3.3.1:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
- dependencies:
- fstream "^1.0.0"
- glob "^7.0.3"
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- mkdirp "^0.5.0"
- nopt "2 || 3"
- npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
- request "2"
- rimraf "2"
- semver "~5.3.0"
- tar "^2.0.0"
- which "1"
-
-node-libs-browser@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
- dependencies:
- assert "^1.1.1"
- browserify-zlib "^0.1.4"
- buffer "^4.3.0"
- console-browserify "^1.1.0"
- constants-browserify "^1.0.0"
- crypto-browserify "^3.11.0"
- domain-browser "^1.1.1"
- events "^1.0.0"
- https-browserify "0.0.1"
- os-browserify "^0.2.0"
- path-browserify "0.0.0"
- process "^0.11.0"
- punycode "^1.2.4"
- querystring-es3 "^0.2.0"
- readable-stream "^2.0.5"
- stream-browserify "^2.0.1"
- stream-http "^2.3.1"
- string_decoder "^0.10.25"
- timers-browserify "^2.0.2"
- tty-browserify "0.0.0"
- url "^0.11.0"
- util "^0.10.3"
- vm-browserify "0.0.4"
-
-node-pre-gyp@^0.6.36:
- version "0.6.36"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786"
- dependencies:
- mkdirp "^0.5.1"
- nopt "^4.0.1"
- npmlog "^4.0.2"
- rc "^1.1.7"
- request "^2.81.0"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^2.2.1"
- tar-pack "^3.4.0"
-
-node-sass@4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b"
- dependencies:
- async-foreach "^0.1.3"
- chalk "^1.1.1"
- cross-spawn "^3.0.0"
- gaze "^1.0.0"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- in-publish "^2.0.0"
- lodash.assign "^4.2.0"
- lodash.clonedeep "^4.3.2"
- lodash.mergewith "^4.6.0"
- meow "^3.7.0"
- mkdirp "^0.5.1"
- nan "^2.3.2"
- node-gyp "^3.3.1"
- npmlog "^4.0.0"
- request "^2.61.0"
- sass-graph "^2.1.1"
- stdout-stream "^1.4.0"
-
-"nopt@2 || 3":
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- dependencies:
- abbrev "1"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- dependencies:
- hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
-
-normalize-url@^1.4.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
- dependencies:
- object-assign "^4.0.1"
- prepend-http "^1.0.0"
- query-string "^4.1.0"
- sort-keys "^1.0.0"
-
-normalize.css@5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-5.0.0.tgz#7cec875ce8178a5333c4de80b68ea9c18b9d7c37"
-
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-
-object-assign@^4.0.1, object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object-path@^0.9.2:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
-
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
-
-once@^1.3.0, once@^1.3.3:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-os-browserify@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-locale@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
- dependencies:
- lcid "^1.0.0"
-
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@0, osenv@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-pako@~0.2.0:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-
-papaparse@4.1.4:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-4.1.4.tgz#57b224621762da0f943d95b82a8e82c3b4b331a2"
-
-parse-asn1@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
- dependencies:
- asn1.js "^4.0.0"
- browserify-aes "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.0"
- pbkdf2 "^3.0.3"
-
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- dependencies:
- error-ex "^1.2.0"
-
-path-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-pbkdf2@^3.0.3:
- version "3.0.12"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2"
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
-
-pify@^2.0.0, pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-
-pkg-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
- dependencies:
- find-up "^1.0.0"
-
-postcss-calc@^5.2.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
- dependencies:
- postcss "^5.0.2"
- postcss-message-helpers "^2.0.0"
- reduce-css-calc "^1.2.6"
-
-postcss-colormin@^2.1.8:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
- dependencies:
- colormin "^1.0.5"
- postcss "^5.0.13"
- postcss-value-parser "^3.2.3"
-
-postcss-convert-values@^2.3.4:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
- dependencies:
- postcss "^5.0.11"
- postcss-value-parser "^3.1.2"
-
-postcss-discard-comments@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
- dependencies:
- postcss "^5.0.14"
-
-postcss-discard-duplicates@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
- dependencies:
- postcss "^5.0.4"
-
-postcss-discard-empty@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
- dependencies:
- postcss "^5.0.14"
-
-postcss-discard-overridden@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
- dependencies:
- postcss "^5.0.16"
-
-postcss-discard-unused@^2.2.1:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
- dependencies:
- postcss "^5.0.14"
- uniqs "^2.0.0"
-
-postcss-filter-plugins@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
- dependencies:
- postcss "^5.0.4"
- uniqid "^4.0.0"
-
-postcss-merge-idents@^2.1.5:
- version "2.1.7"
- resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.10"
- postcss-value-parser "^3.1.1"
-
-postcss-merge-longhand@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
- dependencies:
- postcss "^5.0.4"
-
-postcss-merge-rules@^2.0.3:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
- dependencies:
- browserslist "^1.5.2"
- caniuse-api "^1.5.2"
- postcss "^5.0.4"
- postcss-selector-parser "^2.2.2"
- vendors "^1.0.0"
-
-postcss-message-helpers@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
-
-postcss-minify-font-values@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
- dependencies:
- object-assign "^4.0.1"
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
-
-postcss-minify-gradients@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
- dependencies:
- postcss "^5.0.12"
- postcss-value-parser "^3.3.0"
-
-postcss-minify-params@^1.0.4:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
- dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.2"
- postcss-value-parser "^3.0.2"
- uniqs "^2.0.0"
-
-postcss-minify-selectors@^2.0.4:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
- dependencies:
- alphanum-sort "^1.0.2"
- has "^1.0.1"
- postcss "^5.0.14"
- postcss-selector-parser "^2.0.0"
-
-postcss-modules-extract-imports@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
- dependencies:
- postcss "^6.0.1"
-
-postcss-modules-local-by-default@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-scope@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-values@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
- dependencies:
- icss-replace-symbols "^1.1.0"
- postcss "^6.0.1"
-
-postcss-normalize-charset@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
- dependencies:
- postcss "^5.0.5"
-
-postcss-normalize-url@^3.0.7:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^1.4.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
-
-postcss-ordered-values@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
- dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.1"
-
-postcss-reduce-idents@^2.2.2:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
- dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
-
-postcss-reduce-initial@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
- dependencies:
- postcss "^5.0.4"
-
-postcss-reduce-transforms@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.8"
- postcss-value-parser "^3.0.1"
-
-postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
- dependencies:
- flatten "^1.0.2"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-svgo@^2.1.1:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
- dependencies:
- is-svg "^2.0.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
- svgo "^0.7.0"
-
-postcss-unique-selectors@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
- dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.4"
- uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
-
-postcss-zindex@^2.0.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.4"
- uniqs "^2.0.0"
-
-postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
- version "5.2.17"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
- dependencies:
- chalk "^1.1.3"
- js-base64 "^2.1.9"
- source-map "^0.5.6"
- supports-color "^3.2.3"
-
-postcss@^6.0.1:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.4.tgz#573acddf73f42ecb24aa618d40ee3d5a7c04a654"
- dependencies:
- chalk "^2.0.1"
- source-map "^0.5.6"
- supports-color "^4.0.0"
-
-prepend-http@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
-
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-private@^0.1.6:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-process@^0.11.0:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-
-process@~0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
-
-prr@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
-
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-
-public-encrypt@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
- dependencies:
- bn.js "^4.1.0"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- parse-asn1 "^5.0.0"
- randombytes "^2.0.1"
-
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-
-punycode@^1.2.4, punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-purecss@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/purecss/-/purecss-0.6.2.tgz#f0827d227e909543c5138f36d56c8c613f476b8c"
-
-q@^1.1.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
-
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
-
-query-string@^4.1.0:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
- dependencies:
- object-assign "^4.1.0"
- strict-uri-encode "^1.0.0"
-
-querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-
-querystringify@0.0.x:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
-
-ramda@0.23.0:
- version "0.23.0"
- resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.23.0.tgz#ccd13fff73497a93974e3e86327bfd87bd6e8e2b"
-
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-randombytes@^2.0.0, randombytes@^2.0.1:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
- dependencies:
- safe-buffer "^5.1.0"
-
-raw-loader@0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
-
-rc@^1.1.7:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
- dependencies:
- deep-extend "~0.4.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
-
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-reduce-css-calc@^1.2.6:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
- dependencies:
- balanced-match "^0.4.2"
- math-expression-evaluator "^1.2.14"
- reduce-function-call "^1.0.1"
-
-reduce-function-call@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
- dependencies:
- balanced-match "^0.4.2"
-
-regenerate@^1.2.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
-
-regenerator-runtime@^0.10.0:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
-
-regenerator-transform@0.9.11:
- version "0.9.11"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
- dependencies:
- babel-runtime "^6.18.0"
- babel-types "^6.19.0"
- private "^0.1.6"
-
-regex-cache@^0.4.2:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
- dependencies:
- is-equal-shallow "^0.1.3"
- is-primitive "^2.0.0"
-
-regex-parser@^2.2.1:
- version "2.2.7"
- resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1"
-
-regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regexpu-core@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
-
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- dependencies:
- jsesc "~0.5.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
-
-repeat-element@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-
-repeat-string@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- dependencies:
- is-finite "^1.0.0"
-
-request@2, request@^2.61.0, request@^2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
-
-requires-port@1.0.x:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-
-resolve-from@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
-
-resolve-url-loader@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.0.0.tgz#69028a8a1e8e4ed7e632d6d6f1f19bc2c486ef69"
- dependencies:
- adjust-sourcemap-loader "^1.0.0"
- camelcase "^4.0.0"
- convert-source-map "^1.1.1"
- loader-utils "^0.2.11"
- lodash.defaults "^4.0.0"
- rework "^1.0.1"
- rework-visit "^1.0.0"
- source-map "^0.5.6"
- urix "^0.1.0"
-
-resolve-url@~0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-
-rework-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
-
-rework@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
- dependencies:
- convert-source-map "^0.3.3"
- css "^2.0.0"
-
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
-rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
- dependencies:
- glob "^7.0.5"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
- dependencies:
- hash-base "^2.0.0"
- inherits "^2.0.1"
-
-roboto-fontface@0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/roboto-fontface/-/roboto-fontface-0.7.0.tgz#2f36464e5c99353e8427f55f1fca7be1a8a417d9"
-
-roboto-mono-webfont@2.0.986:
- version "2.0.986"
- resolved "https://registry.yarnpkg.com/roboto-mono-webfont/-/roboto-mono-webfont-2.0.986.tgz#9e9ae2e232570af900dd61e497f4ff41a9d66b4a"
-
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-sass-graph@^2.1.1:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
- dependencies:
- glob "^7.0.0"
- lodash "^4.0.0"
- scss-tokenizer "^0.2.3"
- yargs "^7.0.0"
-
-sass-loader@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.1.tgz#fcfa0251cd18a61e62c8a6ec0eb56dd6baa8278c"
- dependencies:
- async "^2.0.1"
- loader-utils "^0.2.15"
- lodash.tail "^4.1.1"
- pify "^2.3.0"
-
-sax@~1.2.1:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-
-scss-tokenizer@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
- dependencies:
- js-base64 "^2.1.8"
- source-map "^0.4.2"
-
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-
-set-blocking@^2.0.0, set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-setimmediate@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-
-sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.8"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
- dependencies:
- inherits "^2.0.1"
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- dependencies:
- hoek "2.x.x"
-
-sort-keys@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
- dependencies:
- is-plain-obj "^1.0.0"
-
-source-list-map@^0.1.4, source-list-map@~0.1.7:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
-
-source-map-resolve@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
- dependencies:
- atob "~1.1.0"
- resolve-url "~0.2.1"
- source-map-url "~0.3.0"
- urix "~0.1.0"
-
-source-map-support@^0.4.2:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
- dependencies:
- source-map "^0.5.6"
-
-source-map-url@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
-
-source-map@0.1.x, source-map@^0.1.38:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
- version "0.5.6"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
- dependencies:
- spdx-license-ids "^1.0.2"
-
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
-
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-
-sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
-
-stdout-stream@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
- dependencies:
- readable-stream "^2.0.1"
-
-stream-browserify@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
-stream-http@^2.3.1:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
- dependencies:
- builtin-status-codes "^3.0.0"
- inherits "^2.0.1"
- readable-stream "^2.2.6"
- to-arraybuffer "^1.0.0"
- xtend "^4.0.0"
-
-strict-uri-encode@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
-
-string-template@~0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
-
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string_decoder@^0.10.25:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-
-string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
- dependencies:
- safe-buffer "~5.1.0"
-
-stringstream@~0.0.4:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- dependencies:
- get-stdin "^4.0.1"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-style-loader@0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9"
- dependencies:
- loader-utils "^0.2.7"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-supports-color@^3.1.0, supports-color@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.1.0.tgz#92cc14bb3dad8928ca5656c33e19a19f20af5c7a"
- dependencies:
- has-flag "^2.0.0"
-
-svgo@^0.7.0:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
- dependencies:
- coa "~1.0.1"
- colors "~1.1.2"
- csso "~2.3.1"
- js-yaml "~3.7.0"
- mkdirp "~0.5.1"
- sax "~1.2.1"
- whet.extend "~0.9.9"
-
-tapable@^0.2.3, tapable@^0.2.5, tapable@~0.2.5:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
-
-tar-pack@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
- dependencies:
- debug "^2.2.0"
- fstream "^1.0.10"
- fstream-ignore "^1.0.5"
- once "^1.3.3"
- readable-stream "^2.1.4"
- rimraf "^2.5.1"
- tar "^2.2.1"
- uid-number "^0.0.6"
-
-tar@^2.0.0, tar@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-tern@0.21.0:
- version "0.21.0"
- resolved "https://registry.yarnpkg.com/tern/-/tern-0.21.0.tgz#809c87a826e112494398cf8894f7c2d1b3464eb7"
- dependencies:
- acorn "^4.0.9"
- enhanced-resolve "^2.2.2"
- glob "^7.1.1"
- minimatch "^3.0.3"
- resolve-from "2.0.0"
-
-timers-browserify@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
- dependencies:
- setimmediate "^1.0.4"
-
-tmp@0.0.31:
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
- dependencies:
- os-tmpdir "~1.0.1"
-
-to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-
-to-fast-properties@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-
-tough-cookie@~2.3.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
- dependencies:
- punycode "^1.4.1"
-
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
-
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-
-tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- dependencies:
- safe-buffer "^5.0.1"
-
-tv4@1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.2.7.tgz#bd29389afc73ade49ae5f48142b5d544bf68d120"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-
-uglify-js@^2.7.5:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
- dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-uid-number@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-
-uniqid@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
- dependencies:
- macaddress "^0.2.8"
-
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
-
-urix@^0.1.0, urix@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-
-url-loader@0.5.7:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.7.tgz#67e8779759f8000da74994906680c943a9b0925d"
- dependencies:
- loader-utils "0.2.x"
- mime "1.2.x"
-
-url-parse@1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156"
- dependencies:
- querystringify "0.0.x"
- requires-port "1.0.x"
-
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-util@0.10.3, util@^0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- dependencies:
- inherits "2.0.1"
-
-uuid@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
-
-validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
- dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
-
-vendors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
-
-verror@1.3.6:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
- dependencies:
- extsprintf "1.0.2"
-
-virtual-dom@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/virtual-dom/-/virtual-dom-2.1.1.tgz#80eda2d481b9ede0c049118cefcb4a05f21d1375"
- dependencies:
- browser-split "0.0.1"
- error "^4.3.0"
- ev-store "^7.0.0"
- global "^4.3.0"
- is-object "^1.0.1"
- next-tick "^0.2.2"
- x-is-array "0.1.0"
- x-is-string "0.1.0"
-
-vm-browserify@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
- dependencies:
- indexof "0.0.1"
-
-watchpack@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
- dependencies:
- async "^2.1.2"
- chokidar "^1.4.3"
- graceful-fs "^4.1.2"
-
-weakmap-shim@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/weakmap-shim/-/weakmap-shim-1.1.1.tgz#d65afd784109b2166e00ff571c33150ec2a40b49"
-
-webpack-sources@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750"
- dependencies:
- source-list-map "~0.1.7"
- source-map "~0.5.3"
-
-webpack@2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475"
- dependencies:
- acorn "^4.0.4"
- acorn-dynamic-import "^2.0.0"
- ajv "^4.7.0"
- ajv-keywords "^1.1.1"
- async "^2.1.2"
- enhanced-resolve "^3.0.0"
- interpret "^1.0.0"
- json-loader "^0.5.4"
- loader-runner "^2.3.0"
- loader-utils "^0.2.16"
- memory-fs "~0.4.1"
- mkdirp "~0.5.0"
- node-libs-browser "^2.0.0"
- source-map "^0.5.3"
- supports-color "^3.1.0"
- tapable "~0.2.5"
- uglify-js "^2.7.5"
- watchpack "^1.2.0"
- webpack-sources "^0.1.4"
- yargs "^6.0.0"
-
-whet.extend@~0.9.9:
- version "0.9.9"
- resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
-
-which-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
-
-which@1, which@^1.2.9:
- version "1.2.14"
- resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
- dependencies:
- string-width "^1.0.2"
-
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-x-is-array@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/x-is-array/-/x-is-array-0.1.0.tgz#de520171d47b3f416f5587d629b89d26b12dc29d"
-
-x-is-string@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
-
-xtend@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9"
-
-xtend@^4.0.0, xtend@~4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
-
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-
-yaml-loader@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.4.0.tgz#4aae447d13c1aa73a989d8a2a5309b0b1a3ca353"
- dependencies:
- js-yaml "^3.5.2"
-
-yargs-parser@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
- dependencies:
- camelcase "^3.0.0"
-
-yargs-parser@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
- dependencies:
- camelcase "^3.0.0"
-
-yargs@^6.0.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
- dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
- y18n "^3.2.1"
- yargs-parser "^4.2.0"
-
-yargs@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
- dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
- y18n "^3.2.1"
- yargs-parser "^5.0.0"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"