web: add OpenAPI documentation

This change adds a swagger description of the REST API. The description is
rendered in the sphinx user documentations and in the web interface.

Change-Id: I753524f40a09874dab5952f14ab17025525bbab9
changes/41/535541/18
Tristan Cacqueray 5 years ago committed by Matthieu Huin
parent 1fab39cc4b
commit 85616c4c09

@ -3,5 +3,6 @@ sphinx>=1.6.1
sphinxcontrib-blockdiag>=1.1.0
sphinxcontrib-programoutput
sphinx-autodoc-typehints
sphinxcontrib-openapi>=0.4.0
reno>=2.8.0 # Apache-2.0
zuul-sphinx

@ -31,6 +31,7 @@ extensions = [
'sphinx.ext.graphviz',
'sphinxcontrib.blockdiag',
'sphinxcontrib.programoutput',
'sphinxcontrib.openapi',
'zuul_sphinx',
'zuul.sphinx.ansible',
'zuul.sphinx.zuul',

@ -16,6 +16,7 @@ configure it to meet your needs.
config
jobs
encryption
web
badges
howtos
vulnerabilities

@ -0,0 +1,7 @@
:title: REST API
Rest API
========
.. openapi:: ../../../web/public/openapi.yaml
:examples:

@ -1,4 +1,5 @@
flake8
openapi-spec-validator
coverage>=3.6
fixtures>=0.3.14

@ -54,6 +54,7 @@ install_command = pip install {opts} {packages}
commands =
flake8 {posargs}
mypy --ignore-missing-imports zuul
openapi-spec-validator web/public/openapi.yaml
[testenv:cover]
setenv =

@ -9,6 +9,7 @@
"dependencies": {
"axios": "^0.19.0",
"immutability-helper": "^2.8.1",
"js-yaml": "^3.13.0",
"lodash": "^4.17.10",
"moment": "^2.22.2",
"patternfly-react": "^2.13.1",
@ -24,6 +25,7 @@
"redux": "<4.0.0",
"redux-thunk": "^2.3.0",
"sockette": "^2.0.0",
"swagger-ui": "^3.20.1",
"xterm": "<3.14.0"
},
"devDependencies": {

@ -0,0 +1,439 @@
info:
title: Zuul REST API
version: v1
description: Incomplete (work in progress) list of the endpoints.
openapi: 3.0.0
tags:
- name: tenant
paths:
/api/tenant/{tenant}/builds:
get:
operationId: list-builds
parameters:
- description: The tenant name
in: path
name: tenant
required: true
schema:
type: string
- description: A project name
in: query
name: project
schema:
type: string
- description: A pipeline name
in: query
name: pipeline
schema:
type: string
- description: A job name
in: query
name: job_name
schema:
type: string
- description: A branch name
in: query
name: branch
schema:
type: string
- description: A change number
in: query
name: change
schema:
type: string
- description: A patchset number
in: query
name: patchset
schema:
type: string
- description: A ref
in: query
name: ref
schema:
type: string
- description: A new revision hash
in: query
name: newrev
schema:
type: string
- description: A build uuid
in: query
name: uuid
schema:
type: string
- description: A build voting status
in: query
name: voting
schema:
type: string
- description: A build result
in: query
name: result
schema:
type: string
- description: The limit count (default 50)
in: query
name: limit
schema:
type: string
- description: Skip number of results
in: query
name: skip
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: The list of builds
items:
$ref: '#/components/schemas/build'
type: array
description: Returns the list of builds
'404':
description: Tenant not found
summary: List the executed builds
tags:
- tenant
/api/tenant/{tenant}/jobs:
get:
operationId: list-jobs
parameters:
- description: The tenant name
in: path
name: tenant
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: The list of jobs
items:
description: A job
properties:
description:
description: The job short description
type: string
name:
description: The job name
type: string
type: object
type: array
description: Returns the list of jobs
'404':
description: Tenant not found
summary: List available jobs
tags:
- tenant
/api/tenant/{tenant}/key/{project}.pub:
get:
operationId: get-project-key
parameters:
- description: The tenant name
in: path
name: tenant
required: true
schema:
type: string
- description: The project name
in: path
name: project
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
example: '-----BEGIN PUBLIC KEY-----
MIICI...
-----END PUBLIC KEY-----
'
schema:
description: The project public key
type: string
description: Returns the project public key
'404':
description: Tenant or Project not found
summary: Get a project public key
tags:
- tenant
/api/tenant/{tenant}/status:
get:
operationId: get-status
parameters:
- description: The tenant name
in: path
name: tenant
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: The tenant status
properties:
last_reconfigured:
description: The Epoch timestamp of the last reconfiguration
type: integer
pipelines:
description: The list of pipelines
items:
$ref: '#/components/schemas/pipelineStatus'
type: array
result_event_queue:
description: The number of completed events
type: integer
trigger_event_queue:
description: The number of running events
type: integer
zuul_version:
description: The Zuul version
type: string
type: object
description: Returns the list of tenants
'404':
description: Tenant not found
summary: Get tenant status
tags:
- tenant
/api/tenants:
get:
operationId: list-tenants
responses:
'200':
content:
application/json:
schema:
items:
properties:
name:
description: Tenant name
type: string
projects:
description: Tenant project count
type: integer
queue:
description: Active changes count
type: integer
type: object
type: array
description: Returns the list of tenants
summary: List the tenants
tags:
- tenant
components:
schemas:
build:
description: A build
properties:
branch:
description: The build change branch
type: string
change:
description: The build change number
type: integer
duration:
description: The build duration in second
type: integer
end_time:
description: The build end time ISO 8601 format
type: string
job_name:
description: The build job name
type: string
log_url:
description: The build logs url
type: string
newrev:
description: The build newrev
type: string
patchset:
description: The build patchset number
type: integer
pipeline:
description: The build pipeline
type: string
project:
description: The build project name
type: string
ref:
description: The build change reference
type: string
ref_url:
description: The build change reference url
type: string
result:
description: The build result
type: string
start_time:
description: The build start time ISO 8601 format
type: string
uuid:
description: The build uuid
type: string
voting:
description: The build voting status
type: boolean
type: object
changeQueue:
description: A change queue
properties:
heads:
description: The list of queue events
items:
items:
$ref: '#/components/schemas/eventQueue'
type: array
type: array
name:
description: The queue name
type: string
window:
description: The queue window
type: integer
type: object
eventQueue:
description: A queue event
properties:
active:
description: Is the event active
type: boolean
enqueue_time:
description: The epoch creation time
type: integer
failing_reasons:
description: The list of failing reasons
items:
type: string
type: array
id:
description: The event id
type: string
item_ahead:
description: The list of events ahead
items:
type: string
type: array
item_behind:
description: The list of events behind
items:
type: string
type: array
jobs:
description: The event list of jobs
items:
$ref: '#/components/schemas/statusJob'
type: array
live:
description: Is the event live
type: boolean
owner:
description: The event owner
type: string
project:
description: The event project
type: string
remaining_time:
description: The estimated remaining time
type: integer
url:
description: The event url
type: string
zuul_ref:
description: The zuul ref
type: string
type: object
pipelineStatus:
description: A pipeline
properties:
change_queues:
description: The pipeline list of change queues
items:
$ref: '#/components/schemas/changeQueue'
type: array
description:
description: The pipeline description
type: string
name:
description: The pipeline name
type: string
type: object
statusJob:
description: A job status
properties:
canceled:
description: Is the job canceled
type: boolean
elapsed_time:
description: The elapsed time
type: integer
launch_time:
description: The epoch launch time
type: integer
name:
description: The job name
type: string
number:
description: The job number
type: integer
pipeline:
description: The job pipeline
type: string
remaining_time:
description: The estimated remaining time
type: integer
result:
description: The job result
type: string
retry:
description: The retry count
type: integer
start_time:
description: The epoch start time
type: integer
url:
description: The job stream url
type: string
uuid:
description: The job uuid
type: string
voting:
description: Is the job voting
type: boolean
worker:
$ref: '#/components/schemas/statusWorker'
type: object
statusWorker:
description: A job worker node
properties:
fqdn:
description: The worker fully qualified domain name
type: string
hostname:
description: The worker hostname
type: string
ips:
description: The list of worker ip addresses
items:
type: string
type: array
name:
description: The worker name
type: string
program:
description: The worker program
type: string
version:
description: The worker version
type: string
type: object

@ -106,7 +106,9 @@ class App extends React.Component {
allRoutes.push(
<Route
key={index}
path={item.globalRoute ? item.to : tenant.routePrefix + item.to}
path={
item.globalRoute ? item.to :
item.noTenantPrefix ? item.to : tenant.routePrefix + item.to}
component={item.component}
exact
/>
@ -255,6 +257,9 @@ class App extends React.Component {
this.setState({showErrors: !this.state.showErrors})}}
/>
}
<li>
<Link to='/openapi'>API</Link>
</li>
<li>
<a href='https://zuul-ci.org/docs'
rel='noopener noreferrer' target='_blank'>

@ -0,0 +1,82 @@
// Copyright 2018 Red Hat, Inc
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
import * as API from '../api'
import yaml from 'js-yaml'
export const OPENAPI_FETCH_REQUEST = 'OPENAPI_FETCH_REQUEST'
export const OPENAPI_FETCH_SUCCESS = 'OPENAPI_FETCH_SUCCESS'
export const OPENAPI_FETCH_FAIL = 'OPENAPI_FETCH_FAIL'
export const fetchOpenApiRequest = () => ({
type: OPENAPI_FETCH_REQUEST
})
export const fetchOpenApiSuccess = (yaml_data, whiteLabel) => {
const data = yaml.safeLoad(yaml_data)
if (whiteLabel) {
const paths = {}
for (let path in data.paths) {
// Remove tenant list api
if (path === '/api/tenants') {
continue
}
// Remove tenant in path parameter
data.paths[path].get.parameters.splice(0, 1)
paths[path.replace('/api/tenant/{tenant}/', '/api/')] = data.paths[path]
}
data.paths = paths
}
data.servers = [{
// Trim the trailing '/api/'
url: API.apiUrl.substr(0, API.apiUrl.length - 5),
description: 'Production server',
}]
return {
type: OPENAPI_FETCH_SUCCESS,
openapi: data,
}
}
const fetchOpenApiFail = error => ({
type: OPENAPI_FETCH_FAIL,
error
})
const fetchOpenApi = (whiteLabel) => dispatch => {
dispatch(fetchOpenApiRequest())
return API.fetchOpenApi()
.then(response => dispatch(fetchOpenApiSuccess(response.data, whiteLabel)))
.catch(error => {
dispatch(fetchOpenApiFail(error))
setTimeout(() => {dispatch(fetchOpenApi())}, 5000)
})
}
const shouldFetchOpenApi = openapi => {
if (!openapi.openapi) {
return true
}
if (openapi.isFetching) {
return false
}
return true
}
export const fetchOpenApiIfNeeded = (force) => (dispatch, getState) => {
const state = getState()
if (force || shouldFetchOpenApi(state.openapi)) {
return dispatch(fetchOpenApi(state.tenant.whiteLabel))
}
}

@ -106,6 +106,9 @@ function getStreamUrl (apiPrefix) {
function fetchInfo () {
return Axios.get(apiUrl + 'info')
}
function fetchOpenApi () {
return Axios.get(getHomepageUrl () + 'openapi.yaml')
}
function fetchTenants () {
return Axios.get(apiUrl + 'tenants')
}
@ -155,6 +158,7 @@ function fetchNodes (apiPrefix) {
}
export {
apiUrl,
getHomepageUrl,
getStreamUrl,
fetchChangeStatus,
@ -169,6 +173,7 @@ export {
fetchJobs,
fetchLabels,
fetchNodes,
fetchOpenApi,
fetchTenants,
fetchInfo
}

@ -121,3 +121,12 @@ a.refresh {
div.tree-view-container ul.list-group {
margin: 0px 0px;
}
/* OpenAPI page */
pre.version {
background-color: lightgrey;
color: black;
}
.swagger-ui .servers {
padding-top: 5px
}

@ -0,0 +1,67 @@
// Copyright 2018 Red Hat, Inc
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
import * as React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import SwaggerUi from 'swagger-ui'
import 'swagger-ui/dist/swagger-ui.css'
import { fetchOpenApiIfNeeded } from '../actions/openapi'
import Refreshable from '../containers/Refreshable'
class OpenApiPage extends Refreshable {
static propTypes = {
tenant: PropTypes.object,
remoteData: PropTypes.object,
dispatch: PropTypes.func
}
updateData = (force) => {
this.props.dispatch(fetchOpenApiIfNeeded(force))
}
componentDidMount () {
document.title = 'Zuul API'
this.updateData()
}
componentDidUpdate (prevProps) {
if (this.props.remoteData.openapi &&
this.props.remoteData.openapi !== prevProps.remoteData.openapi) {
SwaggerUi({
dom_id: '#swaggerContainer',
spec: this.props.remoteData.openapi,
presets: [SwaggerUi.presets.apis]
})
}
}
render() {
return (
<React.Fragment>
<div className="pull-right" style={{display: 'flex'}}>
{this.renderSpinner()}
</div>
<div id="swaggerContainer" />
</React.Fragment>
)
}
}
export default connect(state => ({
tenant: state.tenant,
remoteData: state.openapi,
}))(OpenApiPage)

@ -28,6 +28,7 @@ import projects from './projects'
import status from './status'
import tenant from './tenant'
import tenants from './tenants'
import openapi from './openapi'
const reducers = {
change,
@ -44,6 +45,7 @@ const reducers = {
status,
tenant,
tenants,
openapi,
}
export default combineReducers(reducers)

@ -0,0 +1,40 @@
// Copyright 2018 Red Hat, Inc
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
import {
OPENAPI_FETCH_REQUEST,
OPENAPI_FETCH_SUCCESS,
OPENAPI_FETCH_FAIL,
} from '../actions/openapi'
export default (state = {
isFetching: false,
openapi: null,
}, action) => {
switch (action.type) {
case OPENAPI_FETCH_REQUEST:
case OPENAPI_FETCH_FAIL:
return {
isFetching: true,
tenant: state.openapi,
}
case OPENAPI_FETCH_SUCCESS:
return {
isFetching: false,
openapi: action.openapi,
}
default:
return state
}
}

@ -26,6 +26,7 @@ import BuildsetsPage from './pages/Buildsets'
import ConfigErrorsPage from './pages/ConfigErrors'
import TenantsPage from './pages/Tenants'
import StreamPage from './pages/Stream'
import OpenApiPage from './pages/OpenApi'
// The Route object are created in the App component.
// Object with a title are created in the menu.
@ -95,6 +96,11 @@ const routes = () => [
to: '/tenants',
component: TenantsPage,
globalRoute: true
},
{
to: '/openapi',
component: OpenApiPage,
noTenantPrefix: true,
}
]

@ -33,6 +33,30 @@
dependencies:
regenerator-runtime "^0.13.2"
"@braintree/sanitize-url@^2.0.2":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-2.1.0.tgz#549a9d1f923c9bc7953a585d3e9aa9429be8fe28"
integrity sha1-VJqdH5I8m8eVOlhdPpqpQpvo/ig=
"@kyleshockey/js-yaml@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@kyleshockey/js-yaml/-/js-yaml-1.0.1.tgz#5c036bb67caee77fa887738e695dc02949889bfd"
integrity sha512-coFyIk1LvTscq1cUU4nCCfYwv+cmG4fCP+wgDKgYZjhM4f++YwZy+g0k+1tUqa4GuUpBTEOGH2KUqKFFWdT73g==
dependencies:
argparse "^1.0.7"
"@kyleshockey/object-assign-deep@^0.4.0", "@kyleshockey/object-assign-deep@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@kyleshockey/object-assign-deep/-/object-assign-deep-0.4.2.tgz#84900f0eefc372798f4751b5262830b8208922ec"
integrity sha1-hJAPDu/DcnmPR1G1JigwuCCJIuw=
"@kyleshockey/xml@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@kyleshockey/xml/-/xml-1.0.2.tgz#81fad3d7c33da2ba2639db095db3db24c2921f70"
integrity sha512-iMo32MPLcI9cPxs3YL5kmKxKgDmkSZDCFEqIT5eRk7d/Ll8r4X3SwGYSigzALd6+RHWlFEmjL1QyaQ15xDZFlw==
dependencies:
stream "^0.0.2"
"@types/c3@^0.6.0":
version "0.6.4"
resolved "https://registry.yarnpkg.com/@types/c3/-/c3-0.6.4.tgz#449830da0e1a2fc4feceb87f97de7ee5965e183b"
@ -252,6 +276,13 @@
resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad"
integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==
"@types/react@16.4.6":
version "16.4.6"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.6.tgz#5024957c6bcef4f02823accf5974faba2e54fada"
integrity sha512-9LDZdhsuKSc+DjY65SjBkA958oBWcTWSVWAd2cD9XqKBjhGw1KzAkRhWRw2eIsXvaIE/TOTjjKMFVC+JA1iU4g==
dependencies:
csstype "^2.2.0"
abab@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
@ -462,6 +493,14 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
argparse@~0.1.15:
version "0.1.16"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c"
integrity sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=
dependencies:
underscore "~1.7.0"
underscore.string "~2.4.0"
aria-query@^0.7.0:
version "0.7.1"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e"
@ -621,7 +660,7 @@ async@^1.5.2:
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
async@^2.1.2, async@^2.1.4, async@^2.4.1:
async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.4.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
@ -638,6 +677,11 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
autolinker@~0.15.0:
version "0.15.3"
resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832"
integrity sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=
autoprefixer@7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7"
@ -1441,7 +1485,7 @@ base16@^1.0.0:
resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70"
integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=
base64-js@^1.0.2:
base64-js@^1.0.2, base64-js@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
@ -1725,6 +1769,11 @@ bser@^2.0.0:
dependencies:
node-int64 "^0.4.0"
btoa@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.1.2.tgz#3e40b81663f81d2dd6596a4cb714a8dc16cfabe0"
integrity sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@ -1749,6 +1798,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
buffer@^5.1.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
dependencies:
base64-js "^1.0.2"
ieee754 "^1.1.4"
builtin-modules@^1.0.0, builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@ -2126,7 +2183,7 @@ colors@~1.1.2:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
combined-stream@^1.0.6, combined-stream@~1.0.6:
combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@ -2266,6 +2323,11 @@ cookie@0.4.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
cookie@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
@ -2276,7 +2338,7 @@ core-js@^1.0.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5:
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.1, core-js@^2.6.5:
version "2.6.9"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==
@ -2337,6 +2399,15 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
create-react-class@^15.5.1, create-react-class@^15.6.0:
version "15.6.3"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
dependencies:
fbjs "^0.8.9"
loose-envify "^1.3.1"
object-assign "^4.1.1"
create-react-context@<=0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca"
@ -2353,6 +2424,14 @@ create-react-context@^0.2.3:
fbjs "^0.8.0"
gud "^1.0.0"
cross-fetch@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-0.0.8.tgz#01ed94dc407df2c00f1807fde700a7cfa48a205c"
integrity sha1-Ae2U3EB98sAPGAf95wCnz6SKIFw=
dependencies:
node-fetch "1.7.3"
whatwg-fetch "2.0.3"
cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@ -2449,6 +2528,11 @@ css-what@2.1:
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
css.escape@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
@ -2512,6 +2596,11 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
dependencies:
cssom "0.3.x"
csstype@^2.2.0:
version "2.6.5"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.5.tgz#1cd1dff742ebf4d7c991470ae71e12bb6751e034"
integrity sha512-JsTaiksRsel5n7XwqPAfB0l3TFKdpjW/kgAELf9vrb5adGA7UCPLajKK5s3nFrcFm3Rkyp/Qkgl73ENc1UY3cA==
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@ -2631,6 +2720,11 @@ deep-equal@^1.0.1:
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
deep-extend@0.5.1, deep-extend@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@ -2862,6 +2956,11 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
dompurify@^1.0.4:
version "1.0.10"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-1.0.10.tgz#18d7353631c86ee25049e38fbca8c6b2c5a2af87"
integrity sha512-huhl3DSWX5LaA7jDtnj3XQdJgWW1wYouNW7N0drGzQa4vEUSVWyeFN+Atx6HP4r5cang6oQytMom6I4yhGJj5g==
domutils@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
@ -2926,9 +3025,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
version "1.3.148"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.148.tgz#5796c0d9eb0358d397163413b90bf376c5d8bf08"
integrity sha512-nuCOlXNlGMQmdzihIPGm2K3Yf3H1hke/1rK381i02pH8wNliJU9hVNnOi/xjmxt+mjABd/BzufP5nPHWKshLWA==
version "1.3.158"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.158.tgz#5e16909dcfd25ab7cd1665114ee381083a3ee858"
integrity sha512-wJsJaWsViNQ129XPGmyO5gGs1jPMHr9vffjHAhUje1xZbEzQcqbENdvfyRD9q8UF0TgFQFCCUbaIpJarFbvsIg==
elliptic@^6.0.0:
version "6.4.1"
@ -2943,6 +3042,11 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
emitter-component@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6"
integrity sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=
emoji-regex@^6.1.0:
version "6.5.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
@ -2958,6 +3062,11 @@ emojis-list@^2.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
encode-3986@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/encode-3986/-/encode-3986-1.0.0.tgz#940d51498f8741ade184b75ad1439b317c0c7a60"
integrity sha1-lA1RSY+HQa3hhLda0UObMXwMemA=
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@ -3030,7 +3139,7 @@ es-to-primitive@^1.2.0:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
version "0.10.50"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
@ -3039,7 +3148,7 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
es6-symbol "~3.1.1"
next-tick "^1.0.0"
es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
@ -3084,14 +3193,14 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
d "1"
es5-ext "~0.10.14"
es6-weak-map@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=
es6-weak-map@^2.0.1, es6-weak-map@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
dependencies:
d "1"
es5-ext "^0.10.14"
es6-iterator "^2.0.1"
es5-ext "^0.10.46"
es6-iterator "^2.0.3"
es6-symbol "^3.1.1"
escape-html@~1.0.3:
@ -3399,7 +3508,7 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
event-emitter@~0.3.5:
event-emitter@^0.3.5, event-emitter@~0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
@ -3611,6 +3720,13 @@ fast-deep-equal@^2.0.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
fast-json-patch@^2.0.6:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-2.1.0.tgz#e348c330a5b2481b14f5fffd707aebfef8b7bef6"
integrity sha512-PipOsAKamRw7+CXtKiieehyjUeDVPJ5J7b2kdJYerEf6TSUQoD2ijpVyZ88KQm5YXziff4h762bz3+vzf56khg==
dependencies:
deep-equal "^1.0.1"
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
@ -3634,9 +3750,9 @@ faye-websocket@^0.10.0:
websocket-driver ">=0.5.1"
faye-websocket@~0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=
version "0.11.3"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
dependencies:
websocket-driver ">=0.5.1"
@ -3867,6 +3983,15 @@ forever-agent@~0.6.1:
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
form-data@^1.0.0-rc3:
version "1.0.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c"
integrity sha1-rjFduaSQf6BlUCMEpm13M0de43w=
dependencies:
async "^2.0.1"
combined-stream "^1.0.5"
mime-types "^2.1.11"
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@ -4269,7 +4394,7 @@ hoist-non-react-statics@^2.1.1, hoist-non-react-statics@^2.3.1, hoist-non-react-
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
hoist-non-react-statics@^3.1.0:
hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==
@ -4443,7 +4568,7 @@ icss-utils@^2.1.0:
dependencies:
postcss "^6.0.1"
ieee754@^1.1.4:
ieee754@^1.1.4, ieee754@^1.1.8:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@ -4472,6 +4597,11 @@ immutability-helper@^2.8.1:
dependencies:
invariant "^2.2.0"
immutable@^3.7.6, immutable@^3.x.x:
version "3.8.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=
import-fresh@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
@ -4589,7 +4719,7 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@ -4713,6 +4843,11 @@ is-directory@^0.3.1:
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
is-dom@^1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.0.9.tgz#483832d52972073de12b9fe3f60320870da8370d"
integrity sha1-SDgy1SlyBz3hK5/j9gMghw2oNw0=
is-dotfile@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@ -4865,7 +5000,7 @@ is-primitive@^2.0.0:
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
is-promise@^2.1.0:
is-promise@^2.1, is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
@ -4971,6 +5106,13 @@ isomorphic-fetch@^2.1.1:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"
isomorphic-form-data@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isomorphic-form-data/-/isomorphic-form-data-0.0.1.tgz#026f627e032b0cd8413ecc8755928b94a468b062"
integrity sha1-Am9ifgMrDNhBPsyHVZKLlKRosGI=
dependencies:
form-data "^1.0.0-rc3"
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@ -5298,6 +5440,11 @@ js-base64@^2.1.9:
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
js-file-download@^0.4.1:
version "0.4.7"
resolved "https://registry.yarnpkg.com/js-file-download/-/js-file-download-0.4.7.tgz#cafea2f7230b63fa1747e80efe1257649b59143e"
integrity sha512-9AQYwIpgTz3BqKQQ9kZldCXd0BekFmxvUguEVJwVlTe9cON1slRaT+hqctEbjoXbz9Aj+8Qgl3841zYWeCstuA==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@ -5658,15 +5805,15 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0:
"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
loglevel@^1.4.1:
version "1.6.2"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.2.tgz#668c77948a03dbd22502a3513ace1f62a80cc372"
integrity sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==
version "1.6.3"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280"
integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==
longest@^1.0.1:
version "1.0.1"
@ -5706,6 +5853,13 @@ lru-cache@^4.0.1:
pseudomap "^1.0.2"
yallist "^2.1.2"
lru-queue@0.1:
version "0.1.0"
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=
dependencies:
es5-ext "~0.10.2"
make-dir@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
@ -5768,6 +5922,20 @@ mem@^1.1.0:
dependencies:
mimic-fn "^1.0.0"
memoizee@^0.4.12:
version "0.4.14"
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==
dependencies:
d "1"
es5-ext "^0.10.45"
es6-weak-map "^2.0.2"
event-emitter "^0.3.5"
is-promise "^2.1"
lru-queue "0.1"
next-tick "1"
timers-ext "^0.1.5"
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"
@ -5858,7 +6026,7 @@ mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.24"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
@ -6035,7 +6203,7 @@ neo-async@^2.5.0, neo-async@^2.6.0:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
next-tick@^1.0.0:
next-tick@1, next-tick@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
@ -6052,7 +6220,7 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
node-fetch@^1.0.1:
node-fetch@1.7.3, node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
@ -6586,9 +6754,9 @@ patternfly-bootstrap-treeview@~2.1.0:
jquery ">= 2.1.x"
patternfly-react@^2.13.1:
version "2.36.0"
resolved "https://registry.yarnpkg.com/patternfly-react/-/patternfly-react-2.36.0.tgz#7143a13356ef6c61ea7764a61d84be58502fc0e7"
integrity sha512-VmkrZtfdieL4kWFeSsjK02pNLt214x2lwpTPyHlbWy5uXjqXU2fYBo9gA2gNXYwdy25DVJ+EDh493+ye/C3AIg==
version "2.36.1"
resolved "https://registry.yarnpkg.com/patternfly-react/-/patternfly-react-2.36.1.tgz#a6bdfd9b8e11d7fa6055492655fabbd300701815"
integrity sha512-1BKlf/LnvEzofpQ0pGSrTuTPP+ykV3d2lH60bM3c3bdCXPYdOsWrRaBZugv1oREzbRSts/8xvwiVMitXc5xjwA==
dependencies:
bootstrap-slider-without-jquery "^10.0.0"
breakjs "^1.0.0"
@ -7202,7 +7370,7 @@ q@^1.1.2:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
qs@6.7.0:
qs@6.7.0, qs@^6.3.0:
version "6.7.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
@ -7220,6 +7388,11 @@ query-string@^4.1.0:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
querystring-browser@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/querystring-browser/-/querystring-browser-1.0.4.tgz#f2e35881840a819bc7b1bf597faf0979e6622dc6"
integrity sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY=
querystring-es3@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@ -7400,6 +7573,16 @@ react-dev-utils@^5.0.1:
strip-ansi "3.0.1"
text-table "0.2.0"
react-dom@^15.6.2:
version "15.6.2"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730"
integrity sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=
dependencies:
fbjs "^0.8.9"
loose-envify "^1.1.0"
object-assign "^4.1.0"
prop-types "^15.5.10"
react-dom@^16.4.2:
version "16.8.6"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
@ -7436,6 +7619,27 @@ react-height@^3.0.0:
dependencies:
prop-types "15.5.8"
react-immutable-proptypes@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4"
integrity sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ=
react-immutable-pure-component@^1.1.1:
version "1.2.3"
resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.3.tgz#fa33638df68cfe9f73ccbee1d5861c17f3053f86"
integrity sha512-kNy2A/fDrSuR8TKwB+4ynmItmp1vgF87tWxxfmadwDYo2J3ANipHqTjDIBvJvJ7libvuh76jIbvmK0krjtKH1g==
optionalDependencies:
"@types/react" "16.4.6"
react-inspector@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.3.1.tgz#f0eb7f520669b545b441af9d38ec6d706e5f649c"
integrity sha512-tUUK7t3KWgZEIUktOYko5Ic/oYwvjEvQUFAGC1UeMeDaQ5za2yZFtItJa2RTwBJB//NxPr000WQK6sEbqC6y0Q==
dependencies:
babel-runtime "^6.26.0"
is-dom "^1.0.9"
prop-types "^15.6.1"
react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.8.6"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
@ -7496,6 +7700,18 @@ react-prop-types@^0.4.0:
dependencies:
warning "^3.0.0"
react-redux@^4.x.x:
version "4.4.10"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-4.4.10.tgz#ad57bd1db00c2d0aa7db992b360ce63dd0b80ec5"
integrity sha512-tjL0Bmpkj75Td0k+lXlF8Fc8a9GuXFv/3ahUOCXExWs/jhsKiQeTffdH0j5byejCGCRL4tvGFYlrwBF1X/Aujg==
dependencies:
create-react-class "^15.5.1"
hoist-non-react-statics "^3.3.0"
invariant "^2.0.0"
lodash "^4.17.11"
loose-envify "^1.4.0"
prop-types "^15.7.2"
react-redux@^5.0.7:
version "5.1.1"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.1.tgz#88e368682c7fa80e34e055cd7ac56f5936b0f52f"
@ -7597,6 +7813,17 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
react@^15.6.2:
version "15.6.2"
resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
integrity sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=
dependencies:
create-react-class "^15.6.0"
fbjs "^0.8.9"
loose-envify "^1.1.0"
object-assign "^4.1.0"
prop-types "^15.5.10"