diff --git a/packages/client/package.json b/packages/client/package.json index 57c13c907affc2cc92e5b6be6e67439c192bb211..995430b61e8ad30a0b27692afb69c936bbf5116b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -14,15 +14,22 @@ "license": "MIT", "dependencies": { "@pubsweet/ui": "^3.3.0", + "apollo-client-preset": "^1.0.8", + "apollo-link": "^1.2.1", + "apollo-link-context": "^1.0.5", + "apollo-upload-client": "^8.0.0", "authsome": "0.0.9", "config": "^1.21.0", "event-source-polyfill": "^0.0.10", "global": "^4.3.1", + "graphql": "^0.13.0", + "graphql-tag": "^2.7.3", "isomorphic-fetch": "^2.1.1", "lint-staged": "^6.0.0", "lodash": "^4.0.0", "prop-types": "^15.5.8", "react": "^16.2.0", + "react-apollo": "^2.1.0", "react-redux": "^5.0.2", "react-router-dom": "^4.2.2", "react-router-redux": "next", @@ -50,7 +57,7 @@ "redux-mock-store": "^1.3.0" }, "peerDependencies": { - "pubsweet-server": ">=1.0.0" + "pubsweet-server": ">=1.1.0" }, "repository": { "type": "git", diff --git a/packages/client/src/components/Root.js b/packages/client/src/components/Root.js index c32b04c7eae3b3273a2780a7b4ea60ca7c0e8381..3df0464089003b752f968cc2ea63026db54aa42e 100644 --- a/packages/client/src/components/Root.js +++ b/packages/client/src/components/Root.js @@ -3,18 +3,42 @@ import { ConnectedRouter } from 'react-router-redux' import { Provider } from 'react-redux' import PropTypes from 'prop-types' import { ThemeProvider } from 'styled-components' +import { ApolloProvider } from 'react-apollo' +import { ApolloClient } from 'apollo-client' +import { createHttpLink } from 'apollo-link-http' +import { setContext } from 'apollo-link-context' +import { InMemoryCache } from 'apollo-cache-inmemory' +import { createUploadLink } from 'apollo-upload-client' import StyleRoot, { injectGlobalStyles } from '../helpers/StyleRoot' injectGlobalStyles() +const uploadLink = createUploadLink() +const httpLink = createHttpLink() +const authLink = setContext((_, { headers }) => { + const token = localStorage.getItem('token') + return { + headers: { + ...headers, + authorization: token ? `Bearer ${token}` : '', + }, + } +}) +const client = new ApolloClient({ + link: authLink.concat(uploadLink, httpLink), + cache: new InMemoryCache(), +}) + const Root = ({ store, history, routes, theme }) => ( - <Provider store={store}> - <ConnectedRouter history={history}> - <ThemeProvider theme={theme}> - <StyleRoot>{routes}</StyleRoot> - </ThemeProvider> - </ConnectedRouter> - </Provider> + <ApolloProvider client={client}> + <Provider store={store}> + <ConnectedRouter history={history}> + <ThemeProvider theme={theme}> + <StyleRoot>{routes}</StyleRoot> + </ThemeProvider> + </ConnectedRouter> + </Provider> + </ApolloProvider> ) Root.propTypes = { diff --git a/packages/client/src/helpers/withLoader.js b/packages/client/src/helpers/withLoader.js new file mode 100644 index 0000000000000000000000000000000000000000..35bc131100ae402c5a19f4df86ae006f125dbfc6 --- /dev/null +++ b/packages/client/src/helpers/withLoader.js @@ -0,0 +1,19 @@ +import React from 'react' +import PropTypes from 'prop-types' + +export default () => WrappedComponent => { + const Wrapper = ({ + data: { loading, error, ...apolloProps }, + ...parentProps + }) => { + if (loading) return <div>Loading...</div> + if (error) return <div>{error.message}</div> + return <WrappedComponent {...parentProps} {...apolloProps} /> + } + + Wrapper.propTypes = { + data: PropTypes.object, + } + + return Wrapper +} diff --git a/packages/client/src/helpers/withMutationState.js b/packages/client/src/helpers/withMutationState.js new file mode 100644 index 0000000000000000000000000000000000000000..6de58f47f34fcd1618c8ec1babecd4f522155a31 --- /dev/null +++ b/packages/client/src/helpers/withMutationState.js @@ -0,0 +1,44 @@ +import React from 'react' + +export default ({ name = 'mutate' } = {}) => WrappedComponent => + class extends React.Component { + state = { loading: false, error: null, result: null } + + loadingProperty = `${name}Loading` + errorProperty = `${name}Error` + resultProperty = `${name}Result` + + executeMutation(options) { + this.setState({ + loading: true, + error: null, + result: null, + }) + return this.props[name](options) + .then(result => { + this.setState({ + loading: false, + error: null, + result, + }) + }) + .catch(error => { + this.setState({ + loading: false, + error, + result: null, + }) + }) + } + + render() { + const props = { + ...this.props, + [name]: this.executeMutation.bind(this), + [this.loadingProperty]: this.state.loading, + [this.errorProperty]: this.state.error, + [this.resultProperty]: this.state.result, + } + return <WrappedComponent {...props} /> + } + } diff --git a/packages/client/src/index.js b/packages/client/src/index.js index 0127bd929852f32b012cd1800f9654c429b5a505..f601546846131d699460dcc2607b6032e69522f7 100644 --- a/packages/client/src/index.js +++ b/packages/client/src/index.js @@ -6,3 +6,6 @@ export { export { default as actions } from './actions' export { default as reducers } from './reducers' export { default as validations } from './validations' +export { default as withLoader } from './helpers/withLoader' +export { default as withAuthsome } from './helpers/withAuthsome' +export { default as withMutationState } from './helpers/withMutationState' diff --git a/packages/client/test/components/Root.test.jsx b/packages/client/test/components/Root.test.jsx index 9e3916e8b7f5059708c24e1b8d9c932bcf0ea85f..cb28328557f00628b8fa3aaabeb2739d1c964eb4 100644 --- a/packages/client/test/components/Root.test.jsx +++ b/packages/client/test/components/Root.test.jsx @@ -4,6 +4,7 @@ import createHistory from 'history/createBrowserHistory' import styled from 'styled-components' global.PUBSWEET_COMPONENTS = [] +global.fetch = () => {} const Root = require('../../src/components/Root').default const configureStore = require('../../src/store/configureStore') diff --git a/packages/components/package.json b/packages/components/package.json index 96d0e52c43f0c6e2525669bbcd10881c77daba96..1f9d39428035702173f2693cbcf70a0d189f8025 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -56,7 +56,8 @@ "config/" ], "globals": { - "PUBSWEET_COMPONENTS": [] + "PUBSWEET_COMPONENTS": [], + "fetch": true }, "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js" } diff --git a/yarn.lock b/yarn.lock index c0e97ecd05aed75d9891690ff9cb8f785bfec970..2e290c8dc3c4460bb70d7c2fc72d7aa8a3e674cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,6 +53,13 @@ core-js "^2.5.3" regenerator-runtime "^0.11.1" +"@babel/runtime@^7.0.0-beta.40": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.41.tgz#776ce13391b8154ccfdea71018a47b63e4d97e74" + dependencies: + core-js "^2.5.3" + regenerator-runtime "^0.11.1" + "@babel/template@7.0.0-beta.42": version "7.0.0-beta.42" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.42.tgz#7186d4e70d44cdec975049ba0a73bdaf5cdee052" @@ -244,10 +251,18 @@ 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@*", "@types/node@^9.4.6": version "9.4.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.7.tgz#57d81cd98719df2c9de118f2d5f3b1120dcd7275" +"@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.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" @@ -433,7 +448,70 @@ apollo-cache-control@^0.0.x: dependencies: graphql-extensions "^0.0.x" -apollo-link@^1.2.1: +apollo-cache-inmemory@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.11.tgz#2a96ad076f40575d622c4a45b1eeced18b2dc8ec" + dependencies: + apollo-cache "^1.1.6" + apollo-utilities "^1.0.10" + graphql-anywhere "^4.1.7" + +apollo-cache@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.6.tgz#b953488bcc8244e001b9ab9c8b362a1512e9203f" + dependencies: + apollo-utilities "^1.0.10" + +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.7" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.2.7.tgz#d5adbda81ef1f1c9c105ac71227ca8dc42b5731b" + dependencies: + "@types/zen-observable" "^0.5.3" + apollo-cache "^1.1.6" + apollo-link "^1.0.0" + apollo-link-dedup "^1.0.0" + apollo-utilities "^1.0.10" + 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.7" + resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.7.tgz#3719697a677d3af5de500b7e4cbb6c0d0bf3bef3" + dependencies: + apollo-link "^1.2.1" + +apollo-link-dedup@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.8.tgz#8c3028cf32557bd040ab6ba8856f38067bdacead" + dependencies: + apollo-link "^1.2.1" + +apollo-link-http-common@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.3.tgz#82ae0d4ff0cdd7c5c8826411d9dd7f7d8049ca46" + dependencies: + apollo-link "^1.2.1" + +apollo-link-http@^1.3.1: + version "1.5.3" + resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.3.tgz#3aa0d3ecfe5666ef0c360f359c425ff6ea1d285b" + dependencies: + apollo-link "^1.2.1" + apollo-link-http-common "^0.2.3" + +apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.1.tgz#c120b16059f9bd93401b9f72b94d2f80f3f305d2" dependencies: @@ -466,6 +544,14 @@ apollo-tracing@^0.1.0: dependencies: graphql-extensions "^0.0.x" +apollo-upload-client@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-8.0.0.tgz#0067f3b426b3828f971964799bc31f8073bd0607" + dependencies: + "@babel/runtime" "^7.0.0-beta.40" + apollo-link-http-common "^0.2.3" + 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" @@ -474,7 +560,7 @@ apollo-upload-server@^4.0.2: busboy "^0.2.14" object-path "^0.11.4" -apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: +apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.10.tgz#0c35696891d4fa28d76768e0f7249d63c6da08b9" @@ -680,6 +766,10 @@ 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.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.2.tgz#aef76a04fde54634976fc94defaad1a67e2eadb0" + ast-types@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" @@ -1806,7 +1896,7 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -buble@^0.19.3: +buble@^0.19.2, buble@^0.19.3: version "0.19.3" resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.3.tgz#01e9412062cff1da6f20342b6ecd72e7bf699d02" dependencies: @@ -1893,7 +1983,7 @@ bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -cacache@^10.0.4: +cacache@^10.0.0, cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" dependencies: @@ -2066,7 +2156,7 @@ chalk@2.3.1: escape-string-regexp "^1.0.5" supports-color "^5.2.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.3.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -2211,7 +2301,7 @@ clean-css@4.1.x: dependencies: source-map "0.5.x" -clean-webpack-plugin@^0.1.19: +clean-webpack-plugin@^0.1.17, clean-webpack-plugin@^0.1.19: version "0.1.19" resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz#ceda8bb96b00fe168e9b080272960d20fdcadd6d" dependencies: @@ -2233,7 +2323,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.1.0: +cli-spinners@^1.0.1, cli-spinners@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" @@ -2266,6 +2356,10 @@ cliff@0.1.9: eyes "0.1.x" winston "0.8.x" +clipboard-copy@^1.2.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-1.4.2.tgz#620cb6a9347d4f92447649db5a9b00edfcbb2cae" + clipboard-copy@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-2.0.0.tgz#663abcd8be9c641de6e92a2eb9afef6e0afa727e" @@ -2335,7 +2429,7 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -codemirror@^5.36.0: +codemirror@^5.32.0, codemirror@^5.36.0: version "5.36.0" resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.36.0.tgz#1172ad9dc298056c06e0b34e5ccd23825ca15b40" @@ -2433,6 +2527,10 @@ 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" + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -2763,7 +2861,7 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -copy-webpack-plugin@^4.5.1: +copy-webpack-plugin@^4.3.0, copy-webpack-plugin@^4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz#fc4f68f4add837cc5e13d111b20715793225d29c" dependencies: @@ -3297,6 +3395,13 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" +detect-port-alt@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.3.tgz#a4d2f061d757a034ecf37c514260a98750f2b131" + dependencies: + address "^1.0.1" + debug "^2.6.0" + detect-port-alt@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.5.tgz#a1aa8fc805a4a5df9b905b7ddc7eed036bcce889" @@ -3338,6 +3443,10 @@ disposables@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz#36c6a674475f55a2d6913567a601444e487b4b6e" +dlv@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.1.tgz#c79d96bfe659a5568001250ed2aaf653992bdd3f" + dnd-core@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.6.0.tgz#12bad66d58742c6e5f7cf2943fb6859440f809c4" @@ -3694,7 +3803,7 @@ es6-object-assign@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" -es6-promise@^4.2.4: +es6-promise@^4.1.1, es6-promise@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" @@ -4293,6 +4402,12 @@ extglob@^2.0.4: 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" @@ -4972,7 +5087,7 @@ globule@^1.0.0: lodash "~4.17.4" minimatch "~3.0.2" -glogg@^1.0.1: +glogg@^1.0.0, glogg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" dependencies: @@ -5004,6 +5119,12 @@ 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.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.7.tgz#cbb9106905bcc25bc0e8390548a97f8b154d3f9b" + dependencies: + apollo-utilities "^1.0.10" + graphql-extensions@^0.0.x: version "0.0.8" resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.8.tgz#d14d6e06db466a7f90fb97d75b657ae730278b09" @@ -5011,6 +5132,10 @@ graphql-extensions@^0.0.x: core-js "^2.5.3" source-map-support "^0.5.1" +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.23.1" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-2.23.1.tgz#23f43000e2b9dc5a89920fe846fc5f71a320efdb" @@ -5027,6 +5152,12 @@ 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" @@ -6124,7 +6255,7 @@ iterall@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9" -iterall@^1.1.3: +iterall@^1.1.3, iterall@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" @@ -6597,7 +6728,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jss-camel-case@^6.1.0: +jss-camel-case@^6.0.0, jss-camel-case@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" dependencies: @@ -6609,7 +6740,7 @@ jss-compose@^5.0.0: dependencies: warning "^3.0.0" -jss-default-unit@^8.0.2: +jss-default-unit@^8.0.0, jss-default-unit@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" @@ -6629,7 +6760,7 @@ jss-nested@^6.0.1: dependencies: warning "^3.0.0" -jss@^9.8.1: +jss@^9.3.3, jss@^9.8.1: version "9.8.1" resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.1.tgz#e2ff250777ad657430e6edc47a63516541b888fa" dependencies: @@ -7070,7 +7201,7 @@ 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.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: +lodash@4.17.5, 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" @@ -7080,7 +7211,7 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.0.0, log-symbols@^2.2.0: +log-symbols@^2.0.0, log-symbols@^2.1.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: @@ -7181,6 +7312,13 @@ markdown-table@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c" +markdown-to-jsx@^6.4.1: + version "6.6.0" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.6.0.tgz#311f5b7b3c18cefd066a07800531730d3a62b029" + dependencies: + prop-types "^15.5.10" + unquote "^1.1.0" + markdown-to-jsx@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.5.2.tgz#0a7dbc0524bed5a707d914b61670593a30646f53" @@ -8011,6 +8149,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opn@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + dependencies: + is-wsl "^1.1.0" + opn@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225" @@ -8063,6 +8207,15 @@ ora@^0.2.3: cli-spinners "^0.1.2" object-assign "^4.0.1" +ora@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" + dependencies: + chalk "^2.1.0" + cli-cursor "^2.1.0" + cli-spinners "^1.0.1" + log-symbols "^2.1.0" + ora@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ora/-/ora-2.0.0.tgz#8ec3a37fa7bffb54a3a0c188a1f6798e7e1827cd" @@ -8475,10 +8628,6 @@ pkginfo@0.3.x: version "0.3.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" -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" @@ -8915,18 +9064,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -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@^1.0.0, prompt@flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87: version "1.0.0" resolved "https://codeload.github.com/flatiron/prompt/tar.gz/1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87" dependencies: @@ -9067,6 +9205,10 @@ pubsweet-component-form-group@1.0.2: pubsweet-server "^2.0.0" react-bootstrap "^0.32.0" +pubsweet-component-pepper-theme@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/pubsweet-component-pepper-theme/-/pubsweet-component-pepper-theme-0.0.5.tgz#eb39aafbab8e1a737752b6c5ed7ef057ead414cc" + pubsweet-component-posts-manager@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pubsweet-component-posts-manager/-/pubsweet-component-posts-manager-1.0.2.tgz#01e990972931a00dabe00930e9aac63fc3686cd8" @@ -9080,6 +9222,10 @@ pubsweet-component-posts-manager@1.0.2: react-router-dom "^4.2.2" redux "^3.7.2" +pubsweet-theme-plugin@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/pubsweet-theme-plugin/-/pubsweet-theme-plugin-0.0.3.tgz#1773543a95ed9f56eb8b14f13f24496e034d140b" + pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -9114,6 +9260,15 @@ pusher-js@^4.2.1: faye-websocket "0.9.4" xmlhttprequest "^1.8.0" +q-i@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/q-i/-/q-i-1.2.0.tgz#2cd2ab41784dc3c583e35c70a541d93c3fde5d4a" + dependencies: + ansi-styles "^3.2.0" + dlv "^1.1.0" + is-plain-object "^2.0.4" + stringify-object "^3.2.0" + q-i@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/q-i/-/q-i-2.0.1.tgz#fec7e3f0e713f3467358bb5ac80bcc4c115187d6" @@ -9232,6 +9387,16 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-apollo@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.1.0.tgz#b94c4aca513776d90c368f20a65f99e98fdfea17" + dependencies: + fbjs "^0.8.16" + hoist-non-react-statics "^2.3.1" + invariant "^2.2.2" + lodash "4.17.5" + prop-types "^15.6.0" + react-bootstrap@^0.32.0: version "0.32.1" resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.1.tgz#60624c1b48a39d773ef6cce6421a4f33ecc166bb" @@ -9249,10 +9414,37 @@ react-bootstrap@^0.32.0: uncontrollable "^4.1.0" warning "^3.0.0" +react-codemirror2@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-3.0.7.tgz#d5d9888158263ae56da766539d7803486566ab9f" + react-codemirror2@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-4.2.1.tgz#4ad3c5c60ebbcb34880f961721b51527324ec021" +react-dev-utils@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.1.tgz#9f2763e7bafa1a1b9c52254d2a479deec280f111" + dependencies: + address "1.0.3" + babel-code-frame "6.26.0" + chalk "1.1.3" + cross-spawn "5.1.0" + detect-port-alt "1.1.3" + escape-string-regexp "1.0.5" + filesize "3.5.11" + global-modules "1.0.0" + gzip-size "3.0.0" + inquirer "3.3.0" + is-root "1.0.0" + opn "5.1.0" + react-error-overlay "^3.0.0" + recursive-readdir "2.2.1" + shell-quote "1.6.1" + sockjs-client "1.1.4" + strip-ansi "3.0.1" + text-table "0.2.0" + react-dev-utils@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.0.tgz#425ac7c9c40c2603bc4f7ab8836c1406e96bb473" @@ -9331,6 +9523,10 @@ react-dropzone@^4.1.2, react-dropzone@^4.2.7: attr-accept "^1.0.3" prop-types "^15.5.7" +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-error-overlay@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4" @@ -9447,7 +9643,129 @@ react-select@^1.0.0-rc.10: prop-types "^15.5.8" react-input-autosize "^2.1.2" -react-styleguidist@^6.0.8, react-styleguidist@^6.2.5, react-styleguidist@^6.5.0: +react-styleguidist@^6.0.8: + version "6.2.6" + resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-6.2.6.tgz#412da04ac361a882593ba3a5a6ecc81b9f4a1d39" + dependencies: + ast-types "^0.10.1" + buble "^0.19.2" + chalk "^2.3.0" + classnames "^2.2.5" + clean-webpack-plugin "^0.1.17" + clipboard-copy "^1.2.0" + codemirror "^5.32.0" + common-dir "^1.0.1" + copy-webpack-plugin "^4.3.0" + css-loader "^0.28.7" + doctrine "^2.0.2" + es6-object-assign "~1.1.0" + es6-promise "^4.1.1" + escodegen "^1.9.0" + findup "^0.1.5" + function.name-polyfill "^1.0.5" + github-slugger "^1.2.0" + glob "^7.1.2" + glogg "^1.0.0" + highlight.js "^9.12.0" + html-webpack-plugin "^2.30.1" + is-directory "^0.3.1" + javascript-stringify "^1.6.0" + jss "^9.3.3" + jss-camel-case "^6.0.0" + jss-compose "^5.0.0" + jss-default-unit "^8.0.0" + jss-global "^3.0.0" + jss-isolate "^5.1.0" + jss-nested "^6.0.1" + leven "^2.1.0" + listify "^1.0.0" + loader-utils "^1.1.0" + lodash "^4.17.4" + lowercase-keys "^1.0.0" + markdown-to-jsx "^6.4.1" + minimist "^1.2.0" + ora "^1.3.0" + prop-types "^15.6.0" + q-i "^1.2.0" + react-codemirror2 "^3.0.7" + react-dev-utils "^4.2.1" + react-docgen "^3.0.0-beta9" + react-docgen-annotation-resolver "^1.0.0" + react-docgen-displayname-handler "^1.0.1" + react-group "^1.0.5" + react-icons "^2.2.7" + remark "^8.0.0" + semver-utils "^1.1.1" + style-loader "^0.19.1" + to-ast "^1.0.0" + type-detect "^4.0.5" + uglifyjs-webpack-plugin "1.1.5" + unist-util-visit "^1.3.0" + webpack-dev-server "^2.9.7" + webpack-merge "^4.1.1" + +react-styleguidist@^6.2.5: + version "6.2.7" + resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-6.2.7.tgz#e7e7509b73439fb3899a9dfa13125def2c25c08f" + dependencies: + ast-types "^0.10.1" + buble "^0.19.2" + chalk "^2.3.0" + classnames "^2.2.5" + clean-webpack-plugin "^0.1.17" + clipboard-copy "^1.2.0" + codemirror "^5.32.0" + common-dir "^1.0.1" + copy-webpack-plugin "^4.3.0" + css-loader "^0.28.7" + doctrine "^2.0.2" + es6-object-assign "~1.1.0" + es6-promise "^4.1.1" + escodegen "^1.9.0" + findup "^0.1.5" + function.name-polyfill "^1.0.5" + github-slugger "^1.2.0" + glob "^7.1.2" + glogg "^1.0.0" + highlight.js "^9.12.0" + html-webpack-plugin "^2.30.1" + is-directory "^0.3.1" + javascript-stringify "^1.6.0" + jss "^9.3.3" + jss-camel-case "^6.0.0" + jss-compose "^5.0.0" + jss-default-unit "^8.0.0" + jss-global "^3.0.0" + jss-isolate "^5.1.0" + jss-nested "^6.0.1" + leven "^2.1.0" + listify "^1.0.0" + loader-utils "^1.1.0" + lodash "^4.17.4" + lowercase-keys "^1.0.0" + markdown-to-jsx "^6.4.1" + minimist "^1.2.0" + ora "^1.3.0" + prop-types "^15.6.0" + q-i "^1.2.0" + react-codemirror2 "^3.0.7" + react-dev-utils "^4.2.1" + react-docgen "^3.0.0-beta9" + react-docgen-annotation-resolver "^1.0.0" + react-docgen-displayname-handler "^1.0.1" + react-group "^1.0.5" + react-icons "^2.2.7" + remark "^8.0.0" + semver-utils "^1.1.1" + style-loader "^0.19.1" + to-ast "^1.0.0" + type-detect "^4.0.5" + uglifyjs-webpack-plugin "1.1.5" + unist-util-visit "^1.3.0" + webpack-dev-server "^2.9.7" + webpack-merge "^4.1.1" + +react-styleguidist@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-6.5.0.tgz#4a55145d7931c5ec75858742c913472b225e6f35" dependencies: @@ -10985,7 +11303,7 @@ style-loader@^0.18.2: loader-utils "^1.0.2" schema-utils "^0.3.0" -style-loader@^0.19.0: +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: @@ -11209,7 +11527,7 @@ 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.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: +symbol-observable@^1.0.2, 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" @@ -11511,7 +11829,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.0, type-detect@^4.0.8: +type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -11562,6 +11880,13 @@ ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" +uglify-es@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.2.2.tgz#15c62b7775002c81b7987a1c49ecd3f126cace73" + dependencies: + commander "~2.12.1" + source-map "~0.6.1" + uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -11589,6 +11914,19 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uglifyjs-webpack-plugin@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.5.tgz#5ec4a16da0fd10c96538f715caed10dbdb180875" + dependencies: + cacache "^10.0.0" + find-cache-dir "^1.0.0" + schema-utils "^0.3.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "3.2.2" + webpack-sources "^1.0.1" + worker-farm "^1.4.1" + uglifyjs-webpack-plugin@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043" @@ -12068,7 +12406,7 @@ webpack-hot-middleware@^2.20.0: querystring "^0.2.0" strip-ansi "^3.0.0" -webpack-merge@^4.1.2: +webpack-merge@^4.1.1, webpack-merge@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.2.tgz#5d372dddd3e1e5f8874f5bf5a8e929db09feb216" dependencies: @@ -12192,18 +12530,6 @@ 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.1" resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.1.tgz#a3a9265105564263c6785b4583b8c8aca26fded6" @@ -12231,7 +12557,7 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -worker-farm@^1.5.2: +worker-farm@^1.4.1, worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" dependencies: