From f67f1e3b52d62aaeebd297254f421537267a7ac5 Mon Sep 17 00:00:00 2001 From: okbel Date: Wed, 20 Dec 2017 18:10:13 -0300 Subject: [PATCH] Adding role, instead of roles. And disable banning and suspending for the user thats logged in --- .../coral-admin/src/components/UserDetail.js | 5 +- .../coral-admin/src/containers/UserDetail.js | 3 + .../coral-embed-stream/src/graphql/index.js | 56 +++++---- .../src/tabs/stream/containers/Stream.js | 114 +++++++++++------- client/coral-framework/services/perms.js | 14 +-- yarn.lock | 99 ++------------- 6 files changed, 129 insertions(+), 162 deletions(-) diff --git a/client/coral-admin/src/components/UserDetail.js b/client/coral-admin/src/components/UserDetail.js index a7b0c495b..7616b913b 100644 --- a/client/coral-admin/src/components/UserDetail.js +++ b/client/coral-admin/src/components/UserDetail.js @@ -104,6 +104,7 @@ class UserDetail extends React.Component { data, root, root: { + me, user, totalComments, rejectedComments, @@ -130,7 +131,7 @@ class UserDetail extends React.Component { const banned = isBanned(user); const suspended = isSuspended(user); - + return ( @@ -152,6 +153,7 @@ class UserDetail extends React.Component { onClick={() => unSuspendUser({id: user.id})}> Remove Suspension : Suspend User } @@ -160,6 +162,7 @@ class UserDetail extends React.Component { onClick={() => unBanUser({id: user.id})}> Remove Ban : Ban User } diff --git a/client/coral-admin/src/containers/UserDetail.js b/client/coral-admin/src/containers/UserDetail.js index f026bb47d..4b6ade01b 100644 --- a/client/coral-admin/src/containers/UserDetail.js +++ b/client/coral-admin/src/containers/UserDetail.js @@ -199,6 +199,9 @@ export const withUserDetailQuery = withQuery(gql` } ${getSlotFragmentSpreads(slots, 'user')} } + me { + id + } totalComments: commentCount(query: {author_id: $author_id, statuses: []}) rejectedComments: commentCount(query: {author_id: $author_id, statuses: [REJECTED]}) comments: comments(query: { diff --git a/client/coral-embed-stream/src/graphql/index.js b/client/coral-embed-stream/src/graphql/index.js index 542a767e2..b9bed721f 100644 --- a/client/coral-embed-stream/src/graphql/index.js +++ b/client/coral-embed-stream/src/graphql/index.js @@ -1,7 +1,10 @@ import {gql} from 'react-apollo'; import update from 'immutability-helper'; import uuid from 'uuid/v4'; -import {insertCommentIntoEmbedQuery, removeCommentFromEmbedQuery} from './utils'; +import { + insertCommentIntoEmbedQuery, + removeCommentFromEmbedQuery, +} from './utils'; import {mapLeaves} from 'coral-framework/utils'; export default { @@ -45,7 +48,7 @@ export default { } } `, - CreateDontAgreeResponse : gql` + CreateDontAgreeResponse: gql` fragment CoralEmbedStream_CreateDontAgreeResponse on CreateDontAgreeResponse { dontagree { id @@ -143,13 +146,13 @@ export default { tag: { name: tag, created_at: new Date().toISOString(), - __typename: 'Tag' + __typename: 'Tag', }, assigned_by: { id: auth.user.id, - __typename: 'User' + __typename: 'User', }, - __typename: 'TagLink' + __typename: 'TagLink', })), }, created_at: new Date().toISOString(), @@ -159,9 +162,9 @@ export default { tag: { name: tag, created_at: new Date().toISOString(), - __typename: 'Tag' + __typename: 'Tag', }, - __typename: 'TagLink' + __typename: 'TagLink', })), status: 'NONE', replyCount: 0, @@ -171,9 +174,7 @@ export default { title: '', url: '', }, - parent: parent_id - ? {__typename: 'Comment', id: parent_id} - : null, + parent: parent_id ? {__typename: 'Comment', id: parent_id} : null, replies: { __typename: 'CommentConnection', nodes: [], @@ -188,13 +189,17 @@ export default { }, status_history: [], id: `pending-${uuid()}`, - } - } + }, + }, }, updateQueries: { - CoralEmbedStream_Embed: (prev, {mutationResult: {data: {createComment: {comment}}}}) => { + CoralEmbedStream_Embed: ( + prev, + {mutationResult: {data: {createComment: {comment}}}} + ) => { if ( - prev.me.roles.indexOf('ADMIN') === -1 && prev.asset.settings.moderation === 'PRE' || + (prev.me.role !== 'ADMIN' && + prev.asset.settings.moderation === 'PRE') || comment.status === 'PREMOD' || comment.status === 'REJECTED' || comment.status === 'SYSTEM_WITHHELD' @@ -203,7 +208,10 @@ export default { } return insertCommentIntoEmbedQuery(prev, comment); }, - CoralEmbedStream_Profile: (prev, {mutationResult: {data: {createComment: {comment}}}}) => { + CoralEmbedStream_Profile: ( + prev, + {mutationResult: {data: {createComment: {comment}}}} + ) => { return update(prev, { me: { comments: { @@ -212,19 +220,24 @@ export default { }, }); }, - } + }, }), EditComment: () => ({ updateQueries: { - CoralEmbedStream_Embed: (prev, {mutationResult: {data: {editComment: {comment}}}}) => { - if (!['PREMOD', 'REJECTED', 'SYSTEM_WITHHELD'].includes(comment.status)) { + CoralEmbedStream_Embed: ( + prev, + {mutationResult: {data: {editComment: {comment}}}} + ) => { + if ( + !['PREMOD', 'REJECTED', 'SYSTEM_WITHHELD'].includes(comment.status) + ) { return null; } return removeCommentFromEmbedQuery(prev, comment.id); }, }, }), - UpdateAssetSettings: ({variables: {input}}) => ({ + UpdateAssetSettings: ({variables: {input}}) => ({ updateQueries: { CoralEmbedStream_Embed: (prev) => { const updated = update(prev, { @@ -233,9 +246,8 @@ export default { }, }); return updated; - } - } + }, + }, }), }, }; - diff --git a/client/coral-embed-stream/src/tabs/stream/containers/Stream.js b/client/coral-embed-stream/src/tabs/stream/containers/Stream.js index ccbf6c86c..9e37e75d4 100644 --- a/client/coral-embed-stream/src/tabs/stream/containers/Stream.js +++ b/client/coral-embed-stream/src/tabs/stream/containers/Stream.js @@ -2,15 +2,25 @@ import React from 'react'; import {gql, compose} from 'react-apollo'; import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; -import {ADDTL_COMMENTS_ON_LOAD_MORE, THREADING_LEVEL} from '../../../constants/stream'; import { - withPostComment, withPostFlag, withPostDontAgree, - withDeleteAction, withEditComment + ADDTL_COMMENTS_ON_LOAD_MORE, + THREADING_LEVEL, +} from '../../../constants/stream'; +import { + withPostComment, + withPostFlag, + withPostDontAgree, + withDeleteAction, + withEditComment, } from 'coral-framework/graphql/mutations'; import * as authActions from 'coral-embed-stream/src/actions/auth'; import * as notificationActions from 'coral-framework/actions/notification'; -import {setActiveReplyBox, setActiveTab, viewAllComments} from '../../../actions/stream'; +import { + setActiveReplyBox, + setActiveTab, + viewAllComments, +} from '../../../actions/stream'; import Stream from '../components/Stream'; import Comment from './Comment'; import {withFragments, withEmit} from 'coral-framework/hocs'; @@ -40,10 +50,12 @@ class StreamContainer extends React.Component { assetId: this.props.asset.id, }, updateQuery: (prev, {subscriptionData: {data: {commentEdited}}}) => { - // Ignore mutations from me. // TODO: need way to detect mutations created by this client, and allow mutations from other clients. - if (this.props.auth.user && commentEdited.user.id === this.props.auth.user.id) { + if ( + this.props.auth.user && + commentEdited.user.id === this.props.auth.user.id + ) { return prev; } @@ -52,7 +64,11 @@ class StreamContainer extends React.Component { return prev; } - if (['PREMOD', 'REJECTED', 'SYSTEM_WITHHELD'].includes(commentEdited.status)) { + if ( + ['PREMOD', 'REJECTED', 'SYSTEM_WITHHELD'].includes( + commentEdited.status + ) + ) { return removeCommentFromEmbedQuery(prev, commentEdited.id); } }, @@ -66,17 +82,22 @@ class StreamContainer extends React.Component { assetId: this.props.asset.id, }, updateQuery: (prev, {subscriptionData: {data: {commentAdded}}}) => { - // Ignore mutations from me. // TODO: need way to detect mutations created by this client, and allow mutations from other clients. - if (this.props.auth.user && commentAdded.user.id === this.props.auth.user.id) { + if ( + this.props.auth.user && + commentAdded.user.id === this.props.auth.user.id + ) { return prev; } // Exit if author is ignored. if ( this.props.root.me && - this.props.root.me.ignoredUsers.some(({id}) => id === commentAdded.user.id)) { + this.props.root.me.ignoredUsers.some( + ({id}) => id === commentAdded.user.id + ) + ) { return prev; } @@ -121,11 +142,11 @@ class StreamContainer extends React.Component { sortOrder: 'ASC', excludeIgnored: this.props.data.variables.excludeIgnored, }, - updateQuery: (prev, {fetchMoreResult:{comments}}) => { + updateQuery: (prev, {fetchMoreResult: {comments}}) => { return insertFetchedCommentsIntoEmbedQuery(prev, comments, parent_id); }, }); - } + }; loadMoreComments = () => { return this.props.data.fetchMore({ @@ -139,7 +160,7 @@ class StreamContainer extends React.Component { sortBy: this.props.data.variables.sortBy, excludeIgnored: this.props.data.variables.excludeIgnored, }, - updateQuery: (prev, {fetchMoreResult:{comments}}) => { + updateQuery: (prev, {fetchMoreResult: {comments}}) => { return insertFetchedCommentsIntoEmbedQuery(prev, comments); }, }); @@ -168,7 +189,10 @@ class StreamContainer extends React.Component { } componentWillReceiveProps(nextProps) { - if (this.props.sortOrder !== nextProps.sortOrder || this.props.sortBy !== nextProps.sortBy) { + if ( + this.props.sortOrder !== nextProps.sortOrder || + this.props.sortBy !== nextProps.sortBy + ) { nextProps.data.refetch(); } } @@ -178,23 +202,25 @@ class StreamContainer extends React.Component { } render() { - if (!this.props.asset - || this.props.asset.comment === undefined - && !this.props.asset.comments + if ( + !this.props.asset || + (this.props.asset.comment === undefined && !this.props.asset.comments) ) { return ; } const streamLoading = this.props.refetching || this.props.data.loading; - return ; + return ( + + ); } } @@ -211,8 +237,8 @@ const commentFragment = gql` `; const COMMENTS_ADDED_SUBSCRIPTION = gql` - subscription CommentAdded($assetId: ID!, $excludeIgnored: Boolean){ - commentAdded(asset_id: $assetId){ + subscription CommentAdded($assetId: ID!, $excludeIgnored: Boolean) { + commentAdded(asset_id: $assetId) { parent { id } @@ -223,8 +249,8 @@ const COMMENTS_ADDED_SUBSCRIPTION = gql` `; const COMMENTS_EDITED_SUBSCRIPTION = gql` - subscription CommentEdited($assetId: ID!){ - commentEdited(asset_id: $assetId){ + subscription CommentEdited($assetId: ID!) { + commentEdited(asset_id: $assetId) { id body status @@ -297,7 +323,7 @@ const fragments = { ignoredUsers { id } - roles + role } settings { organizationName @@ -311,12 +337,15 @@ const fragments = { fragment CoralEmbedStream_Stream_asset on Asset { comment(id: $commentId) @include(if: $hasComment) { ...CoralEmbedStream_Stream_comment - ${nest(` + ${nest( + ` parent { ...CoralEmbedStream_Stream_comment ...nest } - `, THREADING_LEVEL)} + `, + THREADING_LEVEL + )} } id title @@ -372,14 +401,17 @@ const mapStateToProps = (state) => ({ }); const mapDispatchToProps = (dispatch) => - bindActionCreators({ - showSignInDialog, - notify, - setActiveReplyBox, - editName, - viewAllComments, - setActiveStreamTab: setActiveTab, - }, dispatch); + bindActionCreators( + { + showSignInDialog, + notify, + setActiveReplyBox, + editName, + viewAllComments, + setActiveStreamTab: setActiveTab, + }, + dispatch + ); export default compose( withFragments(fragments), @@ -389,5 +421,5 @@ export default compose( withPostFlag, withPostDontAgree, withDeleteAction, - withEditComment, + withEditComment )(StreamContainer); diff --git a/client/coral-framework/services/perms.js b/client/coral-framework/services/perms.js index 1825b1c0b..86af4a7de 100644 --- a/client/coral-framework/services/perms.js +++ b/client/coral-framework/services/perms.js @@ -5,17 +5,17 @@ import get from 'lodash/get'; // ========================================================================= const basicPerms = { - 'INTERACT_WITH_COMMUNITY': (user) => { + INTERACT_WITH_COMMUNITY: (user) => { const banned = get(user, 'status.banned.status'); const suspensionUntil = get(user, 'status.suspension.until'); const suspended = suspensionUntil && new Date(suspensionUntil) > new Date(); return !banned && !suspended; }, - 'EDIT_NAME': (user) => { + EDIT_NAME: (user) => { const usernameStatus = user.status.username.status; return usernameStatus === 'UNSET' || usernameStatus === 'REJECTED'; - } + }, }; // ========================================================================= @@ -23,30 +23,28 @@ const basicPerms = { // ========================================================================= const basicRoles = { - HAS_STAFF_TAG: ['ADMIN', 'MODERATOR', 'STAFF'] + HAS_STAFF_TAG: ['ADMIN', 'MODERATOR', 'STAFF'], }; const queryRoles = { UPDATE_CONFIG: ['ADMIN'], ACCESS_ADMIN: ['ADMIN', 'MODERATOR'], - VIEW_USER_EMAILS: ['ADMIN'] + VIEW_USER_EMAILS: ['ADMIN'], }; const mutationRoles = { CHANGE_ROLES: ['ADMIN'], - MODERATE_COMMENTS: ['ADMIN', 'MODERATOR'] + MODERATE_COMMENTS: ['ADMIN', 'MODERATOR'], }; const roles = {...basicRoles, ...queryRoles, ...mutationRoles}; export const can = (user, ...perms) => { - if (!user) { return false; } return perms.every((perm) => { - // Basic Permissions const permAction = basicPerms[perm]; if (typeof permAction !== 'undefined') { diff --git a/yarn.lock b/yarn.lock index c1394bd96..615817af5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,28 +24,12 @@ git-url-parse "^6.0.2" shelljs "^0.7.0" -<<<<<<< HEAD -======= "@remy/pstree@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@remy/pstree/-/pstree-1.1.0.tgz#414045d4fec60946604f3718023052aaf49bd8d3" dependencies: ps-tree "^1.1.0" -"@types/express-serve-static-core@*": - version "4.0.53" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz#1723a35d1447f2c55e13c8721eab3448e42f4d82" - dependencies: - "@types/node" "*" - -"@types/express@^4.0.35": - version "4.0.37" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.37.tgz#625ac3765169676e01897ca47011c26375784971" - dependencies: - "@types/express-serve-static-core" "*" - "@types/serve-static" "*" - ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 "@types/graphql@0.10.2": version "0.10.2" resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.10.2.tgz#d7c79acbaa17453b6681c80c34b38fcb10c4c08c" @@ -77,16 +61,9 @@ abab@^1.0.0, abab@^1.0.3: resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" abbrev@1: -<<<<<<< HEAD -======= version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -abbrev@1.0.x: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - accepts@^1.3.4, accepts@~1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" @@ -485,25 +462,17 @@ async@2.1.4: dependencies: lodash "^4.14.0" -<<<<<<< HEAD -async@2.4.1: -======= async@2.4.1, async@^2.1.2: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "2.4.1" resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" dependencies: lodash "^4.14.0" -<<<<<<< HEAD async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.1.4, async@~2.6.0: -======= -async@^2.1.4: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 +async@^2.1.4, async@~2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -1584,11 +1553,7 @@ chain-function@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc" -<<<<<<< HEAD -chalk@2.3.0, chalk@^2.0.1: -======= chalk@2.3.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -1606,17 +1571,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -<<<<<<< HEAD -chalk@^2.0.0, chalk@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.0.tgz#477b3bf2f9b8fd5ca9e429747e37f724ee7af240" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -======= ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 change-emitter@^0.1.2: version "0.1.6" resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" @@ -2496,15 +2450,13 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -<<<<<<< HEAD detect-libc@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-0.2.0.tgz#47fdf567348a17ec25fcbf0b9e446348a76f9fb5" -======= + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 dialog-polyfill@^0.4.9: version "0.4.9" @@ -2747,12 +2699,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -<<<<<<< HEAD -es-abstract@^1.4.3, es-abstract@^1.6.1, es-abstract@^1.7.0: -======= -es-abstract@^1.6.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" +es-abstract@^1.4.3, es-abstract@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -2760,10 +2709,9 @@ es-abstract@^1.6.1: is-callable "^1.1.3" is-regex "^1.0.4" -es-abstract@^1.7.0: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 - version "1.9.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" +es-abstract@^1.6.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -5264,15 +5212,6 @@ libqp@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" -<<<<<<< HEAD -======= -license-webpack-plugin@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz#76b2cedccc78f139fd7877e576f756cfc141b8c2" - dependencies: - ejs "^2.5.7" - ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 linkify-it@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f" @@ -5855,15 +5794,11 @@ minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -<<<<<<< HEAD -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: -======= minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -5925,11 +5860,7 @@ moment@2.18.1: version "2.18.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" -<<<<<<< HEAD -moment@2.19.1, moment@2.x.x, "moment@>= 2.9.0", moment@^2.10.3, moment@^2.18.1: -======= moment@2.19.1, moment@^2.10.3: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "2.19.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" @@ -6033,11 +5964,7 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -<<<<<<< HEAD nan@^2.3.0, nan@^2.6.2: -======= -nan@^2.3.0: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" @@ -7241,11 +7168,7 @@ postcss@^6.0.1: source-map "^0.6.1" supports-color "^4.4.0" -<<<<<<< HEAD pre-git@^3.16.0: -======= -pre-git@^3.15.3: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "3.16.0" resolved "https://registry.yarnpkg.com/pre-git/-/pre-git-3.16.0.tgz#a7656bc5f277185fd213c78f39f24f2cb603eb61" dependencies: @@ -7826,7 +7749,6 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -<<<<<<< HEAD read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -7835,10 +7757,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@1.1, readable-stream@1.1.x: -======= readable-stream@1.1: ->>>>>>> b2cc4bdb12f26c733306ba1789404ba040977387 version "1.1.13" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" dependencies: