diff --git a/package.json b/package.json index 116d923fb..21349ffb2 100644 --- a/package.json +++ b/package.json @@ -77,9 +77,9 @@ "babel-eslint": "~10.0.1", "babel-jest": "^23.6.0", "chai": "~4.2.0", - "eslint": "~5.12.0", + "eslint": "~5.12.1", "eslint-config-standard": "~12.0.0", - "eslint-plugin-import": "~2.14.0", + "eslint-plugin-import": "~2.15.0", "eslint-plugin-jest": "^22.1.3", "eslint-plugin-node": "~8.0.1", "eslint-plugin-promise": "~4.0.1", @@ -88,6 +88,6 @@ "jest": "^23.6.0", "nodemon": "~1.18.9", "nyc": "^13.1.0", - "supertest": "^3.4.1" + "supertest": "^3.4.2" } } diff --git a/src/graphql-schema.js b/src/graphql-schema.js index cbeb6bb55..e9475539b 100644 --- a/src/graphql-schema.js +++ b/src/graphql-schema.js @@ -3,6 +3,7 @@ import fs from 'fs' import path from 'path' import bcrypt from 'bcryptjs' import generateJwt from './jwt/generateToken' +import uuid from 'uuid/v4' import { fixUrl } from './middleware/fixImageUrlsMiddleware' import { AuthenticationError } from 'apollo-server' @@ -106,6 +107,7 @@ export const resolvers = { const [currentUser] = await result.records.map(function (record) { return record.get('user') }) + if (currentUser && await bcrypt.compareSync(password, currentUser.password)) { delete currentUser.password currentUser.avatar = fixUrl(currentUser.avatar) @@ -114,6 +116,51 @@ export const resolvers = { }) } else throw new AuthenticationError('Incorrect email address or password.') }) + }, + report: async (parent, { resource, description }, { driver, req, user }, resolveInfo) => { + const contextId = uuid() + const session = driver.session() + const data = { + id: contextId, + type: resource.type, + createdAt: (new Date()).toISOString(), + description: resource.description + } + await session.run( + 'CREATE (r:Report $report) ' + + 'RETURN r.id, r.type, r.description', { + report: data + } + ) + let contentType + + switch (resource.type) { + case 'post': + case 'contribution': + contentType = 'Post' + break + case 'comment': + contentType = 'Comment' + break + case 'user': + contentType = 'User' + break + } + + await session.run( + `MATCH (author:User {id: $userId}), (context:${contentType} {id: $resourceId}), (report:Report {id: $contextId}) ` + + 'MERGE (report)<-[:REPORTED]-(author) ' + + 'MERGE (context)<-[:REPORTED]-(report) ' + + 'RETURN context', { + resourceId: resource.id, + userId: user.id, + contextId: contextId + } + ) + session.close() + + // TODO: output Report compatible object + return data } } } diff --git a/src/middleware/permissionsMiddleware.js b/src/middleware/permissionsMiddleware.js index 6f786583e..0dd4a9a86 100644 --- a/src/middleware/permissionsMiddleware.js +++ b/src/middleware/permissionsMiddleware.js @@ -1,11 +1,13 @@ import { rule, shield, allow } from 'graphql-shield' /* - * TODO: implement - * See: https://github.com/Human-Connection/Nitro-Backend/pull/40#pullrequestreview-180898363 +* TODO: implement +* See: https://github.com/Human-Connection/Nitro-Backend/pull/40#pullrequestreview-180898363 +*/ const isAuthenticated = rule()(async (parent, args, ctx, info) => { return ctx.user !== null }) +/* const isAdmin = rule()(async (parent, args, ctx, info) => { return ctx.user.role === 'ADMIN' }) @@ -26,8 +28,9 @@ const permissions = shield({ // customers: and(isAuthenticated, isAdmin) }, Mutation: { + report: isAuthenticated // addFruitToBasket: isAuthenticated - // CreateUser: allow + // CreateUser: allow, }, User: { email: isOwner, diff --git a/src/schema.graphql b/src/schema.graphql index 3031ac0fe..55f23d5ca 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -5,6 +5,7 @@ type Query { type Mutation { login(email: String!, password: String!): LoggedInUser signup(email: String!, password: String!): Boolean! + report(resource: Resource!, description: String): Report } type LoggedInUser { id: ID! @@ -34,6 +35,17 @@ scalar Date scalar Time scalar DateTime +input Resource { + id: ID!, + type: ResourceEnum! +} + +enum ResourceEnum { + contribution + comment + user +} + enum VisibilityEnum { public friends @@ -162,6 +174,17 @@ type Comment { disabled: Boolean } +type Report { + id: ID! + reporter: User @relation(name: "REPORTED", direction: "IN") + description: String + type: ResourceEnum! + createdAt: String + comment: Comment @relation(name: "REPORTED", direction: "OUT") + contribution: Post @relation(name: "REPORTED", direction: "OUT") + user: User @relation(name: "REPORTED", direction: "OUT") +} + type Category { id: ID! name: String! diff --git a/src/seed/data/index.js b/src/seed/data/index.js index 1184408d9..d3f5d15d7 100644 --- a/src/seed/data/index.js +++ b/src/seed/data/index.js @@ -16,6 +16,8 @@ const seed = { Post: require('./posts.js').default, Comment: require('./comments.js').default, UserShouts: require('./users-shouts.js').default + + // Reports: require('./reports.js').default } let data = {} diff --git a/src/seed/data/reports.js b/src/seed/data/reports.js new file mode 100644 index 000000000..9cecc4f9a --- /dev/null +++ b/src/seed/data/reports.js @@ -0,0 +1,45 @@ +export default function (data) { + return ` + mutation { + r1: CreateReport(id: "r1", type: contribution, description: "Bad Stuff") { + id + } + r2: CreateReport(id: "r2", type: comment, description: "Please remove this sh**") { + id + } + r3: CreateReport(id: "r3", type: user, description: "The user have misbehaved!") { + id + } + ra1: AddReportReporter(from: { id: "u1" }, to: { id: "r1" }) { + from { + id + } + } + ra2: AddReportReporter(from: { id: "u2" }, to: { id: "r2" }) { + from { + id + } + } + ra3: AddReportReporter(from: { id: "u3" }, to: { id: "r3" }) { + from { + id + } + } + rc1: AddReportContribution(from: { id: "r1" }, to: { id: "p2" }) { + from { + id + } + } + rc2: AddReportComment(from: { id: "r2" }, to: { id: "c2" }) { + from { + id + } + } + rc3: AddReportUser(from: { id: "r3" }, to: { id: "u4" }) { + from { + id + } + } + } + ` +} diff --git a/yarn.lock b/yarn.lock index a38f8fe6b..50b8a7cc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -841,9 +841,9 @@ integrity sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA== "@types/node@*", "@types/node@^10.1.0": - version "10.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" - integrity sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A== + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== "@types/range-parser@*": version "1.2.3" @@ -984,13 +984,13 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -apollo-cache-control@0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.3.3.tgz#ad71d8f786e06f0275b2432004c15c2d37c48484" - integrity sha512-X6JhKfIaMLfl2jpsK/880BflXA+2lmm2sAsOZL4Bn2VrMsDtOssI1Ij9vNRbch9k9cA4WJvKed7Sql/wUIa1Eg== +apollo-cache-control@0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.3.4.tgz#286344a417f5489ab034f9fb22ba106ebafbd666" + integrity sha512-9Z9cAfsTQELGvn0CZ4lEg/Kk5WnjRafU58Q9lMi+XOqSrYyX+MRe5pX4dI6jMVMTWfD0D7lyJZxAzoNrF/yZHA== dependencies: apollo-server-env "2.2.0" - graphql-extensions "0.3.3" + graphql-extensions "0.3.7" apollo-cache-control@0.4.0: version "0.4.0" @@ -1046,10 +1046,10 @@ apollo-datasource@0.2.1: apollo-server-caching "0.2.1" apollo-server-env "2.2.0" -apollo-engine-reporting-protobuf@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.1.0.tgz#fbc220cac2a3b7800ffc155d7e54c21c56b7848e" - integrity sha512-GReJtAYTmpwg0drb9VgFtqObYYTCHkJhlHEYCeXY8bJV4fOgXsAZ7CIXR9nPKO0mBaoHIHaGYvXGcyCLrZ36VA== +apollo-engine-reporting-protobuf@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.1.1.tgz#016d9ee1a73c6c0c666de975d117797fb8b390ea" + integrity sha512-HoXf7mcz0ZqTiubXLnymPK50iZOyw4h/HlzVETxCwE+PHNBcVBAA+fWram/oW1cqK2JPTQOYWszxHxPwcus+eQ== dependencies: protobufjs "^6.8.6" @@ -1060,15 +1060,15 @@ apollo-engine-reporting-protobuf@0.2.0: dependencies: protobufjs "^6.8.6" -apollo-engine-reporting@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-0.1.3.tgz#85ad6ffd71db8f877202ce8b3d7dbfa7cabfbcf9" - integrity sha512-VkjiifHMHIAxydXecT+ck0WtqpFIsMlylKnKeuNAXfIfAXHX/JYtLhbArTTyhDunLrphMiUewfFv9P0K+aX2jw== +apollo-engine-reporting@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-0.1.4.tgz#2fb52f2cf8880f758a4d790a11bb246e7c934492" + integrity sha512-484nvAuwpmm3WHgIFs7FQ1dhHmRClTHqMT0sLsxJBgpd/MwTWBAw8lDxRa+FrJrqegeWc30K8tCa24hZ3+Ifrw== dependencies: - apollo-engine-reporting-protobuf "0.1.0" + apollo-engine-reporting-protobuf "0.1.1" apollo-server-env "2.2.0" async-retry "^1.2.1" - graphql-extensions "0.3.3" + graphql-extensions "0.3.7" lodash "^4.17.10" apollo-engine-reporting@0.2.0: @@ -1127,24 +1127,24 @@ apollo-server-caching@0.2.1: dependencies: lru-cache "^5.0.0" -apollo-server-core@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.2.6.tgz#33031a3e1156d4cd0ad3c5c49de263173f521b32" - integrity sha512-hC3+Y9A4rN4W2X2cWqjrWWHkjKaG/jUQjtAVpQteDW+7n3bLKHCrpDFiFad++lq0ymRVW8diAaYDS4myJwjmoA== +apollo-server-core@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.2.7.tgz#1229f5ed54438bafbf2bb3f1c872d5c551b62833" + integrity sha512-fIdoZGoBtYW9U5NWlCdKNb17TOmrdrYIN/f12ILcysoBxTyAsBImZMLOLvyTV0sUSgx7Q9dV7ddiMufXGdAy5Q== dependencies: "@apollographql/apollo-tools" "^0.2.6" "@apollographql/apollo-upload-server" "^5.0.3" "@apollographql/graphql-playground-html" "^1.6.6" "@types/ws" "^6.0.0" - apollo-cache-control "0.3.3" + apollo-cache-control "0.3.4" apollo-datasource "0.2.1" - apollo-engine-reporting "0.1.3" + apollo-engine-reporting "0.1.4" apollo-server-caching "0.2.1" apollo-server-env "2.2.0" apollo-server-errors "2.2.0" - apollo-server-plugin-base "0.1.6" - apollo-tracing "0.3.3" - graphql-extensions "0.3.6" + apollo-server-plugin-base "0.1.7" + apollo-tracing "0.3.4" + graphql-extensions "0.3.7" graphql-subscriptions "^1.0.0" graphql-tag "^2.9.2" graphql-tools "^4.0.0" @@ -1240,10 +1240,10 @@ apollo-server-module-graphiql@^1.3.4, apollo-server-module-graphiql@^1.4.0: resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz#c559efa285578820709f1769bb85d3b3eed3d8ec" integrity sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA== -apollo-server-plugin-base@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.1.6.tgz#56932c0e3a0366e03952a6e2805efe5fa2e046bf" - integrity sha512-nh6I2+mgSL5cYxqYXymAr8xBZ/ju8nunPjHp/21+/mgbF4Is0xtM9oDq5Qf0Q/cGh/djF6YcBuB1yUG+68gJXw== +apollo-server-plugin-base@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.1.7.tgz#fb91a0ba8ff505c01287227c874de6f272e5512a" + integrity sha512-Bfw++UWh0kzoAHqlsiYa/bxQSftCvwsF4KteFArTOKQjquBn1TTCWb64JTR5itZYuC5GDsoXGFQjQA3wWJyDVw== apollo-server-plugin-base@0.2.1: version "0.2.1" @@ -1251,11 +1251,11 @@ apollo-server-plugin-base@0.2.1: integrity sha512-497NIY9VWRYCrMSkgR11IrIUO4Fsy6aGgnpOJoTdLQAnkDD9SJDSRzwKj4gypUoTT2unfKDng4eMxXVZlHvjOw== apollo-server-testing@~2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.2.6.tgz#3ec60b6f099c2c55bd313cdbb8c177d8c86cda6d" - integrity sha512-1wUisLnY6fPNPK3RuE56q45K5bWWYIrEzfbw6dJudCBo7dtkMg33IfVwHvekbSFmRXmHIsnD0c1GSA10PV307A== + version "2.2.7" + resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.2.7.tgz#8210e15ac2d53f174e15f4856a7b47d3a00d8c53" + integrity sha512-S+5yLcbwKe1sJ/mG8tPKSrc9mOCqGq07nCqbzaTwiorkJiKxoChMugHT30CGuNGoa0B7Vfdg2wOq3/zsO1i67w== dependencies: - apollo-server-core "2.2.6" + apollo-server-core "2.2.7" apollo-server@~2.3.1: version "2.3.1" @@ -1268,13 +1268,13 @@ apollo-server@~2.3.1: graphql-subscriptions "^1.0.0" graphql-tools "^4.0.0" -apollo-tracing@0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.3.3.tgz#b819942180480c1c4d89e613cf2eff8f6d8b595a" - integrity sha512-gsTYgDVjtMlnomPq46aky7yk8XshCQfj9rxalCCismLlMomVW44fq+8GKQnZIkFOwiAsazRy4dzZ0cBbygA9sA== +apollo-tracing@0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.3.4.tgz#32f1c3dad6a0a5aa1fb442f006bf2ef248a125ae" + integrity sha512-U10mTuCic6Xi7Xez7SZic+nNuwFmZ4OlQnR835qGIkE8tq2GtXfFNcofO8kEDnGAnJasoUng8KIrZkSlUJdUSg== dependencies: apollo-server-env "2.2.0" - graphql-extensions "0.3.3" + graphql-extensions "0.3.7" apollo-tracing@0.4.0: version "0.4.0" @@ -2212,14 +2212,19 @@ core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042" integrity sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg== -core-js@^2.5.3, core-js@^2.5.7: +core-js@^2.5.3: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +core-js@^2.5.7: + version "2.6.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944" + integrity sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g== + core-js@^3.0.0-beta.3: - version "3.0.0-beta.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0-beta.4.tgz#7443c32990d21198d23de18acb061a5e5bc9f549" - integrity sha512-yz4iJCkkSQLQSLHPGUln6r5ZBkLPzZSvHG0g1nfvcdnmpIe+KE9WOb1ZEEf6EEaEmjp9Ol0Kw5J5vnoIWc5eWw== + version "3.0.0-beta.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0-beta.9.tgz#1897789a5ef0ee1190d54777f35f80c38c077633" + integrity sha512-OGLbGro2f0s8UXVyu2s9kIW42pcuRoNEqJsmn8a4rAOO9G5A2t96l++rf+4mHNw9GKrbdozZ9G5ieDKOBl68zQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -2623,7 +2628,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.4.3, es-abstract@^1.5.1: +es-abstract@^1.4.3: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== @@ -2634,7 +2639,19 @@ es-abstract@^1.4.3, es-abstract@^1.5.1: is-callable "^1.1.3" is-regex "^1.0.4" -es-to-primitive@^1.1.1: +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== @@ -2675,7 +2692,7 @@ eslint-config-standard@~12.0.0: resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== -eslint-import-resolver-node@^0.3.1: +eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -2683,13 +2700,13 @@ eslint-import-resolver-node@^0.3.1: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" - integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= +eslint-module-utils@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49" + integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w== dependencies: debug "^2.6.8" - pkg-dir "^1.0.0" + pkg-dir "^2.0.0" eslint-plugin-es@^1.3.1: version "1.4.0" @@ -2699,21 +2716,21 @@ eslint-plugin-es@^1.3.1: eslint-utils "^1.3.0" regexpp "^2.0.1" -eslint-plugin-import@~2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" - integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== +eslint-plugin-import@~2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.15.0.tgz#d8f3c28b8988ccde5df964706faa7c1e52f0602a" + integrity sha512-LEHqgR+RcnpGqYW7h9WMkPb/tP+ekKxWdQDztfTtZeV43IHF+X8lXU+1HOCcR4oXD24qRgEwNSxIweD5uNKGVg== dependencies: contains-path "^0.1.0" - debug "^2.6.8" + debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.3.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" read-pkg-up "^2.0.0" - resolve "^1.6.0" + resolve "^1.9.0" eslint-plugin-jest@^22.1.3: version "22.1.3" @@ -2768,10 +2785,10 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@~5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.0.tgz#fab3b908f60c52671fb14e996a450b96c743c859" - integrity sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g== +eslint@~5.12.1: + version "5.12.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.1.tgz#5ca9931fb9029d04e7be92b03ce3b58edfac7e3b" + integrity sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.5.3" @@ -3414,17 +3431,10 @@ graphql-deduplicator@^2.0.1: resolved "https://registry.yarnpkg.com/graphql-deduplicator/-/graphql-deduplicator-2.0.2.tgz#d8608161cf6be97725e178df0c41f6a1f9f778f3" integrity sha512-0CGmTmQh4UvJfsaTPppJAcHwHln8Ayat7yXXxdnuWT+Mb1dBzkbErabCWzjXyKh/RefqlGTTA7EQOZHofMaKJA== -graphql-extensions@0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.3.3.tgz#277efe11976bbdfd59915551606a2d550247bb45" - integrity sha512-pudOaHq7Ok+rh1ElzlqFaoYZWGefUNsqn/jX6eKns7rl0VHuB4qZBfhpVLTpquJpM6Y19/hsCYZNPfnUVMFIiA== - dependencies: - "@apollographql/apollo-tools" "^0.2.6" - -graphql-extensions@0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.3.6.tgz#9ddb294b4b3303df4bbfd8258f10ad402e290dba" - integrity sha512-QGnDQ0TkF1YpVE/ZvKVl3bZ1PfwSbynVBcNU5U1DPU56pLkltETORiFL4TQ/Tt7RzagBX/xVaI3q0xJC6h9M5w== +graphql-extensions@0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.3.7.tgz#1a7bb99a0e29c105dd64d8dccb955ddc8ddc31ad" + integrity sha512-i9Zo1w5uZmHoKP2qlh4PfxD85Ju08lMYrjUL6tROqipWTdrGMc107kUWBsiRvAVipcTyagKhDLF75FIvJiaHBg== dependencies: "@apollographql/apollo-tools" "^0.2.6" @@ -3681,7 +3691,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1: +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -5952,7 +5962,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5: +path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -6034,13 +6044,6 @@ pirates@^4.0.0: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -6564,12 +6567,12 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== +resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== dependencies: - path-parse "^1.0.5" + path-parse "^1.0.6" restore-cursor@^2.0.0: version "2.0.0" @@ -7126,10 +7129,10 @@ superagent@^3.8.3: qs "^6.5.1" readable-stream "^2.3.5" -supertest@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.4.1.tgz#91b19ea34804c205769d0ff5ad947aff3eb2731d" - integrity sha512-r4AmsjjKxC50LxGACe/E4xKjau2amiFlj3aCT2sZCRig2o3l4XFN6Acw7crDu4d8Af1f5chafIyLkQ1mac/boA== +supertest@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.4.2.tgz#bad7de2e43d60d27c8caeb8ab34a67c8a5f71aad" + integrity sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA== dependencies: methods "^1.1.2" superagent "^3.8.3"