diff --git a/packages/component-email/package.json b/packages/component-email/package.json index 3c2a4d4c7fa08d89c8690ae8f177f0b6135d7e71..58771b11aa78632c3669e80538150773704447f5 100644 --- a/packages/component-email/package.json +++ b/packages/component-email/package.json @@ -25,7 +25,7 @@ "peerDependencies": { "@pubsweet/logger": "^0.0.1", "@pubsweet/component-send-email": "0.2.4", - "pubsweet-server": "^1.0.1" + "pubsweet-server": "^10.0.0" }, "devDependencies": { "apidoc": "^0.17.6", diff --git a/packages/component-faraday-ui/package.json b/packages/component-faraday-ui/package.json index 020fd030a03d74398e998b9ed5488b05175e6d9a..9717e6c8fb31216981a2a7b1df6d3f1025d34c8a 100644 --- a/packages/component-faraday-ui/package.json +++ b/packages/component-faraday-ui/package.json @@ -4,13 +4,13 @@ "main": "src", "license": "MIT", "dependencies": { - "@pubsweet/ui": "^8.6.0", - "@pubsweet/ui-toolkit": "^1.2.0", + "@pubsweet/ui": "^9.0.2", + "@pubsweet/ui-toolkit": "^2.0.0", "country-list": "^1.1.0", - "grid-styled": "5.0.2", + "formik": "^1.3.2", "prop-types": "^15.6.2", "querystring": "^0.2.0", - "react": "^16.4.2", - "styled-components": "^3.4.2" + "react": "^16.6.0", + "styled-components": "^4.1.0" } } diff --git a/packages/component-faraday-ui/src/AppBarMenu.js b/packages/component-faraday-ui/src/AppBarMenu.js index a4dd501c94d504b33d7273fa54f6d17df17d9d25..e934d21a9157c99452a37e98a0b1f587d10f0690 100644 --- a/packages/component-faraday-ui/src/AppBarMenu.js +++ b/packages/component-faraday-ui/src/AppBarMenu.js @@ -85,9 +85,9 @@ const User = styled.div` display: flex; cursor: pointer; ` -const Dropdown = styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'admin-dropdown', -})` +const Dropdown = styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'admin-dropdown', +}))` background-color: ${th('appBar.colorBackground')}; border-radius: ${th('borderRadius')}; box-shadow: ${th('boxShadow')}; @@ -98,9 +98,9 @@ const Dropdown = styled.div.attrs({ z-index: 10; ` -const DropdownOption = styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'dropdown-option', -})` +const DropdownOption = styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'dropdown-option', +}))` align-items: center; color: ${th('colorText')}; cursor: pointer; diff --git a/packages/component-faraday-ui/src/ContextualBox.js b/packages/component-faraday-ui/src/ContextualBox.js index 32ff2966e40f3884d0069955ea65d619a1e8c689..cbf2761870c26c3740af9e34f12ec5281787566d 100644 --- a/packages/component-faraday-ui/src/ContextualBox.js +++ b/packages/component-faraday-ui/src/ContextualBox.js @@ -57,9 +57,9 @@ const ContextualBox = ({ label, children, rightChildren, ...props }) => export default ContextualBox // #region styles -const Header = styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'accordion-header', -})` +const Header = styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'accordion-header', +}))` align-items: center; cursor: pointer; display: flex; diff --git a/packages/component-faraday-ui/src/FileSection.js b/packages/component-faraday-ui/src/FileSection.js index 596f65e8436d8362ab1fdf506c1f5b1dd822071c..af022f6e5f62708b45a5460b8ce5bc456016553f 100644 --- a/packages/component-faraday-ui/src/FileSection.js +++ b/packages/component-faraday-ui/src/FileSection.js @@ -50,13 +50,13 @@ const FileSection = ({ onDelete, }) => ( <Root - innerRef={instance => { - connectFileDrop(instance) - connectDropTarget(instance) - }} isFileItemOver={isFileItemOver && canDropFileItem} isFirst={isFirst} isLast={isLast} + ref={instance => { + connectFileDrop(instance) + connectDropTarget(instance) + }} > <Row alignItems="center"> <Item> diff --git a/packages/component-faraday-ui/src/gridItems/Item.js b/packages/component-faraday-ui/src/gridItems/Item.js index 32b29bc614cf063b2639125127f07bf76d54c549..060846c5310beecc5fb598646589fcfeff966b47 100644 --- a/packages/component-faraday-ui/src/gridItems/Item.js +++ b/packages/component-faraday-ui/src/gridItems/Item.js @@ -4,9 +4,9 @@ import styled from 'styled-components' import { marginHelper, paddingHelper } from 'pubsweet-component-faraday-ui' /** @component */ -export default styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'item', -})` +export default styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'item', +}))` align-items: ${({ alignItems }) => alignItems || 'initial'}; display: flex; flex: ${({ flex }) => (isNumber(flex) ? flex : 1)}; diff --git a/packages/component-faraday-ui/src/gridItems/Row.js b/packages/component-faraday-ui/src/gridItems/Row.js index 794ed2b3f00faf6c82f720745b3826eed63bc3f2..facd07a3a394b4a7fe79be1a3c88bb1b2dec9fe0 100644 --- a/packages/component-faraday-ui/src/gridItems/Row.js +++ b/packages/component-faraday-ui/src/gridItems/Row.js @@ -4,9 +4,9 @@ import styled from 'styled-components' import { heightHelper, marginHelper, paddingHelper } from '../styledHelpers' /** @component */ -export default styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'row', -})` +export default styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'row', +}))` align-items: ${props => get(props, 'alignItems', 'flex-start')}; background-color: ${props => props.bgColor || 'transparent'}; display: flex; diff --git a/packages/component-faraday-ui/src/helpers/withRoles.js b/packages/component-faraday-ui/src/helpers/withRoles.js index aa0e7a719cec95aa6f604cce4866dd5654975f59..e6f1b0387951c812176dd4ae55d99520d8f57995 100644 --- a/packages/component-faraday-ui/src/helpers/withRoles.js +++ b/packages/component-faraday-ui/src/helpers/withRoles.js @@ -1,15 +1,20 @@ import { get } from 'lodash' -import { withProps } from 'recompose' +import { withJournal } from 'xpub-journal' +import { compose, withProps } from 'recompose' -export default withProps(({ journal }) => ({ - roles: Object.entries(get(journal, 'roles', {})).reduce( - (acc, el) => [ - ...acc, - { - value: el[0], - label: el[1], - }, - ], - [], - ), -})) +export default compose( + withJournal, + withProps(({ journal }) => ({ + titles: get(journal, 'title', []), + roles: Object.entries(get(journal, 'roles', {})).reduce( + (acc, el) => [ + ...acc, + { + value: el[0], + label: el[1], + }, + ], + [], + ), + })), +) diff --git a/packages/component-faraday-ui/src/modals/FormModal.js b/packages/component-faraday-ui/src/modals/FormModal.js index e798227aac61a7a99b16813a0f56deec6fc3b117..a139df8e733baa7732263b383c066ba776220ed0 100644 --- a/packages/component-faraday-ui/src/modals/FormModal.js +++ b/packages/component-faraday-ui/src/modals/FormModal.js @@ -1,182 +1,24 @@ import React, { Fragment } from 'react' import { get } from 'lodash' +import { Formik } from 'formik' import styled from 'styled-components' -import { reduxForm } from 'redux-form' import { th } from '@pubsweet/ui-toolkit' import { required } from 'xpub-validators' +import { H2, Button, TextField, ValidatedFieldFormik } from '@pubsweet/ui' import { compose, setDisplayName, withHandlers, withProps } from 'recompose' -import { - H2, - Menu, - Button, - Spinner, - Checkbox, - TextField, - ValidatedField, -} from '@pubsweet/ui' import { Row, - Text, Item, Label, - MenuCountry, IconButton, RowOverrideAlert, ItemOverrideAlert, + withRoles, + withCountries, } from 'pubsweet-component-faraday-ui' -const AddUserForm = ({ roles, titles }) => ( - <Fragment> - <Row alignItems="baseline" mb={1} mt={1}> - <Item mr={1} vertical> - <Label required>Email</Label> - <ValidatedField - component={TextField} - name="email" - validate={[required]} - /> - </Item> - <ItemOverrideAlert ml={1} vertical> - <Label required>Role</Label> - <ValidatedField - component={input => ( - <Menu options={roles} {...input} placeholder="Please select" /> - )} - name="role" - validate={[required]} - /> - </ItemOverrideAlert> - </Row> - - <Row mb={2}> - <Item mr={1} vertical> - <Label>First Name</Label> - <ValidatedField component={TextField} name="firstName" /> - </Item> - <Item ml={1} vertical> - <Label>Last Name</Label> - <ValidatedField component={TextField} name="lastName" /> - </Item> - </Row> - - <RowOverrideAlert alignItems="center" mb={2}> - <ItemOverrideAlert mr={1} vertical> - <Label>Title</Label> - <ValidatedField - component={input => ( - <Menu options={titles} {...input} placeholder="Please select" /> - )} - name="title" - /> - </ItemOverrideAlert> - <ItemOverrideAlert ml={1} vertical> - <Label>Country</Label> - <ValidatedField - component={input => ( - <MenuCountry {...input} placeholder="Please select" /> - )} - name="country" - /> - </ItemOverrideAlert> - </RowOverrideAlert> - - <Row mb={3}> - <Item vertical> - <Label>Affiliation</Label> - <ValidatedField component={TextField} name="affiliation" /> - </Item> - </Row> - </Fragment> -) - -const EditForm = ({ titles }) => ( - <Fragment> - <Row alignItems="center" mb={2} mt={1}> - <Item mr={1} vertical> - <Label>First Name</Label> - <ValidatedField component={TextField} name="firstName" /> - </Item> - <Item ml={1} vertical> - <Label>Last Name</Label> - <ValidatedField component={TextField} name="lastName" /> - </Item> - </Row> - - <RowOverrideAlert alignItems="center" mb={2}> - <ItemOverrideAlert mr={1} vertical> - <Label>Title</Label> - <ValidatedField - component={input => ( - <Menu options={titles} {...input} placeholder="Please select" /> - )} - name="title" - /> - </ItemOverrideAlert> - <ItemOverrideAlert ml={1} vertical> - <Label>Country</Label> - <ValidatedField - component={input => ( - <MenuCountry {...input} placeholder="Please select" /> - )} - name="country" - /> - </ItemOverrideAlert> - </RowOverrideAlert> - - <Row mb={2}> - <Item vertical> - <Label>Affiliation</Label> - <ValidatedField component={TextField} name="affiliation" /> - </Item> - </Row> - <Row> - <Item> - <Label>Roles</Label> - </Item> - </Row> - <RowOverrideAlert mb={3} mt={1}> - <Item> - <ValidatedField - component={({ value, onChange }) => ( - <Checkbox - checked={value} - label="Editor in Chief" - onChange={onChange} - value={value} - /> - )} - name="editorInChief" - /> - </Item> - <Item> - <ValidatedField - component={({ value, onChange }) => ( - <Checkbox - checked={value} - label="Admin" - onChange={onChange} - value={value} - /> - )} - name="admin" - /> - </Item> - <Item> - <ValidatedField - component={({ value, onChange }) => ( - <Checkbox - checked={value} - label="Handling Editor" - onChange={onChange} - value={value} - /> - )} - name="handlingEditor" - /> - </Item> - </RowOverrideAlert> - </Fragment> -) +import ValidatedMenuField from './ValidatedMenuField' +import ValidatedCheckboxField from './ValidatedCheckboxField' const FormModal = ({ edit, @@ -187,41 +29,95 @@ const FormModal = ({ onClose, subtitle, onConfirm, - modalError, - isFetching, - handleSubmit, + countries, confirmText = 'OK', cancelText = 'Cancel', + onSubmit, + initialValues, }) => ( <Root> <IconButton icon="x" onClick={onClose} right={5} secondary top={5} /> <H2>{title}</H2> - {edit && <Text secondary>{user.email}</Text>} - {edit ? ( - <EditForm titles={titles} /> - ) : ( - <AddUserForm roles={roles} titles={titles} /> - )} - {modalError && ( - <Row mb={1}> - <Text error>{modalError}</Text> - </Row> - )} - <Row> - {isFetching ? ( - <Spinner size={3} /> - ) : ( + <Formik initialValues={initialValues} onSubmit={onSubmit}> + {({ handleSubmit }) => ( <Fragment> - <Button onClick={onClose}>{cancelText}</Button> - <Button onClick={handleSubmit} primary> - {confirmText} - </Button> + <Row alignItems="baseline" mb={1} mt={1}> + <Item mr={1} vertical> + <Label required>Email</Label> + <ValidatedFieldFormik + component={TextField} + name="email" + validate={[required]} + /> + </Item> + <ItemOverrideAlert ml={1} vertical> + <Label required>Role</Label> + <ValidatedMenuField name="role" options={roles} /> + </ItemOverrideAlert> + </Row> + + <Row mb={2}> + <Item mr={1} vertical> + <Label>First Name</Label> + <ValidatedFieldFormik component={TextField} name="firstName" /> + </Item> + <Item ml={1} vertical> + <Label>Last Name</Label> + <ValidatedFieldFormik component={TextField} name="lastName" /> + </Item> + </Row> + + <RowOverrideAlert alignItems="center" mb={2}> + <ItemOverrideAlert mr={1} vertical> + <Label>Title</Label> + <ValidatedMenuField name="title" options={titles} /> + </ItemOverrideAlert> + <ItemOverrideAlert ml={1} vertical> + <Label>Country</Label> + <ValidatedMenuField name="country" options={countries} /> + </ItemOverrideAlert> + </RowOverrideAlert> + + <Row mb={!edit && 3}> + <Item vertical> + <Label>Affiliation</Label> + <ValidatedFieldFormik component={TextField} name="affiliation" /> + </Item> + </Row> + + {edit && ( + <RowOverrideAlert mb={3}> + <Item> + <ValidatedCheckboxField + label="Editor in Chief" + name="editorInChief" + /> + </Item> + <Item> + <ValidatedCheckboxField label="Admin" name="admin" /> + </Item> + <Item> + <ValidatedCheckboxField + label="Handling Editor" + name="handlingEditor" + /> + </Item> + </RowOverrideAlert> + )} + + <Row> + <Button onClick={onClose}>Cancel</Button> + <Button onClick={handleSubmit} primary> + {confirmText} + </Button> + </Row> </Fragment> )} - </Row> + </Formik> </Root> ) +// #region FormHelpers const setInitialRole = a => { if (get(a, 'handlingEditor')) { return 'handlingEditor' @@ -232,30 +128,41 @@ const setInitialRole = a => { return 'author' } +const parseValues = ({ email, role, ...rest }) => ({ + email, + username: email, + admin: role === 'admin', + editorInChief: role === 'editorInChief', + handlingEditor: role === 'handlingEditor', + ...rest, +}) +// #endregion + export default compose( + withRoles, + withCountries, + withProps(({ user, edit }) => ({ + initialValues: { + ...user, + role: setInitialRole(user), + }, + confirmText: edit ? 'EDIT USER' : 'SAVE USER', + title: edit ? 'Edit User' : 'Add User', + })), withHandlers({ - onConfirm: ({ onConfirm, ...props }) => () => { - if (onConfirm && typeof onConfirm === 'function') { - onConfirm(props) + onSubmit: ({ onSubmit, ...props }) => (values, formProps) => { + if (typeof onSubmit === 'function') { + onSubmit(parseValues(values), { formProps, props }) } }, onClose: ({ onCancel, ...props }) => () => { - if (onCancel && typeof onCancel === 'function') { + if (typeof onCancel === 'function') { onCancel(props) } props.hideModal() }, }), - withProps(({ user, edit }) => ({ - initialValues: { - ...user, - role: setInitialRole(user), - }, - confirmText: edit ? 'EDIT USER' : 'SAVE USER', - })), - reduxForm({ - form: 'add-edit', - }), + setDisplayName('FormModal'), )(FormModal) diff --git a/packages/component-faraday-ui/src/modals/MyMenu.js b/packages/component-faraday-ui/src/modals/MyMenu.js new file mode 100644 index 0000000000000000000000000000000000000000..9fe37eb41ed0d80cc4c053850f8eecc5560a74cd --- /dev/null +++ b/packages/component-faraday-ui/src/modals/MyMenu.js @@ -0,0 +1,26 @@ +import React, { Fragment } from 'react' +import { compose, withStateHandlers } from 'recompose' + +const MyMenu = ({ open, toggleMenu, field, form }) => ( + <div onClick={toggleMenu}> + Click to open + {open && ( + <Fragment> + <span onClick={() => form.setFieldValue(field.name, 1)}>Option 1</span> + <span onClick={() => form.setFieldValue(field.name, 2)}>Option 2</span> + <span onClick={() => form.setFieldValue(field.name, 3)}>Option 3</span> + </Fragment> + )} + </div> +) + +export default compose( + withStateHandlers( + { open: false }, + { + toggleMenu: ({ open }) => () => ({ + open: !open, + }), + }, + ), +)(MyMenu) diff --git a/packages/component-faraday-ui/src/modals/ValidatedCheckboxField.js b/packages/component-faraday-ui/src/modals/ValidatedCheckboxField.js new file mode 100644 index 0000000000000000000000000000000000000000..ca1f866feddb05394d2fc8feda3cf8a3314f343f --- /dev/null +++ b/packages/component-faraday-ui/src/modals/ValidatedCheckboxField.js @@ -0,0 +1,19 @@ +import React from 'react' +import { Field } from 'formik' +import { Checkbox } from '@pubsweet/ui' + +const ValidatedCheckboxField = ({ name, label }) => ( + <Field name={name}> + {({ field, form }) => ( + <Checkbox + checked={field.value} + label={label} + onChange={() => { + form.setFieldValue(field.name, !field.value) + }} + /> + )} + </Field> +) + +export default ValidatedCheckboxField diff --git a/packages/component-faraday-ui/src/modals/ValidatedMenuField.js b/packages/component-faraday-ui/src/modals/ValidatedMenuField.js new file mode 100644 index 0000000000000000000000000000000000000000..9221c1025500265c60facb2f0a70d497e8a3a012 --- /dev/null +++ b/packages/component-faraday-ui/src/modals/ValidatedMenuField.js @@ -0,0 +1,20 @@ +import React from 'react' +import { Field } from 'formik' +import { Menu } from '@pubsweet/ui' + +const ValidatedMenuField = ({ options, name }) => ( + <Field name={name}> + {({ field, form }) => ( + <Menu + onChange={v => { + // field.onChange(v) + form.setFieldValue(field.name, v) + }} + options={options} + value={field.value} + /> + )} + </Field> +) + +export default ValidatedMenuField diff --git a/packages/component-faraday-ui/src/pending/Accordion.js b/packages/component-faraday-ui/src/pending/Accordion.js index 58343260b2f6f473bdba89868a9f6c461ea95ffc..9f93cb2a835bb45bb2ff7788cc8864bd1dbf0299 100644 --- a/packages/component-faraday-ui/src/pending/Accordion.js +++ b/packages/component-faraday-ui/src/pending/Accordion.js @@ -51,7 +51,7 @@ class Accordion extends React.Component { } = this.props const { expanded } = this.state return ( - <Root expanded={expanded} innerRef={r => (this._accordion = r)} {...rest}> + <Root expanded={expanded} ref={r => (this._accordion = r)} {...rest}> <Header expanded={expanded} icon={icon} @@ -90,9 +90,9 @@ const Root = styled.div` ${override('ui.Accordion')}; ` -const Header = styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'accordion-header', -})` +const Header = styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'accordion-header', +}))` align-items: center; cursor: pointer; display: flex; diff --git a/packages/component-faraday-ui/src/pending/ControlledAccordion.js b/packages/component-faraday-ui/src/pending/ControlledAccordion.js index 0c63d576edfad292aeb7f5be3d6509b82e9e52c5..e4f9b30f9df252bf1070d0d561ac527f9a55fc69 100644 --- a/packages/component-faraday-ui/src/pending/ControlledAccordion.js +++ b/packages/component-faraday-ui/src/pending/ControlledAccordion.js @@ -42,7 +42,7 @@ class ControlledAccordion extends React.Component { ...rest } = this.props return ( - <Root expanded={expanded} innerRef={r => (this._accordion = r)} {...rest}> + <Root expanded={expanded} ref={r => (this._accordion = r)} {...rest}> <Header expanded={expanded} icon={icon} {...rest} /> {expanded && children} </Root> @@ -62,9 +62,9 @@ const Root = styled.div` ${override('ui.Accordion')}; ` -const Header = styled.div.attrs({ - 'data-test-id': props => props['data-test-id'] || 'accordion-header', -})` +const Header = styled.div.attrs(props => ({ + 'data-test-id': props['data-test-id'] || 'accordion-header', +}))` align-items: center; cursor: pointer; display: flex; diff --git a/packages/component-fixture-manager/package.json b/packages/component-fixture-manager/package.json index fe566ea163b877842eba597a058293b0a0af7fbe..06e3449497b1e5cc0d0a338a77afac39f450e1a4 100644 --- a/packages/component-fixture-manager/package.json +++ b/packages/component-fixture-manager/package.json @@ -4,20 +4,17 @@ "description": "fixture service component for pubsweet", "license": "MIT", "author": "Collaborative Knowledge Foundation", - "files": [ - "src" - ], + "files": ["src"], "main": "index.js", "repository": { "type": "git", "url": "https://gitlab.coko.foundation/xpub/xpub-faraday", "path": "component-fixture-service" }, - "dependencies": { - }, + "dependencies": {}, "peerDependencies": { "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^1.0.1" + "pubsweet-server": "^10.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/component-helper-service/package.json b/packages/component-helper-service/package.json index 6c707d470181361319f2e2ead30675bc8967562d..78746c04d63ef3c9379e00b891946a1de0230bb7 100644 --- a/packages/component-helper-service/package.json +++ b/packages/component-helper-service/package.json @@ -17,7 +17,7 @@ }, "peerDependencies": { "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^1.0.1", + "pubsweet-server": "^10.0.0", "@pubsweet/component-send-email": "0.2.4" }, "publishConfig": { diff --git a/packages/component-invite/package.json b/packages/component-invite/package.json index 7dc311684293ed1b767baac50292f67902454255..8a54d4d73a1eb7cc4ae30891c1552f25c008ff35 100644 --- a/packages/component-invite/package.json +++ b/packages/component-invite/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^1.0.1", + "pubsweet-server": "^10.0.0", "@pubsweet/component-send-email": "0.2.4" }, "devDependencies": { diff --git a/packages/component-manuscript-manager/package.json b/packages/component-manuscript-manager/package.json index bff0f5f07707c9609f93c58a7061b45a90a39541..ffa309ba664608dc212d65da44088a299d1a1807 100644 --- a/packages/component-manuscript-manager/package.json +++ b/packages/component-manuscript-manager/package.json @@ -25,7 +25,7 @@ "peerDependencies": { "@pubsweet/logger": "^0.0.1", "@pubsweet/component-send-email": "0.2.4", - "pubsweet-server": "^1.0.1", + "pubsweet-server": "^10.0.0", "component-helper-service": "0.0.1" }, "devDependencies": { diff --git a/packages/component-manuscript/package.json b/packages/component-manuscript/package.json index 458f0a07fcdb726ae1724b51f0e63862a8bca9bd..e82ef648a9c7a0f1e5a8c404b3ff7fe132675809 100644 --- a/packages/component-manuscript/package.json +++ b/packages/component-manuscript/package.json @@ -11,8 +11,8 @@ "xpub-selectors": "^0.1.0" }, "peerDependencies": { - "pubsweet-client": "^4.0.4", - "react": "^16.4.2", + "pubsweet-client": "^7.0.0", + "react": "^16.6.0", "react-redux": ">=5.0.2", "react-router-dom": ">=4.2.2" } diff --git a/packages/component-manuscript/src/components/EditorialComment.js b/packages/component-manuscript/src/components/EditorialComment.js index fb9f9aa46bdfe2bd502a3fd04974ff9e47758675..04eb4a1175f62d68c248068a696b853f1f9a2cf0 100644 --- a/packages/component-manuscript/src/components/EditorialComment.js +++ b/packages/component-manuscript/src/components/EditorialComment.js @@ -79,7 +79,7 @@ const DefaultText = styled.span` ${defaultText}; ` -const CommentAuthor = DefaultText.extend` +const CommentAuthor = styled(DefaultText)` margin-left: calc(${th('subGridUnit')} * 2); text-decoration: underline; ` @@ -103,7 +103,7 @@ const HeaderContainer = styled.div` display: flex; ` -const ReasonText = DefaultText.extend` +const ReasonText = styled(DefaultText)` font-family: ${th('fontHeading')}; font-weight: bold; text-transform: uppercase; diff --git a/packages/component-mts-package/package.json b/packages/component-mts-package/package.json index 20b9f9c86d65c196ad5da70e266fa8bbf45b9e28..29f2320b6f40697ab52442dd2947c5dd1a9e310f 100644 --- a/packages/component-mts-package/package.json +++ b/packages/component-mts-package/package.json @@ -19,7 +19,7 @@ "license": "MIT", "peerDependencies": { "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^1.0.1" + "pubsweet-server": "^10.0.0" }, "devDependencies": { "apidoc": "^0.17.6", diff --git a/packages/component-publons/package.json b/packages/component-publons/package.json index c478a960ee0a1d9520f236fde80aceccf5a5e0e0..e0af84947a689691bd3497480f995a907f4ba988 100644 --- a/packages/component-publons/package.json +++ b/packages/component-publons/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^1.0.1" + "pubsweet-server": "^10.0.0" }, "devDependencies": { "apidoc": "^0.17.6", diff --git a/packages/component-user-manager/package.json b/packages/component-user-manager/package.json index 3008180e89d58577c35c345001d0cfbc1324b807..73b063024cbac9f9b30b77efd8c763f3fd40489b 100644 --- a/packages/component-user-manager/package.json +++ b/packages/component-user-manager/package.json @@ -27,7 +27,7 @@ "@pubsweet/logger": "^0.0.1", "pubsweet-component-helper-service": "0.0.1", "@pubsweet/component-send-email": "0.2.4", - "pubsweet-server": "^1.0.1" + "pubsweet-server": "^10.0.0" }, "devDependencies": { "apidoc": "^0.17.6", diff --git a/packages/component-user/index.js b/packages/component-user/index.js new file mode 100644 index 0000000000000000000000000000000000000000..307f862c05b48216eedc7514a3a76bf38f06eb11 --- /dev/null +++ b/packages/component-user/index.js @@ -0,0 +1,10 @@ +const resolvers = require('./resolvers') +const typeDefs = require('./typeDefs') +const model = require('./user') + +module.exports = { + model, + modelName: 'User', + resolvers, + typeDefs, +} diff --git a/packages/component-user/migrations/001-user.sql b/packages/component-user/migrations/001-user.sql new file mode 100644 index 0000000000000000000000000000000000000000..36c7a4ed58c8f9f0886888423b1afca27acdab3b --- /dev/null +++ b/packages/component-user/migrations/001-user.sql @@ -0,0 +1,6 @@ +CREATE TABLE "user" ( + id UUID PRIMARY KEY, + created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT current_timestamp, + updated TIMESTAMP WITH TIME ZONE, + default_identity TEXT +); \ No newline at end of file diff --git a/packages/component-user/resolvers.js b/packages/component-user/resolvers.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/packages/component-user/typeDefs.js b/packages/component-user/typeDefs.js new file mode 100644 index 0000000000000000000000000000000000000000..3583a27be3d3a91e4f8aeb6de76bb57b59a1a001 --- /dev/null +++ b/packages/component-user/typeDefs.js @@ -0,0 +1,31 @@ +module.exports = ` + type Creasta { + id: String! + name: String + } + + extend type User { + affiliation: String + country: String + editorInChief: Boolean + handlingEditor: Boolean + isActive: Boolean + isConfirmed: Boolean + firstName: String + lastName: String + title: String + } + + extend input UserInput { + isActive: Boolean + isConfirmed: Boolean + firstName: String + lastName: String + title: String + country: String + affiliation: String + admin: Boolean + editorInChief: Boolean + handlingEditor: Boolean + } +` diff --git a/packages/component-user/user.js b/packages/component-user/user.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/packages/component-wizard/package.json b/packages/component-wizard/package.json index 42283d163cdb6f874c3e1946fcdce4a0f1755b8d..048f177e5841cd29eb0429c5411b0e60187a7973 100644 --- a/packages/component-wizard/package.json +++ b/packages/component-wizard/package.json @@ -9,7 +9,7 @@ "dist" ], "dependencies": { - "@pubsweet/ui": "^8.6.0", + "@pubsweet/ui": "^9.0.2", "@pubsweet/styleguide": "3.1.4", "@pubsweet/ui-toolkit": "latest", "moment": "^2.20.1", @@ -25,11 +25,11 @@ "xpub-journal": "^0.0.6", "xpub-selectors": "^0.1.0", "xpub-edit": "^2.4.1", - "styled-components": "^3.4.2" + "styled-components": "^4.1.0" }, "peerDependencies": { "prop-types": "^15.5.10", - "pubsweet-client": "^4.0.4", + "pubsweet-client": "^7.0.0", "react": "^16.4.2", "react-dom": "^15.6.1", "react-redux": "^5.0.2", diff --git a/packages/component-wizard/src/components/StepOne.js b/packages/component-wizard/src/components/StepOne.js index 3c5d249e53299b8da34feefd52bf065cc94c8310..b43fd5629eb60c18a38fb80e14f2e875ea4a3f5d 100644 --- a/packages/component-wizard/src/components/StepOne.js +++ b/packages/component-wizard/src/components/StepOne.js @@ -94,9 +94,9 @@ const CustomCheckbox = input => ( export default StepOne // #region styled-components -const RootCheckbox = styled.div.attrs({ +const RootCheckbox = styled.div.attrs(props => ({ className: 'custom-checkbox', -})` +}))` + div[role='alert'] { margin-top: 0; } diff --git a/packages/components-faraday/package.json b/packages/components-faraday/package.json index ba1165a34dbcfcd292dfa1ea7f9bfc5313435a46..cb9fc36cb58f25fb35b07356467a85d121e8887c 100644 --- a/packages/components-faraday/package.json +++ b/packages/components-faraday/package.json @@ -5,22 +5,25 @@ "license": "MIT", "dependencies": { "@pubsweet/styleguide": "3.1.4", - "@pubsweet/ui": "^8.6.0", + "@pubsweet/ui": "^9.0.2", "@pubsweet/ui-toolkit": "latest", "country-list": "^1.1.0", + "formik": "^1.3.2", + "graphql-tag": "^2.10.0", "moment": "^2.22.1", "prop-types": "^15.5.10", - "pubsweet-component-login": "^1.2.2", - "react": "^16.4.2", - "react-dnd": "^2.5.4", + "pubsweet-component-login": "^1.2.0", + "react": "^16.6.0", + "react-apollo": "^2.3.2", + "react-dnd": "^7.0.0", "react-dnd-html5-backend": "^2.5.4", - "react-dom": "^16.1.0", + "react-dom": "^16.6.0", "react-router-dom": "^4.2.2", "react-tippy": "^1.2.2", "recompose": "^0.30.0", "redux": "^3.6.0", "redux-form": "7.0.3", - "styled-components": "^3.4.2", + "styled-components": "^4.1.0", "xpub-edit": "^2.4.1" }, "scripts": { diff --git a/packages/components-faraday/src/components/Admin/AdminUsers.js b/packages/components-faraday/src/components/Admin/AdminUsers.js index b29d70d4221431fbfdb750fbd965ccbb13dd00b0..39697bbc1ff9f3d04a13bea911a9a1e5963163c6 100644 --- a/packages/components-faraday/src/components/Admin/AdminUsers.js +++ b/packages/components-faraday/src/components/Admin/AdminUsers.js @@ -1,14 +1,10 @@ import React, { Fragment } from 'react' import { get } from 'lodash' import { Button } from '@pubsweet/ui' -import { connect } from 'react-redux' import styled from 'styled-components' import { th } from '@pubsweet/ui-toolkit' -import { actions } from 'pubsweet-client' -import { ConnectPage } from 'xpub-connect' import { withJournal } from 'xpub-journal' import { compose, withHandlers, withProps } from 'recompose' -import { getAdminUsers } from 'pubsweet-component-faraday-selectors' import { Row, @@ -23,8 +19,8 @@ import { withPagination, } from 'pubsweet-component-faraday-ui' -import { AddUser } from './' -import { updateUserStatus, onSubmit } from './utils' +import { updateUserStatus } from './utils' +import { OpenUserForm, withUsersGQL } from './' const Users = ({ page, @@ -34,12 +30,16 @@ const Users = ({ journal, getUsers, isFetching, + getUserName, getUserRoles, itemsPerPage, deactivateUser, getStatusLabel, paginatedItems, toggleUserStatus, + // + addUser, + updateUser, ...rest }) => ( <Fragment> @@ -53,12 +53,7 @@ const Users = ({ > Admin Dashboard </ActionLink> - <AddUser - form="add-user" - getUsers={getUsers} - modalKey="addUser" - onSubmit={onSubmit} - /> + <OpenUserForm modalKey="addUser" onSubmit={addUser} /> </Item> <Pagination {...rest} itemsPerPage={itemsPerPage} page={page} /> @@ -89,11 +84,7 @@ const Users = ({ {paginatedItems.map(user => ( <UserRow key={user.id}> <td> - <Text pl={1}>{`${get(user, 'firstName', '')} ${get( - user, - 'lastName', - '', - )}`}</Text> + <Text pl={1}>{getUserName(user)}</Text> </td> <td colSpan={2}> <Text>{user.email}</Text> @@ -110,11 +101,10 @@ const Users = ({ <HiddenCell> <Item alignItems="center" justify="flex-end"> - <AddUser + <OpenUserForm edit - getUsers={getUsers} modalKey={`edit-${user.id}`} - onSubmit={onSubmit} + onSubmit={updateUser} user={user} /> <OpenModal @@ -147,23 +137,17 @@ const Users = ({ ) export default compose( - ConnectPage(() => [actions.getUsers()]), - connect( - state => ({ - items: getAdminUsers(state), - }), - { - getUsers: actions.getUsers, - }, - ), withJournal, withFetching, - withPagination, - withProps(({ journal: { roles = {} } }) => ({ + withUsersGQL, + withProps(({ journal: { roles = {} }, users }) => ({ roles: Object.keys(roles), + items: users, })), + withPagination, withHandlers({ - getStatusLabel: () => ({ isConfirmed, isActive = true }) => { + getStatusLabel: () => ({ admin, isConfirmed, isActive = true }) => { + if (admin) return 'ACTIVE' if (!isActive) { return 'INACTIVE' } @@ -185,6 +169,12 @@ export default compose( handleError(setModalError)(err) }) }, + getUserName: () => user => { + if (user.admin) { + return 'Admin' + } + return `${get(user, 'firstName', '')} ${get(user, 'lastName', '')}` + }, getUserRoles: ({ journal: { roles = {} } }) => user => { const parsedRoles = Object.entries(roles) .reduce((acc, role) => (user[role[0]] ? [...acc, role[1]] : acc), []) diff --git a/packages/components-faraday/src/components/Admin/AddUser.js b/packages/components-faraday/src/components/Admin/OpenUserForm.js similarity index 53% rename from packages/components-faraday/src/components/Admin/AddUser.js rename to packages/components-faraday/src/components/Admin/OpenUserForm.js index 7fd409d679850f3e7418baa28af3f82bc6f361cc..847237c6934c60535761a0d4acfc005d65a74b4f 100644 --- a/packages/components-faraday/src/components/Admin/AddUser.js +++ b/packages/components-faraday/src/components/Admin/OpenUserForm.js @@ -1,23 +1,18 @@ import React from 'react' -import { get } from 'lodash' -import { compose } from 'recompose' -import { withJournal } from 'xpub-journal' import { OpenModal, ActionLink, IconButton, - withRoles, - withFetching, } from 'pubsweet-component-faraday-ui' -const AddUser = ({ edit, journal, handleSubmit, ...rest }) => ( +const OpenUserForm = ({ edit, user, onSubmit, modalKey }) => ( <OpenModal edit={edit} formModal - title={edit ? 'Edit User' : 'Add User'} - titles={get(journal, 'title', [])} - {...rest} + modalKey={modalKey} + onSubmit={onSubmit} + user={user} > {showModal => edit ? ( @@ -31,4 +26,4 @@ const AddUser = ({ edit, journal, handleSubmit, ...rest }) => ( </OpenModal> ) -export default compose(withJournal, withRoles, withFetching)(AddUser) +export default OpenUserForm diff --git a/packages/components-faraday/src/components/Admin/index.js b/packages/components-faraday/src/components/Admin/index.js index 2bc308a267345089b8602b3bb6c3daa9a7bc15c4..0bb7e9bedd5aa30878c77cf7bea2da6a179a7d31 100644 --- a/packages/components-faraday/src/components/Admin/index.js +++ b/packages/components-faraday/src/components/Admin/index.js @@ -1,4 +1,6 @@ -export { default as AddUser } from './AddUser' +export { default as withUsersGQL } from './withUsersGQL' + export { default as AdminUsers } from './AdminUsers' export { default as AdminRoute } from './AdminRoute' +export { default as OpenUserForm } from './OpenUserForm' export { default as AdminDashboard } from './AdminDashboard' diff --git a/packages/components-faraday/src/components/Admin/utils.js b/packages/components-faraday/src/components/Admin/utils.js index a923d20778f4b6c7f3424cb69c88f7d85fd9fe88..14835de252aa01e7e57419f3f28edbb8eca00136 100644 --- a/packages/components-faraday/src/components/Admin/utils.js +++ b/packages/components-faraday/src/components/Admin/utils.js @@ -1,6 +1,5 @@ import { pick, omit, isBoolean, replace } from 'lodash' -import { handleError } from 'pubsweet-component-faraday-ui' -import { update, create } from 'pubsweet-client/src/helpers/api' +import { update } from 'pubsweet-client/src/helpers/api' const generatePasswordHash = () => Array.from({ length: 4 }, () => @@ -85,39 +84,3 @@ export const updateUserStatus = user => { const updatedUser = toggleUserStatus(user) return update(`/users/${user.id}`, parseUpdateUser(updatedUser)) } - -export const onSubmit = ( - values, - dispatch, - { edit, setFetching, getUsers, hideModal, setModalError }, -) => { - setFetching(true) - if (!edit) { - const newValues = setAdmin(values) - return create('/users', newValues) - .then(r => { - create(`/emails`, { - email: r.email, - type: 'invite', - role: values.role, - }) - setFetching(false) - getUsers() - hideModal() - }) - .catch(err => { - setFetching(false) - handleError(setModalError)(err) - }) - } - return update(`/users/${values.id}`, parseUpdateUser(values)) - .then(() => { - setFetching(false) - getUsers() - hideModal() - }) - .catch(err => { - setFetching(false) - handleError(setModalError)(err) - }) -} diff --git a/packages/components-faraday/src/components/Admin/withUsersGQL.js b/packages/components-faraday/src/components/Admin/withUsersGQL.js new file mode 100644 index 0000000000000000000000000000000000000000..807a319249eb930c93cbbd45f41b4779ee69b658 --- /dev/null +++ b/packages/components-faraday/src/components/Admin/withUsersGQL.js @@ -0,0 +1,75 @@ +import gql from 'graphql-tag' +import { graphql } from 'react-apollo' +import { compose, withHandlers, withProps } from 'recompose' + +const userFragment = gql` + fragment userDetails on User { + id + admin + email + title + country + username + lastName + isActive + firstName + affiliation + isConfirmed + editorInChief + handlingEditor + } +` + +const getUsersQuery = gql` + { + users { + ...userDetails + } + } + ${userFragment} +` + +const addUserMutation = gql` + mutation addUser($user: UserInput) { + createUser(input: $user) { + ...userDetails + } + } + ${userFragment} +` + +const updateUserMutation = gql` + mutation updateUser($id: ID, $input: UserInput) { + updateUser(id: $id, input: $input) { + ...userDetails + } + } + ${userFragment} +` + +export default compose( + graphql(getUsersQuery), + graphql(addUserMutation, { + name: 'addUser', + }), + graphql(updateUserMutation, { + name: 'updateUser', + }), + withHandlers({ + addUser: ({ addUser }) => (values, props) => {}, + updateUser: ({ updateUser }) => ( + { __typename, id, ...input }, + { props: { hideModal } }, + ) => { + updateUser({ + variables: { + id, + input, + }, + }).then(hideModal) + }, + }), + withProps(({ data }) => ({ + users: data.users, + })), +) diff --git a/packages/components-faraday/src/components/MakeDecision/DecisionForm.js b/packages/components-faraday/src/components/MakeDecision/DecisionForm.js index b698cf1f41d8b9c2fac0ba97fa7b01f588eac0ce..5ac2e932a667a91a7b71ccf843de3b034c87eea4 100644 --- a/packages/components-faraday/src/components/MakeDecision/DecisionForm.js +++ b/packages/components-faraday/src/components/MakeDecision/DecisionForm.js @@ -154,14 +154,14 @@ const IconButton = styled.div` cursor: pointer; ` -const CustomSubtitle = Subtitle.extend` +const CustomSubtitle = styled(Subtitle)` align-items: center; display: flex; flex-direction: row; justify-content: center; ` -const BoldSubtitle = Subtitle.extend` +const BoldSubtitle = styled(Subtitle)` font-weight: bold; margin-left: 5px; ` diff --git a/packages/components-faraday/src/components/UIComponents/FormItems.js b/packages/components-faraday/src/components/UIComponents/FormItems.js index c9290916b65b57cc542c10166a61792e95fe2638..39688ac0565191dac2d03561bf77a6e3dff8c4f1 100644 --- a/packages/components-faraday/src/components/UIComponents/FormItems.js +++ b/packages/components-faraday/src/components/UIComponents/FormItems.js @@ -66,9 +66,9 @@ export const Email = styled.div` export const FormContainer = styled.form`` -export const Row = styled.div.attrs({ +export const Row = styled.div.attrs(props => ({ className: 'form-row', -})` +}))` align-items: ${props => get(props, 'alignItems', 'flex-start')}; display: flex; flex-direction: row; @@ -82,9 +82,9 @@ export const Row = styled.div.attrs({ } ` -export const RowItem = styled.div.attrs({ +export const RowItem = styled.div.attrs(props => ({ className: 'form-row-item', -})` +}))` display: flex; flex: ${({ flex }) => flex || 1}; flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')}; @@ -101,9 +101,9 @@ export const RowItem = styled.div.attrs({ } ` -export const Label = styled.div.attrs({ +export const Label = styled.div.attrs(props => ({ className: 'form-label', -})` +}))` align-items: center; color: ${th('colorPrimary')}; display: flex; @@ -114,7 +114,7 @@ export const Label = styled.div.attrs({ text-transform: uppercase; ` -export const LabelTitle = Label.extend` +export const LabelTitle = styled(Label)` margin: calc(${th('subGridUnit')} * 2) 0 0; line-height: 1; ` diff --git a/packages/hindawi-theme/package-lock.json b/packages/hindawi-theme/package-lock.json deleted file mode 100644 index a5c791ad483275a8c058ac05b66755c783170125..0000000000000000000000000000000000000000 --- a/packages/hindawi-theme/package-lock.json +++ /dev/null @@ -1,273 +0,0 @@ -{ - "name": "hindawi-theme", - "version": "1.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@pubsweet/ui-toolkit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@pubsweet/ui-toolkit/-/ui-toolkit-1.2.0.tgz", - "integrity": "sha512-HwnFt4eES5RopLLY7ajb//UvaCLXS29XCWOOB5cs90DkwysVZaH/GM5HB/QtClQ5tuXiR3BqfjLy2mHMA0Z+PQ==", - "requires": { - "color": "^3.0.0", - "lodash": "^4.17.4", - "styled-components": "^3.2.5" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.0.tgz", - "integrity": "sha512-nUJyfChH7PMJy75eRDCCKtszSEFokUNXC1hNVSe+o+VdcgvDPLs20k3v8UXI8ruRYAJiYtyRea8mYyqPxoHWDw==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "css-to-react-native": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.2.1.tgz", - "integrity": "sha512-v++LRcf633phJiYZBDqtmGPj3+BVof0isd2jgwYLWZJ5YSuhCkrfYtDsNhM6oJthiEco0f9tDVJ1vUkDJNgGEA==", - "requires": { - "css-color-keywords": "^1.0.0", - "fbjs": "^0.8.5", - "postcss-value-parser": "^3.3.0" - } - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", - "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "react-is": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.2.tgz", - "integrity": "sha512-rI3cGFj/obHbBz156PvErrS5xc6f1eWyTwyV4mo0vF2lGgXgS+mm7EKD5buLJq6jNgIagQescGSVG2YzgXt8Yg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" - } - }, - "styled-components": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.2.tgz", - "integrity": "sha512-eTmIiWstyDLccHZAyp+aCPirlkTvYiHlYGgWQxOYDv8Ko0o6mfnDo0+DnUnKinO8NzAfQXEDP7Bh0qlazwJgrw==", - "requires": { - "buffer": "^5.0.3", - "css-to-react-native": "^2.0.3", - "fbjs": "^0.8.16", - "hoist-non-react-statics": "^2.5.0", - "prop-types": "^15.5.4", - "react-is": "^16.3.1", - "stylis": "^3.5.0", - "stylis-rule-sheet": "^0.0.10", - "supports-color": "^3.2.3" - } - }, - "stylis": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.3.tgz", - "integrity": "sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ==" - }, - "stylis-rule-sheet": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", - "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - }, - "ua-parser-js": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", - "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" - }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } - } -} diff --git a/packages/hindawi-theme/package.json b/packages/hindawi-theme/package.json index be7b255ecdf14e887117c1c03362f0ea356a199e..a74c42acb57740a1e55e4eebe0f0a58a9140c98b 100644 --- a/packages/hindawi-theme/package.json +++ b/packages/hindawi-theme/package.json @@ -4,7 +4,6 @@ "main": "src", "license": "MIT", "dependencies": { - "@pubsweet/ui-toolkit": "^1.1.3", - "styled-components": "^3.4.2" + "@pubsweet/ui-toolkit": "^2.0.0" } } diff --git a/packages/hindawi-theme/src/index.js b/packages/hindawi-theme/src/index.js index c4c383e86d2810b5a7681dd58df57cfd7ca828fc..fa72ae39d8eb011a3f3f752d89f6c74295f1558d 100644 --- a/packages/hindawi-theme/src/index.js +++ b/packages/hindawi-theme/src/index.js @@ -1,6 +1,4 @@ /* eslint-disable import/extensions */ -import { injectGlobal } from 'styled-components' - import './fonts/index.css' import { Icon, @@ -16,18 +14,6 @@ import { ValidatedTextField, } from './elements' -injectGlobal` - body { - height: 100vh; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - #root, #root > div { - height: 100%; - } -` - const hindawiTheme = { /* Colors */ colorBackground: '#ECF0F3', diff --git a/packages/styleguide/package.json b/packages/styleguide/package.json index fd526bd04f9e708f66748428613d96219172182d..a202f2fe3c95ef2c87fae864e9928a98f8cd457a 100644 --- a/packages/styleguide/package.json +++ b/packages/styleguide/package.json @@ -11,7 +11,6 @@ "babel-preset-stage-2": "^6.24.1", "css-loader": "^0.28.4", "node-sass": "^4.5.3", - "react-styleguidist": "^7.2.1", "rimraf": "^2.6.1", "sass-loader": "^6.0.6", "style-loader": "^0.19.0", @@ -19,11 +18,16 @@ "webpack-node-externals": "^1.6.0" }, "dependencies": { - "@pubsweet/ui": "^8.6.0", - "@pubsweet/ui-toolkit": "^1.2.0", + "@pubsweet/ui": "^9.0.2", + "@pubsweet/ui-toolkit": "^2.0.0", "hindawi-theme": "^1.0.1", - "react": "^16.4.2", - "styled-components": "^3.4.2" + "react": "^16.6.0", + "react-dom": "^16.6.0", + "react-router-dom": "^4.2.2", + "redux": "^3.6.0", + "redux-logger": "^3.0.6", + "styled-components": "^4.1.0", + "react-styleguidist": "^7.0.10" }, "scripts": { "styleguide": "styleguidist server", diff --git a/packages/styleguide/src/Wrapper.js b/packages/styleguide/src/Wrapper.js index b7641fe72a28e8c036b9fedafa11bf4160950165..37385371012630f05b9f8370d2e8f8da52a3b7d3 100644 --- a/packages/styleguide/src/Wrapper.js +++ b/packages/styleguide/src/Wrapper.js @@ -4,8 +4,9 @@ import { reducer } from 'redux-form' import { Provider } from 'react-redux' import hindawiTheme from 'hindawi-theme' import { createLogger } from 'redux-logger' -import { ThemeProvider } from 'styled-components' +import { th } from '@pubsweet/ui-toolkit' import { client } from 'pubsweet-component-modal' +import styled, { ThemeProvider } from 'styled-components' import { BrowserRouter as Router } from 'react-router-dom' import { createStore, combineReducers, applyMiddleware } from 'redux' @@ -20,13 +21,25 @@ const store = createStore( applyMiddleware(logger), ) +const StyleRoot = styled.div` + background-color: ${th('colorBackground')}; + font-family: ${th('fontInterface')}, sans-serif; + font-size: ${th('fontSizeBase')}; + color: ${th('colorText')}; + line-height: ${th('lineHeightBase')}; + + * { + box-sizing: border-box; + } +` + class Wrapper extends Component { render() { return ( <Provider store={store}> <Router> <ThemeProvider theme={hindawiTheme}> - {this.props.children} + <StyleRoot>{this.props.children}</StyleRoot> </ThemeProvider> </Router> </Provider> diff --git a/packages/styleguide/src/webpack-config.js b/packages/styleguide/src/webpack-config.js index e76b0cf47f71f4c95f629092406bf66b447d38a2..29f13854e2cb65c8674d4f916868ec908960429f 100644 --- a/packages/styleguide/src/webpack-config.js +++ b/packages/styleguide/src/webpack-config.js @@ -44,7 +44,7 @@ module.exports = dir => { }, // Files { - exclude: [/\.jsx?$/, /\.html$/, /\.json$/], + exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/packages/xpub-faraday/app/app.js b/packages/xpub-faraday/app/app.js index 0988df482437853ff3bbe0ee9f20354238071b85..e6466401f8fcb36af5e52be9b4a5efdc2fb14a3d 100644 --- a/packages/xpub-faraday/app/app.js +++ b/packages/xpub-faraday/app/app.js @@ -18,6 +18,7 @@ const render = () => { <AppContainer> <JournalProvider journal={journal}> <Root + connectToWebSocket={false} history={history} routes={<Routes />} store={store} diff --git a/packages/xpub-faraday/app/routes.js b/packages/xpub-faraday/app/routes.js index 8ca66e768f4bb881ab2444a8855c3ea9ff33c74d..95a60cdedf33e26ba516608667d3c78959b63bcc 100644 --- a/packages/xpub-faraday/app/routes.js +++ b/packages/xpub-faraday/app/routes.js @@ -1,6 +1,7 @@ import React from 'react' -import { Route, Switch, Redirect } from 'react-router-dom' import { AuthenticatedComponent } from 'pubsweet-client' +import { Route, Switch, Redirect } from 'react-router-dom' +import { createGlobalStyle } from 'styled-components' import { SubmissionWizard, @@ -47,8 +48,21 @@ const PrivateRoute = ({ component: Component, ...rest }) => ( /> ) +const GlobalStyles = createGlobalStyle` + body { + height: 100vh; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + #root, #root > div, #root > div > div { + height: 100%; + } + } +` + const Routes = () => ( <FaradayApp> + <GlobalStyles /> <Switch> <Route component={LoginPage} exact path="/login" /> <Route component={SignUpInvitationPage} exact path="/invite" /> diff --git a/packages/xpub-faraday/config/default.js b/packages/xpub-faraday/config/default.js index b6b853f993557128c1b32d7dcad8f9e5bbde5b2f..13eed68fde3e75c0cea41cde6d77d128783590d3 100644 --- a/packages/xpub-faraday/config/default.js +++ b/packages/xpub-faraday/config/default.js @@ -5,6 +5,8 @@ const logger = require('winston') const components = require('./components.json') const journalConfig = require('../app/config/journal') +const users = require('../../component-user') + const getDbConfig = () => { if (process.env.DATABASE) { return { @@ -44,6 +46,10 @@ module.exports = { logger, uploads: 'uploads', secret: 'SECRET', + enableExperimentalGraphql: true, + graphiql: true, + typeDefs: `${users.typeDefs}`, + // resolvers, }, 'pubsweet-client': { API_ENDPOINT: '/api', diff --git a/packages/xpub-faraday/config/validations.js b/packages/xpub-faraday/config/validations.js index c60e5f85015904e4218550b1d78ab84567d28d33..562ea5242cef0bcd0c3268496b72e70be656cf4a 100644 --- a/packages/xpub-faraday/config/validations.js +++ b/packages/xpub-faraday/config/validations.js @@ -157,6 +157,7 @@ module.exports = { handlingEditor: Joi.boolean(), agreeTC: Joi.boolean(), isActive: Joi.boolean(), + passwordHash: Joi.string(), notifications: Joi.object({ email: Joi.object({ system: Joi.boolean().default(true), diff --git a/packages/xpub-faraday/package.json b/packages/xpub-faraday/package.json index 98832153f33a3a2edb0e90b0489c534d5a9c949e..62bd970139d9cf0904d2f4d1b74882c29b0a5cbe 100644 --- a/packages/xpub-faraday/package.json +++ b/packages/xpub-faraday/package.json @@ -9,37 +9,40 @@ }, "dependencies": { "@pubsweet/component-aws-s3": "^1.2.0", - "@pubsweet/component-send-email": "0.2.4", "@pubsweet/component-email-templating": "0.0.1", - "@pubsweet/styleguide": "3.1.4", - "@pubsweet/ui": "^8.6.0", - "@pubsweet/ui-toolkit": "latest", + "@pubsweet/component-send-email": "0.2.4", + "@pubsweet/styleguide": "^4.0.0", + "@pubsweet/ui": "^9.0.2", + "@pubsweet/ui-toolkit": "^2.0.0", "aws-sdk": "^2.197.0", "babel-core": "^6.26.0", "config": "^1.26.2", "dotenv": "^5.0.0", "flavors": "^3.3.1", "font-awesome": "^4.7.0", + "formik": "^1.3.2", "fs-extra": "^4.0.2", + "graphql-tag": "^2.10.0", "history": "^4.7.2", "joi": "^10.0.6", "loadable-components": "^0.3.0", "moment": "^2.18.1", "nodemailer-ses-transport": "^1.5.1", "prop-types": "^15.5.10", - "pubsweet": "3.0.6", - "pubsweet-client": "^4.0.4", - "pubsweet-component-login": "^1.2.2", - "pubsweet-server": "10.0.1", - "react": "^16.4.2", - "react-dnd": "^2.5.4", - "react-dnd-html5-backend": "^2.5.4", - "react-dom": "^16.2.0", + "pubsweet": "^3.0.0", + "pubsweet-client": "^7.0.0", + "pubsweet-component-login": "^1.2.0", + "pubsweet-server": "^10.0.0", + "react": "^16.6.0", + "react-dnd": "^7.0.0", + "react-dnd-html5-backend": "^7.0.0", + "react-dom": "^16.6.0", "react-router-dom": "^4.2.2", "recompose": "^0.30.0", "redux": "^3.6.0", "redux-form": "7.0.3", "redux-logger": "^3.0.1", + "styled-components": "^4.1.2", "typeface-noto-sans": "^0.0.54", "typeface-noto-serif": "^0.0.54", "typeface-ubuntu-mono": "^0.0.54", @@ -81,8 +84,7 @@ "start": "pubsweet start", "start:services": "docker-compose up postgres", "server": "pubsweet server", - "start-now": - "echo $secret > config/local-development.json && npm run server", + "start-now": "echo $secret > config/local-development.json && npm run server", "build": "NODE_ENV=production pubsweet build", "clean": "rm -rf node_modules", "debug": "pgrep -f startup/start.js | xargs kill -sigusr1", diff --git a/packages/xpub-faraday/webpack/rules.development.js b/packages/xpub-faraday/webpack/rules.development.js index 548c24f1621ff0d32061b20a1fdea2b4f884987b..f2426d6006062210c6685e63b5f2beb645482e51 100644 --- a/packages/xpub-faraday/webpack/rules.development.js +++ b/packages/xpub-faraday/webpack/rules.development.js @@ -44,7 +44,7 @@ module.exports = [ // files { - exclude: [/\.jsx?$/, /\.html$/, /\.json$/], + exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/packages/xpub-faraday/webpack/rules.production.js b/packages/xpub-faraday/webpack/rules.production.js index 0fe8d5b7e26111759ee1c581d90bfa22dd195de7..56eecf0b3db4ef61a3dcfb5f4828a0312383acd9 100644 --- a/packages/xpub-faraday/webpack/rules.production.js +++ b/packages/xpub-faraday/webpack/rules.production.js @@ -49,7 +49,7 @@ module.exports = [ // files { - exclude: [/\.jsx?$/, /\.html$/, /\.json$/], + exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/packages/xpub-faraday/webpack/rules.test.js b/packages/xpub-faraday/webpack/rules.test.js index 0fe8d5b7e26111759ee1c581d90bfa22dd195de7..56eecf0b3db4ef61a3dcfb5f4828a0312383acd9 100644 --- a/packages/xpub-faraday/webpack/rules.test.js +++ b/packages/xpub-faraday/webpack/rules.test.js @@ -49,7 +49,7 @@ module.exports = [ // files { - exclude: [/\.jsx?$/, /\.html$/, /\.json$/], + exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', diff --git a/yarn.lock b/yarn.lock index ca779bf66066fb0570536a5f15d671e4852aed89..0800a7fa664a6c4a705bd6b8d6c6648f94854b68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -110,9 +110,9 @@ to-fast-properties "^2.0.0" "@babel/types@^7.0.0": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" - integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.0.tgz#7941c5b2d8060e06f9601d6be7c223eef906d5d8" + integrity sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -172,17 +172,17 @@ aws-sdk "^2.185.0" nodemailer "^4.4.2" -"@pubsweet/db-manager@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-2.0.6.tgz#75e5dbc3946c3211ff2146ef914884c3711bb92b" - integrity sha512-rheDnoOSVyuzlV63AfesAY/IDYHEkEMWxq1RUugtz22QzBLTeMaBQK7Sdp7xhuU7NK4t0kvoWuSo4QRvNgeUyQ== +"@pubsweet/db-manager@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-2.1.2.tgz#0c65ccadcf51a456d63588e7dfe7ebca1cf0332a" + integrity sha512-R5Mv8eqY+VKEr8/8E2deE+TDTcwDgE91fyu3V12lx6WGdZjC4u99AznhyfUxRyxqCWi87pT++P0+acMPe/Z1Ug== dependencies: "@pubsweet/logger" "^0.2.7" fs-extra "^4.0.2" isomorphic-fetch "^2.2.1" joi "^13.6.0" pg "^7.4.1" - pubsweet-server "^10.0.1" + pubsweet-server "^10.1.3" tmp "^0.0.33" umzug "^2.1.0" @@ -196,6 +196,16 @@ typeface-noto-serif "^0.0.54" typeface-ubuntu-mono "^0.0.54" +"@pubsweet/default-theme@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@pubsweet/default-theme/-/default-theme-4.0.2.tgz#ba1c4636e05d39b8daf1c28645077dc761b729a6" + integrity sha512-4uN3OLPO0itIlmJZSTeNQQuYVqZFvZYK3DRm7GOLnDfD5dTHBpqhq+2jHjD4ohtu3iZ/8lw/Oc+y+c5Suo4YOQ== + dependencies: + styled-components "^4.1.1" + typeface-noto-sans "^0.0.54" + typeface-noto-serif "^0.0.54" + typeface-ubuntu-mono "^0.0.54" + "@pubsweet/logger@^0.2.7": version "0.2.7" resolved "https://registry.yarnpkg.com/@pubsweet/logger/-/logger-0.2.7.tgz#73e4b2a56c7d1145287da6081a0b6ede8abb4269" @@ -227,6 +237,29 @@ styled-components "^3.2.5" xpub-journal "^0.0.3" +"@pubsweet/styleguide@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@pubsweet/styleguide/-/styleguide-4.0.2.tgz#5fa2b4884c47442e1849dd3dc562f95cc17e7d17" + integrity sha512-eSxkpLESMdkpM2EUuqY3/OjqSgz6jd+ONSSDS/2HLeNt9rv0NFxDmm+zHLmXqHMIfQC1kEf+PdqM1OJRnhsZGQ== + dependencies: + "@elifesciences/elife-theme" "^1.0.0" + "@pubsweet/default-theme" "^4.0.2" + "@pubsweet/ui" "^9.0.2" + "@pubsweet/ui-toolkit" "^2.0.2" + faker "^4.1.0" + lodash "^4.17.5" + react "^16.2.0" + react-dom "^16.2.0" + react-redux "^5.0.2" + react-router-dom "^4.2.2" + react-styleguidist "^7.0.10" + recompose "^0.26.0" + redux "^3.6.0" + redux-form "^7.0.3" + styled-components "^4.1.1" + styled-normalize "^8.0.4" + xpub-journal "^0.0.3" + "@pubsweet/ui-toolkit@^1.0.0", "@pubsweet/ui-toolkit@^1.1.2", "@pubsweet/ui-toolkit@^1.1.3", "@pubsweet/ui-toolkit@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@pubsweet/ui-toolkit/-/ui-toolkit-1.2.0.tgz#5531149fa2229acc06e76e964b8a412bf503c4ce" @@ -236,10 +269,10 @@ lodash "^4.17.4" styled-components "^3.2.5" -"@pubsweet/ui-toolkit@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@pubsweet/ui-toolkit/-/ui-toolkit-2.0.1.tgz#d500cd808125909d812aafa8b77732d4a96b4433" - integrity sha512-mAhBSLte7NhHHkrA5pYyRoDpXLlam11T8USsYGRRtWyho2W4DkrQb4pl+KHXUhcR/O8Sgd1FIeGtrRfPUBdoUw== +"@pubsweet/ui-toolkit@^2.0.0", "@pubsweet/ui-toolkit@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@pubsweet/ui-toolkit/-/ui-toolkit-2.0.2.tgz#1dc8c7ac31eb53cce345ab85e982c51404f95bf7" + integrity sha512-keyBcNfnsXlg2A4wNpJbuYZ6i+rRq+BM0JQfI4qsdvY8yTsHS8Pvwrh752X6GneD80t4UsV0C8yG65mBOulCtQ== dependencies: color "^3.0.0" lodash "^4.17.4" @@ -254,7 +287,7 @@ lodash "^4.17.4" styled-components "^3.2.5" -"@pubsweet/ui@^8.2.0", "@pubsweet/ui@^8.3.0": +"@pubsweet/ui@^8.2.0": version "8.3.0" resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-8.3.0.tgz#b8da7be8d9110594abdd18476e3808c9606a74b4" integrity sha512-JEBRKh84TLNlBlXj/teUEHQAxFRpCCRse6OgJecQLRTOUkxCROqywpR+5fkkoDG+dXOJqV91Yq/yPURdhI+otQ== @@ -279,37 +312,12 @@ redux-form "^7.0.3" styled-components "^3.2.5" -"@pubsweet/ui@^8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-8.6.0.tgz#8153cfbd3f2de5b07f04655b6f7b19a7aee5ca1e" - integrity sha512-75QFsnNwQ1qms1VxZxb+ewe6jb4cVDWRKnSx57ybjdR41kVRda4najv0Pjreck7WDQ2mQyq3x9/El+mK+mRyYg== - dependencies: - "@pubsweet/ui-toolkit" "^1.2.0" - babel-jest "^21.2.0" - classnames "^2.2.5" - enzyme "^3.2.0" - enzyme-adapter-react-16 "^1.1.1" - invariant "^2.2.3" - lodash "^4.17.4" - moment "^2.22.1" - prop-types "^15.5.10" - react "^16.2.0" - react-dom "^16.2.0" - react-feather "^1.0.8" - react-redux "^5.0.2" - react-router-dom "^4.2.2" - react-tag-autocomplete "^5.5.0" - recompose "^0.26.0" - redux "^3.6.0" - redux-form "^7.0.3" - styled-components "^3.2.5" - -"@pubsweet/ui@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-9.0.1.tgz#263feecd28b5cd87f8e1ac14a69605a30a21457c" - integrity sha512-RQfYF2zLRuinBBHtuGvegnIjc5kj1IzHfFXKCcd219+byj6RH4EQTtThn65jBsN/IDD6mldPwN+HkYWPnI8Pyg== +"@pubsweet/ui@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-9.0.2.tgz#b0a2b944b2325a6ec446b2f93fda01acfa3a0b3c" + integrity sha512-Vayz5hcxQC2w4V962TgFNG5F5bXWhozeFPLp6KDAi17tqDunQP6bgVb53khLx8eZM43bSGnx8N8osaRe/cOV4A== dependencies: - "@pubsweet/ui-toolkit" "^2.0.1" + "@pubsweet/ui-toolkit" "^2.0.2" babel-jest "^21.2.0" classnames "^2.2.5" enzyme "^3.7.0" @@ -687,6 +695,13 @@ apollo-link-http@^1.5.4: apollo-link "^1.2.2" apollo-link-http-common "^0.2.4" +apollo-link-ws@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.10.tgz#9fb5489a36f5fcb0d139b6ada0eea979ecad3967" + integrity sha512-1Yx4iIUsWS8wuAdVJ2LF+LdIYAsqHSto8eShwJ/d2SovocsMCwN9hyS+JkaOPD/KHAkavTWzN6l3XwSOdOwevQ== + dependencies: + apollo-link "^1.2.4" + apollo-link@^1.0.0, apollo-link@^1.2.1, apollo-link@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.2.tgz#54c84199b18ac1af8d63553a68ca389c05217a03" @@ -704,6 +719,14 @@ apollo-link@^1.2.3: apollo-utilities "^1.0.0" zen-observable-ts "^0.8.10" +apollo-link@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.4.tgz#ab4d21d2e428db848e88b5e8f4adc717b19c954b" + integrity sha512-B1z+9H2nTyWEhMXRFSnoZ1vSuAYP+V/EdUJvRx9uZ8yuIBZMm6reyVtr1n0BWlKeSFyPieKJy2RLzmITAAQAMQ== + dependencies: + apollo-utilities "^1.0.0" + zen-observable-ts "^0.8.11" + apollo-server-core@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.3.2.tgz#f36855a3ebdc2d77b8b9c454380bf1d706105ffc" @@ -2069,6 +2092,11 @@ bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== +bluebird@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -3026,7 +3054,7 @@ concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config@^1.21.0, config@^1.26.2: +config@^1.26.2: version "1.29.4" resolved "https://registry.yarnpkg.com/config/-/config-1.29.4.tgz#1b42752ed86b363fc4025960569fd74978862a92" integrity sha1-G0J1LthrNj/EAllgVp/XSXiGKpI= @@ -3343,6 +3371,11 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" integrity sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4= +core-js@^2.4.1: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4009,6 +4042,16 @@ dnd-core@^2.5.4: lodash "^4.2.0" redux "^3.7.1" +dnd-core@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-7.0.2.tgz#6c080eb57243fa0372fd083b3db242d9eb525010" + integrity sha512-InwRBi6zTndtE3+3nTYpLJkYMEr7utSR7OziAoSFhtQsbUfJE1KeqxM+ZFRIMKn6ehxUTAC+QU6QC7IG9u86Mg== + dependencies: + asap "^2.0.6" + invariant "^2.2.4" + lodash "^4.17.11" + redux "^4.0.1" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -5124,6 +5167,11 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs-css-vars@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.1.tgz#836d876e887d702f45610f5ebd2fbeef649527fc" + integrity sha512-IM+v/C40MNZWqsLErc32e0TyIk/NhkkQZL0QmjBh6zi1eXv0/GeVKmKmueQX7nn9SXQBQbTUcB8zuexIF3/88w== + fbjs@^0.8.0: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" @@ -5150,6 +5198,20 @@ fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.5, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.9" +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -5439,6 +5501,21 @@ formik@1.3.0: tslib "^1.9.3" warning "^3.0.0" +formik@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/formik/-/formik-1.3.2.tgz#f97b9e71084db4a51f7bde798584c094b3696738" + integrity sha512-WzKX8MGfSJTBF97oDDeP2meb2/I1bi1dLdkICmUfPB2KJ9mcdBOmsOPY8cE1cfV25ML3DzLomYsUezH+yedpvQ== + dependencies: + create-react-context "^0.2.2" + deepmerge "^2.1.1" + hoist-non-react-statics "^2.5.5" + lodash.clonedeep "^4.5.0" + lodash.topath "4.5.2" + prop-types "^15.6.1" + react-fast-compare "^1.0.0" + tslib "^1.9.3" + warning "^3.0.0" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -5895,6 +5972,11 @@ graphql-subscriptions@^0.5.8: dependencies: iterall "^1.2.1" +graphql-tag@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" + integrity sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w== + graphql-tag@^2.7.3: version "2.9.1" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.9.1.tgz#1ab090ef7d3518b06d8c97d1393672145fe91587" @@ -5911,13 +5993,6 @@ graphql-tools@^4.0.0: iterall "^1.1.3" uuid "^3.1.0" -graphql@^0.13.0: - version "0.13.2" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" - integrity sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog== - dependencies: - iterall "^1.2.1" - graphql@^14.0.2: version "14.0.2" resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz#7dded337a4c3fd2d075692323384034b357f5650" @@ -5925,13 +6000,6 @@ graphql@^14.0.2: dependencies: iterall "^1.2.2" -grid-styled@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/grid-styled/-/grid-styled-5.0.2.tgz#1e81d7d5bde50a9b43d81cf111b81399126fe595" - integrity sha512-kM3kewM77sBifQLZUZD9meoMSXOZE9ArxxM9XZ6qtwb4B2ylHYHH9Ylkt96hDMHA32J+LoEeYoHAvn6+j4fn9Q== - dependencies: - system-components "^3.0.0" - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -6210,6 +6278,20 @@ hoist-non-react-statics@^2.5.5: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== +hoist-non-react-statics@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.0.tgz#d21b9fc72b50fdc38c5d88f6e2c52f2c2dbe5ee2" + integrity sha512-3IascCRfaEkbmHjJnUxWSspIUE1okLPjGTMVXW8zraUo1t3yg1BadKAxAGILHwgoBzmMnzrgeeaDGBvpuPz6dA== + dependencies: + react-is "^16.3.2" + +hoist-non-react-statics@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz#c09c0555c84b38a7ede6912b61efddafd6e75e1e" + integrity sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw== + dependencies: + react-is "^16.3.2" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -6564,7 +6646,7 @@ invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1, invarian dependencies: loose-envify "^1.0.0" -invariant@^2.2.3: +invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -7524,6 +7606,11 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" @@ -8198,6 +8285,11 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +lodash.flowright@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flowright/-/lodash.flowright-3.5.0.tgz#2b5fff399716d7e7dc5724fe9349f67065184d67" + integrity sha1-K1//OZcW1+fcVyT+k0n2cGUYTWc= + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -8268,7 +8360,7 @@ lodash@4.17.5, lodash@^4, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" integrity sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw== -lodash@^4.17.0: +lodash@^4.17.0, lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -8322,6 +8414,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0" +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -9913,6 +10012,15 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +pg-boss@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pg-boss/-/pg-boss-3.1.2.tgz#efbe343b0bf01808f3d1d0a158c4bcc969d2776a" + integrity sha512-3Mwv2KS1dq4gCwS63IMhd9H2mqhJbjJU2lzxLFXnDzzOitcPy5UdX/UyslMpurkp5wPlV8KXBW1H0iyyExe80Q== + dependencies: + bluebird "^3.5.2" + pg "^7.4.1" + uuid "^3.2.1" + pg-connection-string@0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" @@ -10696,24 +10804,25 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -pubsweet-client@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pubsweet-client/-/pubsweet-client-4.0.5.tgz#60568218da77a3c7f32071f10f436fb2fa378a4d" - integrity sha512-jCcqCpNavDuyTHw/oXxFi2pu8L6T47tgeHKmJ6fQ7fusHZvU1PfrHqs08a4J+4GVoBTGXkW+wweOzzpgIr4y3g== +pubsweet-client@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/pubsweet-client/-/pubsweet-client-7.0.2.tgz#58a05e8c9a2b5ba28712b3e2efbcd8f21f3fae36" + integrity sha512-kI5+S3kDdx7BC8ovWfG4uVJ+e6ct12kWZ52JOmlSlDkUcCxvvGvL9eQ1yP47Ul6blYe4G/6rHa6F96ajceGNCg== dependencies: - "@pubsweet/ui" "^8.3.0" - "@pubsweet/ui-toolkit" "^1.2.0" + "@pubsweet/ui" "^9.0.2" + "@pubsweet/ui-toolkit" "^2.0.2" apollo-cache-inmemory "^1.2.4" apollo-client "^2.3.4" apollo-link "^1.2.1" apollo-link-context "^1.0.5" apollo-link-http "^1.5.4" + apollo-link-ws "^1.0.8" apollo-upload-client "^8.0.0" authsome "^0.1.0" - config "^1.21.0" + config "^2.0.1" event-source-polyfill "^0.0.10" global "^4.3.1" - graphql "^0.13.0" + graphql "^14.0.2" graphql-tag "^2.7.3" isomorphic-fetch "^2.1.1" lint-staged "^6.0.0" @@ -10729,15 +10838,16 @@ pubsweet-client@^4.0.4: redux-logger "^3.0.1" redux-thunk "^2.2.0" reselect "^3.0.1" - styled-components "^3.2.5" - styled-normalize "^3.0.1" + styled-components "^4.1.1" + styled-normalize "^8.0.4" + subscriptions-transport-ws "^0.9.12" -pubsweet-component-login@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/pubsweet-component-login/-/pubsweet-component-login-1.2.2.tgz#c5f0c0f4355a3f157e000d46852e2bcb3395ab1d" - integrity sha512-vQk7VGNI5SEQQmLTLGph9PWT7Am/lrWf7gVs1K0m9dcsWaKYHZ1AeLocMTTMwTa6OAfaWF9Mf8cewZW17dFaIw== +pubsweet-component-login@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/pubsweet-component-login/-/pubsweet-component-login-1.2.3.tgz#4e6046c793c53db806a3ac3b84947c23257da27d" + integrity sha512-SzyuDG2Kk4Wrd7dG5cd2dD3pMhExWo/O891cMCqTYRBXJ/Qg2RG7g8/8Dbsolzg45phtQIjCjDRBDLDQK1OMfg== dependencies: - "@pubsweet/ui" "^9.0.1" + "@pubsweet/ui" "^9.0.2" formik "1.3.0" prop-types "^15.5.10" react-redux "^5.0.6" @@ -10745,10 +10855,10 @@ pubsweet-component-login@^1.2.2: react-router-redux "^5.0.0-alpha.9" recompose "^0.26.0" -pubsweet-server@10.0.1, pubsweet-server@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-10.0.1.tgz#ac2ccc0ae1f42f2c97b044be3f90782b11b1d0fa" - integrity sha512-hUcOfVAV6rWeohgb93NO5sn414m03cOeKKUaOKxCXqn8CNgFmZQhmogLeEXH+MVbEXsnbpYnEuV0rcuwA0boNQ== +pubsweet-server@^10.0.0, pubsweet-server@^10.1.3: + version "10.1.3" + resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-10.1.3.tgz#f3286608ecc2f0280eb459412ff134897ddfaa37" + integrity sha512-2DnNJctFFglPfjmLzc+aJAoUsuu5LsDDdocHmo7K8k6QrwHvEa8eFevAAsqezNCFo+NbTVcPEjc53pm4ekAu0Q== dependencies: "@pubsweet/logger" "^0.2.7" apollo-server-express "^1.3.2" @@ -10780,11 +10890,13 @@ pubsweet-server@10.0.1, pubsweet-server@^10.0.1: passport-http-bearer "^1.0.1" passport-local "^1.0.0" pg "^7.4.1" + pg-boss "^3.1.2" promise-queue "^2.2.3" prompt "^1.0.0" pubsweet-sse "^1.0.1" subscriptions-transport-ws "^0.9.12" uuid "^3.0.1" + waait "^1.0.2" winston "^2.2.0" pubsweet-sse@^1.0.1: @@ -10792,12 +10904,12 @@ pubsweet-sse@^1.0.1: resolved "https://registry.yarnpkg.com/pubsweet-sse/-/pubsweet-sse-1.0.1.tgz#675f699213a7c228a448e7c9f272a5a9e7585fcf" integrity sha512-A5aDdSI38GmrfUhXc3bjXGExqUEzuzcWdm63Km7ww9KIMFQDnHl06ovap8OAP/+BmqxXvXooxHqqeQ/rhe0l7A== -pubsweet@3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-3.0.6.tgz#8f2543f8d101cea596be53edf3d559d6bd89a57f" - integrity sha512-eJIscLmMvLmZ5+DBsOh9fpMNmXDd1xYtwOHNYty8hMn5pP6+b93EOzXeI+ofoFzdCTVCeAIATWKMAJmzWutOnQ== +pubsweet@^3.0.0: + version "3.0.12" + resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-3.0.12.tgz#14d3c66ed0199f87e65216d3b8c18c45fe483e5e" + integrity sha512-28aGWbLhR5mTgPQIL3WFHr/9MyVikNc2EoOZ2DqzsVJ0KGXisG6ohQc4YtLP+5ORfoIJsoMKOpbjObEYqPAfng== dependencies: - "@pubsweet/db-manager" "^2.0.6" + "@pubsweet/db-manager" "^2.1.2" "@pubsweet/logger" "^0.2.7" bluebird "^3.5.0" colors "^1.1.2" @@ -10807,7 +10919,7 @@ pubsweet@3.0.6: fs-extra "^4.0.2" inflection "^1.12.0" prompt flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87 - pubsweet-server "^10.0.1" + pubsweet-server "^10.1.3" uuid "^3.0.1" webpack "^3.8.1" webpack-dev-middleware "^1.12.0" @@ -10986,6 +11098,18 @@ react-apollo@^2.1.0: lodash "4.17.5" prop-types "^15.6.0" +react-apollo@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.3.2.tgz#b8e287d2813722b9e0a886cabf8149ab3b84a3b7" + integrity sha512-3lU9iqmj4KMIZvlWWSuLihxMGLEAL6oNmnSTWrb3/mRP36Zy0zJD4rdaonDx4WzqFYQAnUPaOiFnHGp0UQUTwA== + dependencies: + fbjs "^1.0.0" + hoist-non-react-statics "^3.0.0" + invariant "^2.2.2" + lodash.flowright "^3.5.0" + lodash.isequal "^4.5.0" + prop-types "^15.6.0" + react-codemirror2@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-5.1.0.tgz#62de4460178adea40eb52eabf7491669bf3794b8" @@ -11027,6 +11151,14 @@ react-dnd-html5-backend@^2.5.4: dependencies: lodash "^4.2.0" +react-dnd-html5-backend@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-7.0.2.tgz#f74181ca0ff05be13eb6094629c5ad560f558a7e" + integrity sha512-BPhmHeQjvhPXRykHvFLbM+TJFrrarcuf/mIArNEmXzZuNhLfbOnHtMSzR8lPwodABcDAYj7hEF7vTABXX298vA== + dependencies: + dnd-core "^7.0.2" + lodash "^4.17.11" + react-dnd@^2.5.4: version "2.5.4" resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.5.4.tgz#0b6dc5e9d0dfc2909f4f4fe736e5534f3afd1bd9" @@ -11039,6 +11171,18 @@ react-dnd@^2.5.4: lodash "^4.2.0" prop-types "^15.5.10" +react-dnd@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-7.0.2.tgz#8f5611a6e877592932c082d6280c64d1c817f420" + integrity sha512-nJnHJo/tNQjyod234+hPNopWHPvgH0gujf3pcdJWRe3l0GL+jSXXwXJ2SFwIHkVmxPYrx8+gbKU3+Pq26p6fkg== + dependencies: + dnd-core "^7.0.2" + hoist-non-react-statics "^3.1.0" + invariant "^2.1.0" + lodash "^4.17.11" + recompose "^0.30.0" + shallowequal "^1.1.0" + react-docgen-annotation-resolver@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-docgen-annotation-resolver/-/react-docgen-annotation-resolver-1.0.0.tgz#abbb343698b3b319537142082b6bb7d835fe2f1f" @@ -11072,7 +11216,7 @@ react-dom@^15.6.1: object-assign "^4.1.0" prop-types "^15.5.10" -react-dom@^16.1.0, react-dom@^16.2.0: +react-dom@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" integrity sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg== @@ -11082,6 +11226,16 @@ react-dom@^16.1.0, react-dom@^16.2.0: object-assign "^4.1.1" prop-types "^15.6.0" +react-dom@^16.6.0: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.3.tgz#8fa7ba6883c85211b8da2d0efeffc9d3825cccc0" + integrity sha512-8ugJWRCWLGXy+7PmNh8WJz3g1TaTUt1XyoIcFN+x0Zbkoz+KKdUyx1AQLYJdbFXjuF41Nmjn5+j//rxvhFjgSQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.11.2" + 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" @@ -11132,7 +11286,7 @@ react-is@^16.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== -react-is@^16.6.0: +react-is@^16.3.2, react-is@^16.6.0: version "16.6.3" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0" integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA== @@ -11205,7 +11359,7 @@ react-router@^4.2.0: prop-types "^15.5.4" warning "^3.0.0" -react-styleguidist@^7.0.10, react-styleguidist@^7.2.1: +react-styleguidist@^7.0.10: version "7.2.1" resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-7.2.1.tgz#2399b0451a37444931f0550a5a0c2990770bcdd5" integrity sha512-QT1v9BEs90Z7Z2+KzYRAbUsGVrkr0NbKOisWS5DED52IRzov83POVEU458gk71Q4Kq0WQ9ETby0qM2IMRT5vIA== @@ -11311,6 +11465,16 @@ react@^16.4.2: object-assign "^4.1.1" prop-types "^15.6.0" +react@^16.6.0: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c" + integrity sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.11.2" + read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -11555,7 +11719,7 @@ redux-form@^7.0.3: lodash-es "^4.17.3" prop-types "^15.5.9" -redux-logger@^3.0.1: +redux-logger@^3.0.1, redux-logger@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8= @@ -11577,6 +11741,14 @@ redux@^3.6.0, redux@^3.7.1: loose-envify "^1.1.0" symbol-observable "^1.0.3" +redux@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + referrer-policy@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/referrer-policy/-/referrer-policy-1.1.0.tgz#35774eb735bf50fb6c078e83334b472350207d79" @@ -12181,6 +12353,14 @@ sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +scheduler@^0.11.2: + version "0.11.3" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b" + integrity sha512-i9X9VRRVZDd3xZw10NY5Z2cVMbdYg6gqFecfj79USv1CFN+YrJ3gIPRKf1qlY+Sxly4djoKdfx1T+m9dnRB8kQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" @@ -12369,6 +12549,11 @@ shallow-clone@^1.0.0: kind-of "^5.0.0" mixin-object "^2.0.1" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12972,22 +13157,7 @@ styled-components@^3.2.5: stylis-rule-sheet "^0.0.10" supports-color "^3.2.3" -styled-components@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.4.2.tgz#8f518419932327e47fe9144824e3184b3e2da95d" - integrity sha512-eTmIiWstyDLccHZAyp+aCPirlkTvYiHlYGgWQxOYDv8Ko0o6mfnDo0+DnUnKinO8NzAfQXEDP7Bh0qlazwJgrw== - dependencies: - buffer "^5.0.3" - css-to-react-native "^2.0.3" - fbjs "^0.8.16" - hoist-non-react-statics "^2.5.0" - prop-types "^15.5.4" - react-is "^16.3.1" - stylis "^3.5.0" - stylis-rule-sheet "^0.0.10" - supports-color "^3.2.3" - -styled-components@^4.1.1: +styled-components@^4.1.0, styled-components@^4.1.1, styled-components@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.1.2.tgz#f8a685e3b2bcd03c5beac7f2c02bb6ad237da9b3" integrity sha512-NdvWatJ2WLqZxAvto+oH0k7GAC/TlAUJTrHoXJddjbCrU6U23EmVbb9LXJBF+d6q6hH+g9nQYOWYPUeX/Vlc2w== @@ -13003,17 +13173,10 @@ styled-components@^4.1.1: stylis-rule-sheet "^0.0.10" supports-color "^5.5.0" -styled-normalize@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/styled-normalize/-/styled-normalize-3.0.1.tgz#217efb96598690addd04699ca71af0db3473fea2" - integrity sha512-EtTwCJDKMoJ+GU0YxklkHukltPGz7Swfq/fKyeP/WEQGF01DXGVXmuo1Rp2kMTQ9kz7o6dVBvvmT+KQyKe8Okw== - -styled-system@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-3.0.2.tgz#2189a6d829117d212fb6ac8ebc4260fdb75d1109" - integrity sha512-1fsnk6JtRZVoPo3515+mvaWdLjCXNN0jHvbSKrrz6niaW9fR1VLsx6VO1SBeZgjWo9dtonMhoyTB3oECAoVtrA== - dependencies: - prop-types "^15.6.2" +styled-normalize@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/styled-normalize/-/styled-normalize-8.0.4.tgz#6a0885dc16c61d88813dab8f5137da928fe0c947" + integrity sha512-dXkKPnT+JcpqYnS0iQiBhUCOdheDz9xEm3H+ZARJV7l4WCXmRkwCx20ujkIYfESoYaiefbuX+F+rbtF6Ku5kvA== stylelint-config-pubsweet@^0.0.3: version "0.0.3" @@ -13210,7 +13373,7 @@ symbol-observable@^0.2.2: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" integrity sha1-lag9smGG1q9+ehjb2XYKL4bQj0A= -symbol-observable@^1.0.2, 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, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -13220,13 +13383,6 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= -system-components@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/system-components/-/system-components-3.0.0.tgz#073e7c6712012c3c17375bae3ae986cb81866347" - integrity sha512-97jmSbZlDE6BBygRz72bU4hlSaJH15ypm7ZRWvdRp6c19XJFlnxswKfuaEMx0OKJdRkueF2DRF/rjA/wJ7V/IQ== - dependencies: - styled-system "^3.0.1" - table@4.0.2, table@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -13994,7 +14150,7 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== -uuid@^3.3.2: +uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== @@ -14089,6 +14245,11 @@ w3c-keyname@^1.1.8: resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-1.1.8.tgz#4e2219663760fd6535b7a1550f1552d71fc9372c" integrity sha512-2HAdug8GTiu3b4NYhssdtY8PXRue3ICnh1IlxvZYl+hiINRq0GfNWei3XOPDg8L0PsxbmYjWVLuLj6BMRR/9vA== +waait@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/waait/-/waait-1.0.2.tgz#c234ed748a032cb7d5e83cb691567c6dc545b37d" + integrity sha512-amvD7uRx48U2gXOgzwV7PbcpSy8O3Fect2SqiLbBIVH9Zh0UMnDWckSLnsdKNwq7pvarWnPWrpYad2P3pgmRYw== + walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -14715,6 +14876,13 @@ zen-observable-ts@^0.8.10: dependencies: zen-observable "^0.8.0" +zen-observable-ts@^0.8.11: + version "0.8.11" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.11.tgz#d54a27cd17dc4b4bb6bd008e5c096af7fcb068a9" + integrity sha512-8bs7rgGV4kz5iTb9isudkuQjtWwPnQ8lXq6/T76vrepYZVMsDEv6BXaEA+DHdJSK3KVLduagi9jSpSAJ5NgKHw== + dependencies: + zen-observable "^0.8.0" + zen-observable-ts@^0.8.9: version "0.8.9" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz#d3c97af08c0afdca37ebcadf7cc3ee96bda9bab1"