1
0
mirror of https://github.com/yldio/copilot.git synced 2024-12-01 07:30:07 +02:00

Fix conflict

This commit is contained in:
JUDIT GRESKOVITS 2017-01-30 17:24:53 +00:00
commit 46b314e5b5
41 changed files with 1362 additions and 408 deletions

View File

@ -15,7 +15,8 @@ setup using the triton tool.
Currently requires [yarn](https://yarnpkg.com/en/docs/install) for installing dependencies,
as well as `docker` and `docker-compose` are installed correctly, this can be done by
running `make`, make continues without any errors, then you are good to go.
running `make`, make continues without any errors, then you are good to go. [node-triton](https://github.com/joyent/node-triton)
is also needed if deployment to Triton is required.
```
make && make install
@ -52,6 +53,7 @@ We will also include multiple PoC's of various bits of functionality from UI's p
```
.
├── cloudapi-graphql
├── docs
├── frontend
├── nginx
├── ui
@ -62,6 +64,11 @@ We will also include multiple PoC's of various bits of functionality from UI's p
An implementation of the [Joyent CloudAPI](https://apidocs.joyent.com/cloudapi/) in GraphQL.
### Docs
Documentation about the project, mainly focused on information for the technical runnings of this project.
Can be view online at the [documentation website](http://docs.svc.f4b20699-b323-4452-9091-977895896da6.eu-ams-1.triton.zone/)
### frontend
The client side code with a dev-server, this also includes the production server for the meantime, however we are looking at moving towards a deployment of the build artifacts to manta, and another server to host these assets.

View File

@ -1 +1 @@
FROM quay.io/yldio/alpine-node-containerpilot:6.9.3
FROM quay.io/yldio/alpine-node-containerpilot:6.9.4-3

View File

@ -10,5 +10,38 @@
}
],
"backends": [
]
],
"telemetry": {
"port": 9090,
"sensors": [
{
"name": "graphql_memory_percent",
"help": "percentage of memory used",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "memory"]
},
{
"name": "graphql_cpu_load",
"help": "cpu load",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "cpu"]
},
{
"name": "graphql_disk_capacity",
"help": "disk capacity",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskcapacity"]
},
{
"name": "graphql_disk_usage",
"help": "disk usage",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskusage"]
}
]
}
}

View File

@ -76,7 +76,6 @@ nginx:
ports:
- 80:80
- 443:443
- 9090:9090
env_file: .env
environment:
- CONSUL_AGENT=1
@ -97,3 +96,17 @@ prometheus:
labels:
- triton.cns.services=prometheus
- com.docker.swarm.affinities=["container!=~*prometheus*"]
#############################################################################
# docs is an open source performance monitoring tool
# it is included here for demo purposes and is not required
#############################################################################
docs:
image: quay.io/yldio/joyent-portal-docs
restart: always
mem_limit: 128m
env_file: .env
ports:
- 80:80
labels:
- triton.cns.services=docs
- com.docker.swarm.affinities=["container!=~*docs*"]

1
docs/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
build

16
docs/Dockerfile Normal file
View File

@ -0,0 +1,16 @@
FROM jfloff/alpine-python:3.4-slim
RUN /entrypoint.sh \
-p sphinx \
-p recommonmark \
-p sphinx_rtd_theme \
-a make \
&& echo
RUN mkdir -p /docs/
WORKDIR /docs/
COPY Makefile .
COPY source ./source/
RUN make html
WORKDIR /docs/build/html/
EXPOSE 80
CMD ["python", "-m", "http.server", "80"]

56
docs/Makefile Normal file
View File

@ -0,0 +1,56 @@
NAME := $(lastword $(subst /, ,$(CURDIR)))
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXPROJ = PrototypeJoyentPortal
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: build
build:
docker build -t quay.io/yldio/joyent-portal-$(NAME) .
.PHONY: push
push:
docker push quay.io/yldio/joyent-portal-$(NAME)
.PHONY: test
test:
.PHONY: test-ci
test-ci:
.PHONY: install
install:
.PHONY: start
start:
.PHONY: install-production
install-production:
.PHONY: clean
clean:
.PHONY: lint
lint:
.PHONY: lint-ci
lint-ci:
.PHONY: licence-check
lint-ci:

49
docs/README.rst Normal file
View File

@ -0,0 +1,49 @@
Prototype Joyent Portal Docs
**************
This repo contains the source code for the `Prototype Joyent Portal docs`_.
Contributing
############
Fork the repo, make an edit, submit a PR. No patch is too small! <3
Building locally
################
1. Install `Sphinx <http://www.sphinx-doc.org/en/stable/>`_.
2. Install ``sphinx_rtd_theme`` with ``pip install sphinx_rtd_theme``
3. Run ``make html``
4. Open ``build/html/index.html`` in your browser.
Deployment
##########
``master`` is automatically deployed to `https://xxx <https://xxx/docs>`_.
License
#######
This project was forked from `https://github.com/shoreditch-ops/artillery-docs`_
::
The MIT License (MIT)
Copyright (c) 2015-2016 Shoreditch Ops Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

22
docs/circle.yml Normal file
View File

@ -0,0 +1,22 @@
machine:
python:
version: 2.7.5
environment:
PATH: "/usr/local/bin:${PATH}"
dependencies:
cache_directories:
- "~/.apt-cache"
pre:
- sudo rm -rf /var/cache/apt/archives && sudo ln -s ~/.apt-cache /var/cache/apt/archives && mkdir -p ~/.apt-cache/partial
- sudo apt-get update; sudo apt-get install python-sphinx
- pip install sphinx_rtd_theme
- pip install s3cmd
test:
override:
- make html
deployment:
production:
branch: master
commands:
- cp .s3cfg ~/.s3cfg
- bash scripts/deploy.sh

161
docs/source/conf.py Normal file
View File

@ -0,0 +1,161 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Prototype Joyent Portal documentation build configuration file, created by
# sphinx-quickstart on Fri Jan 27 11:28:13 2017.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
import sphinx_rtd_theme
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.githubpages']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
from recommonmark.parser import CommonMarkParser
source_parsers = {'.md': CommonMarkParser}
source_suffix = ['.rst', '.md']
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = 'Prototype Joyent Portal'
copyright = '2017, YLD and Make Us Proud'
author = 'YLD and Make Us Proud'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '1.0'
# The full version, including alpha/beta/rc tags.
release = '1.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "sphinx_rtd_theme"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'PrototypeJoyentPortaldoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'PrototypeJoyentPortal.tex', 'Prototype Joyent Portal Documentation',
'YLD and Make Us Proud', 'manual'),
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'prototypejoyentportal', 'Prototype Joyent Portal Documentation',
[author], 1)
]
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'PrototypeJoyentPortal', 'Prototype Joyent Portal Documentation',
author, 'PrototypeJoyentPortal', 'One line description of project.',
'Miscellaneous'),
]

View File

