diff --git a/.gitignore b/.gitignore index 89cd3a04bf87af7b2a1702d23ad8e3ba722d39a8..7a092e5462aba57b68487980ec243b39b0c5844a 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,32 @@ Temporary Items .apdisk # End of https://www.gitignore.io/api/osx,linux +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# webpack build +_build diff --git a/packages/client/package.json b/packages/client/package.json index c208c0cb0781797cdbd0d0e0258907f875a6de69..0a127e4003bc9f535fec3b01e37210c86624016a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -31,7 +31,8 @@ "redux-logger": "^3.0.1", "redux-thunk": "^2.2.0", "reselect": "^3.0.1", - "styled-components": "^3.1.4" + "styled-components": "^2.4.0", + "styled-normalize": "^3.0.1" }, "devDependencies": { "babel-cli": "^6.26.0", diff --git a/packages/client/src/components/Root.js b/packages/client/src/components/Root.js index ddef90e2ad99efa9a6ee3961fe4e11bd9c83d52a..c32b04c7eae3b3273a2780a7b4ea60ca7c0e8381 100644 --- a/packages/client/src/components/Root.js +++ b/packages/client/src/components/Root.js @@ -3,11 +3,16 @@ import { ConnectedRouter } from 'react-router-redux' import { Provider } from 'react-redux' import PropTypes from 'prop-types' import { ThemeProvider } from 'styled-components' +import StyleRoot, { injectGlobalStyles } from '../helpers/StyleRoot' + +injectGlobalStyles() const Root = ({ store, history, routes, theme }) => ( <Provider store={store}> <ConnectedRouter history={history}> - <ThemeProvider theme={theme}>{routes}</ThemeProvider> + <ThemeProvider theme={theme}> + <StyleRoot>{routes}</StyleRoot> + </ThemeProvider> </ConnectedRouter> </Provider> ) diff --git a/packages/client/src/helpers/StyleRoot.js b/packages/client/src/helpers/StyleRoot.js new file mode 100644 index 0000000000000000000000000000000000000000..d4ec515067da7b333f2dfb01dfa9c9a9d99befbb --- /dev/null +++ b/packages/client/src/helpers/StyleRoot.js @@ -0,0 +1,22 @@ +import styled, { injectGlobal } from 'styled-components' +import styledNormalize from 'styled-normalize' +import { th } from '@pubsweet/ui' + +const injectGlobalStyles = () => injectGlobal` + ${styledNormalize} +` + +const StyleRoot = styled.div` + background-color: ${th('colorBackground')}; + font-family: ${th('fontInterface')}, sans-serif; + font-size: ${th('fontSizeBase')}; + color: ${th('colorText')}; + line-height: ${th('fontLineHeight')}; + + * { + box-sizing: border-box; + } +` + +export default StyleRoot +export { injectGlobalStyles } diff --git a/packages/components/config/test.js b/packages/components/config/default.js similarity index 100% rename from packages/components/config/test.js rename to packages/components/config/default.js diff --git a/packages/components/package.json b/packages/components/package.json index 4dbb6d32481f298cb9f8dd2a0488af6aff4918f3..e8d30bd86a056e7967c866f832c016ca3a4b1e06 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -7,7 +7,8 @@ "test": "jest --coverage" }, "devDependencies": { - "@pubsweet/logger": "^0.2.2", + "@pubsweet/logger": "^0.2.1", + "@pubsweet/styleguide": "^1.0.0", "babel-cli": "^6.26.0", "babel-eslint": "^8.0.3", "babel-loader": "^7.1.2", @@ -58,5 +59,6 @@ "config/" ], "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js" - } + }, + "dependencies": {} } diff --git a/packages/components/packages/Blog/Blog.md b/packages/components/packages/Blog/Blog.md index 634a624f8325c637f5d791935b9937b6ded62dc6..366d4895029884e0c200b15e618c58dac1e7dc99 100644 --- a/packages/components/packages/Blog/Blog.md +++ b/packages/components/packages/Blog/Blog.md @@ -1,30 +1,30 @@ -# Blog +The main component of a blog or news page. -> The main component of a blog or news page. +Basic display: -Basic display +```js +const getCollections = () => new Promise(() => null) - const getCollections = () => new Promise(() => null); - - <Blog - blog={{title: 'Some Blog'}} - posts={[]} - actions={{getCollections}} - /> - -With a post - - const getCollections = () => new Promise(() => null); - - <Blog - blog={{title: 'Some Blog'}} - posts={[{ - id: 1, - title: 'A post', - source: '<abstract>Something something something</abstract>', - owners: [{username: 'Anne Author'}], - published_at: '2017-01-02', - published: true - }]} - actions={{getCollections}} - /> +;<Blog blog={{ title: 'Some Blog' }} posts={[]} actions={{ getCollections }} /> +``` + +With a post: + +```js +const getCollections = () => new Promise(() => null) + +;<Blog + blog={{ title: 'Some Blog' }} + posts={[ + { + id: 1, + title: 'A post', + source: '<abstract>Something something something</abstract>', + owners: [{ username: 'Anne Author' }], + published_at: '2017-01-02', + published: true, + }, + ]} + actions={{ getCollections }} +/> +``` diff --git a/packages/components/packages/Blog/Summary.md b/packages/components/packages/Blog/Summary.md index f3cac1a1a5ca90af795d920c40fbbff6a175ec9f..1b59bc817718f1b52ce45cdfe86458afef80ea8b 100644 --- a/packages/components/packages/Blog/Summary.md +++ b/packages/components/packages/Blog/Summary.md @@ -1,22 +1,24 @@ -# Blog post summary - -> Post preview with link to read more. +Post preview with link to read more. Basic display - const fragment = { - title: 'A post', - owners: [{username: 'Anne Author'}], - published_at: '2017-01-02' - }; - <Summary fragment={fragment}/> +```js +const fragment = { + title: 'A post', + owners: [{ username: 'Anne Author' }], + published_at: '2017-01-02', +} +;<Summary fragment={fragment} /> +``` With abstract and two authors - const fragment = { - title: 'A post', - source: '<abstract>Something something something</abstract>', - owners: [{username: 'Rae Searcher'}, {username: 'Si Entist'}], - published_at: '2017-01-02' - }; - <Summary fragment={fragment}/> +```js +const fragment = { + title: 'A post', + source: '<abstract>Something something something</abstract>', + owners: [{ username: 'Rae Searcher' }, { username: 'Si Entist' }], + published_at: '2017-01-02', +} +;<Summary fragment={fragment} /> +``` diff --git a/packages/components/packages/Draft.js/Draft.md b/packages/components/packages/Draft.js/Draft.md index f42f338873cd4144e514f89f7d0874e712c6484a..792ba104950cf6d787d484523784f2c1af5d0328 100644 --- a/packages/components/packages/Draft.js/Draft.md +++ b/packages/components/packages/Draft.js/Draft.md @@ -1,12 +1,12 @@ -# Draft.js +Draft.js text editor -> Draft.js text editor +```js +const dummy = () => new Promise(() => null) - const dummy = () => new Promise(() => null); - - <Draft - id="1" - blog={{id: '2'}} - fragment={{}} - actions={{getCollections: dummy, updateFragment: dummy}} - /> +;<Draft + id="1" + blog={{ id: '2' }} + fragment={{}} + actions={{ getCollections: dummy, updateFragment: dummy }} +/> +``` diff --git a/packages/components/packages/FormGroup/README.md b/packages/components/packages/FormGroup/README.md index 1bae16a0ad90afce61cd0374915105c861c0a88e..38ae6bb80688ffec9e2217f7f43b3e353a34e751 100644 --- a/packages/components/packages/FormGroup/README.md +++ b/packages/components/packages/FormGroup/README.md @@ -36,4 +36,3 @@ var title = ReactDOM.findDOMNode(this.title).value ## License MIT - diff --git a/packages/components/packages/FormGroup/package.json b/packages/components/packages/FormGroup/package.json index 7e3e66ff785749cf002672d0c7dc2bd327bde951..cce9db55154da37cecbafe9164c1123b4c16dc8b 100644 --- a/packages/components/packages/FormGroup/package.json +++ b/packages/components/packages/FormGroup/package.json @@ -1,15 +1,14 @@ { "name": "pubsweet-component-form-group", "version": "1.0.2", - "description": "Form component based on react-bootstrap with validation support for PubSweet", + "description": "Form component with validation support for PubSweet", "main": "index.js", "author": "Collaborative Knowledge Foundation", "license": "MIT", "dependencies": { "joi-browser": "^13.0.1", "prop-types": "^15.5.10", - "pubsweet-server": "^2.0.0", - "react-bootstrap": "^0.32.0" + "pubsweet-server": "^2.0.0" }, "peerDependencies": { "pubsweet-client": ">=1.0.0", diff --git a/packages/components/packages/HTML/HTML.jsx b/packages/components/packages/HTML/HTML.jsx index da5766b5216635f481c63aed128bca39345a3809..9e0f8e2d4970c7317ec49662daeafb3284f064f7 100644 --- a/packages/components/packages/HTML/HTML.jsx +++ b/packages/components/packages/HTML/HTML.jsx @@ -1,7 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' +import styled from 'styled-components' -import './HTML.scss' +const Root = styled.div` + margin-left: auto; + margin-right: auto; +` export default class HTML extends React.Component { constructor(props) { @@ -18,10 +22,7 @@ export default class HTML extends React.Component { if (fragment) { return ( - <div - className="fragment" - dangerouslySetInnerHTML={{ __html: fragment.presentation }} - /> + <Root dangerouslySetInnerHTML={{ __html: fragment.presentation }} /> ) } return <div>No fragment found</div> diff --git a/packages/components/packages/HTML/HTML.md b/packages/components/packages/HTML/HTML.md index 204dba12ba5a4c433af64d06e43fc8b4a6cd59ea..464dc9315c5d0fa3a81a66fe7e23d68202d7da88 100644 --- a/packages/components/packages/HTML/HTML.md +++ b/packages/components/packages/HTML/HTML.md @@ -1,13 +1,10 @@ -# HTML component +Load and display a fragment -> Load and display a fragment +```js +const getCollections = () => new Promise(() => null) +const fragment = { + presentation: '<h2>This is a title</h2><p>This is some text</p>', +} - const getCollections = () => new Promise(() => null); - const fragment = { - presentation: '<h2>This is a title</h2><p>This is some text</p>' - }; - - <HTML - id="123" - fragment={fragment} - actions={{getCollections}}/> \ No newline at end of file +;<HTML id="123" fragment={fragment} actions={{ getCollections }} /> +``` diff --git a/packages/components/packages/HTML/HTML.scss b/packages/components/packages/HTML/HTML.scss deleted file mode 100644 index c3e4678886b0fc3bed2440a095381f327fb7cf3c..0000000000000000000000000000000000000000 --- a/packages/components/packages/HTML/HTML.scss +++ /dev/null @@ -1,16 +0,0 @@ -.fragment { - margin-left: auto; - margin-right: auto; - - @media (min-width: 768px) { - width: 750px; - } - - @media (min-width: 992px) { - width: 970px; - } - - @media (min-width: 1200px) { - width: 1170px; - } -} diff --git a/packages/components/packages/Login/Login.jsx b/packages/components/packages/Login/Login.jsx index 6a719356d5af1cdfaaa7cff3b36b5406e2008f90..1395334adf1d8f26b59ca6f3c78f244448d0a247 100644 --- a/packages/components/packages/Login/Login.jsx +++ b/packages/components/packages/Login/Login.jsx @@ -1,10 +1,19 @@ import React from 'react' import PropTypes from 'prop-types' -import { Link } from 'react-router-dom' import { Field } from 'redux-form' -import { Button, TextField } from '@pubsweet/ui' +import { + CenteredColumn, + ErrorText, + H1, + Link, + Button, + TextField, +} from '@pubsweet/ui' +import styled from 'styled-components' -import classes from './Login.local.scss' +// These enable tests to select components +const Signup = styled.div`` +const ResetPassword = styled.div`` const UsernameInput = props => <TextField label="Username" {...props.input} /> const PasswordInput = props => ( @@ -17,37 +26,33 @@ const Login = ({ signup = true, passwordReset = true, }) => ( - <div className={classes.root}> - <div className={classes.title}>Login</div> + <CenteredColumn small> + <H1>Login</H1> - {error && <div className={classes.error}>{error}</div>} + {error && <ErrorText>{error}</ErrorText>} - <form className={classes.form} onSubmit={handleSubmit}> + <form onSubmit={handleSubmit}> <Field component={UsernameInput} name="username" /> <Field component={PasswordInput} name="password" /> - <Button className={classes.button} primary type="submit"> + <Button primary type="submit"> Login </Button> </form> {signup && ( - <div className={classes.alternate}> - <span className={classes.message}>Don't have an account?</span> - <Link className={classes.link} to="/signup"> - Sign up - </Link> - </div> + <Signup> + <span>Don't have an account? </span> + <Link to="/signup">Sign up</Link> + </Signup> )} {passwordReset && ( - <div className={classes.alternate}> - <span className={classes.message}>Forgot your password?</span> - <Link className={classes.link} to="/password-reset"> - Reset password - </Link> - </div> + <ResetPassword> + <span>Forgot your password? </span> + <Link to="/password-reset">Reset password</Link> + </ResetPassword> )} - </div> + </CenteredColumn> ) Login.propTypes = { @@ -58,4 +63,8 @@ Login.propTypes = { passwordReset: PropTypes.bool, } +// used by tests +export { Login, ErrorText, Signup, ResetPassword } + +// used by consumers export default Login diff --git a/packages/components/packages/Login/Login.local.scss b/packages/components/packages/Login/Login.local.scss deleted file mode 100644 index a971e4e10139e5856356bb105ea60af967783aa8..0000000000000000000000000000000000000000 --- a/packages/components/packages/Login/Login.local.scss +++ /dev/null @@ -1,78 +0,0 @@ -.root { - font-family: 'Fira Sans Condensed', sans-serif; - margin: 0 auto; - width: 30ch; -} - -.title { - font-size: 2em; - margin-bottom: 1.2em; - text-align: left; -} - -.root input { - border: 0 none; - border-bottom: 1px dashed #aaa; - display: block; - font-family: 'Fira Sans', sans-serif; - padding: 0; - width: 100%; -} - -.form { - font-size: 0.8em; - margin-top: 1em; - - label { - cursor: text; - display: block; - font-style: italic; - text-transform: lowercase; - - &:hover { - color: var(--color-primary); - } - - input { - font-size: 1.3em; - line-height: 1; - margin-bottom: 3em; - margin-top: 0.6em; - } - } -} - -.root input:hover, -.root input:focus { - border-bottom: 1px dashed var(--color-primary); - border-color: transparent; - box-shadow: none; - outline-style: none; -} - -.button { - display: block; - margin-top: 1em; - padding: 0.4em 2em; -} - -.alternate { - color: #777; - font-size: 0.8em; - margin-top: 1.6em; - text-align: left; - - .message { - margin-right: 1ch; - } - - .link { - border-bottom: 1px solid currentcolor; - color: var(--color-primary); - cursor: pointer; - } -} - -.error { - color: red; -} diff --git a/packages/components/packages/Login/Login.md b/packages/components/packages/Login/Login.md new file mode 100644 index 0000000000000000000000000000000000000000..3cbb4bea0d2de62a0cb78e2d02a74ed14fe35d88 --- /dev/null +++ b/packages/components/packages/Login/Login.md @@ -0,0 +1,26 @@ +A login form + +```js +const { reduxForm } = require('redux-form') + +const LoginForm = reduxForm({ + form: 'login', + onSubmit: val => console.log(val), +})(Login) +;<LoginForm /> +``` + +Which can have an error message: + +```js +const { reduxForm, SubmissionError } = require('redux-form') + +const LoginForm = reduxForm({ + form: 'login-error', + onSubmit: val => { + console.log(val) + return Promise.reject(new SubmissionError({ _error: 'Error message' })) + }, +})(Login) +;<LoginForm /> +``` diff --git a/packages/components/packages/Login/Login.test.jsx b/packages/components/packages/Login/Login.test.jsx index 79cd883466a6144bdb2f986399e3409bef49f044..3249452fb29657e7527474208423fa7f731d1039 100644 --- a/packages/components/packages/Login/Login.test.jsx +++ b/packages/components/packages/Login/Login.test.jsx @@ -1,28 +1,28 @@ import { shallow } from 'enzyme' import React from 'react' -import Login from './Login' +import { Login, ErrorText, Signup, ResetPassword } from './Login' describe('<Login/>', () => { const makeWrapper = (props = {}) => shallow(<Login {...props} />) it('shows error', () => { const wrapper = makeWrapper({ error: 'Yikes!' }) - expect(wrapper.text()).toContain('Yikes!') + expect(wrapper.find(ErrorText)).toHaveLength(1) }) it('can hide sign up link', () => { const wrapper1 = makeWrapper() const wrapper2 = makeWrapper({ signup: false }) - expect(wrapper1.text()).toContain("Don't have an account?") - expect(wrapper2.text()).not.toContain("Don't have an account?") + expect(wrapper1.find(Signup)).toHaveLength(1) + expect(wrapper2.find(Signup)).toHaveLength(0) }) it('can hide password reset link', () => { const wrapper1 = makeWrapper() const wrapper2 = makeWrapper({ passwordReset: false }) - expect(wrapper1.text()).toContain('Forgot your password?') - expect(wrapper2.text()).not.toContain('Forgot your password?') + expect(wrapper1.find(ResetPassword)).toHaveLength(1) + expect(wrapper2.find(ResetPassword)).toHaveLength(0) }) it('triggers submit handler', () => { diff --git a/packages/components/packages/Login/package.json b/packages/components/packages/Login/package.json index 05ddbea85b5692ed07957d08f36766da36b80dd2..f6dc45d29727e65fff9c76989bb97455613fa4e5 100644 --- a/packages/components/packages/Login/package.json +++ b/packages/components/packages/Login/package.json @@ -7,7 +7,6 @@ "license": "MIT", "dependencies": { "prop-types": "^15.5.10", - "react-bootstrap": "^0.32.0", "react-redux": "^5.0.6", "react-router-dom": "^4.2.2", "react-router-redux": "^5.0.0-alpha.9", diff --git a/packages/components/packages/PasswordResetFrontend/PasswordReset.jsx b/packages/components/packages/PasswordResetFrontend/PasswordReset.jsx index 9e9f5de8ead6fb437a976762256d67ad6d7b96f5..a8d230831479954f63d1a8374d00231acb48ba63 100644 --- a/packages/components/packages/PasswordResetFrontend/PasswordReset.jsx +++ b/packages/components/packages/PasswordResetFrontend/PasswordReset.jsx @@ -1,19 +1,19 @@ import React from 'react' import { Link, withRouter } from 'react-router-dom' import PropTypes from 'prop-types' -import { - Grid, - Row, - Col, - Alert, - FormGroup, - ControlLabel, - Button, - FormControl, -} from 'react-bootstrap' import queryString from 'query-string' +import styled from 'styled-components' +import { TextField, Button, th } from '@pubsweet/ui' import * as api from 'pubsweet-client/src/helpers/api' -import styles from './PasswordReset.local.scss' + +const Root = styled.div` + margin: 0 auto; + width: 40ch; +` + +const Alert = styled.div` + color: ${th('colorError')}; +` class PasswordReset extends React.Component { constructor(props) { @@ -137,12 +137,10 @@ class PasswordReset extends React.Component { const { username, emailSent, - emailError, emailErrorMessage, emailSending, password, passwordChanged, - passwordError, passwordErrorMessage, passwordSending, } = this.state @@ -152,7 +150,7 @@ class PasswordReset extends React.Component { const buildForm = () => { if (passwordChanged) { return ( - <Alert bsStyle="success"> + <Alert> Your password has been changed, you can now{' '} <Link to="/login">login with the new password</Link>. </Alert> @@ -164,27 +162,17 @@ class PasswordReset extends React.Component { return ( <form onSubmit={this.handlePasswordSubmit}> - <FormGroup validationState={passwordError ? 'error' : 'success'}> - <ControlLabel>New password</ControlLabel> - - <FormControl - onChange={this.handlePasswordChange} - placeholder="Enter a new password…" - type="password" - value={password} - /> - </FormGroup> - - <div> - <Button - block - bsStyle="primary" - disabled={passwordSending} - type="submit" - > - {passwordSending ? 'Saving…' : 'Save new password'} - </Button> - </div> + <TextField + label="New password" + onChange={this.handlePasswordChange} + placeholder="Enter a new password…" + type="password" + value={password} + /> + + <Button disabled={passwordSending} type="submit"> + {passwordSending ? 'Saving…' : 'Save new password'} + </Button> </form> ) } @@ -201,27 +189,16 @@ class PasswordReset extends React.Component { return ( <form onSubmit={this.handleUsernameSubmit}> - <FormGroup validationState={emailError ? 'error' : 'success'}> - <ControlLabel>Username</ControlLabel> - - <FormControl - onChange={this.handleUsernameChange} - placeholder="Enter your username" - type="text" - value={username} - /> - </FormGroup> - - <div> - <Button - block - bsStyle="primary" - disabled={emailSending} - type="submit" - > - {emailSending ? 'Sending…' : 'Send email'} - </Button> - </div> + <TextField + label="Username" + onChange={this.handleUsernameChange} + placeholder="Enter your username" + type="text" + value={username} + /> + <Button disabled={emailSending} type="submit"> + {emailSending ? 'Sending…' : 'Send email'} + </Button> </form> ) } @@ -259,37 +236,16 @@ class PasswordReset extends React.Component { } return ( - <div className="bootstrap" style={{ marginTop: 20 }}> - <Grid> - <Row> - <Col md={2} mdOffset={5}> - <img - alt="pubsweet-logo" - className={styles.logo} - src="/assets/pubsweet-rgb-small.jpg" - style={{ maxWidth: '100%' }} - /> - </Col> - </Row> - - <Row> - <Col md={4}> - {buildError(emailErrorMessage)} - {buildError(passwordErrorMessage)} - </Col> - - <Col className={styles.passwordReset} md={4} xs={12}> - <h1>Password reset</h1> - - {buildForm()} - - <div style={{ marginTop: 20 }}> - <Link to="/login">Return to login form</Link> - </div> - </Col> - </Row> - </Grid> - </div> + <Root> + {buildError(emailErrorMessage)} + {buildError(passwordErrorMessage)} + + <h1>Password reset</h1> + + {buildForm()} + + <Link to="/login">Return to login form</Link> + </Root> ) } } diff --git a/packages/components/packages/PasswordResetFrontend/PasswordReset.local.scss b/packages/components/packages/PasswordResetFrontend/PasswordReset.local.scss deleted file mode 100644 index 9ad02b6f44bac4527c792a3a66492f0f6270122e..0000000000000000000000000000000000000000 --- a/packages/components/packages/PasswordResetFrontend/PasswordReset.local.scss +++ /dev/null @@ -1 +0,0 @@ -// This file is meant to be overridden by the styles provided by pubsweet-theme-plugin (this way of theming is deprecated) diff --git a/packages/components/packages/PasswordResetFrontend/package.json b/packages/components/packages/PasswordResetFrontend/package.json index b5a0877b1a9225f2e09521d2bbf4fa705e935204..278165dc6129489380802354c5e773582eb00030 100644 --- a/packages/components/packages/PasswordResetFrontend/package.json +++ b/packages/components/packages/PasswordResetFrontend/package.json @@ -6,10 +6,11 @@ "author": "Collaborative Knowledge Foundation", "license": "MIT", "dependencies": { + "@pubsweet/ui": "^2.0.0", "prop-types": "^15.5.10", "query-string": "^5.0.0", - "react-bootstrap": "^0.32.0", - "react-router": "^4.2.0" + "react-router": "^4.2.0", + "styled-components": "^2.4.0" }, "peerDependencies": { "pubsweet-client": ">=1.0.0", diff --git a/packages/components/packages/PostsManager/Post.jsx b/packages/components/packages/PostsManager/Post.jsx index 34a9d7ac6598150137e92cc8b197592ae7aa3962..e01bd32a2e671b2763339399c221804184337f6d 100644 --- a/packages/components/packages/PostsManager/Post.jsx +++ b/packages/components/packages/PostsManager/Post.jsx @@ -1,16 +1,14 @@ import React from 'react' +import { withRouter } from 'react-router' import PropTypes from 'prop-types' -import { Button } from 'react-bootstrap' -import { LinkContainer } from 'react-router-bootstrap' +import { Button, EditableValue } from '@pubsweet/ui' import Authorize from 'pubsweet-client/src/helpers/Authorize' -import TextInput from './TextInput' -import styles from './Post.local.scss' -export default class Post extends React.Component { +class Post extends React.Component { constructor(props) { super(props) - this.onSave = this.onSave.bind(this) + this.onUpdateTitle = this.onUpdateTitle.bind(this) this.onPublish = this.onPublish.bind(this) this.onUnpublish = this.onUnpublish.bind(this) this.onDestroyClick = this.onDestroyClick.bind(this) @@ -21,7 +19,7 @@ export default class Post extends React.Component { } } - onSave(title) { + onUpdateTitle(title) { this.props.update( this.props.blog, Object.assign(this.props.blogpost, { @@ -59,40 +57,18 @@ export default class Post extends React.Component { render() { const { blogpost, number } = this.props - let input - if (this.state.isEditing) { - input = ( - <TextInput - className="edit" - onSave={this.onSave} - value={blogpost.title} - /> - ) - } let changePublished if (!blogpost.published) { changePublished = ( - <Button - aria-label="Publish" - bsStyle="success" - className={styles.button} - onClick={this.onPublish} - title="Publish" - > - <i className="fa fa-paper-plane-o" /> + <Button onClick={this.onPublish} plain> + Publish </Button> ) } else { changePublished = ( - <Button - aria-label="Unpublish" - bsStyle="warning" - className={styles.button} - onClick={this.onUnpublish} - title="Unpublish" - > - <i className="fa fa-chain-broken" /> + <Button onClick={this.onUnpublish} plain> + Unpublish </Button> ) } @@ -103,30 +79,29 @@ export default class Post extends React.Component { return ( <tr key={blogpost.key}> - <td className="index">{number}</td> - <td className="main"> - <label onDoubleClick={this.onDoubleClick}>{blogpost.title}</label> - {input} + <td>{number}</td> + <td> + <EditableValue + onSave={this.onUpdateTitle} + required + value={this.props.blogpost.title} + /> </td> <td>{blogpost.owners.map(owner => owner.username).join(', ')}</td> - <td className={blogpost.published ? 'published' : 'unpublished'}> - <i className="fa fa-circle" /> ({blogpost.published - ? 'Published' - : 'Unpublished'}) <br /> + <td> + {blogpost.published ? 'Published' : 'Unpublished'} <br /> {blogpost.published_at} </td> <td> <Authorize object={blogpost} operation="PATCH"> - <LinkContainer to={`/manage/sciencewriter/${blogpost.id}`}> - <Button - aria-label="Edit" - bsStyle="primary" - className={styles.button} - title="Edit" - > - <i className="fa fa-pencil" /> - </Button> - </LinkContainer> + <Button + onClick={() => + this.props.history.push(`/manage/sciencewriter/${blogpost.id}`) + } + plain + > + Edit + </Button> </Authorize> <Authorize object={blogpost} operation="PATCH"> @@ -134,14 +109,8 @@ export default class Post extends React.Component { </Authorize> <Authorize object={blogpost} operation="DELETE"> - <Button - aria-label="Delete" - bsStyle="danger" - className={styles.button} - onClick={this.onDestroyClick} - title="Delete" - > - <i className="fa fa-trash-o" /> + <Button onClick={this.onDestroyClick} plain> + Delete </Button> </Authorize> </td> @@ -157,3 +126,5 @@ Post.propTypes = { delete: PropTypes.func, update: PropTypes.func, } + +export default withRouter(Post) diff --git a/packages/components/packages/PostsManager/Post.local.scss b/packages/components/packages/PostsManager/Post.local.scss deleted file mode 100644 index f56466406783395f795103a7405b06ebc7d1800d..0000000000000000000000000000000000000000 --- a/packages/components/packages/PostsManager/Post.local.scss +++ /dev/null @@ -1,3 +0,0 @@ -.button { - margin-right: 5px !important; -} diff --git a/packages/components/packages/PostsManager/PostCreator.jsx b/packages/components/packages/PostsManager/PostCreator.jsx index 85ae46699bf654f142165227089421337b8259ad..a03d17783375948f30d37ae69ffc216ea77b99b9 100644 --- a/packages/components/packages/PostsManager/PostCreator.jsx +++ b/packages/components/packages/PostsManager/PostCreator.jsx @@ -1,16 +1,23 @@ import React from 'react' import PropTypes from 'prop-types' -import { Button } from 'react-bootstrap' -import FormGroup from 'pubsweet-component-form-group/FormGroup' +import { Button, TextField } from '@pubsweet/ui' export default class PostCreator extends React.Component { constructor(props) { super(props) this.onSave = this.onSave.bind(this) + this.onTitleChange = this.onTitleChange.bind(this) + this.state = { title: '' } } - onSave(text) { - const title = this.titleInputNode.value + onTitleChange(event) { + this.setState({ title: event ? event.target.value : '' }) + } + + onSave(event) { + event.preventDefault() + + const { title } = this.state if (title !== '') { this.props.create({ @@ -18,32 +25,24 @@ export default class PostCreator extends React.Component { title, published: false, }) + this.setState({ title: '' }) } - - this.titleInputNode.blur() } + render() { return ( - <div> + <form onSubmit={this.onSave}> <h3>Create a new blog post</h3> - <FormGroup - controlId="fragment.title" - inputRef={input => { - this.titleInputNode = input - }} + <TextField label="Title" - modelProperty="fragment.title" + name="title" + onChange={this.onTitleChange} placeholder="One fine day..." + required + value={this.state.title} /> - <Button - aria-label="Create" - bsStyle="primary" - onClick={this.onSave} - title="Create" - > - <i className="fa fa-plus" /> Create - </Button> - </div> + <Button type="submit">Create</Button> + </form> ) } } diff --git a/packages/components/packages/PostsManager/PostCreator.scss b/packages/components/packages/PostsManager/PostCreator.scss deleted file mode 100644 index 9ad02b6f44bac4527c792a3a66492f0f6270122e..0000000000000000000000000000000000000000 --- a/packages/components/packages/PostsManager/PostCreator.scss +++ /dev/null @@ -1 +0,0 @@ -// This file is meant to be overridden by the styles provided by pubsweet-theme-plugin (this way of theming is deprecated) diff --git a/packages/components/packages/PostsManager/PostList.jsx b/packages/components/packages/PostsManager/PostList.jsx index a06e3530ca63eb4064476baf420c63a12717c13f..cfe0058228596bb41b6a5e3e6cdf5896b114bf78 100644 --- a/packages/components/packages/PostsManager/PostList.jsx +++ b/packages/components/packages/PostsManager/PostList.jsx @@ -2,8 +2,6 @@ import React from 'react' import PropTypes from 'prop-types' import Post from './Post' -import styles from './PostList.scss' - const PostList = props => { const blogposts = props.blogposts.map((blogpost, key) => { const id = blogpost.id ? blogpost.id : key + 1 @@ -20,12 +18,12 @@ const PostList = props => { ) }) return ( - <div className={styles.list}> - <table className="table table-hover"> + <div> + <table> <thead> <tr> - <th className="index">#</th> - <th className="main">Title</th> + <th>#</th> + <th>Title</th> <th>Author</th> <th>Status</th> <th>Actions</th> diff --git a/packages/components/packages/PostsManager/PostList.scss b/packages/components/packages/PostsManager/PostList.scss deleted file mode 100644 index 9ad02b6f44bac4527c792a3a66492f0f6270122e..0000000000000000000000000000000000000000 --- a/packages/components/packages/PostsManager/PostList.scss +++ /dev/null @@ -1 +0,0 @@ -// This file is meant to be overridden by the styles provided by pubsweet-theme-plugin (this way of theming is deprecated) diff --git a/packages/components/packages/PostsManager/PostsManager.jsx b/packages/components/packages/PostsManager/PostsManager.jsx index e63509ae57cfc362917257776b8df4f84d430100..8ba6e3cfcd59f48802861f3709d6017de855463d 100644 --- a/packages/components/packages/PostsManager/PostsManager.jsx +++ b/packages/components/packages/PostsManager/PostsManager.jsx @@ -1,10 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import { Grid, Alert } from 'react-bootstrap' import Authorize from 'pubsweet-client/src/helpers/Authorize' import PostList from './PostList' import PostCreator from './PostCreator' -import styles from './PostsManager.local.scss' export default class PostsManager extends React.Component { componentWillMount() { @@ -19,37 +17,27 @@ export default class PostsManager extends React.Component { if (Array.isArray(blogposts) && blog) { return ( - <div className="bootstrap"> - <div className={styles.container}> - <Grid> - <Authorize - object={blog} - operation="GET" - unauthorized={ - <Alert bsStyle="warning"> - You are not authorized to view this page. - </Alert> - } - > - <div> - {error ? <Alert bsStyle="warning">{error}</Alert> : null} - <h2 className={styles.header}>{blog && blog.title}</h2> - <h3 className={styles.header}>blog posts</h3> - <PostList - blog={blog} - blogposts={blogposts} - currentUser={currentUser} - delete={actions.deleteFragment} - update={actions.updateFragment} - /> - <Authorize object={blog} operation="POST"> - <PostCreator create={createBlogpost} /> - </Authorize> - </div> - </Authorize> - </Grid> + <Authorize + object={blog} + operation="GET" + unauthorized={<div>You are not authorized to view this page.</div>} + > + <div> + {error ? <div>{error}</div> : null} + <h2>{blog && blog.title}</h2> + <h3>blog posts</h3> + <PostList + blog={blog} + blogposts={blogposts} + currentUser={currentUser} + delete={actions.deleteFragment} + update={actions.updateFragment} + /> + <Authorize object={blog} operation="POST"> + <PostCreator create={createBlogpost} /> + </Authorize> </div> - </div> + </Authorize> ) } diff --git a/packages/components/packages/PostsManager/PostsManager.local.scss b/packages/components/packages/PostsManager/PostsManager.local.scss deleted file mode 100644 index 9ad02b6f44bac4527c792a3a66492f0f6270122e..0000000000000000000000000000000000000000 --- a/packages/components/packages/PostsManager/PostsManager.local.scss +++ /dev/null @@ -1 +0,0 @@ -// This file is meant to be overridden by the styles provided by pubsweet-theme-plugin (this way of theming is deprecated) diff --git a/packages/components/packages/PostsManager/TextInput.js b/packages/components/packages/PostsManager/TextInput.js deleted file mode 100644 index 168ddf3dd4a440a235bea8c42d333188b827d829..0000000000000000000000000000000000000000 --- a/packages/components/packages/PostsManager/TextInput.js +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' - -const ENTER_KEY_CODE = 13 - -export default class TextInput extends React.Component { - constructor(props) { - super(props) - this._save = this._save.bind(this) - this._onChange = this._onChange.bind(this) - this._onKeyDown = this._onKeyDown.bind(this) - this.state = { - value: this.props.value || '', - } - } - - _save() { - this.props.onSave(this.state.value) - this.setState({ - value: '', - }) - } - - _onChange(event) { - this.setState({ - value: event.target.value, - }) - } - - _onKeyDown(event) { - if (event.keyCode === ENTER_KEY_CODE) { - this._save() - } - } - - render() { - return ( - <input - // eslint-disable-next-line jsx-a11y/no-autofocus - autoFocus - className={this.props.className} - id={this.props.id} - onChange={this._onChange} - onKeyDown={this._onKeyDown} - placeholder={this.props.placeholder} - value={this.state.value} - /> - ) - } -} - -TextInput.propTypes = { - className: PropTypes.string, - id: PropTypes.string, - placeholder: PropTypes.string, - onSave: PropTypes.func.isRequired, - value: PropTypes.string, -} diff --git a/packages/components/packages/PostsManager/package.json b/packages/components/packages/PostsManager/package.json index d8e60a0c086f0bc85f69708522299c6db7e61538..70f3075072295850ded1c5e2f6b1089220dbeded 100644 --- a/packages/components/packages/PostsManager/package.json +++ b/packages/components/packages/PostsManager/package.json @@ -6,12 +6,11 @@ "author": "Collaborative Knowledge Foundation", "license": "MIT", "dependencies": { + "@pubsweet/ui": "^2.0.0", "prop-types": "^15.5.10", - "pubsweet-component-form-group": "^1.0.2", - "react-bootstrap": "^0.32.0", + "pubsweet-component-form-group": "^1.0.0", "react-dom": "^16.2.0", "react-redux": "^5.0.6", - "react-router-bootstrap": "^0.24.4", "react-router-dom": "^4.2.2", "redux": "^3.7.2" }, diff --git a/packages/components/packages/Signup/Signup.jsx b/packages/components/packages/Signup/Signup.jsx index b12efd5e11350c5626d745aaba949d0a5e002d51..e6c5bc700d0f2415cecf50ec3f8201d9042dcb28 100644 --- a/packages/components/packages/Signup/Signup.jsx +++ b/packages/components/packages/Signup/Signup.jsx @@ -1,8 +1,13 @@ import React from 'react' import { Field } from 'redux-form' -import { Link } from 'react-router-dom' -import { Button, TextField } from '@pubsweet/ui' -import classes from './Signup.local.scss' +import { + CenteredColumn, + Link, + H1, + ErrorText, + Button, + TextField, +} from '@pubsweet/ui' const UsernameInput = props => <TextField label="Username" {...props.input} /> const EmailInput = props => ( @@ -13,27 +18,25 @@ const PasswordInput = props => ( ) const Signup = ({ error, handleSubmit }) => ( - <div className={classes.root}> - <div className={classes.title}>Sign up</div> + <CenteredColumn small> + <H1>Sign up</H1> - {error && <div className={classes.error}>{error}</div>} + {error && <ErrorText>{error}</ErrorText>} - <form className={classes.form} onSubmit={handleSubmit}> + <form onSubmit={handleSubmit}> <Field component={UsernameInput} name="username" /> <Field component={EmailInput} name="email" /> <Field component={PasswordInput} name="password" /> - <Button className={classes.button} primary type="submit"> + <Button primary type="submit"> Sign up </Button> </form> - <div className={classes.alternate}> - <span className={classes.message}>Already have an account?</span> - <Link className={classes.link} to="/login"> - Login - </Link> + <div> + <span>Already have an account? </span> + <Link to="/login">Login</Link> </div> - </div> + </CenteredColumn> ) export default Signup diff --git a/packages/components/packages/Signup/Signup.local.scss b/packages/components/packages/Signup/Signup.local.scss deleted file mode 100644 index a971e4e10139e5856356bb105ea60af967783aa8..0000000000000000000000000000000000000000 --- a/packages/components/packages/Signup/Signup.local.scss +++ /dev/null @@ -1,78 +0,0 @@ -.root { - font-family: 'Fira Sans Condensed', sans-serif; - margin: 0 auto; - width: 30ch; -} - -.title { - font-size: 2em; - margin-bottom: 1.2em; - text-align: left; -} - -.root input { - border: 0 none; - border-bottom: 1px dashed #aaa; - display: block; - font-family: 'Fira Sans', sans-serif; - padding: 0; - width: 100%; -} - -.form { - font-size: 0.8em; - margin-top: 1em; - - label { - cursor: text; - display: block; - font-style: italic; - text-transform: lowercase; - - &:hover { - color: var(--color-primary); - } - - input { - font-size: 1.3em; - line-height: 1; - margin-bottom: 3em; - margin-top: 0.6em; - } - } -} - -.root input:hover, -.root input:focus { - border-bottom: 1px dashed var(--color-primary); - border-color: transparent; - box-shadow: none; - outline-style: none; -} - -.button { - display: block; - margin-top: 1em; - padding: 0.4em 2em; -} - -.alternate { - color: #777; - font-size: 0.8em; - margin-top: 1.6em; - text-align: left; - - .message { - margin-right: 1ch; - } - - .link { - border-bottom: 1px solid currentcolor; - color: var(--color-primary); - cursor: pointer; - } -} - -.error { - color: red; -} diff --git a/packages/components/packages/Signup/Signup.md b/packages/components/packages/Signup/Signup.md new file mode 100644 index 0000000000000000000000000000000000000000..6ba7e53aba41eb4e195bf18eeeb1a3197de0f3d0 --- /dev/null +++ b/packages/components/packages/Signup/Signup.md @@ -0,0 +1,26 @@ +A login form + +```js +const { reduxForm } = require('redux-form') + +const SignupForm = reduxForm({ + form: 'signup', + onChange: values => console.log(values), +})(Signup) +;<SignupForm /> +``` + +Which can have an error message: + +```js +const { reduxForm, SubmissionError } = require('redux-form') + +const SignupForm = reduxForm({ + form: 'signup-error', + onSubmit: val => { + console.log(val) + return Promise.reject(new SubmissionError({ _error: 'Error message' })) + }, +})(Signup) +;<SignupForm /> +``` diff --git a/packages/components/packages/TeamsManager/Team.jsx b/packages/components/packages/TeamsManager/Team.jsx index 972915804ce1648cfd3b24255feac3ae09b04f47..17771fd4f1ca3dd873fc6bdb1ac475d4fdd76d04 100644 --- a/packages/components/packages/TeamsManager/Team.jsx +++ b/packages/components/packages/TeamsManager/Team.jsx @@ -1,8 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import Select from 'react-select' -import 'react-select/dist/react-select.css' -import { Button } from 'react-bootstrap' +import { Button, Menu } from '@pubsweet/ui' class Team extends React.Component { constructor(props) { @@ -30,7 +28,7 @@ class Team extends React.Component { })) return ( - <tr className="team"> + <tr> <td>{number}</td> <td>{team.name}</td> <td> @@ -40,7 +38,8 @@ class Team extends React.Component { {team.object.type} {team.object.id} </td> <td> - <Select + <Menu + inline multi name="members" onChange={this.updateMembers} @@ -49,14 +48,7 @@ class Team extends React.Component { /> </td> <td> - <Button - aria-label="Delete" - bsStyle="danger" - onClick={this.onDelete} - title="Delete" - > - <i className="fa fa-trash-o" /> - </Button> + <Button onClick={this.onDelete}>Delete</Button> </td> </tr> ) diff --git a/packages/components/packages/TeamsManager/TeamCreator.jsx b/packages/components/packages/TeamsManager/TeamCreator.jsx index 4fa4627d868483902c221034d14d4bcf64286af5..5ccdea05cd7469383d7fbc1efe3940fb8ef58426 100644 --- a/packages/components/packages/TeamsManager/TeamCreator.jsx +++ b/packages/components/packages/TeamsManager/TeamCreator.jsx @@ -1,8 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import { FormControl, Button, Row, Col } from 'react-bootstrap' -import Select from 'react-select' -import 'react-select/dist/react-select.css' +import { Button, Menu, TextField } from '@pubsweet/ui' export default class TeamCreator extends React.Component { constructor(props) { @@ -41,19 +39,24 @@ export default class TeamCreator extends React.Component { }, members: [], }) + this.setState({ + teamName: '', + collectionSelected: null, + teamTypeSelected: null, + }) } } onNameChange(event) { - this.setState({ teamName: event ? event.target.value : null }) + this.setState({ teamName: event ? event.target.value : '' }) } - onCollectionSelect(collection) { - this.setState({ collectionSelected: collection ? collection.value : null }) + onCollectionSelect(collectionId) { + this.setState({ collectionSelected: collectionId || null }) } onTeamTypeSelect(teamType) { - this.setState({ teamTypeSelected: teamType ? teamType.value : null }) + this.setState({ teamTypeSelected: teamType || null }) } render() { @@ -72,45 +75,31 @@ export default class TeamCreator extends React.Component { return ( <form onSubmit={this.onSave}> <h3>Create a new team</h3> - <FormControl + <TextField label="Name" name="teamName" onChange={this.onNameChange} placeholder="Team Awesome" required - type="text" + value={this.state.teamName} + /> + <h4>Team type</h4> + <Menu + name="teamType" + onChange={this.onTeamTypeSelect} + options={types} + required + value={this.state.teamTypeSelected} + /> + <h4>Collection</h4> + <Menu + name="collection" + onChange={this.onCollectionSelect} + options={collections} + required + value={this.state.collectionSelected} /> - <Row> - <Col md={3}> - <h4>Team type</h4> - <Select - name="teamType" - onChange={this.onTeamTypeSelect} - options={types} - required - value={this.state.teamTypeSelected} - /> - </Col> - <Col md={9}> - <h4>Collection</h4> - <Select - name="collection" - onChange={this.onCollectionSelect} - options={collections} - required - value={this.state.collectionSelected} - /> - </Col> - </Row> - <br /> - <Button - aria-label="Create" - bsStyle="primary" - title="Create" - type="submit" - > - <i className="fa fa-plus" /> Create - </Button> + <Button type="submit">Create</Button> </form> ) } diff --git a/packages/components/packages/TeamsManager/TeamsManager.jsx b/packages/components/packages/TeamsManager/TeamsManager.jsx index 1017ab19be89260d492ed61c8bb6f760e7413f1e..469e719500c9985779c5c361f0c3d3dfb2f5584d 100644 --- a/packages/components/packages/TeamsManager/TeamsManager.jsx +++ b/packages/components/packages/TeamsManager/TeamsManager.jsx @@ -1,6 +1,5 @@ import React from 'react' import PropTypes from 'prop-types' -import { Grid, Alert } from 'react-bootstrap' import config from 'config' import Team from './Team' @@ -18,41 +17,39 @@ export default class TeamsManager extends React.Component { if (teams && collections && users) { return ( - <div className="bootstrap pubsweet-component pubsweet-component-scroll"> - <Grid> - {error ? <Alert bsStyle="warning">{error}</Alert> : null} - <div> - <table className="table"> - <thead> - <tr> - <th>#</th> - <th>Name</th> - <th>Type</th> - <th>Object</th> - <th>Members</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - {teams.map((team, key) => ( - <Team - delete={actions.deleteTeam} - key={team.id} - number={key + 1} - team={team} - update={actions.updateTeam} - users={users} - /> - ))} - </tbody> - </table> - <TeamCreator - collections={collections} - create={actions.createTeam} - types={config.authsome.teams} - /> - </div> - </Grid> + <div> + {error ? <div>{error}</div> : null} + <div> + <table> + <thead> + <tr> + <th>#</th> + <th>Name</th> + <th>Type</th> + <th>Object</th> + <th>Members</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + {teams.map((team, key) => ( + <Team + delete={actions.deleteTeam} + key={team.id} + number={key + 1} + team={team} + update={actions.updateTeam} + users={users} + /> + ))} + </tbody> + </table> + <TeamCreator + collections={collections} + create={actions.createTeam} + types={config.authsome.teams} + /> + </div> </div> ) } diff --git a/packages/components/packages/TeamsManager/package.json b/packages/components/packages/TeamsManager/package.json index 5d39e83281a14ef034eb3aba78a302a8b0c96bff..a5f9522acb0211b1d0e1bc6179f256db888e2703 100644 --- a/packages/components/packages/TeamsManager/package.json +++ b/packages/components/packages/TeamsManager/package.json @@ -6,11 +6,10 @@ "author": "Collaborative Knowledge Foundation", "license": "MIT", "dependencies": { + "@pubsweet/ui": "^2.0.0", "prop-types": "^15.5.10", - "react-bootstrap": "^0.32.0", "react-dom": "^16.2.0", "react-redux": "^5.0.6", - "react-select": "^1.0.0-rc.10", "redux": "^3.7.2" }, "peerDependencies": { diff --git a/packages/components/styleguide.config.js b/packages/components/styleguide.config.js index 480071b7d9e725f876d85546c1b747f24b79abd4..ebcb484b3c248f802aa5d01e787b91d7c98756ba 100644 --- a/packages/components/styleguide.config.js +++ b/packages/components/styleguide.config.js @@ -1,13 +1,23 @@ module.exports = { + context: { + faker: 'faker', + }, styleguideComponents: { - Wrapper: require.resolve('./styleguidist/Wrapper.jsx'), + Wrapper: require.resolve('@pubsweet/styleguide/src/components/Wrapper'), + StyleGuideRenderer: require.resolve( + '@pubsweet/styleguide/src/components/StyleGuideRenderer', + ), }, components: 'packages/**/*.jsx', + skipComponentsWithoutExample: true, + serverPort: 6063, + title: 'PubSweet Components', ignore: [ '**/packages/Manage/**', '**/packages/InkBackend/**', '**/packages/PasswordResetBackend/**', '**/packages/MediumDraft/CustomImageSideButton.jsx', + '**/packages/FormGroup/FormGroup.jsx', '**/node_modules/**', '**/*.test.{js,jsx}', ], diff --git a/packages/components/styleguidist/Wrapper.jsx b/packages/components/styleguidist/Wrapper.jsx deleted file mode 100644 index 57ebf6f85a03ec90390654b79f146a30d4418c72..0000000000000000000000000000000000000000 --- a/packages/components/styleguidist/Wrapper.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { Provider } from 'react-redux' -import { createStore, applyMiddleware } from 'redux' -import thunk from 'redux-thunk' -import { BrowserRouter } from 'react-router-dom' - -const initialState = {} -const store = createStore(state => state, initialState, applyMiddleware(thunk)) - -const Wrapper = ({ children }) => ( - <BrowserRouter> - <Provider store={store}>{children}</Provider> - </BrowserRouter> -) - -Wrapper.propTypes = { - children: PropTypes.node, -} - -export default Wrapper diff --git a/packages/components/styleguidist/config.json b/packages/components/styleguidist/config.json deleted file mode 100644 index 8e30f6b1aca7e0a53f20373f61dfdd64d1b1ecdd..0000000000000000000000000000000000000000 --- a/packages/components/styleguidist/config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pubsweet-server": {}, - "pubsweet-client": { - "API_ENDPOINT": "" - } -} \ No newline at end of file diff --git a/packages/components/webpack.config.js b/packages/components/webpack.config.js index 7a7eed4f57450d88af2f949a0e375bdcac43e3a8..7305b52ffc7eef9adc0486a07feeab156a507e0a 100644 --- a/packages/components/webpack.config.js +++ b/packages/components/webpack.config.js @@ -1,61 +1,22 @@ const path = require('path') -const webpack = require('webpack') +const config = require('config') +const fs = require('fs-extra') -module.exports = { - module: { - rules: [ - { - test: /\.jsx?$/, - exclude: /node_modules\/(?!pubsweet-)/, - loader: 'babel-loader', - }, - { - test: /\.s?css$/, - exclude: /\.local\.s?css$/, - loader: [ - { loader: 'style-loader' }, - { loader: 'css-loader' }, - { loader: 'sass-loader' }, - ], - }, - { - test: /\.local\.s?css$/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: true, - importLoaders: 1, - }, - }, - 'sass-loader', - ], - }, - { - test: /\.woff|\.woff2|\.svg|.eot|\.ttf/, - loader: [ - { - loader: 'url-loader', - options: { - prefix: 'font', - limit: 1000, - }, - }, - ], - }, - ], - }, - resolve: { - alias: { - joi: 'joi-browser', - config: path.join(__dirname, 'styleguidist', 'config.json'), - }, - extensions: ['.js', '.jsx', '.json', '.scss'], +// can't use node-config in webpack so save whitelisted client config into the build and alias it below +const outputPath = path.resolve(__dirname, '_build', 'config') +fs.ensureDirSync(outputPath) +const clientConfigPath = path.join(outputPath, 'client-config.json') +fs.writeJsonSync(clientConfigPath, config, { spaces: 2 }) + +const makeWebpackConfig = require('@pubsweet/styleguide/src/webpack-config') + +const webpackConfig = makeWebpackConfig(__dirname) + +webpackConfig.resolve = { + alias: { + joi: 'joi-browser', + config: clientConfigPath, }, - plugins: [ - new webpack.DefinePlugin({ - PUBSWEET_COMPONENTS: JSON.stringify([]), - }), - ], } + +module.exports = webpackConfig diff --git a/packages/default-theme/package.json b/packages/default-theme/package.json index 88c585c5ed227f9606f413947349311cbadea650..57acfa4fa8bfc1c2ad93534394fa3791e3236a70 100644 --- a/packages/default-theme/package.json +++ b/packages/default-theme/package.json @@ -6,5 +6,11 @@ "license": "MIT", "publishConfig": { "access": "public" + }, + "dependencies": { + "styled-components": "^2.4.0", + "typeface-noto-sans": "^0.0.54", + "typeface-noto-serif": "^0.0.54", + "typeface-ubuntu-mono": "^0.0.54" } } diff --git a/packages/default-theme/src/index.js b/packages/default-theme/src/index.js index fa7d923d92608791a2878ed120b37a8d69cfe3f9..cc597cfa76525ce2f59d8f024ef58783d94d0758 100644 --- a/packages/default-theme/src/index.js +++ b/packages/default-theme/src/index.js @@ -1,3 +1,57 @@ -const theme = {} +/* eslint-disable import/extensions */ +import 'typeface-noto-sans' +import 'typeface-noto-serif' +import 'typeface-ubuntu-mono' -export default theme +export default { + /* Colors */ + colorBackground: 'white', + colorPrimary: '#205d86', + colorSecondary: '#e7e7e7', + colorQuiet: '#aaa', + colorFurniture: '#ccc', + colorBorder: '#aaa', + colorBackgroundHue: + '#f1f1f1' /* marginally darker shade of the app background so that it can be used to divide the interface when needed */, + colorSuccess: '#050', + colorError: '#b50000', + colorWarning: '#ffcc00', + colorText: '#333', + colorTextReverse: '#fff', + colorTextPlaceholder: '#595959', + + /* Text variables */ + fontInterface: "'Noto Sans'", + fontHeading: "'Noto Sans'", + fontReading: "'Noto Serif'", + fontWriting: "'Ubuntu mono'", + fontSizeBase: '18px', + fontSizeBaseSmall: '16px', + fontSizeHeading1: '36px', + fontSizeHeading2: '32px', + fontSizeHeading3: '29px', + fontSizeHeading4: '26px', + fontSizeHeading5: '23px', + fontSizeHeading6: '20px', + fontLineHeight: '32px', + + /* Spacing */ + gridUnit: '32px', + subGridUnit: '8px', + + /* Border */ + borderRadius: '8px', + borderWidth: '1px', + borderStyle: 'solid', + + /* Shadow (for tooltip) */ + boxShadow: '0 2px 4px 0 rgba(51, 51, 51, 0.3)', + + /* Transition */ + transitionDuration: '1s', + transitionDurationM: '0.5s', + transitionDurationS: '0.2s', + transitionDurationXs: '0.1s', + transitionTimingFunction: 'ease', + transitionDelay: '500ms', +} diff --git a/packages/elife-theme/CHANGELOG.md b/packages/elife-theme/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..7bdba4d920f6daaefc2cb9fadac156d83b0b0398 --- /dev/null +++ b/packages/elife-theme/CHANGELOG.md @@ -0,0 +1,12 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +<a name="0.1.0"></a> + +# 0.1.0 (2018-02-08) + +### Features + +* **theme:** add default theme package ([5231a56](https://gitlab.coko.foundation/pubsweet/pubsweet/commit/5231a56)) diff --git a/packages/elife-theme/README.md b/packages/elife-theme/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b1e2a9a6aa209244a06824deb0279fe15c77050b --- /dev/null +++ b/packages/elife-theme/README.md @@ -0,0 +1,145 @@ +# eLife Theme + +This theme is based on the values used by the eLife [pattern-library](https://github.com/elifesciences/pattern-library/blob/develop/assets/sass/_variables.scss): see the link for the latest version. + +The pattern-library values at time of writing are: + +```css +// Colors +$color-primary: #0288d1; +$color-primary-dark: #0277bd; +$color-primary-light: #b3e5fc; + +$color-text: #212121; +$color-text-secondary: #888; +$color-text-placeholder: #bdbdbd; +$color-text-dividers: #e0e0e0; +$color-text-ui-background: #fff; +$color-text-ui-background-hue: #f5f5f5; +$color-text-ui-code: #f7f7f7; + +$color-text--reverse: #fff; +$color-text-secondary--reverse: #9e9e9e; +// there is no $color-text-placeholder--reverse +$color-text-dividers--reverse: #616161; +$color-text-ui-background--reverse: #212121; +$color-text-ui-background-hue--reverse: #333; + +$color-information: #0288d1; +$color-success: #629f43; +$color-success-dark: #569037; +$color-attention: #cf0c4e; + +$color-overlay: rgba(0, 0, 0, 0.8); + +// Typography +$font-primary: Georgia, serif; +$font-secondary: 'Avenir Next Webfont', Arial, Helvetica, sans-serif; +$font-monospace: 'Courier 10 Pitch', Courier, monospace; +$font-size-base-in-px: 16; +$font-size-h1-in-px: 36; +$font-size-h2-in-px: 26; +$font-size-h3-in-px: 22; +$font-size-h4-in-px: 20; +$font-size-h5-in-px: 18; +$font-size-h6-in-px: 16; +$font-size-caption-in-px: 13; +$box-font-scaling-factor: 0.85; + +/* + * Baseline grid + */ +$blg-space-extra-small-in-px: 12; +$blg-space-small-in-px: $blg-space-extra-small-in-px * 2; +$blg-space-smallish-in-px: $blg-space-small-in-px * 1.5; +$blg-space-medium-in-px: $blg-space-small-in-px * 2; +$blg-space-large-in-px: $blg-space-small-in-px * 3; +$blg-space-extra-large-in-px: $blg-space-small-in-px * 5; + +// Widths +$max-width-grid-listing-item: 400; +$max-width-block-link: 600; +$max-width-image-link: $max-width-block-link; +$med-width-grid-listing-item: 263; +$min-width-grid-listing-item: 245; +$grid-listing-spacing-measure: $blg-space-smallish-in-px; + +$max-site-width: 1114; +$max-site-width-in-rem: get-rem-from-px($max-site-width); +$viewport-width-when-site-hits-max-width-in-px: 1245; +$viewport-width-when-site-hits-max-width-in-rem: get-rem-from-px( + $viewport-width-when-site-hits-max-width-in-px +); + +// Heights +$audio-player-height: 90; +// TODO: link name with blg spacing for 72px somehow? +$audio-player-height--js: 72; +$content-header-image-height--narrow-screen: 264; +$content-header-image-height--medium-width-screen: 288; +$content-header-image-height--wide-screen: 336; +$content-header-image-credit-height: 48; +$carousel-height: 400; + +$button-height-extra-small: 24; +$button-height-small: 36; +$button-height-regular: 48; + +// Widths +$content-header-download-width: 20; +$content-header-download-width-medium: 44; +$content-header-profile-width: 48; + +$button-speech-bubble-width-in-px: 42; + +// Spacing +$teaser-spacing-top: 23; +// 23 not 24 to account for a 1px border (Because of the way the elements are nested, border-box doesn't help us here.) +$teaser-spacing-bottom: 23; +$teaser-spacing-left: 16; +// TODO: link name with blg spacing for 72px somehow? +$listing-list-spacing: 72; + +$content-header-padding: 24; + +// TODO: rename these +$content-header-side-padding: 6; //vw +$content-header-side-padding--extra-wide: 30; //px + +// Breakpoints + +$bkpt-site--x-small: 320; +$bkpt-site--small: 480; +$bkpt-site--medium: 730; +$bkpt-site--wide: 900; +$bkpt-site--x-wide: 1200; + +// TODO: Replace the use of these with site breakpoints above +$bkpt-content-header--medium-width: $bkpt-site--medium; +$bkpt-content-header--wide: $bkpt-site--wide; +$bkpt-content-header--extra-wide: $bkpt-site--x-wide; + +//$bkpt-block-link: 600; +$bkpt-block-link: $bkpt-site--medium; +$bkpt-image-link: $bkpt-block-link; +$bkpt-grid-listing--narrow-screen: $bkpt-block-link; +$bkpt-grid-listing--medium-width: 882; +$bkpt-grid-link-listing--wide-screen: 1174; + +$bkpt-captioned-asset-caption: 430; +$bkpt-view-selector: $bkpt-site--x-wide; + +// TODO: review these breakpoints: +$bkpt-article-download-links-list: 560; +$bkpt-pull-quote: 560; +$bkpt-section-listing: $bkpt-site--x-wide; + +// Borders +$border-radius: 3; +$border-width: 1; + +// Animations +$transition-duration: 0.5s; +$transition-delay: 50ms; +$transition-timing-function: ease-in-out; +``` diff --git a/packages/elife-theme/package.json b/packages/elife-theme/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ff76a2a1fecf41bcf87df481928b37ef0c556952 --- /dev/null +++ b/packages/elife-theme/package.json @@ -0,0 +1,13 @@ +{ + "name": "@pubsweet/elife-theme", + "version": "0.0.1", + "description": "Theme for eLife apps", + "main": "src", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "styled-components": "^2.4.0" + } +} diff --git a/packages/elife-theme/src/fonts/249228f0-61ac-40cc-a5a5-5609c9816e3f.woff2 b/packages/elife-theme/src/fonts/249228f0-61ac-40cc-a5a5-5609c9816e3f.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..b153887186430c9608725b04b30d7773c186f54d Binary files /dev/null and b/packages/elife-theme/src/fonts/249228f0-61ac-40cc-a5a5-5609c9816e3f.woff2 differ diff --git a/packages/elife-theme/src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 b/packages/elife-theme/src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..abb3d33ca246f982481562dad22ddcf9abcacdfe Binary files /dev/null and b/packages/elife-theme/src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 differ diff --git a/packages/elife-theme/src/fonts/efba18ed-80cc-49c4-997a-fbb140739d19.woff b/packages/elife-theme/src/fonts/efba18ed-80cc-49c4-997a-fbb140739d19.woff new file mode 100755 index 0000000000000000000000000000000000000000..dfa6f202af9f15c3273f4cd565d8f0170ea60f18 Binary files /dev/null and b/packages/elife-theme/src/fonts/efba18ed-80cc-49c4-997a-fbb140739d19.woff differ diff --git a/packages/elife-theme/src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff b/packages/elife-theme/src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff new file mode 100755 index 0000000000000000000000000000000000000000..fdf59edc1267de03f004b8162a9b0182604dfa1f Binary files /dev/null and b/packages/elife-theme/src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff differ diff --git a/packages/elife-theme/src/fonts/index.css b/packages/elife-theme/src/fonts/index.css new file mode 100644 index 0000000000000000000000000000000000000000..cae6ea131e17c3f1dc3d636eb7f1161293641141 --- /dev/null +++ b/packages/elife-theme/src/fonts/index.css @@ -0,0 +1,14 @@ +/* Demi */ +@font-face { + font-family: 'Avenir Next Webfont'; + font-weight: 700; + src: url('249228f0-61ac-40cc-a5a5-5609c9816e3f.woff2') format('woff2'), + url('efba18ed-80cc-49c4-997a-fbb140739d19.woff') format('woff'); +} + +/* Medium */ +@font-face { + font-family: 'Avenir Next Webfont'; + src: url('627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2') format('woff2'), + url('f26faddb-86cc-4477-a253-1e1287684336.woff') format('woff'); +} diff --git a/packages/elife-theme/src/index.js b/packages/elife-theme/src/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f5f91bb4446d2830d0ad1bb3528e39460b0fdd0f --- /dev/null +++ b/packages/elife-theme/src/index.js @@ -0,0 +1,54 @@ +/* eslint-disable import/extensions */ +import './fonts/index.css' + +export default { + /* Colors */ + colorBackground: '#fff', + colorPrimary: '#0288d1', + colorSecondary: '#888', + colorFurniture: '#ccc', + colorBorder: '#aaa', + colorBackgroundHue: + '#f5f5f5' /* marginally darker shade of the app background so that it can be used to divide the interface when needed */, + colorSuccess: '#629f43', + colorError: '#b50000', + colorWarning: '#cf0c4e', + colorText: '#212121', + colorTextReverse: '#fff', + colorTextPlaceholder: '#bdbdbd', + + /* Text variables */ + fontInterface: 'Georgia, serif', + fontHeading: '"Avenir Next Webfont", Arial, Helvetica, sans-serif', + fontReading: 'Georgia, serif', + fontWriting: '"Courier 10 Pitch", Courier, monospace', + fontSizeBase: '16px', + fontSizeBaseSmall: '13px', + fontSizeHeading1: '36px', + fontSizeHeading2: '26px', + fontSizeHeading3: '22px', + fontSizeHeading4: '20px', + fontSizeHeading5: '18px', + fontSizeHeading6: '16px', + fontLineHeight: '32px', + + /* Spacing */ + gridUnit: '24px', + subGridUnit: '6px', + + /* Border */ + borderRadius: '3px', + borderWidth: '1px', + borderStyle: 'solid', + + /* Shadow (for tooltip) */ + boxShadow: '0 2px 4px 0 rgba(51, 51, 51, 0.3)', + + /* Transition */ + transitionDuration: '1s', + transitionDurationM: '0.5s', + transitionDurationS: '0.2s', + transitionDurationXs: '0.1s', + transitionTimingFunction: 'ease-in-out', + transitionDelay: '500ms', +} diff --git a/packages/styleguide/package.json b/packages/styleguide/package.json index ab54e05571672656815bf985c80ce103bee305d3..a3db1ea211959755e8cbc42dfecf7b5c7de37571 100644 --- a/packages/styleguide/package.json +++ b/packages/styleguide/package.json @@ -4,14 +4,17 @@ "files": ["src", "dist"], "main": "src", "dependencies": { - "@pubsweet/theme": "^0.1.3", + "@pubsweet/default-theme": "^0.1.0", + "@pubsweet/elife-theme": "^0.0.1", + "@pubsweet/ui": "^2.0.0", "react": "^16.2.0", "react-dom": "^16.2.0", "react-redux": "^5.0.2", "react-router-dom": "^4.2.2", "recompose": "^0.26.0", "redux": "^3.6.0", - "redux-form": "^7.0.3" + "redux-form": "^7.0.3", + "styled-components": "^2.4.0" }, "devDependencies": { "babel-core": "^6.26.0", diff --git a/packages/styleguide/src/components/StyleGuideRenderer.js b/packages/styleguide/src/components/StyleGuideRenderer.js index b1a65700dfd22533f14e9ac59fc07e47849c3114..04c73e1a0a19bc3db0e417281422856681b0e6df 100644 --- a/packages/styleguide/src/components/StyleGuideRenderer.js +++ b/packages/styleguide/src/components/StyleGuideRenderer.js @@ -1,18 +1,122 @@ import React from 'react' -import classes from './StyleGuideRenderer.local.scss' +import styled, { css, ThemeProvider } from 'styled-components' +import { Button, th } from '@pubsweet/ui' +import StyleRoot, { + injectGlobalStyles, +} from 'pubsweet-client/src/helpers/StyleRoot' +import defaultTheme from '@pubsweet/default-theme' -const StyleGuideRenderer = ({ title, children, toc }) => ( - <div className={classes.root}> - <div className={classes.sidebar}> - <header className={classes.header}> - <h1 className={classes.title}>{title}</h1> - </header> +injectGlobalStyles() - <nav className={classes.nav}>{toc}</nav> - </div> +const aDark = 'rgba(255, 0, 0, 0.2)' +const aLight = 'rgba(255, 69, 69, 0.1)' +const bDark = 'rgba(0, 121, 253, 0.2)' +const bLight = 'rgba(68, 158, 255, 0.1)' - <div className={classes.content}>{children}</div> - </div> -) +const grid = css` + div[data-preview] { + background-image: ${props => `repeating-linear-gradient( to bottom, + ${aDark}, + ${aDark} ${props.theme.subGridUnit}, + ${aLight} ${props.theme.subGridUnit}, + ${aLight} calc(2 * ${props.theme.subGridUnit}), + ${bDark} calc(2 * ${props.theme.subGridUnit}), + ${bDark} calc(3 * ${props.theme.subGridUnit}), + ${bLight} calc(3 * ${props.theme.subGridUnit}), + ${bLight} calc(4 * ${props.theme.subGridUnit}), + ${bDark} calc(4 * ${props.theme.subGridUnit}), + ${bDark} calc(5 * ${props.theme.subGridUnit}), + ${bLight} calc(5 * ${props.theme.subGridUnit}), + ${bLight} calc(6 * ${props.theme.subGridUnit}), + ${aDark} calc(6 * ${props.theme.subGridUnit}), + ${aDark} calc(7 * ${props.theme.subGridUnit}), + ${aLight} calc(7 * ${props.theme.subGridUnit}), + ${aLight} calc(8 * ${props.theme.subGridUnit}) + )`}; + border-color: white; + } +` + +const Root = styled.div` + display: grid; + grid-template-areas: 'side content'; + grid-template-columns: 1fr 3fr; + height: 100vh; + width: 100vw; +` + +const Sidebar = styled.div` + display: flex; + flex-direction: column; + grid-area: side; + overflow-y: hidden; +` + +const Header = styled.header` + padding: 0.5rem; +` + +const Title = styled.h1` + font-family: ${th('fontInterface')}; + font-size: ${th('fontSizeBase')}; + margin-bottom: 0; + padding: 0 1rem; +` + +const Content = styled.div` + grid-area: content; + overflow-y: auto; + padding: 1rem; + *[data-preview] { + padding: calc(${th('gridUnit')} / 2); + } + ${props => props.grid && grid}; +` + +const Nav = styled.nav` + flex: 1; + overflow-y: auto; + padding: 0.5rem; +` +const NarrowButton = styled(Button)` + margin: ${props => ` + 0 + calc(${props.theme.subGridUnit} * 6) + ${props.theme.subGridUnit} + calc(${props.theme.subGridUnit} * 4) + `}; +` + +class StyleGuideRenderer extends React.Component { + constructor() { + super() + this.state = { grid: false } + } + render() { + const { title, children, toc } = this.props + const GridToggle = () => ( + <NarrowButton onClick={() => this.setState({ grid: !this.state.grid })}> + Toggle Grid + </NarrowButton> + ) + + return ( + <ThemeProvider theme={defaultTheme}> + <StyleRoot> + <Root> + <Sidebar> + <Header> + <Title>{title}</Title> + </Header> + <GridToggle /> + <Nav>{toc}</Nav> + </Sidebar> + <Content grid={this.state.grid}>{children}</Content> + </Root> + </StyleRoot> + </ThemeProvider> + ) + } +} export default StyleGuideRenderer diff --git a/packages/styleguide/src/components/StyleGuideRenderer.local.scss b/packages/styleguide/src/components/StyleGuideRenderer.local.scss deleted file mode 100644 index bdd3e8097da381478d55ed6ac804cf701de0422d..0000000000000000000000000000000000000000 --- a/packages/styleguide/src/components/StyleGuideRenderer.local.scss +++ /dev/null @@ -1,37 +0,0 @@ -.root { - display: grid; - grid-template-areas: "side content"; - grid-template-columns: 1fr 3fr; - height: 100vh; - width: 100vw; -} - -.sidebar { - display: flex; - flex-direction: column; - grid-area: side; - overflow-y: hidden; -} - -.content { - grid-area: content; - overflow-y: auto; - padding: 1rem; -} - -.header { - padding: 0.5rem; -} - -.nav { - flex: 1; - overflow-y: auto; - padding: 0.5rem; -} - -.title { - font-family: "Fira Sans", sans-serif; - font-size: 1rem; - margin-bottom: 0; - padding: 0 1rem; -} diff --git a/packages/styleguide/src/components/Wrapper.js b/packages/styleguide/src/components/Wrapper.js index 11c73bf368d41cea6b986b9940854d8b158ae8c2..afd2d6a3a065ac3bf2fd2a54d7b0138282e2f49c 100644 --- a/packages/styleguide/src/components/Wrapper.js +++ b/packages/styleguide/src/components/Wrapper.js @@ -3,10 +3,8 @@ import { Provider } from 'react-redux' import { BrowserRouter as Router } from 'react-router-dom' import { reducer as formReducer } from 'redux-form' import { createStore, combineReducers } from 'redux' - -import '@pubsweet/theme' - -import classes from './Wrapper.local.scss' +import styled, { ThemeProvider } from 'styled-components' +import theme from '@pubsweet/default-theme' const rootReducer = combineReducers({ form: formReducer, @@ -17,11 +15,15 @@ const store = createStore( window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(), ) +const Root = styled.div`` + const Wrapper = ({ children }) => ( <Provider store={store}> - <Router> - <div className={classes.root}>{children}</div> - </Router> + <ThemeProvider theme={theme}> + <Router> + <Root>{children}</Root> + </Router> + </ThemeProvider> </Provider> ) diff --git a/packages/styleguide/src/components/Wrapper.local.scss b/packages/styleguide/src/components/Wrapper.local.scss deleted file mode 100644 index 7f3a1cd9c7537ff5770c04584c6c0372a5f0f062..0000000000000000000000000000000000000000 --- a/packages/styleguide/src/components/Wrapper.local.scss +++ /dev/null @@ -1,7 +0,0 @@ -:global(body) { - overflow: hidden; -} - -.root { - font-family: 'Fira Sans', sans-serif; -} diff --git a/packages/styleguide/src/webpack-config.js b/packages/styleguide/src/webpack-config.js index 102bd2e3eda4506e69b52106a69038283799e317..ef8080284deb876438c307c0346544ecf9b2ca2f 100644 --- a/packages/styleguide/src/webpack-config.js +++ b/packages/styleguide/src/webpack-config.js @@ -8,12 +8,14 @@ const webpack = require('webpack') module.exports = dir => { const include = [ path.join(dir, 'src'), + path.join(dir, 'packages'), /pubsweet-[^/]+\/src/, /xpub-[^/]+\/src/, /wax-[^/]+\/src/, /@pubsweet\/[^/]+\/src/, /styleguide\/src/, /ui\/src/, + /server\/src\/models/, ] return { @@ -28,7 +30,7 @@ module.exports = dir => { oneOf: [ // ES6 modules { - test: /\.js$/, + test: /\.jsx?$/, include, loader: 'babel-loader', options: { @@ -101,7 +103,7 @@ module.exports = dir => { // Files { - exclude: [/\.js$/, /\.html$/, /\.json$/], + exclude: [/\.jsx?$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/packages/ui/docs/colors.md b/packages/ui/docs/colors.md index 4f66808b4c9f6b308d598e21cc58ab723aa8de17..8d24a0e815d474445180b836a1a7463b8ad17b5e 100644 --- a/packages/ui/docs/colors.md +++ b/packages/ui/docs/colors.md @@ -2,44 +2,121 @@ CSS variables are used to define the theme's color scheme. ## Brand colors -`--color-primary` +`colorText` + +Default font color ```js -<div style={{ color: 'var(--color-primary)' }}> -{faker.lorem.sentence(5)} -</div> +const ColorText = require('styled-components').default.div` + color: ${props => props.theme.colorText}; +` +;<ColorText>{faker.lorem.sentence(5)}</ColorText> ``` -## Colors for interactions +`colorTextReverse` -`--color-danger` +Reverse font color ```js -<div style={{ color: 'var(--color-danger)' }}> -{faker.lorem.sentence(5)} -</div> +const ColorTextReverse = require('styled-components').default.div` + background-color: ${props => props.theme.colorText}; + color: ${props => props.theme.colorTextReverse}; +` +;<ColorTextReverse>{faker.lorem.sentence(5)}</ColorTextReverse> ``` -`--color-valid` +`colorPrimary` + +Indicates a primary call to action ```js -<div style={{ color: 'var(--color-valid)' }}> -{faker.lorem.sentence(5)} -</div> +const ColorPrimary = require('styled-components').default.div` + color: ${props => props.theme.colorPrimary}; +` +;<ColorPrimary>{faker.lorem.sentence(5)}</ColorPrimary> +``` + +`colorSecondary` + +Default color for non-primary actions + +```js +const ColorSecondary = require('styled-components').default.div` + color: ${props => props.theme.colorSecondary}; +` +;<ColorSecondary>{faker.lorem.sentence(5)}</ColorSecondary> ``` -`--color-warning` +`colorFurniture` + +Meant to be applied to elements that indicate content division ```js -<div style={{ color: 'var(--color-warning)' }}> -{faker.lorem.sentence(5)} +const Divider = require('styled-components').default.span` + color: ${props => props.theme.colorFurniture}; +` +;<div> + {faker.lorem.sentence(2)} + <Divider> | </Divider> + {faker.lorem.sentence(2)} + <Divider> | </Divider> + {faker.lorem.sentence(2)} </div> ``` -`--color-pending` +`colorBorder` + +For borders around form elements + +```js +<TextField inline value={faker.lorem.sentence(3)} /> +``` + +`colorTextPlaceholder` + +Used for text field placeholders ```js -<div style={{ color: 'var(--color-pending)' }}> -{faker.lorem.sentence(5)} +<TextField inline placeholder={faker.lorem.sentence(3)} /> +``` + +`colorBackgroundHue` + +Used to create a discrete contrast the default background color + +```js +const BackgroundHue = require('styled-components').default.div` + background-color: ${props => props.theme.colorBackgroundHue}; +` +;<div> + <div>{faker.lorem.sentence(5)}</div> + <BackgroundHue>{faker.lorem.sentence(5)}</BackgroundHue> + <div>{faker.lorem.sentence(5)}</div> + <BackgroundHue>{faker.lorem.sentence(5)}</BackgroundHue> + <div>{faker.lorem.sentence(5)}</div> </div> ``` + +## Colors for interactions + +`colorSuccess` + +Used to indicate a successful validation state + +```js +const ColorSuccess = require('styled-components').default.div` + color: ${props => props.theme.colorSuccess}; +` +;<ColorSuccess>{faker.lorem.sentence(5)}</ColorSuccess> +``` + +Used to indicate an error in validation + +`colorError` + +```js +const ColorError = require('styled-components').default.div` + color: ${props => props.theme.colorError}; +` +;<ColorError>{faker.lorem.sentence(5)}</ColorError> +``` diff --git a/packages/ui/docs/fonts.md b/packages/ui/docs/fonts.md index e3d69cb97261e1f84da01f2d5a58042a738a6025..988d1e1a3f8d8b9e438573cab55f7a9a4974b6bb 100644 --- a/packages/ui/docs/fonts.md +++ b/packages/ui/docs/fonts.md @@ -1,33 +1,37 @@ CSS variables are used to define font families. -`--font-author` +`fontInterface` ```js -<div style={{ fontFamily: 'var(--font-author)' }}> -{faker.lorem.sentence(5)} -</div> +const FontInterface = require('styled-components').default.div` + font-family: ${props => props.theme.fontInterface}; +` +;<FontInterface>{faker.lorem.sentence(5)}</FontInterface> ``` -`--font-reviewer` +`fontHeading` ```js -<div style={{ fontFamily: 'var(--font-reviewer)' }}> -{faker.lorem.sentence(5)} -</div> +const FontHeading = require('styled-components').default.div` + font-family: ${props => props.theme.fontHeading}; +` +;<FontHeading>{faker.lorem.sentence(5)}</FontHeading> ``` -`--font-interface` +`fontReading` ```js -<div style={{ fontFamily: 'var(--font-interface)' }}> -{faker.lorem.sentence(5)} -</div> +const FontReading = require('styled-components').default.div` + font-family: ${props => props.theme.fontReading}; +` +;<FontReading>{faker.lorem.sentence(5)}</FontReading> ``` -`--font-mono` +`fontWriting` ```js -<div style={{ fontFamily: 'var(--font-mono)' }}> -{faker.lorem.sentence(5)} -</div> +const FontWriting = require('styled-components').default.div` + font-family: ${props => props.theme.fontWriting}; +` +;<FontWriting>{faker.lorem.sentence(5)}</FontWriting> ``` diff --git a/packages/ui/package.json b/packages/ui/package.json index 2064e6360ee650cc24080091fb82b7c8dec30466..6a93eb09a8973966d49accc2ebac85b16b5995b0 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -22,7 +22,7 @@ "prop-types": "^15.5.10", "react": "^16.2.0", "react-dom": "^16.2.0", - "react-feather": "^1.0.7", + "react-feather": "^1.0.8", "react-redux": "^5.0.2", "react-router-dom": "^4.2.2", "react-tag-autocomplete": "^5.4.1", diff --git a/packages/ui/src/atoms/AlignmentBox.js b/packages/ui/src/atoms/AlignmentBox.js index f9481d5104aca098d73cff247399172e91b205e9..e1fd9ac62c0ed3e35b1353051531ff876fab9b72 100644 --- a/packages/ui/src/atoms/AlignmentBox.js +++ b/packages/ui/src/atoms/AlignmentBox.js @@ -7,7 +7,7 @@ const mainGrey = '#666' const whiteRGBA = 'rgba(255, 255, 255, 1)' const borderRule = position => props => ` - border-${position}-width: ${props.noBorder[position] ? '0' : '1px'}; + border-${position}-width: ${props.noBorder[position] ? '0' : '1px'} ` const Root = styled.div.attrs({ @@ -20,10 +20,12 @@ const Root = styled.div.attrs({ border-style: solid; border-color: ${mainGrey}; - ${borderRule('top')} ${borderRule('right')} ${borderRule( - 'bottom', - )} ${borderRule('left')} background-color: ${props => - props.active ? mainGrey : 'transparent'}; + ${borderRule('top')}; + ${borderRule('right')}; + ${borderRule('bottom')}; + ${borderRule('left')}; + + background-color: ${props => (props.active ? mainGrey : 'transparent')}; &:hover { background-color: ${lightGrey}; diff --git a/packages/ui/src/atoms/Attachment.js b/packages/ui/src/atoms/Attachment.js index 445adafd1223764fa86e5fff5873eb52cd9ace62..9bada7d52fa6a1f483072f6e128c282e4f8a8522 100644 --- a/packages/ui/src/atoms/Attachment.js +++ b/packages/ui/src/atoms/Attachment.js @@ -1,44 +1,59 @@ import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' import Icon from './Icon' const Filename = styled.span` - color: var(--color-primary); + color: ${props => + props.uploaded ? props.theme.colorPrimary : props.theme.colorSecondary}; display: inline-flex; overflow-wrap: break-word; padding: 0; word-break: break-all; ` -const IconContainer = styled.span` - --color-local: var(--color-primary); - --icon-size: 16px; +const uploadedIcon = ({ theme }) => ` + stroke: ${th('colorPrimary')}; + height: ${th('fontSizeBaseSmall')}; + width: ${th('fontSizeBaseSmall')}; +` - margin: 0.5em; +const uploadingIcon = ({ theme }) => ` + stroke: ${th('colorText')}; + height: ${th('fontSizeBase')}; + width: ${th('fontSizeBase')}; +` + +const IconContainer = styled.span` + margin: 0 ${th('subGridUnit')}; & svg { - height: var(--icon-size); - width: var(--icon-size); + ${props => (props.uploaded ? uploadedIcon : uploadingIcon)}; } ` const Root = styled.a` align-items: center; display: flex; - line-height: 1.15; text-decoration: none; &:hover ${Filename} { - text-decoration: underline; + text-decoration: ${props => (props.uploaded ? 'underline' : 'none')}; } ` -const Attachment = ({ value }) => ( - <Root download={value.name} href={value.url}> - <IconContainer> - <Icon color="var(--color-local)">paperclip</Icon> +const Attachment = ({ file, error, uploaded }) => ( + <Root + download={uploaded && file.name} + href={uploaded && file.url} + uploaded={uploaded} + > + <IconContainer uploaded={uploaded}> + <Icon>paperclip</Icon> </IconContainer> - <Filename>{value.name}</Filename> + <Filename uploaded={uploaded}> + {error || (uploaded ? file.name : 'Uploading...')} + </Filename> </Root> ) diff --git a/packages/ui/src/atoms/Attachment.md b/packages/ui/src/atoms/Attachment.md index 3156671c60e5ad5582b67a7a9c8e51471750767f..2428ab84684a1ca4c4631c07a7e2f2d752e27677 100644 --- a/packages/ui/src/atoms/Attachment.md +++ b/packages/ui/src/atoms/Attachment.md @@ -1,10 +1,21 @@ A file attached to a note. +By default the file is displayed as uploading + ```js -const value = { - name: faker.system.commonFileName(), - url: faker.internet.url() -}; +const file = { + name: faker.system.commonFileName(), + url: faker.internet.url(), +} +;<Attachment file={file} /> +``` -<Attachment value={value}/> +When passed the `uploaded` prop, it becomes a link: + +```js +const file = { + name: faker.system.commonFileName(), + url: faker.internet.url(), +} +;<Attachment file={file} uploaded /> ``` diff --git a/packages/ui/src/atoms/Avatar.js b/packages/ui/src/atoms/Avatar.js index e662578d4efe259640c22ea57fcf75bbd0c3088e..973e3a2de9cf152fc7064279d985f57733a041e2 100644 --- a/packages/ui/src/atoms/Avatar.js +++ b/packages/ui/src/atoms/Avatar.js @@ -1,14 +1,19 @@ import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' + +const statusColor = props => + ({ + declined: props.theme.colorError, + pending: props.theme.colorSecondary, + }[props.status] || props.theme.colorPrimary) const Container = styled.svg.attrs({ - viewBox: props => `0 0 ${props.width + 5} ${props.height}`, + viewBox: props => `0 0 105 70`, xmlns: 'http://www.w3.org/2000/svg', })` - height: auto; - max-height: 100vh; - max-width: 100%; - width: auto; + width: calc(${th('gridUnit')} * 3); + height: calc(${th('gridUnit')} * 2); ` const Persona = styled.path.attrs({ @@ -16,34 +21,32 @@ const Persona = styled.path.attrs({ ' M 47.666 50.14 C 44.947 49 41.588 47.535 41.588 46.395 L 41.588 39.07 C 45.587 35.977 47.986 31.093 47.986 26.047 L 47.986 16.279 C 47.986 7.326 40.788 0 31.991 0 C 23.193 0 15.995 7.326 15.995 16.279 L 15.995 26.047 C 15.995 31.093 18.395 36.14 22.393 39.07 L 22.393 46.395 C 22.393 47.372 19.034 48.837 16.315 50.14 C 9.757 52.907 0 57.14 0 68.372 L 0 70 L 63.981 70 L 63.981 68.372 C 63.981 57.14 54.224 52.907 47.666 50.14 Z ', })` display: block; - fill: var( - --color-${props => ({ declined: 'danger', pending: 'pending' }[props.status] || 'primary')} - ); + fill: ${statusColor}; ` const Check = styled.path.attrs({ d: ` M 60.106 37.467 C 59.299 36.645 58.895 35.617 58.895 34.486 C 58.895 33.458 59.299 32.43 60.106 31.608 C 60.813 30.888 61.823 30.375 62.934 30.375 C 64.045 30.375 65.055 30.888 65.762 31.608 L 74.246 40.242 L 93.132 21.021 C 93.839 20.301 94.95 19.89 95.96 19.89 C 97.071 19.89 98.081 20.301 98.788 21.021 C 99.596 21.843 100 22.871 100 24.002 C 100 25.03 99.596 26.057 98.788 26.88 L 74.246 51.857 L 60.106 37.467 Z `, })` display: ${props => (props.status === 'accepted' ? 'block' : 'none')}; - fill: var(--color-primary); + fill: ${statusColor}; ` const X = styled.path.attrs({ d: ` M 70.964 37.518 L 62.025 46.615 C 61.217 47.54 60.712 48.671 60.712 49.904 C 60.712 51.138 61.217 52.268 62.025 53.091 C 62.934 54.016 64.045 54.427 65.257 54.427 C 66.469 54.427 67.58 54.016 68.388 53.091 L 77.326 43.994 L 86.265 53.091 C 87.173 54.016 88.284 54.427 89.496 54.427 C 90.708 54.427 91.819 54.016 92.627 53.091 C 93.536 52.268 93.94 51.138 93.94 49.904 C 93.94 48.671 93.536 47.54 92.627 46.615 L 83.689 37.518 L 92.627 28.422 C 93.536 27.599 93.94 26.469 93.94 25.235 C 93.94 24.002 93.536 22.871 92.627 21.946 C 91.819 21.124 90.708 20.61 89.496 20.61 C 88.284 20.61 87.173 21.124 86.265 21.946 L 77.326 31.043 L 68.388 21.946 C 67.58 21.124 66.469 20.61 65.257 20.61 C 64.045 20.61 62.934 21.124 62.025 21.946 C 61.217 22.871 60.712 24.002 60.712 25.235 C 60.712 26.469 61.217 27.599 62.025 28.422 L 70.964 37.518 Z`, })` display: ${props => (props.status === 'declined' ? 'block' : 'none')}; - fill: var(--color-danger); + fill: ${statusColor}; ` const QuestionMark = styled.path.attrs({ d: ` M 79.674 23.203 L 79.674 23.203 Q 83.397 23.203 85.424 25.077 L 85.424 25.077 L 85.424 25.077 Q 87.451 26.95 87.451 29.771 L 87.451 29.771 L 87.451 29.771 Q 87.451 31.75 86.728 33.14 L 86.728 33.14 L 86.728 33.14 Q 86.003 34.529 85.011 35.371 L 85.011 35.371 L 85.011 35.371 Q 84.018 36.214 82.404 37.224 L 82.404 37.224 L 82.404 37.224 Q 80.625 38.361 79.798 39.182 L 79.798 39.182 L 79.798 39.182 Q 78.97 40.003 78.97 41.308 L 78.97 41.308 L 78.97 41.308 Q 78.97 41.94 79.094 42.319 L 79.094 42.319 L 72.971 43.287 L 72.971 43.287 Q 72.64 42.024 72.64 41.098 L 72.64 41.098 L 72.64 41.098 Q 72.64 39.203 73.282 37.898 L 73.282 37.898 L 73.282 37.898 Q 73.923 36.593 74.833 35.814 L 74.833 35.814 L 74.833 35.814 Q 75.743 35.035 77.15 34.108 L 77.15 34.108 L 77.15 34.108 Q 78.681 33.056 79.405 32.298 L 79.405 32.298 L 79.405 32.298 Q 80.129 31.54 80.129 30.403 L 80.129 30.403 L 80.129 30.403 Q 80.129 29.603 79.653 29.203 L 79.653 29.203 L 79.653 29.203 Q 79.177 28.803 78.35 28.803 L 78.35 28.803 L 78.35 28.803 Q 76.405 28.803 74.006 31.245 L 74.006 31.245 L 70.282 27.708 L 70.282 27.708 Q 74.171 23.203 79.674 23.203 L 79.674 23.203 Z M 75.371 53.94 L 75.371 53.94 Q 73.84 53.94 72.93 52.951 L 72.93 52.951 L 72.93 52.951 Q 72.02 51.961 72.02 50.445 L 72.02 50.445 L 72.02 50.445 Q 72.02 48.635 73.24 47.33 L 73.24 47.33 L 73.24 47.33 Q 74.461 46.024 76.24 46.024 L 76.24 46.024 L 76.24 46.024 Q 77.77 46.024 78.681 47.014 L 78.681 47.014 L 78.681 47.014 Q 79.591 48.003 79.591 49.561 L 79.591 49.561 L 79.591 49.561 Q 79.591 51.414 78.37 52.677 L 78.37 52.677 L 78.37 52.677 Q 77.15 53.94 75.371 53.94 L 75.371 53.94 Z `, })` display: ${props => (props.status === 'pending' ? 'block' : 'none')}; - fill: var(--color-pending); + fill: ${statusColor}; ` const ReviewerText = styled.text` - fill: var(--color-primary); + fill: ${th('colorPrimary')}; font-family: 'Fira Sans Condensed', sans-serif; font-size: 50px; font-style: normal; @@ -66,17 +69,14 @@ const Reviewer = ({ status, letter }) => { const STATUSES = ['accepted', 'pending', 'declined', 'submitted'] -const Avatar = ({ status, width, height, reviewerLetter }) => { +const Avatar = ({ status, reviewerLetter }) => { status = status.toLowerCase() if (!STATUSES.includes(status)) { status = 'default' } - width = width || 100 - height = height || 70 - return ( - <Container height={height} width={width}> + <Container> <Persona status={status} /> <Check status={status} /> <X status={status} /> diff --git a/packages/ui/src/atoms/Avatar.md b/packages/ui/src/atoms/Avatar.md index c24261caba41fe172482130ebc8cc9c05d063247..27ae316f837fe0d820645b669dcd3e25aaaaaf00 100644 --- a/packages/ui/src/atoms/Avatar.md +++ b/packages/ui/src/atoms/Avatar.md @@ -1,10 +1,10 @@ A general purpose Avatar element. ```js -<div> +<div style={{ display: 'flex' }}> <Avatar status="Accepted" /> <Avatar status="Pending" /> <Avatar status="Declined" /> - <Avatar status="Submitted" reviewerLetter="B-" /> + <Avatar status="Submitted" reviewerLetter="B" /> </div> ``` diff --git a/packages/ui/src/atoms/Badge.js b/packages/ui/src/atoms/Badge.js index ec3dfcb4c9402a4a347ba8cc512c17c6ac75f7b3..f5d741d430273b1101edb1a3f6a5524298da9649 100644 --- a/packages/ui/src/atoms/Badge.js +++ b/packages/ui/src/atoms/Badge.js @@ -11,7 +11,6 @@ const Root = styled.span` #fff 1.15em, #fff 2em ); - font-family: var(--font-interface); font-size: 1em; margin-right: 1em; padding-bottom: 1em; diff --git a/packages/ui/src/atoms/Button.js b/packages/ui/src/atoms/Button.js index 72a106f98ab7f37c52eccc6cdcb69140dcb8301f..10201047638566192eb0dd5781229fbdb6a5bdc8 100644 --- a/packages/ui/src/atoms/Button.js +++ b/packages/ui/src/atoms/Button.js @@ -1,115 +1,65 @@ import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' const BaseStandardButton = styled.button.attrs({ type: 'button', })` - background: #ddd; - border: none; + background: ${th('colorSecondary')}; + border: ${th('borderWidth')} ${th('borderStyle')} ${th('colorBorder')}; + border-radius: ${th('borderRadius')}; + cursor: pointer; - font-family: var(--font-interface); + + font-family: ${th('fontInterface')}; font-size: inherit; letter-spacing: 0.05em; - padding: 10px 20px; - position: relative; - text-transform: uppercase; - &:hover, - &:focus { - background: #777; - color: white; - outline: 1px solid transparent; - } + min-width: calc(${th('gridUnit')} * 4); + height: calc(${th('gridUnit')} * 2); + padding: 0 calc(${th('gridUnit')} / 4); + margin-right: ${th('subGridUnit')}; &:active { transform: scale(0.8); } - - &::after { - animation: 1s warning; - opacity: 1; - } ` const PrimaryStandardButton = BaseStandardButton.extend` - background-color: var(--color-primary); - border: 2px solid transparent; - border-bottom: 4px solid var(--color-primary); - color: white; - - &:hover, - &:focus { - background: white; - border: 2px solid var(--color-primary); - border-bottom: 4px solid var(--color-primary); - color: var(--color-primary); - outline: 1px solid transparent; - } - - &:focus { - box-shadow: 0 2px 0 0 var(--color-primary); - } + background-color: ${th('colorPrimary')}; + border-color: ${th('colorPrimary')}; + color: ${th('colorBackground')}; ` const DisabledStandardButton = BaseStandardButton.extend.attrs({ disabled: true, })` - background: white; - border: 2px solid transparent; - border-bottom: 2px solid #bbb; - color: #bbb; - - &:hover { - background: transparent; - border: 2px solid transparent; - border-bottom: 2px solid #bbb; - color: #aaa; - cursor: not-allowed; - } - - &:hover::after { - color: var(--color-danger); - content: 'sorry, this action is not possible'; - display: inline; - font-size: 0.9em; - font-style: italic; - left: 115%; - letter-spacing: 0; - opacity: 1; - position: absolute; - text-align: left; - text-transform: lowercase; - top: 30%; - } + background: ${th('colorBackground')}; + border-color: transparent; + color: ${th('colorSecondary')}; + cursor: not-allowed; ` -const plainButtonOverrides = ` +const BasePlainButton = styled.button.attrs({ + type: 'button', +})` background: none; - border: 0; - border-bottom: 2px solid #777; - font-style: italic; - letter-spacing: 0; + border: none; padding: 0; - text-transform: none; - - &:hover, - &:focus { - background: transparent; - border: 0; - border-bottom: 2px solid var(--color-primary); - color: var(--color-primary); - } - - &:active { - transform: scale(0.99); - } + color: ${th('colorPrimary')}; + text-decoration: underline; + cursor: pointer; + font-family: inherit; + font-size: inherit; ` -const DisabledPlainButton = DisabledStandardButton.extend` - ${plainButtonOverrides}; -` -const BasePlainButton = BaseStandardButton.extend` - ${plainButtonOverrides}; +const DisabledPlainButton = BasePlainButton.extend.attrs({ + disabled: true, +})` + &, &:hover, &:focus { + color: ${th('colorSecondary')}; + cursor: not-allowed; + } ` const Button = ({ children, disabled, primary, plain, ...props }) => { diff --git a/packages/ui/src/atoms/CenteredColumn.js b/packages/ui/src/atoms/CenteredColumn.js new file mode 100644 index 0000000000000000000000000000000000000000..0f1e5f6136afada0031ee1b42adb4ef49e67fe84 --- /dev/null +++ b/packages/ui/src/atoms/CenteredColumn.js @@ -0,0 +1,18 @@ +import styled from 'styled-components' +import PropTypes from 'prop-types' + +const CenteredColumn = styled.div` + margin: 0 auto; + width: ${props => + (props.small && '40ch') || (props.medium && '60ch') || '60ch'}; +` + +CenteredColumn.propTypes = { + small: PropTypes.bool, + medium: PropTypes.bool, +} + +/** + * @component + */ +export default CenteredColumn diff --git a/packages/ui/src/atoms/CenteredColumn.md b/packages/ui/src/atoms/CenteredColumn.md new file mode 100644 index 0000000000000000000000000000000000000000..9c6320ffe8da6242ba3356a0407b4786519ea348 --- /dev/null +++ b/packages/ui/src/atoms/CenteredColumn.md @@ -0,0 +1,9 @@ +A layout component used for wrapping various forms: + +```js +<CenteredColumn>contents................</CenteredColumn> +``` + +```js +<CenteredColumn small>contents................</CenteredColumn> +``` diff --git a/packages/ui/src/atoms/Checkbox.js b/packages/ui/src/atoms/Checkbox.js index ae1f4cfcc4f4ddb9bf1a0b67deea6ddf66c49954..d8399dfc336be6d948745a24c53a0b5cce5e1e92 100644 --- a/packages/ui/src/atoms/Checkbox.js +++ b/packages/ui/src/atoms/Checkbox.js @@ -1,5 +1,6 @@ import React from 'react' import styled, { keyframes } from 'styled-components' +import th from '../helpers/themeHelper' const checking = keyframes` 0% { @@ -16,18 +17,19 @@ const checking = keyframes` } ` +const localBorderSize = '3px' +const localBorderTwoSize = '1px' + const Root = styled.label` align-items: center; display: ${props => (props.inline ? 'inline-flex' : 'flex')}; - font-family: var(--font-author); - font-size: 1em; + font-family: ${th('fontAuthor')}; font-style: italic; letter-spacing: 1px; transition: all 2s; &:not(:last-child) { margin-right: ${props => (props.inline ? '2.7em' : '0')}; - margin-bottom: ${props => (props.inline ? '0' : '0.5rem')}; } & input { @@ -36,19 +38,15 @@ const Root = styled.label` } & span { - border-bottom: 1px solid transparent; font-size: 1.1em; transition: color 0.5s; } &:hover span { - color: var(--color-primary); + color: ${th('colorPrimary')}; } & span::before { - --local-border-size: 3px; - --local-borderTwo-size: 1px; - content: ' '; display: inline-block; vertical-align: middle; @@ -58,8 +56,8 @@ const Root = styled.label` margin-right: 0.5em; background: ${props => (props.checked ? 'currentcolor' : 'transparent')}; - border: var(--local-border-size) solid white; - box-shadow: 0 0 0 var(--local-borderTwo-size) currentcolor; + border: ${localBorderSize} solid white; + box-shadow: 0 0 0 ${localBorderTwoSize} currentcolor; transition: border 0.5s ease, background-size 0.3s ease; } @@ -67,8 +65,8 @@ const Root = styled.label` &:hover span::before { animation: ${checking} 0.5s; - background: var(--color-primary); - box-shadow: 0 0 0 var(--local-borderTwo-size) var(--color-primary); + background: ${th('colorPrimary')}; + box-shadow: 0 0 0 ${localBorderTwoSize} ${th('colorPrimary')}; } ` @@ -84,7 +82,7 @@ const Checkbox = ({ checked = checked || false return ( - <Root checked={checked}> + <Root checked={checked} inline={inline}> <input checked={checked} name={name} diff --git a/packages/ui/src/atoms/Colorize.js b/packages/ui/src/atoms/Colorize.js new file mode 100644 index 0000000000000000000000000000000000000000..a0ef643fad60c98b70cb032989093d1639f9825e --- /dev/null +++ b/packages/ui/src/atoms/Colorize.js @@ -0,0 +1,38 @@ +import React from 'react' +import { withTheme } from 'styled-components' +import { compose } from 'recompose' + +const Colorize = Component => { + const Colorized = ({ + primary, + secondary, + quiet, + furniture, + success, + error, + warning, + reverse, + placeholder, + theme = {}, + ...props + }) => { + const color = + (primary && theme.colorPrimary) || + (secondary && theme.colorSecondary) || + (quiet && theme.colorQuiet) || + (furniture && theme.colorFurniture) || + (success && theme.colorSuccess) || + (error && theme.colorError) || + (warning && theme.colorWarning) || + (reverse && theme.colorTextReverse) || + (placeholder && theme.colorTextPlaceholder) || + theme.colorText + + return <Component color={color} {...props} /> + } + + Colorized.propTypes = Object.assign({}, Component.propTypes) + return Colorized +} + +export default compose(withTheme, Colorize) diff --git a/packages/ui/src/atoms/Colorize.md b/packages/ui/src/atoms/Colorize.md new file mode 100644 index 0000000000000000000000000000000000000000..8cd91b7d8b6b2f1bc978ab9961f78bb53d589796 --- /dev/null +++ b/packages/ui/src/atoms/Colorize.md @@ -0,0 +1 @@ +A hoc that accepts color names and delivers a corresponding color theme variable on a `color` prop diff --git a/packages/ui/src/atoms/ErrorText.js b/packages/ui/src/atoms/ErrorText.js new file mode 100644 index 0000000000000000000000000000000000000000..6ed06486f5df7b4eb9b8e4016ce45746504e6982 --- /dev/null +++ b/packages/ui/src/atoms/ErrorText.js @@ -0,0 +1,11 @@ +import styled from 'styled-components' +import th from '../helpers/themeHelper' + +const ErrorText = styled.div` + color: ${th('colorError')}; +` + +/** + * @component + */ +export default ErrorText diff --git a/packages/ui/src/atoms/ErrorText.md b/packages/ui/src/atoms/ErrorText.md new file mode 100644 index 0000000000000000000000000000000000000000..82628a2f06cad5363cf53de9e632f38e0bad6233 --- /dev/null +++ b/packages/ui/src/atoms/ErrorText.md @@ -0,0 +1,5 @@ +Error text: + +```js +<ErrorText>Error message</ErrorText> +``` diff --git a/packages/ui/src/atoms/File.js b/packages/ui/src/atoms/File.js index 547f2fec4828a047d47f9655722684768635ad6e..4da77e54d7e77169a80db0bb92394fe0df9efaca 100644 --- a/packages/ui/src/atoms/File.js +++ b/packages/ui/src/atoms/File.js @@ -1,122 +1,6 @@ import React from 'react' -import styled from 'styled-components' +import UploadingFile from './UploadingFile' -const Icon = styled.div` - background: #ddd; - height: 100px; - padding: 5px; - position: relative; - transition: transform 0.3s ease; - width: 70px; -` - -const Extension = styled.div` - background: #888; - color: white; - font-size: 12px; - left: 20px; - padding: 2px; - position: absolute; - right: 0; - text-align: center; - text-transform: uppercase; - top: 20px; -` - -const Filename = styled.div` - color: #aaa; - font-size: 1em; - font-style: italic; - margin: 0.7em; - text-align: center; - width: 20ch; - word-break: break-all; /* to divide into lines */ -` - -const Root = styled.div` - align-items: center; - display: inline-flex; - flex-direction: column; - margin-bottom: 2em; - margin-right: 3em; - position: relative; - width: 20ch; - - &::before, - &::after { - cursor: pointer; - transition: transform 0.3s; - } - - &::after { - background: var(--color-danger); - border: 1px solid white; - color: white; - content: 'remove'; - cursor: pointer; - font-size: 0.8em; - left: 70%; - letter-spacing: 0.5px; - padding: 0.2em 0.4em; - position: absolute; - text-transform: uppercase; - top: 4em; - transform: scaleX(0); - transform-origin: 0 0; - z-index: 2; - } - - &::before { - background: var(--color-primary); - border: 1px solid white; - color: white; - content: 'replace'; - cursor: pointer; - font-size: 0.8em; - left: 70%; - letter-spacing: 0.5px; - padding: 0.2em 0.4em; - position: absolute; - text-transform: uppercase; - top: 6em; - transform: scaleX(0); - transform-origin: 0 0; - z-index: 3; - } - - &:hover { - ${Extension} { - background: white; - border-right: 2px solid #ddd; - color: var(--color-primary); - } - - ${Icon} { - background: var(--color-primary); - transform: skewY(6deg) rotate(-6deg); - } - - &::after, - &::before { - transform: scaleX(1); - } - } -` - -const getFileExtension = ({ name }) => name.replace(/^.+\./, '') - -const File = ({ value }) => ( - <Root> - <Icon> - <Extension>{getFileExtension(value)}</Extension> - </Icon> - - <Filename> - <a download={value.name} href={value.url}> - {value.name} - </a> - </Filename> - </Root> -) +const File = props => <UploadingFile {...props} uploaded /> export default File diff --git a/packages/ui/src/atoms/File.md b/packages/ui/src/atoms/File.md index fe482efec8cf6a7c0a415456133adfde90930f7e..529b1a1d71f3f5bee915548730186004fdfe9dde 100644 --- a/packages/ui/src/atoms/File.md +++ b/packages/ui/src/atoms/File.md @@ -1,31 +1,13 @@ +Deprecated: use `UploadingFile` with `uploaded` prop. + A file. ```js -const value = { +const file = { name: faker.system.commonFileName(), + url: faker.internet.url(), // type: faker.system.commonFileType(), // size: faker.random.number(), -}; - -<File value={value}/> -``` - -Upload progress is displayed as an overlay. - -```js -const value = { - name: faker.system.commonFileName(), -}; - -<File value={value} progress={0.5}/> -``` - -An upload error is displayed above the file. - -```js -const value = { - name: faker.system.commonFileName(), -}; - -<File value={value} error="There was an error"/> +} +;<File file={file} /> ``` diff --git a/packages/ui/src/atoms/Flexbox.js b/packages/ui/src/atoms/Flexbox.js new file mode 100644 index 0000000000000000000000000000000000000000..011f886ac2c5e7303214a19e0fe38699e00f4a93 --- /dev/null +++ b/packages/ui/src/atoms/Flexbox.js @@ -0,0 +1,18 @@ +import styled from 'styled-components' +import PropTypes from 'prop-types' + +const Flexbox = styled.div` + display: flex; + flex-direction: ${props => (props.column ? 'column' : 'row')}; + justify-content: ${props => (props.center ? 'center' : 'left')}; +` + +Flexbox.propTypes = { + column: PropTypes.bool, + center: PropTypes.bool, +} + +/** + * @component + */ +export default Flexbox diff --git a/packages/ui/src/atoms/Flexbox.md b/packages/ui/src/atoms/Flexbox.md new file mode 100644 index 0000000000000000000000000000000000000000..38214dfc53a70c419f31b199956a519c0d66cec6 --- /dev/null +++ b/packages/ui/src/atoms/Flexbox.md @@ -0,0 +1 @@ +A flexbox container diff --git a/packages/ui/src/atoms/Heading.js b/packages/ui/src/atoms/Heading.js new file mode 100644 index 0000000000000000000000000000000000000000..a87db5d81f23a737dbf8777227e423869d1a9c2a --- /dev/null +++ b/packages/ui/src/atoms/Heading.js @@ -0,0 +1,23 @@ +import React from 'react' +import styled from 'styled-components' + +import th from '../helpers/themeHelper' + +const Heading = styled.span` + color: ${th('colorPrimary')}; + font-size: ${({ level = 1, theme }) => theme[`fontSizeHeading${level}`]}; + font-family: ${th('fontHeading')}; + margin-bottom: calc(1 * ${th('gridUnit')}); +` + +export const H1 = ({ children }) => <Heading level={1}>{children}</Heading> +export const H2 = ({ children }) => <Heading level={2}>{children}</Heading> +export const H3 = ({ children }) => <Heading level={3}>{children}</Heading> +export const H4 = ({ children }) => <Heading level={4}>{children}</Heading> +export const H5 = ({ children }) => <Heading level={5}>{children}</Heading> +export const H6 = ({ children }) => <Heading level={6}>{children}</Heading> + +/** + * @component + */ +export default Heading diff --git a/packages/ui/src/atoms/Heading.md b/packages/ui/src/atoms/Heading.md new file mode 100644 index 0000000000000000000000000000000000000000..c447a172a82dfa0e1582035247efd542a995bd84 --- /dev/null +++ b/packages/ui/src/atoms/Heading.md @@ -0,0 +1,13 @@ +A Heading + +```js +<Heading level={1}>Level 1</Heading> +``` + +Levels correspond to h1, h2, etc. + +```js +<Heading level={4}>Level 4</Heading> +``` + +H1, H2, etc. components are also exported diff --git a/packages/ui/src/atoms/Icon.js b/packages/ui/src/atoms/Icon.js index 5d78520b45912621a1d2eabf673709cbcd5d10b0..cf315da424525a8f66285cd01ea8df02eadea0ae 100644 --- a/packages/ui/src/atoms/Icon.js +++ b/packages/ui/src/atoms/Icon.js @@ -2,20 +2,41 @@ import React from 'react' import { pascalize } from 'humps' import * as icons from 'react-feather' import styled from 'styled-components' +import PropTypes from 'prop-types' +import Colorize from './Colorize' +import th from '../helpers/themeHelper' const Container = styled.span` display: inline-flex; - width: var(--icon-size); + padding: calc(${th('subGridUnit')} / 2); + svg { + stroke: ${props => props.color || props.theme.colorText}; + width: calc(${props => props.size} * ${th('subGridUnit')}); + height: calc(${props => props.size} * ${th('subGridUnit')}); + } ` -const Icon = ({ children, color = 'var(--color-local, black)', size = 24 }) => { +const Icon = ({ children, color, size = 3, ...props }) => { // convert `arrow_left` to `ArrowLeft` const name = pascalize(children) // select the icon const icon = icons[name] - return <Container>{icon({ color, size })}</Container> + if (!icon) { + console.warn("Icon '%s' not found", name) + } + + return ( + <Container color={color} size={size}> + {icon ? icon({}) : ''} + </Container> + ) +} + +Icon.protoTypes = { + size: PropTypes.number, + color: PropTypes.string, } -export default Icon +export default Colorize(Icon) diff --git a/packages/ui/src/atoms/Icon.md b/packages/ui/src/atoms/Icon.md index bbee0593695c749fbedce849fd13fcc740629a74..e98e104d94cdb1b712796eddc2a3f1fb57972224 100644 --- a/packages/ui/src/atoms/Icon.md +++ b/packages/ui/src/atoms/Icon.md @@ -7,11 +7,14 @@ An icon, from the [Feather](https://feathericons.com/) icon set. The color can be changed. ```js -<Icon color="red">arrow_right</Icon> -``` +<div> + <Icon error>arrow_right</Icon> + <Icon primary>arrow_right</Icon> +</div> +``` The size can be changed. ```js -<Icon size={48}>arrow_right</Icon> -``` +<Icon size={6}>arrow_right</Icon> +``` diff --git a/packages/ui/src/atoms/Link.js b/packages/ui/src/atoms/Link.js new file mode 100644 index 0000000000000000000000000000000000000000..03158152cb180ef0928852843235240966b1398b --- /dev/null +++ b/packages/ui/src/atoms/Link.js @@ -0,0 +1,13 @@ +import styled from 'styled-components' +import { Link as UnstyledLink } from 'react-router-dom' +import th from '../helpers/themeHelper' + +const Link = styled(UnstyledLink)` + color: ${th('colorPrimary')}; + cursor: pointer; +` + +/** + * @component + */ +export default Link diff --git a/packages/ui/src/atoms/Link.md b/packages/ui/src/atoms/Link.md new file mode 100644 index 0000000000000000000000000000000000000000..5499b01b0e4a6a85369d641ed66607ec6c826cee --- /dev/null +++ b/packages/ui/src/atoms/Link.md @@ -0,0 +1,5 @@ +A styled link + +```js +<Link to={'www.google.com'}>Click here</Link> +``` diff --git a/packages/ui/src/atoms/Menu.js b/packages/ui/src/atoms/Menu.js index 2203f7f5fa9fe501791a95aff68a58c073b49003..a7119c040c23c4bdc02e036a5bc203a08c54161c 100644 --- a/packages/ui/src/atoms/Menu.js +++ b/packages/ui/src/atoms/Menu.js @@ -1,58 +1,74 @@ import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' // TODO: match the width of the container to the width of the widest option? // TODO: use a <select> element instead of divs? +// TODO: determine the correct color for non-selected options +// FIXME: putting markup inside a <button> is invalid const Root = styled.div` - font-size: 1em; + max-width: calc(${th('gridUnit')} * 14); + margin-bottom: ${props => (props.inline ? '0' : props.theme.gridUnit)}; ` -const Label = styled.span` +const Label = styled.label` + font-size: ${th('fontSizeBaseSmall')}; display: block; - font-size: 1em; - margin-bottom: 0.5em; ` -const OpenerContainer = styled.div`` - const Opener = styled.button.attrs({ type: 'button', })` background: transparent; - border: none; + border: ${th('borderWidth')} ${th('borderStyle')} ${th('colorBorder')}; + border-radius: ${th('borderRadius')}; cursor: pointer; font-family: inherit; - font-size: 1.2em; - border-left: 2px solid - ${props => (props.open ? 'var(--color-primary)' : 'lightgrey')}; - color: ${props => (props.open ? 'var(--color-primary)' : 'inherit')}; + width: 100%; + height: calc(${th('gridUnit')} * 2); + padding: 0; + + display: flex; + align-items: center; &:hover { - border-left: 2px solid var(--color-primary); - color: var(--color-primary); + border-color: ${th('colorPrimary')}; } ` -const Placeholder = styled.span` - font-family: var(--font-interface); - font-style: italic; - font-weight: 400; - text-transform: normal; - color: #aaa; +const Value = styled.span` + flex-grow: 1; + + text-align: left; + padding: 0 calc(${th('gridUnit')} / 2); &:hover { - color: var(--color-primary); + color: ${th('colorPrimary')}; } ` +const Placeholder = Value.extend` + color: ${th('colorTextPlaceholder')}; + font-style: italic; +` + +const ArrowContainer = styled.span` + border-left: ${th('borderWidth')} ${th('borderStyle')} ${th('colorFurniture')}; + + width: calc(${th('gridUnit')} * 2); + height: calc(${th('gridUnit')} * 2 - ${th('borderWidth')} * 2); + + display: flex; + align-items: center; + justify-content: center; +` + const Arrow = styled.span` - display: inline-block; font-size: 50%; - margin-left: 10px; transition: transform 0.2s; - transform: scaleX(2.2) scaleY(${props => (props.open ? -1.2 : 1.2)}); + transform: scaleX(2) scaleY(${props => (props.open ? -1.2 : 1.2)}); ` const Main = styled.div.attrs({ @@ -63,23 +79,20 @@ const Main = styled.div.attrs({ const OptionsContainer = styled.div` position: absolute; + left: 0; + right: 0; ` const Options = styled.div` - background-color: white; - border-bottom: 2px solid var(--color-primary); - border-left: 2px solid var(--color-primary); - left: 0; - padding-bottom: 0.5em; - padding-top: 0.5em; position: absolute; top: 0; - transition: opacity 2s; - width: 0; - z-index: 10; + left: 0; + right: 0; - min-width: ${props => (props.open ? '10em' : '0')}; - opacity: ${props => (props.open ? '1' : '0')}; + background-color: ${th('colorBackground')}; + border: ${th('borderWidth')} ${th('borderStyle')} ${th('colorBorder')}; + border-radius: ${th('borderRadius')}; + overflow: hidden; ` const Option = styled.div.attrs({ @@ -87,43 +100,29 @@ const Option = styled.div.attrs({ tabIndex: '0', 'aria-selected': props => props.active, })` - color: ${props => (props.active ? 'black' : '#444')}; + color: ${props => (props.active ? props.theme.textColor : '#444')}; font-weight: ${props => (props.active ? '600' : 'inherit')}; cursor: pointer; - font-family: var(--font-author); - padding: 10px; + font-family: ${th('fontAuthor')}; + padding: calc(${th('subGridUnit')} - ${th('borderWidth')} * 2) + calc(${th('subGridUnit')} * 2); + border: ${th('borderWidth')} ${th('borderStyle')} transparent; + border-width: ${th('borderWidth')} 0 ${th('borderWidth')} 0; white-space: nowrap; &:hover { - color: var(--color-primary); + background: ${th('colorBackgroundHue')}; + border-color: ${th('colorBorder')}; } -` - -/* Not used for now -.inline { - align-items: flex-end; - display: flex; - flex-direction: row; - justify-content: flex-start; - margin-right: 0.5em; -} - -.inline .label { - margin-right: 0.5em; -} -.inline .opener { - margin-bottom: -4px; -} - -.root .inline { - flex-direction: columns; -} + &:first-child:hover { + border-top-color: ${th('colorBackgroundHue')}; + } -.root.author { - font-family: var(--font-author); -} -*/ + &:last-child:hover { + border-bottom-color: ${th('colorBackgroundHue')}; + } +` class Menu extends React.Component { constructor(props) { @@ -163,24 +162,29 @@ class Menu extends React.Component { } render() { - const { label, options, placeholder = 'Choose in the list' } = this.props + const { + label, + options, + inline, + placeholder = 'Choose in the list', + } = this.props const { open, selected } = this.state return ( - <Root open={open}> + <Root inline={inline} open={open}> {label && <Label>{label}</Label>} <Main> - <OpenerContainer> - <Opener onClick={this.toggleMenu} open={open}> - {selected ? ( - <span>{this.optionLabel(selected)}</span> - ) : ( - <Placeholder>{placeholder}</Placeholder> - )} + <Opener onClick={this.toggleMenu} open={open}> + {selected ? ( + <Value>{this.optionLabel(selected)}</Value> + ) : ( + <Placeholder>{placeholder}</Placeholder> + )} + <ArrowContainer> <Arrow open={open}>▼</Arrow> - </Opener> - </OpenerContainer> + </ArrowContainer> + </Opener> <OptionsContainer> {open && ( diff --git a/packages/ui/src/atoms/Radio.js b/packages/ui/src/atoms/Radio.js index 90a9409d6bb1c5a76e6fe9dadf6ff09e05cd508a..8d9ded2130c3afe3c665ef9b6178944b2c556d1a 100644 --- a/packages/ui/src/atoms/Radio.js +++ b/packages/ui/src/atoms/Radio.js @@ -1,33 +1,34 @@ import React from 'react' import styled, { keyframes } from 'styled-components' +import th from '../helpers/themeHelper' const Input = styled.input` display: none; ` const PseudoInput = styled.span` - --local-border-size: 2px; - --local-borderTwo-size: 1px; - display: inline-block; content: ' '; - width: 0.6em; - height: 0.6em; + width: calc(${th('subGridUnit')} * 2); + height: calc(${th('subGridUnit')} * 2); vertical-align: center; - margin-left: 0.2em; - margin-right: 0.6em; + margin-left: ${th('subGridUnit')}; + margin-right: ${th('subGridUnit')}; - border: var(--local-border-size) solid white; + /* This is not a real border (box-shadow provides that), so not themed as such */ + border: calc(${th('subGridUnit')} / 4) solid white; border-radius: 50%; - transition: border 0.2s ease; + transition: border ${th('transitionDurationXs')} + ${th('transitionTimingFunction')}; + color: ${props => props.color}; ` const Label = styled.span` display: inline-block; font-family: inherit; - font-size: 1em; + font-size: ${th('fontSizeBase')}; font-style: italic; ` @@ -50,28 +51,29 @@ const Root = styled.label` align-items: center; cursor: pointer; display: ${props => (props.inline ? 'inline-flex' : 'flex')}; - transition: all 2s; + transition: all ${th('transitionDuration')}; + min-height: ${th('gridUnit')}; &:not(:last-child) { - margin-right: ${props => (props.inline ? '2.7em' : '0')}; - margin-bottom: ${props => (props.inline ? '0' : '0.5rem')}; + margin-right: ${props => (props.inline ? props.theme.gridUnit : '0')}; + margin-bottom: 0; } ${PseudoInput} { background: ${props => (props.checked ? 'currentcolor' : 'transparent')}; - box-shadow: 0 0 0 var(--local-borderTwo-size) currentcolor; + box-shadow: 0 0 0 ${th('borderWidth')} currentcolor; } &:hover { ${Label} { - color: ${props => (props.checked ? 'inherit' : 'var(--color-primary)')}; + color: ${props => (props.checked ? 'inherit' : props.theme.colorPrimary)}; } ${PseudoInput} { animation-name: ${props => (props.checked ? 'none' : checking)}; - animation-duration: 0.5s; - box-shadow: 0 0 0 var(--local-borderTwo-size) - ${props => (props.checked ? 'currentcolor' : 'var(--color-primary)')}; + animation-duration: ${th('transitionDurationS')}; + box-shadow: 0 0 0 ${th('borderWidth')} + ${props => (props.checked ? 'currentcolor' : props.theme.colorPrimary)}; } } color: ${props => props.color}; @@ -79,7 +81,7 @@ const Root = styled.label` /* Not used for now .root.author { - font-family: var(--font-author); + font-family: ${th("fontAuthor")}; } .root.author span { @@ -100,7 +102,7 @@ const Radio = ({ onChange, readonly, }) => ( - <Root checked={checked} color={color}> + <Root checked={checked} color={color} inline={inline}> <Input checked={checked} disabled={readonly} diff --git a/packages/ui/src/atoms/Section.js b/packages/ui/src/atoms/Section.js new file mode 100644 index 0000000000000000000000000000000000000000..d5b670c4d7c231608e6e9ba74d191d32b4575bf7 --- /dev/null +++ b/packages/ui/src/atoms/Section.js @@ -0,0 +1,15 @@ +import styled from 'styled-components' +import th from '../helpers/themeHelper' + +const Section = styled.div` + margin: 0 ${th('gridUnit')} ${th('gridUnit')} 0; + + &:not(:last-of-type) { + margin-bottom: calc(${th('gridUnit')} * 2); + } +` + +/** + * @component + */ +export default Section diff --git a/packages/ui/src/atoms/Section.md b/packages/ui/src/atoms/Section.md new file mode 100644 index 0000000000000000000000000000000000000000..d364dc6ef9eb68585d643beaca338564b5be7ace --- /dev/null +++ b/packages/ui/src/atoms/Section.md @@ -0,0 +1 @@ +Wraps a div with margin diff --git a/packages/ui/src/atoms/Spinner.js b/packages/ui/src/atoms/Spinner.js index 59f9f291e4a75f6c1526d4d56d3e8a8e6b4ec02c..52f0cc68c9722fc03d7af35b2bb4f5d00d579ba5 100644 --- a/packages/ui/src/atoms/Spinner.js +++ b/packages/ui/src/atoms/Spinner.js @@ -3,7 +3,7 @@ import propTypes from 'prop-types' import { Icon } from '@pubsweet/ui' import styled, { keyframes } from 'styled-components' -const Spinner = ({ icon = 'loader', size = 16, color = '#444' }) => ( +const Spinner = ({ icon = 'loader', size = 2, color = '#444' }) => ( <Root> <Icon color={color} size={size}> {icon} diff --git a/packages/ui/src/atoms/Spinner.md b/packages/ui/src/atoms/Spinner.md index 7d51d6a5306d60b07bad6c0997c7e55681005981..df2233f6a74701a0165a4522304218ed29d383b3 100644 --- a/packages/ui/src/atoms/Spinner.md +++ b/packages/ui/src/atoms/Spinner.md @@ -4,6 +4,8 @@ Spinning icon used when loading or waiting for API calls to finish. <Spinner /> ``` +The size, colour and icon can be changed: + ```js -<Spinner color="pink" size={40} icon="compass" /> +<Spinner color="pink" size={8} icon="compass" /> ``` diff --git a/packages/ui/src/atoms/StateItem.js b/packages/ui/src/atoms/StateItem.js index 870a639d9665804725f91fd4cb7d1f0c9ba6c7d6..92b668735fd198e7457d5c88396dc33a3b9a9e14 100644 --- a/packages/ui/src/atoms/StateItem.js +++ b/packages/ui/src/atoms/StateItem.js @@ -1,36 +1,34 @@ import PropTypes from 'prop-types' -import styled from 'styled-components' +import styled, { css } from 'styled-components' import React from 'react' +import th from '../helpers/themeHelper' -const darkGrey = '#404040' -const lightGrey = '#b3b3b3' - -const disabled = ` - color: ${lightGrey}; +const disabled = css` + color: ${th('colorSecondary')}; cursor: default; &:hover { - color: ${lightGrey}; + color: ${th('colorSecondary')}; } ` const Root = styled.span` cursor: pointer; - font-family: var(--font-interface); - font-size: 16px; + font-family: ${th('fontInterface')}; + font-size: ${th('fontSizeBaseSmall')}; font-style: italic; - padding: 0; &:focus { outline: none; } &:hover { - color: ${darkGrey}; - transition: 0.25s ease-in-out 0s; + color: ${th('colorText')}; + transition: ${th('transitionDurationUnit')} + ${th('transitionTimingFunction')}; } - ${props => (props.disabled ? disabled : '')}; + ${props => props.disabled && disabled}; ` const StateItem = ({ update, disabled, values, index }) => { diff --git a/packages/ui/src/atoms/Tags.js b/packages/ui/src/atoms/Tags.js index 40a082a93e80137fe56ffc9eecd07cdd4a4b50eb..b44b0b8297cd78e7639ccf423468d5196276b4ea 100644 --- a/packages/ui/src/atoms/Tags.js +++ b/packages/ui/src/atoms/Tags.js @@ -1,6 +1,7 @@ import React from 'react' import ReactTags from 'react-tag-autocomplete' import styled from 'styled-components' +import th from '../helpers/themeHelper' // TODO: separate tags when pasted // TODO: allow tags to be edited @@ -96,14 +97,12 @@ const Tags = styled(TagsUnstyled)` .${classNames.root} { /* clicking anywhere will focus the input */ cursor: text; - font-size: 1em; - line-height: 1.2; - padding: 6px 0 0 6px; + padding: ${th('subGridUnit')} 0 0 ${th('subGridUnit')}; position: relative; } .${classNames.root}.${classNames.rootFocused} { - border-color: var(--color-primary); + border-color: ${th('colorPrimary')}; } .${classNames.selected} { @@ -111,59 +110,48 @@ const Tags = styled(TagsUnstyled)` } .${classNames.selectedTag} { - border: 0 solid transparent; - box-sizing: border-box; + border: 0; cursor: pointer; display: inline-block; - font-family: 'Vollkorn', serif; + font-family: ${th('fontReading')}; /* match the font styles */ - font-size: inherit; - line-height: inherit; - margin: 0 1em 1em 0; + margin: 0 ${th('subGridUnit')} ${th('gridUnit')} 0; padding: 0.1em 0.3em; - ${realBorder('#aaa', 'white')} + ${props => realBorder(props.theme.colorBorder, props.theme.colorBackground)} } .${classNames.selectedTag}::after { - background: white; - color: #aaa; + color: ${th('colorBorder')}; content: '\\2715'; - // margin: 0; display: inline-block; - font-size: 0.9em; + font-size: ${th('fontSizeBaseSmall')}; font-weight: 600; - height: 10px; - margin-left: 8px; - padding: 3px 0 0; - text-shadow: none; - width: 13px; - - &:hover { - background: var(--color-primary); - } + margin-left: ${th('subGridUnit')}; + padding: ${th('subGridUnit')} 0 0 + width: ${th('subGridUnit')}; } .${classNames.selectedTag}:hover, .${classNames.selectedTag}:focus { text-decoration: line-through; - ${realBorder('transparent', 'white')} + ${props => realBorder('transparent', props.theme.colorBackground)} &::after { - color: var(--color-danger); + color: ${th('colorError')}; } } .${classNames.search} { display: inline-block; /* match tag layout */ - margin: 0 1em 1em 0; + margin: 0 0 ${th('gridUnit')} 0; /* prevent autoresize overflowing the container */ - max-width: 100px; - padding: 0.1em 0.3em; + max-width: calc(${th('gridUnit')} * 5); + padding: ${th('subGridUnit')} ${th('subGridUnit')}; } @media screen and (min-width: 30em) { @@ -175,9 +163,9 @@ const Tags = styled(TagsUnstyled)` .${classNames.search} input { border: 0; - border-bottom: 1px dashed grey; - color: black; - font-family: 'Vollkorn', serif; + border-bottom: ${th('borderWidth')} dashed ${th('colorBorder')}; + color: ${th('colorText')}; + font-family: ${th('fontReading')}; /* match the font styles */ font-size: inherit; @@ -188,18 +176,18 @@ const Tags = styled(TagsUnstyled)` /* prevent autoresize overflowing the container */ max-width: 100%; - min-width: 15ch; + min-width: calc(${th('gridUnit')} * 5); outline: none; padding: 0; &::placeholder { - font-family: 'Fira Sans Condensed', sans-serif; - opacity: 0.5; + font-family: ${th('fontInterface')}; + color: ${th('colorTextPlaceholder')}; } &:focus, &:hover { - border-bottom: 1px dashed var(--color-primary); + border-bottom: ${th('borderWidth')} dashed ${th('colorPrimary')}; } } diff --git a/packages/ui/src/atoms/TextField.js b/packages/ui/src/atoms/TextField.js index fb17a19a21758c1a5ec57ec20193cc206382c42e..edd3c651f2c5c84d7a3dc775741f49e1a296f868 100644 --- a/packages/ui/src/atoms/TextField.js +++ b/packages/ui/src/atoms/TextField.js @@ -1,62 +1,40 @@ import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' -const Root = styled.label` - --font-local: var(--font-reviewer); - - align-items: center; +const Root = styled.div` display: flex; - font-size: 1em; - line-height: 1.8; + flex-direction: column; + max-width: calc(${th('gridUnit')} * 14); + margin-bottom: ${props => (props.inline ? '0' : props.theme.gridUnit)}; ` -const Label = styled.span` - margin-right: 10px; +const Label = styled.label` + font-size: ${th('fontSizeBaseSmall')}; + display: block; ` -const Input = styled.input` - --color-back: darkgray; +const borderColor = ({ theme, validationStatus = 'default' }) => + ({ + error: theme.colorError, + success: theme.colorSuccess, + warning: theme.colorWarning, + default: theme.colorBorder, + }[validationStatus]) - background: linear-gradient( - to right, - transparent 0%, - transparent 2px, - white 2px, - white 4px - ), - linear-gradient(white 0%, white 90%, var(--color-back) 95%, white 100%); - background-position: 0 0, 0.2em 0; - background-repeat: repeat-X, repeat-Y; - background-size: 7px 100%, 100% 1.3em; - border: none; - border-left: 1px solid darkgrey; - caret-color: var(--color-primary); - flex: 1; - font-family: var(--font-local), serif; - font-size: inherit; - max-width: 100%; - padding: 0 0.5em; +const Input = styled.input` + border: ${th('borderWidth')} ${th('borderStyle')} ${borderColor}; - &:hover, - &:focus { - border-color: transparent; - box-shadow: none; - outline-style: none; - } + border-radius: ${th('borderRadius')}; - &:hover { - --color-back: var(--color-primary); - } + font-family: inherit; + font-size: inherit; - &:focus { - --color-back: #aaa; - } + padding: 0 calc(${th('gridUnit')} / 2); + height: calc(${th('gridUnit')} * 2); &::placeholder { - color: #999; - font-family: var(--font-interface); - font-size: 1em; - font-style: italic; + color: ${th('colorTextPlaceholder')}; } ` @@ -69,18 +47,23 @@ const TextField = ({ value = '', onBlur, onChange, + onKeyDown, readonly, + validationStatus, + inline, }) => ( - <Root> + <Root inline={inline}> {label && <Label>{label}</Label>} <Input name={name} onBlur={onBlur} onChange={onChange} + onKeyDown={onKeyDown} placeholder={placeholder} readOnly={readonly} required={required} type={type} + validationStatus={validationStatus} value={value} /> </Root> diff --git a/packages/ui/src/atoms/Title.js b/packages/ui/src/atoms/Title.js new file mode 100644 index 0000000000000000000000000000000000000000..c12a6dfa465009e293f72c68fb693164f1c36760 --- /dev/null +++ b/packages/ui/src/atoms/Title.js @@ -0,0 +1,23 @@ +import styled from 'styled-components' +import th from '../helpers/themeHelper' + +const fontSize = ({ theme, level = 1 }) => + ({ + 1: theme.fontSizeHeading1, + 2: theme.fontSizeHeading2, + 3: theme.fontSizeHeading3, + 4: theme.fontSizeHeading4, + 5: theme.fontSizeHeading5, + 6: theme.fontSizeHeading6, + }[level]) + +const Title = styled.div` + font-size: ${fontSize}; + font-family: ${th('fontHeading')}; + margin-bottom: ${th('gridUnit')}; +` + +/** + * @component + */ +export default Title diff --git a/packages/ui/src/atoms/UploadButton.js b/packages/ui/src/atoms/UploadButton.js new file mode 100644 index 0000000000000000000000000000000000000000..c9583aa8feeceb87ba762256cbe929b38c4bd8af --- /dev/null +++ b/packages/ui/src/atoms/UploadButton.js @@ -0,0 +1,34 @@ +import React from 'react' +import styled from 'styled-components' +import th from '../helpers/themeHelper' + +const Button = styled.button.attrs({ + type: 'button', +})` + background: transparent; + border: ${th('borderWidth')} dashed ${th('colorBorder')}; + height: ${th('gridUnit')}; + cursor: pointer; + margin-bottom: ${th('gridUnit')}; + padding: ${th('subGridUnit')}; +` + +const UploadButton = ({ name, buttonText, onChange }) => { + let fileInput + return ( + <div> + <Button onClick={() => fileInput.click()}>{buttonText}</Button> + + <input + multiple + name={name} + onChange={onChange} + ref={input => (fileInput = input)} + style={{ display: 'none' }} + type="file" + /> + </div> + ) +} + +export default UploadButton diff --git a/packages/ui/src/atoms/UploadButton.md b/packages/ui/src/atoms/UploadButton.md new file mode 100644 index 0000000000000000000000000000000000000000..bfb7ca50f12584b743af49d023b67832d393ec33 --- /dev/null +++ b/packages/ui/src/atoms/UploadButton.md @@ -0,0 +1,8 @@ +A button for uploading files + +```js +<UploadButton + buttonText={'Upload'} + onChange={() => console.log('UploadButton clicked')} +/> +``` diff --git a/packages/ui/src/atoms/UploadingFile.js b/packages/ui/src/atoms/UploadingFile.js index 8274a3c67411c7ac0c3e5ea294cfad50cc1c4bfa..99c878ab2a066ecba7b3bef1b8450d4b949021e0 100644 --- a/packages/ui/src/atoms/UploadingFile.js +++ b/packages/ui/src/atoms/UploadingFile.js @@ -1,129 +1,138 @@ import React from 'react' import styled from 'styled-components' - -// TODO: cancel button - -const Root = styled.div` - align-items: center; - display: inline-flex; - flex-direction: column; - margin-bottom: 2em; - margin-right: 3em; - position: relative; - width: 20ch; -` - -const ErrorWrapper = styled.div` - background: var(--color-danger); - border: 2px solid white; - color: white; - font-size: 0.8em; - letter-spacing: 0.01em; - opacity: 1; - padding: 0.3em 0.5em; - position: absolute; - top: 25%; - z-index: 4; -` +import th from '../helpers/themeHelper' const Icon = styled.div` - background: #ddd; - height: 100px; - margin: 5px; + background: ${th('colorFurniture')}; + height: calc(${th('subGridUnit')} * 15); + margin-bottom: ${th('subGridUnit')}; opacity: 0.5; position: relative; - width: 70px; + width: calc(${th('gridUnit')} * 3); ` const Progress = styled.div` - background-image: - linear-gradient( - var(--color-primary-light) 50%, - var(--color-primary) 75%, - to top - ); - bottom: 0; - content: ''; + color: ${th('colorTextReverse')}; display: block; - left: 0; - opacity: 1; + position: absolute; + bottom: ${th('subGridUnit')}; + left: calc(${th('subGridUnit')} * 4); +` + +const Extension = styled.div` + background: ${th('colorText')}; + color: ${th('colorTextReverse')}; + font-size: ${th('fontSizeBaseSmall')}; + left: calc(${th('subGridUnit')} * 2); position: absolute; right: 0; - transform-origin: 0 0; + text-align: center; + text-transform: uppercase; + top: calc(${th('subGridUnit')} * 2); +` + +const Filename = styled.div` + color: ${th('colorText')}; + font-size: ${th('fontSizeBaseSmall')}; + font-style: italic; + max-width: calc(${th('gridUnit')} * 10); +` + +const Uploading = styled.div` + align-items: center; + display: inline-flex; + flex-direction: column; + margin-bottom: ${th('gridUnit')}; + margin-right: calc(${th('subGridUnit')} * 3); + position: relative; + width: calc(${th('gridUnit')} * 10); +` +const Uploaded = Uploading.extend` + &::before, &::after { - /* we can use a data attribute for the numbering below */ - bottom: 2px; - color: white; - content: '${props => props.percent}%'; - display: block; + cursor: pointer; + transition: transform ${th('transitionDurationS')}; + font-size: ${th('fontSizeBaseSmall')}; + left: 65%; + padding: 0 ${th('subGridUnit')} 0 ${th('subGridUnit')}; position: absolute; - right: 2px; + border: ${th('borderWidth')} ${th('borderStyle')} ${th('colorTextReverse')}; + color: ${th('colorTextReverse')}; + text-transform: uppercase; + cursor: pointer; + transform: scaleX(0); + transform-origin: 0 0; } -` -const Filename = styled.div` - color: gray; - font-size: 90%; - font-style: italic; - margin: 5px; - max-width: 20ch; + &::after { + background: ${th('colorError')}; + content: 'Remove'; + top: calc(${th('subGridUnit')} * 5); + z-index: 2; + } + + &::before { + background: ${th('colorPrimary')}; + content: 'Replace'; + top: calc(${th('subGridUnit')} * 10); + z-index: 3; + } + + &:hover ${Extension} { + background: ${th('colorTextReverse')}; + color: ${th('colorPrimary')}; + } + + &:hover ${Icon} { + opacity: 1; + background: ${th('colorPrimary')}; + transform: skewY(6deg) rotate(-6deg); + } + + &:hover::after, + &:hover::before { + transform: scaleX(1); + } ` -const Extension = styled.div` - background: #888; - color: white; - font-size: 12px; - left: 20px; - padding: 2px; + +const ErrorWrapper = styled.div` + background: ${th('colorError')}; + border: calc(${th('borderWidth')} * 2) ${th('borderStyle')} + ${th('colorTextReverse')}; + color: ${th('colorTextReverse')}; + font-size: ${th('fontSizeBaseSmall')}; + letter-spacing: 0.01em; + opacity: 1; + padding: ${th('subGridUnit')} ${th('subGridUnit')}; position: absolute; - right: 0; - text-align: center; - text-transform: uppercase; - top: 20px; + top: 25%; + z-index: 4; ` -const extension = ({ name }) => name.replace(/^.+\./, '') - -const UploadingFile = ({ file, error, progress }) => ( - <Root> - {!!error && <ErrorWrapper>{error}</ErrorWrapper>} - <Icon> - {!!progress && <Progress percent={progress * 100} />} - <Extension>{extension(file)}</Extension> - </Icon> - <Filename>{file.name}</Filename> - </Root> -) -export default UploadingFile +const getFileExtension = ({ name }) => name.replace(/^.+\./, '') -// clock experiment, on hold. -// const Progress = styled.div` -// opacity: 1; -// background: var(--color-primary); -// position: absolute; -// bottom: 10%; -// right: 10%; -// content: ''; -// width: 3px; -// height: 1em; -// display: block; -// // margin-left: 30%; -// transform-origin: 0 0; -// animation: rotate 1s infinite ease-in-out ; -// background-image: -// &:after { -// content: "uploading"; -// display: block; -// position: absolute; -// width: 1em; -// height: 1em; -// } -// -// @keyframes rotate { -// 0% { -// transform: rotate(0) -// } -// 100% { -// transform: rotate(360deg); -// } -// ` +const UploadingFile = ({ file, progress, error, uploaded }) => { + const Root = uploaded ? Uploaded : Uploading + + return ( + <Root> + {!!error && <ErrorWrapper>{error}</ErrorWrapper>} + <Icon> + {!!progress && <Progress>{progress * 100}%</Progress>} + <Extension>{getFileExtension(file)}</Extension> + </Icon> + <Filename> + {uploaded ? ( + <a download={file.name} href={file.url}> + {file.name} + </a> + ) : ( + file.name + )} + </Filename> + </Root> + ) +} + +export default UploadingFile diff --git a/packages/ui/src/atoms/UploadingFile.md b/packages/ui/src/atoms/UploadingFile.md index 7a9db24c9529226c34bc9262ed3ec23ad1a5e091..ee286ca28c23474e1d411348f8c801a29441152c 100644 --- a/packages/ui/src/atoms/UploadingFile.md +++ b/packages/ui/src/atoms/UploadingFile.md @@ -2,10 +2,9 @@ A file that's being uploaded. ```js const file = { - name: faker.system.commonFileName() -}; - -<UploadingFile file={file}/> + name: faker.system.commonFileName(), +} +;<UploadingFile file={file} /> ``` Upload progress is displayed as an overlay. @@ -13,9 +12,8 @@ Upload progress is displayed as an overlay. ```js const file = { name: faker.system.commonFileName(), -}; - -<UploadingFile file={file} progress={0.5}/> +} +;<UploadingFile file={file} progress={0.5} /> ``` An upload error is displayed above the file. @@ -23,7 +21,16 @@ An upload error is displayed above the file. ```js const file = { name: faker.system.commonFileName(), -}; +} +;<UploadingFile file={file} error="There was an error" /> +``` -<UploadingFile file={file} error="There was an error"/> +When the file has finished uploading it can be hovered: + +```js +const file = { + name: faker.system.commonFileName(), + url: faker.internet.url(), +} +;<UploadingFile file={file} uploaded /> ``` diff --git a/packages/ui/src/atoms/ValidatedField.js b/packages/ui/src/atoms/ValidatedField.js index b44af74a8d1e9a882cf0152c30ecc4e6d42fb79b..6dfffe55422c5a94911dc244d405c3f7a0004bf9 100644 --- a/packages/ui/src/atoms/ValidatedField.js +++ b/packages/ui/src/atoms/ValidatedField.js @@ -2,46 +2,51 @@ import React from 'react' import { compose, withHandlers } from 'recompose' import { Field } from 'redux-form' import styled from 'styled-components' +import th from '../helpers/themeHelper' // TODO: pass ...props.input to children automatically? const MessageWrapper = styled.div` - font-family: var(--font-author); - display: inline-block; - font-style: italic; - margin-left: 1em; - margin-top: 10px; + font-family: ${th('fontInterface')}; + display: block; + margin-top: calc(${th('gridUnit')} * -1); ` const Message = styled.div` &:not(:last-child) { - margin-bottom: 10px; + margin-bottom: ${th('subGridUnit')}; } - font-size: 0.9em; - letter-spacing: 0.01em; + font-size: ${th('fontSizeBaseSmall')}; ` const ErrorMessage = Message.extend` - color: var(--color-danger); + color: ${th('colorError')}; ` const WarningMessage = Message.extend` - color: var(--color-warning); + color: ${th('colorWarning')}; ` -const ValidatedFieldComponent = ({ component }) => ({ meta, input }) => ( - <div> - {component(input)} - - {meta.touched && - (meta.error || meta.warning) && ( - <MessageWrapper> - {meta.error && <ErrorMessage>{meta.error}</ErrorMessage>} - {meta.warning && <WarningMessage>{meta.warning}</WarningMessage>} - </MessageWrapper> - )} - </div> -) +const ValidatedFieldComponent = ({ component }) => ({ meta, input }) => { + let validationStatus + if (meta.touched) validationStatus = 'success' + if (meta.touched && meta.error) validationStatus = 'error' + if (meta.touched && meta.warning) validationStatus = 'warning' + + return ( + <div> + {component({ ...input, validationStatus })} + + {meta.touched && + (meta.error || meta.warning) && ( + <MessageWrapper> + {meta.error && <ErrorMessage>{meta.error}</ErrorMessage>} + {meta.warning && <WarningMessage>{meta.warning}</WarningMessage>} + </MessageWrapper> + )} + </div> + ) +} const ValidatedField = ({ fieldComponent, ...rest }) => ( <Field {...rest} component={fieldComponent} /> diff --git a/packages/ui/src/atoms/ValidatedField.md b/packages/ui/src/atoms/ValidatedField.md index 136df6151838d3a57fea4c08e20b4feabaa49aa2..0d8292de4180c0b2afe6824cc53c376ab57da1c9 100644 --- a/packages/ui/src/atoms/ValidatedField.md +++ b/packages/ui/src/atoms/ValidatedField.md @@ -1,33 +1,49 @@ A form field that displays the results of validation. +With an error: + ```js -const { reduxForm } = require('redux-form'); +const { reduxForm } = require('redux-form') -const ValidatedFieldForm = reduxForm({ +const ValidatedFieldForm = reduxForm({ form: 'validated-field-error', - onChange: values => console.log(values) -})(ValidatedField); - -const TextInput = input => <TextField {...input}/>; - -<ValidatedFieldForm - name="error" - validate={() => 'Required'} - component={TextInput}/> + onChange: values => console.log(values), +})(ValidatedField) +;<ValidatedFieldForm + name="error" + validate={() => 'Required'} + component={TextField} +/> ``` +With a warning: + ```js -const { reduxForm } = require('redux-form'); +const { reduxForm } = require('redux-form') -const ValidatedFieldForm = reduxForm({ +const ValidatedFieldForm = reduxForm({ form: 'validated-field-warning', - onChange: values => console.log(values) -})(ValidatedField); + onChange: values => console.log(values), +})(ValidatedField) +;<ValidatedFieldForm + name="warning" + warn={() => 'Expected'} + component={TextField} +/> +``` -const TextInput = input => <TextField {...input}/>; +Or with success color only: -<ValidatedFieldForm - name="warning" - warn={() => 'Expected'} - component={TextInput}/> +```js +const { reduxForm } = require('redux-form') + +const ValidatedFieldForm = reduxForm({ + form: 'validated-field-success', + onChange: values => console.log(values), +})(ValidatedField) +;<ValidatedFieldForm + name="success" + validate={() => undefined} + component={TextField} +/> ``` diff --git a/packages/ui/src/helpers/themeHelper.js b/packages/ui/src/helpers/themeHelper.js new file mode 100644 index 0000000000000000000000000000000000000000..492c2afb9502ec5d95998507972e63cafc5ae059 --- /dev/null +++ b/packages/ui/src/helpers/themeHelper.js @@ -0,0 +1,13 @@ +/* + +A bit of syntactic sugar for styled-components. Lets you replace this: + + ${props => props.theme.colorPrimary} + +with this: + + ${th('colorPrimary')} + +*/ + +export default name => props => props.theme[name] diff --git a/packages/ui/src/index.js b/packages/ui/src/index.js index a8bb669d52436785714fc024035b44e8b6193a31..8dc5c1683a431984431dab1d0e418d0667de6c6f 100644 --- a/packages/ui/src/index.js +++ b/packages/ui/src/index.js @@ -14,12 +14,22 @@ export { default as TextField } from './atoms/TextField' export { default as ValidatedField } from './atoms/ValidatedField' export { default as StateItem } from './atoms/StateItem' export { default as AlignmentBox } from './atoms/AlignmentBox' +export { default as UploadButton } from './atoms/UploadButton' +export { default as Flexbox } from './atoms/Flexbox' +export { default as Link } from './atoms/Link' +export { default as Heading, H1, H2, H3, H4, H5, H6 } from './atoms/Heading' +export { default as ErrorText } from './atoms/ErrorText' +export { default as CenteredColumn } from './atoms/CenteredColumn' +export { default as Section } from './atoms/Section' +export { default as Colorize } from './atoms/Colorize' /* molecules */ export { default as AppBar } from './molecules/AppBar' export { default as Attachments } from './molecules/Attachments' export { default as CheckboxGroup } from './molecules/CheckboxGroup' +export { default as EditableValue } from './molecules/EditableValue' export { default as Files } from './molecules/Files' +export { default as FileUploadList } from './molecules/FileUploadList' export { default as PlainButton } from './molecules/PlainButton' export { default as Supplementary } from './molecules/Supplementary' export { default as RadioGroup } from './molecules/RadioGroup' @@ -28,5 +38,8 @@ export { default as StateList } from './molecules/StateList' export { default as AlignmentBoxWithLabel, } from './molecules/AlignmentBoxWithLabel' -export { default as AlignmentTool } from './molecules/AlignmentTool.js' +export { default as AlignmentTool } from './molecules/AlignmentTool' export { default as Steps } from './molecules/Steps' + +/* helpers */ +export { default as th } from './helpers/themeHelper' diff --git a/packages/ui/src/lib/animation.scss b/packages/ui/src/lib/animation.scss deleted file mode 100644 index 21b94773710e9976eb746ef7a3e142ebf53c7999..0000000000000000000000000000000000000000 --- a/packages/ui/src/lib/animation.scss +++ /dev/null @@ -1,29 +0,0 @@ -/* This file is here to share animations between modules, not used yet.. */ - -@keyframes bounce { - 33% { - transform: translateY(-20px); - } - - 66% { - transform: translateY(0); - } -} - -.bounce { - animation: bounce 1s infinite ease-in-out; -} - -@keyframes rotate { - from { - transform: rotate(0); - } - - to { - transform: rotate(360deg); - } -} - -.rotate { - animation: rotate 1s infinite ease-in-out; -} diff --git a/packages/ui/src/lib/colors.local.scss b/packages/ui/src/lib/colors.local.scss deleted file mode 100644 index 16b8c8ca3a6fd5c4b72f6c2686e018e5afdab2cc..0000000000000000000000000000000000000000 --- a/packages/ui/src/lib/colors.local.scss +++ /dev/null @@ -1,4 +0,0 @@ -.primary { - background-color: var(--color-primary); - color: white; -} diff --git a/packages/ui/src/molecules/AlignmentBoxWithLabel.js b/packages/ui/src/molecules/AlignmentBoxWithLabel.js index 94be09374d7bc37f5440e5c0034b6ce0e6942fcd..2a00f542dca0ccb893f906a668ef143d7060bf60 100644 --- a/packages/ui/src/molecules/AlignmentBoxWithLabel.js +++ b/packages/ui/src/molecules/AlignmentBoxWithLabel.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types' import React from 'react' import styled from 'styled-components' +import th from '../helpers/themeHelper' import AlignmentBox from '../atoms/AlignmentBox' @@ -14,7 +15,7 @@ const Root = styled.div` const Label = styled.span` color: ${blue}; - font-family: var(--font-interface); + font-family: ${th('fontInterface')}; font-size: 16px; font-style: italic; margin-left: ${props => (props.positionRight ? '10px' : '0')}; diff --git a/packages/ui/src/molecules/AppBar.js b/packages/ui/src/molecules/AppBar.js index 26de4325be942ceab5cb079aff58234bd8fab49a..933fc53864be5d2a8afd3da2fe100b7817afb64d 100644 --- a/packages/ui/src/molecules/AppBar.js +++ b/packages/ui/src/molecules/AppBar.js @@ -1,75 +1,34 @@ import React from 'react' -import { Link } from 'react-router-dom' import styled from 'styled-components' +import PropTypes from 'prop-types' +import th from '../helpers/themeHelper' import Icon from '../atoms/Icon' +import Link from '../atoms/Link' const Root = styled.nav` display: flex; + align-items: center; justify-content: space-between; - margin: 1rem; - - a { - color: var(--color-primary); - text-decoration: none; - - &::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; - - &:hover { - color: var(--color-primary); - } - } - } + min-height: calc(${th('gridUnit')} * 2); ` const Section = styled.div` display: flex; ` -const NavLinks = styled.div` - align-items: center; - display: flex; - margin: 0 1rem; - - a { - padding: 0 1rem; - - &:global(.active) { - font-weight: bold; - } - } -` - -const Logo = styled(Link)` - font-weight: bold; - text-decoration: none; - - &::before { - content: ''; +const Logo = styled.span` + margin: calc(${th('subGridUnit')} * 2) 1rem calc(${th('subGridUnit')} * 2) + 1rem; + & svg { + height: calc(${th('gridUnit')} * 2); } ` -const itemStyle = ` +const Item = styled.span` align-items: center; display: inline-flex; - padding: 0 1rem; - - svg { - margin-right: 0.3rem; - } -` - -const Item = styled.span` - ${itemStyle}; -` -const ActionItem = Item.withComponent('a') -const LinkItem = styled(Link)` - ${itemStyle}; + margin: calc(${th('gridUnit')} * 1) 1rem calc(${th('gridUnit')} * 1) 1rem; ` const AppBar = ({ @@ -77,36 +36,60 @@ const AppBar = ({ brand, loginLink = '/login', onLogoutClick, - navLinks, + navLinkComponents, user, - className, }) => ( <Root> <Section> - {brand && <Logo to={brandLink}>{brand}</Logo>} + {brand && ( + <Logo> + <Link to={brandLink}>{brand}</Link> + </Logo> + )} - {navLinks && <NavLinks>{navLinks}</NavLinks>} + {navLinkComponents && + navLinkComponents.map((NavLinkComponent, idx) => ( + <span key={NavLinkComponent.props.to}> + <Item>{NavLinkComponent}</Item> + {idx < navLinkComponents.length - 1 && <Item>|</Item>} + </span> + ))} </Section> <Section> {user && ( <Item> - <Icon size={16}>user</Icon> + <Icon size={2}>user</Icon> {user.username} {user.admin ? ' (admin)' : ''} </Item> )} {user && ( - <ActionItem href="#" onClick={onLogoutClick}> - <Icon size={16}>power</Icon> - Logout - </ActionItem> + <Item> + <Link onClick={onLogoutClick} to="#"> + <Icon size={2}>power</Icon> + Logout + </Link> + </Item> )} - {!user && <LinkItem to={loginLink}>Login</LinkItem>} + {!user && ( + <Item> + <Link to={loginLink}>Login</Link> + </Item> + )} </Section> </Root> ) +AppBar.propTypes = { + brandLink: PropTypes.string, + brand: PropTypes.node, + loginLink: PropTypes.string, + onLogoutClick: PropTypes.func, + navLinkComponents: PropTypes.arrayOf(PropTypes.element), + user: PropTypes.object, +} + export default AppBar diff --git a/packages/ui/src/molecules/AppBar.md b/packages/ui/src/molecules/AppBar.md index 6e9a7e258f7f1a13c137fa2fb4cc99d8e25dbdf7..6adc425c59143ec73e8388c4f0e38c459c3dfbcb 100644 --- a/packages/ui/src/molecules/AppBar.md +++ b/packages/ui/src/molecules/AppBar.md @@ -20,9 +20,8 @@ Can optionally pass navigation links or image for brand. brand={ <svg xmlns="http://www.w3.org/2000/svg" - viewBox="-150 -50 300 300" - width="50" - height="42" + viewBox="-220 -50 440 300" + width="64" fillOpacity="0.5" > <circle cx="0" cy="50" fill="red" r="100" /> @@ -30,10 +29,9 @@ Can optionally pass navigation links or image for brand. <circle cx="-70" cy="150" fill="green" r="100" /> </svg> } - navLinks={ - <div> - <a href="">Home</a> | <a href="">About</a> - </div> - } + navLinkComponents={[ + <Link to="/home">Home</Link>, + <Link to="/about">About</Link>, + ]} /> ``` diff --git a/packages/ui/src/molecules/Attachments.js b/packages/ui/src/molecules/Attachments.js index 0160b88bf90c9fde6e6265238e68b2555ea014fc..039adb1a5dc12569a880c0b341ffe5d935eb19bc 100644 --- a/packages/ui/src/molecules/Attachments.js +++ b/packages/ui/src/molecules/Attachments.js @@ -1,43 +1,15 @@ import React from 'react' -import styled from 'styled-components' -import Files from './Files' +import FileUploadList from './FileUploadList' import Attachment from '../atoms/Attachment' -import Icon from '../atoms/Icon' // TODO: show upload progress -const Root = styled.div` - display: flex; - flex-direction: column; - margin-bottom: 2em; - margin-top: 2em; -` - -const Paperclip = styled.span` - color: gray; - margin-right: 10px; -` - -const Filename = styled.span` - color: gray; -` - -const UploadingFile = ({ file, progress, error }) => ( - <Root> - <Paperclip> - <Icon color="var(--color-local, black)">paperclip</Icon> - </Paperclip> - <Filename>{error || 'Uploading…'}</Filename> - </Root> -) - const Attachments = props => ( - <Files + <FileUploadList {...props} buttonText="Attach file" - uploadedFile={value => <Attachment key={value.url} value={value} />} - uploadingFile={UploadingFile} + FileComponent={Attachment} /> ) diff --git a/packages/ui/src/molecules/Attachments.md b/packages/ui/src/molecules/Attachments.md index 01dbde245a9731b110829726f65d2ad3a928c44f..2245b815f2de64f6aedb8e5ebc2f5d6a9a437760 100644 --- a/packages/ui/src/molecules/Attachments.md +++ b/packages/ui/src/molecules/Attachments.md @@ -1,18 +1,15 @@ A list of files attached to a note, and a button to attach a new file. ```js -const value = [ +const files = [ { name: faker.system.commonFileName(), - url: faker.internet.url() + url: faker.internet.url(), }, { name: faker.system.commonFileName(), - url: faker.internet.url() - } -]; - -<Attachments - value={value} - uploadFile={file => new XMLHttpRequest()}/> + url: faker.internet.url(), + }, +] +;<Attachments files={files} uploadFile={file => new XMLHttpRequest()} /> ``` diff --git a/packages/ui/src/molecules/CheckboxGroup.js b/packages/ui/src/molecules/CheckboxGroup.js index 152bf26ce5e01870b61d93588c33245c92dcf4d7..3181c94243b36754a95adad2b1274dcf7cb35355 100644 --- a/packages/ui/src/molecules/CheckboxGroup.js +++ b/packages/ui/src/molecules/CheckboxGroup.js @@ -1,5 +1,7 @@ import React from 'react' + import Checkbox from '../atoms/Checkbox' +import Flexbox from '../atoms/Flexbox' class CheckboxGroup extends React.Component { constructor(props) { @@ -31,7 +33,7 @@ class CheckboxGroup extends React.Component { const { values } = this.state return ( - <div> + <Flexbox column={!inline}> {options.map(option => ( <Checkbox checked={values.includes(option.value)} @@ -44,7 +46,7 @@ class CheckboxGroup extends React.Component { value={option.value} /> ))} - </div> + </Flexbox> ) } } diff --git a/packages/ui/src/molecules/EditableValue.js b/packages/ui/src/molecules/EditableValue.js new file mode 100644 index 0000000000000000000000000000000000000000..7b99acd6d0e543cfd01ff156ebd96ef6fa88b1f7 --- /dev/null +++ b/packages/ui/src/molecules/EditableValue.js @@ -0,0 +1,101 @@ +import React from 'react' +import styled from 'styled-components' +import PropTypes from 'prop-types' + +import th from '../helpers/themeHelper' +import TextField from '../atoms/TextField' + +const Root = styled.div` + width: calc(${th('gridUnit')} * 14); + margin-bottom: ${props => (props.inline ? '0' : props.theme.gridUnit)}; +` + +const Value = styled.div` + padding: calc(${th('gridUnit')} / 2 - ${th('borderWidth')}) + calc(${th('gridUnit')} / 2); + border: ${th('borderWidth')} ${th('borderStyle')} transparent; + border-radius: ${th('borderRadius')}; + cursor: pointer; + + &:hover { + border-color: ${th('colorSecondary')}; + } +` + +const ESCAPE_KEY_CODE = 27 + +export default class EditableValue extends React.Component { + constructor(props) { + super(props) + this._save = this._save.bind(this) + this._onChange = this._onChange.bind(this) + this._onClick = this._onClick.bind(this) + this._onKeyDown = this._onKeyDown.bind(this) + + this._storedValue = this.props.value + this.state = { + value: this._storedValue, + editing: false, + } + } + + _save() { + if (typeof this.props.onSave === 'function') { + this.props.onSave(this.state.value) + } + this._storedValue = this.state.value + this.setState({ + editing: false, + }) + } + + _onChange(event) { + this.setState({ + value: event.target.value, + }) + } + + _onClick(event) { + this.setState({ + editing: true, + }) + } + + _onKeyDown(event) { + if (event.keyCode === ESCAPE_KEY_CODE) { + this.setState({ + value: this._storedValue, + editing: false, + }) + } + } + + render() { + if (this.state.editing) { + return ( + <Root> + <form onSubmit={this._save}> + <TextField + inline={this.props.inline} + onChange={this._onChange} + onKeyDown={this._onKeyDown} + required={this.props.required} + value={this.state.value} + /> + </form> + </Root> + ) + } + return ( + <Root> + <Value onClick={this._onClick}>{this.state.value}</Value> + </Root> + ) + } +} + +EditableValue.propTypes = { + required: PropTypes.bool, + onSave: PropTypes.func.isRequired, + value: PropTypes.string, +} diff --git a/packages/ui/src/molecules/EditableValue.md b/packages/ui/src/molecules/EditableValue.md new file mode 100644 index 0000000000000000000000000000000000000000..ca7d13e61e7b733ea809edbbaba8501c06ce3fde --- /dev/null +++ b/packages/ui/src/molecules/EditableValue.md @@ -0,0 +1,32 @@ +A field which displays a value which turns into a text field for editing when clicked. + +Hitting Enter saves the value and calls the `onSave` callback. Hitting Escape removes the text field and replaces the initial value. + +```js +initialState = { value: 'Initial value' } +;<div> + <EditableValue + inline + value={state.value} + onSave={newValue => setState({ value: newValue })} + /> + + <div>The current value is "{state.value}".</div> +</div> +``` + +You can set `required` on it, which will prevent it from saving if empty. + +```js +initialState = { value: 'Initial value' } +;<div> + <EditableValue + required + inline + value={state.value} + onSave={newValue => setState({ value: newValue })} + /> + + <div>The current value is "{state.value}".</div> +</div> +``` diff --git a/packages/ui/src/molecules/FileUploadList.js b/packages/ui/src/molecules/FileUploadList.js new file mode 100644 index 0000000000000000000000000000000000000000..bb0dfb13b7fc1e8571659f12080318ad3274ba0b --- /dev/null +++ b/packages/ui/src/molecules/FileUploadList.js @@ -0,0 +1,90 @@ +import React from 'react' +import styled from 'styled-components' +import Upload from './Upload' +import Flexbox from '../atoms/Flexbox' +import UploadButton from '../atoms/UploadButton' + +const Root = styled.div`` + +class FileUploadList extends React.Component { + constructor(props) { + super(props) + + this.state = { + files: props.files || [], + uploads: [], + } + } + + handleClick = () => { + this.fileInput.click() + } + + handleChange = event => { + const { uploads } = this.state + + Array.from(event.target.files).forEach(file => { + uploads.push({ + file, + request: this.props.uploadFile(file), + }) + }) + + this.setState({ uploads }) + } + + handleUploadedFile = ({ file, url }) => { + const files = this.state.files.concat({ + name: file.name, + url, + }) + + const uploads = this.state.uploads.filter( + upload => upload.file.name !== upload.name, + ) + + this.setState({ files, uploads }) + + this.props.onChange(files) + } + + render() { + const { name, buttonText, FileComponent } = this.props + const { files, uploads } = this.state + + return ( + <Root> + <UploadButton + buttonText={buttonText} + name={name} + onChange={this.handleChange} + /> + <Flexbox column> + {uploads && + uploads.map(upload => ( + <Upload + file={upload.file} + handleUploadedFile={this.handleUploadedFile} + key={upload.file.name} + render={props => ( + <FileComponent + file={props.file} + key={props.file.name} + {...props} + /> + )} + request={upload.request} + /> + ))} + + {files && + files.map(file => ( + <FileComponent file={file} key={file.name} uploaded /> + ))} + </Flexbox> + </Root> + ) + } +} + +export default FileUploadList diff --git a/packages/ui/src/molecules/FileUploadList.md b/packages/ui/src/molecules/FileUploadList.md new file mode 100644 index 0000000000000000000000000000000000000000..c329e0cf15ad6b37d2259a5032846fe8fe1302e4 --- /dev/null +++ b/packages/ui/src/molecules/FileUploadList.md @@ -0,0 +1,21 @@ +A list of uploaded files, a list of uploading files and a button to upload more files. + +This is a higher-order component that accepts a component to represent a file and passes `uploaded` to any whose uploads have completed. + +```js +const file = () => ({ + name: faker.system.commonFileName(), + type: faker.system.commonFileType(), + size: faker.random.number(), +}) + +const files = [file(), file(), file()] +;<FileUploadList + files={files} + buttonText="↑ Choose a file to upload" + FileComponent={({ file, progress, error, uploaded }) => ( + <div style={{ color: uploaded ? 'black' : 'gray' }}>{file.name}</div> + )} + uploadFile={file => new XMLHttpRequest()} +/> +``` diff --git a/packages/ui/src/molecules/Files.js b/packages/ui/src/molecules/Files.js index bf2ed87330375bfc62c8b2a96aeacb33abbc2a41..db9e6a036a2799499dffe7d225a34cbaf312f621 100644 --- a/packages/ui/src/molecules/Files.js +++ b/packages/ui/src/molecules/Files.js @@ -1,127 +1 @@ -import React from 'react' -import styled from 'styled-components' -import Upload from './Upload' - -const Root = styled.div`` -const Uploader = styled.div`` - -const FileList = styled.div` - display: flex; - flex-direction: column; - font-size: 0.9em; - font-style: italic; - line-height: 1.5; -` - -const AttachButton = styled.button.attrs({ - type: 'button', -})` - background: transparent; - border: 1px dashed grey; - cursor: pointer; - font-family: inherit; - font-size: inherit; - margin-bottom: 2em; - padding: 10px; -` - -/* Not used for now -.button { - background: transparent; - border: 1px dashed grey; - cursor: pointer; - font-family: inherit; - font-size: inherit; - margin-bottom: 2em; - padding: 10px; -} - -.button:hover { - border-color: var(--color-primary); - color: var(--color-primary); -} -*/ - -class Files extends React.Component { - constructor(props) { - super(props) - - this.state = { - values: props.value || [], - uploads: [], - } - } - - handleClick = () => { - this.fileInput.click() - } - - handleChange = event => { - const { uploads } = this.state - - Array.from(event.target.files).forEach(file => { - uploads.push({ - file, - request: this.props.uploadFile(file), - }) - }) - - this.setState({ uploads }) - } - - handleUploadedFile = ({ file, url }) => { - const values = this.state.values.concat({ - name: file.name, - url, - }) - - const uploads = this.state.uploads.filter( - item => item.file.name !== file.name, - ) - - this.setState({ values, uploads }) - - this.props.onChange(values) - } - - render() { - const { name, buttonText, uploadingFile, uploadedFile } = this.props - const { values, uploads } = this.state - - return ( - <Root> - <Uploader> - <AttachButton onClick={() => this.fileInput.click()}> - {buttonText} - </AttachButton> - - <input - multiple - name={name} - onChange={this.handleChange} - ref={input => (this.fileInput = input)} - style={{ display: 'none' }} - type="file" - /> - </Uploader> - - <FileList> - {uploads && - uploads.map(upload => ( - <Upload - file={upload.file} - handleUploadedFile={this.handleUploadedFile} - key={upload.file.name} - render={uploadingFile} - request={upload.request} - /> - ))} - - {values && values.map(uploadedFile)} - </FileList> - </Root> - ) - } -} - -export default Files +export { default } from './FileUploadList' diff --git a/packages/ui/src/molecules/Files.md b/packages/ui/src/molecules/Files.md index c13062d6641b1f23c7c24cea004b05c2c70a7973..5d48060f3bec05ba678fdf54dcb58cb2e0c5b5eb 100644 --- a/packages/ui/src/molecules/Files.md +++ b/packages/ui/src/molecules/Files.md @@ -1,22 +1 @@ -A list of uploaded files, a list of uploading files and a button to upload more files. - -```js -const file = () => ({ - name: faker.system.commonFileName(), - type: faker.system.commonFileType(), - size: faker.random.number(), -}); - -const value = [ - file(), - file(), - file() -]; - -<Files - value={value} - buttonText="↑ Choose a file to upload" - uploadingFile={({ file, progress, error }) => <div style={{color:'gray'}}>{file.name}</div>} - uploadedFile={value => <div>{value.name}</div>} - uploadFile={file => new XMLHttpRequest()}/> -``` +Deprecated: use `FileUploadList` diff --git a/packages/ui/src/molecules/RadioGroup.js b/packages/ui/src/molecules/RadioGroup.js index 75b2f4f65659459c7f9ef642514d4c3140eaf74e..e46d1eb7b5a70149abc9c3451f69b73f6bb7373e 100644 --- a/packages/ui/src/molecules/RadioGroup.js +++ b/packages/ui/src/molecules/RadioGroup.js @@ -1,5 +1,7 @@ import React from 'react' + import Radio from '../atoms/Radio' +import Flexbox from '../atoms/Flexbox' class RadioGroup extends React.Component { constructor(props) { @@ -21,7 +23,7 @@ class RadioGroup extends React.Component { const { value } = this.state return ( - <div> + <Flexbox inline={!inline}> {options.map(option => ( <Radio checked={option.value === value} @@ -35,7 +37,7 @@ class RadioGroup extends React.Component { value={option.value} /> ))} - </div> + </Flexbox> ) } } diff --git a/packages/ui/src/molecules/Supplementary.js b/packages/ui/src/molecules/Supplementary.js index b876ff92e2202bae6aa5f51dedfa53e2b600edc7..9b296d6ac9cdd4dacabd9830911dd8064834731e 100644 --- a/packages/ui/src/molecules/Supplementary.js +++ b/packages/ui/src/molecules/Supplementary.js @@ -1,21 +1,12 @@ import React from 'react' -import Files from './Files' +import FileUploadList from './FileUploadList' import UploadingFile from '../atoms/UploadingFile' -import File from '../atoms/File' const Supplementary = props => ( - <Files + <FileUploadList {...props} buttonText="↑ Upload files" - uploadedFile={value => <File key={value.url} value={value} />} - uploadingFile={({ file, progress, error }) => ( - <UploadingFile - error={error} - file={file} - key={file.name} - progress={progress} - /> - )} + FileComponent={UploadingFile} /> ) diff --git a/packages/ui/src/molecules/Supplementary.md b/packages/ui/src/molecules/Supplementary.md index c95a11fb4ef2b02637b55caebb0463ab8b451126..88a08b5d2a40150b6c9686ceaf32a9a4caf869cc 100644 --- a/packages/ui/src/molecules/Supplementary.md +++ b/packages/ui/src/molecules/Supplementary.md @@ -1,18 +1,15 @@ A list of supplementary files, and a button to upload a new file. ```js -const value = [ +const files = [ { name: faker.system.commonFileName(), - url: faker.internet.url() + url: faker.internet.url(), }, { name: faker.system.commonFileName(), - url: faker.internet.url() - } -]; - -<Supplementary - value={value} - uploadFile={file => new XMLHttpRequest()}/> + url: faker.internet.url(), + }, +] +;<Supplementary files={files} uploadFile={file => new XMLHttpRequest()} /> ``` diff --git a/packages/ui/src/molecules/Upload.md b/packages/ui/src/molecules/Upload.md new file mode 100644 index 0000000000000000000000000000000000000000..e23b5117808b4d816ce2aeb9f10159948cb1e633 --- /dev/null +++ b/packages/ui/src/molecules/Upload.md @@ -0,0 +1,3 @@ +A higher order component that handles upload state. + +It can be passed a render function to be called with `file`, `progress` and `error` arguments diff --git a/packages/ui/src/molecules/YesOrNo.js b/packages/ui/src/molecules/YesOrNo.js index e2a7e6501c61b6d565782caaba6f9142ad602204..fc5652aa573a5f166f3b14746384a3c295ec109b 100644 --- a/packages/ui/src/molecules/YesOrNo.js +++ b/packages/ui/src/molecules/YesOrNo.js @@ -1,5 +1,6 @@ import React from 'react' import RadioGroup from './RadioGroup' +import Colorize from '../atoms/Colorize' const options = [ { @@ -23,4 +24,4 @@ const YesOrNo = ({ name, value, required, onChange, color = 'black' }) => ( /> ) -export default YesOrNo +export default Colorize(YesOrNo) diff --git a/packages/ui/src/molecules/YesOrNo.md b/packages/ui/src/molecules/YesOrNo.md index 7af8b4c056e1aeeb3e77b70bb0fbfefb13d6e72a..5735d49801151b21c4f34d7a173cc04ed1e4a679 100644 --- a/packages/ui/src/molecules/YesOrNo.md +++ b/packages/ui/src/molecules/YesOrNo.md @@ -14,12 +14,20 @@ If a value is set, one option is selected. /> ``` -A colour can be passed in: +Different statuses have different colours: ```js -<YesOrNo - name="yesornocoloured" - color="darkgreen" - onChange={value => console.log(value)} -/> +<div> + <YesOrNo + primary + name="yesornocoloured" + onChange={value => console.log(value)} + /> + + <YesOrNo + warning + name="yesornocoloured" + onChange={value => console.log(value)} + /> +</div> ``` diff --git a/packages/ui/styleguide.config.js b/packages/ui/styleguide.config.js index 00c0f2396fc676020a0e9c4807aeba98f3101ef6..7fe20e6f8029f98050923428162a52d7df76329a 100644 --- a/packages/ui/styleguide.config.js +++ b/packages/ui/styleguide.config.js @@ -27,13 +27,8 @@ module.exports = { ), Wrapper: require.resolve('@pubsweet/styleguide/src/components/Wrapper'), }, - theme: { - color: { - link: 'cornflowerblue', - }, - fontFamily: { - base: '"Fira Sans", sans-serif', - }, - }, title: 'PubSweet UI style guide', + compilerConfig: { + transforms: { dangerousTaggedTemplateString: true }, + }, } diff --git a/packages/ui/test/AppBar.test.js b/packages/ui/test/AppBar.test.js index 9454e51c2468f797224855128460faa1a5116d3a..0748cd297349403414daae93153eff83eb52d29d 100644 --- a/packages/ui/test/AppBar.test.js +++ b/packages/ui/test/AppBar.test.js @@ -4,61 +4,42 @@ import renderer from 'react-test-renderer' import 'jest-styled-components' import AppBar from '../src/molecules/AppBar' +import TestThemeProvider from './setup/theme' const baseProps = { brand: 'some brand', onLogoutClick: () => {}, } +const render = (props = {}) => + renderer + .create( + <MemoryRouter> + <TestThemeProvider> + <AppBar {...props} {...baseProps} /> + </TestThemeProvider> + </MemoryRouter>, + ) + .toJSON() + describe('AppBar', () => { test('Basic display', () => { - const tree = renderer - .create( - <MemoryRouter> - <AppBar {...baseProps} /> - </MemoryRouter>, - ) - .toJSON() - + const tree = render() expect(tree).toMatchSnapshot() }) test('With admin user', () => { - const tree = renderer - .create( - <MemoryRouter> - <AppBar - {...baseProps} - user={{ username: 'some user', admin: true }} - /> - </MemoryRouter>, - ) - .toJSON() - + const tree = render({ user: { username: 'some user', admin: true } }) expect(tree).toMatchSnapshot() }) test('With nav links', () => { - const tree = renderer - .create( - <MemoryRouter> - <AppBar {...baseProps} navLinks={<div>Links!</div>} /> - </MemoryRouter>, - ) - .toJSON() - + const tree = render({ navLinks: <div>Links!</div> }) expect(tree).toMatchSnapshot() }) test('With custom brand and login links', () => { - const tree = renderer - .create( - <MemoryRouter> - <AppBar {...baseProps} brandLink="/home" loginLink="/signin" /> - </MemoryRouter>, - ) - .toJSON() - + const tree = render({ brandLink: '/home', loginLink: '/signin' }) expect(tree).toMatchSnapshot() }) }) diff --git a/packages/ui/test/Menu.test.js b/packages/ui/test/Menu.test.js index 5c2daaf4a94af49eaa9f10bb0745e9e6c41bae87..b8fc00e1206c7177c32547489cac4b17850c8930 100644 --- a/packages/ui/test/Menu.test.js +++ b/packages/ui/test/Menu.test.js @@ -3,21 +3,29 @@ import renderer from 'react-test-renderer' import 'jest-styled-components' import Menu from '../src/atoms/Menu' +import TestThemeProvider from './setup/theme' const props = { options: [{ label: 'Foo', value: 'foo' }, { label: 'Bar', value: 'bar' }], value: 'foo', } +const render = props => + renderer.create( + <TestThemeProvider> + <Menu {...props} /> + </TestThemeProvider>, + ) + describe('Menu', () => { test('is rendered correctly', () => { - const tree = renderer.create(<Menu {...props} />).toJSON() + const tree = render(props).toJSON() expect(tree).toMatchSnapshot() }) test('is rendered correctly when open', () => { - const menu = renderer.create(<Menu {...props} />) - menu.getInstance().toggleMenu() + const menu = render(props) + menu.root.findByType(Menu).instance.toggleMenu() const tree = menu.toJSON() expect(tree).toMatchSnapshot() }) diff --git a/packages/ui/test/Radio.test.js b/packages/ui/test/Radio.test.js index b6ac08bccd8fb27d8dccb54cc1c37105a6a6ce65..2430bf24779aee88aa9a2f94374fb96013db5fd5 100644 --- a/packages/ui/test/Radio.test.js +++ b/packages/ui/test/Radio.test.js @@ -4,6 +4,7 @@ import renderer from 'react-test-renderer' import 'jest-styled-components' import Radio from '../src/atoms/Radio' +import TestThemeProvider from './setup/theme' const props = { checked: false, @@ -13,16 +14,20 @@ const props = { value: 'TestValue', } -const wrapper = mount(<Radio {...props} />) - describe('Radio', () => { test('is rendered correctly', () => { - const tree = renderer.create(<Radio {...props} />).toJSON() + const tree = renderer + .create( + <TestThemeProvider> + <Radio {...props} /> + </TestThemeProvider>, + ) + .toJSON() expect(tree).toMatchSnapshot() }) test('Input gets the correct props', () => { - const input = wrapper.find('input') + const input = mount(<Radio {...props} />).find('input') expect(input.prop('name')).toBe(props.name) expect(input.prop('value')).toBe(props.value) diff --git a/packages/ui/test/RadioGroup.test.js b/packages/ui/test/RadioGroup.test.js index d73e26a0a4aa0ef5791fc8a66f7bdf48559526ae..96ffaa6a4149ea1a325a315e458121538cde35d4 100644 --- a/packages/ui/test/RadioGroup.test.js +++ b/packages/ui/test/RadioGroup.test.js @@ -6,6 +6,7 @@ import 'jest-styled-components' import Radio from '../src/atoms/Radio' import RadioGroup from '../src/molecules/RadioGroup' +import TestThemeProvider from './setup/theme' const props = { name: 'TestName', @@ -32,7 +33,13 @@ const radios = wrapper.find(Radio) describe('Radio Group', () => { test('is rendered correctly', () => { - const tree = renderer.create(<RadioGroup {...props} />).toJSON() + const tree = renderer + .create( + <TestThemeProvider> + <RadioGroup {...props} /> + </TestThemeProvider>, + ) + .toJSON() expect(tree).toMatchSnapshot() }) diff --git a/packages/ui/test/StateItem.test.js b/packages/ui/test/StateItem.test.js index 86faa3f858a373c0e4ea62a629dfbf8539a6643a..0a15d057585670b675488785e724697a3fe54f62 100644 --- a/packages/ui/test/StateItem.test.js +++ b/packages/ui/test/StateItem.test.js @@ -5,6 +5,7 @@ import 'jest-styled-components' import renderer from 'react-test-renderer' import StateItem from '../src/atoms/StateItem' +import TestThemeProvider from './setup/theme' const myMock = jest.fn() const props = { @@ -18,7 +19,13 @@ const wrapperRendered = render(<StateItem {...props} />) describe('StateItem', () => { test('is rendered correctly', () => { - const tree = renderer.create(<StateItem {...props} />).toJSON() + const tree = renderer + .create( + <TestThemeProvider> + <StateItem {...props} /> + </TestThemeProvider>, + ) + .toJSON() expect(tree).toMatchSnapshot() }) diff --git a/packages/ui/test/StateList.test.js b/packages/ui/test/StateList.test.js index 750b0871c301db53838b8d80f527a8958a08c7d0..a8ee027dc2c468273e7e2c7956ce56759733652d 100644 --- a/packages/ui/test/StateList.test.js +++ b/packages/ui/test/StateList.test.js @@ -6,6 +6,7 @@ import renderer from 'react-test-renderer' import StateItem from '../src/atoms/StateItem' import StateList from '../src/molecules/StateList' +import TestThemeProvider from './setup/theme' const currentValues = { style: 0, @@ -30,7 +31,13 @@ const stateItems = wrapper.find(StateItem) describe('StateList', () => { test('is rendered correctly', () => { - const tree = renderer.create(<StateList {...props} />).toJSON() + const tree = renderer + .create( + <TestThemeProvider> + <StateList {...props} /> + </TestThemeProvider>, + ) + .toJSON() expect(tree).toMatchSnapshot() }) diff --git a/packages/ui/test/YesOrNo.test.js b/packages/ui/test/YesOrNo.test.js index 2268fc2407126f702dab05a97bd2076a4a53da1b..f2725b2913624df114e1b2922b07da2d8e1d2ab5 100644 --- a/packages/ui/test/YesOrNo.test.js +++ b/packages/ui/test/YesOrNo.test.js @@ -5,6 +5,7 @@ import 'jest-styled-components' import YesOrNo from '../src/molecules/YesOrNo' import RadioGroup from '../src/molecules/RadioGroup' +import TestThemeProvider from './setup/theme' const props = { name: 'TestName', @@ -12,11 +13,21 @@ const props = { } const wrapper = shallow(<YesOrNo {...props} />) + .find('Colorized') + .shallow() + .find('YesOrNo') + .shallow() const radio = wrapper.find(RadioGroup) describe('Yes or No', () => { - test('is rendered correclty', () => { - const tree = renderer.create(<YesOrNo {...props} />).toJSON() + test('is rendered corrctly', () => { + const tree = renderer + .create( + <TestThemeProvider> + <YesOrNo {...props} /> + </TestThemeProvider>, + ) + .toJSON() expect(tree).toMatchSnapshot() }) diff --git a/packages/ui/test/__snapshots__/AlignmentBoxWithLabel.test.js.snap b/packages/ui/test/__snapshots__/AlignmentBoxWithLabel.test.js.snap index b56feb42cd944e080cdaf6e832d13be58322678d..9971476b310860b4f376863e62eed6f1d8bfecbb 100644 --- a/packages/ui/test/__snapshots__/AlignmentBoxWithLabel.test.js.snap +++ b/packages/ui/test/__snapshots__/AlignmentBoxWithLabel.test.js.snap @@ -35,7 +35,6 @@ exports[`AlignmentBoxWithLabel is rendered correctly 1`] = ` .c1 { color: #0d78f2; - font-family: var(--font-interface); font-size: 16px; font-style: italic; margin-left: 0; diff --git a/packages/ui/test/__snapshots__/AlignmentTool.test.js.snap b/packages/ui/test/__snapshots__/AlignmentTool.test.js.snap index b57e9903b02bd91a1b36c2afe52a903db0f92846..637dc392152272e6c4362fa6ba83cad2d3ebecd8 100644 --- a/packages/ui/test/__snapshots__/AlignmentTool.test.js.snap +++ b/packages/ui/test/__snapshots__/AlignmentTool.test.js.snap @@ -53,7 +53,6 @@ exports[`AlignmentTool is rendered correctly 1`] = ` .c2 { color: #0d78f2; - font-family: var(--font-interface); font-size: 16px; font-style: italic; margin-left: 0; @@ -65,7 +64,6 @@ exports[`AlignmentTool is rendered correctly 1`] = ` .c5 { color: #0d78f2; - font-family: var(--font-interface); font-size: 16px; font-style: italic; margin-left: 10px; diff --git a/packages/ui/test/__snapshots__/AppBar.test.js.snap b/packages/ui/test/__snapshots__/AppBar.test.js.snap index 5a8041832d54a7670d24d847808f478849f3f697..3c49d60b1d4fcd21eda4c1181d6e15580a6721e8 100644 --- a/packages/ui/test/__snapshots__/AppBar.test.js.snap +++ b/packages/ui/test/__snapshots__/AppBar.test.js.snap @@ -1,33 +1,25 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`AppBar Basic display 1`] = ` +.c3 { + color: black; + cursor: pointer; +} + .c0 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; - margin: 1rem; -} - -.c0 a { - color: var(--color-primary); - text-decoration: none; -} - -.c0 a::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; -} - -.c0 a::before:hover { - color: var(--color-primary); + min-height: calc(32px * 2); } .c1 { @@ -38,15 +30,14 @@ exports[`AppBar Basic display 1`] = ` } .c2 { - font-weight: bold; - text-decoration: none; + margin: calc(8px * 2) 1rem calc(8px * 2) 1rem; } -.c2::before { - content: ''; +.c2 svg { + height: calc(32px * 2); } -.c3 { +.c4 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -55,11 +46,7 @@ exports[`AppBar Basic display 1`] = ` display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; - padding: 0 1rem; -} - -.c3 svg { - margin-right: 0.3rem; + margin: calc(32px * 1) 1rem calc(32px * 1) 1rem; } <nav @@ -68,35 +55,54 @@ exports[`AppBar Basic display 1`] = ` <div className="c1" > - <a + <span className="c2" - href="/" - onClick={[Function]} > - some brand - </a> + <a + className="c3" + href="/" + onClick={[Function]} + > + some brand + </a> + </span> </div> <div className="c1" > - <a - className="c3" - href="/login" - onClick={[Function]} + <span + className="c4" > - Login - </a> + <a + className="c3" + href="/login" + onClick={[Function]} + > + Login + </a> + </span> </div> </nav> `; exports[`AppBar With admin user 1`] = ` -.c4 { +.c5 { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; - width: var(--icon-size); + padding: calc(8px / 2); +} + +.c5 svg { + stroke: black; + width: calc(2 * 8px); + height: calc(2 * 8px); +} + +.c3 { + color: black; + cursor: pointer; } .c0 { @@ -104,28 +110,15 @@ exports[`AppBar With admin user 1`] = ` display: -webkit-flex; display: -ms-flexbox; display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; - margin: 1rem; -} - -.c0 a { - color: var(--color-primary); - text-decoration: none; -} - -.c0 a::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; -} - -.c0 a::before:hover { - color: var(--color-primary); + min-height: calc(32px * 2); } .c1 { @@ -136,31 +129,14 @@ exports[`AppBar With admin user 1`] = ` } .c2 { - font-weight: bold; - text-decoration: none; -} - -.c2::before { - content: ''; -} - -.c3 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - padding: 0 1rem; + margin: calc(8px * 2) 1rem calc(8px * 2) 1rem; } -.c3 svg { - margin-right: 0.3rem; +.c2 svg { + height: calc(32px * 2); } -.c5 { +.c4 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -169,11 +145,7 @@ exports[`AppBar With admin user 1`] = ` display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; - padding: 0 1rem; -} - -.c5 svg { - margin-right: 0.3rem; + margin: calc(32px * 1) 1rem calc(32px * 1) 1rem; } <nav @@ -182,116 +154,115 @@ exports[`AppBar With admin user 1`] = ` <div className="c1" > - <a + <span className="c2" - href="/" - onClick={[Function]} > - some brand - </a> + <a + className="c3" + href="/" + onClick={[Function]} + > + some brand + </a> + </span> </div> <div className="c1" > <span - className="c3" + className="c4" > <span - className="c4" + className="c5" + color="black" + size={2} > <svg - height={16} + fill="none" + height={undefined} + stroke={undefined} + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth="2" viewBox="0 0 24 24" - width={16} + width={undefined} xmlns="http://www.w3.org/2000/svg" > <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" - fill="none" - stroke="var(--color-local, black)" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" /> <circle cx="12" cy="7" - fill="none" r="4" - stroke="var(--color-local, black)" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" /> </svg> </span> some user (admin) </span> - <a - className="c5" - href="#" - onClick={[Function]} + <span + className="c4" > - <span - className="c4" + <a + className="c3" + href="#" + onClick={[Function]} > - <svg - fill="none" - height={16} - stroke="var(--color-local, black)" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" - viewBox="0 0 24 24" - width={16} - xmlns="http://www.w3.org/2000/svg" + <span + className="c5" + color="black" + size={2} > - <path - d="M18.36 6.64a9 9 0 1 1-12.73 0" - /> - <line - x1="12" - x2="12" - y1="2" - y2="12" - /> - </svg> - </span> - Logout - </a> + <svg + fill="none" + height={undefined} + stroke={undefined} + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth="2" + viewBox="0 0 24 24" + width={undefined} + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M18.36 6.64a9 9 0 1 1-12.73 0" + /> + <line + x1="12" + x2="12" + y1="2" + y2="12" + /> + </svg> + </span> + Logout + </a> + </span> </div> </nav> `; exports[`AppBar With custom brand and login links 1`] = ` +.c3 { + color: black; + cursor: pointer; +} + .c0 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; - margin: 1rem; -} - -.c0 a { - color: var(--color-primary); - text-decoration: none; -} - -.c0 a::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; -} - -.c0 a::before:hover { - color: var(--color-primary); + min-height: calc(32px * 2); } .c1 { @@ -302,15 +273,14 @@ exports[`AppBar With custom brand and login links 1`] = ` } .c2 { - font-weight: bold; - text-decoration: none; + margin: calc(8px * 2) 1rem calc(8px * 2) 1rem; } -.c2::before { - content: ''; +.c2 svg { + height: calc(32px * 2); } -.c3 { +.c4 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -319,11 +289,7 @@ exports[`AppBar With custom brand and login links 1`] = ` display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; - padding: 0 1rem; -} - -.c3 svg { - margin-right: 0.3rem; + margin: calc(32px * 1) 1rem calc(32px * 1) 1rem; } <nav @@ -332,56 +298,56 @@ exports[`AppBar With custom brand and login links 1`] = ` <div className="c1" > - <a + <span className="c2" - href="/home" - onClick={[Function]} > - some brand - </a> + <a + className="c3" + href="/home" + onClick={[Function]} + > + some brand + </a> + </span> </div> <div className="c1" > - <a - className="c3" - href="/signin" - onClick={[Function]} + <span + className="c4" > - Login - </a> + <a + className="c3" + href="/signin" + onClick={[Function]} + > + Login + </a> + </span> </div> </nav> `; exports[`AppBar With nav links 1`] = ` +.c3 { + color: black; + cursor: pointer; +} + .c0 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; - margin: 1rem; -} - -.c0 a { - color: var(--color-primary); - text-decoration: none; -} - -.c0 a::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; -} - -.c0 a::before:hover { - color: var(--color-primary); + min-height: calc(32px * 2); } .c1 { @@ -391,33 +357,12 @@ exports[`AppBar With nav links 1`] = ` display: flex; } -.c3 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - margin: 0 1rem; -} - -.c3 a { - padding: 0 1rem; -} - -.c3 a:global(.active) { - font-weight: bold; -} - .c2 { - font-weight: bold; - text-decoration: none; + margin: calc(8px * 2) 1rem calc(8px * 2) 1rem; } -.c2::before { - content: ''; +.c2 svg { + height: calc(32px * 2); } .c4 { @@ -429,11 +374,7 @@ exports[`AppBar With nav links 1`] = ` display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; - padding: 0 1rem; -} - -.c4 svg { - margin-right: 0.3rem; + margin: calc(32px * 1) 1rem calc(32px * 1) 1rem; } <nav @@ -442,31 +383,32 @@ exports[`AppBar With nav links 1`] = ` <div className="c1" > - <a + <span className="c2" - href="/" - onClick={[Function]} > - some brand - </a> - <div - className="c3" - > - <div> - Links! - </div> - </div> + <a + className="c3" + href="/" + onClick={[Function]} + > + some brand + </a> + </span> </div> <div className="c1" > - <a + <span className="c4" - href="/login" - onClick={[Function]} > - Login - </a> + <a + className="c3" + href="/login" + onClick={[Function]} + > + Login + </a> + </span> </div> </nav> `; diff --git a/packages/ui/test/__snapshots__/Files.test.js.snap b/packages/ui/test/__snapshots__/Files.test.js.snap index e51113233ef152a4dec1bee8fbbf8880a2ea36ff..5c58698a4ada03090bac7303438530351ff5c893 100644 --- a/packages/ui/test/__snapshots__/Files.test.js.snap +++ b/packages/ui/test/__snapshots__/Files.test.js.snap @@ -9,27 +9,22 @@ exports[`Files renders correctly 1`] = ` -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; - font-size: 0.9em; - font-style: italic; - line-height: 1.5; + -webkit-box-pack: left; + -webkit-justify-content: left; + -ms-flex-pack: left; + justify-content: left; } .c0 { background: transparent; - border: 1px dashed grey; + border: dashed; cursor: pointer; - font-family: inherit; - font-size: inherit; - margin-bottom: 2em; - padding: 10px; } <div className="" > - <div - className="" - > + <div> <button className="c0" onClick={[Function]} @@ -51,10 +46,6 @@ exports[`Files renders correctly 1`] = ` </div> <div className="c1" - > - <div> - IMG_4346.JPG - </div> - </div> + /> </div> `; diff --git a/packages/ui/test/__snapshots__/Menu.test.js.snap b/packages/ui/test/__snapshots__/Menu.test.js.snap index f5a6d6fbce5d49a9979c11eea1974d231acbdfef..0a4659f64af4d0a5c0b519b48a30d760492e188e 100644 --- a/packages/ui/test/__snapshots__/Menu.test.js.snap +++ b/packages/ui/test/__snapshots__/Menu.test.js.snap @@ -2,42 +2,82 @@ exports[`Menu is rendered correctly 1`] = ` .c0 { - font-size: 1em; + max-width: calc(32px * 14); + margin-bottom: 32px; } .c2 { background: transparent; - border: none; + border: 1px solid grey; + border-radius: 8px; cursor: pointer; font-family: inherit; - font-size: 1.2em; - border-left: 2px solid lightgrey; - color: inherit; + width: 100%; + height: calc(32px * 2); + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } .c2:hover { - border-left: 2px solid var(--color-primary); - color: var(--color-primary); + border-color: black; } .c3 { - display: inline-block; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: left; + padding: 0 calc(32px / 2); +} + +.c3:hover { + color: black; +} + +.c4 { + border-left: 1px solid grey; + width: calc(32px * 2); + height: calc(32px * 2 - 1px * 2); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.c5 { font-size: 50%; - margin-left: 10px; -webkit-transition: -webkit-transform 0.2s; -webkit-transition: transform 0.2s; transition: transform 0.2s; - -webkit-transform: scaleX(2.2) scaleY(1.2); - -ms-transform: scaleX(2.2) scaleY(1.2); - transform: scaleX(2.2) scaleY(1.2); + -webkit-transform: scaleX(2) scaleY(1.2); + -ms-transform: scaleX(2) scaleY(1.2); + transform: scaleX(2) scaleY(1.2); } .c1 { position: relative; } -.c4 { +.c6 { position: absolute; + left: 0; + right: 0; } <div @@ -48,28 +88,30 @@ exports[`Menu is rendered correctly 1`] = ` className="c1" role="listbox" > - <div - className="" + <button + className="c2" + onClick={[Function]} + open={false} + type="button" > - <button - className="c2" - onClick={[Function]} - open={false} - type="button" + <span + className="c3" + > + Foo + </span> + <span + className="c4" > - <span> - Foo - </span> <span - className="c3" + className="c5" open={false} > ▼ </span> - </button> - </div> + </span> + </button> <div - className="c4" + className="c6" /> </div> </div> @@ -77,85 +119,138 @@ exports[`Menu is rendered correctly 1`] = ` exports[`Menu is rendered correctly when open 1`] = ` .c0 { - font-size: 1em; + max-width: calc(32px * 14); + margin-bottom: 32px; } .c2 { background: transparent; - border: none; + border: 1px solid grey; + border-radius: 8px; cursor: pointer; font-family: inherit; - font-size: 1.2em; - border-left: 2px solid var(--color-primary); - color: var(--color-primary); + width: 100%; + height: calc(32px * 2); + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } .c2:hover { - border-left: 2px solid var(--color-primary); - color: var(--color-primary); + border-color: black; } .c3 { - display: inline-block; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: left; + padding: 0 calc(32px / 2); +} + +.c3:hover { + color: black; +} + +.c4 { + border-left: 1px solid grey; + width: calc(32px * 2); + height: calc(32px * 2 - 1px * 2); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.c5 { font-size: 50%; - margin-left: 10px; -webkit-transition: -webkit-transform 0.2s; -webkit-transition: transform 0.2s; transition: transform 0.2s; - -webkit-transform: scaleX(2.2) scaleY(-1.2); - -ms-transform: scaleX(2.2) scaleY(-1.2); - transform: scaleX(2.2) scaleY(-1.2); + -webkit-transform: scaleX(2) scaleY(-1.2); + -ms-transform: scaleX(2) scaleY(-1.2); + transform: scaleX(2) scaleY(-1.2); } .c1 { position: relative; } -.c4 { +.c6 { position: absolute; + left: 0; + right: 0; } -.c5 { - background-color: white; - border-bottom: 2px solid var(--color-primary); - border-left: 2px solid var(--color-primary); - left: 0; - padding-bottom: 0.5em; - padding-top: 0.5em; +.c7 { position: absolute; top: 0; - -webkit-transition: opacity 2s; - transition: opacity 2s; - width: 0; - z-index: 10; - min-width: 10em; - opacity: 1; + left: 0; + right: 0; + background-color: white; + border: 1px solid grey; + border-radius: 8px; + overflow: hidden; } -.c6 { - color: black; +.c8 { font-weight: 600; cursor: pointer; - font-family: var(--font-author); - padding: 10px; + padding: calc(8px - 1px * 2) calc(8px * 2); + border: 1px solid transparent; + border-width: 1px 0 1px 0; white-space: nowrap; } -.c6:hover { - color: var(--color-primary); +.c8:hover { + background: grey; + border-color: grey; } -.c7 { +.c8:first-child:hover { + border-top-color: grey; +} + +.c8:last-child:hover { + border-bottom-color: grey; +} + +.c9 { color: #444; font-weight: inherit; cursor: pointer; - font-family: var(--font-author); - padding: 10px; + padding: calc(8px - 1px * 2) calc(8px * 2); + border: 1px solid transparent; + border-width: 1px 0 1px 0; white-space: nowrap; } -.c7:hover { - color: var(--color-primary); +.c9:hover { + background: grey; + border-color: grey; +} + +.c9:first-child:hover { + border-top-color: grey; +} + +.c9:last-child:hover { + border-bottom-color: grey; } <div @@ -166,36 +261,38 @@ exports[`Menu is rendered correctly when open 1`] = ` className="c1" role="listbox" > - <div - className="" + <button + className="c2" + onClick={[Function]} + open={true} + type="button" > - <button - className="c2" - onClick={[Function]} - open={true} - type="button" + <span + className="c3" + > + Foo + </span> + <span + className="c4" > - <span> - Foo - </span> <span - className="c3" + className="c5" open={true} > ▼ </span> - </button> - </div> + </span> + </button> <div - className="c4" + className="c6" > <div - className="c5" + className="c7" open={true} > <div aria-selected={true} - className="c6" + className="c8" onClick={[Function]} onKeyPress={[Function]} role="option" @@ -205,7 +302,7 @@ exports[`Menu is rendered correctly when open 1`] = ` </div> <div aria-selected={false} - className="c7" + className="c9" onClick={[Function]} onKeyPress={[Function]} role="option" diff --git a/packages/ui/test/__snapshots__/Radio.test.js.snap b/packages/ui/test/__snapshots__/Radio.test.js.snap index 6bcbc103f1ed180b6db8fb86dca90b119dd67c5f..42b7665512ef32b1dbba430de792c4c289585c48 100644 --- a/packages/ui/test/__snapshots__/Radio.test.js.snap +++ b/packages/ui/test/__snapshots__/Radio.test.js.snap @@ -6,26 +6,24 @@ exports[`Radio is rendered correctly 1`] = ` } .c3 { - --local-border-size: 2px; - --local-borderTwo-size: 1px; display: inline-block; content: ' '; - width: 0.6em; - height: 0.6em; + width: calc(8px * 2); + height: calc(8px * 2); vertical-align: center; - margin-left: 0.2em; - margin-right: 0.6em; - border: var(--local-border-size) solid white; + margin-left: 8px; + margin-right: 8px; + border: calc(8px / 4) solid white; border-radius: 50%; - -webkit-transition: border 0.2s ease; - transition: border 0.2s ease; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; color: black; } .c5 { display: inline-block; font-family: inherit; - font-size: 1em; + font-size: 18px; font-style: italic; } @@ -39,31 +37,32 @@ exports[`Radio is rendered correctly 1`] = ` display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-transition: all 2s; - transition: all 2s; + -webkit-transition: all 1s; + transition: all 1s; + min-height: 32px; color: black; } .c0:not(:last-child) { margin-right: 0; - margin-bottom: 0.5rem; + margin-bottom: 0; } .c0 .c2 { background: transparent; - box-shadow: 0 0 0 var(--local-borderTwo-size) currentcolor; + box-shadow: 0 0 0 1px currentcolor; } .c0:hover .c4 { - color: var(--color-primary); + color: black; } .c0:hover .c2 { -webkit-animation-name: kLnLOV; animation-name: kLnLOV; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - box-shadow: 0 0 0 var(--local-borderTwo-size) var(--color-primary); + -webkit-animation-duration: 0.2s; + animation-duration: 0.2s; + box-shadow: 0 0 0 1px black; } <label diff --git a/packages/ui/test/__snapshots__/RadioGroup.test.js.snap b/packages/ui/test/__snapshots__/RadioGroup.test.js.snap index f8a0693c655fe308eca9f0f930a2fbb94760d44a..71e8272928972bab26d886359f64ea4a9d8d63ce 100644 --- a/packages/ui/test/__snapshots__/RadioGroup.test.js.snap +++ b/packages/ui/test/__snapshots__/RadioGroup.test.js.snap @@ -1,35 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Radio Group is rendered correctly 1`] = ` -.c1 { +.c2 { display: none; } -.c3 { - --local-border-size: 2px; - --local-borderTwo-size: 1px; +.c4 { display: inline-block; content: ' '; - width: 0.6em; - height: 0.6em; + width: calc(8px * 2); + height: calc(8px * 2); vertical-align: center; - margin-left: 0.2em; - margin-right: 0.6em; - border: var(--local-border-size) solid white; + margin-left: 8px; + margin-right: 8px; + border: calc(8px / 4) solid white; border-radius: 50%; - -webkit-transition: border 0.2s ease; - transition: border 0.2s ease; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; color: black; } -.c5 { +.c6 { display: inline-block; font-family: inherit; - font-size: 1em; + font-size: 18px; font-style: italic; } -.c0 { +.c1 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -39,42 +37,59 @@ exports[`Radio Group is rendered correctly 1`] = ` display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-transition: all 2s; - transition: all 2s; + -webkit-transition: all 1s; + transition: all 1s; + min-height: 32px; color: black; } -.c0:not(:last-child) { +.c1:not(:last-child) { margin-right: 0; - margin-bottom: 0.5rem; + margin-bottom: 0; } -.c0 .c2 { +.c1 .c3 { background: transparent; - box-shadow: 0 0 0 var(--local-borderTwo-size) currentcolor; + box-shadow: 0 0 0 1px currentcolor; } -.c0:hover .c4 { - color: var(--color-primary); +.c1:hover .c5 { + color: black; } -.c0:hover .c2 { +.c1:hover .c3 { -webkit-animation-name: kLnLOV; animation-name: kLnLOV; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - box-shadow: 0 0 0 var(--local-borderTwo-size) var(--color-primary); + -webkit-animation-duration: 0.2s; + animation-duration: 0.2s; + box-shadow: 0 0 0 1px black; +} + +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: left; + -webkit-justify-content: left; + -ms-flex-pack: left; + justify-content: left; } -<div> +<div + className="c0" +> <label checked={false} - className="c0" + className="c1" color="black" > <input checked={false} - className="c1" + className="c2" disabled={undefined} name="TestName" onChange={[Function]} @@ -84,12 +99,12 @@ exports[`Radio Group is rendered correctly 1`] = ` /> <span - className="c2 c3" + className="c3 c4" color="black" /> <span - className="c4 c5" + className="c5 c6" > Yes @@ -99,12 +114,12 @@ exports[`Radio Group is rendered correctly 1`] = ` </label> <label checked={false} - className="c0" + className="c1" color="black" > <input checked={false} - className="c1" + className="c2" disabled={undefined} name="TestName" onChange={[Function]} @@ -114,12 +129,12 @@ exports[`Radio Group is rendered correctly 1`] = ` /> <span - className="c2 c3" + className="c3 c4" color="black" /> <span - className="c4 c5" + className="c5 c6" > No @@ -129,12 +144,12 @@ exports[`Radio Group is rendered correctly 1`] = ` </label> <label checked={false} - className="c0" + className="c1" color="black" > <input checked={false} - className="c1" + className="c2" disabled={undefined} name="TestName" onChange={[Function]} @@ -144,12 +159,12 @@ exports[`Radio Group is rendered correctly 1`] = ` /> <span - className="c2 c3" + className="c3 c4" color="black" /> <span - className="c4 c5" + className="c5 c6" > Maybe diff --git a/packages/ui/test/__snapshots__/StateItem.test.js.snap b/packages/ui/test/__snapshots__/StateItem.test.js.snap index 3f77c3a5f04080d5bd4c19ae4435d32ee95a2841..e3eb0a17826f1fe484933b3152904d8a390bbc71 100644 --- a/packages/ui/test/__snapshots__/StateItem.test.js.snap +++ b/packages/ui/test/__snapshots__/StateItem.test.js.snap @@ -3,10 +3,9 @@ exports[`StateItem is rendered correctly 1`] = ` .c0 { cursor: pointer; - font-family: var(--font-interface); + font-family: sans-serif; font-size: 16px; font-style: italic; - padding: 0; } .c0:focus { @@ -14,9 +13,9 @@ exports[`StateItem is rendered correctly 1`] = ` } .c0:hover { - color: #404040; - -webkit-transition: 0.25s ease-in-out 0s; - transition: 0.25s ease-in-out 0s; + color: black; + -webkit-transition: ease; + transition: ease; } <span diff --git a/packages/ui/test/__snapshots__/StateList.test.js.snap b/packages/ui/test/__snapshots__/StateList.test.js.snap index 830dbfac9789bfd5fedb2db07696c0aeba5ba907..3cad7297cf2819ea347e99dacf2c9a23af95716f 100644 --- a/packages/ui/test/__snapshots__/StateList.test.js.snap +++ b/packages/ui/test/__snapshots__/StateList.test.js.snap @@ -3,10 +3,9 @@ exports[`StateList is rendered correctly 1`] = ` .c2 { cursor: pointer; - font-family: var(--font-interface); + font-family: sans-serif; font-size: 16px; font-style: italic; - padding: 0; } .c2:focus { @@ -14,9 +13,9 @@ exports[`StateList is rendered correctly 1`] = ` } .c2:hover { - color: #404040; - -webkit-transition: 0.25s ease-in-out 0s; - transition: 0.25s ease-in-out 0s; + color: black; + -webkit-transition: ease; + transition: ease; } .c0 { diff --git a/packages/ui/test/__snapshots__/YesOrNo.test.js.snap b/packages/ui/test/__snapshots__/YesOrNo.test.js.snap index 8a6c833c4f6768fbf96ded9bc686b560d5d10d91..fed94e3bb75893daba6abef694eaf61083ecc81d 100644 --- a/packages/ui/test/__snapshots__/YesOrNo.test.js.snap +++ b/packages/ui/test/__snapshots__/YesOrNo.test.js.snap @@ -1,80 +1,95 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Yes or No is rendered correclty 1`] = ` -.c1 { +exports[`Yes or No is rendered corrctly 1`] = ` +.c2 { display: none; } -.c3 { - --local-border-size: 2px; - --local-borderTwo-size: 1px; +.c4 { display: inline-block; content: ' '; - width: 0.6em; - height: 0.6em; + width: calc(8px * 2); + height: calc(8px * 2); vertical-align: center; - margin-left: 0.2em; - margin-right: 0.6em; - border: var(--local-border-size) solid white; + margin-left: 8px; + margin-right: 8px; + border: calc(8px / 4) solid white; border-radius: 50%; - -webkit-transition: border 0.2s ease; - transition: border 0.2s ease; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; color: black; } -.c5 { +.c6 { display: inline-block; font-family: inherit; - font-size: 1em; + font-size: 18px; font-style: italic; } -.c0 { +.c1 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; cursor: pointer; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-transition: all 2s; - transition: all 2s; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-transition: all 1s; + transition: all 1s; + min-height: 32px; color: black; } -.c0:not(:last-child) { - margin-right: 0; - margin-bottom: 0.5rem; +.c1:not(:last-child) { + margin-right: 32px; + margin-bottom: 0; } -.c0 .c2 { +.c1 .c3 { background: transparent; - box-shadow: 0 0 0 var(--local-borderTwo-size) currentcolor; + box-shadow: 0 0 0 1px currentcolor; } -.c0:hover .c4 { - color: var(--color-primary); +.c1:hover .c5 { + color: black; } -.c0:hover .c2 { +.c1:hover .c3 { -webkit-animation-name: kLnLOV; animation-name: kLnLOV; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - box-shadow: 0 0 0 var(--local-borderTwo-size) var(--color-primary); + -webkit-animation-duration: 0.2s; + animation-duration: 0.2s; + box-shadow: 0 0 0 1px black; +} + +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: left; + -webkit-justify-content: left; + -ms-flex-pack: left; + justify-content: left; } -<div> +<div + className="c0" +> <label checked={false} - className="c0" + className="c1" color="black" > <input checked={false} - className="c1" + className="c2" disabled={undefined} name="TestName" onChange={[Function]} @@ -84,12 +99,12 @@ exports[`Yes or No is rendered correclty 1`] = ` /> <span - className="c2 c3" + className="c3 c4" color="black" /> <span - className="c4 c5" + className="c5 c6" > Yes @@ -99,12 +114,12 @@ exports[`Yes or No is rendered correclty 1`] = ` </label> <label checked={false} - className="c0" + className="c1" color="black" > <input checked={false} - className="c1" + className="c2" disabled={undefined} name="TestName" onChange={[Function]} @@ -114,12 +129,12 @@ exports[`Yes or No is rendered correclty 1`] = ` /> <span - className="c2 c3" + className="c3 c4" color="black" /> <span - className="c4 c5" + className="c5 c6" > No diff --git a/packages/ui/test/setup/theme.js b/packages/ui/test/setup/theme.js new file mode 100644 index 0000000000000000000000000000000000000000..f91cbc25d534aa96e77bba0c1b8b270dbd6c7fa7 --- /dev/null +++ b/packages/ui/test/setup/theme.js @@ -0,0 +1,60 @@ +import React from 'react' +import { ThemeProvider } from 'styled-components' + +const theme = { + /* Colors */ + colorBackground: 'white', + colorPrimary: 'black', + colorSecondary: 'grey', + colorQuiet: 'grey', + colorFurniture: 'grey', + colorBorder: 'grey', + colorBackgroundHue: 'grey', + colorSuccess: 'green', + colorError: 'red', + colorWarning: 'yellow', + colorText: 'black', + colorTextReverse: 'white', + colorTextPlaceholder: 'grey', + + /* Text variables */ + fontInterface: 'sans-serif', + fontHeading: 'serif', + fontReading: 'serif', + fontWriting: 'monospace', + fontSizeBase: '18px', + fontSizeBaseSmall: '16px', + fontSizeHeading1: '36px', + fontSizeHeading2: '32px', + fontSizeHeading3: '29px', + fontSizeHeading4: '26px', + fontSizeHeading5: '23px', + fontSizeHeading6: '20px', + fontLineHeight: '32px', + + /* Spacing */ + gridUnit: '32px', + subGridUnit: '8px', + + /* Border */ + borderRadius: '8px', + borderWidth: '1px', + borderStyle: 'solid', + + /* Shadow (for tooltip) */ + boxShadow: 'none', + + /* Transition */ + transitionDuration: '1s', + transitionDurationM: '0.5s', + transitionDurationS: '0.2s', + transitionDurationXs: '0.1s', + transitionTimingFunction: 'ease', + transitionDelay: '500ms', +} + +const TestThemeProvider = ({ children }) => ( + <ThemeProvider theme={theme}>{children}</ThemeProvider> +) + +export default TestThemeProvider diff --git a/yarn.lock b/yarn.lock index 818777fa447f980c9e8a60a525c75b7ecf2626fc..2c4a3e08f30219ab60db7007717acb4d2adbfb7f 100755 --- a/yarn.lock +++ b/yarn.lock @@ -2,114 +2,104 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.31.tgz#473d021ecc573a2cce1c07d5b509d5215f46ba35" +"@babel/code-frame@7.0.0-beta.40", "@babel/code-frame@^7.0.0-beta.35", "@babel/code-frame@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6" dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + "@babel/highlight" "7.0.0-beta.40" -"@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz#c0af5930617e55e050336838e3a3670983b0b2b2" +"@babel/generator@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.40.tgz#ab61f9556f4f71dbd1138949c795bb9a21e302ea" dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + "@babel/types" "7.0.0-beta.40" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" -"@babel/helper-function-name@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.31.tgz#afe63ad799209989348b1109b44feb66aa245f57" +"@babel/helper-function-name@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz#9d033341ab16517f40d43a73f2d81fc431ccd7b6" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.31" - "@babel/template" "7.0.0-beta.31" - "@babel/traverse" "7.0.0-beta.31" - "@babel/types" "7.0.0-beta.31" + "@babel/helper-get-function-arity" "7.0.0-beta.40" + "@babel/template" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" -"@babel/helper-get-function-arity@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.31.tgz#1176d79252741218e0aec872ada07efb2b37a493" +"@babel/helper-get-function-arity@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz#ac0419cf067b0ec16453e1274f03878195791c6e" + dependencies: + "@babel/types" "7.0.0-beta.40" + +"@babel/highlight@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255" dependencies: - "@babel/types" "7.0.0-beta.31" + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" -"@babel/runtime@^7.0.0-beta.38", "@babel/runtime@^7.0.0-beta.40": +"@babel/runtime@^7.0.0-beta.38": version "7.0.0-beta.40" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.40.tgz#8e3b8f1d2d8639d010e991a7e99c1d9ef578f886" dependencies: core-js "^2.5.3" regenerator-runtime "^0.11.1" -"@babel/template@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.31.tgz#577bb29389f6c497c3e7d014617e7d6713f68bda" +"@babel/template@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.40.tgz#034988c6424eb5c3268fe6a608626de1f4410fc8" dependencies: - "@babel/code-frame" "7.0.0-beta.31" - "@babel/types" "7.0.0-beta.31" - babylon "7.0.0-beta.31" + "@babel/code-frame" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" + babylon "7.0.0-beta.40" lodash "^4.2.0" -"@babel/traverse@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.31.tgz#db399499ad74aefda014f0c10321ab255134b1df" +"@babel/traverse@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.40.tgz#d140e449b2e093ef9fe1a2eecc28421ffb4e521e" dependencies: - "@babel/code-frame" "7.0.0-beta.31" - "@babel/helper-function-name" "7.0.0-beta.31" - "@babel/types" "7.0.0-beta.31" - babylon "7.0.0-beta.31" + "@babel/code-frame" "7.0.0-beta.40" + "@babel/generator" "7.0.0-beta.40" + "@babel/helper-function-name" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" + babylon "7.0.0-beta.40" debug "^3.0.1" - globals "^10.0.0" + globals "^11.1.0" invariant "^2.2.0" lodash "^4.2.0" -"@babel/types@7.0.0-beta.31": - version "7.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.31.tgz#42c9c86784f674c173fb21882ca9643334029de4" +"@babel/types@7.0.0-beta.40", "@babel/types@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.40.tgz#25c3d7aae14126abe05fcb098c65a66b6d6b8c14" dependencies: esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^2.0.0" "@commitlint/cli@^6.0.5": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-6.0.5.tgz#c159c41434d24167c2f52c29e81cffc1959a6d0f" + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-6.1.2.tgz#dc4c7507ab2dee92a821e9753556f1ac1e261883" dependencies: - "@commitlint/core" "^6.0.5" + "@commitlint/format" "^6.1.2" + "@commitlint/lint" "^6.1.2" + "@commitlint/load" "^6.1.2" + "@commitlint/read" "^6.1.2" babel-polyfill "6.26.0" - chalk "2.3.0" + chalk "2.3.1" get-stdin "5.0.1" - lodash.merge "4.6.0" + lodash.merge "4.6.1" lodash.pick "4.4.0" meow "3.7.0" "@commitlint/config-conventional@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-6.0.4.tgz#f5332c3aaf5423f2fa62287849859a9b769484f3" - -"@commitlint/core@^6.0.5": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@commitlint/core/-/core-6.0.5.tgz#a0f174f08a377eb9e5571bf31c2c9f60964a6ed9" - dependencies: - "@commitlint/execute-rule" "^6.0.4" - "@commitlint/is-ignored" "^6.0.4" - "@commitlint/parse" "^6.0.4" - "@commitlint/resolve-extends" "^6.0.4" - "@commitlint/rules" "^6.0.4" - "@commitlint/top-level" "^6.0.5" - "@marionebl/sander" "^0.6.0" - babel-runtime "^6.23.0" - chalk "^2.0.1" - cosmiconfig "^4.0.0" - git-raw-commits "^1.3.0" - lodash.merge "4.6.0" - lodash.mergewith "4.6.0" - lodash.pick "4.4.0" - lodash.topairs "4.3.0" - resolve-from "4.0.0" + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-6.1.2.tgz#66e328adf6051a7efb5e01c55f49bf78ebb15f08" -"@commitlint/ensure@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-6.0.4.tgz#c5ae6d0a24797e58caceee61608c6ac9ced64691" +"@commitlint/ensure@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-6.1.2.tgz#c27a69e213cfbe47023261f4169559c154378c51" dependencies: lodash.camelcase "4.3.0" lodash.kebabcase "4.1.1" @@ -117,56 +107,96 @@ lodash.startcase "4.4.0" lodash.upperfirst "4.3.1" -"@commitlint/execute-rule@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-6.0.4.tgz#5db080be51b2cc057028ce24a1cd9142283774fc" +"@commitlint/execute-rule@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-6.1.2.tgz#ef8c7ee10726f863211d494be8e4eaf001a0e258" dependencies: babel-runtime "6.26.0" -"@commitlint/is-ignored@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-6.0.4.tgz#cc4cde7be8d101e848fa70b37381687fa837c417" +"@commitlint/format@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-6.1.2.tgz#f46fa96f874369c166b420e3ed59f745c3bb3d49" + dependencies: + babel-runtime "^6.23.0" + chalk "^2.0.1" + +"@commitlint/is-ignored@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-6.1.2.tgz#254d5bab480823adcf4fa945cae1ea8d533262e1" dependencies: semver "5.5.0" -"@commitlint/message@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-6.0.4.tgz#80fe320285cab5f0f4ab3847e8d3b98a3fd1e389" +"@commitlint/lint@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-6.1.2.tgz#a7c5bc051eb0539d41924fb0c11af13bfe186cb2" + dependencies: + "@commitlint/is-ignored" "^6.1.2" + "@commitlint/parse" "^6.1.2" + "@commitlint/rules" "^6.1.2" + babel-runtime "^6.23.0" + lodash.topairs "4.3.0" -"@commitlint/parse@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-6.0.4.tgz#3d7403b024200d32d66e913ee464eaf46bbac075" +"@commitlint/load@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-6.1.2.tgz#20d16d2fd72bd3d1ed6a22b7234b1fd55c95fbdc" + dependencies: + "@commitlint/execute-rule" "^6.1.2" + "@commitlint/resolve-extends" "^6.1.2" + babel-runtime "^6.23.0" + cosmiconfig "^4.0.0" + lodash.merge "4.6.1" + lodash.mergewith "4.6.1" + lodash.pick "4.4.0" + lodash.topairs "4.3.0" + resolve-from "4.0.0" + +"@commitlint/message@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-6.1.2.tgz#7f0f71858bae2310ab45886aeff3f8ae48483c21" + +"@commitlint/parse@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-6.1.2.tgz#920c82a41ac28b0169f1a5d4ad4115cefda96205" dependencies: conventional-changelog-angular "^1.3.3" conventional-commits-parser "^2.1.0" -"@commitlint/resolve-extends@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-6.0.4.tgz#8cce624e856df7582d5621c882e83f69b44c18c4" +"@commitlint/read@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-6.1.2.tgz#6f39d62cc120c139d075ec205ed1dbfc681f173f" + dependencies: + "@commitlint/top-level" "^6.1.2" + "@marionebl/sander" "^0.6.0" + babel-runtime "^6.23.0" + git-raw-commits "^1.3.0" + +"@commitlint/resolve-extends@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-6.1.2.tgz#b48b7195243dc9381bcf341c2fcb6b1e803da8b4" dependencies: babel-runtime "6.26.0" - lodash.merge "4.6.0" + lodash.merge "4.6.1" lodash.omit "4.5.0" require-uncached "^1.0.3" resolve-from "^4.0.0" resolve-global "^0.1.0" -"@commitlint/rules@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-6.0.4.tgz#6891d7e37908d6438dc3b382f193774ab4a36479" +"@commitlint/rules@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-6.1.2.tgz#2ceffa7bf69d1fe327bcb178f7a71bd4e094e355" dependencies: - "@commitlint/ensure" "^6.0.4" - "@commitlint/message" "^6.0.4" - "@commitlint/to-lines" "^6.0.4" + "@commitlint/ensure" "^6.1.2" + "@commitlint/message" "^6.1.2" + "@commitlint/to-lines" "^6.1.2" babel-runtime "^6.23.0" -"@commitlint/to-lines@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-6.0.4.tgz#c0bb6ca0b5c5f565f18d9747de12067cb2c4cc34" +"@commitlint/to-lines@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-6.1.2.tgz#01d0272fe98a530e6538ef934f970aeae3fa498c" -"@commitlint/top-level@^6.0.5": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-6.0.5.tgz#01cac031f7452c0bebfda75d6ef7fb79d1714f81" +"@commitlint/top-level@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-6.1.2.tgz#280c179afc517d2a58c1c79aa5019edffa5d443d" dependencies: find-up "^2.1.0" @@ -178,71 +208,63 @@ mkdirp "^0.5.1" rimraf "^2.5.2" -"@pubsweet/db-manager@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-0.0.12.tgz#e05c2f2d6a664a33dcf70050e28f8b82a3a17564" +"@pubsweet/db-manager@^0.0.16": + version "0.0.16" + resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-0.0.16.tgz#b2b39a7fd1b36e970cbeed48ba4dca2c2b2aaf7a" dependencies: - "@pubsweet/logger" "^0.1.2" + "@pubsweet/logger" "^0.2.1" fs-extra "^4.0.2" isomorphic-fetch "^2.2.1" joi "^13.1.0" pouchdb "^6.3.4" - pubsweet-server "^1.0.4" + pubsweet-server "^1.1.0" -"@pubsweet/logger@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@pubsweet/logger/-/logger-0.1.2.tgz#a7e27d346967beefd88eef51ea324922eb939d91" +"@pubsweet/db-manager@^0.0.17": + version "0.0.17" + resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-0.0.17.tgz#f4fc6d17847f020fb4fa8a4e3ea5885c1181c51b" dependencies: - config "^1.26.2" + "@pubsweet/logger" "^0.2.2" + fs-extra "^4.0.2" + isomorphic-fetch "^2.2.1" joi "^13.1.0" - lodash "^4.17.4" + pouchdb "^6.3.4" + pubsweet-server "^1.1.1" "@pubsweet/starter@git+https://gitlab.coko.foundation/pubsweet/pubsweet-starter.git": version "1.0.0-alpha.1" - resolved "git+https://gitlab.coko.foundation/pubsweet/pubsweet-starter.git#52530830b98ca2f75cd652d81c04363949ca4863" + resolved "git+https://gitlab.coko.foundation/pubsweet/pubsweet-starter.git#80364013db8eee7ccc93901a8d33a5bf58e3cfd3" dependencies: - "@pubsweet/db-manager" "^0.0.12" - "@pubsweet/logger" "^0.1.2" + "@pubsweet/db-manager" "^0.0.16" + "@pubsweet/logger" "^0.2.1" + "@pubsweet/ui" "^2.0.0" authsome "^0.0.9" - pubsweet "^1.1.4" - pubsweet-client "^1.1.2" - pubsweet-component-blog "^0.3.1" - pubsweet-component-form-group "0.1.6" + pubsweet "^1.1.8" + pubsweet-client "^2.1.0" + pubsweet-component-blog "^1.0.0" + pubsweet-component-form-group "1.0.0" pubsweet-component-html "^0.2.0" - pubsweet-component-login "^0.5.2" + pubsweet-component-login "^1.0.1" pubsweet-component-manage "^0.2.2" pubsweet-component-medium-draft "^0.2.0" - pubsweet-component-navigation "^0.3.2" + pubsweet-component-navigation "^1.0.0" pubsweet-component-password-reset-backend "^0.2.0" - pubsweet-component-password-reset-frontend "^0.2.0" + pubsweet-component-password-reset-frontend "^1.0.0" pubsweet-component-pepper-theme "^0.0.5" - pubsweet-component-posts-manager "0.6.5" - pubsweet-component-signup "^0.4.0" - pubsweet-component-teams-manager "^0.3.0" - pubsweet-component-users-manager "^0.2.1" - pubsweet-server "^1.0.4" + pubsweet-component-posts-manager "1.0.0" + pubsweet-component-signup "^1.0.0" + pubsweet-component-teams-manager "^1.0.0" + pubsweet-component-users-manager "^1.0.0" + pubsweet-server "^1.1.0" pubsweet-theme-plugin "^0.0.3" react-router-redux next -"@types/async@2.0.47": - version "2.0.47" - resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.47.tgz#f49ba1dd1f189486beb6e1d070a850f6ab4bd521" - -"@types/node@*": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" - -"@types/node@^9.4.6": +"@types/node@*", "@types/node@^9.4.6": version "9.4.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e" -"@types/zen-observable@0.5.3", "@types/zen-observable@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.3.tgz#91b728599544efbb7386d8b6633693a3c2e7ade5" - JSONStream@^1.0.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -255,17 +277,29 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -abstract-leveldown@~2.6.0, abstract-leveldown@~2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" +abstract-leveldown@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz#b3bfedb884eb693a12775f0c55e9f0a420ccee64" + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^4.0.0, abstract-leveldown@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-4.0.3.tgz#cb636f4965fbe117f5c8b76a7d51dd42aaed0580" + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" dependencies: xtend "~4.0.0" accepts@^1.3.3, accepts@~1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" dependencies: - mime-types "~2.1.16" + mime-types "~2.1.18" negotiator "0.6.1" acorn-dynamic-import@^2.0.0: @@ -274,23 +308,33 @@ acorn-dynamic-import@^2.0.0: dependencies: acorn "^4.0.3" +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + dependencies: + acorn "^5.0.0" + acorn-globals@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" dependencies: acorn "^5.0.0" -acorn-jsx@^3.0.0, acorn-jsx@^3.0.1: +acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" dependencies: acorn "^3.0.4" -acorn5-object-spread@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn5-object-spread/-/acorn5-object-spread-4.0.0.tgz#d5758081eed97121ab0be47e31caaef2aa399697" +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" dependencies: - acorn "^5.1.2" + acorn "^5.0.3" + +acorn@^1.0.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" acorn@^3.0.4: version "3.3.0" @@ -300,13 +344,9 @@ acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" - -acorn@^5.1.2, acorn@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" +acorn@^5.0.0, acorn@^5.0.3, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298" add-stream@^1.0.0: version "1.0.0" @@ -316,10 +356,6 @@ address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" -after@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - agent-base@2: version "2.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" @@ -331,9 +367,9 @@ ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" @@ -342,7 +378,7 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0: +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -351,11 +387,10 @@ ajv@^5.0.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3, ajv@^5.3.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2" +ajv@^6.0.1, ajv@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.0.tgz#afac295bbaa0152449e522742e4547c1ae9328d2" dependencies: - co "^4.6.0" fast-deep-equal "^1.0.0" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" @@ -400,16 +435,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: color-convert "^1.9.0" -ansi@^0.3.0, ansi@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - any-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" @@ -434,91 +465,13 @@ apollo-cache-control@^0.0.x: dependencies: graphql-extensions "^0.0.x" -apollo-cache-inmemory@^1.1.7: - version "1.1.9" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.9.tgz#8bcd05e8ec4e7dc5ffda7f68252244cab3197b71" - dependencies: - apollo-cache "^1.1.4" - apollo-utilities "^1.0.8" - graphql-anywhere "^4.1.5" - -apollo-cache@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.4.tgz#a06544fdf4d946114168660961cf7a1fd340d8d6" - dependencies: - apollo-utilities "^1.0.8" - -apollo-client-preset@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/apollo-client-preset/-/apollo-client-preset-1.0.8.tgz#23bd7176849d0d815f12c648774d009b258a449e" - dependencies: - apollo-cache-inmemory "^1.1.7" - apollo-client "^2.2.2" - apollo-link "^1.0.6" - apollo-link-http "^1.3.1" - graphql-tag "^2.4.2" - -apollo-client@^2.2.2: - version "2.2.5" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.2.5.tgz#bc00704aa181d0ec299fd5bb2b72d0b44800f5d0" - dependencies: - "@types/zen-observable" "^0.5.3" - apollo-cache "^1.1.4" - apollo-link "^1.0.0" - apollo-link-dedup "^1.0.0" - apollo-utilities "^1.0.8" - symbol-observable "^1.0.2" - zen-observable "^0.7.0" - optionalDependencies: - "@types/async" "2.0.47" - -apollo-link-context@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.6.tgz#291a7e6717fbab473beb8008b33daefd3ca245fd" - dependencies: - apollo-link "^1.2.0" - -apollo-link-dedup@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.7.tgz#2fc31b04d7be5c2b6cb9aded03be9b634e5483c8" - dependencies: - apollo-link "^1.2.0" - -apollo-link-http-common@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.0.0.tgz#b347db2925d9ad6cb248e165761f63d5c64f60b0" - dependencies: - apollo-link "^1.1.0" - -apollo-link-http-common@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.1.tgz#bd8dbb751633be8796f58fe1ba4ecdc0a2f46110" - dependencies: - apollo-link "^1.2.0" - -apollo-link-http@^1.3.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.0.tgz#6a45407fae655996a668ae1a1ab528569b6ba61b" - dependencies: - apollo-link "^1.2.0" - apollo-link-http-common "^0.2.1" - -apollo-link@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.0.7.tgz#42cd38a7378332fc3e41a214ff6a6e5e703a556f" - dependencies: - "@types/zen-observable" "0.5.3" - apollo-utilities "^1.0.0" - zen-observable "^0.6.0" - -apollo-link@^1.0.6, apollo-link@^1.1.0, apollo-link@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.0.tgz#1abba5456eb35fc8b8a79f3be421e683a9ecfc41" +apollo-link@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.1.tgz#c120b16059f9bd93401b9f72b94d2f80f3f305d2" dependencies: "@types/node" "^9.4.6" - "@types/zen-observable" "0.5.3" apollo-utilities "^1.0.0" - zen-observable "^0.8.0" + zen-observable-ts "^0.8.6" apollo-server-core@^1.3.2: version "1.3.2" @@ -545,14 +498,6 @@ apollo-tracing@^0.1.0: dependencies: graphql-extensions "^0.0.x" -apollo-upload-client@^7.1.0-alpha.1: - version "7.1.0-alpha.1" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-7.1.0-alpha.1.tgz#738e7ff61ae66d0984371e9cffe5a9ef0f3b992c" - dependencies: - "@babel/runtime" "^7.0.0-beta.40" - apollo-link-http-common "0.0.0" - extract-files "^3.1.0" - apollo-upload-server@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-4.0.2.tgz#1a042e413d09d4bd5529738f9e0af45ba553cc2d" @@ -562,10 +507,6 @@ apollo-upload-server@^4.0.2: object-path "^0.11.4" apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.4.tgz#560009ea5541b9fdc4ee07ebb1714ee319a76c15" - -apollo-utilities@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.8.tgz#74d797d38953d2ba35e16f880326e2abcbc8b016" @@ -599,8 +540,8 @@ archiver-utils@^1.3.0: readable-stream "^2.0.0" archiver@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.0.tgz#d2df2e8d5773a82c1dcce925ccc41450ea999afd" + version "2.1.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" dependencies: archiver-utils "^1.3.0" async "^2.0.0" @@ -619,8 +560,8 @@ are-we-there-yet@~1.1.2: readable-stream "^2.0.6" argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" dependencies: sprintf-js "~1.0.2" @@ -629,10 +570,11 @@ argsarray@0.0.1: resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" aria-query@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" + version "0.7.1" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" dependencies: ast-types-flow "0.0.7" + commander "^2.11.0" arr-diff@^2.0.0: version "2.0.0" @@ -683,13 +625,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-index@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" - dependencies: - debug "^2.2.0" - es6-symbol "^3.0.2" - array-iterate@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.1.tgz#865bf7f8af39d6b0982c60902914ac76bc0108f6" @@ -736,8 +671,8 @@ asap@^2.0.6, asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" asn1.js@^4.0.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -762,8 +697,8 @@ assert@^1.1.1: util "0.10.3" assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" assign-symbols@^1.0.0: version "1.0.0" @@ -773,14 +708,26 @@ ast-types-flow@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" -ast-types@0.10.1, ast-types@^0.10.1: +ast-types@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" +ast-types@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.15.tgz#8eef0827f04dff0ec8857ba925abe3fea6194e52" + ast-types@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.11.tgz#371177bb59232ff5ceaa1d09ee5cad705b1a5aa9" +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +ast-types@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.2.tgz#aef76a04fde54634976fc94defaad1a67e2eadb0" + ast-types@^0.7.2: version "0.7.8" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" @@ -840,12 +787,14 @@ atob@~1.1.0: resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" attempt-x@^1.1.0, attempt-x@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/attempt-x/-/attempt-x-1.1.1.tgz#fba64e96ce03c3e0bd92c92622061c4df387cb76" + version "1.1.3" + resolved "https://registry.yarnpkg.com/attempt-x/-/attempt-x-1.1.3.tgz#9ac844c75bca2c4e9e30d8d5c01f41eeb481a8b7" attr-accept@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.0.tgz#b5cd35227f163935a8f1de10ed3eba16941f6be6" + version "1.1.2" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.2.tgz#6836bfe054e4ef1ee3076fdde56cec9bb3ffead6" + dependencies: + core-js "^2.5.0" authsome@0.0.9, authsome@^0.0.9: version "0.0.9" @@ -863,19 +812,19 @@ autoprefixer@^6.3.1: postcss-value-parser "^3.2.3" autoprefixer@^7.1.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.2.tgz#082293b964be00602efacc59aa4aa7df5158bb6e" + version "7.2.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc" dependencies: - browserslist "^2.10.0" - caniuse-lite "^1.0.30000780" + browserslist "^2.11.3" + caniuse-lite "^1.0.30000805" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.14" + postcss "^6.0.17" postcss-value-parser "^3.2.3" aws-sdk@^2.185.0: - version "2.190.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.190.0.tgz#c7b48b3845345b60795943eb919700cf7edf5734" + version "2.205.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.205.0.tgz#1a93730253e2be027a4bd3af9248cbda0573de80" dependencies: buffer "4.9.1" events "^1.1.1" @@ -926,7 +875,7 @@ babel-cli@^6.26.0: optionalDependencies: chokidar "^1.6.1" -babel-code-frame@6.26.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@6.26.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -959,17 +908,19 @@ babel-core@^6.0.0, babel-core@^6.26.0: source-map "^0.5.6" babel-eslint@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.3.tgz#f29ecf02336be438195325cd47c468da81ee4e98" + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.2.tgz#1102273354c6f0b29b4ea28a65f97d122296b68b" dependencies: - "@babel/code-frame" "7.0.0-beta.31" - "@babel/traverse" "7.0.0-beta.31" - "@babel/types" "7.0.0-beta.31" - babylon "7.0.0-beta.31" + "@babel/code-frame" "^7.0.0-beta.40" + "@babel/traverse" "^7.0.0-beta.40" + "@babel/types" "^7.0.0-beta.40" + babylon "^7.0.0-beta.40" + eslint-scope "~3.7.1" + eslint-visitor-keys "^1.0.0" babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: babel-messages "^6.23.0" babel-runtime "^6.26.0" @@ -977,7 +928,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0: detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.17.4" - source-map "^0.5.6" + source-map "^0.5.7" trim-right "^1.0.1" babel-helper-bindify-decorators@^6.24.1: @@ -1113,23 +1064,16 @@ babel-jest@^21.2.0: babel-plugin-istanbul "^4.0.0" babel-preset-jest "^21.2.0" -babel-jest@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.1.0.tgz#7fae6f655fffe77e818a8c2868c754a42463fdfd" - dependencies: - babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.1.0" - -babel-jest@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.2.0.tgz#2d04087f5d149585e14f641d529551963fc9b4f8" +babel-jest@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.1.tgz#ff53ebca45957347f27ff4666a31499fbb4c4ddd" dependencies: babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.2.0" + babel-preset-jest "^22.4.1" babel-loader@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" + version "7.1.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.3.tgz#ff5b440da716e9153abb946251a9ab7670037b16" dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -1163,13 +1107,9 @@ babel-plugin-jest-hoist@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006" -babel-plugin-jest-hoist@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.1.0.tgz#c1281dd7887d77a1711dc760468c3b8285dde9ee" - -babel-plugin-jest-hoist@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.2.0.tgz#bd34f39d652406669713b8c89e23ef25c890b993" +babel-plugin-jest-hoist@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz#d712fe5da8b6965f3191dacddbefdbdf4fb66d63" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" @@ -1562,18 +1502,11 @@ babel-preset-jest@^21.2.0: babel-plugin-jest-hoist "^21.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" -babel-preset-jest@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.1.0.tgz#ff4e704102f9642765e2254226050561d8942ec9" - dependencies: - babel-plugin-jest-hoist "^22.1.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -babel-preset-jest@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.2.0.tgz#f77b43f06ef4d8547214b2e206cc76a25c3ba0e2" +babel-preset-jest@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a" dependencies: - babel-plugin-jest-hoist "^22.2.0" + babel-plugin-jest-hoist "^22.4.1" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-preset-react@^6.24.1: @@ -1662,6 +1595,10 @@ babylon@7.0.0-beta.31: version "7.0.0-beta.31" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.31.tgz#7ec10f81e0e456fd0f855ad60fa30c2ac454283f" +babylon@7.0.0-beta.40, babylon@^7.0.0-beta.40: + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a" + babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1678,9 +1615,13 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base62@^1.1.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.7.tgz#5c01aad73c0124f9535cff1bdb9c4e6ccf838cfb" + base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" base64url@2.0.0, base64url@^2.0.0: version "2.0.0" @@ -1740,9 +1681,9 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bindings@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" +bindings@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" bl@^1.0.0: version "1.2.1" @@ -1750,12 +1691,6 @@ bl@^1.0.0: dependencies: readable-stream "^2.0.5" -bl@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.0.3.tgz#fc5421a28fd4226036c3b3891a66a25bc64d226e" - dependencies: - readable-stream "~2.0.5" - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -1827,8 +1762,8 @@ bootstrap-sass@^3.3.7: resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz#6596c7ab40f6637393323ab0bc80d064fc630498" brace-expansion@^1.0.0, brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1841,9 +1776,9 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e" +braces@^2.3.0, braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -1851,6 +1786,7 @@ braces@^2.3.0: extend-shallow "^2.0.1" fill-range "^4.0.0" isobject "^3.0.1" + kind-of "^6.0.2" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" @@ -1940,12 +1876,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.1.2, browserslist@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346" +browserslist@^2.1.2, browserslist@^2.11.3: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" dependencies: - caniuse-lite "^1.0.30000780" - electron-to-chromium "^1.3.28" + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" bser@^2.0.0: version "2.0.0" @@ -1953,18 +1889,18 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -buble@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.18.0.tgz#63b338b8248c474b46fd3e3546560ae08d8abe91" +buble@^0.19.2: + version "0.19.3" + resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.3.tgz#01e9412062cff1da6f20342b6ecd72e7bf699d02" dependencies: - acorn "^5.1.2" - acorn-jsx "^3.0.1" - acorn5-object-spread "^4.0.0" - chalk "^2.1.0" + acorn "^5.4.1" + acorn-dynamic-import "^3.0.0" + acorn-jsx "^4.1.1" + chalk "^2.3.1" magic-string "^0.22.4" minimist "^1.2.0" os-homedir "^1.0.1" - vlq "^0.2.2" + vlq "^1.0.0" buffer-crc32@^0.2.1: version "0.2.13" @@ -2009,8 +1945,8 @@ buffer@4.9.1, buffer@^4.3.0: isarray "^1.0.0" buffer@^5.0.3: - version "5.0.8" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" + version "5.1.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -2043,22 +1979,22 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" cacache@^10.0.0, cacache@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" dependencies: - bluebird "^3.5.0" + bluebird "^3.5.1" chownr "^1.0.1" glob "^7.1.2" graceful-fs "^4.1.11" lru-cache "^4.1.1" - mississippi "^1.3.0" + mississippi "^2.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.1" - ssri "^5.0.0" + rimraf "^2.6.2" + ssri "^5.2.4" unique-filename "^1.1.0" - y18n "^3.2.1" + y18n "^4.0.0" cache-base@^1.0.1: version "1.0.1" @@ -2074,9 +2010,9 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cached-constructors-x@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cached-constructors-x/-/cached-constructors-x-1.0.0.tgz#c421e3892a4b6f7794434bdcffd1299b330c181b" +cached-constructors-x@^1.0.0, cached-constructors-x@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cached-constructors-x/-/cached-constructors-x-1.0.2.tgz#d8a7b79b43fdcf13fd861bb763f38b627b0ccf91" cachedir@^1.1.0: version "1.2.0" @@ -2112,6 +2048,14 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -2142,12 +2086,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000800" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000800.tgz#a86e6bc23bd9a707d5df42f33e64d0495cfda218" + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000810.tgz#bd25830c41efab64339a2e381f49677343c84509" -caniuse-lite@^1.0.30000780: - version "1.0.30000782" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz#5b82b8c385f25348745c471ca51320afb1b7f254" +caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805: + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz#47585fffce0e9f3593a6feea4673b945424351d9" capture-stack-trace@^1.0.0: version "1.0.0" @@ -2172,13 +2116,16 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -"chai@>=1.9.2 <4.0.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" +chai@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" dependencies: assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" chain-function@^1.0.0: version "1.0.0" @@ -2200,13 +2147,13 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@2.3.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" +chalk@2.3.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" dependencies: - ansi-styles "^3.1.0" + ansi-styles "^3.2.0" escape-string-regexp "^1.0.5" - supports-color "^4.0.0" + supports-color "^5.2.0" change-emitter@^0.1.2: version "0.1.6" @@ -2232,6 +2179,10 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" +check-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + cheerio@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" @@ -2264,7 +2215,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^1.0.1, chokidar@^1.6.1, chokidar@^1.7.0: +chokidar@^1.0.1, chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -2279,9 +2230,9 @@ chokidar@^1.0.1, chokidar@^1.6.1, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" -chokidar@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b" +chokidar@^2.0.0, chokidar@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -2293,6 +2244,7 @@ chokidar@^2.0.0: normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.0" optionalDependencies: fsevents "^1.0.0" @@ -2330,7 +2282,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.4, classnames@^2.2.5: +classnames@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" @@ -2362,7 +2314,7 @@ cli-spinners@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" -cli-spinners@^1.0.0: +cli-spinners@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" @@ -2396,8 +2348,8 @@ cliff@0.1.9: winston "0.8.x" clipboard-copy@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-1.2.1.tgz#d9a816f1ba0577a22fb36640b14b0e403756f334" + version "1.4.2" + resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-1.4.2.tgz#620cb6a9347d4f92447649db5a9b00edfcbb2cae" cliui@^2.1.0: version "2.1.0" @@ -2469,8 +2421,8 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" codemirror@^5.32.0: - version "5.34.0" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.34.0.tgz#e345dcc09a6149db65cc70dff9d389c1c4b0cd06" + version "5.35.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.35.0.tgz#280653d495455bc66aa87e6284292b02775ba878" "cokourier-prime-sans@git+https://gitlab.coko.foundation/julientaq/cokourier-sans-prime.git": version "0.0.1" @@ -2544,9 +2496,9 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -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" +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" @@ -2554,18 +2506,18 @@ command-join@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" -commander@2.12.x, commander@^2.11.0, commander@~2.12.1: - version "2.12.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" - -commander@^2.9.0, commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +commander@2.14.x, commander@^2.11.0, commander@^2.5.0, commander@^2.9.0, commander@~2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" commander@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" +commander@~2.12.1: + version "2.12.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" + commitizen@^2.9.6: version "2.9.6" resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-2.9.6.tgz#c0d00535ef264da7f63737edfda4228983fa2291" @@ -2600,6 +2552,20 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" @@ -2620,19 +2586,19 @@ compress-commons@^1.2.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -compressible@~2.0.11: - version "2.0.12" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66" +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" dependencies: - mime-db ">= 1.30.0 < 2" + mime-db ">= 1.33.0 < 2" compression@^1.5.2: - version "1.7.1" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" + version "1.7.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" dependencies: accepts "~1.3.4" bytes "3.0.0" - compressible "~2.0.11" + compressible "~2.0.13" debug "2.6.9" on-headers "~1.0.1" safe-buffer "5.1.1" @@ -2643,16 +2609,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" concat-stream@^1.4.10, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + version "1.6.1" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.1.tgz#261b8f518301f1d834e36342b9fea095d2620a26" dependencies: inherits "^2.0.3" readable-stream "^2.2.2" typedarray "^0.0.6" config@^1.21.0, config@^1.26.1, config@^1.26.2, config@^1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/config/-/config-1.28.1.tgz#7625d2a1e4c90f131d8a73347982d93c3873282d" + version "1.30.0" + resolved "https://registry.yarnpkg.com/config/-/config-1.30.0.tgz#1d60a9f35348a13c175798d384e81a5a16c3ba6e" dependencies: json5 "0.4.0" os-homedir "1.0.2" @@ -2683,11 +2649,9 @@ content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" -content-security-policy-builder@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/content-security-policy-builder/-/content-security-policy-builder-1.1.0.tgz#d91f1b076236c119850c7dee9924bf55e05772b3" - dependencies: - dashify "^0.2.0" +content-security-policy-builder@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz#8749a1d542fcbe82237281ea9f716ce68b394dd2" content-type-parser@^1.0.2: version "1.0.2" @@ -2697,77 +2661,70 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -conventional-changelog-angular@^1.3.3: - version "1.6.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.1.tgz#e1434d017c854032b272f690424a8c0ca16dc318" +conventional-changelog-angular@^1.3.3, conventional-changelog-angular@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" dependencies: compare-func "^1.3.1" - q "^1.4.1" + q "^1.5.1" -conventional-changelog-angular@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.3.tgz#ff0dd01d740e35bfdbc3f02dfea13cf0d96f0b82" +conventional-changelog-atom@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.4.tgz#4917759947f4db86073f9d3838a2d54302d5843d" dependencies: - compare-func "^1.3.1" - q "^1.4.1" - -conventional-changelog-atom@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.1.2.tgz#12595ad5267a6937c34cf900281b1c65198a4c63" - dependencies: - q "^1.4.1" + q "^1.5.1" -conventional-changelog-cli@^1.3.2: - version "1.3.5" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.5.tgz#46c51496216b7406588883defa6fac589e9bb31e" +conventional-changelog-cli@^1.3.13: + version "1.3.15" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.15.tgz#cd7f0e64473f1cecee902ee5ee00548ea91bcc9e" dependencies: add-stream "^1.0.0" - conventional-changelog "^1.1.7" - lodash "^4.1.0" - meow "^3.7.0" + conventional-changelog "^1.1.17" + lodash "^4.2.1" + meow "^4.0.0" tempfile "^1.1.1" -conventional-changelog-codemirror@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.2.1.tgz#299a4f7147baf350e6c8158fc54954a291c5cc09" +conventional-changelog-codemirror@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.4.tgz#debc43991d487d7964e65087fbbe034044bd51fb" dependencies: - q "^1.4.1" + q "^1.5.1" -conventional-changelog-core@^1.9.3: - version "1.9.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.4.tgz#a541e5354f91072f8583b19e34abb9f6e461c367" +conventional-changelog-core@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.5.tgz#45b6347c4c6512e1f163f7ff55c9f5bcb88fd990" dependencies: - conventional-changelog-writer "^2.0.3" - conventional-commits-parser "^2.1.0" - dateformat "^1.0.12" + conventional-changelog-writer "^3.0.4" + conventional-commits-parser "^2.1.5" + dateformat "^3.0.0" get-pkg-repo "^1.0.0" - git-raw-commits "^1.3.0" + git-raw-commits "^1.3.4" git-remote-origin-url "^2.0.0" - git-semver-tags "^1.2.3" - lodash "^4.0.0" + git-semver-tags "^1.3.4" + lodash "^4.2.1" normalize-package-data "^2.3.5" - q "^1.4.1" + q "^1.5.1" read-pkg "^1.1.0" read-pkg-up "^1.0.1" through2 "^2.0.0" -conventional-changelog-ember@^0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.10.tgz#dcd6e4cdc2e6c2b58653cf4d2cb1656a60421929" +conventional-changelog-ember@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.6.tgz#f3825d7434168f3d9211b5532dc1d5769532b668" dependencies: - q "^1.4.1" + q "^1.5.1" -conventional-changelog-eslint@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-0.2.1.tgz#2c2a11beb216f80649ba72834180293b687c0662" +conventional-changelog-eslint@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.4.tgz#333456d1884d96f3a49cc0984a745095e9d56288" dependencies: - q "^1.4.1" + q "^1.5.1" -conventional-changelog-express@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.2.1.tgz#838d9e1e6c9099703b150b9c19aa2d781742bd6c" +conventional-changelog-express@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.4.tgz#812a9cf778677e12f978ac9c40d85297c0bfcca9" dependencies: - q "^1.4.1" + q "^1.5.1" conventional-changelog-jquery@^0.1.0: version "0.1.0" @@ -2781,75 +2738,80 @@ conventional-changelog-jscs@^0.1.0: dependencies: q "^1.4.1" -conventional-changelog-jshint@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.2.1.tgz#86139bb3ac99899f2b177e9617e09b37d99bcf3a" +conventional-changelog-jshint@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.4.tgz#b2de33cd0870d9af804ac6a4fded0ee25b69c9bb" dependencies: compare-func "^1.3.1" - q "^1.4.1" + q "^1.5.1" -conventional-changelog-writer@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz#073b0c39f1cc8fc0fd9b1566e93833f51489c81c" +conventional-changelog-preset-loader@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.6.tgz#b29af6332f9313857be36427623c9016bfeeaf33" + +conventional-changelog-writer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.4.tgz#705b46a8b8277bd7fd79cad8032095b5d803864c" dependencies: compare-func "^1.3.1" - conventional-commits-filter "^1.1.1" - dateformat "^1.0.11" + conventional-commits-filter "^1.1.5" + dateformat "^3.0.0" handlebars "^4.0.2" json-stringify-safe "^5.0.1" - lodash "^4.0.0" - meow "^3.3.0" - semver "^5.0.1" + lodash "^4.2.1" + meow "^4.0.0" + semver "^5.5.0" split "^1.0.0" through2 "^2.0.0" -conventional-changelog@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.7.tgz#9151a62b1d8edb2d82711dabf5b7cf71041f82b1" - dependencies: - conventional-changelog-angular "^1.5.2" - conventional-changelog-atom "^0.1.2" - conventional-changelog-codemirror "^0.2.1" - conventional-changelog-core "^1.9.3" - conventional-changelog-ember "^0.2.9" - conventional-changelog-eslint "^0.2.1" - conventional-changelog-express "^0.2.1" +conventional-changelog@^1.1.17: + version "1.1.17" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.17.tgz#9019503d51328d8b33b0be6d425ab7f065918332" + dependencies: + conventional-changelog-angular "^1.6.6" + conventional-changelog-atom "^0.2.4" + conventional-changelog-codemirror "^0.3.4" + conventional-changelog-core "^2.0.5" + conventional-changelog-ember "^0.3.6" + conventional-changelog-eslint "^1.0.4" + conventional-changelog-express "^0.3.4" conventional-changelog-jquery "^0.1.0" conventional-changelog-jscs "^0.1.0" - conventional-changelog-jshint "^0.2.1" + conventional-changelog-jshint "^0.3.4" + conventional-changelog-preset-loader "^1.1.6" conventional-commit-types@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" -conventional-commits-filter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.1.tgz#72172319c0c88328a015b30686b55527b3a5e54a" +conventional-commits-filter@^1.1.1, conventional-commits-filter@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.5.tgz#77aac065e3de9c1a74b801e8e25c9affb3184f65" dependencies: is-subset "^0.1.1" modify-values "^1.0.0" -conventional-commits-parser@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.0.tgz#9b4b7c91124bf2a1a9a2cc1c72760d382cbbb229" +conventional-commits-parser@^2.1.0, conventional-commits-parser@^2.1.1, conventional-commits-parser@^2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.5.tgz#9ac3a4ab221c0c3c9e9dd2c09ae01e6d1e1dabe0" dependencies: JSONStream "^1.0.4" is-text-path "^1.0.0" lodash "^4.2.1" - meow "^3.3.0" + meow "^4.0.0" split2 "^2.0.0" through2 "^2.0.0" trim-off-newlines "^1.0.0" -conventional-recommended-bump@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.1.0.tgz#964d4fcc70fb5259d41fa9b39d3df6afdb87d253" +conventional-recommended-bump@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz#1b7137efb5091f99fe009e2fe9ddb7cc490e9375" dependencies: concat-stream "^1.4.10" conventional-commits-filter "^1.1.1" - conventional-commits-parser "^2.1.0" + conventional-commits-parser "^2.1.1" git-raw-commits "^1.3.0" - git-semver-tags "^1.2.3" + git-semver-tags "^1.3.0" meow "^3.3.0" object-assign "^4.0.1" @@ -2892,18 +2854,16 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" copy-webpack-plugin@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302" + version "4.5.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.0.tgz#9cb012163317666ea47479d2a8c57daca3557da5" dependencies: cacache "^10.0.1" find-cache-dir "^1.0.0" globby "^7.1.1" is-glob "^4.0.0" - loader-utils "^0.2.15" - lodash "^4.3.0" + loader-utils "^1.1.0" minimatch "^3.0.4" p-limit "^1.0.0" - pify "^3.0.0" serialize-javascript "^1.4.0" core-js@^1.0.0: @@ -2980,14 +2940,6 @@ 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.6.0: - version "15.6.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - 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" @@ -3047,28 +2999,9 @@ css-initials@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/css-initials/-/css-initials-0.2.0.tgz#14c225bd8656255a6baee07231ef82fa55aacaa3" -css-loader@^0.28.4: - version "0.28.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b" - dependencies: - babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.7.0" - cssnano ">=2.6.1 <4" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.0.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.0.0" - postcss-modules-local-by-default "^1.0.1" - postcss-modules-scope "^1.0.0" - postcss-modules-values "^1.1.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-loader@^0.28.7: - version "0.28.9" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95" +css-loader@^0.28.4, css-loader@^0.28.7: + version "0.28.10" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.10.tgz#40282e79230f7bcb4e483efa631d670b735ebf42" dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" @@ -3103,8 +3036,8 @@ css-selector-tokenizer@^0.7.0: regexpu-core "^1.0.0" css-to-react-native@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.0.4.tgz#cf4cc407558b3474d4ba8be1a2cd3b6ce713101b" + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.1.2.tgz#c06d628467ef961c85ec358a90f3c87469fb0095" dependencies: css-color-keywords "^1.0.0" fbjs "^0.8.5" @@ -3127,7 +3060,7 @@ cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" -"cssnano@>=2.6.1 <4", cssnano@^3.10.0: +cssnano@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" dependencies: @@ -3246,10 +3179,6 @@ dasherize@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dasherize/-/dasherize-2.0.0.tgz#6d809c9cd0cf7bb8952d80fc84fa13d47ddb1308" -dashify@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dashify/-/dashify-0.2.2.tgz#6a07415a01c91faf4a32e38d9dfba71f61cb20fe" - date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -3258,36 +3187,34 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -dateformat@^1.0.11, dateformat@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" debug-log@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8: +debug@2, debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" - dependencies: - ms "0.7.3" - -debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: +debug@3.1.0, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -3295,6 +3222,12 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + dedent@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" @@ -3307,11 +3240,11 @@ deep-diff@^0.3.5: version "0.3.8" resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: - type-detect "0.1.1" + type-detect "^4.0.0" deep-equal@*, deep-equal@^1.0.0, deep-equal@^1.0.1: version "1.0.1" @@ -3341,11 +3274,17 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" +deferred-leveldown@~2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-2.0.3.tgz#91fbc7699ac85f3920df035792d96d97cbf50c0f" + dependencies: + abstract-leveldown "~3.0.0" + +deferred-leveldown@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-3.0.0.tgz#bff7241bf156aa3635f520bedf34330c408d3307" dependencies: - abstract-leveldown "~2.6.0" + abstract-leveldown "~4.0.0" define-properties@^1.1.2: version "1.1.2" @@ -3366,6 +3305,13 @@ define-property@^1.0.0: dependencies: is-descriptor "^1.0.0" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -3451,7 +3397,7 @@ detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" -detect-libc@^1.0.2: +detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -3470,6 +3416,13 @@ detect-port-alt@1.1.3: address "^1.0.1" debug "^2.6.0" +detective@^4.3.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + dicer@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" @@ -3545,18 +3498,12 @@ doctrine@1.5.0, doctrine@^1.2.2: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.0.0: +doctrine@^2.0.0, doctrine@^2.0.2, doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" dependencies: esutils "^2.0.2" -doctrine@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.2.tgz#68f96ce8efc56cc42651f1faadb4f175273b0075" - dependencies: - esutils "^2.0.2" - dom-converter@~0.1: version "0.1.4" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" @@ -3564,8 +3511,8 @@ dom-converter@~0.1: utila "~0.3" dom-helpers@^3.2.0, dom-helpers@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a" + version "3.3.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" @@ -3579,8 +3526,8 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" domelementtype@1, domelementtype@^1.3.0: version "1.3.0" @@ -3622,8 +3569,8 @@ domutils@1.5.1: domelementtype "1" domutils@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" dependencies: dom-serializer "0" domelementtype "1" @@ -3660,19 +3607,13 @@ draft-convert@^1.4.8: invariant "^2.2.1" draft-js@^0.10.0: - version "0.10.4" - resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.10.4.tgz#147741642097c8120d8edc232e9503e8b7fb8d35" + version "0.10.5" + resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.10.5.tgz#bfa9beb018fe0533dbb08d6675c371a6b08fa742" dependencies: fbjs "^0.8.15" immutable "~3.7.4" object-assign "^4.1.0" -duplexer2@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" @@ -3713,13 +3654,9 @@ 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.7: - version "1.3.31" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz#00d832cba9fe2358652b0c48a8816c8e3a037e9f" - -electron-to-chromium@^1.3.28: - version "1.3.28" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz#8dd4e6458086644e9f9f0a1cf32e2a1f9dffd9ee" +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: + version "1.3.34" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz#d93498f40391bb0c16a603d8241b9951404157ed" elegant-spinner@^1.0.1: version "1.0.1" @@ -3753,6 +3690,14 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +encoding-down@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-4.0.0.tgz#f71c8addc51f0ed186784e79b8ac75cfaa44119f" + dependencies: + abstract-leveldown "^4.0.0" + level-codec "^8.0.0" + level-errors "^1.0.4" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -3806,15 +3751,7 @@ enzyme-adapter-react-16@^1.1.1: react-reconciler "^0.7.0" react-test-renderer "^16.0.0-0" -enzyme-adapter-utils@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2" - dependencies: - lodash "^4.17.4" - object.assign "^4.0.4" - prop-types "^15.5.10" - -enzyme-adapter-utils@^1.3.0: +enzyme-adapter-utils@^1.1.0, enzyme-adapter-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz#d6c85756826c257a8544d362cc7a67e97ea698c7" dependencies: @@ -3843,15 +3780,9 @@ enzyme@^3.2.0, enzyme@^3.3.0: raf "^3.4.0" rst-selector-parser "^2.2.3" -errno@^0.1.3, errno@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" - dependencies: - prr "~1.0.1" - -errno@~0.1.1: - version "0.1.5" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.5.tgz#a563781a6052bc2c9ccd89e8cef0eb9506e0c321" +errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" dependencies: prr "~1.0.1" @@ -3879,18 +3810,26 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +es3ify@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/es3ify/-/es3ify-0.2.2.tgz#5dae3e650e5be3684b88066513d528d092629862" + dependencies: + esprima "^2.7.1" + jstransform "~11.0.0" + through "~2.3.4" + es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.37" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3" + version "0.10.39" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" dependencies: - es6-iterator "~2.0.1" + es6-iterator "~2.0.3" es6-symbol "~3.1.1" -es6-error@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" -es6-iterator@^2.0.1, es6-iterator@~2.0.1: +es6-iterator@^2.0.1, 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" dependencies: @@ -3927,7 +3866,7 @@ es6-set@~0.1.5: es6-symbol "3.1.1" event-emitter "~0.3.5" -es6-symbol@3.1.1, es6-symbol@^3.0.2, es6-symbol@^3.1.1, es6-symbol@~3.1.1: +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: @@ -3952,15 +3891,15 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" escodegen@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" dependencies: esprima "^3.1.3" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: - source-map "~0.5.6" + source-map "~0.6.1" escope@^3.6.0: version "3.6.0" @@ -4021,11 +3960,11 @@ eslint-import-resolver-node@^0.2.0: resolve "^1.1.6" eslint-import-resolver-node@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" dependencies: - debug "^2.6.8" - resolve "^1.2.0" + debug "^2.6.9" + resolve "^1.5.0" eslint-module-utils@^2.0.0, eslint-module-utils@^2.1.1: version "2.1.1" @@ -4035,8 +3974,8 @@ eslint-module-utils@^2.0.0, eslint-module-utils@^2.1.1: pkg-dir "^1.0.0" eslint-plugin-import@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz#26002efbfca5989b7288ac047508bd24f217b169" dependencies: builtin-modules "^1.1.1" contains-path "^0.1.0" @@ -4045,7 +3984,7 @@ eslint-plugin-import@^2.8.0: eslint-import-resolver-node "^0.3.1" eslint-module-utils "^2.1.1" has "^1.0.1" - lodash.cond "^4.3.0" + lodash "^4.17.4" minimatch "^3.0.3" read-pkg-up "^2.0.0" @@ -4065,12 +4004,12 @@ eslint-plugin-import@~2.2.0: pkg-up "^1.0.0" eslint-plugin-jest@^21.4.2: - version "21.4.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.4.2.tgz#0e8ec03687259169cef46656827a0a0715e8a8d4" + version "21.12.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.12.2.tgz#325f7c6a5078aed51ea087c33c26792337b5ba37" eslint-plugin-jsx-a11y@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.2.tgz#659277a758b036c305a7e4a13057c301cd3be73f" + version "6.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz#54583d1ae442483162e040e13cc31865465100e5" dependencies: aria-query "^0.7.0" array-includes "^3.0.3" @@ -4078,7 +4017,7 @@ eslint-plugin-jsx-a11y@^6.0.2: axobject-query "^0.1.0" damerau-levenshtein "^1.0.0" emoji-regex "^6.1.0" - jsx-ast-utils "^1.4.0" + jsx-ast-utils "^2.0.0" eslint-plugin-node@^5.2.1: version "5.2.1" @@ -4100,8 +4039,8 @@ eslint-plugin-node@~4.2.2: semver "5.3.0" eslint-plugin-prettier@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz#e7a746c67e716f335274b88295a9ead9f544e44d" + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" dependencies: fast-diff "^1.1.1" jest-docblock "^21.0.0" @@ -4115,12 +4054,12 @@ eslint-plugin-promise@~3.5.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" eslint-plugin-react@^7.4.0: - version "7.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz#52e56e8d80c810de158859ef07b880d2f56ee30b" + version "7.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160" dependencies: - doctrine "^2.0.0" + doctrine "^2.0.2" has "^1.0.1" - jsx-ast-utils "^2.0.0" + jsx-ast-utils "^2.0.1" prop-types "^15.6.0" eslint-plugin-react@~6.10.0: @@ -4141,28 +4080,32 @@ eslint-restricted-globals@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" -eslint-scope@^3.7.1: +eslint-scope@^3.7.1, eslint-scope@~3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + eslint@^4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.1.tgz#0055e0014464c7eb7878caf549ef2941992b444f" + version "4.18.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz#b9138440cb1e98b2f44a0d578c6ecf8eae6150b0" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" chalk "^2.1.0" concat-stream "^1.6.0" cross-spawn "^5.1.0" - debug "^3.0.1" - doctrine "^2.0.2" + debug "^3.1.0" + doctrine "^2.1.0" eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" espree "^3.5.2" esquery "^1.0.0" - estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" @@ -4230,18 +4173,30 @@ eslint@~3.19.0: text-table "~0.2.0" user-home "^2.0.0" +esmangle-evaluator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz#620d866ef4861b3311f75766d52a8572bb3c6336" + espree@^3.4.0, espree@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" + version "3.5.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.3.tgz#931e0af64e7fbbed26b050a29daad1fc64799fa6" dependencies: - acorn "^5.2.1" + acorn "^5.4.0" acorn-jsx "^3.0.0" -esprima@^2.1.0, esprima@^2.6.0: +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + +esprima-fb@~15001.1001.0-dev-harmony-fb: + version "15001.1001.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659" + +esprima@^2.1.0, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^3.1.3: +esprima@^3.1.3, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -4256,11 +4211,10 @@ esquery@^1.0.0: estraverse "^4.0.0" esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" dependencies: estraverse "^4.1.0" - object-assign "^4.0.1" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" @@ -4362,12 +4316,6 @@ execall@^1.0.0: dependencies: clone-regexp "^1.0.0" -execspawn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/execspawn/-/execspawn-1.0.1.tgz#8286f9dde7cecde7905fbdc04e24f368f23f8da6" - dependencies: - util-extend "^1.0.1" - exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -4400,7 +4348,7 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-template@^1.0.0: +expand-template@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc" @@ -4420,26 +4368,15 @@ expect-ct@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.1.0.tgz#52735678de18530890d8d7b95f0ac63640958094" -expect@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-22.1.0.tgz#f8f9b019ab275d859cbefed531fbaefe8972431d" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^22.1.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^22.1.0" - jest-message-util "^22.1.0" - jest-regex-util "^22.1.0" - -expect@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-22.2.0.tgz#dddcaab2e22ccc9f51e7c1732e0aa723f2f1f2b8" +expect@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.0.tgz#371edf1ae15b83b5bf5ec34b42f1584660a36c16" dependencies: ansi-styles "^3.2.0" - jest-diff "^22.1.0" + jest-diff "^22.4.0" jest-get-type "^22.1.0" - jest-matcher-utils "^22.2.0" - jest-message-util "^22.2.0" + jest-matcher-utils "^22.4.0" + jest-message-util "^22.4.0" jest-regex-util "^22.1.0" express@^4.15.3, express@^4.15.4, express@^4.16.1, express@^4.16.2: @@ -4483,7 +4420,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" dependencies: @@ -4516,7 +4453,7 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extglob@^2.0.2: +extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" dependencies: @@ -4529,12 +4466,6 @@ extglob@^2.0.2: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-3.1.0.tgz#b70424c9d4a1a4208efe22069388f428e4ae00f1" - dependencies: - "@babel/runtime" "^7.0.0-beta.38" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -4551,15 +4482,24 @@ faker@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" +falafel@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-1.2.0.tgz#c18d24ef5091174a497f318cd24b026a25cddab4" + dependencies: + acorn "^1.0.3" + foreach "^2.0.5" + isarray "0.0.1" + object-keys "^1.0.6" + fast-deep-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" fast-diff@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" -fast-future@~1.0.0: +fast-future@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/fast-future/-/fast-future-1.0.2.tgz#8435a9aaa02d79248d17d704e76259301d99280a" @@ -4638,11 +4578,11 @@ file-loader@^0.11.2: loader-utils "^1.0.2" file-loader@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa" + version "1.1.11" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" dependencies: loader-utils "^1.0.2" - schema-utils "^0.3.0" + schema-utils "^0.4.5" file-type@^3.3.0: version "3.9.0" @@ -4829,11 +4769,11 @@ form-data@^1.0.0-rc3: mime-types "^2.1.11" form-data@^2.3.1, form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: asynckit "^0.4.0" - combined-stream "^1.0.5" + combined-stream "1.0.6" mime-types "^2.1.12" form-data@~2.1.1: @@ -4954,16 +4894,6 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -gauge@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -4997,6 +4927,10 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + get-own-enumerable-property-symbols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" @@ -5037,37 +4971,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -ghreleases@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/ghreleases/-/ghreleases-1.0.6.tgz#b1b9b773a9d4090a524497806be0dedd7882219d" - dependencies: - after "~0.8.1" - ghrepos "~2.0.0" - ghutils "~3.2.0" - simple-mime "~0.1.0" - url-template "~2.0.6" - xtend "~4.0.0" - -ghrepos@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ghrepos/-/ghrepos-2.0.0.tgz#d66eae9d98a3b5398e460d6db7e10a742692e81b" - dependencies: - ghutils "~3.2.0" - -ghutils@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ghutils/-/ghutils-3.2.1.tgz#4fcedffac935fcace06e12a17c6174e2c29ffe4f" - dependencies: - jsonist "~1.3.0" - xtend "~4.0.1" - -git-raw-commits@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.0.tgz#0bc8596e90d5ffe736f7f5546bd2d12f73abaac6" +git-raw-commits@^1.3.0, git-raw-commits@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.4.tgz#442c3df5985b4f5689e9e43597f5194736aac001" dependencies: dargs "^4.0.1" lodash.template "^4.0.2" - meow "^3.3.0" + meow "^4.0.0" split2 "^2.0.0" through2 "^2.0.0" @@ -5078,12 +4988,12 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.3.tgz#188b453882bf9d7a23afd31baba537dab7388d5d" +git-semver-tags@^1.3.0, git-semver-tags@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.4.tgz#2ceb2a355c6d7514c123c35e297067d08caf3a92" dependencies: - meow "^3.3.0" - semver "^5.0.1" + meow "^4.0.0" + semver "^5.5.0" gitconfiglocal@^1.0.0: version "1.0.0" @@ -5121,25 +5031,24 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -"glob@3 || 4 || 5 || 6 || 7", glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.0.2" once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: - fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "2 || 3" once "^1.3.0" path-is-absolute "^1.0.0" @@ -5153,6 +5062,17 @@ glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -5200,13 +5120,9 @@ global@^4.3.1: min-document "^2.19.0" process "~0.5.1" -globals@^10.0.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-10.4.0.tgz#5c477388b128a9e4c5c5d01c7a2aca68c68b2da7" - -globals@^11.0.1: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" +globals@^11.0.1, globals@^11.1.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" globals@^9.14.0, globals@^9.18.0: version "9.18.0" @@ -5262,6 +5178,12 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" +gonzales-pe@^4.0.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.3.tgz#41091703625433285e0aee3aa47829fc1fbeb6f2" + dependencies: + minimist "1.1.x" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -5282,38 +5204,21 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graphql-anywhere@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.5.tgz#552ccd27b79a13a899022e20f658a2c2cb75e251" - dependencies: - apollo-utilities "^1.0.8" - graphql-extensions@^0.0.x: - version "0.0.7" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.7.tgz#807e7c3493da45e8f8fd02c0da771a9b3f1f2d1a" + version "0.0.8" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.8.tgz#d14d6e06db466a7f90fb97d75b657ae730278b09" dependencies: core-js "^2.5.3" source-map-support "^0.5.1" -graphql-subscriptions@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-0.5.6.tgz#0d8e960fbaaf9ecbe7900366e86da2fc143fc5b2" - dependencies: - es6-promise "^4.1.1" - iterall "^1.1.3" - -graphql-tag@^2.4.2, graphql-tag@^2.7.3: - version "2.8.0" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.8.0.tgz#52cdea07a842154ec11a2e840c11b977f9b835ce" - graphql-tools@^2.18.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-2.18.0.tgz#8e2d6436f9adba1d579c1a1710ae95e7f5e7248b" + version "2.21.0" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-2.21.0.tgz#c0d0fbda6f40a87c8d267a2989ade2ae8b9a288e" dependencies: - apollo-link "^1.0.0" + apollo-link "^1.1.0" apollo-utilities "^1.0.1" deprecated-decorator "^0.1.6" - graphql-subscriptions "^0.5.6" + iterall "^1.1.3" uuid "^3.1.0" graphql@^0.12.3: @@ -5322,12 +5227,6 @@ graphql@^0.12.3: dependencies: iterall "1.1.3" -graphql@^0.13.0: - version "0.13.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.1.tgz#9b3db3d8e40d1827e4172404bfdd2e4e17a58b55" - dependencies: - iterall "^1.2.0" - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5369,7 +5268,7 @@ har-validator@~2.0.6: is-my-json-valid "^2.12.4" pinkie-promise "^2.0.0" -har-validator@~4.2.0, har-validator@~4.2.1: +har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" dependencies: @@ -5384,8 +5283,8 @@ har-validator@~5.0.3: har-schema "^2.0.0" harmony-reflect@^1.4.6: - version "1.5.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.5.1.tgz#b54ca617b00cc8aef559bbb17b3d85431dc7e329" + version "1.6.0" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.0.tgz#9c28a77386ec225f7b5d370f9861ba09c4eea58f" has-ansi@^2.0.0: version "2.0.0" @@ -5401,6 +5300,10 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + has-own-property-x@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/has-own-property-x/-/has-own-property-x-3.2.0.tgz#1c4b112a577c8cb5805469556e54b6e959e4ded9" @@ -5409,9 +5312,9 @@ has-own-property-x@^3.1.1: to-object-x "^1.5.0" to-property-key-x "^2.0.2" -has-symbol-support-x@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c" +has-symbol-support-x@^1.4.1, has-symbol-support-x@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" has-symbols@^1.0.0: version "1.0.0" @@ -5502,25 +5405,25 @@ he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" -helmet-csp@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.6.0.tgz#c1f5595afbc5f83e5f1e6c15f842f07a10f6ea04" +helmet-csp@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.7.0.tgz#7934094617d1feb7bb2dc43bb7d9e8830f774716" dependencies: camelize "1.0.0" - content-security-policy-builder "1.1.0" + content-security-policy-builder "2.0.0" dasherize "2.0.0" lodash.reduce "4.6.0" - platform "1.3.4" + platform "1.3.5" helmet@^3.8.1: - version "3.9.0" - resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.9.0.tgz#7b2cf015a2d109bca83ede7924420799c0e67dee" + version "3.11.0" + resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.11.0.tgz#5eacccc0b5b61d786e29aa3fc5650abf73e1824f" dependencies: dns-prefetch-control "0.1.0" dont-sniff-mimetype "1.0.0" expect-ct "0.1.0" frameguard "3.0.0" - helmet-csp "2.6.0" + helmet-csp "2.7.0" hide-powered-by "1.0.0" hpkp "2.0.0" hsts "2.1.0" @@ -5560,22 +5463,18 @@ hoek@2.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" hoek@5.x.x: - version "5.0.2" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.2.tgz#d2f2c95d36fe7189cf8aa8c237abc1950eca1378" + version "5.0.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" hoist-non-react-statics@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" -hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.2.1, hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0" - -hoist-non-react-statics@^2.2.0: +hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" @@ -5639,12 +5538,12 @@ html-epub@^0.5.2: xmlbuilder "^9.0.4" html-minifier@^3.2.3: - version "3.5.8" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700" + version "3.5.9" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.9.tgz#74424014b872598d4bb0e20ac420926ec61024b6" dependencies: camel-case "3.0.x" clean-css "4.1.x" - commander "2.12.x" + commander "2.14.x" he "1.1.x" ncname "1.0.x" param-case "2.1.x" @@ -5700,8 +5599,8 @@ http-errors@1.6.2, http-errors@~1.6.2: statuses ">= 1.3.1 < 2" http-parser-js@>=0.4.0: - version "0.4.9" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" http-proxy-middleware@~0.17.4: version "0.17.4" @@ -5763,18 +5662,15 @@ husky@^0.14.3: normalize-path "^1.0.0" strip-indent "^2.0.0" -hyperquest@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-1.2.0.tgz#39e1fef66888dc7ce0dec6c0dd814f6fc8944ad5" - dependencies: - duplexer2 "~0.0.2" - through2 "~0.6.3" +hyphenate-style-name@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" i@0.3.x: version "0.3.6" resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" -iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: +iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -5814,6 +5710,10 @@ immediate@3.0.6, immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" +immediate@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + immutable@^3.7.6: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -5855,9 +5755,9 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -infinity-x@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/infinity-x/-/infinity-x-1.0.0.tgz#cea2d75181d820961b0f72d78e7c4e06fdd55a07" +infinity-x@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/infinity-x/-/infinity-x-1.0.2.tgz#374a4d5c8a9b98d2f61b782fc63892598de2f14c" inflection@^1.12.0: version "1.12.0" @@ -5882,6 +5782,13 @@ ini@1.x.x, ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +inline-process-browser@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/inline-process-browser/-/inline-process-browser-1.0.0.tgz#46a61b153dd3c9b1624b1a00626edb4f7f414f22" + dependencies: + falafel "^1.0.1" + through2 "^0.6.5" + inquirer@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" @@ -5949,8 +5856,8 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + version "2.2.3" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" dependencies: loose-envify "^1.0.0" @@ -5962,9 +5869,9 @@ ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" -ipaddr.js@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" is-absolute-url@^2.0.0: version "2.1.0" @@ -6007,6 +5914,10 @@ is-array-buffer-x@^1.0.13: object-get-own-property-descriptor-x "^3.2.0" to-string-tag-x "^1.4.1" +is-array@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-array/-/is-array-1.0.1.tgz#e9850cc2cc860c3bc0977e84ccf0dd464584279a" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -6036,8 +5947,8 @@ is-callable@^1.1.1, is-callable@^1.1.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" is-ci@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" dependencies: ci-info "^1.0.0" @@ -6069,7 +5980,7 @@ is-descriptor@^0.1.0: is-data-descriptor "^0.1.4" kind-of "^5.0.0" -is-descriptor@^1.0.0: +is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" dependencies: @@ -6110,17 +6021,17 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" is-falsey-x@^1.0.0, is-falsey-x@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-falsey-x/-/is-falsey-x-1.0.1.tgz#c469951adc95b8b3fdbf90929b335a7de937d17f" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-falsey-x/-/is-falsey-x-1.0.3.tgz#d8bb6d77c15fb2b99d81d10a7351641495fb36e2" dependencies: - to-boolean-x "^1.0.1" + to-boolean-x "^1.0.2" is-finite-x@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-finite-x/-/is-finite-x-3.0.2.tgz#a6ec683cfb2bc1a918a1ff59d178edbcea54f7a6" + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-finite-x/-/is-finite-x-3.0.4.tgz#320c97bab8aacc7e3cfa34aa58c432762c491b4e" dependencies: - infinity-x "^1.0.0" - is-nan-x "^1.0.1" + infinity-x "^1.0.1" + is-nan-x "^1.0.2" is-finite@^1.0.0: version "1.0.2" @@ -6191,22 +6102,27 @@ is-index-x@^1.0.0: to-number-x "^2.0.0" to-string-symbols-supported-x "^1.0.0" +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" jsonpointer "^4.0.0" xtend "^4.0.0" -is-nan-x@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-nan-x/-/is-nan-x-1.0.1.tgz#de747ebcc8bddeb66f367c17caca7eba843855c0" +is-nan-x@^1.0.1, is-nan-x@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-nan-x/-/is-nan-x-1.0.3.tgz#1c7fca40fc1b830a36e8800b37513a81f91fcc58" -is-nil-x@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/is-nil-x/-/is-nil-x-1.4.1.tgz#bd9e7b08b4cd732f9dcbde13d93291bb2ec2e248" +is-nil-x@^1.4.1, is-nil-x@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/is-nil-x/-/is-nil-x-1.4.2.tgz#a45e798d1e490d38db4570f2457245da21493e97" dependencies: lodash.isnull "^3.0.0" validate.io-undefined "^1.0.3" @@ -6227,16 +6143,20 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" is-object-like-x@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/is-object-like-x/-/is-object-like-x-1.6.0.tgz#a8c4a95bd6b95db174e0e4730171a160ec73be82" + version "1.7.1" + resolved "https://registry.yarnpkg.com/is-object-like-x/-/is-object-like-x-1.7.1.tgz#f440ce811fb31278e4ed0b34f2d5a277d87b4481" dependencies: is-function-x "^3.3.0" - is-primitive "^2.0.0" + is-primitive "^3.0.0" is-observable@^0.2.0: version "0.2.0" @@ -6244,11 +6164,11 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-odd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" dependencies: - is-number "^3.0.0" + is-number "^4.0.0" is-path-cwd@^1.0.0: version "1.0.0" @@ -6284,6 +6204,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-primitive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.0.tgz#ddc27a9f9ebe7bed4b4f308acc9abb1c7a025757" + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -6307,10 +6231,8 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" is-retry-allowed@^1.0.0: version "1.1.0" @@ -6368,9 +6290,9 @@ is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" -is-windows@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" is-word-character@^1.0.0: version "1.0.1" @@ -6393,8 +6315,8 @@ isemail@1.x.x: resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a" isemail@3.x.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.0.0.tgz#c89a46bb7a3361e1759f8028f9082488ecce3dff" + version "3.1.1" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.1.tgz#e8450fe78ff1b48347db599122adcd0668bd92b5" dependencies: punycode "2.x.x" @@ -6430,24 +6352,24 @@ isstream@0.1.x, isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.14: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.2.tgz#e17cd519dd5ec4141197f246fdf380b75487f3b1" dependencies: async "^2.1.4" fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" istanbul-lib-hook "^1.1.0" - istanbul-lib-instrument "^1.9.1" - istanbul-lib-report "^1.1.2" - istanbul-lib-source-maps "^1.2.2" - istanbul-reports "^1.1.3" + istanbul-lib-instrument "^1.9.2" + istanbul-lib-report "^1.1.3" + istanbul-lib-source-maps "^1.2.3" + istanbul-reports "^1.1.4" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" +istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz#4113c8ff6b7a40a1ef7350b01016331f63afde14" istanbul-lib-hook@^1.1.0: version "1.1.0" @@ -6455,108 +6377,64 @@ istanbul-lib-hook@^1.1.0: dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" +istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz#84905bf47f7e0b401d6b840da7bad67086b4aab6" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" semver "^5.3.0" -istanbul-lib-report@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" +istanbul-lib-report@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259" dependencies: - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" +istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" dependencies: debug "^3.1.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" +istanbul-reports@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.4.tgz#5ccba5e22b7b5a5d91d5e0a830f89be334bf97bd" dependencies: handlebars "^4.0.3" -iterall@1.1.3, iterall@^1.1.3: +iterall@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9" -iterall@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.1.tgz#59a347ae8001d2d4bc546b8487ca755d61849965" +iterall@^1.1.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" -jest-changed-files@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.1.4.tgz#1f7844bcb739dec07e5899a633c0cb6d5069834e" - dependencies: - throat "^4.0.0" - jest-changed-files@^22.2.0: version "22.2.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.2.0.tgz#517610c4a8ca0925bdc88b0ca53bd678aa8d019e" dependencies: throat "^4.0.0" -jest-cli@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.1.4.tgz#0fe9f3ac881b0cdc00227114c58583a2ebefcc04" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.1.14" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-source-maps "^1.2.1" - jest-changed-files "^22.1.4" - jest-config "^22.1.4" - jest-environment-jsdom "^22.1.4" - jest-get-type "^22.1.0" - jest-haste-map "^22.1.0" - jest-message-util "^22.1.0" - jest-regex-util "^22.1.0" - jest-resolve-dependencies "^22.1.0" - jest-runner "^22.1.4" - jest-runtime "^22.1.4" - jest-snapshot "^22.1.2" - jest-util "^22.1.4" - jest-worker "^22.1.0" - micromatch "^2.3.11" - node-notifier "^5.1.2" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^10.0.3" - -jest-cli@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.2.0.tgz#061acb5f995180b7f7bbc6cc8b8302f0804cfb74" +jest-cli@^22.1.4, jest-cli@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.2.tgz#e6546dc651e13d164481aa3e76e53ac4f4edab06" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -6570,18 +6448,19 @@ jest-cli@^22.2.0: istanbul-lib-instrument "^1.8.0" istanbul-lib-source-maps "^1.2.1" jest-changed-files "^22.2.0" - jest-config "^22.2.0" - jest-environment-jsdom "^22.2.0" + jest-config "^22.4.2" + jest-environment-jsdom "^22.4.1" jest-get-type "^22.1.0" - jest-haste-map "^22.2.0" - jest-message-util "^22.2.0" + jest-haste-map "^22.4.2" + jest-message-util "^22.4.0" jest-regex-util "^22.1.0" jest-resolve-dependencies "^22.1.0" - jest-runner "^22.2.0" - jest-runtime "^22.2.0" - jest-snapshot "^22.2.0" - jest-util "^22.2.0" - jest-worker "^22.2.0" + jest-runner "^22.4.2" + jest-runtime "^22.4.2" + jest-snapshot "^22.4.0" + jest-util "^22.4.1" + jest-validate "^22.4.2" + jest-worker "^22.2.2" micromatch "^2.3.11" node-notifier "^5.2.1" realpath-native "^1.0.0" @@ -6592,92 +6471,55 @@ jest-cli@^22.2.0: which "^1.2.12" yargs "^10.0.3" -jest-config@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.1.4.tgz#075ffacce83c3e38cf85b1b9ba0d21bd3ee27ad0" - dependencies: - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^22.1.4" - jest-environment-node "^22.1.4" - jest-get-type "^22.1.0" - jest-jasmine2 "^22.1.4" - jest-regex-util "^22.1.0" - jest-resolve "^22.1.4" - jest-util "^22.1.4" - jest-validate "^22.1.2" - pretty-format "^22.1.0" - -jest-config@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.2.0.tgz#762725cdd2552b7e2353df89e18876c320cd7d74" +jest-config@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.2.tgz#580ba5819bf81a5e48f4fd470e8b81834f45c855" dependencies: chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^22.2.0" - jest-environment-node "^22.2.0" + jest-environment-jsdom "^22.4.1" + jest-environment-node "^22.4.1" jest-get-type "^22.1.0" - jest-jasmine2 "^22.2.0" + jest-jasmine2 "^22.4.2" jest-regex-util "^22.1.0" - jest-resolve "^22.2.0" - jest-util "^22.2.0" - jest-validate "^22.2.0" - pretty-format "^22.1.0" + jest-resolve "^22.4.2" + jest-util "^22.4.1" + jest-validate "^22.4.2" + pretty-format "^22.4.0" -jest-diff@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.1.0.tgz#0fad9d96c87b453896bf939df3dc8aac6919ac38" +jest-diff@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.0.tgz#384c2b78519ca44ca126382df53f134289232525" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^22.1.0" + pretty-format "^22.4.0" jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.1.0.tgz#3fe5986d5444cbcb149746eb4b07c57c5a464dfd" - dependencies: - detect-newline "^2.1.0" - -jest-docblock@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.2.0.tgz#4d054eac354751e94a43a0ea2e2fe5c04cc61bbb" +jest-docblock@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8" dependencies: detect-newline "^2.1.0" -jest-environment-jsdom@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz#704518ce8375f7ec5de048d1e9c4268b08a03e00" - dependencies: - jest-mock "^22.1.0" - jest-util "^22.1.4" - jsdom "^11.5.1" - -jest-environment-jsdom@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.2.0.tgz#e9537400cbdef2d1e61d7196f8afa40e826fe9d8" +jest-environment-jsdom@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.1.tgz#754f408872441740100d3917e5ec40c74de6447f" dependencies: jest-mock "^22.2.0" - jest-util "^22.2.0" + jest-util "^22.4.1" jsdom "^11.5.1" -jest-environment-node@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.1.4.tgz#0f2946e8f8686ce6c5d8fa280ce1cd8d58e869eb" - dependencies: - jest-mock "^22.1.0" - jest-util "^22.1.4" - -jest-environment-node@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.2.0.tgz#ba7d0183fac076d34867367a4ac53ced69e3d3a9" +jest-environment-node@^22.1.4, jest-environment-node@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.1.tgz#418850eb654596b8d6e36c2021cbedbc23df8e16" dependencies: jest-mock "^22.2.0" - jest-util "^22.2.0" + jest-util "^22.4.1" jest-get-type@^21.2.0: version "21.2.0" @@ -6687,95 +6529,51 @@ jest-get-type@^22.1.0: version "22.1.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9" -jest-haste-map@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.1.0.tgz#1174c6ff393f9818ebf1163710d8868b5370da2a" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^22.1.0" - jest-worker "^22.1.0" - micromatch "^2.3.11" - sane "^2.0.0" - -jest-haste-map@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.2.0.tgz#c9f508b8f63322490339ba02343dd688474d9ad5" +jest-haste-map@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^22.2.0" - jest-worker "^22.2.0" + jest-docblock "^22.4.0" + jest-serializer "^22.4.0" + jest-worker "^22.2.2" micromatch "^2.3.11" sane "^2.0.0" -jest-jasmine2@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz#cada0baf50a220c616a9575728b80d4ddedebe8b" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^22.1.0" - graceful-fs "^4.1.11" - is-generator-fn "^1.0.0" - jest-diff "^22.1.0" - jest-matcher-utils "^22.1.0" - jest-message-util "^22.1.0" - jest-snapshot "^22.1.2" - source-map-support "^0.5.0" - -jest-jasmine2@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.2.0.tgz#c5f6a9a44f3a48b31bfa50f9fb2710c19cab21da" +jest-jasmine2@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.2.tgz#dfd3d259579ed6f52510d8f1ab692808f0d40691" dependencies: - callsites "^2.0.0" chalk "^2.0.1" co "^4.6.0" - expect "^22.2.0" + expect "^22.4.0" graceful-fs "^4.1.11" is-generator-fn "^1.0.0" - jest-diff "^22.1.0" - jest-matcher-utils "^22.2.0" - jest-message-util "^22.2.0" - jest-snapshot "^22.2.0" + jest-diff "^22.4.0" + jest-matcher-utils "^22.4.0" + jest-message-util "^22.4.0" + jest-snapshot "^22.4.0" + jest-util "^22.4.1" source-map-support "^0.5.0" -jest-leak-detector@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.1.0.tgz#08376644cee07103da069baac19adb0299b772c2" - dependencies: - pretty-format "^22.1.0" - -jest-matcher-utils@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.1.0.tgz#e164665b5d313636ac29f7f6fe9ef0a6ce04febc" +jest-leak-detector@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.0.tgz#64da77f05b001c96d2062226e079f89989c4aa2f" dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^22.1.0" + pretty-format "^22.4.0" -jest-matcher-utils@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.2.0.tgz#5390f823c18c748543d463825aa8e4df0db253ca" +jest-matcher-utils@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz#d55f5faf2270462736bdf7c7485ee931c9d4b6a1" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^22.1.0" - -jest-message-util@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.1.0.tgz#51ba0794cb6e579bfc4e9adfac452f9f1a0293fc" - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" + pretty-format "^22.4.0" -jest-message-util@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.2.0.tgz#84a6bb34186d8b9af7e0732fabbef63f7355f7b2" +jest-message-util@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.0.tgz#e3d861df16d2fee60cb2bc8feac2188a42579642" dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" @@ -6783,10 +6581,6 @@ jest-message-util@^22.2.0: slash "^1.0.0" stack-utils "^1.0.1" -jest-mock@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.1.0.tgz#87ec21c0599325671c9a23ad0e05c86fb5879b61" - jest-mock@^22.2.0: version "22.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7" @@ -6801,92 +6595,46 @@ jest-resolve-dependencies@^22.1.0: dependencies: jest-regex-util "^22.1.0" -jest-resolve@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.1.4.tgz#72b9b371eaac48f84aad4ad732222ffe37692602" - dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" - -jest-resolve@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.2.0.tgz#25aa8b887b31ab8c79763503e209d7c136f74ab1" +jest-resolve@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.2.tgz#25d88aa4147462c9c1c6a1ba16250d3794c24d00" dependencies: browser-resolve "^1.11.2" chalk "^2.0.1" -jest-runner@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.1.4.tgz#e039039110cb1b31febc0f99e349bf7c94304a2f" - dependencies: - exit "^0.1.2" - jest-config "^22.1.4" - jest-docblock "^22.1.0" - jest-haste-map "^22.1.0" - jest-jasmine2 "^22.1.4" - jest-leak-detector "^22.1.0" - jest-message-util "^22.1.0" - jest-runtime "^22.1.4" - jest-util "^22.1.4" - jest-worker "^22.1.0" - throat "^4.0.0" - -jest-runner@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.2.0.tgz#173249cff9f58d65c2bb3a47a03ee4806996c927" +jest-runner@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.2.tgz#19390ea9d99f768973e16f95a1efa351c0017e87" dependencies: exit "^0.1.2" - jest-config "^22.2.0" - jest-docblock "^22.2.0" - jest-haste-map "^22.2.0" - jest-jasmine2 "^22.2.0" - jest-leak-detector "^22.1.0" - jest-message-util "^22.2.0" - jest-runtime "^22.2.0" - jest-util "^22.2.0" - jest-worker "^22.2.0" + jest-config "^22.4.2" + jest-docblock "^22.4.0" + jest-haste-map "^22.4.2" + jest-jasmine2 "^22.4.2" + jest-leak-detector "^22.4.0" + jest-message-util "^22.4.0" + jest-runtime "^22.4.2" + jest-util "^22.4.1" + jest-worker "^22.2.2" throat "^4.0.0" -jest-runtime@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.1.4.tgz#1474d9f5cda518b702e0b25a17d4ef3fc563a20c" - dependencies: - babel-core "^6.0.0" - babel-jest "^22.1.0" - babel-plugin-istanbul "^4.1.5" - chalk "^2.0.1" - convert-source-map "^1.4.0" - exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^22.1.4" - jest-haste-map "^22.1.0" - jest-regex-util "^22.1.0" - jest-resolve "^22.1.4" - jest-util "^22.1.4" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^10.0.3" - -jest-runtime@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.2.0.tgz#f2ff307eae5ed10fbca8501534aba0922c7da693" +jest-runtime@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.2.tgz#0de0444f65ce15ee4f2e0055133fc7c17b9168f3" dependencies: babel-core "^6.0.0" - babel-jest "^22.2.0" + babel-jest "^22.4.1" babel-plugin-istanbul "^4.1.5" chalk "^2.0.1" convert-source-map "^1.4.0" exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^22.2.0" - jest-haste-map "^22.2.0" + jest-config "^22.4.2" + jest-haste-map "^22.4.2" jest-regex-util "^22.1.0" - jest-resolve "^22.2.0" - jest-util "^22.2.0" + jest-resolve "^22.4.2" + jest-util "^22.4.1" + jest-validate "^22.4.2" json-stable-stringify "^1.0.1" micromatch "^2.3.11" realpath-native "^1.0.0" @@ -6895,27 +6643,20 @@ jest-runtime@^22.2.0: write-file-atomic "^2.1.0" yargs "^10.0.3" -jest-snapshot@^22.1.2: - version "22.1.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.1.2.tgz#b270cf6e3098f33aceeafda02b13eb0933dc6139" - dependencies: - chalk "^2.0.1" - jest-diff "^22.1.0" - jest-matcher-utils "^22.1.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^22.1.0" +jest-serializer@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566" -jest-snapshot@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.2.0.tgz#0c0ba152d296ef70fa198cc84977a2cc269ee4cf" +jest-snapshot@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.0.tgz#03d3ce63f8fa7352388afc6a3c8b5ccc3a180ed7" dependencies: chalk "^2.0.1" - jest-diff "^22.1.0" - jest-matcher-utils "^22.2.0" + jest-diff "^22.4.0" + jest-matcher-utils "^22.4.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^22.1.0" + pretty-format "^22.4.0" jest-styled-components@^4.10.0: version "4.10.0" @@ -6923,29 +6664,17 @@ jest-styled-components@^4.10.0: dependencies: css "^2.2.1" -jest-util@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.1.4.tgz#ac8cbd43ee654102f1941f3f0e9d1d789a8b6a9b" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^22.1.0" - jest-validate "^22.1.2" - mkdirp "^0.5.1" - -jest-util@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.2.0.tgz#afad693641447858bec7b37f32952516bf887262" +jest-util@^22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.1.tgz#dd17c3bdb067f8e90591563ec0c42bf847dc249f" dependencies: callsites "^2.0.0" chalk "^2.0.1" graceful-fs "^4.1.11" is-ci "^1.0.10" - jest-message-util "^22.2.0" - jest-validate "^22.2.0" + jest-message-util "^22.4.0" mkdirp "^0.5.1" + source-map "^0.6.0" jest-validate@^21.1.0: version "21.2.1" @@ -6956,48 +6685,28 @@ jest-validate@^21.1.0: leven "^2.1.0" pretty-format "^21.2.1" -jest-validate@^22.1.2: - version "22.1.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.1.2.tgz#c3b06bcba7bd9a850919fe336b5f2a8c3a239404" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^22.1.0" - -jest-validate@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.2.0.tgz#f7ce459105a8210825e5e57279f868ab080063fa" +jest-validate@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.2.tgz#e789a4e056173bf97fe797a2df2d52105c57d4f4" dependencies: chalk "^2.0.1" + jest-config "^22.4.2" jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^22.1.0" - -jest-worker@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.1.0.tgz#0987832fe58fbdc205357f4c19b992446368cafb" - dependencies: - merge-stream "^1.0.1" + pretty-format "^22.4.0" -jest-worker@^22.2.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.0.tgz#d88d6ee176d6409f206cbbf7b485250793264262" +jest-worker@^22.2.2: + version "22.2.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390" dependencies: merge-stream "^1.0.1" -jest@^22.1.1: - version "22.2.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.2.0.tgz#024040afa1e83faf212f35dfb8941e7ece2d8b25" +jest@^22.1.1, jest@^22.1.4: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.2.tgz#34012834a49bf1bdd3bc783850ab44e4499afc20" dependencies: import-local "^1.0.0" - jest-cli "^22.2.0" - -jest@^22.1.4: - version "22.1.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.1.4.tgz#9ec71373a38f40ff92a3e5e96ae85687c181bb72" - dependencies: - jest-cli "^22.1.4" + jest-cli "^22.4.2" jmespath@0.15.0: version "0.15.0" @@ -7008,8 +6717,8 @@ joi-browser@^13.0.1: resolved "https://registry.yarnpkg.com/joi-browser/-/joi-browser-13.0.1.tgz#06a7b782d94bca6fa0f107138846ea16588b2e7b" joi@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-13.1.0.tgz#59e7b8714b932a1e342c3583d5841d7169ff1822" + version "13.1.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-13.1.2.tgz#b2db260323cc7f919fafa51e09e2275bd089a97e" dependencies: hoek "5.x.x" isemail "3.x.x" @@ -7024,11 +6733,7 @@ joi@^6.10.1, joi@^6.9.1: moment "2.x.x" topo "1.x.x" -js-base64@^2.1.8: - version "2.4.0" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" - -js-base64@^2.1.9: +js-base64@^2.1.8, js-base64@^2.1.9: version "2.4.3" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" @@ -7059,8 +6764,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.6.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.1.tgz#43fffc10072597a8ee9680cba46900d9e4dbeba2" + version "11.6.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.2.tgz#25d1ef332d48adf77fc5221fe2619967923f16bb" dependencies: abab "^1.0.4" acorn "^5.3.0" @@ -7075,7 +6780,7 @@ jsdom@^11.5.1: html-encoding-sniffer "^1.0.2" left-pad "^1.2.0" nwmatcher "^1.4.3" - parse5 "^4.0.0" + parse5 "4.0.0" pn "^1.1.0" request "^2.83.0" request-promise-native "^1.0.5" @@ -7093,6 +6798,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -7123,7 +6832,7 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7155,15 +6864,6 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonist@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsonist/-/jsonist-1.3.0.tgz#c0c74b95ef1c952038619b29efa520b1cc987556" - dependencies: - bl "~1.0.0" - hyperquest "~1.2.0" - json-stringify-safe "~5.0.0" - xtend "~4.0.0" - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -7192,8 +6892,10 @@ jsprim@^1.2.2: verror "1.10.0" jss-camel-case@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.0.0.tgz#7cf8453e395c31fed931d11efbc885edcd61132e" + version "6.1.0" + resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" + dependencies: + hyphenate-style-name "^1.0.2" jss-compose@^5.0.0: version "5.0.0" @@ -7222,18 +6924,28 @@ jss-nested@^6.0.1: warning "^3.0.0" jss@^9.3.3: - version "9.6.0" - resolved "https://registry.yarnpkg.com/jss/-/jss-9.6.0.tgz#a4f256263608b39a37f2d3c10b9ab08d9ab841f3" + version "9.8.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.0.tgz#77830def563870103f8671ed31ce3a3d2f32aa2b" dependencies: is-in-browser "^1.1.3" symbol-observable "^1.1.0" warning "^3.0.0" -jsx-ast-utils@^1.3.4, jsx-ast-utils@^1.4.0: +jstransform@~11.0.0: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + +jsx-ast-utils@^1.3.4: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" -jsx-ast-utils@^2.0.0: +jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" dependencies: @@ -7282,7 +6994,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" @@ -7296,9 +7008,9 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -known-css-properties@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.4.1.tgz#baaaf704e5f8a5f10e0e221212aae3ea738ea372" +known-css-properties@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.5.0.tgz#6ff66943ed4a5b55657ee095779a91f4536f8084" lazy-cache@^0.2.3: version "0.2.7" @@ -7331,16 +7043,16 @@ left-pad@^1.2.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" lerna@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.5.1.tgz#d07099bd3051ee799f98c753328bd69e96c6fab8" + version "2.9.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.9.0.tgz#303f70bc50b1c4541bdcf54eda13c36fe54401f3" dependencies: async "^1.5.0" chalk "^2.1.0" cmd-shim "^2.0.2" columnify "^1.5.4" command-join "^2.0.0" - conventional-changelog-cli "^1.3.2" - conventional-recommended-bump "^1.0.1" + conventional-changelog-cli "^1.3.13" + conventional-recommended-bump "^1.2.1" dedent "^0.7.0" execa "^0.8.0" find-up "^2.1.0" @@ -7353,7 +7065,7 @@ lerna@^2.5.1: hosted-git-info "^2.5.0" inquirer "^3.2.2" is-ci "^1.0.10" - load-json-file "^3.0.0" + load-json-file "^4.0.0" lodash "^4.17.4" minimatch "^3.0.4" npmlog "^4.1.2" @@ -7361,11 +7073,12 @@ lerna@^2.5.1: package-json "^4.0.1" path-exists "^3.0.0" read-cmd-shim "^1.0.1" - read-pkg "^2.0.0" + read-pkg "^3.0.0" rimraf "^2.6.1" safe-buffer "^5.1.1" semver "^5.4.1" signal-exit "^3.0.2" + slash "^1.0.0" strong-log-transformer "^1.0.6" temp-write "^3.3.0" write-file-atomic "^2.3.0" @@ -7373,62 +7086,75 @@ lerna@^2.5.1: write-pkg "^3.1.0" yargs "^8.0.2" -level-codec@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.0.tgz#c755b68d0d44ffa0b1cba044b8f81a55a14ad39b" - -level-codec@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-6.1.0.tgz#f5df0a99582f76dac43855151ab6f4e4d0d60045" +level-codec@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" -level-errors@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.1.tgz#52fdc2dbbaf395cf767db843929a38b7015678d2" - dependencies: - errno "~0.1.1" +level-codec@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-8.0.0.tgz#3a4a0de06dae20c2f5a57b3372c7651e67083e03" -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" +level-errors@^1.0.4, level-errors@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" dependencies: errno "~0.1.1" -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" +level-iterator-stream@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.0.tgz#e0fe4273a0322177c81bb87684016bb5b90a98b4" dependencies: inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" + readable-stream "^2.0.5" xtend "^4.0.0" +level-packager@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-2.1.1.tgz#10b653decb67b0a09c4e961ae84f196edaad205a" + dependencies: + encoding-down "~4.0.0" + levelup "^2.0.0" + level-write-stream@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/level-write-stream/-/level-write-stream-1.0.0.tgz#3f7fbb679a55137c0feb303dee766e12ee13c1dc" dependencies: end-stream "~0.1.0" -leveldown@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-1.5.0.tgz#6b8d3cbea7a4a89aa47444607d7358213e6fcb81" - dependencies: - abstract-leveldown "~2.6.1" - bindings "~1.2.1" - fast-future "~1.0.0" - nan "~2.4.0" - prebuild "^4.1.1" - -levelup@1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.8.tgz#fb442c488efbea1043f7eb9929a792a74fbd1da6" - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~6.1.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.1.0" - xtend "~4.0.0" +level@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/level/-/level-2.1.1.tgz#6c9d459dc6a417ef1f53c58e3cb23180b0734926" + dependencies: + level-packager "^2.0.2" + leveldown "^2.1.1" + +leveldown@2.1.1, leveldown@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-2.1.1.tgz#2f4d786dfe6ba3ecc63409784ce29eca110413bf" + dependencies: + abstract-leveldown "~3.0.0" + bindings "~1.3.0" + fast-future "~1.0.2" + nan "~2.8.0" + prebuild-install "^2.1.0" + +levelup@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-2.0.1.tgz#3dc91b3e632d37c9e546239c864118b004c9f860" + dependencies: + deferred-leveldown "~2.0.2" + level-errors "~1.1.0" + level-iterator-stream "~2.0.0" + xtend "~4.0.0" + +levelup@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-2.0.2.tgz#83dd22ffd5ee14482143c37cddfb8457854d3727" + dependencies: + deferred-leveldown "~3.0.0" + level-errors "~1.1.0" + level-iterator-stream "~2.0.0" + xtend "~4.0.0" leven@^2.1.0: version "2.1.0" @@ -7442,26 +7168,41 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" libtidy@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/libtidy/-/libtidy-0.3.6.tgz#d07e0e00764631b2d13e8f3848fa975151099092" + version "0.3.7" + resolved "https://registry.yarnpkg.com/libtidy/-/libtidy-0.3.7.tgz#a51c4c8bb7abf4d4fd4d9537467d969bac1fe0bd" dependencies: nan "^2.1.0" node-pre-gyp "^0.6.36" +lie@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.0.4.tgz#bc7ae1ebe7f1c8de39afdcd4f789076b47b0f634" + dependencies: + es3ify "^0.2.2" + immediate "~3.0.5" + inline-process-browser "^1.0.0" + unreachable-branch-transform "^0.3.0" + lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" dependencies: immediate "~3.0.5" +lie@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.2.0.tgz#4f13f2f8bbb027d383db338c43043545791aa8dc" + dependencies: + immediate "~3.0.5" + lint-staged@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-6.0.0.tgz#7ab7d345f2fe302ff196f1de6a005594ace03210" + version "6.1.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-6.1.1.tgz#cd08c4d9b8ccc2d37198d1c47ce77d22be6cf324" dependencies: app-root-path "^2.0.0" chalk "^2.1.0" commander "^2.11.0" - cosmiconfig "^3.1.0" + cosmiconfig "^4.0.0" debug "^3.1.0" dedent "^0.7.0" execa "^0.8.0" @@ -7476,7 +7217,7 @@ lint-staged@^6.0.0: p-map "^1.1.1" path-is-inside "^1.0.2" pify "^3.0.0" - staged-git-files "0.0.4" + staged-git-files "1.0.0" stringify-object "^3.2.0" listenercount@~1.0.1: @@ -7554,20 +7295,20 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-3.0.0.tgz#7eb3735d983a7ed2262ade4ff769af5369c5c440" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" dependencies: graceful-fs "^4.1.2" - parse-json "^3.0.0" - pify "^2.0.0" + parse-json "^4.0.0" + pify "^3.0.0" strip-bom "^3.0.0" loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^0.2.15, loader-utils@^0.2.16: +loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" dependencies: @@ -7591,9 +7332,9 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash-es@^4.17.3, lodash-es@^4.2.0, lodash-es@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" +lodash-es@^4.17.3, lodash-es@^4.17.5, lodash-es@^4.2.1: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.5.tgz#9fc6e737b1c4d151d8f9cae2247305d552ce748f" lodash._reinterpolate@~3.0.0: version "3.0.0" @@ -7639,10 +7380,6 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" -lodash.flowright@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flowright/-/lodash.flowright-3.5.0.tgz#2b5fff399716d7e7dc5724fe9349f67065184d67" - lodash.foreach@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" @@ -7651,6 +7388,10 @@ lodash.isnull@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash.isnull/-/lodash.isnull-3.0.0.tgz#fafbe59ea1dca27eed786534039dd84c2e07c56e" +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + lodash.kebabcase@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -7663,13 +7404,13 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" -lodash.merge@4.6.0, lodash.merge@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" +lodash.merge@4.6.1, lodash.merge@^4.4.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" -lodash.mergewith@4.6.0, lodash.mergewith@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" +lodash.mergewith@4.6.1, lodash.mergewith@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" lodash.omit@4.5.0: version "4.5.0" @@ -7679,19 +7420,7 @@ lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - -lodash.pick@4.4.0, lodash.pick@^4.2.1, lodash.pick@^4.4.0: +lodash.pick@4.4.0, lodash.pick@^4.2.1: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" @@ -7752,9 +7481,9 @@ lodash@4.17.2: version "4.17.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.2, lodash@~4.17.4: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.4: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" log-symbols@^1.0.2: version "1.0.2" @@ -7762,9 +7491,9 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" +log-symbols@^2.0.0, log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: chalk "^2.0.1" @@ -7819,6 +7548,10 @@ ltgt@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.0.tgz#b65ba5fcb349a29924c8e333f7c6a5562f2e4842" +ltgt@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -7830,8 +7563,8 @@ magic-string@^0.22.4: vlq "^0.2.1" make-dir@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" dependencies: pify "^3.0.0" @@ -7849,6 +7582,10 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7928,6 +7665,16 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +memdown@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.2.4.tgz#cd9a34aaf074d53445a271108eb4b8dd4ec0f27f" + dependencies: + abstract-leveldown "2.4.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.1.3" + 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" @@ -7950,6 +7697,20 @@ meow@3.7.0, meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +meow@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.0.tgz#fd5855dd008db5b92c552082db1c307cba20b29d" + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + merge-descriptors@1.0.1, merge-descriptors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7987,18 +7748,18 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: regex-cache "^0.4.2" micromatch@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba" + version "3.1.9" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" - braces "^2.3.0" - define-property "^1.0.0" - extend-shallow "^2.0.1" - extglob "^2.0.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" fragment-cache "^0.2.1" - kind-of "^6.0.0" - nanomatch "^1.2.5" + kind-of "^6.0.2" + nanomatch "^1.2.9" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" @@ -8011,19 +7772,15 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.30.0 < 2": - version "1.32.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414" - -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.10, mime-types@^2.1.11, mime-types@^2.1.12, mime-types@^2.1.15, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" +mime-types@^2.1.10, mime-types@^2.1.11, mime-types@^2.1.12, mime-types@^2.1.15, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: - mime-db "~1.30.0" + mime-db "~1.33.0" mime@1.3.x: version "1.3.6" @@ -8038,8 +7795,12 @@ mime@^1.3.4, mime@^1.4.1, mime@^1.5.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" min-document@^2.19.0: version "2.19.0" @@ -8055,7 +7816,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@3, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -8067,11 +7828,22 @@ minimatch@3.0.3: dependencies: brace-expansion "^1.0.0" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.2, minimist@^1.1.3, minimist@^1.2.0: +minimist@1.1.x: + version "1.1.3" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" + +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -8083,9 +7855,9 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mississippi@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e" +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -8093,14 +7865,14 @@ mississippi@^1.3.0: flush-write-stream "^1.0.0" from2 "^2.1.0" parallel-transform "^1.1.0" - pump "^1.0.0" + pump "^2.0.1" pumpify "^1.3.3" stream-each "^1.1.0" through2 "^2.0.0" mixin-deep@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a" + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -8123,8 +7895,8 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" moment@2.x.x, moment@^2.18.1, moment@^2.6.0: - version "2.19.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.4.tgz#17e5e2c6ead8819c8ecfad83a0acccb312e94682" + version "2.20.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" morgan@^1.8.2: version "1.9.0" @@ -8147,10 +7919,6 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -ms@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -8203,32 +7971,33 @@ mute-stream@0.0.7, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" nan-x@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nan-x/-/nan-x-1.0.0.tgz#0ee78e8d1cd0592d5b4260a5940154545c61c121" + version "1.0.2" + resolved "https://registry.yarnpkg.com/nan-x/-/nan-x-1.0.2.tgz#5f34e9d3115242486219eee3c8bc49fd2425b19a" nan@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" nan@^2.1.0, nan@^2.3.0, nan@^2.3.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" + +nan@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" -nan@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" - -nanomatch@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79" +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" - define-property "^1.0.0" - extend-shallow "^2.0.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" fragment-cache "^0.2.1" - is-odd "^1.0.0" - kind-of "^5.0.2" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" @@ -8261,17 +8030,22 @@ ncp@1.0.x: resolved "https://registry.yarnpkg.com/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" nearley@^2.7.10: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae" + version "2.11.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.1.tgz#a9c0a5fa942998db5ad18b14fbc8e9fc49672f16" dependencies: nomnom "~1.6.2" railroad-diagrams "^1.0.0" - randexp "^0.4.2" + randexp "0.4.6" + semver "^5.4.1" negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +neo-async@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" + net@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/net/-/net-1.0.2.tgz#d1757ec9a7fb2371d83cf4755ce3e27e10829388" @@ -8287,18 +8061,24 @@ nocache@2.0.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.0.0.tgz#202b48021a0c4cbde2df80de15a17443c8b43980" nock@^9.0.14: - version "9.1.4" - resolved "https://registry.yarnpkg.com/nock/-/nock-9.1.4.tgz#5cdda89c5effaed0f448486f0135bf7b1e7bf1dc" + version "9.2.3" + resolved "https://registry.yarnpkg.com/nock/-/nock-9.2.3.tgz#39738087d6a0497d3a165fb352612b38a2f9b92f" dependencies: - chai ">=1.9.2 <4.0.0" - debug "^2.2.0" + chai "^4.1.2" + debug "^3.1.0" deep-equal "^1.0.0" json-stringify-safe "^5.0.1" - lodash "~4.17.2" + lodash "^4.17.5" mkdirp "^0.5.0" - propagate "0.4.0" + propagate "^1.0.0" qs "^6.5.1" - semver "^5.3.0" + semver "^5.5.0" + +node-abi@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.3.0.tgz#f3d554d6ac72a9ee16f0f4dc9548db7c08de4986" + dependencies: + semver "^5.4.1" node-dir@^0.1.10: version "0.1.17" @@ -8317,7 +8097,7 @@ node-forge@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" -node-gyp@^3.0.3, node-gyp@^3.3.1: +node-gyp@^3.3.1: version "3.6.2" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" dependencies: @@ -8368,8 +8148,8 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-mocks-http@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/node-mocks-http/-/node-mocks-http-1.6.6.tgz#0fdeef866cc122a80051bbd89a876d3c4cd21e13" + version "1.6.7" + resolved "https://registry.yarnpkg.com/node-mocks-http/-/node-mocks-http-1.6.7.tgz#89f31c12586585c3812e6bd725d417710d7632e3" dependencies: accepts "^1.3.3" depd "^1.1.0" @@ -8382,26 +8162,7 @@ node-mocks-http@^1.6.6: range-parser "^1.2.0" type-is "^1.6.14" -node-ninja@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/node-ninja/-/node-ninja-1.0.2.tgz#20a09e57b92e2df591993d4bf098ac3e727062b6" - dependencies: - fstream "^1.0.0" - glob "3 || 4 || 5 || 6 || 7" - graceful-fs "^4.1.2" - minimatch "3" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2" - osenv "0" - path-array "^1.0.0" - request "2" - rimraf "2" - semver "2.x || 3.x || 4 || 5" - tar "^2.0.0" - which "1" - -node-notifier@^5.1.2, node-notifier@^5.2.1: +node-notifier@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" dependencies: @@ -8464,13 +8225,9 @@ node-sass@^4.5.3: stdout-stream "^1.4.0" "true-case-path" "^1.0.2" -nodemailer@^4.0.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.4.1.tgz#ce480eb3db7b949b3366e301b8f0af1c1248025e" - -nodemailer@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.4.2.tgz#f215fb88e8a1052f9f93083909e116d2b79fc8de" +nodemailer@^4.0.1, nodemailer@^4.4.2: + version "4.6.0" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.0.tgz#b99391435aabbd34b74a1283112fbdfd34f7eb8f" nodesecurity-npm-utils@^5.0.0: version "5.0.0" @@ -8483,7 +8240,7 @@ nomnom@~1.6.2: colors "0.5.x" underscore "~1.4.4" -noop-logger@^0.1.0: +noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" @@ -8545,8 +8302,8 @@ normalize-url@^1.4.0: sort-keys "^1.0.0" npm-path@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.3.tgz#15cff4e1c89a38da77f56f6055b24f975dfb2bbe" + version "2.0.4" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" dependencies: which "^1.2.10" @@ -8564,15 +8321,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -"npmlog@0 || 1 || 2", npmlog@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -8619,6 +8368,10 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" @@ -8658,7 +8411,7 @@ object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" -object-keys@^1.0.10, object-keys@^1.0.11, object-keys@^1.0.8: +object-keys@^1.0.11, object-keys@^1.0.6, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -8672,15 +8425,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - -object.assign@^4.1.0: +object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" dependencies: @@ -8810,13 +8555,13 @@ ora@^0.2.3: object-assign "^4.0.1" ora@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a" + version "1.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" dependencies: - chalk "^1.1.1" + chalk "^2.1.0" cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - log-symbols "^1.0.2" + cli-spinners "^1.0.1" + log-symbols "^2.1.0" original@>=0.0.5, original@^1.0.0: version "1.0.0" @@ -8855,8 +8600,8 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" osenv@0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -8996,16 +8741,16 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + parse5@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" dependencies: "@types/node" "*" -parse5@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - parseurl@^1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -9043,12 +8788,6 @@ passport@^0.3.2: passport-strategy "1.x.x" pause "0.0.1" -path-array@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-array/-/path-array-1.0.1.tgz#7e2f0f35f07a2015122b868b7eac0eb2c4fec271" - dependencies: - array-index "^1.0.0" - path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -9113,6 +8852,10 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + pause@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" @@ -9171,7 +8914,7 @@ pgpass@1.x: dependencies: split "^1.0.0" -pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -9190,11 +8933,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" dependencies: find-up "^2.0.0" - load-json-file "^2.0.0" + load-json-file "^4.0.0" pkg-config@^1.1.0: version "1.1.1" @@ -9226,9 +8969,13 @@ pkginfo@0.3.x: version "0.3.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" -platform@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.4.tgz#6f0fb17edaaa48f21442b3a975c063130f1c3ebd" +pkginfo@0.x.x: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" + +platform@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" pluralize@^1.2.1: version "1.2.1" @@ -9315,9 +9062,9 @@ postcss-filter-plugins@^2.0.0: postcss "^5.0.4" uniqid "^4.0.0" -postcss-html@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.11.0.tgz#03a3ff3116f8a0fe0d46316ea21893d4db4b63af" +postcss-html@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.12.0.tgz#39b6adb4005dfc5464df7999c0f81c95bced7e50" dependencies: htmlparser2 "^3.9.2" remark "^8.0.0" @@ -9394,33 +9141,27 @@ postcss-minify-selectors@^2.0.4: postcss "^5.0.14" postcss-selector-parser "^2.0.0" -postcss-modules-extract-imports@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" - dependencies: - postcss "^6.0.1" - postcss-modules-extract-imports@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" dependencies: postcss "^6.0.1" -postcss-modules-local-by-default@^1.0.1, postcss-modules-local-by-default@^1.2.0: +postcss-modules-local-by-default@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-scope@^1.0.0, postcss-modules-scope@^1.1.0: +postcss-modules-scope@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-values@^1.1.0, postcss-modules-values@^1.3.0: +postcss-modules-values@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" dependencies: @@ -9489,11 +9230,18 @@ postcss-safe-parser@^3.0.1: dependencies: postcss "^6.0.6" +postcss-sass@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz#e55516441e9526ba4b380a730d3a02e9eaa78c7a" + dependencies: + gonzales-pe "^4.0.3" + postcss "^6.0.6" + postcss-scss@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94" + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.4.tgz#6310fe1a15be418707a2cfd77f21dd4a06d1e09d" dependencies: - postcss "^6.0.3" + postcss "^6.0.19" postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: version "2.2.3" @@ -9556,21 +9304,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.1: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146" +postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.17, postcss@^6.0.19, postcss@^6.0.6, postcss@^6.0.8: + version "6.0.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555" dependencies: - chalk "^2.3.0" + chalk "^2.3.1" source-map "^0.6.1" - supports-color "^5.1.0" - -postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.8: - version "6.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" - dependencies: - chalk "^2.3.0" - source-map "^0.6.1" - supports-color "^4.4.0" + supports-color "^5.2.0" postgres-array@~1.0.0: version "1.0.2" @@ -9590,52 +9330,293 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" +pouchdb-abstract-mapreduce@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-6.4.3.tgz#0310053812d16ff9545a3db43f5e38a67a0133d7" + dependencies: + pouchdb-binary-utils "6.4.3" + pouchdb-collate "6.4.3" + pouchdb-collections "6.4.3" + pouchdb-mapreduce-utils "6.4.3" + pouchdb-md5 "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-adapter-http@^6.2.0: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-http/-/pouchdb-adapter-http-6.4.3.tgz#0bc713e4d5f5b7bbaa4dc509d417d38b7733a71f" + dependencies: + argsarray "0.0.1" + pouchdb-ajax "6.4.3" + pouchdb-binary-utils "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-adapter-leveldb-core@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-6.4.3.tgz#0b623fc12e63acbf5606508ba2008e501803076a" + dependencies: + argsarray "0.0.1" + buffer-from "0.1.1" + double-ended-queue "2.1.0-0" + levelup "2.0.1" + pouchdb-adapter-utils "6.4.3" + pouchdb-binary-utils "6.4.3" + pouchdb-collections "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-json "6.4.3" + pouchdb-md5 "6.4.3" + pouchdb-merge "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + sublevel-pouchdb "6.4.3" + through2 "2.0.3" + +pouchdb-adapter-leveldb@^6.1.1: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb/-/pouchdb-adapter-leveldb-6.4.3.tgz#0fe0f69b090df849c15b54e09a0e20db13cfa581" + dependencies: + level "2.1.1" + level-write-stream "1.0.0" + leveldown "2.1.1" + pouchdb-adapter-leveldb-core "6.4.3" + pouchdb-merge "6.4.3" + pouchdb-utils "6.4.3" + through2 "2.0.3" + +pouchdb-adapter-memory@^6.1.1: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-memory/-/pouchdb-adapter-memory-6.4.3.tgz#06edb687be9d063b27e9b58ca30ea1a08a9b94f4" + dependencies: + memdown "1.2.4" + pouchdb-adapter-leveldb-core "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-adapter-utils@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-6.4.3.tgz#384bb1bcd37dc7d473016eb450cec53d665bcae4" + dependencies: + pouchdb-binary-utils "6.4.3" + pouchdb-collections "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-md5 "6.4.3" + pouchdb-merge "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-ajax@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-ajax/-/pouchdb-ajax-6.4.3.tgz#642aea957925cb9fcd6493d2f39820c34bca3e88" + dependencies: + buffer-from "0.1.1" + pouchdb-binary-utils "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + request "2.83.0" + +pouchdb-binary-utils@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-6.4.3.tgz#ba6d9b9d289a359d47b53c1ec017fd9715a777a9" + dependencies: + buffer-from "0.1.1" + +pouchdb-changes-filter@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-changes-filter/-/pouchdb-changes-filter-6.4.3.tgz#01fcf9dbc9d742fe5060624bb39bc459a3d11a1a" + dependencies: + pouchdb-errors "6.4.3" + pouchdb-selector-core "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-collate@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-6.4.3.tgz#55a77a1a3e1c2cf86fe4d02aea171e10c2a3f944" + +pouchdb-collate@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-1.2.0.tgz#cae3b830fca124b7f97d23046e4faa311ec3828c" + +pouchdb-collections@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-6.4.3.tgz#2b70ca3143134c361dba6e466518b4f4d8e92ff4" + +pouchdb-core@^6.1.1: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-core/-/pouchdb-core-6.4.3.tgz#8a25d60f95b6861191228327e56c04a661389426" + dependencies: + argsarray "0.0.1" + inherits "2.0.3" + pouchdb-changes-filter "6.4.3" + pouchdb-collections "6.4.3" + pouchdb-debug "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-merge "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-debug@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-debug/-/pouchdb-debug-6.4.3.tgz#d5ee0d0f638c455ef947fe6658030db1480c72c0" + dependencies: + debug "3.1.0" + +pouchdb-errors@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-6.4.3.tgz#9fa4a13f64ee50c8d593e3235b18b1458977f8d1" + dependencies: + inherits "2.0.3" + +pouchdb-extend@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/pouchdb-extend/-/pouchdb-extend-0.1.2.tgz#d1ce511bf704ed2e29f7bf428a416acfffa124b8" + +pouchdb-find@^0.10.3: + version "0.10.5" + resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-0.10.5.tgz#34f285b8a56496a98f9cef2e1a1f6a0aac4eae8b" + dependencies: + argsarray "0.0.1" + debug "^2.1.0" + inherits "^2.0.1" + is-array "^1.0.1" + pouchdb-collate "^1.2.0" + pouchdb-extend "^0.1.2" + pouchdb-promise "5.4.0" + pouchdb-upsert "~2.0.1" + spark-md5 "2.0.2" + +pouchdb-find@^6.3.4: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-6.4.3.tgz#1d0128306071434a5e397bb14ce69c831356c95e" + dependencies: + pouchdb-abstract-mapreduce "6.4.3" + pouchdb-collate "6.4.3" + pouchdb-md5 "6.4.3" + pouchdb-promise "6.4.3" + pouchdb-selector-core "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-json@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-6.4.3.tgz#a1702c8eb9d656f6566920aaec9fb3e7e1265132" + dependencies: + vuvuzela "1.0.3" + +pouchdb-mapreduce-utils@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-6.4.3.tgz#1245e1ca4d3f216d336030c669dd97d6597442e4" + dependencies: + argsarray "0.0.1" + inherits "2.0.3" + pouchdb-collections "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-md5@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-6.4.3.tgz#d414315366e4bb428fb6048a25655b1eca591797" + dependencies: + pouchdb-binary-utils "6.4.3" + spark-md5 "3.0.0" + +pouchdb-merge@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-6.4.3.tgz#4ef901f4aaa27be6aec0108998a127fe55bb0628" + +pouchdb-promise@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/pouchdb-promise/-/pouchdb-promise-5.4.0.tgz#e277ac6bda1ac8504597abb5c43a7c3a9e56866f" + dependencies: + lie "3.0.4" + +pouchdb-promise@6.4.3, pouchdb-promise@^6.1.2, pouchdb-promise@^6.3.4: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-promise/-/pouchdb-promise-6.4.3.tgz#74516f4acf74957b54debd0fb2c0e5b5a68ca7b3" + dependencies: + lie "3.1.1" + +pouchdb-promise@^5.4.3: + version "5.4.5" + resolved "https://registry.yarnpkg.com/pouchdb-promise/-/pouchdb-promise-5.4.5.tgz#5c2a69759141eb73be1e172e522fd84da2e0752e" + dependencies: + lie "3.0.4" + +pouchdb-selector-core@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-6.4.3.tgz#03a9cfd9284589baf836f3005ff15cf5e0eaf705" + dependencies: + pouchdb-collate "6.4.3" + pouchdb-utils "6.4.3" + +pouchdb-upsert@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pouchdb-upsert/-/pouchdb-upsert-2.2.0.tgz#42b15e420848f3b294c35060589fdb51cf7f7f5f" + dependencies: + pouchdb-promise "^6.1.2" + +pouchdb-upsert@~2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pouchdb-upsert/-/pouchdb-upsert-2.0.2.tgz#c746cc9945e52d8c78e42f63ade0666777996712" + dependencies: + pouchdb-promise "^5.4.3" + +pouchdb-utils@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-6.4.3.tgz#aeb6bb8cbd8cf2d9f04e499bc3b70d1ce2a6c78a" + dependencies: + argsarray "0.0.1" + clone-buffer "1.0.0" + immediate "3.0.6" + inherits "2.0.3" + pouchdb-collections "6.4.3" + pouchdb-errors "6.4.3" + pouchdb-promise "6.4.3" + uuid "3.2.1" + pouchdb@^6.3.4: - version "6.3.4" - resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-6.3.4.tgz#e3c8596d19cc12f7474ca48d5d3800affaf701b1" + version "6.4.3" + resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-6.4.3.tgz#077e812a054ac44e13622a64e0c802325d1d44ad" dependencies: argsarray "0.0.1" buffer-from "0.1.1" clone-buffer "1.0.0" - debug "2.6.4" + debug "3.1.0" double-ended-queue "2.1.0-0" immediate "3.0.6" inherits "2.0.3" - level-codec "7.0.0" + level "2.1.1" + level-codec "7.0.1" level-write-stream "1.0.0" - leveldown "1.5.0" - levelup "1.3.8" + leveldown "2.1.1" + levelup "2.0.1" lie "3.1.1" ltgt "2.2.0" readable-stream "1.0.33" - request "2.80.0" + request "2.83.0" spark-md5 "3.0.0" through2 "2.0.3" - uuid "^3.1.0" + uuid "3.2.1" vuvuzela "1.0.3" -prebuild@^4.1.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/prebuild/-/prebuild-4.5.0.tgz#2aaa0df2063bff814a803bd4dc94ff9b64e5df00" +prebuild-install@^2.1.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.5.1.tgz#0f234140a73760813657c413cdccdda58296b1da" dependencies: - async "^1.4.0" - execspawn "^1.0.1" - expand-template "^1.0.0" - ghreleases "^1.0.2" + detect-libc "^1.0.3" + expand-template "^1.0.2" github-from-package "0.0.0" - minimist "^1.1.2" + minimist "^1.2.0" mkdirp "^0.5.1" - node-gyp "^3.0.3" - node-ninja "^1.0.1" - noop-logger "^0.1.0" - npmlog "^2.0.0" + node-abi "^2.2.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" os-homedir "^1.0.1" - pump "^1.0.0" - rc "^1.0.3" - simple-get "^1.4.2" - tar-fs "^1.7.0" - tar-stream "^1.2.1" - xtend "^4.0.1" + pump "^2.0.1" + rc "^1.1.6" + simple-get "^2.7.0" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" prelude-ls@~1.1.2: version "1.1.2" @@ -9650,8 +9631,8 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" prettier@^1.8.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.1.tgz#41638a0d47c1efbd1b7d5a742aaa5548eab86d70" + version "1.11.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" pretty-error@^2.0.2: version "2.1.1" @@ -9667,9 +9648,9 @@ pretty-format@^21.2.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^22.1.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.1.0.tgz#2277605b40ed4529ae4db51ff62f4be817647914" +pretty-format@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.0.tgz#237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -9682,6 +9663,10 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -9703,8 +9688,8 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" promise-queue@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.3.tgz#8534d76bf4673c3baa3a82bba01bd295cc30f14f" + version "2.2.5" + resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.5.tgz#2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4" promise@^7.1.1: version "7.3.1" @@ -9712,7 +9697,18 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompt@^1.0.0, prompt@flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87: +prompt@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.0.0.tgz#8e57123c396ab988897fb327fd3aedc3e735e4fe" + dependencies: + colors "^1.1.2" + pkginfo "0.x.x" + read "1.0.x" + revalidator "0.1.x" + utile "0.3.x" + winston "2.1.x" + +prompt@flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87, "prompt@github:flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87": version "1.0.0" resolved "https://codeload.github.com/flatiron/prompt/tar.gz/1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87" dependencies: @@ -9729,16 +9725,16 @@ prop-types-extra@^1.0.1: warning "^3.0.0" prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" + version "15.6.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: fbjs "^0.8.16" loose-envify "^1.3.1" object-assign "^4.1.1" -propagate@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-0.4.0.tgz#f3fcca0a6fe06736a7ba572966069617c130b481" +propagate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-1.0.0.tgz#00c2daeedda20e87e3782b344adba1cddd6ad709" property-is-enumerable-x@^1.1.0: version "1.1.0" @@ -9748,11 +9744,11 @@ property-is-enumerable-x@^1.1.0: to-property-key-x "^2.0.1" proxy-addr@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" dependencies: forwarded "~0.1.2" - ipaddr.js "1.5.2" + ipaddr.js "1.6.0" prr@~1.0.1: version "1.0.1" @@ -9778,91 +9774,14 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -pubsweet-client@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/pubsweet-client/-/pubsweet-client-1.1.4.tgz#9b4ea16bd25d305d7e3392aa45c0db8865471611" - dependencies: - authsome "0.0.9" - config "^1.21.0" - event-source-polyfill "^0.0.10" - global "^4.3.1" - isomorphic-fetch "^2.1.1" - lint-staged "^6.0.0" - lodash "^4.0.0" - prop-types "^15.5.8" - pubsweet-component-login "^0.6.0" - react "^15.4.4" - react-css-themr "^2.1.2" - react-redux "^5.0.2" - react-router-dom "^4.2.2" - react-router-redux next - redux "^3.6.0" - redux-form "^7.0.3" - redux-logger "^3.0.1" - redux-thunk "^2.2.0" - reselect "^3.0.1" - -pubsweet-component-blog@^0.3.1: - version "0.3.5" - resolved "https://registry.yarnpkg.com/pubsweet-component-blog/-/pubsweet-component-blog-0.3.5.tgz#3af228868a9bf255414711e0f18e6dd12d455d0e" - dependencies: - prop-types "^15.5.10" - pubsweet-component-manage "^0.2.2" - react-bootstrap "^0.31.3" - react-redux "^5.0.6" - react-router-bootstrap "^0.24.4" - react-router-dom "^4.2.2" - redux "^3.7.2" - -pubsweet-component-form-group@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/pubsweet-component-form-group/-/pubsweet-component-form-group-0.1.6.tgz#020fcb45967abafeb113bed3deefc39cb34e7f60" - dependencies: - joi-browser "^13.0.1" - prop-types "^15.5.10" - pubsweet-server "^1.0.4" - react-bootstrap "^0.31.3" - -pubsweet-component-form-group@^0.1.5: - version "0.1.10" - resolved "https://registry.yarnpkg.com/pubsweet-component-form-group/-/pubsweet-component-form-group-0.1.10.tgz#5639d1c427b51da0c34772f202f2090ad38eedac" +pubsweet-component-form-group@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pubsweet-component-form-group/-/pubsweet-component-form-group-1.0.0.tgz#40d9daaf2c27d2dfa4b9663d15ad9eaad077cca0" dependencies: joi-browser "^13.0.1" prop-types "^15.5.10" pubsweet-server "^1.1.0" - react-bootstrap "^0.31.3" - -pubsweet-component-login@^0.5.2: - version "0.5.7" - resolved "https://registry.yarnpkg.com/pubsweet-component-login/-/pubsweet-component-login-0.5.7.tgz#10cac6a2d907bc9eda5be355d29b38499c87422f" - dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-redux "^5.0.6" - react-router-dom "^4.2.2" - react-router-redux "^4.0.8" - redux "^3.7.2" - -pubsweet-component-login@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/pubsweet-component-login/-/pubsweet-component-login-0.6.0.tgz#4f5ee6ca096b8b8651d50c9798957a694e42c6d2" - dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-redux "^5.0.6" - react-router-dom "^4.2.2" - react-router-redux "^4.0.8" - redux "^3.7.2" - redux-form "^7.0.3" - -pubsweet-component-navigation@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/pubsweet-component-navigation/-/pubsweet-component-navigation-0.3.2.tgz#c4f3d2d61ce61ce116215c4fc700afa665285a72" - dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-router-bootstrap "^0.24.4" - react-router-dom "^4.2.2" + react-bootstrap "^0.32.0" pubsweet-component-password-reset-backend@^0.2.0: version "0.2.2" @@ -9873,57 +9792,82 @@ pubsweet-component-password-reset-backend@^0.2.0: moment "^2.18.1" nodemailer "^4.0.1" -pubsweet-component-password-reset-frontend@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pubsweet-component-password-reset-frontend/-/pubsweet-component-password-reset-frontend-0.2.3.tgz#801e0a49a45fb04890ef993d3f372009f5c472e6" - dependencies: - prop-types "^15.5.10" - query-string "^5.0.0" - react-bootstrap "^0.31.3" - react-router "^4.2.0" - -pubsweet-component-posts-manager@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/pubsweet-component-posts-manager/-/pubsweet-component-posts-manager-0.6.5.tgz#d35ac7f74bf198d652ff81e9a790ea006ec3719c" +pubsweet-component-posts-manager@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pubsweet-component-posts-manager/-/pubsweet-component-posts-manager-1.0.0.tgz#ba24ad6def50f835d786ea0947b6cbbd38c4ce9b" dependencies: prop-types "^15.5.10" - pubsweet-component-form-group "^0.1.5" - react-bootstrap "^0.31.3" - react-dom "^15.6.1" + pubsweet-component-form-group "^1.0.0" + react-bootstrap "^0.32.0" + react-dom "^16.2.0" react-redux "^5.0.6" react-router-bootstrap "^0.24.4" react-router-dom "^4.2.2" redux "^3.7.2" -pubsweet-component-signup@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/pubsweet-component-signup/-/pubsweet-component-signup-0.4.3.tgz#031748751c66c597b76b5b523ed8c707efda86f1" - dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-redux "^5.0.6" - react-router "^4.2.0" - redux "^3.7.2" - -pubsweet-component-teams-manager@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/pubsweet-component-teams-manager/-/pubsweet-component-teams-manager-0.3.2.tgz#78d3b1d79c8daed31033361e06d0844d1f1abbe7" +pubsweet-server@^1.1.0, pubsweet-server@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-1.1.1.tgz#89f16393bd947cec8cb5131b770101f21ef35911" dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-dom "^15.6.1" - react-redux "^5.0.6" - react-select "^1.0.0-rc.10" - redux "^3.7.2" + "@pubsweet/logger" "^0.2.2" + apollo-server-express "^1.3.2" + authsome "0.0.9" + bcrypt "^1.0.2" + bluebird "^3.5.1" + body-parser "^1.15.2" + colors "^1.1.2" + config "^1.26.2" + cookie-parser "^1.4.3" + dotenv "^4.0.0" + express "^4.16.1" + graphql "^0.12.3" + graphql-tools "^2.18.0" + helmet "^3.8.1" + http-status-codes "^1.0.6" + joi "^13.1.0" + jsonwebtoken "^7.1.7" + lodash "^4.0.0" + minimist "^1.2.0" + morgan "^1.8.2" + multer "^1.1.0" + passport "^0.3.2" + passport-anonymous "^1.0.1" + passport-http-bearer "^1.0.1" + passport-local "^1.0.0" + pouchdb-adapter-http "^6.2.0" + pouchdb-adapter-leveldb "^6.1.1" + pouchdb-adapter-memory "^6.1.1" + pouchdb-core "^6.1.1" + pouchdb-find "^0.10.3" + pouchdb-upsert "^2.0.0" + promise-queue "^2.2.3" + prompt "^1.0.0" + pubsweet-sse "^0.1.4" + relational-pouch "^1.4.5" + require-relative "^0.8.7" + uuid "^3.0.1" + winston "^2.2.0" -pubsweet-component-users-manager@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pubsweet-component-users-manager/-/pubsweet-component-users-manager-0.2.3.tgz#8cad081f405f5428a3e4d27a4d0ad77763ce0a2f" +pubsweet@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-1.1.9.tgz#645def7c850b7443ade106c862e04c0ced8b51d5" dependencies: - prop-types "^15.5.10" - react-bootstrap "^0.31.3" - react-redux "^5.0.6" - redux "^3.7.2" + "@pubsweet/db-manager" "^0.0.17" + "@pubsweet/logger" "^0.2.2" + bluebird "^3.5.0" + colors "^1.1.2" + commander "^2.9.0" + express "^4.15.3" + forever-monitor "^1.7.0" + fs-extra "^4.0.2" + inflection "^1.12.0" + prompt flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87 + pubsweet-server "^1.1.1" + require-relative "^0.8.7" + uuid "^3.0.1" + webpack "^3.8.1" + webpack-dev-middleware "^1.12.0" + webpack-hot-middleware "^2.20.0" pump@^1.0.0: version "1.0.3" @@ -9932,7 +9876,7 @@ pump@^1.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pump@^2.0.0: +pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" dependencies: @@ -9960,8 +9904,8 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" pusher-js@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/pusher-js/-/pusher-js-4.2.1.tgz#7c10e2f981b8ed4390c1cbed448eb5c0967aaa22" + version "4.2.2" + resolved "https://registry.yarnpkg.com/pusher-js/-/pusher-js-4.2.2.tgz#de391bfb14d221ef96f462304f8a73b95ce9acc5" dependencies: faye-websocket "0.9.4" xmlhttprequest "^1.8.0" @@ -9975,7 +9919,7 @@ q-i@^1.2.0: is-plain-object "^2.0.4" stringify-object "^3.2.0" -q@^1.1.2, q@^1.4.1: +q@^1.1.2, q@^1.4.1, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9999,8 +9943,8 @@ query-string@^4.1.0: strict-uri-encode "^1.0.0" query-string@^5.0.0, query-string@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.0.1.tgz#6e2b86fe0e08aef682ecbe86e85834765402bd88" + version "5.1.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.0.tgz#9583b15fd1307f899e973ed418886426a9976469" dependencies: decode-uri-component "^0.2.0" object-assign "^4.1.0" @@ -10022,6 +9966,10 @@ querystringify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + raf@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" @@ -10032,7 +9980,7 @@ railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" -randexp@^0.4.2: +randexp@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" dependencies: @@ -10047,14 +9995,14 @@ randomatic@^1.1.3: kind-of "^4.0.0" randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -10072,16 +10020,7 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -rc@^1.0.1, rc@^1.0.3, rc@^1.1.2, rc@^1.1.6: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -rc@^1.1.7: +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: version "1.2.5" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" dependencies: @@ -10090,35 +10029,9 @@ rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-apollo@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.0.4.tgz#01dd32a8e388672f5d7385b21cdd0b94009ee9ee" - dependencies: - apollo-link "^1.0.0" - hoist-non-react-statics "^2.2.0" - invariant "^2.2.1" - lodash.flowright "^3.5.0" - lodash.pick "^4.4.0" - prop-types "^15.5.8" - -react-bootstrap@^0.31.3: - version "0.31.5" - resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.31.5.tgz#57040fa8b1274e1e074803c21a1b895fdabea05a" - dependencies: - babel-runtime "^6.11.6" - classnames "^2.2.5" - dom-helpers "^3.2.0" - invariant "^2.2.1" - keycode "^2.1.2" - prop-types "^15.5.10" - prop-types-extra "^1.0.1" - react-overlays "^0.7.4" - uncontrollable "^4.1.0" - warning "^3.0.0" - react-bootstrap@^0.32.0: - version "0.32.0" - resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.0.tgz#7f656be7b0f88e4bdda819135956bad10d3f167e" + version "0.32.1" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.1.tgz#60624c1b48a39d773ef6cce6421a4f33ecc166bb" dependencies: babel-runtime "^6.11.6" classnames "^2.2.5" @@ -10206,15 +10119,6 @@ react-docgen@^3.0.0-beta9: node-dir "^0.1.10" recast "^0.12.6" -react-dom@^15.6.1: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" - react-dom@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" @@ -10225,8 +10129,8 @@ react-dom@^16.2.0: prop-types "^15.6.0" react-dropzone@^4.2.7: - version "4.2.7" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.2.7.tgz#a4963b1f725d5a91e63cd1c2b55ddce537953d46" + version "4.2.8" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.2.8.tgz#27ce163544d92c75734b0e1e54c471979587e737" dependencies: attr-accept "^1.0.3" prop-types "^15.5.7" @@ -10235,9 +10139,9 @@ react-error-overlay@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-3.0.0.tgz#c2bc8f4d91f1375b3dad6d75265d51cd5eeaf655" -react-feather@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/react-feather/-/react-feather-1.0.7.tgz#f2118f1d2402b0c1e6f23c732f9e7f9fd4ca61e2" +react-feather@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/react-feather/-/react-feather-1.0.8.tgz#69b13d5c729949f194d33201dee91bab67fa31a2" react-group@^1.0.5: version "1.0.5" @@ -10255,22 +10159,6 @@ react-icons@^2.2.7: dependencies: react-icon-base "2.1.0" -react-input-autosize@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.1.2.tgz#a3dc11a5517c434db25229925541309de3f7a8f5" - dependencies: - prop-types "^15.5.8" - -react-overlays@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.7.4.tgz#ef2ec652c3444ab8aa014262b18f662068e56d5c" - dependencies: - classnames "^2.2.5" - dom-helpers "^3.2.1" - prop-types "^15.5.10" - prop-types-extra "^1.0.1" - warning "^3.0.0" - react-overlays@^0.8.0: version "0.8.3" resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5" @@ -10298,15 +10186,15 @@ react-reconciler@^0.7.0: prop-types "^15.6.0" react-redux@^5.0.2, react-redux@^5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946" + version "5.0.7" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8" dependencies: - hoist-non-react-statics "^2.2.1" + hoist-non-react-statics "^2.5.0" invariant "^2.0.0" - lodash "^4.2.0" - lodash-es "^4.2.0" + lodash "^4.17.5" + lodash-es "^4.17.5" loose-envify "^1.1.0" - prop-types "^15.5.10" + prop-types "^15.6.0" react-router-bootstrap@^0.24.4: version "0.24.4" @@ -10323,23 +10211,11 @@ react-router-dom@^4.2.2: loose-envify "^1.3.1" prop-types "^15.5.4" react-router "^4.2.0" - warning "^3.0.0" - -react-router-redux@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e" - -react-router-redux@^5.0.0-alpha.9: - version "5.0.0-alpha.9" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz#825431516e0e6f1fd93b8807f6bd595e23ec3d10" - dependencies: - history "^4.7.2" - prop-types "^15.6.0" - react-router "^4.2.0" + warning "^3.0.0" -react-router-redux@next: - version "5.0.0-alpha.8" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.8.tgz#5242c705730b2ac862aff7a8e90f870d0cf45e12" +react-router-redux@^5.0.0-alpha.9, react-router-redux@next: + version "5.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz#825431516e0e6f1fd93b8807f6bd595e23ec3d10" dependencies: history "^4.7.2" prop-types "^15.6.0" @@ -10357,20 +10233,12 @@ react-router@^4.2.0: prop-types "^15.5.4" warning "^3.0.0" -react-select@^1.0.0-rc.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.1.0.tgz#626a2de839fdea2ade74dd1b143a9bde34be6c82" - dependencies: - classnames "^2.2.4" - prop-types "^15.5.8" - react-input-autosize "^2.1.0" - react-styleguidist@^6.0.24, react-styleguidist@^6.0.8: - version "6.2.1" - resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-6.2.1.tgz#67ceac9df3aaf1c4350633a9baed7271f20a354e" + version "6.2.5" + resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-6.2.5.tgz#fe4da35d999220425012c8b0350f06608d734d6d" dependencies: ast-types "^0.10.1" - buble "^0.18.0" + buble "^0.19.2" chalk "^2.3.0" classnames "^2.2.5" clean-webpack-plugin "^0.1.17" @@ -10459,16 +10327,6 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.5.8" warning "^3.0.0" -react@^15.4.4: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" - 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" - react@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" @@ -10498,6 +10356,13 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0, read-pkg@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -10514,20 +10379,28 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + read@1.0.x: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" - process-nextick-args "~1.0.6" + process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.0.3" util-deprecate "~1.0.1" @@ -10550,7 +10423,7 @@ readable-stream@1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@1.1.x, readable-stream@^1.0.33, readable-stream@~1.1.9: +readable-stream@1.1.x: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -10563,17 +10436,6 @@ readable-stream@~0.0.2: version "0.0.4" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" -readable-stream@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readable-stream@~2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -10619,6 +10481,24 @@ recast@0.12.6: private "~0.1.5" source-map "~0.5.0" +recast@^0.10.1: + version "0.10.43" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.43.tgz#b95d50f6d60761a5f6252e15d80678168491ce7f" + dependencies: + ast-types "0.8.15" + esprima-fb "~15001.1001.0-dev-harmony-fb" + private "~0.1.5" + source-map "~0.5.0" + +recast@^0.11.17: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + recast@^0.12.6: version "0.12.9" resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" @@ -10657,6 +10537,13 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -10672,11 +10559,11 @@ reduce-function-call@^1.0.1: balanced-match "^0.4.2" redux-form@^7.0.3: - version "7.2.0" - resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-7.2.0.tgz#4465d9bc863e40b1704695d672bea75fcf81db04" + version "7.2.3" + resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-7.2.3.tgz#a01111116f386f3d88451b5528dfbb180561a8b4" dependencies: deep-equal "^1.0.1" - es6-error "^4.0.0" + es6-error "^4.1.1" hoist-non-react-statics "^2.3.1" invariant "^2.2.2" is-promise "^2.1.0" @@ -10691,8 +10578,10 @@ redux-logger@^3.0.1: deep-diff "^0.3.5" redux-mock-store@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.3.0.tgz#6edfef0d2332f20576381069d6d889a6d0a4451c" + version "1.5.1" + resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.5.1.tgz#fca4335392e66605420b5559fe02fc5b8bb6d63c" + dependencies: + lodash.isplainobject "^4.0.6" redux-thunk@^2.2.0: version "2.2.0" @@ -10737,11 +10626,12 @@ regex-cache@^0.4.2: dependencies: is-equal-shallow "^0.1.3" -regex-not@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" dependencies: - extend-shallow "^2.0.1" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" regexpu-core@^1.0.0: version "1.0.0" @@ -10760,8 +10650,8 @@ regexpu-core@^2.0.0: regjsparser "^0.1.4" registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -10786,6 +10676,19 @@ relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" +relational-pouch@^1.4.5: + version "1.4.6" + resolved "https://registry.yarnpkg.com/relational-pouch/-/relational-pouch-1.4.6.tgz#d2772ee1a36992bd8b28d4aaff2ef1a4a0410857" + dependencies: + argsarray "0.0.1" + es3ify "^0.2.2" + inherits "~2.0.1" + lie "^3.1.0" + pouchdb-extend "^0.1.2" + pouchdb-find "^6.3.4" + pouchdb-promise "^6.3.4" + uniq "^1.0.1" + remark-parse@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b" @@ -10886,7 +10789,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2, request@^2.81.0, request@^2.83.0: +request@2, request@2.83.0, request@^2.81.0, request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -10913,32 +10816,6 @@ request@2, request@^2.81.0, request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@2.80.0: - version "2.80.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.80.0.tgz#8cc162d76d79381cdefdd3505d76b80b60589bd0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.0" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -10992,11 +10869,11 @@ request@~2.79.0: uuid "^3.0.0" require-coercible-to-string-x@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.0.tgz#367b3e9ca67e00324c411b0b498453a74cd5569e" + version "1.0.2" + resolved "https://registry.yarnpkg.com/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.2.tgz#b8c96ab42962ab7b28f3311fc6b198124c56f9f6" dependencies: - require-object-coercible-x "^1.4.1" - to-string-x "^1.4.2" + require-object-coercible-x "^1.4.3" + to-string-x "^1.4.5" require-directory@^2.1.1: version "2.1.1" @@ -11010,11 +10887,11 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-object-coercible-x@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/require-object-coercible-x/-/require-object-coercible-x-1.4.1.tgz#75b9fb5bda2d15cf705a5714f108e8b40ca3eb2e" +require-object-coercible-x@^1.4.1, require-object-coercible-x@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/require-object-coercible-x/-/require-object-coercible-x-1.4.3.tgz#783719a23a5c0ce24e845fcc50cd55b6421ea4bb" dependencies: - is-nil-x "^1.4.1" + is-nil-x "^1.4.2" require-relative@^0.8.7: version "0.8.7" @@ -11085,7 +10962,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3, resolve@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: @@ -11123,7 +11000,7 @@ right-pad@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" -rimraf@2, rimraf@2.x.x, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@2, rimraf@2.x.x, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -11160,8 +11037,8 @@ run-async@^2.2.0: is-promise "^2.1.0" run-parallel@^1.1.2, run-parallel@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" + version "1.1.7" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.7.tgz#d8f40854b9e19d18c2e0e70180cc05cfc86b650f" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -11188,8 +11065,8 @@ rx@^4.1.0: resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" rxjs@^5.4.2: - version "5.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.5.tgz#e164f11d38eaf29f56f08c3447f74ff02dd84e97" + version "5.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" dependencies: symbol-observable "1.0.1" @@ -11197,9 +11074,15 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + sane@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56" + version "2.4.1" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.4.1.tgz#29f991208cf28636720efdc584293e7fd66663a5" dependencies: anymatch "^1.3.0" exec-sh "^0.2.0" @@ -11244,6 +11127,13 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" +schema-utils@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -11265,14 +11155,10 @@ semver-utils@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.1.tgz#27d92fec34d27cfa42707d3b40d025ae9855f2df" -"semver@2 || 3 || 4 || 5", semver@5.5.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@5.5.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -"semver@2.x || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" @@ -11285,10 +11171,6 @@ semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" -semver@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" - send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" @@ -11377,8 +11259,8 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.9" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -11435,17 +11317,17 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-get@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + +simple-get@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.7.0.tgz#ad37f926d08129237ff08c4f2edfd6f10e0380b5" dependencies: + decompress-response "^3.3.0" once "^1.3.1" - unzip-response "^1.0.0" - xtend "^4.0.0" - -simple-mime@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-mime/-/simple-mime-0.1.0.tgz#95f517c4f466d7cff561a71fc9dab2596ea9ef2e" + simple-concat "^1.0.0" slash@^1.0.0: version "1.0.0" @@ -11559,18 +11441,12 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0: +source-map-support@^0.5.0, source-map-support@^0.5.1: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76" dependencies: source-map "^0.6.0" -source-map-support@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5" - dependencies: - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -11579,7 +11455,7 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.6: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -11599,6 +11475,10 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +spark-md5@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-2.0.2.tgz#37b763847763ae7e7acef2ca5233d01e649a78b7" + spark-md5@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.0.tgz#3722227c54e2faf24b1dc6d933cc144e6f71bfef" @@ -11614,19 +11494,27 @@ spawn-sync@^1.0.15: concat-stream "^1.4.7" os-shim "^0.1.2" -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" dependencies: - spdx-license-ids "^1.0.2" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" spdy-transport@^2.0.18: version "2.0.20" @@ -11691,11 +11579,11 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -ssri@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.1.0.tgz#2cbf1df36b74d0fc91fcf89640a4b3e1d10b1899" +ssri@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" dependencies: - safe-buffer "^5.1.0" + safe-buffer "^5.1.1" stack-trace@0.0.x: version "0.0.10" @@ -11705,9 +11593,9 @@ stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" -staged-git-files@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" +staged-git-files@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.0.0.tgz#cdb847837c1fcc52c08a872d4883cc0877668a80" standard-engine@~7.0.0: version "7.0.0" @@ -11776,12 +11664,12 @@ stream-each@^1.1.0: stream-shift "^1.0.0" stream-http@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" + version "2.8.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" - readable-stream "^2.2.6" + readable-stream "^2.3.3" to-arraybuffer "^1.0.0" xtend "^4.0.0" @@ -11845,8 +11733,8 @@ stringify-entities@^1.0.1: is-hexadecimal "^1.0.0" stringify-object@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.1.tgz#2720c2eff940854c819f6ee252aaeb581f30624d" + version "3.2.2" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" dependencies: get-own-enumerable-property-symbols "^2.0.1" is-obj "^1.0.1" @@ -11913,14 +11801,7 @@ style-loader@^0.18.2: loader-utils "^1.0.2" schema-utils "^0.3.0" -style-loader@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759" - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.3.0" - -style-loader@^0.19.1: +style-loader@^0.19.0, style-loader@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85" dependencies: @@ -11944,23 +11825,13 @@ styled-components@^2.4.0: stylis "^3.4.0" supports-color "^3.2.3" -styled-components@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.1.4.tgz#1bdc1409c9bacafee3510c573d23b73039b0d875" - dependencies: - buffer "^5.0.3" - css-to-react-native "^2.0.3" - fbjs "^0.8.9" - hoist-non-react-statics "^1.2.0" - is-plain-object "^2.0.1" - prop-types "^15.5.4" - stylis "^3.4.0" - stylis-rule-sheet "^0.0.7" - supports-color "^3.2.3" +styled-normalize@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/styled-normalize/-/styled-normalize-3.0.1.tgz#217efb96598690addd04699ca71af0db3473fea2" stylelint-config-prettier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-2.0.0.tgz#0f671435294ebe4a215971855e1e576f5f227a21" + version "2.1.0" + resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-2.1.0.tgz#395874225ceef02ea8e31c2f4073098f4505b054" stylelint-config-pubsweet@^0.0.3: version "0.0.3" @@ -11970,15 +11841,15 @@ stylelint-config-pubsweet@^0.0.3: stylelint-config-standard "^18.0.0" stylelint-order "^0.7.0" -stylelint-config-recommended@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.0.0.tgz#560a028e81ea3ca8894b9a8eef4c0e05ac60e090" +stylelint-config-recommended@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.1.0.tgz#f526d5c771c6811186d9eaedbed02195fee30858" stylelint-config-standard@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-18.0.0.tgz#0d872b40fafdcddcf4188fb5b64ddb3887e8aefc" + version "18.2.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-18.2.0.tgz#6283149aba7f64f18731aef8f0abfb35cf619e06" dependencies: - stylelint-config-recommended "^2.0.0" + stylelint-config-recommended "^2.1.0" stylelint-order@^0.7.0: version "0.7.0" @@ -11989,8 +11860,8 @@ stylelint-order@^0.7.0: postcss-sorting "^3.0.2" stylelint@^8.2.0: - version "8.3.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.3.1.tgz#424c822f32c88e85025b55d72c7b98355e3fa6de" + version "8.4.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.4.0.tgz#c2dbaeb17236917819f9206e1c0df5fddf6f83c3" dependencies: autoprefixer "^7.1.2" balanced-match "^1.0.0" @@ -12005,21 +11876,22 @@ stylelint@^8.2.0: html-tags "^2.0.0" ignore "^3.3.3" imurmurhash "^0.1.4" - known-css-properties "^0.4.0" + known-css-properties "^0.5.0" lodash "^4.17.4" log-symbols "^2.0.0" mathml-tag-names "^2.0.1" - meow "^3.7.0" + meow "^4.0.0" micromatch "^2.3.11" normalize-selector "^0.2.0" pify "^3.0.0" postcss "^6.0.6" - postcss-html "^0.11.0" + postcss-html "^0.12.0" postcss-less "^1.1.0" postcss-media-query-parser "^0.2.3" postcss-reporter "^5.0.0" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^3.0.1" + postcss-sass "^0.2.0" postcss-scss "^1.0.2" postcss-selector-parser "^3.1.0" postcss-value-parser "^3.3.0" @@ -12031,13 +11903,9 @@ stylelint@^8.2.0: svg-tags "^1.0.0" table "^4.0.1" -stylis-rule-sheet@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.7.tgz#5c51dc879141a61821c2094ba91d2cbcf2469c6c" - stylis@^3.4.0: - version "3.4.8" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.4.8.tgz#94380babbcd4c75726215794ca985b38ec96d1a3" + version "3.4.10" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.4.10.tgz#a135cab4b9ff208e327fbb5a6fde3fa991c638ee" subcommand@^2.0.3: version "2.1.0" @@ -12048,6 +11916,15 @@ subcommand@^2.0.3: minimist "^1.2.0" xtend "^4.0.0" +sublevel-pouchdb@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-6.4.3.tgz#e4eca52d8ac7ba17ff6c18fcdc51f5ecbbb15597" + dependencies: + inherits "2.0.3" + level-codec "7.0.1" + ltgt "2.2.0" + readable-stream "1.0.33" + sugarss@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44" @@ -12108,17 +11985,17 @@ supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: +supports-color@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" -supports-color@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" +supports-color@^5.1.0, supports-color@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" dependencies: - has-flag "^2.0.0" + has-flag "^3.0.0" svg-tags@^1.0.0: version "1.0.0" @@ -12144,14 +12021,10 @@ symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" -symbol-observable@^1.0.2, symbol-observable@^1.1.0: +symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" -symbol-observable@^1.0.3, symbol-observable@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" - symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -12168,11 +12041,11 @@ table@^3.7.8: string-width "^2.0.0" table@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" + ajv "^6.0.1" + ajv-keywords "^3.0.0" chalk "^2.1.0" lodash "^4.17.4" slice-ansi "1.0.0" @@ -12182,7 +12055,7 @@ tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" -tar-fs@^1.7.0: +tar-fs@^1.13.0: version "1.16.0" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" dependencies: @@ -12204,7 +12077,7 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@^1.1.2, tar-stream@^1.2.1, tar-stream@^1.5.0: +tar-stream@^1.1.2, tar-stream@^1.5.0: version "1.5.5" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" dependencies: @@ -12226,13 +12099,13 @@ temp-dir@^1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" temp-write@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.3.0.tgz#c1a96de2b36061342eae81f44ff001aec8f615a9" + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" dependencies: graceful-fs "^4.1.2" is-stream "^1.1.0" make-dir "^1.0.0" - pify "^2.2.0" + pify "^3.0.0" temp-dir "^1.0.0" uuid "^3.0.1" @@ -12251,8 +12124,8 @@ tempfile@^1.1.1: uuid "^2.0.1" test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + version "4.2.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.0.tgz#07e3613609a362c74516a717515e13322ab45b3c" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -12279,14 +12152,14 @@ through2@2.0.3, through2@^2.0.0, through2@^2.0.2: readable-stream "^2.1.5" xtend "~4.0.1" -through2@~0.6.3: +through2@^0.6.2, through2@^0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" dependencies: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12303,8 +12176,8 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" timers-browserify@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" dependencies: setimmediate "^1.0.4" @@ -12335,9 +12208,9 @@ to-ast@^1.0.0: ast-types "^0.7.2" esprima "^2.1.0" -to-boolean-x@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-boolean-x/-/to-boolean-x-1.0.1.tgz#724128dacc5bea75a93ad471be7ee9277561b2c1" +to-boolean-x@^1.0.1, to-boolean-x@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-boolean-x/-/to-boolean-x-1.0.3.tgz#cbe15e38a85d09553f29869a9b3e3b54ceef5af0" to-fast-properties@^1.0.3: version "1.0.3" @@ -12408,32 +12281,34 @@ to-regex-range@^2.1.0: repeat-string "^1.6.1" to-regex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" dependencies: - define-property "^0.2.5" - extend-shallow "^2.0.1" - regex-not "^1.0.0" + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" to-string-symbols-supported-x@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.0.tgz#d435eb72312fe885b18047a96d59c75641476872" + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.2.tgz#73f5e17963520b2b365559f05e3864addaab7f1e" dependencies: - cached-constructors-x "^1.0.0" - has-symbol-support-x "^1.4.1" + cached-constructors-x "^1.0.2" + has-symbol-support-x "^1.4.2" is-symbol "^1.0.1" to-string-tag-x@^1.4.1, to-string-tag-x@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/to-string-tag-x/-/to-string-tag-x-1.4.2.tgz#916a0c72d2f93dc27fccfe0ea0ce26cd78be21de" + version "1.4.3" + resolved "https://registry.yarnpkg.com/to-string-tag-x/-/to-string-tag-x-1.4.3.tgz#3aed2edec9343be3c76e338161f85d6864c692b1" dependencies: lodash.isnull "^3.0.0" validate.io-undefined "^1.0.3" -to-string-x@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/to-string-x/-/to-string-x-1.4.2.tgz#7d9a2528e159a9214e668137c1e10a045abe6279" +to-string-x@^1.4.2, to-string-x@^1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/to-string-x/-/to-string-x-1.4.5.tgz#b86dad14df68ca4df52ca4cb011a25e0bf5d9ca1" dependencies: + cached-constructors-x "^1.0.0" is-symbol "^1.0.1" topo@1.x.x: @@ -12453,8 +12328,8 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: punycode "^1.4.1" @@ -12480,6 +12355,10 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" @@ -12521,10 +12400,6 @@ trough@^1.0.0: dependencies: glob "^6.0.4" -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -12549,24 +12424,16 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -type-detect@^4.0.5: - version "4.0.7" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.7.tgz#862bd2cf6058ad92799ff5a5b8cf7b6cec726198" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" type-is@^1.6.14, type-is@^1.6.4, type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" dependencies: media-typer "0.3.0" - mime-types "~2.1.15" + mime-types "~2.1.18" typedarray@^0.0.6: version "0.0.6" @@ -12584,10 +12451,22 @@ typeface-fira-sans@^0.0.43: version "0.0.43" resolved "https://registry.yarnpkg.com/typeface-fira-sans/-/typeface-fira-sans-0.0.43.tgz#f9c026ae5b7ad5f1fb727f9947bd1e10e13702e6" +typeface-noto-sans@^0.0.54: + version "0.0.54" + resolved "https://registry.yarnpkg.com/typeface-noto-sans/-/typeface-noto-sans-0.0.54.tgz#16989ef56a5220b0503495ab8c1036f66b517b55" + +typeface-noto-serif@^0.0.54: + version "0.0.54" + resolved "https://registry.yarnpkg.com/typeface-noto-serif/-/typeface-noto-serif-0.0.54.tgz#26a552df3557c54f2f0c7f9bdbd28a95c9aab06b" + typeface-open-sans@0.0.35: version "0.0.35" resolved "https://registry.yarnpkg.com/typeface-open-sans/-/typeface-open-sans-0.0.35.tgz#170dc36bbbd63829c9ea64b991c2b0fd65017708" +typeface-ubuntu-mono@^0.0.54: + version "0.0.54" + resolved "https://registry.yarnpkg.com/typeface-ubuntu-mono/-/typeface-ubuntu-mono-0.0.54.tgz#773582617ff60dc252acbaaeb22880ba7f559fe6" + typeface-vollkorn@^0.0.43: version "0.0.43" resolved "https://registry.yarnpkg.com/typeface-vollkorn/-/typeface-vollkorn-0.0.43.tgz#4ee1a03f90000b0be3ebd8cac360ee777456465b" @@ -12604,10 +12483,10 @@ uglify-es@3.2.2: source-map "~0.6.1" uglify-js@3.3.x: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.9.tgz#33869666c8ab7f7658ce3d22f0f1ced40097d33a" + version "3.3.12" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.12.tgz#efd87c16a1f4c674a8a5ede571001ef634dcc883" dependencies: - commander "~2.13.0" + commander "~2.14.1" source-map "~0.6.1" uglify-js@^2.6, uglify-js@^2.8.29: @@ -12648,10 +12527,6 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - uncontrollable@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-4.1.0.tgz#e0358291252e1865222d90939b19f2f49f81c1a9" @@ -12760,6 +12635,14 @@ unquote@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" +unreachable-branch-transform@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz#d99cc4c6e746d264928845b611db54b0f3474caa" + dependencies: + esmangle-evaluator "^1.0.0" + recast "^0.10.1" + through2 "^0.6.2" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -12767,10 +12650,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -unzip-response@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" @@ -12789,6 +12668,10 @@ unzipper@^0.8.9: readable-stream "~2.1.5" setimmediate "~1.0.4" +upath@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" + upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -12824,10 +12707,6 @@ url-parse@^1.1.8: querystringify "~1.0.0" requires-port "~1.0.0" -url-template@~2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - url@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" @@ -12864,10 +12743,6 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -12915,18 +12790,18 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@3.1.0, uuid@^3.0.1, uuid@^3.1.0: +uuid@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" +uuid@3.2.1, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - v8flags@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" @@ -12934,11 +12809,11 @@ v8flags@^2.1.1: user-home "^1.1.1" validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" validate.io-undefined@^1.0.3: version "1.0.3" @@ -12983,10 +12858,14 @@ vfile@^2.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" -vlq@^0.2.1, vlq@^0.2.2: +vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" +vlq@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.0.tgz#8101be90843422954c2b13eb27f2f3122bdcc806" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -13023,12 +12902,12 @@ watch@~0.18.0: minimist "^1.2.0" watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + version "1.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" dependencies: - async "^2.1.2" - chokidar "^1.7.0" + chokidar "^2.0.2" graceful-fs "^4.1.2" + neo-async "^2.5.0" wbuf@^1.1.0, wbuf@^1.7.2: version "1.7.2" @@ -13057,8 +12936,8 @@ webpack-dev-middleware@1.12.2, webpack-dev-middleware@^1.12.0: time-stamp "^2.0.0" webpack-dev-server@^2.9.7: - version "2.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz#6f9358a002db8403f016e336816f4485384e5ec0" + version "2.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f" dependencies: ansi-html "0.0.7" array-includes "^3.0.3" @@ -13089,8 +12968,8 @@ webpack-dev-server@^2.9.7: yargs "6.6.0" webpack-hot-middleware@^2.20.0: - version "2.21.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz#7b3c113a7a4b301c91e0749573c7aab28b414b52" + version "2.21.1" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.1.tgz#1b03b20a1a65a2e2ea0ea987476a5d23370ff176" dependencies: ansi-html "0.0.7" html-entities "^1.2.0" @@ -13098,10 +12977,10 @@ webpack-hot-middleware@^2.20.0: strip-ansi "^3.0.0" webpack-merge@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555" + version "4.1.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.2.tgz#5d372dddd3e1e5f8874f5bf5a8e929db09feb216" dependencies: - lodash "^4.17.4" + lodash "^4.17.5" webpack-node-externals@^1.6.0: version "1.6.0" @@ -13115,13 +12994,13 @@ webpack-sources@^1.0.1: source-map "~0.6.1" webpack@^3.5.6, webpack@^3.8.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" async "^2.1.2" enhanced-resolve "^3.4.0" escope "^3.6.0" @@ -13182,6 +13061,10 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + which@1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" @@ -13189,8 +13072,8 @@ which@1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0 isexe "^2.0.0" white-space-x@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/white-space-x/-/white-space-x-3.0.0.tgz#c8e31ed4fecf4f3feebe6532e6046008a666a3e1" + version "3.0.1" + resolved "https://registry.yarnpkg.com/white-space-x/-/white-space-x-3.0.1.tgz#81a82d5432da725aba5ca671624bb579c9e66d4f" wide-align@^1.1.0: version "1.1.2" @@ -13225,6 +13108,18 @@ winston@0.8.x: pkginfo "0.3.x" stack-trace "0.0.x" +winston@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e" + dependencies: + async "~1.0.0" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + pkginfo "0.3.x" + stack-trace "0.0.x" + winston@2.x, winston@^2.2.0, winston@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.0.tgz#808050b93d52661ed9fb6c26b3f0c826708b0aee" @@ -13253,11 +13148,11 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" worker-farm@^1.4.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + version "1.5.4" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.4.tgz#4debbe46b40edefcc717ebde74a90b1ae1e909a1" dependencies: - errno "^0.1.4" - xtend "^4.0.1" + errno "~0.1.7" + xtend "~4.0.1" wrap-ansi@^2.0.0: version "2.1.0" @@ -13316,12 +13211,11 @@ write@^0.2.1: mkdirp "^0.5.1" ws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.0.0.tgz#bfe1da4c08eeb9780b986e0e4d10eccd7345999f" + version "4.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0" - ultron "~1.1.0" x-is-function@^1.0.4: version "1.0.4" @@ -13357,8 +13251,8 @@ xmlbuilder@4.2.1, xmlbuilder@^4.1.0: lodash "^4.0.0" xmlbuilder@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" xmlhttprequest@^1.8.0: version "1.8.0" @@ -13372,6 +13266,10 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -13480,18 +13378,16 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -zen-observable@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.6.1.tgz#01dbed3bc8d02cbe9ee1112c83e04c807f647244" +zen-observable-ts@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.8.tgz#1a586dc204fa5632a88057f879500e0d2ba06869" + dependencies: + zen-observable "^0.7.0" zen-observable@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.7.1.tgz#f84075c0ee085594d3566e1d6454207f126411b3" -zen-observable@^0.8.0: - version "0.8.6" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.6.tgz#e2419311497019419d7bb56d8f6a56356a607272" - zip-stream@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04"