@ -0,0 +1,28 @@
# Current Progress
## UI
[Viewable Here](http://nginx.svc.f4b20699-b323-4452-9091-977895896da6.eu-ams-1.triton.zone/)
The UI is a set of components that have been built using react, they are viewable
using the link above, which is a running version of react-storybook.
## Frontend
[Viewable Here](http://frontend.svc.f4b20699-b323-4452-9091-977895896da6.eu-ams-1.triton.zone:8000/)
## Docs
[Viewable Here](http://docs.svc.f4b20699-b323-4452-9091-977895896da6.eu-ams-1.triton.zone/)
## CloudAPI Graphql
[Accessible Here](http://cloudapi.svc.f4b20699-b323-4452-9091-977895896da6.eu-ams-1.triton.zone:3000/)
## Spikes
The spikes within this project is small pieces of work, implementing features that
we are either not too sure about or wish to find more information on.
Spikes are not currently hosted anywhere, however they are accessible from github
within the main repository.

61
docs/source/deployment.md Normal file
View File

@ -0,0 +1,61 @@
# Deployment
The project as it stands is a monorepo, each part of this prototype
(cloudapi-graphql, ui, frontend, nginx) can be found in the root directory.
We currently are using [CircleCI](https://circleci.com/gh/yldio/joyent-portal/)
for continuous deployment. As soon as a commit is push to Github, we fire a hook
off to CircleCI which kicks off our tests.
CircleCI is configured through the [circle.yaml](https://github.com/yldio/joyent-portal/blob/master/circle.yml)
found at the root of the project. The main take from this is that we install and
setup our dependencies such as docker, docker-compose, triton and yarn. CircleCI
then runs the appropriate Makefile command.
## Configuration
CircleCI is configured purely from environment variables. The current set of
variables are defined below, The SDC\_ variables are pulled directly from the
output of `triton env` and inserted into CircleCI to simplifying setting up triton-cli
in a testing environment.
We also have some \_DOCKER\_ variables, again these are used by triton, but because
we wish to build and push the images inside CircleCI we only use them at deployment.
The docker login username and password is derived from a robot account quay.io
```
COMPOSE_HTTP_TIMEOUT
NPM_TOKEN
SDC_ACCOUNT
SDC_KEY_ID
SDC_URL
_DOCKER_CERT_PATH
_DOCKER_HOST
_DOCKER_LOGIN_PASSWORD
_DOCKER_LOGIN_USERNAME
_DOCKER_REGISTRY
_DOCKER_TLS_VERIFY
```
Other environment variables in use come directly from CircleCI, and a reference
of these can be found [here](https://circleci.com/docs/environment-variables/)
## Docker Images
Each of the service contained within the Joyent Portal repository is deployed
using docker, the are built and tested in CI and when passing are pushed to
[Quay.io](https://quay.io/repository/) under the yldio organisation.
Images are usually built from our own base image [alpine-node-containerpilot](https://github.com/yldio/alpine-node-containerpilot)
For prosperity, the alpine-node-containerpilot is tagged in quay.io as `latest`
always points at `master`. These tags should represent the version of node being
ran `:6.4.4` and should have a postfix for any no-node changes to the image
`:6.4.4-2`.
## /.bin/deploy
This command is ran at the point when all of the tests are passing. It fires off
a call to `docker-compose -d up`. This can equally be ran on a developers machine
if manual intervention is needed.

14
docs/source/index.rst Normal file
View File

@ -0,0 +1,14 @@
.. Prototype Joyent Portal documentation master file, created by
sphinx-quickstart on Fri Jan 27 11:28:13 2017.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to Prototype Joyent Portal's documentation!
===================================================
.. toctree::
:maxdepth: 2
:caption: Contents:
currentprogress
deployment

View File

@ -1 +1 @@
FROM quay.io/yldio/alpine-node-containerpilot:6.9.3
FROM quay.io/yldio/alpine-node-containerpilot:6.9.4-3

View File

@ -10,5 +10,38 @@
}
],
"backends": [
]
],
"telemetry": {
"port": 9090,
"sensors": [
{
"name": "frontend_memory_percent",
"help": "percentage of memory used",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "memory"]
},
{
"name": "frontend_cpu_load",
"help": "cpu load",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "cpu"]
},
{
"name": "frontend_disk_capacity",
"help": "disk capacity",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskcapacity"]
},
{
"name": "frontend_disk_usage",
"help": "disk usage",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskusage"]
}
]
}
}

View File

@ -43,6 +43,7 @@
"react-redux": "^5.0.2",
"react-router": "4.0.0-alpha.6",
"reduce-reducers": "^0.1.2",
"react-select": "^1.0.0-rc.2",
"redux": "^3.6.0",
"redux-actions": "^1.2.0",
"redux-batched-actions": "^0.1.5",

View File

@ -14,8 +14,9 @@ const buttonStyle = {
const People = (props) => {
const {
orgUI = {},
UI = {},
handleToggle,
people
} = props;
return (
@ -23,7 +24,7 @@ const People = (props) => {
<Row>
<Column smOffset={9} xs={2}>
<Button
disabled={orgUI.invite_toggled}
disabled={UI.invite_toggled}
onClick={handleToggle}
style={buttonStyle}
>
@ -32,11 +33,13 @@ const People = (props) => {
</Column>
</Row>
{orgUI.invite_toggled ? <Invite {...props} /> : null}
{UI.invite_toggled ? <Invite {...props} /> : null}
<Row>
<Column xs={12}>
<PeopleTable {...props} />
{ people.length > 0
? <PeopleTable {...props} />
: <h3>Noody here!</h3> }
</Column>
</Row>
</div>
@ -44,8 +47,9 @@ const People = (props) => {
};
People.propTypes = {
UI: React.PropTypes.object,
handleToggle: React.PropTypes.func,
orgUI: React.PropTypes.object,
people: React.PropTypes.array,
};
module.exports = People;

View File

@ -1,107 +1,109 @@
const React = require('react');
// const PropTypes = require('@root/prop-types');
const Row = require('@ui/components/row');
const Column = require('@ui/components/column');
const Button = require('@ui/components/button');
// const SelectCustom = require('@ui/components/select-custom');
const Invite = (props) => {
// TOOD: Require from UI Components - causes issue ATM.
const Select = require('react-select');
require('react-select/dist/react-select.css');
const {
// people = [],
handleToggle,
// platformMembers
} = props;
const Invite = React.createClass({
// const InputStyle = {
// float: 'left',
// width: '75%'
// };
propTypes: {
// UI: React.PropTypes.object,
handleToggle: React.PropTypes.func,
// people: React.PropTypes.array,
platformMembers: React.PropTypes.array,
},
const AddButtonStyle = {
float: 'right',
width: '20%'
};
getInitialState() {
return {
selectValue: '',
members: []
};
},
const styleInline = {
display: 'inline-block'
};
getFormattedPlatformMembers() {
return this.props.platformMembers.map((m) => ({
value: m.email,
label: m.name
}));
},
// const selectData = [
// {
// value: 'one',
// label: 'One'
// },
// {
// value: 'two',
// label: 'Two'
// },
// {
// value: 'three',
// label: 'Three'
// },
// {
// value: 'four',
// label: 'Four'
// },
// {
// value: 'five',
// label: 'Five'
// },
// {
// value: 'six',
// label: 'Six'
// }
// ];
render() {
return (
<Row>
<Column xs={6}>
<p>Search for a person by name or email or enter an email address
to invite someone new.</p>
const {
handleToggle,
// UI = {},
// people = [],
} = this.props;
<Row>
<Column xs={12}>
{/*TODO: Fix why there are issues with webpack and nodemodules*/}
{/*<SelectCustom*/}
{/*multi*/}
{/*onChange={function noop() {}}*/}
{/*options={selectData}*/}
{/*placeholder="Enter an email address or password"*/}
{/*style={InputStyle}*/}
{/*/>*/}
<Button
secondary
style={AddButtonStyle}
>
Add
</Button>
</Column>
</Row>
const InputStyle = {
float: 'left',
width: '75%'
};
<Button
onClick={handleToggle}
secondary
style={styleInline}
>
Cancel
</Button>
const AddButtonStyle = {
float: 'right',
width: '20%'
};
<Button
style={styleInline}
>
Send Invitation(s)
</Button>
</Column>
</Row>
);
};
const styleInline = {
display: 'inline-block'
};
Invite.propTypes = {
handleToggle: React.PropTypes.func,
// orgUI: React.PropTypes.obj,
// people: React.PropTypes.arrayOf(PropTypes.person)
};
const selectData = this.getFormattedPlatformMembers();
const handleSelectChange = (v) => {
this.setState({
selectValue: v
});
};
return (
<Row>
<Column xs={6}>
<p>Search for a person by name or email or enter an email address
to invite someone new.</p>
<Row>
<Column xs={12}>
{/*TODO: Fix why there are issues with webpack and nodemodules*/}
<Select
onChange={handleSelectChange}
options={selectData}
placeholder="Enter an email address or password"
style={InputStyle}
value={this.state.selectValue}
/>
<Button
secondary
style={AddButtonStyle}
>
Add
</Button>
</Column>
</Row>
<Button
onClick={handleToggle}
secondary
style={styleInline}
>
Cancel
</Button>
<Button
style={styleInline}
>
Send Invitation(s)
</Button>
</Column>
</Row>
);
},
});
module.exports = Invite;

View File

@ -5,15 +5,18 @@ const Checkbox = require('@ui/components/checkbox');
const PersonStatus = require('./person-status');
const PersonRole = require('./person-role');
const PersonDelete = require('./person-delete');
const PeopleTable = (props) => {
const {
handleRoleTooltip,
handleRoleUpdate,
handleStatusTooltip,
handleMemberUpdate,
people = [],
orgUI = {}
parentIndex,
removeMember,
UI = {},
} = props;
const columns = [{
@ -36,22 +39,33 @@ const PeopleTable = (props) => {
const data = people.map( (person, index) => {
const status = (person) => (
<PersonStatus
handleMemberUpdate={handleMemberUpdate}
handleStatusTooltip={handleStatusTooltip}
membersStatusOptions={orgUI.members_status}
membersStatusOptions={UI.members_status}
parentIndex={parentIndex}
person={person}
personIndex={index}
toggledID={orgUI.member_status_tooltip}
toggledID={UI.member_status_tooltip}
/>
);
const role = (person) => (
<PersonRole
handleMemberUpdate={handleMemberUpdate}
handleRoleTooltip={handleRoleTooltip}
handleRoleUpdate={handleRoleUpdate}
membersRolesOptions={orgUI.members_roles}
membersRolesOptions={UI.members_roles}
parentIndex={parentIndex}
person={person}
personIndex={index}
toggledID={orgUI.member_role_tooltip}
toggledID={UI.member_role_tooltip}
/>
);
const remove = (person) => (
<PersonDelete
parentIndex={parentIndex}
personIndex={index}
removeMember={removeMember}
/>
);
@ -60,7 +74,7 @@ const PeopleTable = (props) => {
name: person.name,
status: status(person),
role: role(person),
bin: ''
bin: people.length > 1 ? remove(person) : null
};
});
@ -73,11 +87,13 @@ const PeopleTable = (props) => {
};
PeopleTable.propTypes = {
UI: React.PropTypes.object,
handleMemberUpdate: React.PropTypes.func,
handleRoleTooltip: React.PropTypes.func,
handleRoleUpdate: React.PropTypes.func,
handleStatusTooltip: React.PropTypes.func,
orgUI: React.PropTypes.object,
parentIndex: React.PropTypes.number,
people: React.PropTypes.array,
removeMember: React.PropTypes.func,
};
module.exports = PeopleTable;

View File

@ -0,0 +1,43 @@
const React = require('react');
const Styled = require('styled-components');
const {
default: styled
} = Styled;
const PlainButton = styled.button`
background: transparent;
font-size: inherit;
border: none;
zIndex: 0;
font-family: inherit;
color: inherit;
`;
const PersonDelete = (props) => {
const {
personIndex,
parentIndex,
removeMember
} = props;
const _onClick = () => removeMember({
personIndex,
parentIndex
});
return (
<PlainButton onClick={_onClick} >
Delete
</PlainButton>
);
};
PersonDelete.propTypes = {
parentIndex: React.PropTypes.number,
personIndex: React.PropTypes.number,
removeMember: React.PropTypes.func,
};
module.exports = PersonDelete;

View File

@ -24,6 +24,8 @@ const borderSide = props => props.toggled
const StyledWrapper = styled.div`
position: relative;
display: inline-block;
min-width: ${remcalc(130)};
&:after {
border-left: ${remcalc(5)} solid transparent;
@ -31,8 +33,8 @@ const StyledWrapper = styled.div`
border-${borderSide}: ${remcalc(5)} solid black;
${pseudoEl({
top: '50%',
right: remcalc(10)
top: '40%',
right: remcalc(-10)
})}
}
`;
@ -54,12 +56,14 @@ const PersonRole = (props) => {
person,
personIndex,
handleRoleTooltip,
handleRoleUpdate
handleMemberUpdate,
parentIndex
} = props;
const toggled = toggledID;
const toggled = toggledID === person.uuid;
const handleClick = () => handleRoleTooltip(person.uuid);
const handleOptionSelect = (updatedMember) => handleRoleUpdate(updatedMember);
const handleOptionSelect = (updatedMember) =>
handleMemberUpdate(updatedMember);
// Only send relevent info as props
const _person = {
@ -78,7 +82,9 @@ const PersonRole = (props) => {
? <Tooltip
handleSelect={handleOptionSelect}
options={membersRolesOptions}
parentIndex={parentIndex}
person={_person}
personAttr="role"
personIndex={personIndex}
/>
: null }
@ -87,9 +93,10 @@ const PersonRole = (props) => {
};
PersonRole.propTypes = {
handleMemberUpdate: React.PropTypes.func,
handleRoleTooltip: React.PropTypes.func,
handleRoleUpdate: React.PropTypes.func,
membersRolesOptions: React.PropTypes.array,
parentIndex: React.PropTypes.number,
person: React.PropTypes.object,
personIndex: React.PropTypes.number,
toggledID: React.PropTypes.oneOfType([

View File

@ -24,6 +24,8 @@ const borderSide = props => props.toggled
const StyledWrapper = styled.div`
position: relative;
display: inline-block;
min-width: ${remcalc(130)};
&:after {
border-left: ${remcalc(5)} solid transparent;
@ -31,8 +33,8 @@ const StyledWrapper = styled.div`
border-${borderSide}: ${remcalc(5)} solid black;
${pseudoEl({
top: '50%',
right: remcalc(10)
top: '40%',
right: remcalc(-10)
})}
}
`;
@ -49,14 +51,26 @@ const PlainButton = styled.button`
const PersonStatus = (props) => {
const {
handleStatusTooltip,
toggledID,
membersStatusOptions,
person,
personIndex,
handleStatusTooltip,
handleMemberUpdate,
parentIndex
} = props;
const toggled = toggledID;
const toggled = toggledID === person.uuid;
const handleClick = () => handleStatusTooltip(person.uuid);
const handleOptionSelect = (updatedMember) =>
handleMemberUpdate(updatedMember);
// Only send relevent info as props
const _person = {
uuid: person.uuid,
status: person.status,
role: person.role
};
return (
<StyledWrapper toggled={toggled}>
@ -65,16 +79,26 @@ const PersonStatus = (props) => {
</PlainButton>
{ toggledID === person.uuid
? <Tooltip options={membersStatusOptions} person={person} />
? <Tooltip
handleSelect={handleOptionSelect}
options={membersStatusOptions}
parentIndex={parentIndex}
person={_person}
personAttr="status"
personIndex={personIndex}
/>
: null }
</StyledWrapper>
);
};
PersonStatus.propTypes = {
handleMemberUpdate: React.PropTypes.func,
handleStatusTooltip: React.PropTypes.func,
membersStatusOptions: React.PropTypes.array,
parentIndex: React.PropTypes.number,
person: React.PropTypes.object,
personIndex: React.PropTypes.number,
toggledID: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.bool,

View File

@ -5,7 +5,8 @@ const Tooltip = require('@ui/components/tooltip');
const tooltipStyle = {
position: 'absolute',
top: '30px',
zIndex: 1
zIndex: 1,
right: '-36px',
};
const arrowPosition = {
@ -16,8 +17,10 @@ const arrowPosition = {
module.exports = ({
handleSelect,
person = {},
personAttr,
personIndex,
options = [],
parentIndex,
}) => {
const _options = options.map( (option, i) => {
@ -26,9 +29,11 @@ module.exports = ({
person: {
uuid: person.uuid,
status: person.status,
role: option
role: person.role,
[`${personAttr}`]: option
},
personIndex
personIndex,
parentIndex,
};
const _onClick = () => handleSelect(payload);
@ -59,6 +64,8 @@ module.exports = ({
module.exports.propTypes = {
handleSelect: React.PropTypes.func,
options: React.PropTypes.array,
parentIndex: React.PropTypes.number,
person: React.PropTypes.object,
personAttr: React.PropTypes.string,
personIndex: React.PropTypes.number,
};

View File

@ -12,14 +12,16 @@ const {
const {
peopleByOrgIdSelector,
orgUISelector,
membersSelector
orgIndexSelector,
membersSelector,
} = selectors;
const {
handleInviteToggle,
handlePeopleRoleTooltip,
handlePeopleStatusTooltip,
handleRoleUpdate
orgHandleInviteToggle,
orgHandlePeopleRoleTooltip,
orgHandlePeopleStatusTooltip,
orgHandleMemberUpdate,
orgRemoveMember,
} = actions;
const People = (props) => {
@ -35,16 +37,20 @@ const mapStateToProps = (state, {
params = {}
}) => ({
people: peopleByOrgIdSelector(params.org)(state),
orgUI: orgUISelector(state),
UI: orgUISelector(state),
parentIndex: orgIndexSelector(params.org)(state),
platformMembers: membersSelector(state)
});
const mapDispatchToProps = (dispatch) => ({
handleToggle: () => dispatch(handleInviteToggle()),
handleStatusTooltip: (id) => dispatch(handlePeopleStatusTooltip(id)),
handleRoleTooltip: (id) => dispatch(handlePeopleRoleTooltip(id)),
handleRoleUpdate: (updatedMember) =>
dispatch(handleRoleUpdate(updatedMember)),
handleToggle: () => dispatch(orgHandleInviteToggle()),
handleStatusTooltip: (id) => dispatch(orgHandlePeopleStatusTooltip(id)),
handleRoleTooltip: (id) => dispatch(orgHandlePeopleRoleTooltip(id)),
handleMemberUpdate: (updatedMember) =>
dispatch(orgHandleMemberUpdate(updatedMember)),
removeMember: (removeData) =>
dispatch(orgRemoveMember(removeData)),
});
module.exports = connect(

View File

@ -1,9 +1,59 @@
const React = require('react');
const ReactRedux = require('react-redux');
const PeopleSection = require('@components/people-list');
const selectors = require('@state/selectors');
const Section = require('./section');
const actions = require('@state/actions');
module.exports = (props) => (
<Section {...props}>
<p>people</p>
</Section>
);
const {
connect
} = ReactRedux;
const {
peopleByProjectIdSelector,
projectUISelector,
projectIndexByIdSelect,
membersSelector,
} = selectors;
const {
projectHandleInviteToggle,
projectHandlePeopleRoleTooltip,
projectHandlePeopleStatusTooltip,
projectHandleMemberUpdate,
projectRemoveMember,
} = actions;
const People = (props) => {
return (
<Section {...props}>
<PeopleSection {...props} />
</Section>
);
};
const mapStateToProps = (state, {
params = {}
}) => ({
people: peopleByProjectIdSelector(params.projectId)(state),
UI: projectUISelector(state),
parentIndex: projectIndexByIdSelect(params.projectId)(state),
platformMembers: membersSelector(state)
});
const mapDispatchToProps = (dispatch) => ({
handleToggle: () => dispatch(projectHandleInviteToggle()),
handleStatusTooltip: (id) => dispatch(projectHandlePeopleStatusTooltip(id)),
handleRoleTooltip: (id) => dispatch(projectHandlePeopleRoleTooltip(id)),
handleMemberUpdate: (updatedMember) =>
dispatch(projectHandleMemberUpdate(updatedMember)),
removeMember: (removeData) =>
dispatch(projectRemoveMember(removeData)),
});
module.exports = connect(
mapStateToProps,
mapDispatchToProps
)(People);

View File

@ -494,7 +494,7 @@
],
"members_roles": [
"Owner",
"Unnassigned",
"Unassigned",
"Read Only"
]
},
@ -506,7 +506,7 @@
"id": "nicola",
"name": "Your dashboard",
"image": "https://pbs.twimg.com/profile_images/641289584580493312/VBfsPlff_400x400.jpg",
"members": {}
"members": []
}, {
"owner": "b94033c1-3665-4c36-afab-d9c3d0b51c01",
"uuid": "e12ad7db-91b2-4154-83dd-40dcfc700dcc",
@ -530,17 +530,30 @@
"id": "make-us-proud",
"name": "Make Us Proud",
"image": "/static/images/make-us-proud.svg",
"members": {}
"members": []
}]
},
"projects": {
"ui": {
"invite_toggled": true,
"member_status_tooltip": false,
"member_role_tooltip": false,
"sections": [
"services",
"instances",
"people",
"settings",
"manifest"
],
"members_status": [
"Active",
"Inactive",
"Invitation Sent"
],
"members_roles": [
"Owner",
"Unassigned",
"Read Only"
]
},
"data": [{
@ -548,19 +561,31 @@
"org": "e12ad7db-91b2-4154-83dd-40dcfc700dcc",
"id": "forest-foundation-dev",
"name": "Forest Foundation Dev",
"plan": "20.05$ per day"
"plan": "20.05$ per day",
"members": [{
"uuid": "fd853d8f-e1dd-49b5-b7b3-ae9adfea1e2f",
"role": "Owner",
"status": "Active"
},
{
"uuid": "6deddbaa-3b94-4373-8cf7-97129507a872",
"role": "Unassigned",
"status": "Sent invitation"
}]
}, {
"uuid": "9fcb374d-a267-4c2a-9d9c-ba469b804639",
"org": "e12ad7db-91b2-4154-83dd-40dcfc700dcc",
"id": "forest-foundation-testing",
"name": "Forest Foundation Testing",
"plan": "20.05$ per day"
"plan": "20.05$ per day",
"members": []
}, {
"uuid": "ac2c2498-e865-4ee3-9e26-8c75a81cbe25",
"org": "e12ad7db-91b2-4154-83dd-40dcfc700dcc",
"id": "forest-foundation-production",
"name": "Forest Foundation Production",
"plan": "100.17$ per day"
"plan": "100.17$ per day",
"members": []
}]
},
"members": {

View File

@ -7,6 +7,32 @@ const {
const APP = constantCase(process.env['APP_NAME']);
const projectMemberActions = {
projectHandleInviteToggle:
createAction(`${APP}/PROJECT_HANDLE_INVITE_MEMBER_TOGGLE`),
projectHandlePeopleStatusTooltip:
createAction(`${APP}/PROJECT_HANDLE_PERSON_STATUS_TOOLTIP`),
projectHandlePeopleRoleTooltip:
createAction(`${APP}/PROJECT_HANDLE_PERSON_ROLE_TOOLTIP`),
projectHandleMemberUpdate:
createAction(`${APP}/PROJECT_HANDLE_MEMBER_UPDATE`),
projectRemoveMember:
createAction(`${APP}/PROJECT_REMOVE_MEMBER_FROM_ROLE`),
};
const orgMemberActions = {
orgHandleInviteToggle:
createAction(`${APP}/ORG_HANDLE_INVITE_MEMBER_TOGGLE`),
orgHandlePeopleStatusTooltip:
createAction(`${APP}/ORG_HANDLE_PERSON_STATUS_TOOLTIP`),
orgHandlePeopleRoleTooltip:
createAction(`${APP}/ORG_HANDLE_PERSON_ROLE_TOOLTIP`),
orgHandleMemberUpdate:
createAction(`${APP}/ORG_HANDLE_MEMBER_UPDATE`),
orgRemoveMember:
createAction(`${APP}/ORG_REMOVE_MEMBER_FROM_ROLE`),
};
module.exports = {
...require('@state/thunks'),
updateRouter: createAction(`${APP}/UPDATE_ROUTER`),
@ -19,10 +45,6 @@ module.exports = {
switchMonitorViewPage: createAction(`${APP}/SWITCH_MONITOR_VIEW_PAGE`),
handleNewProject: createAction(`${APP}/CREATE_NEW_PROJECT`),
handleNewProjectBilling: createAction(`${APP}/CREATE_NEW_PROJECT_BILLING`),
handleInviteToggle: createAction(`${APP}/HANDLE_INVITE_MEMBER_TOGGLE`),
handlePeopleStatusTooltip:
createAction(`${APP}/HANDLE_PERSON_STATUS_TOOLTIP`),
handlePeopleRoleTooltip:
createAction(`${APP}/HANDLE_PERSON_ROLE_TOOLTIP`),
handleRoleUpdate: createAction(`${APP}/HANDLE_PERSON_ROLE_UPDATE`),
...orgMemberActions,
...projectMemberActions,
};

View File

@ -7,14 +7,15 @@ const {
} = ReduxActions;
const {
handleInviteToggle,
handlePeopleRoleTooltip,
handlePeopleStatusTooltip,
handleRoleUpdate
orgHandleInviteToggle,
orgHandlePeopleRoleTooltip,
orgHandlePeopleStatusTooltip,
orgHandleMemberUpdate,
orgRemoveMember,
} = actions;
module.exports = handleActions({
[handleInviteToggle.toString()]: (state, action) => {
[orgHandleInviteToggle.toString()]: (state, action) => {
return {
...state,
ui: {
@ -23,7 +24,7 @@ module.exports = handleActions({
}
};
},
[handlePeopleStatusTooltip.toString()]: (state, action) => {
[orgHandlePeopleStatusTooltip.toString()]: (state, action) => {
return {
...state,
ui: {
@ -35,7 +36,7 @@ module.exports = handleActions({
}
};
},
[handlePeopleRoleTooltip.toString()]: (state, action) => {
[orgHandlePeopleRoleTooltip.toString()]: (state, action) => {
return {
...state,
ui: {
@ -47,31 +48,54 @@ module.exports = handleActions({
}
};
},
[handleRoleUpdate.toString()]: (state, action) => {
// TODO:
// Change "1" to org index. At the moment only updates
// "biz-tech"
[orgHandleMemberUpdate.toString()]: (state, action) => {
const {
parentIndex,
person,
personIndex,
} = action.payload;
return {
...state,
ui: {
...state.ui,
member_status_tooltip: false,
member_role_tooltip: false
},
data: [
...state.data.slice(0, 1),
...state.data.slice(0, parentIndex),
{
...state.data[1],
...state.data[parentIndex],
members: [
...state.data[1].members.slice(0, action.payload.personIndex),
...state.data[parentIndex].members.slice(0, personIndex),
{
...action.payload.person
...person,
},
...state.data[1].members.slice(action.payload.personIndex + 1)
...state.data[parentIndex].members.slice(personIndex + 1)
]
},
...state.data.slice(1+1),
...state.data.slice(parentIndex + 1),
]
};
}
},
[orgRemoveMember.toString()]: (state, action) => {
const {
parentIndex,
personIndex,
} = action.payload;
return {
...state,
data: [
...state.data.slice(0, parentIndex),
{
...state.data[parentIndex],
members: [
...state.data[parentIndex].members.slice(0, personIndex),
...state.data[parentIndex].members.slice(personIndex + 1)
]
},
...state.data.slice(parentIndex + 1),
]
};
},
}, {});

View File

@ -1,9 +1,101 @@
const ReduxActions = require('redux-actions');
const actions = require('@state/actions');
const {
handleActions
} = ReduxActions;
const {
projectHandleInviteToggle,
projectHandlePeopleRoleTooltip,
projectHandlePeopleStatusTooltip,
projectHandleMemberUpdate,
projectRemoveMember,
} = actions;
module.exports = handleActions({
'x': (state) => state // somehow handleActions needs at least one reducer
[projectHandleInviteToggle.toString()]: (state, action) => {
return {
...state,
ui: {
...state.ui,
invite_toggled: !state.ui.invite_toggled
}
};
},
[projectHandlePeopleStatusTooltip.toString()]: (state, action) => {
return {
...state,
ui: {
...state.ui,
member_status_tooltip:
action.payload === state.ui.member_status_tooltip
? ''
: action.payload
}
};
},
[projectHandlePeopleRoleTooltip.toString()]: (state, action) => {
return {
...state,
ui: {
...state.ui,
member_role_tooltip:
action.payload === state.ui.member_role_tooltip
? ''
: action.payload
}
};
},
[projectHandleMemberUpdate.toString()]: (state, action) => {
const {
parentIndex,
person,
personIndex,
} = action.payload;
return {
...state,
ui: {
...state.ui,
member_status_tooltip: false,
member_role_tooltip: false
},
data: [
...state.data.slice(0, parentIndex),
{
...state.data[parentIndex],
members: [
...state.data[parentIndex].members.slice(0, personIndex),
{
...person,
},
...state.data[parentIndex].members.slice(personIndex + 1)
]
},
...state.data.slice(parentIndex + 1),
]
};
},
[projectRemoveMember.toString()]: (state, action) => {
const {
parentIndex,
personIndex,
} = action.payload;
return {
...state,
data: [
...state.data.slice(0, parentIndex),
{
...state.data[parentIndex],
members: [
...state.data[parentIndex].members.slice(0, personIndex),
...state.data[parentIndex].members.slice(personIndex + 1)
]
},
...state.data.slice(parentIndex + 1),
]
};
},
}, {});

View File

@ -15,6 +15,7 @@ const serviceUiSections = (state) => get(state, 'services.ui.sections', []);
const orgs = (state) => get(state, 'orgs.data', []);
const orgUI = (state) => get(state, 'orgs.ui', []);
const projects = (state) => get(state, 'projects.data', []);
const projectsUI = (state) => get(state, 'projects.ui', []);
const services = (state) => get(state, 'services.data', []);
const collapsedServices = (state) => get(state, 'services.ui.collapsed', []);
const collapsedInstances = (state) => get(state, 'instances.ui.collapsed', []);
@ -35,6 +36,16 @@ const orgById = (orgId) => createSelector(
(orgs) => find(orgs, ['id', orgId])
);
const orgIndexById = (orgId) => createSelector(
orgs,
(orgs) => orgs.map((o) => o.id).indexOf(orgId)
);
const projectIndexById = (projectId) => createSelector(
projects,
(projects) => projects.map((p) => p.id).indexOf(projectId)
);
const serviceById = (serviceId) => createSelector(
[services],
(services) => find(services, ['id', serviceId])
@ -124,12 +135,29 @@ const instancesByProjectId = (projectId) => createSelector(
const peopleByOrgId = (orgId) => createSelector(
[members, orgById(orgId)], (members, org) => {
const matched = [];
org.members.filter((m) => {
matched.push({
...find(members, ['uuid', m.uuid]),
...m
if (Object.keys(org.members).length > 0) {
org.members.filter((m) => {
matched.push({
...find(members, ['uuid', m.uuid]),
...m
});
});
});
}
return matched;
}
);
const peopleByProjectId = (projectId) => createSelector(
[members, projectById(projectId)], (members, prj) => {
const matched = [];
if (Object.keys(prj.members).length > 0) {
prj.members.filter((m) => {
matched.push({
...find(members, ['uuid', m.uuid]),
...m
});
});
}
return matched;
}
);
@ -140,6 +168,7 @@ module.exports = {
orgByIdSelector: orgById,
orgsSelector: orgs,
orgUISelector: orgUI,
orgIndexSelector: orgIndexById,
servicesSelector: services,
serviceByIdSelector: serviceById,
orgSectionsSelector: orgSections,
@ -155,4 +184,7 @@ module.exports = {
metricTypeByUuidSelector: metricTypeByUuid,
peopleByOrgIdSelector: peopleByOrgId,
membersSelector: members,
peopleByProjectIdSelector: peopleByProjectId,
projectUISelector: projectsUI,
projectIndexByIdSelect: projectIndexById,
};

View File

@ -9,6 +9,7 @@ hook.hook('.woff', () => '');
hook.hook('.woff2', () => '');
hook.hook('.ttf', () => '');
hook.hook('.svg', () => '');
hook.hook('.css', () => '');
register({
extensions: ['.js']
@ -35,4 +36,4 @@ requireHacker.global_hook('inline-svgs', (path) => {
if(path.match(/!babel-loader!svg-react-loader/)) {
return `module.exports = ${fakeComponentString}`;
}
});
});

View File

@ -1,10 +1,8 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@tomgco/joyent-portal-ui@alpha":
version "0.0.1-530"
resolved "https://registry.yarnpkg.com/@tomgco/joyent-portal-ui/-/joyent-portal-ui-0.0.1-530.tgz#fbaff494298f40d040462bf39b0f5ce35748e308"
version "0.0.1-554"
resolved "https://registry.yarnpkg.com/@tomgco/joyent-portal-ui/-/joyent-portal-ui-0.0.1-554.tgz#de27c9ff4b630e32303d333690144bdc08401f85"
dependencies:
build-array "^1.0.0"
chart.js "^2.4.0"
@ -77,10 +75,6 @@ acorn-jsx@^3.0.0, acorn-jsx@^3.0.1:
dependencies:
acorn "^3.0.4"
acorn@>=2.5.2, acorn@^4.0.1, acorn@^4.0.3, acorn@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
acorn@^2.1.0, acorn@^2.4.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
@ -89,13 +83,17 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^4.0.1, acorn@^4.0.3, acorn@^4.0.4, acorn@>=2.5.2:
version "4.0.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c"
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
ajv@^4.7.0:
version "4.10.4"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.4.tgz#c0974dd00b3464984892d6010aa9c2c945933254"
version "4.11.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.2.tgz#f166c3c11cbc6cb9dcc102a5bcfe5b72c95287e6"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
@ -232,11 +230,11 @@ array-unique@^0.2.1:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
array.prototype.find@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.1.tgz#1557f888df6c57e4d1256f20852d687a25b51fde"
version "2.0.3"
resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.3.tgz#08c3ec33e32ec4bab362a2958e686ae92f59271d"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.5.0"
es-abstract "^1.7.0"
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
@ -299,14 +297,14 @@ auto-bind@^0.1.0:
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1"
autoprefixer@^6.3.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.6.1.tgz#11a4077abb4b313253ec2f6e1adb91ad84253519"
version "6.7.0"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.0.tgz#88992cf04df141e7b8293550f2ee716c565d1cae"
dependencies:
browserslist "~1.5.1"
caniuse-db "^1.0.30000604"
browserslist "~1.6.0"
caniuse-db "^1.0.30000613"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^5.2.8"
postcss "^5.2.11"
postcss-value-parser "^3.2.3"
ava-files@^0.2.0:
@ -1381,11 +1379,12 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
browserslist@^1.0.1, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@~1.5.1:
version "1.5.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.5.2.tgz#1c82fde0ee8693e6d15c49b7bff209dc06298c56"
browserslist@^1.0.1, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@~1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.6.0.tgz#85fb7c993540d3fda31c282baf7f5aee698ac9ee"
dependencies:
caniuse-db "^1.0.30000604"
caniuse-db "^1.0.30000613"
electron-to-chromium "^1.2.0"
buf-compare@^1.0.0:
version "1.0.1"
@ -1499,9 +1498,9 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.3.0"
shelljs "^0.7.0"
caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000604:
version "1.0.30000613"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000613.tgz#639133b7a5380c1416f9701d23d54d093dd68299"
caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000613:
version "1.0.30000615"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000615.tgz#605bc071db4c5031acfb5e469c3b50a531dd5d04"
capture-stack-trace@^1.0.0:
version "1.0.0"
@ -1757,21 +1756,21 @@ colormin@^1.0.5:
css-color-names "0.0.4"
has "^1.0.1"
colors@0.5.x:
version "0.5.1"
resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
colors@^1.1.2, colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
colors@0.5.x:
version "0.5.1"
resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
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"
commander@2, commander@^2.8.1, commander@^2.9.0:
commander@^2.8.1, commander@^2.9.0, commander@2:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
@ -2089,9 +2088,9 @@ csso@~2.2.1:
clap "^1.0.9"
source-map "^0.5.3"
cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
version "0.3.1"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3"
"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x:
version "0.3.2"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
"cssstyle@>= 0.2.36 < 0.3.0":
version "0.2.37"
@ -2105,6 +2104,12 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
d@^0.1.1, d@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
dependencies:
es5-ext "~0.10.2"
d3-array@1, d3-array@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.0.2.tgz#174237bf356a852fadd6af87743d928631de7655"
@ -2251,9 +2256,9 @@ d3-time@1, d3-time@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.4.tgz#2ceba09a76b7450c992a1ded4e10fc6195e69649"
d3-timer@1, d3-timer@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.3.tgz#7a308a10c8524778e6b32d1d6c1c329209ae0ebf"
d3-timer@1, d3-timer@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.4.tgz#adaf7f60c7b54c99b2ffabd28c15a0c108a75321"
d3-transition@1, d3-transition@1.0.3:
version "1.0.3"
@ -2281,8 +2286,8 @@ d3-zoom@1.1.1:
d3-transition "1"
d3@^4.4.1:
version "4.4.2"
resolved "https://registry.yarnpkg.com/d3/-/d3-4.4.2.tgz#7173647bd46c7f9b9dc6b41c1b999de0fc206a26"
version "4.4.4"
resolved "https://registry.yarnpkg.com/d3/-/d3-4.4.4.tgz#15d4e455687bc7a8ff2eeb4b25354a6ba4f24f57"
dependencies:
d3-array "1.0.2"
d3-axis "1.0.4"
@ -2310,17 +2315,11 @@ d3@^4.4.1:
d3-shape "1.0.4"
d3-time "1.0.4"
d3-time-format "2.0.3"
d3-timer "1.0.3"
d3-timer "1.0.4"
d3-transition "1.0.3"
d3-voronoi "1.1.1"
d3-zoom "1.1.1"
d@^0.1.1, d@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
dependencies:
es5-ext "~0.10.2"
damerau-levenshtein@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.3.tgz#ae4f4ce0b62acae10ff63a01bb08f652f5213af2"
@ -2456,7 +2455,7 @@ doctrine@^1.2.2:
esutils "^2.0.2"
isarray "^1.0.0"
dom-serializer@0, dom-serializer@~0.1.0:
dom-serializer@~0.1.0, dom-serializer@0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
dependencies:
@ -2471,7 +2470,7 @@ domain-browser@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
domelementtype@1, domelementtype@^1.3.0:
domelementtype@^1.3.0, domelementtype@1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
@ -2485,7 +2484,7 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
domutils@1.5.1, domutils@^1.5.1:
domutils@^1.5.1, domutils@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
dependencies:
@ -2498,16 +2497,16 @@ dot-prop@^3.0.0:
dependencies:
is-obj "^1.0.0"
duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
duplexer2@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
dependencies:
readable-stream "^2.0.2"
duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
eastasianwidth@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c"
@ -2522,6 +2521,10 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
electron-to-chromium@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.1.tgz#63ac7579a1c5bedb296c8607621f2efc9a54b968"
elliptic@^6.0.0:
version "6.3.2"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48"
@ -2575,8 +2578,8 @@ entities@^1.1.1, entities@~1.1.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
enzyme@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.7.0.tgz#772477800547ca2514cc0af258e647c166aee899"
version "2.7.1"
resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.7.1.tgz#76370e1d99e91f73091bb8c4314b7c128cc2d621"
dependencies:
cheerio "^0.22.0"
function.prototype.name "^1.0.0"
@ -2606,9 +2609,9 @@ error-stack-parser@^1.3.6:
dependencies:
stackframe "^0.3.1"
es-abstract@^1.5.0, es-abstract@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.6.1.tgz#bb8a2064120abcf928a086ea3d9043114285ec99"
es-abstract@^1.6.1, es-abstract@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.0"
@ -2663,7 +2666,7 @@ es6-set@~0.1.3:
es6-symbol "3"
event-emitter "~0.3.4"
es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0:
es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3:
version "3.1.0"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa"
dependencies:
@ -2744,8 +2747,8 @@ eslint-plugin-standard@^2.0.1:
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3"
eslint@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.13.1.tgz#564d2646b5efded85df96985332edd91a23bff25"
version "3.14.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.14.0.tgz#2c617e5f782fda5cbee5bc8be7ef5053af8e63a3"
dependencies:
babel-code-frame "^6.16.0"
chalk "^1.1.3"
@ -2854,7 +2857,7 @@ events@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
eventsource@~0.1.6:
eventsource@0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
dependencies:
@ -2948,8 +2951,8 @@ faye-websocket@^0.10.0:
websocket-driver ">=0.5.1"
faye-websocket@~0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.0.tgz#d9ccf0e789e7db725d74bc4877d23aa42972ac50"
version "0.11.1"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
dependencies:
websocket-driver ">=0.5.1"
@ -3425,7 +3428,7 @@ htmlparser2@^3.9.1:
inherits "^2.0.1"
readable-stream "^2.0.2"
http-errors@~1.5.0:
http-errors@~1.5.0, http-errors@~1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750"
dependencies:
@ -3465,7 +3468,7 @@ hyphenate-style-name@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
iconv-lite@0.4, iconv-lite@^0.4.13, iconv-lite@~0.4.13:
iconv-lite@^0.4.13, iconv-lite@~0.4.13, iconv-lite@0.4:
version "0.4.15"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
@ -3529,7 +3532,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@ -3578,7 +3581,7 @@ intl-messageformat-parser@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz#5906b7f953ab7470e0dc8549097b648b991892ff"
intl-messageformat@1.3.0, intl-messageformat@^1.3.0:
intl-messageformat@^1.3.0, intl-messageformat@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-1.3.0.tgz#f7d926aded7a3ab19b2dc601efd54e99a4bd4eae"
dependencies:
@ -3851,14 +3854,14 @@ 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"
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
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"
isemail@2.x.x:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6"
@ -4116,7 +4119,7 @@ loader-runner@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.2.0.tgz#824c1b699c4e7a2b6501b85902d5b862bf45b3fa"
loader-utils@0.2.x, loader-utils@^0.2, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5:
loader-utils@^0.2, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5, loader-utils@0.2.x:
version "0.2.16"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
dependencies:
@ -4314,7 +4317,7 @@ lowercase-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
lru-cache@4.0.x, lru-cache@^4.0.1:
lru-cache@^4.0.1, lru-cache@4.0.x:
version "4.0.2"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
dependencies:
@ -4336,8 +4339,8 @@ matcher@^0.1.1:
escape-string-regexp "^1.0.4"
math-expression-evaluator@^1.2.14:
version "1.2.14"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.14.tgz#39511771ed9602405fba9affff17eb4d2a3843ab"
version "1.2.15"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.15.tgz#38dc5f0194c5bf5ff1c690ad4c4b64df71ac0187"
dependencies:
lodash.indexof "^4.0.5"
@ -4431,7 +4434,7 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
mime-db@1.x.x, "mime-db@>= 1.24.0 < 2", mime-db@~1.26.0:
"mime-db@>= 1.24.0 < 2", mime-db@~1.26.0, mime-db@1.x.x:
version "1.26.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
@ -4441,14 +4444,14 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:
dependencies:
mime-db "~1.26.0"
mime@^1.3.4, mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mime@1.2.x:
version "1.2.11"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
mime@1.3.4, mime@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mimos@3.x.x:
version "3.0.3"
resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f"
@ -4472,15 +4475,19 @@ minimatch@^3.0.0, minimatch@^3.0.2:
dependencies:
brace-expansion "^1.0.0"
minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@^1.1.3, minimist@^1.2.0, 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:
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", 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:
@ -4490,14 +4497,14 @@ moment@^2.10.6, moment@^2.17.1:
version "2.17.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82"
ms@^0.7.1, ms@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
ms@0.7.2, ms@^0.7.1:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
multimatch@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@ -4512,8 +4519,8 @@ mute-stream@0.0.5:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
nan@^2.3.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
version "2.5.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
natural-compare@^1.4.0:
version "1.4.0"
@ -4524,8 +4531,8 @@ ncp@^2.0.0:
resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
nearley@^2.7.7:
version "2.7.10"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.7.10.tgz#06f9531e06a1730244635acd7dd005485550a623"
version "2.7.11"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.7.11.tgz#826d928d93c078e5e2a12ebc269842ba5fe64086"
dependencies:
nomnom "~1.6.2"
railroad-diagrams "^1.0.0"
@ -4972,16 +4979,16 @@ path-parse@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
path-to-regexp@^1.5.3:
version "1.7.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
dependencies:
isarray "0.0.1"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@ -5296,7 +5303,7 @@ postcss-zindex@^2.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.8:
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.11:
version "5.2.11"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.11.tgz#ff29bcd6d2efb98bfe08a022055ec599bbe7b761"
dependencies:
@ -5437,27 +5444,34 @@ public-encrypt@^4.0.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"
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
q@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
qs@6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
qs@~6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
query-string@4.2.3, query-string@^4.1.0:
qs@6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
query-string@^4.1.0:
version "4.3.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.1.tgz#54baada6713eafc92be75c47a731f2ebd09cd11d"
dependencies:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
query-string@4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822"
dependencies:
@ -5468,7 +5482,7 @@ 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, querystring@^0.2.0:
querystring@^0.2.0, querystring@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
@ -5960,7 +5974,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4:
rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2:
version "2.5.4"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
dependencies:
@ -5977,14 +5991,14 @@ run-async@^0.1.0:
once "^1.3.0"
rw@1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.2.tgz#14ef5137ff7547c73ecf0e0af1f0aee07e5401ee"
version "1.3.3"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
sax@>=0.6.0, sax@^1.1.4, sax@~1.2.1:
sax@^1.1.4, sax@>=0.6.0, sax@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
@ -5994,7 +6008,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0:
semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5":
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
@ -6016,6 +6030,24 @@ send@0.14.1:
range-parser "~1.2.0"
statuses "~1.3.0"
send@0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef"
dependencies:
debug "~2.2.0"
depd "~1.1.0"
destroy "~1.0.4"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.7.0"
fresh "0.3.0"
http-errors "~1.5.1"
mime "1.3.4"
ms "0.7.2"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.1"
serve-index@^1.7.2:
version "1.8.0"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b"
@ -6029,13 +6061,13 @@ serve-index@^1.7.2:
parseurl "~1.3.1"
serve-static@~1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805"
version "1.11.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
dependencies:
encodeurl "~1.0.1"
escape-html "~1.0.3"
parseurl "~1.3.1"
send "0.14.1"
send "0.14.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@ -6133,11 +6165,11 @@ sntp@1.x.x:
hoek "2.x.x"
sockjs-client@^1.0.3:
version "1.1.1"
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0"
version "1.1.2"
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5"
dependencies:
debug "^2.2.0"
eventsource "~0.1.6"
eventsource "0.1.6"
faye-websocket "~0.11.0"
inherits "^2.0.1"
json3 "^3.3.2"
@ -6252,7 +6284,7 @@ statehood@5.x.x:
items "2.x.x"
joi "10.x.x"
"statuses@>= 1.3.1 < 2", statuses@~1.3.0:
"statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@ -6281,6 +6313,10 @@ 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_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
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"
@ -6296,10 +6332,6 @@ string-width@^2.0.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^3.0.0"
string_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
stringifier@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959"
@ -6347,8 +6379,8 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
styled-components@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-1.3.1.tgz#219aebf87405d890e0c60c8f702089d947aafc0a"
version "1.4.0"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-1.4.0.tgz#a094d2ebd1c3227cd591d4d999d48860bf3f76b7"
dependencies:
buffer "^5.0.2"
css-to-react-native "^1.0.6"
@ -6357,7 +6389,6 @@ styled-components@^1.3.0:
inline-style-prefixer "^2.0.5"
is-function "^1.0.1"
is-plain-object "^2.0.1"
supports-color "^3.1.2"
subtext@^4.3.x:
version "4.3.0"
@ -6441,8 +6472,8 @@ tap-parser@~1.2.2:
readable-stream "^2"
tap-xunit@^1.5.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.6.0.tgz#5f734eedb84d966f6e9409008598194ae01d8690"
version "1.7.0"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.7.0.tgz#c0fe296a4ff270e042467e754419b5f049bef8be"
dependencies:
duplexer "~0.1.1"
minimist "~1.2.0"
@ -6500,6 +6531,10 @@ thenify@^3.2.1:
dependencies:
any-promise "^1.0.0"
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
through2@^2.0.0, through2@~2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@ -6507,10 +6542,6 @@ through2@^2.0.0, through2@~2.0.0:
readable-stream "^2.1.5"
xtend "~4.0.1"
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
time-require@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98"
@ -6713,16 +6744,16 @@ url-parse-lax@^1.0.0:
dependencies:
prepend-http "^1.0.1"
url-parse@1.0.x:
version "1.0.5"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
url-parse@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a"
dependencies:
querystringify "0.0.x"
requires-port "1.0.x"
url-parse@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a"
url-parse@1.0.x:
version "1.0.5"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
dependencies:
querystringify "0.0.x"
requires-port "1.0.x"
@ -6748,7 +6779,7 @@ 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:
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:
@ -6925,7 +6956,7 @@ 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.2.x, which@^1.2.4, which@^1.2.9:
which@^1.2.4, which@^1.2.9, which@1.2.x:
version "1.2.12"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
dependencies:
@ -6947,10 +6978,6 @@ 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"
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
@ -6959,6 +6986,10 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
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"
@ -7026,7 +7057,13 @@ xml2js@^0.4:
sax ">=0.6.0"
xmlbuilder "^4.1.0"
xmlbuilder@^4.1.0, xmlbuilder@~4.1.0:
xmlbuilder@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
dependencies:
lodash "^4.0.0"
xmlbuilder@~4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.1.0.tgz#687e84d9c4145af8db438d8bec88805df66249f4"
dependencies:
@ -7080,3 +7117,4 @@ yargs@~3.10.0:
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"

View File

@ -48,4 +48,22 @@ nginx:
links:
- consul:consul
ports:
- 80:8001
- 8001:80
prometheus:
extends:
file: docker-compose.yml
service: prometheus
restart: never
environment:
- CONSUL=consul
links:
- consul:consul
ports:
- 9090:9090
docs:
extends:
file: docker-compose.yml
service: docs
restart: never
ports:
- 80:8081

View File

@ -19,7 +19,8 @@
},
"dependencies": {
"husky": "^0.11.9",
"license-to-fail": "^2.2.0"
"license-to-fail": "^2.2.0",
"lodash.findindex": "^4.6.0"
},
"devDependencies": {
"tap-xunit": "^1.4.0"

View File

@ -1,2 +1 @@
FROM quay.io/yldio/alpine-node-containerpilot:6.9.3
RUN yarn add st
FROM quay.io/yldio/alpine-node-containerpilot:6.9.4-3

View File

@ -1,4 +1,4 @@
FROM quay.io/yldio/alpine-node-containerpilot:6.9.3
FROM quay.io/yldio/alpine-node-containerpilot:6.9.4
ARG NPM_TOKEN
ARG CIRCLE_BUILD_NUM
ENV NPM_TOKEN ${NPM_TOKEN}

View File

@ -36,8 +36,7 @@ start:
$(bindir)/start-storybook -p 8080
.PHONY: install-production
install-production: compile clean
yarn install --production --pure-lockfile --prefer-offline
install-production: compile
.PHONY: compile
compile: install

View File

@ -10,5 +10,38 @@
}
],
"backends": [
]
],
"telemetry": {
"port": 9090,
"sensors": [
{
"name": "ui_memory_percent",
"help": "percentage of memory used",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "memory"]
},
{
"name": "ui_cpu_load",
"help": "cpu load",
"type": "gauge",
"poll": 5,
"check": ["/bin/sensors", "cpu"]
},
{
"name": "ui_disk_capacity",
"help": "disk capacity",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskcapacity"]
},
{
"name": "ui_disk_usage",
"help": "disk usage",
"type": "gauge",
"poll": 60,
"check": ["/bin/sensors", "diskusage"]
}
]
}
}

View File

@ -29,7 +29,7 @@ const React = require('react');
const Avatar = require('ui/table');
const columns = [{
title: 'Memeber',
title: 'Member',
dataID: 'member',
dataKey: 'member',
width: ''

View File

@ -150,12 +150,12 @@ airbnb-js-shims@^1.0.1:
string.prototype.padstart "^3.0.0"
ajv-keywords@^1.0.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c"
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
ajv@^4.7.0:
version "4.10.4"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.4.tgz#c0974dd00b3464984892d6010aa9c2c945933254"
version "4.11.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.2.tgz#f166c3c11cbc6cb9dcc102a5bcfe5b72c95287e6"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
@ -288,11 +288,11 @@ array-unique@^0.2.1:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
array.prototype.find@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.1.tgz#1557f888df6c57e4d1256f20852d687a25b51fde"
version "2.0.3"
resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.3.tgz#08c3ec33e32ec4bab362a2958e686ae92f59271d"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.5.0"
es-abstract "^1.7.0"
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
@ -355,14 +355,14 @@ auto-bind@^0.1.0:
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1"
autoprefixer@^6.0.0, autoprefixer@^6.3.1, autoprefixer@^6.3.7:
version "6.6.1"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.6.1.tgz#11a4077abb4b313253ec2f6e1adb91ad84253519"
version "6.7.0"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.0.tgz#88992cf04df141e7b8293550f2ee716c565d1cae"
dependencies:
browserslist "~1.5.1"
caniuse-db "^1.0.30000604"
browserslist "~1.6.0"
caniuse-db "^1.0.30000613"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^5.2.8"
postcss "^5.2.11"
postcss-value-parser "^3.2.3"
ava-files@^0.2.0:
@ -1433,11 +1433,12 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@~1.5.1:
version "1.5.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.5.2.tgz#1c82fde0ee8693e6d15c49b7bff209dc06298c56"
browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@~1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.6.0.tgz#85fb7c993540d3fda31c282baf7f5aee698ac9ee"
dependencies:
caniuse-db "^1.0.30000604"
caniuse-db "^1.0.30000613"
electron-to-chromium "^1.2.0"
buf-compare@^1.0.0:
version "1.0.1"
@ -1536,9 +1537,9 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.3.0"
shelljs "^0.7.0"
caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000604:
version "1.0.30000613"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000613.tgz#639133b7a5380c1416f9701d23d54d093dd68299"
caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000613:
version "1.0.30000617"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000617.tgz#9b7fd81f58a35526315c83e60cb5f076f0beb392"
capture-stack-trace@^1.0.0:
version "1.0.0"
@ -2105,8 +2106,8 @@ csso@~2.2.1:
source-map "^0.5.3"
"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3"
version "0.3.2"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
"cssstyle@>= 0.2.36 < 0.3.0":
version "0.2.37"
@ -2272,9 +2273,9 @@ d3-time@1, d3-time@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.4.tgz#2ceba09a76b7450c992a1ded4e10fc6195e69649"
d3-timer@1, d3-timer@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.3.tgz#7a308a10c8524778e6b32d1d6c1c329209ae0ebf"
d3-timer@1, d3-timer@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.4.tgz#adaf7f60c7b54c99b2ffabd28c15a0c108a75321"
d3-transition@1, d3-transition@1.0.3:
version "1.0.3"
@ -2302,8 +2303,8 @@ d3-zoom@1.1.1:
d3-transition "1"
d3@^4.4.1:
version "4.4.2"
resolved "https://registry.yarnpkg.com/d3/-/d3-4.4.2.tgz#7173647bd46c7f9b9dc6b41c1b999de0fc206a26"
version "4.4.4"
resolved "https://registry.yarnpkg.com/d3/-/d3-4.4.4.tgz#15d4e455687bc7a8ff2eeb4b25354a6ba4f24f57"
dependencies:
d3-array "1.0.2"
d3-axis "1.0.4"
@ -2331,7 +2332,7 @@ d3@^4.4.1:
d3-shape "1.0.4"
d3-time "1.0.4"
d3-time-format "2.0.3"
d3-timer "1.0.3"
d3-timer "1.0.4"
d3-transition "1.0.3"
d3-voronoi "1.1.1"
d3-zoom "1.1.1"
@ -2548,6 +2549,10 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
electron-to-chromium@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.1.tgz#63ac7579a1c5bedb296c8607621f2efc9a54b968"
element-class@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e"
@ -2586,8 +2591,8 @@ entities@^1.1.1, entities@~1.1.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
enzyme@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.7.0.tgz#772477800547ca2514cc0af258e647c166aee899"
version "2.7.1"
resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.7.1.tgz#76370e1d99e91f73091bb8c4314b7c128cc2d621"
dependencies:
cheerio "^0.22.0"
function.prototype.name "^1.0.0"
@ -2611,9 +2616,9 @@ error-ex@^1.2.0:
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.6.1.tgz#bb8a2064120abcf928a086ea3d9043114285ec99"
es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.0"
@ -2669,8 +2674,8 @@ es6-set@~0.1.3:
event-emitter "~0.3.4"
es6-shim@^0.35.1:
version "0.35.2"
resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.2.tgz#45c5b3eb2f792ed28f130d826239be50affb897f"
version "0.35.3"
resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26"
es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3:
version "3.1.0"
@ -2753,8 +2758,8 @@ eslint-plugin-standard@^2.0.1:
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3"
eslint@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.13.1.tgz#564d2646b5efded85df96985332edd91a23bff25"
version "3.14.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.14.1.tgz#8a62175f2255109494747a1b25128d97b8eb3d97"
dependencies:
babel-code-frame "^6.16.0"
chalk "^1.1.3"
@ -3376,7 +3381,7 @@ htmlparser2@^3.9.1:
inherits "^2.0.1"
readable-stream "^2.0.2"
http-errors@~1.5.0:
http-errors@~1.5.0, http-errors@~1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750"
dependencies:
@ -4240,8 +4245,8 @@ matcher@^0.1.1:
escape-string-regexp "^1.0.4"
math-expression-evaluator@^1.2.14:
version "1.2.14"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.14.tgz#39511771ed9602405fba9affff17eb4d2a3843ab"
version "1.2.15"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.15.tgz#38dc5f0194c5bf5ff1c690ad4c4b64df71ac0187"
dependencies:
lodash.indexof "^4.0.5"
@ -4360,11 +4365,7 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
minimist@0.0.8:
minimist@~0.0.1, minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
@ -4404,16 +4405,16 @@ mute-stream@0.0.5:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
nan@^2.3.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
version "2.5.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
nearley@^2.7.7:
version "2.7.10"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.7.10.tgz#06f9531e06a1730244635acd7dd005485550a623"
version "2.7.11"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.7.11.tgz#826d928d93c078e5e2a12ebc269842ba5fe64086"
dependencies:
nomnom "~1.6.2"
railroad-diagrams "^1.0.0"
@ -5208,7 +5209,7 @@ postcss-zindex@^2.0.1:
postcss "^5.0.4"
uniqs "^2.0.0"
postcss@^5.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.18, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.4, postcss@^5.2.5, postcss@^5.2.8:
postcss@^5.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.18, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.11, postcss@^5.2.4, postcss@^5.2.5:
version "5.2.11"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.11.tgz#ff29bcd6d2efb98bfe08a022055ec599bbe7b761"
dependencies:
@ -5840,8 +5841,8 @@ run-async@^0.1.0:
once "^1.3.0"
rw@1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.2.tgz#14ef5137ff7547c73ecf0e0af1f0aee07e5401ee"
version "1.3.3"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
rx-lite@^3.1.2:
version "3.1.2"
@ -5879,6 +5880,24 @@ send@0.14.1:
range-parser "~1.2.0"
statuses "~1.3.0"
send@0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef"
dependencies:
debug "~2.2.0"
depd "~1.1.0"
destroy "~1.0.4"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.7.0"
fresh "0.3.0"
http-errors "~1.5.1"
mime "1.3.4"
ms "0.7.2"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.1"
serve-favicon@^2.3.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f"
@ -5889,13 +5908,13 @@ serve-favicon@^2.3.0:
parseurl "~1.3.1"
serve-static@~1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805"
version "1.11.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
dependencies:
encodeurl "~1.0.1"
escape-html "~1.0.3"
parseurl "~1.3.1"
send "0.14.1"
send "0.14.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@ -6082,7 +6101,7 @@ stack-utils@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1"
"statuses@>= 1.3.1 < 2", statuses@~1.3.0:
"statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@ -6206,8 +6225,8 @@ style-search@^0.1.0:
resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
styled-components@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-1.3.1.tgz#219aebf87405d890e0c60c8f702089d947aafc0a"
version "1.4.0"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-1.4.0.tgz#a094d2ebd1c3227cd591d4d999d48860bf3f76b7"
dependencies:
buffer "^5.0.2"
css-to-react-native "^1.0.6"
@ -6216,7 +6235,6 @@ styled-components@^1.3.0:
inline-style-prefixer "^2.0.5"
is-function "^1.0.1"
is-plain-object "^2.0.1"
supports-color "^3.1.2"
stylehacks@^2.3.0:
version "2.3.1"
@ -6383,8 +6401,8 @@ tap-parser@~1.2.2:
readable-stream "^2"
tap-xunit@^1.5.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.6.0.tgz#5f734eedb84d966f6e9409008598194ae01d8690"
version "1.7.0"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.7.0.tgz#c0fe296a4ff270e042467e754419b5f049bef8be"
dependencies:
duplexer "~0.1.1"
minimist "~1.2.0"
@ -6896,13 +6914,7 @@ xml2js@^0.4:
sax ">=0.6.0"
xmlbuilder "^4.1.0"
xmlbuilder@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
dependencies:
lodash "^4.0.0"
xmlbuilder@~4.1.0:
xmlbuilder@^4.1.0, xmlbuilder@~4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.1.0.tgz#687e84d9c4145af8db438d8bec88805df66249f4"
dependencies:
@ -6972,3 +6984,4 @@ yargs@~3.10.0:
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"

View File

@ -1,7 +1,5 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
abbrev@1:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
@ -136,7 +134,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@~2.0.1:
inherits@~2.0.1, inherits@2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@ -190,6 +188,10 @@ license-to-fail@^2.2.0:
dependencies:
license-checker "^7.1.0"
lodash.findindex@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.findindex/-/lodash.findindex-4.6.0.tgz#a3245dee61fb9b6e0624b535125624bb69c11106"
lodash@^3.5.0:
version "3.10.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
@ -340,8 +342,8 @@ tap-parser@~1.2.2:
readable-stream "^2"
tap-xunit@^1.4.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.5.1.tgz#e58e6d26f5896a87cdc6ffbb146dd8c1f418a8a6"
version "1.7.0"
resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-1.7.0.tgz#c0fe296a4ff270e042467e754419b5f049bef8be"
dependencies:
duplexer "~0.1.1"
minimist "~1.2.0"
@ -389,3 +391,4 @@ xmlbuilder@~4.1.0:
xtend@~4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"